예제 #1
0
def save_labels_coloring(subject, atlas, n_jobs=2):
    ret = False
    coloring_dir = op.join(MMVT_DIR, subject, 'coloring')
    utils.make_dir(coloring_dir)
    coloring_fname = op.join(coloring_dir, 'labels_{}_coloring.csv'.format(atlas))
    coloring_names_fname = op.join(coloring_dir, 'labels_{}_colors_names.csv'.format(atlas))
    try:
        labels = lu.read_labels(subject, SUBJECTS_DIR, atlas, n_jobs=n_jobs)
        colors_rgb_and_names = cu.get_distinct_colors_and_names()
        labels_colors_rgb, labels_colors_names = {}, {}
        for label in labels:
            label_inv_name = lu.get_label_hemi_invariant_name(label.name)
            if label_inv_name not in labels_colors_rgb:
                labels_colors_rgb[label_inv_name], labels_colors_names[label_inv_name] = next(colors_rgb_and_names)
        with open(coloring_fname, 'w') as colors_file, open(coloring_names_fname, 'w') as col_names_file:
            for label in labels:
                label_inv_name = lu.get_label_hemi_invariant_name(label.name)
                color_rgb = labels_colors_rgb[label_inv_name]
                color_name = labels_colors_names[label_inv_name]
                colors_file.write('{},{},{},{}\n'.format(label.name, *color_rgb))
                col_names_file.write('{},{}\n'.format(label.name, color_name))
        ret = op.isfile(coloring_fname)
    except:
        print('Error in save_labels_coloring!')
        print(traceback.format_exc())
    return ret
예제 #2
0
def get_rois_colors(subject, atlas, rois):
    not_white_rois = set(filter(lambda r:'white' not in r.lower(), rois))
    white_rois = rois - not_white_rois
    not_white_rois = sorted(list(not_white_rois))
    colors = cu.get_distinct_colors_and_names()
    lables_colors_rgbs_fname = op.join(MMVT_DIR, subject, 'coloring', 'labels_{}_coloring.csv'.format(atlas))
    lables_colors_names_fname = op.join(MMVT_DIR, subject, 'coloring', 'labels_{}_colors_names.csv'.format(atlas))
    labels_colors_exist = op.isfile(lables_colors_rgbs_fname) and op.isfile(lables_colors_names_fname)
    rois_colors_rgbs, rois_colors_names = OrderedDict(), OrderedDict()
    if not labels_colors_exist:
        print('No labels coloring file!')
    else:
        labels_colors_rgbs = np.genfromtxt(lables_colors_rgbs_fname, dtype=str, delimiter=',')
        labels_colors_names = np.genfromtxt(lables_colors_names_fname, dtype=str, delimiter=',')
    for roi in not_white_rois:
        if labels_colors_exist:
            roi_inds = np.where(labels_colors_rgbs[:, 0] == '{}-rh'.format(roi))[0]
            if len(roi_inds) > 0:
                color_rgb = labels_colors_rgbs[roi_inds][0, 1:].tolist()
                color_name = labels_colors_names[roi_inds][0, 1]
            else:
                color_rgb, color_name = next(colors)
        else:
            color_rgb, color_name = next(colors)
        rois_colors_rgbs[roi], rois_colors_names[roi] = color_rgb, color_name
    for white_roi in white_rois:
        rois_colors_rgbs[white_roi], rois_colors_names[white_roi] = cu.name_to_rgb('white').tolist(), 'white'
    return rois_colors_rgbs, rois_colors_names
예제 #3
0
def save_labels_coloring(subject, atlas, n_jobs=2):
    ret = False
    coloring_dir = op.join(MMVT_DIR, subject, 'coloring')
    utils.make_dir(coloring_dir)
    coloring_fname = op.join(coloring_dir, 'labels_{}_coloring.csv'.format(atlas))
    coloring_names_fname = op.join(coloring_dir, 'labels_{}_colors_names.csv'.format(atlas))
    try:
        labels = lu.read_labels(subject, SUBJECTS_DIR, atlas, n_jobs=n_jobs)
        colors_rgb_and_names = cu.get_distinct_colors_and_names()
        labels_colors_rgb, labels_colors_names = {}, {}
        for label in labels:
            label_inv_name = lu.get_label_hemi_invariant_name(label.name)
            if label_inv_name not in labels_colors_rgb:
                labels_colors_rgb[label_inv_name], labels_colors_names[label_inv_name] = next(colors_rgb_and_names)
        with open(coloring_fname, 'w') as colors_file, open(coloring_names_fname, 'w') as col_names_file:
            for label in labels:
                label_inv_name = lu.get_label_hemi_invariant_name(label.name)
                color_rgb = labels_colors_rgb[label_inv_name]
                color_name = labels_colors_names[label_inv_name]
                colors_file.write('{},{},{},{}\n'.format(label.name, *color_rgb))
                col_names_file.write('{},{}\n'.format(label.name, color_name))
        ret = op.isfile(coloring_fname)
    except:
        print('Error in save_labels_coloring!')
        print(traceback.format_exc())
    return ret
예제 #4
0
def create_electrodes_groups_coloring(subject, bipolar, coloring_fname='electrodes_groups_coloring.csv'):
    electrodes, groups = get_electrodes_groups(subject, bipolar)
    colors_rgb_and_names = cu.get_distinct_colors_and_names(len(groups) - 1, boynton=True)
    group_colors = dict()
    coloring_fname = op.join(MMVT_DIR, subject, 'coloring', coloring_fname)
    coloring_names_fname = op.join(MMVT_DIR, subject, 'coloring', 'electrodes_groups_coloring_names.csv')
    with open(coloring_names_fname, 'w') as colors_names_file:
        for group, (color_rgb, color_name) in zip(groups, colors_rgb_and_names):
            if 'ref' in group.lower():
                continue
            group_colors[group] = color_rgb
            colors_names_file.write('{},{}\n'.format(group, color_name))
    with open(coloring_fname, 'w') as colors_file:
        for elc in electrodes:
            if 'ref' in elc.lower():
                continue
            elc_group = utils.elec_group(elc, bipolar)
            colors_file.write('{},{},{},{}\n'.format(elc, *group_colors[elc_group]))