def test_dilation(fsl_output_type=None): prev_type = set_output_type(fsl_output_type) files, testdir, origdir, out_ext = create_files_in_directory() # Get the command diller = fsl.DilateImage(in_file="a.nii", out_file="b.nii") # Test the underlying command yield assert_equal, diller.cmd, "fslmaths" # Test that the dilation operation is mandatory yield assert_raises, ValueError, diller.run # Test the different dilation operations for op in ["mean", "modal", "max"]: cv = dict(mean="M", modal="D", max="F") diller.inputs.operation = op yield assert_equal, diller.cmdline, "fslmaths a.nii -dil%s b.nii" % cv[ op] # Now test the different kernel options for k in ["3D", "2D", "box", "boxv", "gauss", "sphere"]: for size in [1, 1.5, 5]: diller.inputs.kernel_shape = k diller.inputs.kernel_size = size yield assert_equal, diller.cmdline, "fslmaths a.nii -kernel %s %.4f -dilF b.nii" % ( k, size) # Test that we can use a file kernel f = open("kernel.txt", "w").close() del f # Shut pyflakes up diller.inputs.kernel_shape = "file" diller.inputs.kernel_size = Undefined diller.inputs.kernel_file = "kernel.txt" yield assert_equal, diller.cmdline, "fslmaths a.nii -kernel file kernel.txt -dilF b.nii" # Test that we don't need to request an out name dil = fsl.DilateImage(in_file="a.nii", operation="max") yield assert_equal, dil.cmdline, "fslmaths a.nii -dilF %s" % os.path.join( testdir, "a_dil%s" % out_ext) # Clean up our mess clean_directory(testdir, origdir) set_output_type(prev_type)
def test_dilation(create_files_in_directory_plus_output_type): files, testdir, out_ext = create_files_in_directory_plus_output_type # Get the command diller = fsl.DilateImage(in_file="a.nii", out_file="b.nii") # Test the underlying command assert diller.cmd == "fslmaths" # Test that the dilation operation is mandatory with pytest.raises(ValueError): diller.run() # Test the different dilation operations for op in ["mean", "modal", "max"]: cv = dict(mean="M", modal="D", max="F") diller.inputs.operation = op assert diller.cmdline == "fslmaths a.nii -dil{} b.nii".format(cv[op]) # Now test the different kernel options for k in ["3D", "2D", "box", "boxv", "gauss", "sphere"]: for size in [1, 1.5, 5]: diller.inputs.kernel_shape = k diller.inputs.kernel_size = size assert (diller.cmdline == "fslmaths a.nii -kernel {} {:.4f} -dilF b.nii".format( k, size)) # Test that we can use a file kernel f = open("kernel.txt", "w").close() del f # Shut pyflakes up diller.inputs.kernel_shape = "file" diller.inputs.kernel_size = Undefined diller.inputs.kernel_file = "kernel.txt" assert diller.cmdline == "fslmaths a.nii -kernel file kernel.txt -dilF b.nii" # Test that we don't need to request an out name dil = fsl.DilateImage(in_file="a.nii", operation="max") assert dil.cmdline == "fslmaths a.nii -dilF {}".format( os.path.join(testdir, "a_dil{}".format(out_ext)))
#Node: Smooth - The volume smoothing option performs a standard SPM smoothing volsmooth = pe.Node(interface=spm.Smooth(), name = "volsmooth") volsmooth.inputs.fwhm = 6 #Node: FreeSurferSource - The get specific files from the freesurfer folder fssource = pe.Node(interface=nio.FreeSurferSource(),name='fssource') fssource.inputs.subjects_dir = subjects_dir #Node: Binarize - to binarize the aseg file for the dilation binarize = pe.Node(interface=fs.Binarize(),name='binarize') binarize.inputs.min = 0.5 binarize.inputs.out_type = 'nii' #Node: DilateImage - to dilate the binarized aseg file and use it as a mask dilate = pe.Node(interface=math.DilateImage(),name='dilate') dilate.inputs.operation = 'max' dilate.inputs.output_type = 'NIFTI' #Connect up the preprocessing components preproc.connect([(sliceTiming, realign,[('timecorrected_files', 'in_files')]), (realign, bbregister,[('mean_image', 'source_file')]), (realign, volsmooth, [('realigned_files', 'in_files')]), (realign, art,[('realignment_parameters','realignment_parameters'), ('mean_image', 'mask_file'), ]), (volsmooth,art,[('smoothed_files','realigned_files'), ]), (fssource, binarize, [('aseg','in_file')]), (binarize, dilate,[('binary_file','in_file')]), (realign, art,[('realignment_parameters','realignment_parameters'),