Skip to content

FSL FLIRT '-omat' affine matrix output not in decimal format #2813

@zmorrissey

Description

@zmorrissey

Summary

Hello, I am using the nipype.interfaces.fsl.FLIRT() command to register a T2 atlas nifti image to a T2 subject nifti image, and I need the affine matrix output of this transformation for the following step to transform the atlas labels into the subject space.

After running the FSL interface's FLIRT command using the out_matrix_file input, it appears to run successfully without any errors, but the resulting .mat file appears to be in a hex type of format instead of decimal format, and there don't appear to be any options listed in the documentation to specify the format for this output file. However, if I run the same command directly in bash, the affine matrix appears (normal) in decimal format.

I'm not sure if this due to nipype or if there is a way to check which version of FSL nipype is calling? I had a similar issue using bash with an earlier version of FSL that was fixed after upgrading to FSL 6.0.

Any help would be appreciated. Thank you!

Actual behavior

The result of nipype's FLIRT out_matrix_file option is a .mat file that is not in recognizable decimal format:

0x1.f3704b5f9a7a8p-1 -0x1.7233534569a2ap-5 0x1.b8452355d1391p-9 0x1.46384be3f5eacp+2 0x1.71392a592f9f9p-5 0x1.f4bb310ffd381p-1 0x1.609369afdb69fp-11 -0x1.3f0114ec4ce68p+0 -0x1.d43cafec304ap-9 -0x1.78c17ac5694fep-11 0x1.f64664aad24ecp-1 -0x1.0b85d4efb3e03p+2 0x0p+0 0x0p+0 0x0p+0 0x1p+0 

Expected behavior

When I run the same command in bash using flirt, I get this matrix:

0.9754661135 -0.04519048942 0.003358994068 5.097186062 0.04507120391 0.977990659 0.00067248503 -1.246110256 -0.00357236526 -0.0007186046211 0.9810058077 -4.180043444 0 0 0 1 

Script/Workflow details

In Python:

from nipype.interfaces.fsl import FLIRT flt = FLIRT() flt.inputs.in_file = 't2_atlas.nii.gz' flt.inputs.reference = 'subject01_t2.nii.gz' flt.inputs.out_file = 'atlas_in_t2_space.nii.gz' flt.inputs.output_type = 'NIFTI_GZ' flt.inputs.out_matrix_file = 'TM_atlas_to_t2.mat' flt.run() 

If I take the flt.cmdline output and run it directly in bash, it works properly:

flirt -in t2_atlas.nii.gz -ref subject01_t2.nii.gz -out atlas_in_t2_space.nii.gz -omat TM_atlas_to_t2.mat 

Platform details:

{'commit_hash': 'b448b6061', 'commit_source': 'installation', 'networkx_version': '2.1', 'nibabel_version': '2.3.1', 'nipype_version': '1.1.6', 'numpy_version': '1.14.2', 'pkg_path': '/usr/local/lib/python3.5/dist-packages/nipype', 'scipy_version': '1.0.0', 'sys_executable': '/usr/bin/python3', 'sys_platform': 'linux', 'sys_version': '3.5.2 (default, Nov 23 2017, 16:37:01) \n[GCC 5.4.0 20160609]', 'traits_version': '4.6.0'} 

Execution environment

Ubuntu 16.04 xenial
Python 3.5.2
ipython v6.4.0
nipype v1.5.6
fsl v6.0.0

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