Skip to content

fsl_out=True does not work for freesurfer.TKregister2 #3582

Closed
@jadecci

Description

@jadecci

Summary

Hi! I am writing a diffusion processing workflow, and wants to use the freesurfer.TKregister2 interface for transforming a freesurfer transformation matrix to a fsl one. I see that the fsl_out option can be set to True according to the documentation ( and from the Tkregister2InputSpec code). However, doing that gives an error.

The causes seem to be these lines in nipype/interfaces/freesurfer/utils.py:

  1. line 1969-1970 in (TKregister2._format_arg)
if name in ("fsl_out", "lta_out") and value is True:
    value = self._list_outputs()[name]
  1. line 1981-1984 in (TKregister2._list_outputs)
if fsl_out is True:
    outputs["fsl_file"] = fname_presuffix(
        reg_file, suffix=".mat", newpath=cwd, use_ext=False
    )

So, with 'fsl_out=True', TKregister2._list_outputs sets up the output field 'fsl_file' and returns a dictionary (I think?) updated with a key called fsl_file. However, the key fsl_out is checked in TKregister2._format_arg which is not set.

Actual behavior

These errors were generated by nipype:

Traceback:
	Traceback (most recent call last):
	  File "/home/jwu/.venvs/mpp-dwi-proc/lib/python3.11/site-packages/nipype/interfaces/base/core.py", line 935, in _parse_inputs
	    arg = self._format_arg(name, spec, value)
	          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
	  File "/home/jwu/.venvs/mpp-dwi-proc/lib/python3.11/site-packages/nipype/interfaces/freesurfer/utils.py", line 1970, in _format_arg
	    value = self._list_outputs()[name]
	            ~~~~~~~~~~~~~~~~~~~~^^^^^^
	KeyError: 'fsl_out'

	The above exception was the direct cause of the following exception:

	Traceback (most recent call last):
	  File "/home/jwu/.venvs/mpp-dwi-proc/lib/python3.11/site-packages/nipype/interfaces/base/core.py", line 735, in _run_interface
	    runtime.cmdline = self.cmdline
	                      ^^^^^^^^^^^^
	  File "/home/jwu/.venvs/mpp-dwi-proc/lib/python3.11/site-packages/nipype/interfaces/base/core.py", line 660, in cmdline
	    allargs = [self._cmd_prefix + self.cmd] + self._parse_inputs()
	                                              ^^^^^^^^^^^^^^^^^^^^
	  File "/home/jwu/.venvs/mpp-dwi-proc/lib/python3.11/site-packages/nipype/interfaces/base/core.py", line 937, in _parse_inputs
	    raise ValueError(
	ValueError: Error formatting command line argument 'fsl_out' with value 'True'

	The above exception was the direct cause of the following exception:

	Traceback (most recent call last):
	  File "/home/jwu/.venvs/mpp-dwi-proc/lib/python3.11/site-packages/nipype/interfaces/base/core.py", line 397, in run
	    runtime = self._run_interface(runtime)
	              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
	  File "/home/jwu/.venvs/mpp-dwi-proc/lib/python3.11/site-packages/nipype/interfaces/base/core.py", line 737, in _run_interface
	    raise RuntimeError(
	RuntimeError: Error raised when interpolating the command line

Expected behavior

This option should set a file value for the output field fsl_file without error

How to replicate the behavior

This should replicate with any moving image and reg file:

tkr2 = freesurfer.Tkregister2(moving_image=moving_image, reg_file=reg_file, fsl_out=True)
tkr2.run()

Script/Workflow details

command = 'singularity run -B work/work,features/features mfeatures.simg tkregister2'
tkr_diff2str = pe.Node(
            freesurfer.Tkregister2(command=command, noedit=True, fsl_out=True), name='tkr_diff2str')
diff_proc_wf.connect([ # part of the connections
            (nodif_bias, tkr_diff2str, [('out_file', 'moving_image')]),
            (bbr_epi2t1, tkr_diff2str, [('out_reg_file', 'reg_file')]),
            (split_t1_files, tkr_diff2str, [('t1', 'target_image')]),
            (tkr_diff2str, diff2str, [('fsl_file', 'in_file2')])])

Platform details:

{'commit_hash': '<not found>',
 'commit_source': '(none found)',
 'networkx_version': '3.1',
 'nibabel_version': '5.1.0',
 'nipype_version': '1.8.6',
 'numpy_version': '1.24.3',
 'pkg_path': '/home/jwu/.venvs/mpp-dwi-proc/lib/python3.11/site-packages/nipype',
 'scipy_version': '1.10.1',
 'sys_executable': '/home/jwu/.venvs/mpp-dwi-proc/bin/python3',
 'sys_platform': 'linux',
 'sys_version': '3.11.2 (main, Mar 13 2023, 12:18:29) [GCC 12.2.0]',
 'traits_version': '6.3.2'}

Execution environment

  • Container (Singularity 3): FreeSurfer 7.3.2
  • My python environment outside container

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions