@@ -264,16 +264,16 @@ class RegistrationInputSpec(ANTSCommandInputSpec):
264
264
265
265
class RegistrationOutputSpec (TraitedSpec ):
266
266
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' )
268
268
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' )
270
270
forward_invert_flags = traits .List (traits .Bool (
271
271
), desc = 'List of flags corresponding to the forward transforms' )
272
272
reverse_invert_flags = traits .List (traits .Bool (
273
273
), 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' )
275
275
inverse_composite_transform = traits .List (
276
- File (), desc = 'Inverse composite transform file' )
276
+ File (exists = True ), desc = 'Inverse composite transform file' )
277
277
278
278
279
279
class Registration (ANTSCommand ):
@@ -336,7 +336,6 @@ class Registration(ANTSCommand):
336
336
_cmd = 'antsRegistration'
337
337
input_spec = RegistrationInputSpec
338
338
output_spec = RegistrationOutputSpec
339
- _numberOfOutputTransforms = 0
340
339
_quantilesDone = False
341
340
342
341
def _optionalMetricParameters (self , index ):
@@ -419,10 +418,6 @@ def _format_arg(self, opt, spec, val):
419
418
if opt == 'moving_image_mask' :
420
419
return '--masks [ %s, %s ]' % (self .inputs .fixed_image_mask , self .inputs .moving_image_mask )
421
420
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 )
426
421
return self ._formatRegistration ()
427
422
elif opt == 'initial_moving_transform' :
428
423
if self .inputs .invert_initial_moving_transform :
@@ -449,7 +444,8 @@ def _format_arg(self, opt, spec, val):
449
444
450
445
def _outputFileNames (self , prefix , count , transform , inverse = False ):
451
446
self .lowDimensionalTransformMap = {'Rigid' : 'Rigid.mat' ,
452
- 'Affine' : 'Affine.mat' ,
447
+ #seems counterontuitive, but his is how ANTS is calling it
448
+ 'Affine' : 'GenericAffine.mat' ,
453
449
'GenericAffine' : 'GenericAffine.mat' ,
454
450
'CompositeAffine' : 'Affine.mat' ,
455
451
'Similarity' : 'Similarity.mat' ,
@@ -473,6 +469,7 @@ def _list_outputs(self):
473
469
outputs ['reverse_transforms' ] = []
474
470
outputs ['reverse_invert_flags' ] = []
475
471
if not self .inputs .collapse_output_transforms :
472
+ transformCount = 0
476
473
if isdefined (self .inputs .initial_moving_transform ):
477
474
outputs ['forward_transforms' ].append (
478
475
self .inputs .initial_moving_transform )
@@ -481,20 +478,21 @@ def _list_outputs(self):
481
478
outputs ['reverse_transforms' ].insert (
482
479
0 , self .inputs .initial_moving_transform )
483
480
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
498
496
else :
499
497
transformCount = 0
500
498
for transform in ['GenericAffine' , 'SyN' ]: # Only files returned by collapse_output_transforms
0 commit comments