コード例 #1
0
ファイル: plots.py プロジェクト: rmkujala/brainnets
def _get_global_props_data_to_plot(cfg, weighted, props, load_stats=False):
    """
    Internal helper function, for fetching data for global
    network properties.

    Returns
    -------
    propMeans : a python dictionary with keys as the property
        propMeans[prop][mode][p] = mean
    propMeanConfIntervals : dict
        propData[prop][mode][p] = [low, high]
    propStats : a python dict containing the perm. ttest pvalues
        propStats[prop][p] = pvalue
    densities : list
        of the densities
    """
    if weighted:
        props_tag = 'global_w_props'
    else:
        props_tag = 'global_uw_props'

    fnGroups = [cfg['group_1_mat_fnames'], cfg['group_2_mat_fnames']]
    data = [
        dataio.merge_and_load_props_data(fnGroup, props_tag, props, cfg)
        for fnGroup in fnGroups
    ]
    if load_stats:
        statsData = dataio.load_pickle(fnc.get_stats_fname(cfg, props_tag))

    propMeans = {}
    propMeanConfIntervals = {}
    propPVals = {}
    densities = data[0][settings.densities_tag]

    for prop in data[0].keys():
        if prop in props:
            modeMeans = []
            modeMeanErrs = []
            for i, datum in enumerate(data):
                # if prop != settings.densities_tag:
                propData = datum[prop]
                modeMeans.append(np.average(propData, 0))
                modeMeanErrs.append(
                    bootstrap.mean_conf_interval(propData.T,
                                                 cfg['bootstrap_samples'],
                                                 cfg['bootstrap_coverage']))
            propMeans[prop] = np.array(modeMeans)
            propMeanConfIntervals[prop] = np.array(modeMeanErrs)
            if load_stats:
                propPVals[prop] = statsData[prop][settings.pval_tag]
    return propMeans, propMeanConfIntervals, propPVals, densities
コード例 #2
0
ファイル: plots.py プロジェクト: rmkujala/brainnets
def plot_link_sim_mat(cfg):
    linkSimMatrix = dataio.load_pickle(
        fnc.get_fname(cfg, settings.common_links_tag))
    linkSimMatrix = linkSimMatrix / float(linkSimMatrix[0, 0])  # get to ratio
    fig = plt.figure(figsize=(8, 10))
    ax = fig.add_subplot(1, 1, 1)
    measure = settings.common_links_tag
    plot_sim_mat(ax, linkSimMatrix, measure)
    _addPermutationTestAndTextsToSimMatrix(fig, linkSimMatrix, measure)
    ax.set_xticklabels(2 * [str(i) for i in range(1, 14)])
    ax.set_yticklabels(2 * [str(i) for i in range(1, 14)])
    fig.savefig(cfg["outdata_dir"] + measure + ".pdf",
                format="pdf",
                bbox_inches='tight')
コード例 #3
0
ファイル: plots.py プロジェクト: rmkujala/brainnets
def plotDensityVsAvgPairedShare(cfg):
    """
    Plots the avg. fraction of the common links between the two settings
    (paired setup)
    """
    data = dataio.load_pickle(fnc.get_fname(cfg, settings.common_links_tag))
    linkSimMatrices = data[settings.common_links_tag]
    n = len(linkSimMatrices[0]) / 2
    densities = data[settings.densities_tag]
    linkSimAvgs = []
    linkSimStds = []
    vals = []
    for linkSimMatrix in linkSimMatrices:
        linkSimMatrix = linkSimMatrix / \
            float(linkSimMatrix[0, 0])  # get to ratio
        linkSimMatrix[range(n)]
        vals.append(linkSimMatrix[range(n), n + np.array(range(n))])
        linkSimAvgs.append(np.average(vals[-1]))
        linkSimStds.append(np.std(vals[-1]))
    fig = plt.figure()
    ax = fig.add_subplot(111)
    densities = np.array(densities)
    ax.set_xlabel(settings.get_prop_tex_name(settings.densities_tag))
    ax.set_ylabel(r"Share of common links")
    vals = np.array(vals).T
    for i, val in enumerate(vals):
        ax.plot(densities, val, "r", alpha=0.4, label=str(i + 1))

    ax.errorbar(densities, linkSimAvgs, linkSimStds, color="b", label="avg")
    ax.set_xscale('log')
    l = ax.legend(loc=1)
    l.get_frame().set_alpha(0.75)
    if cfg['include_mst']:
        plt.savefig(cfg["outdata_dir"] + settings.common_links_tag +
                    "_paired_vs_" + settings.densities_tag + "_with_mst.pdf",
                    format="pdf",
                    bbox_inches="tight")
    else:
        plt.savefig(cfg["outdata_dir"] + settings.common_links_tag +
                    "_paired_vs_" + settings.densities_tag + ".pdf",
                    format="pdf",
                    bbox_inches="tight")
コード例 #4
0
ファイル: plots.py プロジェクト: rmkujala/brainnets
def plotSameLinksShareVsLouvainSimilarityMeasures(cfg,
                                                  filenamesGroup1,
                                                  filenamesGroup2,
                                                  density=None):
    allFNames = filenamesGroup1 + filenamesGroup2
    data = dataio.mergeAndLoadLouvainProperties(allFNames, density)
    clusterings = data[settings.louvain_cluster_tag]
    simMatricesDict = gencomps.computeClusterSimilarityMeasures(clusterings)

    linkSimMatData = dataio.load_pickle(
        fnc.get_fname(cfg, settings.common_links_tag))
    index = 0
    densities = linkSimMatData[settings.densities_tag]
    if density is None:
        pass
    else:
        for j in range(len(densities)):
            if int(densities[index]) == int(density):
                index = j
                break
    linkSimMatrix = linkSimMatData[settings.common_links_tag][index]
    linkSimMatrix = linkSimMatrix / float(linkSimMatrix[0, 0])  # get to ratio

    triu_indices = np.triu_indices_from(linkSimMatrix, 1)
    for measure, simMatrix in simMatricesDict.iteritems():
        simMeasures = simMatrix[triu_indices]
        linkSims = linkSimMatrix[triu_indices]

        fig = plt.figure()
        ax = fig.add_subplot(111)
        ax.plot(linkSims, simMeasures, "o")
        ax.set_ylabel(settings.get_prop_tex_name(measure))
        ax.set_xlabel(settings.get_prop_tex_name(settings.common_links_tag))
        (r, p) = pearsonr(linkSims, simMeasures)
        fig.suptitle(r"Pearson correlation: {:.3f}".format(r))
        fig.savefig(cfg["outdata_dir"] + settings.common_links_tag + "_vs_" +
                    measure + ".pdf",
                    format="pdf",
                    bbox_inches='tight')
コード例 #5
0
ファイル: plots.py プロジェクト: rmkujala/brainnets
def plotDensityVsAvgCommonFractionOfLinksOverAllPairsInDifferentGroups(cfg):
    data = dataio.load_pickle(fnc.get_fname(cfg, settings.common_links_tag))
    linkSimMatrices = data[settings.common_links_tag]
    densities = data[settings.densities_tag]
    linkSimAvgs = []
    linkSimStds = []
    n = len(linkSimMatrices[0]) / 2
    differentGroupIndices = (np.array((np.ones(
        (n, n)) - np.eye(n)).nonzero()).T + np.array([n, n])).T
    print differentGroupIndices

    for linkSimMatrix in linkSimMatrices:
        linkSimMatrix = linkSimMatrix / \
            float(linkSimMatrix[0, 0])  # get to ratio
        linkSimAvgs.append(np.average(linkSimMatrix[differentGroupIndices]))
        linkSimStds.append(np.std(linkSimMatrix[differentGroupIndices]))
    fig = plt.figure()
    ax = fig.add_subplot(111)
    densities = np.array(densities)
    ax.errorbar(densities,
                linkSimAvgs,
                linkSimStds,
                label="avg. over all pairs in different groups, neglecting" +
                " same subjects, stdev")
    ax.set_xscale('log')
    l = ax.legend(loc=1)
    l.get_frame().set_alpha(0.75)
    if cfg['include_mst']:
        plt.savefig(cfg["outdata_dir"] + settings.common_links_tag + "_vs_" +
                    settings.densities_tag + "_between_groups.pdf",
                    format="pdf",
                    bbox_inches="tight")
    else:
        plt.savefig(cfg["outdata_dir"] + settings.common_links_tag + "_vs_" +
                    settings.densities_tag + "_between_groups_noMST.pdf",
                    format="pdf",
                    bbox_inches="tight")
コード例 #6
0
ファイル: pipeline.py プロジェクト: rmkujala/brainnets
consensus_fname1 = (cfg['outdata_dir'] + comdet_tag + "_" + "group2" + "_" +
                    str(cfg['density']) + ".pkl")
compcoms.comp_consensus_partition(cfg,
                                  'group_1_mat_fnames',
                                  consensus_fname0,
                                  n_to_consider=n_to_consider,
                                  comdet_tag=comdet_tag)
compcoms.comp_consensus_partition(cfg,
                                  'group_2_mat_fnames',
                                  consensus_fname1,
                                  n_to_consider=n_to_consider,
                                  comdet_tag=comdet_tag)

print "Matching modules algorithmically"
consensus_clu_movie = \
    dataio.load_pickle(consensus_fname0)[comdet_tag]
consensus_clu_rest = \
    dataio.load_pickle(consensus_fname1)[comdet_tag]

consensus_clu_movie, consensus_clu_rest, n_clu_1, n_clu_2 = \
    viz._get_matched_renumbered_communities_for_viz(
        consensus_clu_movie, consensus_clu_rest
    )
uf_consensus_clus = [consensus_clu_movie, consensus_clu_rest]

print "Setting colors for modules"
ok_nodes = dataio.get_ok_nodes(cfg['blacklist_fname'])
filtered_consensus_clus = [
    consensus_clu_movie[ok_nodes], consensus_clu_rest[ok_nodes]
]
コード例 #7
0
ファイル: plots.py プロジェクト: rmkujala/brainnets
def plot_link_dist_probs_by_condition(cfg):
    """
    Plots the link distance PDFs pooled by condition.

    Parameters
    ----------
    cfg : dict
        the user-specified config dictionary.
        The following keys are required::

            "group_1_mat_fnames"
            "group_2_mat_fnames"
            "group_1_color"
            "group_2_color"
            "group_1_label"
            "group_2_label"
            "outdata_dir"

    Returns
    -------
    None
    """
    # CFGCHANGE?
    config.require(cfg, [
        "group_1_mat_fnames", "group_2_mat_fnames", "group_1_color",
        "group_2_color", "group_1_label", "group_2_label", "outdata_dir",
        "density"
    ])
    fname_group_list = [cfg["group_1_mat_fnames"], cfg["group_2_mat_fnames"]]
    colors = [cfg["group_1_color"], cfg["group_2_color"]]
    labels = [cfg["group_1_label"], cfg["group_2_label"]]

    # ns = []
    data_example = dataio.load_pickle(
        fnc.get_ind_fname(fname_group_list[0][0], cfg,
                          settings.link_distance_tag))
    densities = data_example[settings.config_tag][settings.densities_tag]

    # for individual plots:
    # figs = [plt.figure() for p in densities]
    # axs = [fig.add_subplot(111) for fig in figs]

    group_distances = []
    for i, fname in enumerate(fname_group_list):
        # ns.append(len(fname))
        distances = [np.array([]) for p in densities]
        for fname in fname:
            print fname
            data = dataio.load_pickle(
                fnc.get_ind_fname(fname, cfg, settings.link_distance_tag))
            p_f_dists = data[settings.link_distance_tag]
            for j, p in enumerate(densities):
                # print p
                distances[j] = np.hstack((distances[j], p_f_dists[j]))

        # for individual plots:
        # for j in range(len(densities)):
        #     genplots.plot_inv_cdf(
        #         axs[j], distances[j], yscale='log',
        #         label=labels[i], color=colors[i])
        group_distances.append(distances)

    indices = range(len(densities))  # [6,7,10] #density indices
    print densities
    for k, j in enumerate(indices):
        fig = plt.figure(figsize=(4, 3))
        p = densities[j]
        ax = fig.add_subplot(1, 1, 1)
        ax.set_xlabel(settings.get_prop_tex_name(settings.link_distance_tag))
        ax.set_ylabel(r"1-CDF(d)")
        print p, j
        ax.text(.5,
                0.10,
                r"$\rho$ = " + str(p * 100) + "\%",
                ha='center',
                va='center',
                transform=ax.transAxes)
        for i in range(len(fname_group_list)):
            genplots.plot_inv_cdf(ax,
                                  group_distances[i][j],
                                  label=labels[i],
                                  color=colors[i],
                                  yscale='log')
        plt.tight_layout()
        fig.savefig(cfg['outdata_dir'] + "linkDistProbs_" + str(p) + ".pdf",
                    format="pdf",
                    bbox_inches="tight")
        plt.close(fig)
    return None