@@ -795,3 +795,77 @@ def _list_outputs(self):
795795 outputs ['output_label_image' ] = os .path .abspath (
796796 self .inputs .output_label_image )
797797 return outputs
798+
799+
800+ class DenoiseImageInputSpec (ANTSCommandInputSpec ):
801+ dimension = traits .Enum (2 , 3 , 4 , argstr = '-d %d' , usedefault = False ,
802+ desc = 'This option forces the image to be treated '
803+ 'as a specified-dimensional image. If not '
804+ 'specified, the program tries to infer the '
805+ 'dimensionality from the input image.' )
806+ input_image = File (exists = True , argstr = "-i %s" , mandatory = True ,
807+ desc = 'A scalar image is expected as input for noise correction.' )
808+ noise_model = traits .Enum ('Gaussian' , 'Rician' , argstr = '-n %s' , usedefault = True ,
809+ desc = ('Employ a Rician or Gaussian noise model.' ))
810+ shrink_factor = traits .Int (default_value = 1 , usedefault = True , argstr = '-s %s' ,
811+ desc = ('Running noise correction on large images can '
812+ 'be time consuming. To lessen computation time, '
813+ 'the input image can be resampled. The shrink '
814+ 'factor, specified as a single integer, describes '
815+ 'this resampling. Shrink factor = 1 is the default.' ))
816+ output_image = File (argstr = "-o %s" , name_source = ['input_image' ], hash_files = False ,
817+ keep_extension = True , name_template = '%s_noise_corrected' ,
818+ desc = 'The output consists of the noise corrected '
819+ 'version of the input image.' )
820+ save_noise = traits .Bool (False , mandatory = True , usedefault = True ,
821+ desc = ('True if the estimated noise should be saved '
822+ 'to file.' ), xor = ['noise_image' ])
823+ noise_image = File (name_source = ['input_image' ], hash_files = False ,
824+ keep_extension = True , name_template = '%s_noise' ,
825+ desc = 'Filename for the estimated noise.' )
826+ verbose = traits .Bool (False , argstr = "-v" , desc = ('Verbose output.' ))
827+
828+
829+ class DenoiseImageOutputSpec (TraitedSpec ):
830+ output_image = File (exists = True )
831+ noise_image = File (exists = True )
832+
833+
834+ class DenoiseImage (ANTSCommand ):
835+ """
836+ Examples
837+ --------
838+ >>> import copy
839+ >>> from nipype.interfaces.ants import DenoiseImage
840+ >>> denoise = DenoiseImage()
841+ >>> denoise.inputs.dimension = 3
842+ >>> denoise.inputs.input_image = 'im1.nii'
843+ >>> denoise.cmdline
844+ 'DenoiseImage -d 3 -i im1.nii -n Gaussian -o im1_noise_corrected.nii -s 1'
845+
846+ >>> denoise_2 = copy.deepcopy(denoise)
847+ >>> denoise_2.inputs.output_image = 'output_corrected_image.nii.gz'
848+ >>> denoise_2.inputs.noise_model = 'Rician'
849+ >>> denoise_2.inputs.shrink_factor = 2
850+ >>> denoise_2.cmdline
851+ 'DenoiseImage -d 3 -i im1.nii -n Rician -o output_corrected_image.nii.gz -s 2'
852+
853+ >>> denoise_3 = DenoiseImage()
854+ >>> denoise_3.inputs.input_image = 'im1.nii'
855+ >>> denoise_3.inputs.save_noise = True
856+ >>> denoise_3.cmdline
857+ 'DenoiseImage -i im1.nii -n Gaussian -o [ im1_noise_corrected.nii, im1_noise.nii ] -s 1'
858+ """
859+ input_spec = DenoiseImageInputSpec
860+ output_spec = DenoiseImageOutputSpec
861+ _cmd = 'DenoiseImage'
862+
863+ def _format_arg (self , name , trait_spec , value ):
864+ if ((name == 'output_image' ) and
865+ (self .inputs .save_noise or isdefined (self .inputs .noise_image ))):
866+ newval = '[ %s, %s ]' % (self ._filename_from_source ('output_image' ),
867+ self ._filename_from_source ('noise_image' ))
868+ return trait_spec .argstr % newval
869+
870+ return super (DenoiseImage ,
871+ self )._format_arg (name , trait_spec , value )
0 commit comments