Skip to content

Commit b9e39db

Browse files
committed
Fixed details in antsRegistration interface
The generation of output filenames was incomplete for inverse outputs in both collapsed and not-collapsed modes. Additionally, collapsed mode for only-linear registrations was broken as the warp file was not generated (but checked for existence)
1 parent 504858e commit b9e39db

File tree

1 file changed

+27
-5
lines changed

1 file changed

+27
-5
lines changed

nipype/interfaces/ants/registration.py

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import os
1313
from nipype.interfaces.base import InputMultiPath
1414
from nipype.interfaces.traits_extension import isdefined
15+
import numpy as np
1516

1617

1718
class ANTSInputSpec(ANTSCommandInputSpec):
@@ -397,6 +398,7 @@ class Registration(ANTSCommand):
397398
input_spec = RegistrationInputSpec
398399
output_spec = RegistrationOutputSpec
399400
_quantilesDone = False
401+
_linear_transform_names = np.array( [ 'Rigid', 'Affine', 'Translation', 'CompositeAffine', 'Similarity' ] )
400402

401403
def _formatMetric(self, index):
402404
"""
@@ -644,10 +646,18 @@ def _list_outputs(self):
644646
outputs['reverse_invert_flags'].insert(0, not self.inputs.invert_initial_moving_transform) # Prepend
645647
transformCount += 1
646648
elif isdefined(self.inputs.initial_moving_transform_com):
647-
#forwardFileName, _ = self._outputFileNames(self.inputs.output_transform_prefix,
648-
# transformCount,
649-
# 'Initial')
650-
#outputs['forward_transforms'].append(forwardFileName)
649+
forwardFileName, forwardInverseMode = self._outputFileNames(self.inputs.output_transform_prefix,
650+
transformCount,
651+
'Initial')
652+
reverseFileName, reverseInverseMode = self._outputFileNames(self.inputs.output_transform_prefix,
653+
transformCount,
654+
'Initial',
655+
True)
656+
outputs['forward_transforms'].append(forwardFileName)
657+
outputs['forward_invert_flags'].append( forwardInverseMode )
658+
outputs['reverse_transforms'].insert( 0,
659+
os.path.abspath(reverseFileName))
660+
outputs['reverse_invert_flags'].insert(0, reverseInverseMode)
651661
transformCount += 1
652662

653663
for count in range(len(self.inputs.transforms)):
@@ -665,7 +675,19 @@ def _list_outputs(self):
665675
transformCount += 1
666676
else:
667677
transformCount = 0
668-
for transform in ['GenericAffine', 'SyN']: # Only files returned by collapse_output_transforms
678+
isLinear = [ any( self._linear_transform_names==t ) for t in self.inputs.transforms ]
679+
collapse_list = []
680+
681+
if isdefined(self.inputs.initial_moving_transform) or \
682+
isdefined(self.inputs.initial_moving_transform_com ):
683+
isLinear.insert(0, True)
684+
685+
if any( isLinear ): # Only files returned by collapse_output_transforms
686+
collapse_list.append( 'GenericAffine' )
687+
if not all( isLinear ):
688+
collapse_list.append( 'SyN' )
689+
690+
for transform in collapse_list:
669691
forwardFileName, forwardInverseMode = self._outputFileNames(self.inputs.output_transform_prefix, transformCount, transform)
670692
reverseFileName, reverseInverseMode = self._outputFileNames(self.inputs.output_transform_prefix, transformCount, transform, True)
671693
outputs['forward_transforms'].append(

0 commit comments

Comments
 (0)