Created
January 3, 2019 19:28
-
-
Save jcreinhold/fdd701211191450284c5718502eabbd4 to your computer and use it in GitHub Desktop.
Convert PAR/REC to NIfTI
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#/usr/bin/env python | |
# convert all parrec files in a directory to nifti | |
import argparse | |
from glob import glob | |
import os | |
import sys | |
import nibabel as nib | |
def arg_parser(): | |
parser = argparse.ArgumentParser(description='convert all parrec images in a directory to nifti') | |
parser.add_argument('img_dir', type=str) | |
parser.add_argument('out_dir', type=str) | |
return parser | |
def split_filename(filepath): | |
path = os.path.dirname(filepath) | |
filename = os.path.basename(filepath) | |
base, ext = os.path.splitext(filename) | |
if ext == '.gz': | |
base, ext2 = os.path.splitext(base) | |
ext = ext2 + ext | |
return path, base, ext | |
def main(): | |
try: | |
args = arg_parser().parse_args() | |
fns = glob(os.path.join(args.img_dir, '*.par')) | |
if len(fns) == 0: | |
fns = glob(os.path.join(args.img_dir, '*.PAR')) | |
if len(fns) == 0: | |
raise Exception(f'Could not find .par files in {args.img_dir}') | |
for fn in fns: | |
print(f'Converting image: {fn}') | |
img = nib.load(fn) | |
_, base, _ = split_filename(fn) | |
out_fn = os.path.join(args.out_dir, base + '.nii.gz') | |
nifti = nib.Nifti1Image(img.dataobj, img.affine, header=img.header) | |
nifti.set_data_dtype('<f4') | |
nifti.to_filename(out_fn) | |
print(f'Saved to: {out_fn}') | |
return 0 | |
except Exception as e: | |
print(e) | |
return 1 | |
if __name__ == "__main__": | |
sys.exit(main()) |
I have got it. Thanks a lot for writing this script. Do you have anything on fitting and texture analysis?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Please guide on how to enter the arg_parser() variables: img_dir and out_dir
I am running this function with the variable paths: split_filename('/V1','V1'). I am getting the following error
TypeError Traceback (most recent call last)
in
----> 1 split_filename('/V1','V1')
TypeError: split_filename() takes 1 positional argument but 2 were given