Skip to content

Commit 3c6af5b

Browse files
committed
fixed output collection for antsRegistration
1 parent d323b92 commit 3c6af5b

File tree

1 file changed

+22
-24
lines changed

1 file changed

+22
-24
lines changed

nipype/interfaces/ants/registration.py

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -264,16 +264,16 @@ class RegistrationInputSpec(ANTSCommandInputSpec):
264264

265265
class RegistrationOutputSpec(TraitedSpec):
266266
forward_transforms = traits.List(
267-
File(), desc='List of output transforms for forward registration')
267+
File(exists=True), desc='List of output transforms for forward registration')
268268
reverse_transforms = traits.List(
269-
File(), desc='List of output transforms for reverse registration')
269+
File(exists=True), desc='List of output transforms for reverse registration')
270270
forward_invert_flags = traits.List(traits.Bool(
271271
), desc='List of flags corresponding to the forward transforms')
272272
reverse_invert_flags = traits.List(traits.Bool(
273273
), desc='List of flags corresponding to the reverse transforms')
274-
composite_transform = traits.List(File(), desc='Composite transform file')
274+
composite_transform = traits.List(File(exists=True), desc='Composite transform file')
275275
inverse_composite_transform = traits.List(
276-
File(), desc='Inverse composite transform file')
276+
File(exists=True), desc='Inverse composite transform file')
277277

278278

279279
class Registration(ANTSCommand):
@@ -336,7 +336,6 @@ class Registration(ANTSCommand):
336336
_cmd = 'antsRegistration'
337337
input_spec = RegistrationInputSpec
338338
output_spec = RegistrationOutputSpec
339-
_numberOfOutputTransforms = 0
340339
_quantilesDone = False
341340

342341
def _optionalMetricParameters(self, index):
@@ -419,10 +418,6 @@ def _format_arg(self, opt, spec, val):
419418
if opt == 'moving_image_mask':
420419
return '--masks [ %s, %s ]' % (self.inputs.fixed_image_mask, self.inputs.moving_image_mask)
421420
elif opt == 'transforms':
422-
if self.inputs.collapse_output_transforms:
423-
self._numberOfOutputTransforms = 2 # Affine and displacement
424-
else:
425-
self._numberOfOutputTransforms = len(self.inputs.transforms)
426421
return self._formatRegistration()
427422
elif opt == 'initial_moving_transform':
428423
if self.inputs.invert_initial_moving_transform:
@@ -449,7 +444,8 @@ def _format_arg(self, opt, spec, val):
449444

450445
def _outputFileNames(self, prefix, count, transform, inverse=False):
451446
self.lowDimensionalTransformMap = {'Rigid': 'Rigid.mat',
452-
'Affine': 'Affine.mat',
447+
#seems counterontuitive, but his is how ANTS is calling it
448+
'Affine': 'GenericAffine.mat',
453449
'GenericAffine': 'GenericAffine.mat',
454450
'CompositeAffine': 'Affine.mat',
455451
'Similarity': 'Similarity.mat',
@@ -473,6 +469,7 @@ def _list_outputs(self):
473469
outputs['reverse_transforms'] = []
474470
outputs['reverse_invert_flags'] = []
475471
if not self.inputs.collapse_output_transforms:
472+
transformCount = 0
476473
if isdefined(self.inputs.initial_moving_transform):
477474
outputs['forward_transforms'].append(
478475
self.inputs.initial_moving_transform)
@@ -481,20 +478,21 @@ def _list_outputs(self):
481478
outputs['reverse_transforms'].insert(
482479
0, self.inputs.initial_moving_transform)
483480
outputs['reverse_invert_flags'].insert(0, not self.inputs.invert_initial_moving_transform) # Prepend
484-
transformCount = 1
485-
for count in range(self._numberOfOutputTransforms):
486-
forwardFileName, forwardInverseMode = self._outputFileNames(self.inputs.output_transform_prefix, transformCount,
487-
self.inputs.transforms[count])
488-
reverseFileName, reverseInverseMode = self._outputFileNames(self.inputs.output_transform_prefix, transformCount,
489-
self.inputs.transforms[count], True)
490-
outputs['forward_transforms'].append(
491-
os.path.abspath(forwardFileName))
492-
outputs['forward_invert_flags'].append(forwardInverseMode)
493-
outputs['reverse_transforms'].insert(
494-
0, os.path.abspath(reverseFileName))
495-
outputs[
496-
'reverse_invert_flags'].insert(0, reverseInverseMode)
497-
transformCount += 1
481+
transformCount += 1
482+
483+
for count in range(len(self.inputs.transforms)):
484+
forwardFileName, forwardInverseMode = self._outputFileNames(self.inputs.output_transform_prefix, transformCount,
485+
self.inputs.transforms[count])
486+
reverseFileName, reverseInverseMode = self._outputFileNames(self.inputs.output_transform_prefix, transformCount,
487+
self.inputs.transforms[count], True)
488+
outputs['forward_transforms'].append(
489+
os.path.abspath(forwardFileName))
490+
outputs['forward_invert_flags'].append(forwardInverseMode)
491+
outputs['reverse_transforms'].insert(
492+
0, os.path.abspath(reverseFileName))
493+
outputs[
494+
'reverse_invert_flags'].insert(0, reverseInverseMode)
495+
transformCount += 1
498496
else:
499497
transformCount = 0
500498
for transform in ['GenericAffine', 'SyN']: # Only files returned by collapse_output_transforms

0 commit comments

Comments
 (0)