@@ -242,9 +242,9 @@ class RegistrationInputSpec(ANTSCommandInputSpec):
242
242
restore_state = File (argstr = '--restore-state %s' , exists = True ,
243
243
desc = 'Filename for restoring the internal restorable state of the registration' )
244
244
245
- initial_moving_transform = File (argstr = '%s' , exists = True , desc = '' ,
245
+ initial_moving_transform = InputMultiPath (argstr = '%s' , exists = True , desc = '' ,
246
246
xor = ['initial_moving_transform_com' ])
247
- invert_initial_moving_transform = traits .Bool (requires = ["initial_moving_transform" ],
247
+ invert_initial_moving_transform = InputMultiPath ( traits .Bool (), requires = ["initial_moving_transform" ],
248
248
desc = '' , xor = ['initial_moving_transform_com' ])
249
249
250
250
initial_moving_transform_com = traits .Enum (0 , 1 , 2 , argstr = '%s' ,
@@ -865,6 +865,23 @@ def _format_winsorize_image_intensities(self):
865
865
return '--winsorize-image-intensities [ %s, %s ]' % (self .inputs .winsorize_lower_quantile ,
866
866
self .inputs .winsorize_upper_quantile )
867
867
868
+ def _get_initial_transform_filenames (self ):
869
+ retval = ['--initial-moving-transform' ]
870
+ #retval = []
871
+ for ii in range (len (self .inputs .initial_moving_transform )):
872
+ if isdefined (self .inputs .invert_initial_moving_transform ):
873
+ if len (self .inputs .initial_moving_transform ) == len (self .inputs .invert_initial_moving_transform ):
874
+ invert_code = 1 if self .inputs .invert_initial_moving_transform [
875
+ ii ] else 0
876
+ retval .append ("[ %s, %d ]" %
877
+ (self .inputs .initial_moving_transform [ii ], invert_code ))
878
+ else :
879
+ raise Exception (("ERROR: The useInverse list must have the same number "
880
+ "of entries as the transformsFileName list." ))
881
+ else :
882
+ retval .append ("--initial-moving-transform [%s, 0] " % self .inputs .initial_moving_transform [ii ])
883
+ return " " .join (retval )
884
+
868
885
def _format_arg (self , opt , spec , val ):
869
886
if opt == 'fixed_image_mask' :
870
887
if isdefined (self .inputs .moving_image_mask ):
@@ -875,10 +892,7 @@ def _format_arg(self, opt, spec, val):
875
892
elif opt == 'transforms' :
876
893
return self ._format_registration ()
877
894
elif opt == 'initial_moving_transform' :
878
- do_invert_transform = self .inputs .invert_initial_moving_transform \
879
- if isdefined (self .inputs .invert_initial_moving_transform ) else 0 # Just do the default behavior
880
- return '--initial-moving-transform [ %s, %d ]' % (self .inputs .initial_moving_transform ,
881
- do_invert_transform )
895
+ return self ._get_initial_transform_filenames ()
882
896
elif opt == 'initial_moving_transform_com' :
883
897
do_center_of_mass_init = self .inputs .initial_moving_transform_com \
884
898
if isdefined (self .inputs .initial_moving_transform_com ) else 0 # Just do the default behavior
@@ -959,10 +973,10 @@ def _list_outputs(self):
959
973
if not self .inputs .collapse_output_transforms :
960
974
transform_count = 0
961
975
if isdefined (self .inputs .initial_moving_transform ):
962
- outputs ['forward_transforms' ]. append ( self .inputs .initial_moving_transform )
963
- outputs ['forward_invert_flags' ]. append ( invert_initial_moving_transform )
964
- outputs ['reverse_transforms' ]. insert ( 0 , self .inputs .initial_moving_transform )
965
- outputs ['reverse_invert_flags' ]. insert ( 0 , not invert_initial_moving_transform ) # Prepend
976
+ outputs ['forward_transforms' ] += self .inputs .initial_moving_transform
977
+ outputs ['forward_invert_flags' ] += invert_initial_moving_transform
978
+ outputs ['reverse_transforms' ] = self .inputs .initial_moving_transform + outputs [ 'reverse_transforms' ]
979
+ outputs ['reverse_invert_flags' ] = [ not e for e in self . inputs . invert_initial_moving_transform ] + outputs [ 'reverse_invert_flags' ] # Prepend
966
980
transform_count += 1
967
981
elif isdefined (self .inputs .initial_moving_transform_com ):
968
982
forward_filename , forward_inversemode = self ._output_filenames (
0 commit comments