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
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')
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")
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')
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")
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] ]
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