def compute_rsf(rois): """ computes an RSF for each roi in input argument and returns an array with same size as input """ sameshape, shape = check_roi_shape(rois) if not sameshape: raise AssertionError('ROIs do NOT have same shape, exiting program,'\ 'check your ROIS dimensions') startdir = os.getcwd() fullshape = tuple([len(rois)] + list(shape)) rsfs = np.zeros(fullshape) for ind, roi in enumerate(rois): petpsf = es.PetPsf(roi) xyresult = petpsf.convolve_xy() zresult = petpsf.convolve_z() file = petpsf.save_result() sfile = pp.fname_presuffix(file, prefix='s') smfile = metzler.smooth_mask_nipy(file, sfile, fwhm=4) smdata = smfile.get_data() rsfs[ind, :, :, :] = smdata return rsfs
def compute_rsf(rois): """ computes an RSF for each roi in input argument and returns an array with same size as input """ sameshape, shape = check_roi_shape(rois) if not sameshape: raise AssertionError('ROIs do NOT have same shape, exiting program,'\ 'check your ROIS dimensions') startdir = os.getcwd() fullshape = tuple([len(rois)] + list(shape)) rsfs = np.zeros(fullshape) for ind, roi in enumerate(rois): petpsf = es.PetPsf(roi) xyresult = petpsf.convolve_xy() zresult = petpsf.convolve_z() file = petpsf.save_result() sfile = pp.fname_presuffix(file, prefix='s') smfile = metzler.smooth_mask_nipy(file,sfile,fwhm=4) smdata = smfile.get_data() rsfs[ind,:,:,:] = smdata return rsfs
logging.error('%s missing, skipping' % (globstr)) continue # copy ponsnormd to pvc directory cponsnormd = bg.copy_file(ponsnormd, pvcdir) # get raparc corgdir = os.path.join(pth, 'coreg_mri2fdg') globstr = '%s/rB*aparc_aseg.nii' % (corgdir) raparc = pp.find_single_file(globstr) if raparc is None: logging.error('%s missing, skipping ' % (globstr)) continue #copy raparc_aseg to pvd dir craparc = bg.copy_file(raparc, pvcdir) # make brainamsk wm, gm, pibi = rousset.generate_pibindex_rois_fs(craparc) wmf = pp.fname_presuffix(craparc, prefix='wm_') gmf = pp.fname_presuffix(craparc, prefix='gm_') pibif = pp.fname_presuffix(craparc, prefix='pibindex_') aff = rousset.ni.load(craparc).get_affine() rousset.to_file(wm, aff, wmf) rousset.to_file(gm, aff, gmf) rousset.to_file(pibi, aff, pibif) rois = [gmf, wmf, pibif] rsfs = rousset.compute_rsf(rois) transfer_mtx = rousset.gen_transfer_matrix(rsfs, rois) obs = rousset.get_observed_conc(cponsnormd, rois) transferf = os.path.join(pvcdir, 'transfer_matrix') rousset.np.save(transferf, transfer_mtx) obsf = os.path.join(pvcdir, 'observed') rousset.np.save(obsf, obs) logging.info('Created %s' % (pvcdir))
return obs_conc def calc_pvc_values(transfer_mtx, observed): corrected = np.matrix(np.linalg.inv(transfer_mtx))* \ np.transpose(np.matrix(observed)) return corrected if __name__ == '__main__': testdir = os.path.abspath('../test') aparc_aseg = os.path.join(testdir, 'rB09-230_v1_aparc_aseg.nii') dvr = os.path.join(testdir, 'DVR-B09-230_v1_2012-06-08-15-07.nii.gz') wm = mask_from_aseg(aparc_aseg, wm_aseg()) gm = mask_from_aseg(aparc_aseg, gm_aseg()) pibi = mask_from_aseg(aparc_aseg, pibindex_aseg()) wm, gm, pibi = generate_pibindex_rois_fs(aparc_aseg) wmf = pp.fname_presuffix(aparc_aseg, prefix='wm_') gmf = pp.fname_presuffix(aparc_aseg, prefix='gm_') pibif = pp.fname_presuffix(aparc_aseg, prefix='pibindex_') aff = ni.load(aparc_aseg).get_affine() to_file(wm, aff, wmf) to_file(gm, aff, gmf) to_file(pibi, aff, pibif) rois = [gmf, wmf, pibif] rsfs = compute_rsf(rois) transfer_mtx = gen_transfer_matrix(rsfs, rois) obs = get_observed_conc(dvr, rois) correct = calc_pvc_values(transfer_mtx, obs)
logging.error('%s missing, skipping'%(globstr)) continue # copy ponsnormd to pvc directory cponsnormd = bg.copy_file(ponsnormd, pvcdir) # get raparc corgdir = os.path.join(pth, 'coreg_mri2fdg') globstr = '%s/rB*aparc_aseg.nii'%(corgdir) raparc = pp.find_single_file(globstr) if raparc is None: logging.error('%s missing, skipping '%(globstr)) continue #copy raparc_aseg to pvd dir craparc = bg.copy_file(raparc, pvcdir) # make brainamsk wm,gm,pibi = rousset.generate_pibindex_rois_fs(craparc) wmf = pp.fname_presuffix(craparc, prefix='wm_') gmf = pp.fname_presuffix(craparc, prefix='gm_') pibif = pp.fname_presuffix(craparc, prefix='pibindex_') aff = rousset.ni.load(craparc).get_affine() rousset.to_file(wm, aff, wmf) rousset.to_file(gm, aff, gmf) rousset.to_file(pibi, aff, pibif) rois = [gmf, wmf, pibif] rsfs = rousset.compute_rsf(rois) transfer_mtx = rousset.gen_transfer_matrix(rsfs, rois) obs = rousset.get_observed_conc(cponsnormd, rois) transferf = os.path.join(pvcdir, 'transfer_matrix') rousset.np.save(transferf, transfer_mtx) obsf = os.path.join(pvcdir, 'observed') rousset.np.save(obsf, obs) logging.info('Created %s'%(pvcdir))
pvcdir, exists = bg.make_dir(pth, 'pvc_metzler') if exists: logging.error('%s exists, remove to re-run' % (pvcdir)) continue # get ponsnormd globstr = '%s/nonan-ponsnormed_%s*nii*' % (pth, subid) ponsnormd = pp.find_single_file(globstr) if ponsnormd is None: logging.error('%s missing, skipping' % (globstr)) continue # copy ponsnormd to pvc directory cponsnormd = bg.copy_file(ponsnormd, pvcdir) # get raparc corgdir = os.path.join(pth, 'coreg_mri2fdg') globstr = '%s/rB*aparc_aseg.nii' % (corgdir) raparc = pp.find_single_file(globstr) if raparc is None: logging.error('%s missing, skipping ' % (globstr)) continue #copy raparc_aseg to pvd dir craparc = bg.copy_file(raparc, pvcdir) # make brainamsk bmask = metzler.make_aseg_brainmask(craparc) os.unlink(craparc) smooth_bmask = pp.fname_presuffix(bmask, prefix='s') _ = metzler.smooth_mask_nipy(bmask, smooth_bmask) ero_bmask = metzler.fsl_erode2d(bmask) pvcpet = metzler.calc_pvc(cponsnormd, ero_bmask, smooth_bmask) os.unlink(cponsnormd) logging.info('Created %s' % (pvcpet))
if exists: logging.error('%s exists, remove to re-run'%(pvcdir)) continue # get ponsnormd globstr = '%s/nonan-ponsnormed_%s*nii*'%(pth,subid) ponsnormd = pp.find_single_file(globstr) if ponsnormd is None: logging.error('%s missing, skipping'%(globstr)) continue # copy ponsnormd to pvc directory cponsnormd = bg.copy_file(ponsnormd, pvcdir) # get raparc corgdir = os.path.join(pth, 'coreg_mri2fdg') globstr = '%s/rB*aparc_aseg.nii'%(corgdir) raparc = pp.find_single_file(globstr) if raparc is None: logging.error('%s missing, skipping '%(globstr)) continue #copy raparc_aseg to pvd dir craparc = bg.copy_file(raparc, pvcdir) # make brainamsk bmask = metzler.make_aseg_brainmask(craparc) os.unlink(craparc) smooth_bmask = pp.fname_presuffix(bmask, prefix='s') _ = metzler.smooth_mask_nipy(bmask, smooth_bmask) ero_bmask = metzler.fsl_erode2d(bmask) pvcpet = metzler.calc_pvc(cponsnormd, ero_bmask, smooth_bmask) os.unlink(cponsnormd) logging.info('Created %s'%(pvcpet))
mask = np.logical_and(roidat > 0, petdat > 0) obs_conc[jval] = petdat[mask].mean() return obs_conc def calc_pvc_values(transfer_mtx, observed): corrected = np.matrix(np.linalg.inv(transfer_mtx))* \ np.transpose(np.matrix(observed)) return corrected if __name__ == '__main__': testdir = os.path.abspath('../test') aparc_aseg = os.path.join(testdir, 'rB09-230_v1_aparc_aseg.nii') dvr = os.path.join(testdir,'DVR-B09-230_v1_2012-06-08-15-07.nii.gz') wm = mask_from_aseg(aparc_aseg, wm_aseg()) gm = mask_from_aseg(aparc_aseg, gm_aseg()) pibi = mask_from_aseg(aparc_aseg, pibindex_aseg()) wm,gm,pibi = generate_pibindex_rois_fs(aparc_aseg) wmf = pp.fname_presuffix(aparc_aseg, prefix='wm_') gmf = pp.fname_presuffix(aparc_aseg, prefix='gm_') pibif = pp.fname_presuffix(aparc_aseg, prefix='pibindex_') aff = ni.load(aparc_aseg).get_affine() to_file(wm, aff, wmf) to_file(gm, aff, gmf) to_file(pibi, aff, pibif) rois = [gmf, wmf, pibif] rsfs = compute_rsf(rois) transfer_mtx = gen_transfer_matrix(rsfs, rois) obs = get_observed_conc(dvr, rois) correct = calc_pvc_values(transfer_mtx, obs)
logging.error("%s missing, skipping" % (globstr)) continue # copy dvr to pvc directory cdvr = bg.copy_file(dvr, pvcdir) # get raparc corgdir = os.path.join(pth, "coreg") globstr = "%s/rB*aparc_aseg.nii" % (corgdir) raparc = pp.find_single_file(globstr) if raparc is None: logging.error("%s missing, skipping " % (globstr)) continue # copy raparc_aseg to pvd dir craparc = bg.copy_file(raparc, pvcdir) # make brainamsk wm, gm, pibi = rousset.generate_pibindex_rois_fs(craparc) wmf = pp.fname_presuffix(craparc, prefix="wm_") gmf = pp.fname_presuffix(craparc, prefix="gm_") pibif = pp.fname_presuffix(craparc, prefix="pibindex_") aff = rousset.ni.load(craparc).get_affine() rousset.to_file(wm, aff, wmf) rousset.to_file(gm, aff, gmf) rousset.to_file(pibi, aff, pibif) rois = [gmf, wmf, pibif] rsfs = rousset.compute_rsf(rois) transfer_mtx = rousset.gen_transfer_matrix(rsfs, rois) obs = rousset.get_observed_conc(cdvr, rois) transferf = os.path.join(pvcdir, "transfer_matrix") rousset.np.save(transferf, transfer_mtx) obsf = os.path.join(pvcdir, "observed") rousset.np.save(obsf, obs) logging.info("Created %s" % (pvcdir))