Example #1
0
rows = []
n_samples = 5
lvls = ["lvl0_labels", "lvl1_labels", "lvl2_labels"]
for lvl in lvls:
    estimator = DCSBMEstimator(degree_directed=True,
                               directed=True,
                               loops=False)
    estimator.fit(adj, meta[lvl].values)
    for i in range(n_samples):
        sample = np.squeeze(estimator.sample())
        sample_meta = meta.copy()
        sf = signal_flow(sample)
        sample_meta["signal_flow"] = -sf
        sample_mg = MetaGraph(sample, sample_meta)
        sample_mg = sample_mg.sort_values("signal_flow", ascending=True)
        prop = upper_triu_prop(sample_mg.adj)
        print(prop)
        row = {"level": lvl.replace("_labels", ""), "prop": prop}
        rows.append(row)
    print()

bin_meta = meta.copy()
bin_adj = binarize(adj)
sf = signal_flow(bin_adj)
bin_meta["signal_flow"] = -sf
bin_mg = MetaGraph(bin_adj, bin_meta)
bin_mb = bin_mg.sort_values("signal_flow", ascending=True)
prop = upper_triu_prop(bin_mg.adj)
print(prop)
Example #2
0

# %% [markdown]
# # Extract subgraphs


extract_fb = True
if extract_fb:
    from_classes = ["MBON", "FAN", "FBN", "FB2N"]
    to_classes = ["MBIN"]
    sub_mg = MetaGraph(mg.adj, mg.meta)
    from_class_inds = sub_mg.meta["Class 1"].isin(from_classes)
    to_class_inds = sub_mg.meta["Class 1"].isin(to_classes)
    any_inds = np.logical_or(from_class_inds, to_class_inds)
    sub_mg.reindex(any_inds)
    sub_mg.sort_values(["Hemisphere", "Class 1", "Pair ID"])
    # meta = sub_mg.meta
    # meta["Original index"] = range(meta.shape[0])
    # meta.sort_values(
    #     ["Hemisphere", "Class 1", "Pair ID"],
    #     inplace=True,
    #     kind="mergesort",
    #     ascending=False,
    # )
    # temp_inds = meta["Original index"]
    # sub_mg = sub_mg.reindex(temp_inds)
    # sub_mg = MetaGraph(sub_mg.adj, meta)

    adj = sub_mg.adj.copy()
    from_class_inds = np.where(sub_mg.meta["Class 1"].isin(from_classes).values)[0]
    left_inds = np.where(sub_mg.meta["Hemisphere"] == "L")[0]
Example #3
0
width = 0.5
gap = 10

# this determines the sorting for everybody
level_names = [f"lvl{i}_labels" for i in range(lowest_level + 1)]
sort_class = level_names + ["merge_class"]
class_order = ["sf"]
total_sort_by = []
for sc in sort_class:
    for co in class_order:
        class_value = full_meta.groupby(sc)[co].mean()
        full_meta[f"{sc}_{co}_order"] = full_meta[sc].map(class_value)
        total_sort_by.append(f"{sc}_{co}_order")
    total_sort_by.append(sc)

full_mg = full_mg.sort_values(total_sort_by, ascending=False)
full_meta = full_mg.meta

n_leaf = full_meta[f"lvl{lowest_level}_labels"].nunique()
n_pairs = len(full_meta) // 2

# Get positions for left and right simultaneously, so they'll line up ###
# left
meta = full_meta[full_meta["hemisphere"] == "L"].copy()

level = lowest_level
labels = meta[f"lvl{level}_labels"]
classes = meta["merge_class"]
sizes = meta.groupby([f"lvl{level}_labels", "merge_class"], sort=False).size()

uni_labels = sizes.index.unique(0)
Example #4
0
width = 0.5
gap = 10

# this determines the sorting for everybody
level_names = [f"lvl{i}_labels" for i in range(lowest_level + 1)]
sort_class = level_names + ["merge_class"]
class_order = ["sf"]
total_sort_by = []
for sc in sort_class:
    for co in class_order:
        class_value = full_meta.groupby(sc)[co].mean()
        full_meta[f"{sc}_{co}_order"] = full_meta[sc].map(class_value)
        total_sort_by.append(f"{sc}_{co}_order")
    total_sort_by.append(sc)

full_mg = full_mg.sort_values(total_sort_by, ascending=False)
full_meta = full_mg.meta

n_leaf = full_meta[f"lvl{lowest_level}_labels"].nunique()
n_pairs = len(full_meta) // 2

# Get positions for left and right simultaneously, so they'll line up ###
# left
meta = full_meta[full_meta["hemisphere"] == "L"].copy()

level = lowest_level
labels = meta[f"lvl{level}_labels"]
classes = meta["merge_class"]
sizes = meta.groupby([f"lvl{level}_labels", "merge_class"], sort=False).size()

uni_labels = sizes.index.unique(0)
Example #5
0
dend_axs.append(fig.add_subplot(gs[:, 3]))  # colormap
plot_double_dendrogram(meta, dend_axs[:-1])
plot_color_labels(meta, dend_axs[-1])


# plot the adjacency matrices for data and sampled data
adj_axs = np.empty((2, lowest_level + 1), dtype="O")
offset = 4
for level in np.arange(lowest_level + 1):
    ax = fig.add_subplot(gs[: n_row // 2, level + offset])
    adj_axs[0, level] = ax
    ax = fig.add_subplot(gs[n_row // 2 :, level + offset])
    adj_axs[1, level] = ax
plot_adjacencies(mg, adj_axs)

mg = mg.sort_values(["hemisphere", "pair_id"], ascending=True)
meta = mg.meta
adj = mg.adj
n_pairs = len(meta) // 2
lp_inds = np.arange(n_pairs)
rp_inds = np.arange(n_pairs) + n_pairs
n_levels = 10  # how many levels to show in the curve plots

# plot the pairedness in the top left
palette = sns.color_palette("deep", 2)
sns.set_palette(palette)
ax = fig.add_subplot(gs[:2, 0])
plot_pairedness(meta, lp_inds, rp_inds, ax, n_levels=n_levels)

# plot the likelihood curves in the middle left
palette = sns.color_palette("deep")