graph_edge_consensus — GRAPH population op

• Data kinds: table → table

• Call: import fullseye as fs; fs.ledger.graph_edge_consensus(adjs, ordered=False, n_null=0, swaps_per_edge=5, seed=0) (implementation को सीधे call करना हो तो import graphinv; graphinv.graph_edge_consensus(adjs, ordered=False, n_null=0, swaps_per_edge=5, seed=0), registry से लेना हो तो opsgraph.get("graph_edge_consensus"))

उपयोग

हर connection को कितने individuals साझा करते हैं — एक node order पर K wiring matrices।

> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।

adjs is either a list of K square matrices or a table {name: matrix} (its insertion order is the individual order), all on the same node order (align the cell names first; a node absent from an individual is a zero row and column). Weights (synapse counts) are kept for the synapse shares; presence is > 0. Self-loops are dropped.

Returns a dict with:

• k (K), n, names, edges_per_individual and union (edges seen in at least one individual)

• occupancy_hist — h[c] = number of edges present in exactly c individuals, c = 0..K (h[0] is always 0: only the union is counted)

• jaccard — the K x K pairwise overlap |Ei ∩ Ej| / |Ei ∪ Ej|

• synapse_share — for each c, the fraction of all synapses (summed over individuals) on edges of occupancy c (with a 0/1 input: the edge share)

• with ordered=True (individuals listed in developmental order): the union is split by its presence pattern along the order into stable (present in all), added (absent, then present to the end: 0..01..1), lost (1..10..0) and flicker (anything else). The four sum to union.

• with n_null >= 2: every individual is rewired independently by degree-preserving swaps (each node's in/out degree kept exactly, checked per sample, fail-closed) and the occupancy histogram is re-counted. Reports occupancy_null_mean / occupancy_null_sd per c and shared_all_ratio (edges present in all K, observed over the null mean; inf when the null never shares one, so shared_all_null_max is reported too):

the chance level of "the same connection in every animal" given only each

animal's degrees.

Identities (the tests are built on these, not on fitted numbers):

sum_c c * h[c] == sum_i |E_i|; sum_c h[c] == union; K identical inputs give h[K] == union and every Jaccard == 1; the Jaccard matrix is symmetric with a unit diagonal; stable + added + lost + flicker == union; synapse_share sums to 1.

Raises ValueError: adjs not a list / table; fewer than 2 individuals; matrices of different sizes; any refusal of graph_degree_summary (non-square, negative, non-finite, string / bool / complex / masked input); an individual with no edges; n_null equal to 1 (no spread) or negative; swaps_per_edge < 1.

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• poc_connectome_across_decades — py -3.11 examples/poc_connectome_across_decades.py

• poc_connectome_across_worms — py -3.11 examples/poc_connectome_across_worms.py

वे अगले ops जिनसे type जुड़ता है (table को input के रूप में लेते हैं)

graph_core_persistence · tree_morphometry · tree_sholl · tree_run_length

इसी category के (population)

graph_strength_growth · graph_core_persistence


*Provenance: graphinv.py — GRAPH operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.