Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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    
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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
Exemplo n.º 6
0
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
Exemplo n.º 7
0
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)
Exemplo n.º 8
0
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)
Exemplo n.º 9
0
 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
Exemplo n.º 11
0
 #
 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)
Exemplo n.º 12
0
 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)
Exemplo n.º 13
0
        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)
Exemplo n.º 14
0
 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
Exemplo n.º 15
0
 #
 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)
Exemplo n.º 16
0
        ### 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])
Exemplo n.º 17
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)
Exemplo n.º 18
0
        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)
Exemplo n.º 19
0
        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)
Exemplo n.º 21
0
 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
Exemplo n.º 22
0
        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()
Exemplo n.º 23
0
 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,
Exemplo n.º 25
0
 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
Exemplo n.º 30
0
 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
Exemplo n.º 31
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)
Exemplo n.º 32
0
        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)