Example #1
0
def compare_connectivity(subject, atlas, n_jobs=6):
    for name, fol, template in zip(['hesheng', 'linda', 'freesurfer'],
                                   [hesheng_surf_fol, linda_surf_fol, fs_surf_fol],
                                   [hesheng_template, linda_hemi_template, fs_surf_template]):
        output_fname_template = op.join(
            fmri.MMVT_DIR, subject, 'fmri', '{}_labels_data_laus125_mean_{}.npz'.format(name, '{hemi}'))
        if not utils.both_hemi_files_exist(output_fname_template):
            args = fmri.read_cmd_args(dict(
                subject=subject, atlas=atlas, function='analyze_4d_data', fmri_file_template=template, remote_fmri_dir=fol,
                labels_extract_mode='mean', overwrite_labels_data=False))
            pu.run_on_subjects(args, fmri.main)
            for hemi in utils.HEMIS:
                os.rename(op.join(fmri.MMVT_DIR, subject, 'fmri', 'labels_data_laus125_mean_{}.npz'.format(hemi)),
                          output_fname_template.format(hemi=hemi))

        args = con.read_cmd_args(dict(
            subject=subject, atlas='laus125', function='calc_lables_connectivity',
            connectivity_modality='fmri', connectivity_method='corr,cv', labels_extract_mode='mean',
            windows_length=34, windows_shift=4, save_mmvt_connectivity=False, calc_subs_connectivity=False,
            labels_name=name, recalc_connectivity=True, n_jobs=n_jobs))
        pu.run_on_subjects(args, con.main)
        conn_fol = op.join(con.MMVT_DIR, subject, 'connectivity')
        coloring_fol = op.join(con.MMVT_DIR, subject, 'coloring')
        os.rename(op.join(conn_fol, 'fmri_corr.npy'), op.join(conn_fol, 'fmri_corr_{}.npy'.format(name)))
        os.rename(op.join(conn_fol, 'fmri_corr_cv_mean.npz'), op.join(conn_fol, 'mri_corr_cv_mean_{}.npz'.format(name)))
        os.rename(op.join(conn_fol, 'fmri_corr_cv_mean_mean.npz'), op.join(conn_fol, 'fmri_corr_cv_mean_mean_{}.npz'.format(name)))
        os.rename(op.join(coloring_fol, 'fmri_corr_cv_mean.csv'), op.join(coloring_fol, 'fmri_corr_cv_mean_{}.csv'.format(name)))
Example #2
0
def calc_electrodes_con(args):
    # -s mg78 -a laus250 -f save_electrodes_coh --threshold_percentile 95 -c interference,non-interference
    args = con.read_cmd_args(
        utils.Bag(subject=args.subject,
                  atlas='laus250',
                  function='save_electrodes_coh',
                  threshold_percentile=95,
                  conditions='interference,non-interference'))
    pu.run_on_subjects(args, con.main)
Example #3
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)
Example #4
0
def example1(subject):
    # subject = 'fsaverage5c'
    args = con.read_cmd_args(['-s', subject])
    args.atlas = 'laus125'
    args.mat_fname = '/cluster/neuromind/npeled/linda/figure_file1.mat'
    args.mat_field = 'figure_file'
    args.windows = 1
    args.stat = con.STAT_DIFF
    args.threshold_percentile = 99
    args.conditions = ['task', 'rest']
    con.save_rois_connectivity(subject, args)
Example #5
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)
Example #6
0
def example2(subject):
    # subject = 'fsaverage5c'
    args = con.read_cmd_args(['-s', subject])
    args.atlas = 'laus125'
    args.mat_fname = '/cluster/neuromind/npeled/linda/figure_file3.mat'
    args.mat_field = 'matrix_cognition_ratio_fpn_dmn'
    args.windows = 1
    args.threshold = 0
    args.norm_by_percentile = False
    args.symetric_colors = False
    args.color_map = 'YlOrRd'
    args.data_min = 0.15
    args.data_max = 0.6
    con.save_rois_connectivity(subject, args)
Example #7
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)
Example #8
0
def merge_connectivity(args):
    for subject in args.mri_subject:
        conn_args = connectivity.read_cmd_args(
            dict(subject=subject, atlas=args.atlas, norm_by_percentile=False))
        meg_con = np.abs(
            np.load(
                op.join(MMVT_DIR, subject, 'connectivity',
                        'meg_static_pli.npy')).squeeze())
        fmri_con = np.abs(
            np.load(
                op.join(MMVT_DIR, subject, 'connectivity',
                        'fmri_static_corr.npy')).squeeze())
        d = utils.Bag(
            np.load(
                op.join(MMVT_DIR, subject, 'connectivity',
                        'meg_static_pli.npz')))
        labels_names = np.load(
            op.join(MMVT_DIR, subject, 'connectivity', 'labels_names.npy'))
        meg_threshold, fmri_threshold = 0.3, 0.5
        # if args.top_k == 0:
        #     L = len(d.labels)
        #     args.top_k = int(np.rint(L * (L - 1) / 200))
        # meg_con_sparse, meg_top_k = calc_con(meg_con, args.top_k)
        # fmri_con_sparse, fmri_top_k = calc_con(fmri_con, args.top_k)

        # if len(set(fmri_top_k).intersection(set(meg_top_k))):
        #     print('fmri and meg top k intersection!')
        # con = con_fmri - con_meg
        # if len(np.where(con)[0]) != args.top_k * 2:
        #     print('Wrong number of values in the conn matrix!'.format(len(np.where(con)[0])))
        #     continue
        meg_hub, fmri_hub = calc_hubs(meg_con, fmri_con, labels_names,
                                      meg_threshold, fmri_threshold)
        meg_con_hubs, fmri_con_hubs, join_con_hubs = create_con_with_only_hubs(
            meg_con, fmri_con, meg_hub, fmri_hub, meg_threshold,
            fmri_threshold)
        for con_hubs, con_name in zip(
            [meg_con_hubs, fmri_con_hubs, join_con_hubs],
            ['meg-hubs', 'fmri-hubs', 'fmri-meg-hubs']):
            output_fname = op.join(MMVT_DIR, subject, 'connectivity',
                                   '{}.npz'.format(con_name))
            con_vertices_fname = op.join(MMVT_DIR, subject, 'connectivity',
                                         '{}_vertices.pkl'.format(con_name))
            connectivity.save_connectivity(subject, con_hubs, con_name,
                                           connectivity.ROIS_TYPE,
                                           labels_names, d.conditions,
                                           output_fname, conn_args,
                                           con_vertices_fname)
            print('{} was saved in {}'.format(con_name, output_fname))
Example #9
0
def calc_electrodes_rest_connectivity(args):
    args = con.read_cmd_args(utils.Bag(
        subject=args.subject,
        function='calc_electrodes_rest_connectivity',
        connectivity_modality='electrodes',
        connectivity_method='pli,cv',
        windows_length=1000,
        windows_shift=200,
        sfreq=2000.0,
        fmin=8,
        fmax=13,
        # max_windows_num=500,
        n_jobs=args.n_jobs,
    ))
    pu.run_on_subjects(args, con.main)
Example #10
0
def calc_meg_connectivity(args):
    args = con.read_cmd_args(
        utils.Bag(
            subject=args.subject,
            atlas='laus125',
            function='calc_lables_connectivity',
            connectivity_modality='meg',
            connectivity_method='pli,cv',
            windows_length=500,
            windows_shift=100,
            # sfreq=1000.0,
            # fmin=10,
            # fmax=100
            n_jobs=args.n_jobs))
    pu.run_on_subjects(args, con.main)
Example #11
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)
Example #12
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)
Example #13
0
def calc_electrodes_rest_connectivity_from_matlab(args):
    def read_matlab_and_split_into_windows(args):
        import scipy.io as sio
        import math
        import numpy as np
        import src.mmvt_addon.mmvt_utils as mu
        for subject in args.subject:
            data_fname = op.join(ELECTRODES_DIR, subject,
                                 'electrodes_data_diff_data.npy')
            if not op.isfile(data_fname):
                d = sio.loadmat(op.join(ELECTRODES_DIR, subject, 'data.mat'))
                data_mat = d['data']
                electrodes_num = data_mat.shape[1]
                labels = []
                for label_mat in d['labels']:
                    group, elc1, elc2 = mu.elec_group_number(
                        '{1}-{0}'.format(*label_mat.split(' ')), True)
                    labels.append('{0}{1}-{0}{2}'.format(group, elc2, elc1))
                np.save(op.join(ELECTRODES_DIR, subject, 'electrodes.npy'),
                        labels)
                data = data_mat.swapaxes(0, 1).reshape(electrodes_num, -1)
                E, T = data.shape
                windows_length = 1000
                windows_shift = 200
                windows_nun = math.floor((T - windows_length) / windows_shift +
                                         1)
                data_winodws = np.zeros((windows_nun, E, windows_length))
                for w in range(windows_nun):
                    data_winodws[w] = data[:, w *
                                           windows_shift:w * windows_shift +
                                           windows_length]
                np.save(data_fname, data_winodws)

    read_matlab_and_split_into_windows(args)
    args = con.read_cmd_args(
        utils.Bag(subject=args.subject,
                  function='calc_electrodes_rest_connectivity',
                  connectivity_modality='electrodes',
                  connectivity_method='pli,cv',
                  windows_length=1000,
                  windows_shift=200,
                  sfreq=2000.0,
                  n_jobs=args.n_jobs
                  # fmin=10,
                  # fmax=100
                  ))
    pu.run_on_subjects(args, con.main)
Example #14
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)
Example #15
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)
Example #16
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)
Example #17
0
def calc_meg_connectivity(args):
    raw = mne.io.read_raw_fif(meg.RAW)
    sfreq = raw.info['sfreq']
    args = con.read_cmd_args(utils.Bag(
        subject=args.subject,
        atlas='laus125',
        function='calc_lables_connectivity',
        connectivity_modality='meg',
        connectivity_method='pli,cv',
        windows_length=int(sfreq * 0.5), # 0.5s
        windows_shift=int(sfreq * 0.1), # 0.1s,
        # sfreq=1000.0,
        tmin=300000,
        tmax=int(300000 + sfreq * 60 * 8), # 8min, 4800 time points
        # recalc_connectivity=True,
        # max_windows_num=100,
        # n_jobs=1,
        n_jobs=args.n_jobs
    ))
    pu.run_on_subjects(args, con.main)
Example #18
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)
Example #19
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)
Example #20
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))
Example #21
0
def merge_modalities_connectivity(args):
    inv_method, em = 'dSPM', 'mean_flip'
    meg_con_method, meg_con_mode = 'pli2_unbiased', 'multitaper'
    fmri_con_method = 'corr'
    conditions = ['interference', 'neutral']
    threshold_perc = 90

    template_con = utils.make_dir(
        op.join(MMVT_DIR, args.template_brain, 'connectivity'))
    # meg_con_fname = op.join(template_con, 'rest_{}_{}_{}.npz'.format(em, meg_con_method, meg_con_mode))
    meg_con_fname = op.join(
        template_con,
        'meg_rest_{}_{}_{}_high_gamma_mean.npz'.format(em, meg_con_method,
                                                       meg_con_mode))
    input_fmri_fname = op.join(template_con,
                               'rest_{}.npz'.format(fmri_con_method))

    conn_args = connectivity.read_cmd_args(
        dict(subject=args.template_brain,
             atlas=args.atlas,
             norm_by_percentile=False))
    meg_con_dict = utils.Bag(np.load(meg_con_fname))
    # meg_con = meg_con_dict.con[:, :, 4].squeeze()
    meg_con = meg_con_dict.con
    fmri_con_dict = utils.Bag(np.load(input_fmri_fname))
    fmri_con = np.abs(fmri_con_dict.con.mean(axis=2)).squeeze()
    # check_hubs_intersections(meg_con_dict, fmri_con_dict, meg_con_dict.names, threshold_perc=threshold_perc)
    print(np.min(meg_con), np.max(meg_con))
    print(np.min(fmri_con), np.max(fmri_con))
    if not all(meg_con_dict.labels == fmri_con_dict.names):
        raise Exception('Not the same names!')

    meg_con = sym_mat(meg_con)
    fmri_con = sym_mat(fmri_con)

    labels_names = meg_con_dict.labels
    meg_threshold, fmri_threshold = np.percentile(
        meg_con, threshold_perc), np.percentile(fmri_con, threshold_perc)
    print('meg and fMRI thresholds: {}, {}'.format(meg_threshold,
                                                   fmri_threshold))
    meg_con = meg_con / (np.max(meg_con) * 2) + 0.5
    fmri_con = fmri_con / (np.max(fmri_con) * 2) + 0.5
    meg_threshold, fmri_threshold = np.percentile(
        meg_con, threshold_perc), np.percentile(fmri_con, threshold_perc)
    meg_hub, fmri_hub = calc_hubs(meg_con, fmri_con, labels_names,
                                  meg_threshold, fmri_threshold)
    meg_con_hubs, fmri_con_hubs, join_con_hubs = create_con_with_only_hubs(
        meg_con, fmri_con, meg_hub, fmri_hub, meg_threshold, fmri_threshold)
    for con_hubs, con_name in zip([meg_con_hubs, fmri_con_hubs, join_con_hubs],
                                  ['meg-hubs', 'fmri-hubs', 'fmri-meg-hubs']):
        output_fname = op.join(MMVT_DIR, args.template_brain, 'connectivity',
                               '{}.npz'.format(con_name))
        con_vertices_fname = op.join(MMVT_DIR, args.template_brain,
                                     'connectivity',
                                     '{}_vertices.pkl'.format(con_name))
        connectivity.save_connectivity(
            args.template_brain, con_hubs, args.atlas, con_name,
            connectivity.ROIS_TYPE, labels_names, conditions, output_fname,
            con_vertices_fname, conn_args.windows, conn_args.stat,
            conn_args.norm_by_percentile, conn_args.norm_percs,
            conn_args.threshold, conn_args.threshold_percentile,
            conn_args.symetric_colors)
        print('{} was saved in {}'.format(con_name, output_fname))