@@ -264,16 +264,16 @@ class RegistrationInputSpec(ANTSCommandInputSpec):
264264
265265class 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
279279class 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