Esempio n. 1
0
#!/usr/bin/python

#Parse arguments
import argparse, sys
argParse = argparse.ArgumentParser(description='Convert ECAT PET image to decay corrected well counts/mL/sec:')
argParse.add_argument('pet',help='Nifti ECAT count image',nargs=1,type=str)
argParse.add_argument('info',help='Yi Su style info file',nargs=1,type=str)
argParse.add_argument('pie',help='Pie calibration factor',nargs=1,type=float)
argParse.add_argument('out',help='Root for outputed files',nargs=1,type=str)
args = argParse.parse_args()

#Load in libraries we will need
import numpy as np, nibabel as nib, nagini

#Load in PET image
pet = nib.load(args.pet[0]); petData = nagini.reshape4d(pet.get_data())

#Load in info file
info = nagini.loadInfo(args.info[0])

#Loop through frames
for fIdx in range(petData.shape[1]):

	#Convert to decay corrected well counts
	petData[:,fIdx] *= 60.0 * args.pie[0] / info[fIdx,2] * info[fIdx,3]

#Write out result
well = nib.Nifti1Image(petData.reshape(pet.shape),pet.affine,header=pet.header)
well.to_filename(args.out[0]+'.nii.gz')

Esempio n. 2
0
import scipy.ndimage.filters as filt, scipy.spatial as spat
from tqdm import tqdm

#Ignore invalid  and overflow warnings
np.seterr(invalid='ignore', over='ignore')

#########################
###Data Pre-Processing###
#########################
print('Loading images...')

#Load in the dta file
dta = nagini.loadDta(args.dta[0])

#Load in the info file
info = nagini.loadInfo(args.info[0])

#Load image headers
pet = nagini.loadHeader(args.pet[0])
roi = nagini.loadHeader(args.roi[0])
cbf = nagini.loadHeader(args.cbf[0])
cbv = nagini.loadHeader(args.cbv[0])

#Check to make sure dimensions match
if pet.shape[3] != info.shape[0] or pet.shape[0:3] != roi.shape[
        0:3] or pet.shape[0:3] != cbf.shape[0:3] or pet.shape[
            0:3] != cbv.shape[0:3]:
    print 'ERROR: Data dimensions do not match. Please check...'
    sys.exit()

#Brain mask logic