示例#1
0
def convert_darpa_ct(args):
    bads, goods = [], []
    if args.print_only:
        args.ignore_missing = True
    args.subject = pu.decode_subjects(args.subject)
    for subject in args.subject:
        local_ct_fol = utils.make_dir(op.join(pu.SUBJECTS_DIR, subject, 'ct'))
        ct_fname = op.join(local_ct_fol, 'ct', 'ct_org.mgz')
        if op.isfile(ct_fname) and not args.overwrite:
            goods.append(subject)
            continue
        darpa_subject = subject[:2].upper() + subject[2:]
        files = glob.glob(op.join(
            f'/homes/5/npeled/space1/Angelique/recon-alls/{darpa_subject}/',
            '**', 'ct.*'),
                          recursive=True)
        if len(files) > 0:
            for fname in files:
                output_fname = op.join(local_ct_fol,
                                       utils.namebase_with_ext(fname))
                print('Coping {} to {}'.format(fname, output_fname))
                utils.copy_file(fname, output_fname)
            goods.append(subject)
            continue
        fols = glob.glob(
            op.join('/space/huygens/1/users/kara', f'{darpa_subject}_CT*'))
        ct_raw_input_fol = fols[0] if len(fols) == 1 else ''
        if not op.isdir(ct_raw_input_fol):
            fols = glob.glob(op.join(
                f'/homes/5/npeled/space1/Angelique/recon-alls/{darpa_subject}/',
                '**', f'{darpa_subject}_CT*'),
                             recursive=True)
            ct_raw_input_fol = fols[0] if len(fols) == 1 else ''
        if not op.isdir(ct_raw_input_fol):
            bads.append(subject)
            continue
        args = ct.read_cmd_args(
            utils.Bag(subject=subject,
                      function='convert_ct_to_mgz',
                      ct_raw_input_fol=ct_raw_input_fol,
                      print_only=args.print_only,
                      ignore_missing=args.ignore_missing,
                      overwrite=args.overwrite,
                      ask_before=args.ask_before))
        ret = pu.run_on_subjects(args, ct.main)
        if ret:
            goods.append(subject)
        else:
            bads.append(subject)
    print('Good subjects:\n {}'.format(goods))
    print('Bad subjects:\n {}'.format(bads))
示例#2
0
文件: fMRI.py 项目: keshava/mmvt
def project_all_fmri_files(args):
    import nibabel as nib
    import numpy as np
    subjects = pu.decode_subjects(args.subject)
    for subject in subjects:
        for fmri_fname in glob.glob(op.join(FMRI_DIR, subject, 'volume', '*.mgz')):
            # fmri_fname = fu.mri_convert_to(fmri_fname, 'mgz')
            fmri.direct_project_volume_to_surf(subject, fmri_fname, False)
            data = nib.load(fmri_fname).get_data()
            print('{} min max: '.format(fmri_fname))
            print(np.min(data), np.max(data))
            # if not fmri.surf_files_exist(subject, fmri_fname):
            #     fmri.project_volume_to_surface(subject, fmri_fname)
            surf_files = fmri.get_surf_files(subject, fmri_fname)
            print('{} min max: '.format(utils.namebase(fmri_fname)))
            print(fmri.calc_surf_files_min_max(surf_files))
示例#3
0
def get_subjects_files(args):
    ''' -f get_subjects_files -s "file:/homes/5/npeled/space1/Documents/memory_task/subjects.txt" '''
    subjects = pu.decode_subjects(args.subject)
    for subject in subjects:
        subject_fol = op.join(fmri.FMRI_DIR, subject)
        # data_fol = '/cluster/neuromind/douw/scans/adults/{}/surf'.format(subject)
        data_fol = '/cluster/neuromind/douw/scans/adults/{}/bold'.format(subject)
        # template = '*.{}_bld*_rest_reorient_skip_faln_mc_g1000000000_bpss_resid_fsaverage6_sm6.nii.gz'.format(subject)
        template = '{}_*_rest.nii'.format(subject)
        files = glob.glob(op.join(data_fol, '**', template), recursive=True)
        # if len(files) % 2 == 0:
        if len(files) >= 1:
            utils.make_dir(subject_fol)
            for fname in files:
                # hemi = 'rh' if 'rh' in fname.split(op.sep)[-1] else 'lh'
                # output_fname = op.join(subject_fol, 'rest.sm6.fsaverage6.{}.mgz'.format(hemi))
                output_fname = op.join(subject_fol, 'rest.nii')
                if not op.isfile(output_fname):
                    shutil.copy(fname, output_fname)
                else:
                    print('{} already exist!'.format(output_fname))
        else:
            print("Couldn't find the files for {}!".format(subject))
def get_all_subjects(remote_subject_template):
    subjects = pu.decode_subjects(['MG*'], remote_subject_template)
    return subjects
示例#5
0
    parser.add_argument('--meg_dir', required=False, default=meg_dir)
    fmri_dirs = ['/autofs/space/lilli_004/users/DARPA-{task}/', '/home/npeled/fmri/{task}']
    fmri_dirs = [d for d in fmri_dirs if op.isdir(d.format(task='MSIT'))]
    if len(fmri_dirs) == 0:
        print('No fMRI folder!')
        fmri_dir = ''
    else:
        fmri_dir = fmri_dirs[0]
    parser.add_argument('--fmri_dir', required=False, default=fmri_dir.format(task='MSIT'))

    remote_subject_dirs = ['/autofs/space/lilli_001/users/DARPA-Recons/',
                           '/home/npeled/subjects']
    remote_subject_dir = [op.join(d, '{subject}') for d in remote_subject_dirs if op.isdir(d)][0]
    parser.add_argument('--remote_subject_dir', required=False, default=remote_subject_dir)
    parser.add_argument('--remote_meg_dir', required=False,
                        default='/autofs/space/lilli_003/users/DARPA-TRANSFER/meg')
    parser.add_argument('--epo_template', required=False, default='{subject}_{task}_meg_Onset_ar-epo.fif')
    parser.add_argument('--raw_template', required=False, default='{subject}_{task}_meg_ica-raw.fif')
    parser.add_argument('--inv_template', required=False, default='{subject}_{task}_Onset-inv.fif')
    parser.add_argument('--morph_target', required=False, default='fsaverage5')
    parser.add_argument('--overwrite', required=False, default=False, type=au.is_true)
    parser.add_argument('--ignore', required=False, default=False, type=au.is_true)
    parser.add_argument('--n_jobs', help='cpu num', required=False, default=-1)
    args = utils.Bag(au.parse_parser(parser))
    args.subject = pu.decode_subjects(args.subject, remote_subject_dir=args.remote_subject_dir)
    args.n_jobs = utils.get_n_jobs(args.n_jobs)
    if args.mri_subject == '':
        args.mri_subject = args.subject
    locals()[args.function](args)
    print('Done!')