示例#1
0
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
示例#2
0
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)
示例#3
0
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)
示例#4
0
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)
示例#5
0
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)