null opmatrix → tableimport fullseye as fs; fs.ledger.graph_degree_preserving_null(adj, n_samples=20, swaps_per_edge=5, seed=0) (実装を直接呼ぶなら import graphinv; graphinv.graph_degree_preserving_null(adj, n_samples=20, swaps_per_edge=5, seed=0)、台帳から引くなら opsgraph.get("graph_degree_preserving_null"))Compare 3-cycles and reciprocity against a degree-preserving null model.
Each null sample requests swaps_per_edge * |E| edge swaps that keep every node’s
in- and out-degree exactly (Maslov & Sneppen 2002); a swap that would create a
self-loop or duplicate edge is skipped, so dense graphs accept fewer
(swaps_accepted). The sample’s
degree sequences are checked against the original before it is used — a null that
drifted would make every ratio a lie, so this fails closed.
Returns a dict with the observed cycles3 and reciprocal_pairs, the null
*_null_mean / *_null_sd, the *_ratio (observed / null mean) and *_z,
plus n_samples, swaps (requested per sample) and swaps_accepted (list,
accepted per sample). Ratios are what let graphs of different size be compared;
raw counts cannot.
Raises ValueError: as :func:graph_degree_summary; n_samples < 2
(no spread to estimate); swaps_per_edge < 1; a graph with fewer than 2 edges
(nothing to swap).
py -3.11 examples/graphinv_three_phyla.pytable を入力に取れる)graph_edge_consensus · graph_core_persistence · tree_morphometry · tree_sholl · tree_run_length
null)—
Provenance: graphinv.py — GRAPH operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.