23
23
from ...utils .filemanip import (fname_presuffix , filename_to_list ,
24
24
list_to_filename , split_filename )
25
25
from ..base import (OutputMultiPath , TraitedSpec , isdefined ,
26
- traits , InputMultiPath , File )
26
+ traits , InputMultiPath , File , Str )
27
27
from .base import (SPMCommand , scans_for_fname , func_is_3d ,
28
28
scans_for_fnames , SPMCommandInputSpec )
29
29
@@ -39,7 +39,7 @@ class FieldMapInputSpec(SPMCommandInputSpec):
39
39
magnitude = File (mandatory = True , exists = True , copyfile = False ,
40
40
field = 'subj.data.presubphasemag.magnitude' ,
41
41
desc = 'presubstracted magnitude file' )
42
- et = traits .List (traits .Float (), minlen = 2 , maxlen = 2 , mandatory = True ,
42
+ et = traits .Tuple (traits .Float , traits . Float , mandatory = True ,
43
43
field = 'subj.defaults.defaultsval.et' ,
44
44
desc = 'short and long echo times' )
45
45
maskbrain = traits .Bool (True , usedefault = True ,
@@ -71,7 +71,7 @@ class FieldMapInputSpec(SPMCommandInputSpec):
71
71
field = 'subj.defaults.defaultsval.uflags.ws' ,
72
72
desc = 'weighted smoothing' );
73
73
# Brain mask defaults parameters
74
- template = traits . File (copyfile = False , exists = True ,
74
+ template = File (copyfile = False , exists = True ,
75
75
field = 'subj.defaults.defaultsval.mflags.template' ,
76
76
desc = 'template image for brain masking' );
77
77
fwhm = traits .Range (low = 0 , value = 5 , usedefault = True ,
@@ -90,19 +90,19 @@ class FieldMapInputSpec(SPMCommandInputSpec):
90
90
field = 'subj.defaults.defaultsval.mflags.reg' ,
91
91
desc = 'regularization value used in the segmentation' );
92
92
# EPI unwarping for quality check
93
- epi = traits . File (copyfile = False , exists = True , mandatory = True ,
93
+ epi = File (copyfile = False , exists = True , mandatory = True ,
94
94
field = 'subj.session.epi' ,
95
95
desc = 'EPI to unwarp' );
96
96
matchvdm = traits .Bool (True , usedefault = True ,
97
97
field = 'subj.matchvdm' ,
98
98
desc = 'match VDM to EPI' );
99
- sessname = traits . String ('_run-' , usedefault = True ,
99
+ sessname = Str ('_run-' , usedefault = True ,
100
100
field = 'subj.sessname' ,
101
101
desc = 'VDM filename extension' );
102
102
writeunwarped = traits .Bool (False , usedefault = True ,
103
103
field = 'subj.writeunwarped' ,
104
104
desc = 'write unwarped EPI' );
105
- anat = traits . File (copyfile = False , exists = True ,
105
+ anat = File (copyfile = False , exists = True ,
106
106
field = 'subj.anat' ,
107
107
desc = 'anatomical image for comparison' );
108
108
matchanat = traits .Bool (True , usedefault = True ,
@@ -115,9 +115,9 @@ class FieldMapOutputSpec(TraitedSpec):
115
115
116
116
117
117
class FieldMap (SPMCommand ):
118
- """Use spm to calculate fieldmap vdm .
118
+ """Use the fieldmap toolbox from spm to calculate the voxel displacement map (VDM) .
119
119
120
- http://www.fil.ion.ucl.ac.uk/spm/doc/manual.pdf#page=19
120
+ http://www.fil.ion.ucl.ac.uk/spm/doc/manual.pdf#page=173
121
121
122
122
To do
123
123
-----
@@ -145,9 +145,7 @@ class FieldMap(SPMCommand):
145
145
def _format_arg (self , opt , spec , val ):
146
146
"""Convert input to appropriate format for spm
147
147
"""
148
- if opt == 'phase' or opt == 'magnitude' or opt == 'anat' :
149
- return scans_for_fname (filename_to_list (val ))
150
- if opt == 'epi' or opt == 'magnitude' :
148
+ if opt in ['phase' , 'magnitude' , 'anat' , 'epi' ]:
151
149
return scans_for_fname (filename_to_list (val ))
152
150
153
151
return super (FieldMap , self )._format_arg (opt , spec , val )
0 commit comments