Skip to content

ants.Registration restrict_deformation trait only taking 1 or 0 #2643

Open
@kcho

Description

@kcho

Summary

--restrict-deformation option in antsRegistration takes in float.
However, in nipype ants.Registration, the restrict_deformation trait only takes 1 or 0

For example, below gives error

        reg = Registration()
        reg.inputs.dimension = 3
        
        reg.inputs.fixed_image = self.t1_brain_recip
        reg.inputs.moving_image = self.nodif_loc
        reg.inputs.initial_moving_transform = self.t1_to_dti_flirt_mat_c3d
        reg.inputs.invert_initial_moving_transform = False
        reg.inputs.output_transform_prefix = self.t1_to_dti_ants_mat
        reg.inputs.metric = ['CC']
        reg.inputs.metric_weight = [1]
        reg.inputs.radius_or_number_of_bins = [4]
        reg.inputs.number_of_iterations = [[100, 70, 20]]
        reg.inputs.convergence_threshold = [1.e-7]
        reg.inputs.convergence_window_size = [5]
        reg.inputs.transforms = ['SyN']
        reg.inputs.transform_parameters = [(0.1, 3, 0)]
        reg.inputs.shrink_factors = [[4,2,1]]
        reg.inputs.smoothing_sigmas = [[2,1,0]]
        reg.inputs.sigma_units = ['vox']
        reg.inputs.restrict_deformation = [[0.1, 1.0, 0.1]]
        reg.inputs.collapse_output_transforms = True
        reg.inputs.winsorize_lower_quantile = 0.005
        reg.inputs.winsorize_upper_quantile = 0.995
        reg.inputs.verbose = True
---------------------------------------------------------------------------
TraitError                                Traceback (most recent call last)
<ipython-input-20-ebf795f87438> in <module>()
      4 # prac.t1_to_dti_registration()
      5 # prac.t1_to_dti_registration_c3d()
----> 6 prac.ants_unwarping()

<ipython-input-19-25032190378e> in ants_unwarping(self)
    661         reg.inputs.smoothing_sigmas = [[2,1,0]]
    662         reg.inputs.sigma_units = ['vox']
--> 663         reg.inputs.restrict_deformation = [[0.1, 1.0, 0.1]]
    664         reg.inputs.collapse_output_transforms = True
    665         reg.inputs.winsorize_lower_quantile = 0.005

/ccnc_bin/anaconda3/lib/python3.6/site-packages/traits/trait_types.py in validate(self, object, name, value)
   2334                 return value
   2335 
-> 2336             return TraitListObject( self, object, name, value )
   2337 
   2338         self.error( object, name, value )

/ccnc_bin/anaconda3/lib/python3.6/site-packages/traits/trait_handlers.py in __init__(self, trait, object, name, value)
   2311             except TraitError as excp:
   2312                 excp.set_prefix( 'Each element of the' )
-> 2313                 raise excp
   2314 
   2315         self.len_error( len( value ) )

/ccnc_bin/anaconda3/lib/python3.6/site-packages/traits/trait_handlers.py in __init__(self, trait, object, name, value)
   2303                 validate = trait.item_trait.handler.validate
   2304                 if validate is not None:
-> 2305                     value = [ validate( object, name, val ) for val in value ]
   2306 
   2307                 list.__setitem__(self, slice(0, 0), value )

/ccnc_bin/anaconda3/lib/python3.6/site-packages/traits/trait_handlers.py in <listcomp>(.0)
   2303                 validate = trait.item_trait.handler.validate
   2304                 if validate is not None:
-> 2305                     value = [ validate( object, name, val ) for val in value ]
   2306 
   2307                 list.__setitem__(self, slice(0, 0), value )

/ccnc_bin/anaconda3/lib/python3.6/site-packages/traits/trait_types.py in validate(self, object, name, value)
   2334                 return value
   2335 
-> 2336             return TraitListObject( self, object, name, value )
   2337 
   2338         self.error( object, name, value )

/ccnc_bin/anaconda3/lib/python3.6/site-packages/traits/trait_handlers.py in __init__(self, trait, object, name, value)
   2311             except TraitError as excp:
   2312                 excp.set_prefix( 'Each element of the' )
-> 2313                 raise excp
   2314 
   2315         self.len_error( len( value ) )

/ccnc_bin/anaconda3/lib/python3.6/site-packages/traits/trait_handlers.py in __init__(self, trait, object, name, value)
   2303                 validate = trait.item_trait.handler.validate
   2304                 if validate is not None:
-> 2305                     value = [ validate( object, name, val ) for val in value ]
   2306 
   2307                 list.__setitem__(self, slice(0, 0), value )

/ccnc_bin/anaconda3/lib/python3.6/site-packages/traits/trait_handlers.py in <listcomp>(.0)
   2303                 validate = trait.item_trait.handler.validate
   2304                 if validate is not None:
-> 2305                     value = [ validate( object, name, val ) for val in value ]
   2306 
   2307                 list.__setitem__(self, slice(0, 0), value )

/ccnc_bin/anaconda3/lib/python3.6/site-packages/traits/trait_types.py in validate(self, object, name, value)
   2010             return value
   2011 
-> 2012         self.error( object, name, value )
   2013 
   2014     def full_info ( self, object, name, value ):

/ccnc_bin/anaconda3/lib/python3.6/site-packages/traits/trait_handlers.py in error(self, object, name, value)
    170         """
    171         raise TraitError( object, name, self.full_info( object, name, value ),
--> 172                           value )
    173 
    174     def full_info ( self, object, name, value ):

TraitError: Each element of the 'restrict_deformation' trait of a RegistrationInputSpec instance must be 0 or 1, but a value of 0.1 <class 'float'> was specified.

Best regards,
Kevin

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions