Skip to content

Commit 91dd1d2

Browse files
committed
ENH: Add default transform, intensity scaling files
1 parent d9b183b commit 91dd1d2

File tree

1 file changed

+19
-10
lines changed

1 file changed

+19
-10
lines changed

nipype/interfaces/freesurfer/longitudinal.py

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)