def move_to_MNI_space(input_file, bvals, bvecs, brain_mask, output_dir): print("Moving input to MNI space...") os.system("calc_FA -i " + input_file + " -o " + output_dir + "/FA.nii.gz --bvals " + bvals + " --bvecs " + bvecs + " --brain_mask " + brain_mask) dwi_spacing = img_utils.get_image_spacing(input_file) template_path = resource_filename('resources', 'MNI_FA_template.nii.gz') os.system("flirt -ref " + template_path + " -in " + output_dir + "/FA.nii.gz -out " + output_dir + "/FA_MNI.nii.gz -omat " + output_dir + "/FA_2_MNI.mat -dof 6 -cost mutualinfo -searchcost mutualinfo") os.system("flirt -ref " + template_path + " -in " + input_file + " -out " + output_dir + "/Diffusion_MNI.nii.gz -applyisoxfm " + dwi_spacing + " -init " + output_dir + "/FA_2_MNI.mat -dof 6") os.system("cp " + bvals + " " + output_dir + "/Diffusion_MNI.bvals") os.system("cp " + bvecs + " " + output_dir + "/Diffusion_MNI.bvecs") new_input_file = join(output_dir, "Diffusion_MNI.nii.gz") bvecs = join(output_dir, "Diffusion_MNI.bvecs") bvals = join(output_dir, "Diffusion_MNI.bvals") brain_mask = create_brain_mask(new_input_file, output_dir) return new_input_file, bvals, bvecs, brain_mask
def move_to_subject_space(output_dir, bundles, experiment_type, output_subdir, output_float=False): #This is not working for TOM (because of processing in parts) and requirement of bundle_segmentations as input print("Moving output to subject space...") # For peaks we can not use linear/spline interpolation. We have to use nn or convert to tensor and then # resample with linear interpolation. interp = "nearestneighbour" if experiment_type == "peak_regression" else "trilinear" os.system("mkdir -p " + output_dir + "/" + output_subdir + "_MNI") os.system("mv " + output_dir + "/" + output_subdir + "/* " + output_dir + "/" + output_subdir + "_MNI") os.system("convert_xfm -omat " + output_dir + "/MNI_2_FA.mat -inverse " + output_dir + "/FA_2_MNI.mat") for bundle in bundles: file_path_in = output_dir + "/" + output_subdir + "_MNI/" + bundle + ".nii.gz" file_path_out = output_dir + "/" + output_subdir + "/" + bundle + ".nii.gz" dwi_spacing = img_utils.get_image_spacing(file_path_in) os.system("flirt -ref " + output_dir + "/FA.nii.gz -in " + file_path_in + " -out " + file_path_out + " -applyisoxfm " + dwi_spacing + " -init " + output_dir + "/MNI_2_FA.mat -dof 6" + " -interp " + interp) if not output_float: os.system("fslmaths " + file_path_out + " -thr 0.5 -bin " + file_path_out)
def move_to_subject_space(output_dir): print("Moving input to subject space...") file_path_in = output_dir + "/bundle_segmentations.nii.gz" file_path_out = output_dir + "/bundle_segmentations_subjectSpace.nii.gz" dwi_spacing = img_utils.get_image_spacing(file_path_in) os.system("convert_xfm -omat " + output_dir + "/MNI_2_FA.mat -inverse " + output_dir + "/FA_2_MNI.mat") os.system("flirt -ref " + output_dir + "/FA.nii.gz -in " + file_path_in + " -out " + file_path_out + " -applyisoxfm " + dwi_spacing + " -init " + output_dir + "/MNI_2_FA.mat -dof 6") os.system("fslmaths " + file_path_out + " -thr 0.5 -bin " + file_path_out)
def move_to_subject_space_single_file(output_dir, experiment_type, output_subdir, output_float=False): print("Moving output to subject space...") os.system("mv " + output_dir + "/" + output_subdir + ".nii.gz " + output_dir + "/" + output_subdir + "_MNI.nii.gz") file_path_in = output_dir + "/" + output_subdir + "_MNI.nii.gz" file_path_out = output_dir + "/" + output_subdir + ".nii.gz" dwi_spacing = img_utils.get_image_spacing(file_path_in) os.system("convert_xfm -omat " + output_dir + "/MNI_2_FA.mat -inverse " + output_dir + "/FA_2_MNI.mat") os.system("flirt -ref " + output_dir + "/FA.nii.gz -in " + file_path_in + " -out " + file_path_out + " -applyisoxfm " + dwi_spacing + " -init " + output_dir + "/MNI_2_FA.mat -dof 6" + " -interp trilinear") if not output_float: os.system("fslmaths " + file_path_out + " -thr 0.5 -bin " + file_path_out)
def move_to_subject_space(output_dir, bundles, experiment_type, output_subdir, output_float=False): print("Moving output to subject space...") os.system("mkdir -p " + output_dir + "/" + output_subdir + "_MNI") os.system("mv " + output_dir + "/" + output_subdir + "/* " + output_dir + "/" + output_subdir + "_MNI") os.system("convert_xfm -omat " + output_dir + "/MNI_2_FA.mat -inverse " + output_dir + "/FA_2_MNI.mat") for bundle in tqdm(bundles): file_path_in = output_dir + "/" + output_subdir + "_MNI/" + bundle + ".nii.gz" file_path_out = output_dir + "/" + output_subdir + "/" + bundle + ".nii.gz" dwi_spacing = img_utils.get_image_spacing(file_path_in) if experiment_type == "peak_regression": os.system("flip_peaks -i " + file_path_in + " -o " + file_path_in[:-7] + "_flip.nii.gz -a x") # flip to fsl format os.system("vecreg -i " + file_path_in[:-7] + "_flip.nii.gz -o " + file_path_out + " -r " + output_dir + "/FA.nii.gz -t " + output_dir + "/MNI_2_FA.mat") # Use vecreg to transform peaks os.system("flip_peaks -i " + file_path_out + " -o " + file_path_out + " -a x") # flip back to mrtrix format os.system("rm " + file_path_in[:-7] + "_flip.nii.gz") # remove flipped tmp file else: # do not use spline interpolation because makes a lot of holes into masks os.system("flirt -ref " + output_dir + "/FA.nii.gz -in " + file_path_in + " -out " + file_path_out + " -applyisoxfm " + dwi_spacing + " -init " + output_dir + "/MNI_2_FA.mat -dof 6" + " -interp trilinear") if not output_float: os.system("fslmaths " + file_path_out + " -thr 0.5 -bin " + file_path_out)