Пример #1
0
def calc_seed_corr(args):
    args = con.read_cmd_args(dict(
        function='calc_seed_corr',
        subject=args.subject, atlas=args.atlas,
        identifier='freesurfer', labels_regex='precentral-rh',#''post*cingulate*rh',
        seed_label_name='post_cingulate_rh', seed_label_r=5, overwrite_seed_data=True,
        n_jobs=args.n_jobs
    ))
    con.call_main(args)
Пример #2
0
def load_connectivity_results(args):
    # from src.utils import matlab_utils as matu
    # mat_file = matu.load_mat_to_bag(op.join(MMVT_DIR, args.subject[0], 'connectivity', 'corr.mat'))
    # conn = mat_file.mAdjMat
    # labels = matu.matlab_cell_str_to_list(mat_file.mLabels)
    args = con.read_cmd_args(dict(
        function='calc_rois_matlab_connectivity',
        subject=args.subject, atlas=args.atlas,
        mat_fname=op.join(MMVT_DIR, args.subject[0], 'connectivity', 'corr.mat'),
        mat_field='mAdjMat', sorted_labels_names_field='mLabelsCort',
        n_jobs=args.n_jobs
    ))
    con.call_main(args)
Пример #3
0
def calc_meg_connectivity(args):
    args = connectivity.read_cmd_args(
        utils.Bag(
            subject=args.subject,
            atlas='laus125',
            function='calc_lables_connectivity',
            connectivity_modality='meg',
            connectivity_method='pli',
            windows_num=1,
            # windows_length=500,
            # windows_shift=100,
            recalc_connectivity=True,
            n_jobs=args.n_jobs))
    connectivity.call_main(args)
Пример #4
0
def calc_fmri_static_connectivity(args):
    args = con.read_cmd_args(
        dict(
            subject=args.subject,
            atlas='laus125',  # 'yao17'
            function='calc_lables_connectivity',
            connectivity_modality='fmri',
            connectivity_method='corr',
            labels_extract_mode='mean',
            identifier='',  #'freesurfer',#'hesheng', #''linda',#
            save_mmvt_connectivity=False,
            calc_subs_connectivity=False,
            recalc_connectivity=True,
            n_jobs=args.n_jobs))
    con.call_main(args)
Пример #5
0
def analyse_connectivity(subject,
                         connectivity_method,
                         graph_func,
                         file_name,
                         atlas,
                         n_jobs=4):
    bands = dict(theta=[4, 8],
                 alpha=[8, 15],
                 beta=[15, 30],
                 gamma=[30, 55],
                 high_gamma=[65, 120])
    conn_fol = op.join(MMVT_DIR, subject, 'connectivity')
    output_fol = utils.make_dir(op.join(conn_fol, file_name))
    for band_name, band_freqs in bands.items():
        output_files = [
            f.format(band_name) for f in [
                'meg_{}_laus125_mi_mean_flip_mean.npy', 'meg_{}_mi.npy',
                'meg_{}_mi.npz'
            ]
        ]
        files_exist = all(
            [op.isfile(op.join(output_fol, f)) for f in output_files])
        if not files_exist:
            print('calc_meg_connectivity: {}'.format(band_name))
            con_args = connectivity.read_cmd_args(
                utils.Bag(
                    subject=subject,
                    atlas=atlas,
                    function='calc_lables_connectivity',
                    connectivity_modality='meg',
                    connectivity_method=connectivity_method,
                    windows_length=500,
                    windows_shift=100,
                    identifier=band_name,
                    fmin=band_freqs[0],
                    fmax=band_freqs[1],
                    sfreq=2035,  # clin MEG
                    recalc_connectivity=True,
                    n_jobs=n_jobs))
            connectivity.call_main(con_args)
            for output_file_name in output_files:
                utils.move_file(op.join(conn_fol, output_file_name),
                                output_fol)

        con_name = 'meg_{}_mi'.format(band_name)
        analyze_graph(subject, file_name, con_name, graph_func, n_jobs)
        plot_graph_values(subject, file_name, con_name, graph_func)
Пример #6
0
def calc_connectivity(subject,
                      atlas,
                      connectivity_method,
                      files,
                      bands,
                      modality,
                      overwrite=False,
                      n_jobs=4):
    conn_fol = op.join(MMVT_DIR, subject, 'connectivity')
    now = time.time()
    for run, fif_fname in enumerate(files):
        utils.time_to_go(now, run, len(files), runs_num_to_print=1)
        file_name = utils.namebase(fif_fname)
        labels_data_name = 'labels_data_{}-epilepsy-{}-{}-{}_{}_mean_flip_{}.npz'.format(
            subject, 'dSPM', modality, file_name, atlas, '{hemi}')
        if not utils.both_hemi_files_exist(
                op.join(MMVT_DIR, subject, modality, labels_data_name)):
            print('labels data does not exist for {}!'.format(file_name))
        for band_name, band_freqs in bands.items():
            output_fname = op.join(
                conn_fol,
                '{}_{}_{}_{}.npy'.format(modality, file_name, band_name,
                                         connectivity_method))
            if op.isfile(output_fname) and not overwrite:
                print('{} {} connectivity for {} already exist'.format(
                    connectivity_method, band_name, file_name))
                continue
            print('calc_meg_connectivity: {}'.format(band_name))
            con_args = connectivity.read_cmd_args(
                utils.Bag(
                    subject=subject,
                    atlas=atlas,
                    function='calc_lables_connectivity',
                    connectivity_modality=modality,
                    connectivity_method=connectivity_method,
                    labels_data_name=labels_data_name,
                    windows_length=500,
                    windows_shift=100,
                    identifier='{}_{}'.format(file_name, band_name),
                    fmin=band_freqs[0],
                    fmax=band_freqs[1],
                    sfreq=2035,  # clin MEG
                    recalc_connectivity=False,
                    save_mmvt_connectivity=True,
                    threshold_percentile=80,
                    n_jobs=n_jobs))
            connectivity.call_main(con_args)
Пример #7
0
def calc_meg_gamma_connectivity(args):
    args = con.read_cmd_args(utils.Bag(
        subject=args.subject,
        atlas='laus125',
        function='calc_lables_connectivity',
        connectivity_modality='meg',
        connectivity_method='pli',
        windows_length=100,
        windows_shift=10,
        # sfreq=1000.0,
        fmin=30,
        fmax=55,
        recalc_connectivity=True,
        # max_windows_num=100,
        n_jobs=args.n_jobs
    ))
    con.call_main(args)
Пример #8
0
def calc_fmri_connectivity(args):
    '-s hc029 -a laus125 -f calc_lables_connectivity --connectivity_modality fmri connectivity_method=corr,cv--windows_length 20 --windows_shift 3'
    args = con.read_cmd_args(
        dict(
            subject=args.subject,
            atlas='laus125',
            function='calc_lables_connectivity',
            connectivity_modality='fmri',
            # connectivity_method='mi_vec,cv',
            connectivity_method='corr,cv',
            # labels_extract_mode='pca_2,pca_4,pca_8', #mean,pca,
            labels_extract_mode='mean',
            windows_length=34,  #20,
            windows_shift=4,  #3,
            save_mmvt_connectivity=False,
            calc_subs_connectivity=False,
            recalc_connectivity=True,
            n_jobs=args.n_jobs))
    con.call_main(args)
Пример #9
0
def analyze_rest_fmri(args):
    for subject in args.mri_subject:
        remote_rest_fol = get_fMRI_rest_fol(subject, args.remote_fmri_dir)
        local_rest_fname = convert_rest_dicoms_to_mgz(subject, remote_rest_fol)
        if not op.isfile(local_rest_fname):
            print('{}: Can\'t find {}!'.format(subject, local_rest_fname))
            continue
        args = fmri.read_cmd_args(
            dict(
                subject=subject,
                atlas=args.atlas,
                remote_subject_dir=args.remote_subject_dir,
                function='clean_4d_data',
                fmri_file_template=local_rest_fname,
            ))
        fmri.call_main(args)

        args = fmri.read_cmd_args(
            dict(subject=args.subject,
                 atlas=args.atlas,
                 function='analyze_4d_data',
                 fmri_file_template='rest.sm6.{subject}.{hemi}.mgz',
                 labels_extract_mode='mean',
                 overwrite_labels_data=False))
        fmri.call_main(args)

        args = connectivity.read_cmd_args(
            dict(subject=args.subject,
                 atlas=args.atlas,
                 function='calc_lables_connectivity',
                 connectivity_modality='fmri',
                 connectivity_method='corr',
                 labels_extract_mode='mean',
                 identifier='',
                 save_mmvt_connectivity=True,
                 calc_subs_connectivity=False,
                 recalc_connectivity=True,
                 n_jobs=args.n_jobs))
        connectivity.call_main(args)
Пример #10
0
def calc_meg_connectivity(args):
    bands = dict(theta=[4, 8], alpha=[8, 15], beta=[15, 30], gamma=[30, 55], high_gamma=[65, 120])
    for band_name, band_freqs in bands.items():
        print('calc_meg_connectivity: {}'.format(band_name))
        con_args = con.read_cmd_args(utils.Bag(
            subject=args.subject,
            atlas='laus125',
            function='calc_lables_connectivity',
            connectivity_modality='meg',
            connectivity_method='mi',
            windows_length=500,
            windows_shift=100,
            identifier=band_name,
            fmin=band_freqs[0],
            fmax=band_freqs[1],
            sfreq=2035, # clin MEG
            # recalc_connectivity=True,
            # max_windows_num=100,
            recalc_connectivity=True,
            n_jobs=args.n_jobs
        ))
        con.call_main(con_args)
Пример #11
0
def analyze_rest_fmri(gargs):
    good_subjects = []
    for subject in gargs.mri_subject:
        # remote_rest_fol = get_fMRI_rest_fol(subject, gargs.remote_fmri_dir)
        # print('{}: {}'.format(subject, remote_rest_fol))
        # if remote_rest_fol == '':
        #     continue
        # local_rest_fname = convert_rest_dicoms_to_mgz(subject, remote_rest_fol, overwrite=True)
        # if local_rest_fname == '':
        #     continue
        # if not op.isfile(local_rest_fname):
        #     print('{}: Can\'t find {}!'.format(subject, local_rest_fname))
        #     continue
        # args = fmri.read_cmd_args(dict(
        #     subject=subject,
        #     atlas=gargs.atlas,
        #     remote_subject_dir=gargs.remote_subject_dir,
        #     function='clean_4d_data',
        #     fmri_file_template=local_rest_fname,
        #     overwrite_4d_preproc=True
        # ))
        # flags = fmri.call_main(args)
        # if subject not in flags or not flags[subject]['clean_4d_data']:
        #     continue

        output_fname = op.join(MMVT_DIR, subject, 'connectivity',
                               'fmri_corr.npz')
        if op.isfile(output_fname):
            print('{} already exist!'.format(output_fname))
            good_subjects.append(subject)
            continue
        remote_fname = op.join(
            gargs.remote_fmri_rest_dir, subject, 'rest_001', '001',
            'fmcpr.siemens.sm6.{}.{}.nii.gz'.format(subject, '{hemi}'))
        if not utils.both_hemi_files_exist(remote_fname):
            print('Couldn\t find fMRI rest data for {} ({})'.format(
                subject, remote_fname))
            continue
        local_fmri_fol = utils.make_dir(op.join(FMRI_DIR, subject))
        local_fmri_template = op.join(local_fmri_fol,
                                      utils.namebase_with_ext(remote_fname))
        if utils.both_hemi_files_exist(local_fmri_template):
            print('{} al')
        for hemi in utils.HEMIS:
            local_fmri_fname = op.join(local_fmri_fol,
                                       local_fmri_template.format(hemi=hemi))
            if op.isfile(local_fmri_fname):
                os.remove(local_fmri_fname)
            utils.make_link(remote_fname.format(hemi=hemi), local_fmri_fname)

        args = fmri.read_cmd_args(
            dict(subject=subject,
                 atlas=gargs.atlas,
                 function='analyze_4d_data',
                 fmri_file_template=local_fmri_template,
                 labels_extract_mode='mean',
                 overwrite_labels_data=True))
        flags = fmri.call_main(args)
        if subject not in flags or not flags[subject]['analyze_4d_data']:
            continue

        args = connectivity.read_cmd_args(
            dict(
                subject=subject,
                atlas=gargs.atlas,
                function='calc_lables_connectivity',
                connectivity_modality='fmri',
                connectivity_method='corr',
                labels_extract_mode='mean',
                windows_length=34,  # tr = 3 -> 100s
                windows_shift=4,  # 12s
                save_mmvt_connectivity=True,
                calc_subs_connectivity=False,
                recalc_connectivity=True,
                n_jobs=gargs.n_jobs))
        flags = connectivity.call_main(args)
        if subject in flags and flags[subject]['calc_lables_connectivity']:
            good_subjects.append(subject)

    print('{}/{} good subjects'.format(len(good_subjects),
                                       len(gargs.mri_subject)))
    print('Good subject: ', good_subjects)
    print('Bad subjects: ', set(gargs.mri_subject) - set(good_subjects))