def realigntoframe1(niftilist): """given list of nifti files copies relevent files to realign_QA realigns to the 1st frame """ startdir = os.getcwd() niftilist.sort() basepth, _ = os.path.split(niftilist[0]) tmpdir, exists = bg.make_dir(basepth, 'realign_QA') if exists: return None, None # copy files to tmp dir copiednifti = [] for f in niftilist: newf = bg.copy_file(f, tmpdir) copiednifti.append(str(newf)) print 'copied nifti', copiednifti # realign to frame1 os.chdir(tmpdir) rlgn = spm.Realign() rlgn.inputs.matlab_cmd = 'matlab-spm8' rlgn.inputs.in_files = copiednifti rlgn.inputs.ignore_exception = True #print rlgn.mlab.cmdline rlgnout = rlgn.run() os.chdir(startdir) return rlgnout, copiednifti
def realigntoframe17(niftilist): """given list of nifti files copies/creates realign_QA removes first 5 frames realignes rest to the 17th frame """ startdir = os.getcwd() niftilist.sort() basepth, _ = os.path.split(niftilist[0]) tmpdir, exists = bg.make_dir(basepth, 'realign_QA') if exists: return None, None # copy files to tmp dir copiednifti = [] for f in niftilist: newf = bg.copy_file(f, tmpdir) copiednifti.append(str(newf)) # put files in correct order os.chdir(tmpdir) alteredlist = [x for x in copiednifti] frame17 = alteredlist[16] alteredlist.remove(frame17) alteredlist = alteredlist[5:] alteredlist.insert(0, frame17) #print 'alteredlist', alteredlist # realign rlgn = spm.Realign(matlab_cmd='matlab-spm8') rlgn.inputs.in_files = alteredlist rlgn.inputs.ignore_exception = True #rlgn.inputs.write_which = [2,0] #rlgn.register_to_mean = True rlgnout = rlgn.run() os.chdir(startdir) return rlgnout, copiednifti
def realigntoframe17(niftilist): """given list of nifti files copies/creates realign_QA removes first 5 frames realignes rest to the 17th frame """ startdir = os.getcwd() niftilist.sort() basepth, _ = os.path.split(niftilist[0]) tmpdir, exists = bg.make_dir(basepth, 'realign_QA') if exists: return None, None # copy files to tmp dir copiednifti = [] for f in niftilist: newf = bg.copy_file(f, tmpdir) copiednifti.append(str(newf)) # put files in correct order os.chdir(tmpdir) alteredlist =[x for x in copiednifti] frame17 = alteredlist[16] alteredlist.remove(frame17) alteredlist = alteredlist[5:] alteredlist.insert(0, frame17) #print 'alteredlist', alteredlist # realign rlgn = spm.Realign(matlab_cmd='matlab-spm8') rlgn.inputs.in_files = alteredlist rlgn.inputs.ignore_exception = True #rlgn.inputs.write_which = [2,0] #rlgn.register_to_mean = True rlgnout = rlgn.run() os.chdir(startdir) return rlgnout, copiednifti
def rousset_labellist(labeldir, hemi, outdir='rousset_labels'): rousset_labels = {'frontal':['frontalpole','lateralorbitofrontal'], 'temporal' : ['temporalpole'], 'parietal' : ['inferiorparietal'], 'precuneus' : ['precuneus'], 'cingulate' : ['posteriorcingulate', 'isthmuscingulate'] } pth, _ = os.path.split(labeldir) outdir, exists = bg.make_dir(pth, outdir) # for each rousset label make or copy labelfiles = [] for label, regions in rousset_labels.items(): outlabel = os.path.join(outdir, '%s.rousset_%s.label'%(hemi, label)) tmpregions = [os.path.join(labeldir, '%s.%s.label'%(hemi, x)) for x in regions] if len(regions) == 1: bg.copy_file(tmpregions[0], outlabel) else: generate_roilabels(tmpregions, outlabel) labelfiles.append(outlabel) return labelfiles
def rousset_labellist(labeldir, hemi, outdir='rousset_labels'): rousset_labels = { 'frontal': ['frontalpole', 'lateralorbitofrontal'], 'temporal': ['temporalpole'], 'parietal': ['inferiorparietal'], 'precuneus': ['precuneus'], 'cingulate': ['posteriorcingulate', 'isthmuscingulate'] } pth, _ = os.path.split(labeldir) outdir, exists = bg.make_dir(pth, outdir) # for each rousset label make or copy labelfiles = [] for label, regions in rousset_labels.items(): outlabel = os.path.join(outdir, '%s.rousset_%s.label' % (hemi, label)) tmpregions = [ os.path.join(labeldir, '%s.%s.label' % (hemi, x)) for x in regions ] if len(regions) == 1: bg.copy_file(tmpregions[0], outlabel) else: generate_roilabels(tmpregions, outlabel) labelfiles.append(outlabel) return labelfiles
def main(infile, param_file, param_source, thresh, outdir=None): if len(infile) > 1: # input is list, need to merge if outdir is None: outdir, _ = os.path.split(infile[0]) qadir, exists = make_qa_dir(outdir) if exists: print '%s exists, remove to re-run'%qadir return None merged = make_4d_nibabel(infile,outdir=qadir) else: merged = infile[0] if outdir is None: outdir, _ = os.path.split(merged) qadir, exists = make_qa_dir(outdir) if exists: print '%s exists, remove to re-run'%qadir return None param_file = bg.copy_file(param_file, qadir) artout = run_artdetect(merged, param_file, thresh, param_source) vox_outliers = artout.outputs.outlier_files statd = json.load(open(artout.outputs.statistic_files)) mot = statd[1]['motion_outliers'] intensity = statd[1]['intensity_outliers'] if mot > 0: try: tmp = np.loadtxt(artout.outputs.outlier_files)[:mot] except: tmp = np.loadtxt(artout.outputs.outlier_files) tmp.tofile(os.path.join(qadir,'bad_movement_frames.txt'), sep='\n') np.array([mot,intensity]).tofile(os.path.join(qadir, 'motion_intensity_outliers'), sep = '\n') print 'QA written to %s'%(qadir)
def main(infile, param_file, param_source, thresh, outdir=None): if len(infile) > 1: # input is list, need to merge if outdir is None: outdir, _ = os.path.split(infile[0]) qadir, exists = make_qa_dir(outdir) if exists: print '%s exists, remove to re-run' % qadir return None merged = make_4d_nibabel(infile, outdir=qadir) else: merged = infile[0] if outdir is None: outdir, _ = os.path.split(merged) qadir, exists = make_qa_dir(outdir) if exists: print '%s exists, remove to re-run' % qadir return None param_file = bg.copy_file(param_file, qadir) artout = run_artdetect(merged, param_file, thresh, param_source) vox_outliers = artout.outputs.outlier_files statd = json.load(open(artout.outputs.statistic_files)) mot = statd[1]['motion_outliers'] intensity = statd[1]['intensity_outliers'] if mot > 0: try: tmp = np.loadtxt(artout.outputs.outlier_files)[:mot] except: tmp = np.loadtxt(artout.outputs.outlier_files) tmp.tofile(os.path.join(qadir, 'bad_movement_frames.txt'), sep='\n') np.array([mot, intensity]).tofile(os.path.join(qadir, 'motion_intensity_outliers'), sep='\n') print 'QA written to %s' % (qadir)
dvrdir = os.path.join(pth, "dvr") if not os.path.isdir(dvrdir): logging.error("%s missing. skipping" % (dvrdir)) continue pvcdir, exists = bg.make_dir(dvrdir, "pvc_rousset") if exists: logging.error("%s exists, remove to re-run" % (pvcdir)) continue # get dvr globstr = "%s/DVR-%s*nii*" % (dvrdir, subid) dvr = pp.find_single_file(globstr) if dvr is None: 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()
mean20 = pp.find_single_file(globstr) if mean20 is None: logging.error('%s not found. skipping' % globstr) shutil.rmtree(warpdir) continue mean20 = bg.unzip_file(mean20) # brainmask globstr = os.path.join(anatdir, 'brainmask.nii*') brainmask = pp.find_single_file(globstr) if brainmask is None: logging.error('%s not found. skipping' % globstr) shutil.rmtree(warpdir) continue brainmask = bg.unzip_file(brainmask) # copy to warp dir cmean20 = bg.copy_file(mean20, warpdir) cdvr = bg.copy_file(dvr, warpdir) cbm = bg.copy_file(brainmask, warpdir) # coreg pet to brainmask logging.info('Run coreg') # cast everything to string cbm = str(cbm) cmean20 = str(cmean20) cdvr = str(cdvr) corgout = pp.simple_coregister(cbm, cmean20, other=cdvr) if not corgout.runtime.returncode == 0: logging.error('coreg pet to mri failed %s' % subid) shutil.rmtree(warpdir) continue rcmean20 = corgout.outputs.coregistered_source rdvr = corgout.outputs.coregistered_files
# logging.info('Coreg %s'%(subid)) coregdir, exists = bg.make_dir(pth, 'coreg') if exists: logging.warning('%s exists, remove to rerun'%(coregdir)) continue # copy brainmask, aparc_aseg, cerebellum to coreg dir basedir, _ = os.path.split(pth) # brainmask globstr = os.path.join(basedir, 'anatomy', 'brainmask.nii*') brainmask = pp.find_single_file(globstr) if brainmask is None: logging.error('%s not found. skipping'%globstr) shutil.rmtree(coregdir) continue cbrainmask = bg.copy_file(brainmask, coregdir) cbrainmask = bg.unzip_file(cbrainmask) # aparc aseg globstr = os.path.join(basedir, 'anatomy', '*aparc_aseg.nii*') aparc = pp.find_single_file(globstr) if aparc is None: logging.error('%s not found. skipping'%globstr) shutil.rmtree(coregdir) continue caparc = bg.copy_file(aparc, coregdir) caparc = bg.unzip_file(caparc) # cerebellum globstr = os.path.join(pth, 'ref_region', 'grey_cerebellum.nii*') cere = pp.find_single_file(globstr) if cere is None: logging.error('%s not found. skipping'%globstr)
dvrdir = os.path.join(pth, 'dvr') if not os.path.isdir(dvrdir): logging.error('%s missing. skipping' % (dvrdir)) continue pvcdir, exists = bg.make_dir(dvrdir, 'pvc_metzler') if exists: logging.error('%s exists, remove to re-run' % (pvcdir)) continue # get dvr globstr = '%s/DVR-%s*nii*' % (dvrdir, subid) dvr = pp.find_single_file(globstr) if dvr is None: 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 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)
elif rlgnout.runtime.returncode is not 0: logging.warning("Failed to realign %s" % subid) continue else: tmprealigned = rlgnout.outputs.realigned_files tmpmean = rlgnout.outputs.mean_image tmpparameterfile = rlgnout.outputs.realignment_parameters logging.info("realigned %s" % subid) # make final mean image meanimg = pp.make_summed_image(tmprealigned) # move data back to main directory nifti_dir, _ = os.path.split(nifti[0]) movedmean = bg.copy_file(meanimg, nifti_dir) # QA if not hasqa: logging.info("qa %s" % subid) qa.plot_movement(tmpparameterfile, subid) # get rid of NAN in files no_nanfiles = pp.clean_nan(tmprealigned) # make 4d volume to visualize movement img4d = qa.make_4d_nibabel(no_nanfiles) bg.zip_files(tmprealigned) # save qa image # qa.save_qa_img(img4d) qa.plot_movement(tmpparameterfile, subid) qa.calc_robust_median_diff(img4d) qa.screen_pet(img4d)
sumfdg = pp.find_single_file(globstr) if sumfdg is None: logging.error('%s not found. skipping'%globstr) shutil.rmtree(warpdir) continue sumfdg = bg.unzip_file(sumfdg) # brainmask globstr = os.path.join(anatdir, 'brainmask.nii*') brainmask = pp.find_single_file(globstr) if brainmask is None: logging.error('%s not found. skipping'%globstr) shutil.rmtree(warpdir) continue brainmask = bg.unzip_file(brainmask) # copy to warp dir csumfdg = bg.copy_file(sumfdg, warpdir) cpnfdg = bg.copy_file(pnfdg, warpdir) cbm = bg.copy_file(brainmask, warpdir) # coreg pet to brainmask logging.info('Run coreg') # cast everything to string cbm = str(cbm) csumfdg = str(csumfdg) cpnfdg = str(cpnfdg) corgout = pp.simple_coregister(cbm, csumfdg, other=cpnfdg) if not corgout.runtime.returncode == 0: logging.error('coreg pet to mri failed %s'%subid) shutil.rmtree(warpdir) continue rcsumfdg = corgout.outputs.coregistered_source rpnfdg = corgout.outputs.coregistered_files
# logging.info('Coreg %s' % (subid)) coregdir, exists = bg.make_dir(pth, 'coreg') if exists: logging.warning('%s exists, remove to rerun' % (coregdir)) continue # copy brainmask, aparc_aseg, cerebellum to coreg dir basedir, _ = os.path.split(pth) # brainmask globstr = os.path.join(basedir, 'anatomy', 'brainmask.nii*') brainmask = pp.find_single_file(globstr) if brainmask is None: logging.error('%s not found. skipping' % globstr) shutil.rmtree(coregdir) continue cbrainmask = bg.copy_file(brainmask, coregdir) cbrainmask = bg.unzip_file(cbrainmask) # aparc aseg globstr = os.path.join(basedir, 'anatomy', '*aparc_aseg.nii*') aparc = pp.find_single_file(globstr) if aparc is None: logging.error('%s not found. skipping' % globstr) shutil.rmtree(coregdir) continue caparc = bg.copy_file(aparc, coregdir) caparc = bg.unzip_file(caparc) # cerebellum globstr = os.path.join(pth, 'ref_region', 'grey_cerebellum.nii*') cere = pp.find_single_file(globstr) if cere is None: logging.error('%s not found. skipping' % globstr)
### XXXXXXXXXXXXXXXXX ## set_up_dir outdirs = pp.set_up_dir(root, subid, tracer) ## set up MRI brainmask = os.path.join(outdirs['anatomydir'][0], 'brainmask.nii') fsmri = pp.find_single_file( os.path.join(mridir, subid, 'mri/brainmask.mgz')) if os.path.isfile(brainmask): logging.warning('%s has existing anatomy,'\ 'skipping'%(brainmask)) elif fsmri is None: logging.error('NO MRI: %s' % (fsmri)) else: fsmri = bg.copy_file(fsmri, outdirs['anatomydir'][0]) brainmask = bg.convert(fsmri, brainmask) bg.remove_files([fsmri]) # copy aseg+aparc aparcnii = os.path.join(outdirs['anatomydir'][0], '%s_aparc_aseg.nii.gz' % subid) aparc = pp.find_single_file( os.path.join(mridir, subid, 'mri/aparc+aseg.mgz')) if os.path.isfile(aparcnii): logging.warning('%s has existing anatomy,'\ 'skipping'%(aparcnii)) elif aparc is None: logging.error('NO APARC ASEG: %s' % aparc) else: aparc = bg.copy_file(aparc, outdirs['anatomydir'][0])
continue coregdir,exists = bg.make_dir('%s/fdg'%s, 'pet2mri') if exists: continue ## find brainmask globstr = os.path.join(s, 'anatomy','brainmask.nii') brainmask = pp.find_single_file(globstr) ## find sum globstr = os.path.join(s, 'fdg','sum_r*.nii') sum = pp.find_single_file(globstr) if brainmask is None or sum is None: logging.error('pet2mri sum: %s brainmask: %s'%(sum, brainmask)) continue ## coreg pet 2 brainmask cpons = bg.copy_file(ponsnormed, coregdir) csum = bg.copy_file(sum, coregdir) corg_out = pp.simple_coregister(str(brainmask), str(csum), other=str(cpons)) if not corg_out.runtime.returncode == 0: logging.error(corg_out.runtime.stderr) continue rpons = corg_out.outputs.coregistered_files # copy ponsnormed to freesurfer subjects petdir cponsnormed = bg.copy_file(rpons, petdir) globstr = os.path.join(fsdir, 'mri', 'T1.mgz') t1 = pp.find_single_file(globstr) if t1 is None: logging.error('%s not found'%globstr)
elif rlgnout.runtime.returncode is not 0: logging.warning('Failed to realign %s' % subid) continue else: tmprealigned = rlgnout.outputs.realigned_files tmpmean = rlgnout.outputs.mean_image tmpparameterfile = rlgnout.outputs.realignment_parameters logging.info('realigned %s' % subid) # make final mean image meanimg = pp.make_summed_image(tmprealigned) # move data back to main directory nifti_dir, _ = os.path.split(nifti[0]) movedmean = bg.copy_file(meanimg, nifti_dir) #QA if not hasqa: logging.info('qa %s' % subid) qa.plot_movement(tmpparameterfile, subid) # get rid of NAN in files no_nanfiles = pp.clean_nan(tmprealigned) #make 4d volume to visualize movement img4d = qa.make_4d_nibabel(no_nanfiles) bg.zip_files(tmprealigned) #save qa image #qa.save_qa_img(img4d) qa.plot_movement(tmpparameterfile, subid) qa.calc_robust_median_diff(img4d) qa.screen_pet(img4d)
coregdir, exists = bg.make_dir("%s/pib" % s, "pet2mri") if exists: logging.warning("remove %s to rerun?" % coregdir) continue ## find brainmask globstr = os.path.join(s, "anatomy", "brainmask.nii") brainmask = pp.find_single_file(globstr) ## find sum globstr = os.path.join(s, "pib", "realign_QA", "mean20min*.nii") sum = pp.find_single_file(globstr) if brainmask is None or sum is None: logging.error("pet2mri sum: %s brainmask: %s" % (sum, brainmask)) continue # move dvr and sum to coregdir, unzip if necessary cdvr = bg.copy_file(dvr, coregdir) csum = bg.copy_file(sum, coregdir) cdvr = bg.unzip_file(cdvr) csum = bg.unzip_file(csum) ## coreg pet 2 brainmask corg_out = pp.simple_coregister(str(brainmask), str(csum), other=str(cdvr)) if not corg_out.runtime.returncode == 0: logging.error(corg_out.runtime.traceback) continue rdvr = corg_out.outputs.coregistered_files # copy dvr to freesurfer subjects petdir cdvr = bg.copy_file(rdvr, petdir) globstr = os.path.join(fsdir, "mri", "T1.mgz") t1 = pp.find_single_file(globstr) if t1 is None: logging.error("%s not found" % globstr)
globstr = '%s/nonan-ponsnormed*fdg**nii*'%(pth) dat = pp.find_single_file(globstr) if dat is None: logging.error('%s missing, skipping'%(globstr)) continue dat = bg.unzip_file(dat)# in case zipped # get strokemask globstr = '%s/rfs_cortical_mask_tu.nii*'%roidir stroke_mask = pp.find_single_file(globstr) if stroke_mask is None: globstr = '%s/anatomy/fs_cortical_mask_tu.nii*'%sub strokem = pp.find_single_file(globstr) if strokem is None: logging.error('%s missing, skipping'%(globstr)) continue cstrokem = bg.copy_file(strokem, roidir) globstr = '%s/coreg_mri2fdg/*.mat*'%pth xfm = pp.find_single_file(globstr) if xfm is None: logging.error('NO transform for %s'%globstr) continue stroke_mask = transform_vol(cstrokem, xfm, dat) # get raparc if exists: #roidir exists so raparc_aseg should also globstr = '%s/rB*aparc_aseg.nii*'%(roidir) raparc = pp.find_single_file(globstr) if raparc is None: exists = False if not exists: # check coreg directory globstr = '%s/coreg_mri2fdg/rB*aparc_aseg.nii*'%(roidir) raparc = pp.find_single_file(globstr)
mean20 = pp.find_single_file(globstr) if mean20 is None: logging.error('%s not found. skipping'%globstr) shutil.rmtree(warpdir) continue mean20 = bg.unzip_file(mean20) # brainmask globstr = os.path.join(anatdir, 'brainmask.nii*') brainmask = pp.find_single_file(globstr) if brainmask is None: logging.error('%s not found. skipping'%globstr) shutil.rmtree(warpdir) continue brainmask = bg.unzip_file(brainmask) # copy to warp dir cmean20 = bg.copy_file(mean20, warpdir) cdvr = bg.copy_file(dvr, warpdir) cbm = bg.copy_file(brainmask, warpdir) # coreg pet to brainmask logging.info('Run coreg') # cast everything to string cbm = str(cbm) cmean20 = str(cmean20) cdvr = str(cdvr) corgout = pp.simple_coregister(cbm, cmean20, other=cdvr) if not corgout.runtime.returncode == 0: logging.error('coreg pet to mri failed %s'%subid) shutil.rmtree(warpdir) continue rcmean20 = corgout.outputs.coregistered_source rdvr = corgout.outputs.coregistered_files
logging.info('%s' % subid) # subjects tracer specific path pth = os.path.join(sub, tracer.lower()) pvcdir, exists = bg.make_dir(dvrdir, 'pvc_rousset') if exists: logging.error('%s exists, remove to re-run' % (pvcdir)) continue # get pons normed 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 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()
logging.info('%s'%subid) # subjects tracer specific path pth = os.path.join(sub, tracer.lower()) pvcdir, exists = bg.make_dir(dvrdir, 'pvc_rousset') if exists: logging.error('%s exists, remove to re-run'%(pvcdir)) continue # get pons normed 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 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()
# find roi directory roidir, exists = bg.make_dir(pth, dirname='stroke_masked_roi_data') if exists: globstr = '%s/rfs_cortical_mask_tu.nii*'%roidir stroke_mask = pp.find_single_file(globstr) if stroke_mask is None: exists = False if not exists: globstr = '%s/anatomy/fs_cortical_mask_tu.nii*'%sub strokem = pp.find_single_file(globstr) if strokem is None: logging.error('%s missing, skipping'%(globstr)) continue cstrokem = bg.copy_file(strokem, roidir) globstr = '%s/coreg/*.mat*'%pth xfm = pp.find_single_file(globstr) if xfm is None: logging.error('NO transform for %s'%globstr) continue stroke_mask = transform_vol(cstrokem, xfm, dat) # get raparc globstr = '%s/coreg/rB*aparc_aseg.nii*'%(pth) raparc = pp.find_single_file(globstr) if raparc is None: logging.error('Missing %s, SKIPPING'%globstr) continue data = pp.nibabel.load(dat).get_data() meand = pp.mean_from_labels(roid, raparc,
globstr = '%s/nonan-ponsnormed*fdg**nii*' % (pth) dat = pp.find_single_file(globstr) if dat is None: logging.error('%s missing, skipping' % (globstr)) continue dat = bg.unzip_file(dat) # in case zipped # get strokemask globstr = '%s/rfs_cortical_mask_tu.nii*' % roidir stroke_mask = pp.find_single_file(globstr) if stroke_mask is None: globstr = '%s/anatomy/fs_cortical_mask_tu.nii*' % sub strokem = pp.find_single_file(globstr) if strokem is None: logging.error('%s missing, skipping' % (globstr)) continue cstrokem = bg.copy_file(strokem, roidir) globstr = '%s/coreg_mri2fdg/*.mat*' % pth xfm = pp.find_single_file(globstr) if xfm is None: logging.error('NO transform for %s' % globstr) continue stroke_mask = transform_vol(cstrokem, xfm, dat) # get raparc if exists: #roidir exists so raparc_aseg should also globstr = '%s/rB*aparc_aseg.nii*' % (roidir) raparc = pp.find_single_file(globstr) if raparc is None: exists = False if not exists: # check coreg directory globstr = '%s/coreg_mri2fdg/rB*aparc_aseg.nii*' % (roidir) raparc = pp.find_single_file(globstr)
#if not exists: # check coreg directory globstr = '%s/coreg_mri2fdg/rB*aparc_aseg.nii*'%(pth) raparc = pp.find_single_file(globstr) if raparc is None: exists = False else: exists = True if not exists: #last chance # find aparcaseg globstr = '%s/anatomy/*aparc_aseg.nii*'%sub aparc = glob(globstr) if not len(aparc)>0: logging.error('NO aparcaseg for %s'%globstr) continue aparc = aparc[0] caparc = bg.copy_file(aparc, roidir) caparc = bg.unzip_file(caparc)# in case zipped globstr = '%s/coreg_mri2fdg/*.mat*'%pth xfm = pp.find_single_file(globstr) if xfm is None: logging.error('NO transform for %s'%globstr) continue cxfm = bg.copy_file(xfm, roidir) cxfm = bg.unzip_file(cxfm)# in case zipped pp.apply_transform_onefile(cxfm, caparc) pp.reslice(dat, caparc) raparc = pp.prefix_filename(caparc, prefix='r') data = pp.nibabel.load(dat).get_data() meand = pp.mean_from_labels(roid, raparc, data)
#if not exists: # check coreg directory globstr = '%s/coreg_mri2fdg/rB*aparc_aseg.nii*' % (pth) raparc = pp.find_single_file(globstr) if raparc is None: exists = False else: exists = True if not exists: #last chance # find aparcaseg globstr = '%s/anatomy/*aparc_aseg.nii*' % sub aparc = glob(globstr) if not len(aparc) > 0: logging.error('NO aparcaseg for %s' % globstr) continue aparc = aparc[0] caparc = bg.copy_file(aparc, roidir) caparc = bg.unzip_file(caparc) # in case zipped globstr = '%s/coreg_mri2fdg/*.mat*' % pth xfm = pp.find_single_file(globstr) if xfm is None: logging.error('NO transform for %s' % globstr) continue cxfm = bg.copy_file(xfm, roidir) cxfm = bg.unzip_file(cxfm) # in case zipped pp.apply_transform_onefile(cxfm, caparc) pp.reslice(dat, caparc) raparc = pp.prefix_filename(caparc, prefix='r') data = pp.nibabel.load(dat).get_data() meand = pp.mean_from_labels(roid, raparc, data) alld[subid] = meand
continue # find roi directory roidir, exists = bg.make_dir(pth, dirname='stroke_masked_roi_data') if exists: globstr = '%s/rfs_cortical_mask_tu.nii*' % roidir stroke_mask = pp.find_single_file(globstr) if stroke_mask is None: exists = False if not exists: globstr = '%s/anatomy/fs_cortical_mask_tu.nii*' % sub strokem = pp.find_single_file(globstr) if strokem is None: logging.error('%s missing, skipping' % (globstr)) continue cstrokem = bg.copy_file(strokem, roidir) globstr = '%s/coreg/*.mat*' % pth xfm = pp.find_single_file(globstr) if xfm is None: logging.error('NO transform for %s' % globstr) continue stroke_mask = transform_vol(cstrokem, xfm, dat) # get raparc globstr = '%s/coreg/rB*aparc_aseg.nii*' % (pth) raparc = pp.find_single_file(globstr) if raparc is None: logging.error('Missing %s, SKIPPING' % globstr) continue data = pp.nibabel.load(dat).get_data() meand = pp.mean_from_labels(roid, raparc, data, othermask=stroke_mask)
subid = item logging.info(subid) ### XXXXXXXXXXXXXXXXX ## set_up_dir outdirs = pp.set_up_dir(root, subid, tracer) ## set up MRI brainmask = os.path.join(outdirs["anatomydir"][0], "brainmask.nii") fsmri = pp.find_single_file(os.path.join(mridir, subid, "mri/brainmask.mgz")) if os.path.isfile(brainmask): logging.warning("%s has existing anatomy," "skipping" % (brainmask)) elif fsmri is None: logging.error("%s NO MRI: %s" % (subid, fsmri)) else: fsmri = bg.copy_file(fsmri, outdirs["anatomydir"][0]) brainmask = bg.convert(fsmri, brainmask) bg.remove_files([fsmri]) # copy aseg+aparc aparcnii = os.path.join(outdirs["anatomydir"][0], "%s_aparc_aseg.nii.gz" % subid) aparc = pp.find_single_file(os.path.join(mridir, subid, "mri/aparc+aseg.mgz")) if os.path.isfile(aparcnii): logging.warning("%s has existing anatomy," "skipping" % (aparcnii)) elif aparc is None: logging.error("%s NO APARC ASEG: %s" % (subid, aparc)) else: aparc = bg.copy_file(aparc, outdirs["anatomydir"][0]) aparcnii = bg.convert(aparc, aparcnii) bg.remove_files([aparc]) # make pons
sumfdg = pp.find_single_file(globstr) if sumfdg is None: logging.error('%s not found. skipping' % globstr) shutil.rmtree(warpdir) continue sumfdg = bg.unzip_file(sumfdg) # brainmask globstr = os.path.join(anatdir, 'brainmask.nii*') brainmask = pp.find_single_file(globstr) if brainmask is None: logging.error('%s not found. skipping' % globstr) shutil.rmtree(warpdir) continue brainmask = bg.unzip_file(brainmask) # copy to warp dir csumfdg = bg.copy_file(sumfdg, warpdir) cpnfdg = bg.copy_file(pnfdg, warpdir) cbm = bg.copy_file(brainmask, warpdir) # coreg pet to brainmask logging.info('Run coreg') # cast everything to string cbm = str(cbm) csumfdg = str(csumfdg) cpnfdg = str(cpnfdg) corgout = pp.simple_coregister(cbm, csumfdg, other=cpnfdg) if not corgout.runtime.returncode == 0: logging.error('coreg pet to mri failed %s' % subid) shutil.rmtree(warpdir) continue rcsumfdg = corgout.outputs.coregistered_source rpnfdg = corgout.outputs.coregistered_files
continue coregdir, exists = bg.make_dir('%s/fdg' % s, 'pet2mri') if exists: continue ## find brainmask globstr = os.path.join(s, 'anatomy', 'brainmask.nii') brainmask = pp.find_single_file(globstr) ## find sum globstr = os.path.join(s, 'fdg', 'sum_r*.nii') sum = pp.find_single_file(globstr) if brainmask is None or sum is None: logging.error('pet2mri sum: %s brainmask: %s' % (sum, brainmask)) continue ## coreg pet 2 brainmask cpons = bg.copy_file(ponsnormed, coregdir) csum = bg.copy_file(sum, coregdir) corg_out = pp.simple_coregister(str(brainmask), str(csum), other=str(cpons)) if not corg_out.runtime.returncode == 0: logging.error(corg_out.runtime.stderr) continue rpons = corg_out.outputs.coregistered_files # copy ponsnormed to freesurfer subjects petdir cponsnormed = bg.copy_file(rpons, petdir) globstr = os.path.join(fsdir, 'mri', 'T1.mgz') t1 = pp.find_single_file(globstr) if t1 is None: logging.error('%s not found' % globstr)
coregdir, exists = bg.make_dir('%s/pib' % s, 'pet2mri') if exists: logging.warning('remove %s to rerun?' % coregdir) continue ## find brainmask globstr = os.path.join(s, 'anatomy', 'brainmask.nii') brainmask = pp.find_single_file(globstr) ## find sum globstr = os.path.join(s, 'pib', 'realign_QA', 'mean20min*.nii') sum = pp.find_single_file(globstr) if brainmask is None or sum is None: logging.error('pet2mri sum: %s brainmask: %s' % (sum, brainmask)) continue # move dvr and sum to coregdir, unzip if necessary cdvr = bg.copy_file(dvr, coregdir) csum = bg.copy_file(sum, coregdir) cdvr = bg.unzip_file(cdvr) csum = bg.unzip_file(csum) ## coreg pet 2 brainmask corg_out = pp.simple_coregister(str(brainmask), str(csum), other=str(cdvr)) if not corg_out.runtime.returncode == 0: logging.error(corg_out.runtime.traceback) continue rdvr = corg_out.outputs.coregistered_files # copy dvr to freesurfer subjects petdir cdvr = bg.copy_file(rdvr, petdir) globstr = os.path.join(fsdir, 'mri', 'T1.mgz') t1 = pp.find_single_file(globstr)