@@ -42,14 +42,15 @@ class RobustTemplateInputSpec(FSTraitedSpecOpenMP):
4242 desc = 'set outlier sensitivity manually (e.g. "--sat 4.685" ). Higher '
4343 'values mean less sensitivity.' )
4444 # optional
45- transform_outputs = InputMultiPath (
46- File (exists = False ), argstr = '--lta %s' ,
45+ transform_outputs = traits . Either (
46+ InputMultiPath ( File (exists = False )), traits . Bool , argstr = '--lta %s' ,
4747 desc = 'output xforms to template (for each input)' )
4848 intensity_scaling = traits .Bool (
4949 default_value = False , argstr = '--iscale' ,
5050 desc = 'allow also intensity scaling (default off)' )
51- scaled_intensity_outputs = InputMultiPath (
52- File (exists = False ), argstr = '--iscaleout %s' ,
51+ scaled_intensity_outputs = traits .Either (
52+ InputMultiPath (File (exists = False )), traits .Bool ,
53+ argstr = '--iscaleout %s' ,
5354 desc = 'final intensity scales (will activate --iscale)' )
5455 subsample_threshold = traits .Int (
5556 argstr = '--subsample %d' ,
@@ -126,18 +127,26 @@ def _format_arg(self, name, spec, value):
126127 if name == 'average_metric' :
127128 # return enumeration value
128129 return spec .argstr % {"mean" : 0 , "median" : 1 }[value ]
130+ if name in ('transform_outputs' , 'scaled_intensity_outputs' ):
131+ value = self ._list_outputs ()[name ]
129132 return super (RobustTemplate , self )._format_arg (name , spec , value )
130133
131134 def _list_outputs (self ):
132135 outputs = self .output_spec ().get ()
133- outputs ['out_file' ] = os .path .abspath (
134- self .inputs .out_file )
136+ outputs ['out_file' ] = os .path .abspath (self .inputs .out_file )
137+ n_files = len (self .inputs .in_files )
138+ fmt = '{}{:02d}.{}' if n_files > 9 else '{}{:d}.{}'
135139 if isdefined (self .inputs .transform_outputs ):
136- outputs ['transform_outputs' ] = [os .path .abspath (
137- x ) for x in self .inputs .transform_outputs ]
140+ fnames = self .inputs .transform_outputs
141+ if fnames is True :
142+ fnames = [fmt .format ('tp' , i , 'lta' ) for i in range (n_files )]
143+ outputs ['transform_outputs' ] = [os .path .abspath (x ) for x in fnames ]
138144 if isdefined (self .inputs .scaled_intensity_outputs ):
139- outputs ['scaled_intensity_outputs' ] = [os .path .abspath (
140- x ) for x in self .inputs .scaled_intensity_outputs ]
145+ fnames = self .inputs .scaled_intensity_outputs
146+ if fnames is True :
147+ fnames = [fmt .format ('is' , i , 'txt' ) for i in range (n_files )]
148+ outputs ['scaled_intensity_outputs' ] = [os .path .abspath (x )
149+ for x in fnames ]
141150 return outputs
142151
143152
0 commit comments