ANTsX / ANTs

Advanced Normalization Tools (ANTs)
Apache License 2.0
1.2k stars 381 forks source link

ANTs Registration: file NULL does not exist #1399

Closed KateJGodfrey closed 2 years ago

KateJGodfrey commented 2 years ago

Describe the problem

ANTs registration issue: file NULL does not exist.

Script worked previously so I am wondering if it's a version issue, however ANTs and nipype work for previous steps (N4 bias correction and brain extraction). The following step (ANTs atropos) requires a mask and also works. It's just the registration step.

220719-12:10:01,0 nipype.interface INFO: stderr 2022-07-19T12:10:01.000322: file NULL does not exist .

220719-12:10:01,26 nipype.interface INFO: stderr 2022-07-19T12:10:01.026533: file NULL does not exist .

220719-12:10:01,55 nipype.interface INFO: stderr 2022-07-19T12:10:01.055746: file NULL does not exist .

To Reproduce

Script to reproduce the issue and example data provided. Previous steps (bias field correction and brain extraction) retained as comments for context.

ANTS-Reg-Issue.zip

Code was run through terminal

python3 reg_issue.py

Problem code provided here

arinputmoving = "T1wFltmeanAbfcBe"
aroutput = "T1wFltmeanAbfcBeAr"
armatrixoutputname = "transformT1wFltmeantoMNI"

#specify what you want to warp the input to. MNI template.
arinputfixedimage = dir_in + "mni_icbm152_t1_tal_nlin_asym_09c.nii"
arinputfixedmask = dir_in + "mni_icbm152_t1_tal_nlin_asym_09c_mask.nii"

input_file = dir_in + person + "_" + arinputmoving + ".nii.gz"
output_file = dir_in + person + "_" + aroutput + ".nii.gz"

myar = ants.Registration()
myar.inputs.fixed_image = arinputfixedimage
myar.inputs.fixed_image_masks = arinputfixedmask
myar.inputs.moving_image = input_file
myar.inputs.collapse_output_transforms = True                        
myar.inputs.num_threads = 1
myar.inputs.output_inverse_warped_image=True
myar.inputs.output_warped_image=True
myar.inputs.sigma_units=['vox']*3
myar.inputs.transforms=['Rigid', 'Affine', 'SyN']
myar.inputs.winsorize_lower_quantile=0.005
myar.inputs.winsorize_upper_quantile=0.995
myar.inputs.convergence_window_size=[10]
myar.inputs.metric_weight=[1.0]*3
myar.inputs.number_of_iterations=[[1000, 500, 250, 100],[1000, 500, 250, 100],[100, 70, 50, 20]]
myar.inputs.radius_or_number_of_bins=[32, 32, 4]
myar.inputs.sampling_percentage=[0.25, 0.25, 1]
myar.inputs.sampling_strategy=['Regular','Regular','None']
myar.inputs.shrink_factors=[[8, 4, 2, 1]]*3
myar.inputs.smoothing_sigmas=[[3, 2, 1, 0]]*3
myar.inputs.transform_parameters=[(0.1,),(0.1,),(0.1, 3.0, 0.0)]
myar.inputs.convergence_threshold=[1e-06]   
myar.inputs.use_histogram_matching=True
myar.inputs.metric=['MI', 'MI', 'CC']
myar.inputs.write_composite_transform=True
myar.inputs.initial_moving_transform_com = True
myar.run()

os.rename('transform_Warped.nii.gz',output_file)
os.rename('transformComposite.h5',armatrixoutputname + '.h5')
os.rename('transformInverseComposite.h5',armatrixoutputname + 'inverse.h5')
os.rename('transform_InverseWarped.nii.gz',armatrixoutputname + 'inverse.nii.gz')    
x = "ANTs Registration created " + output_file
print(x)

System information (please complete the following information)

ANTs version information

ntustison commented 2 years ago

Can you try reproducing the ants registration issue without the nipype layer?

cookpa commented 2 years ago

Can you try printing myar.cmdline and post that here?

gdevenyi commented 2 years ago

No moving mask is provided in the nipype call, thus, this output is expected. The call is probably --masks [<fixedmask>]