seg_wiring_exposure — EMPROOF wiring op

• Data kinds: labels2d × table → table

• Call: import fullseye as fs; fs.ledger.seg_wiring_exposure(labels, synapses, spacing=None, background=0, p=0.5) (to call the implementation directly, import segcompare; segcompare.seg_wiring_exposure(labels, synapses, spacing=None, background=0, p=0.5); from the registry, opsemproof.get("seg_wiring_exposure"))

Usage

How much wiring each object stakes on staying one piece — from synapse end counts alone.

Cutting an object whose s synapse ends (synapses as in seg_synapse_partners) fall s1 / s - s1 on the two sides costs exactly (s / 2n) * H2(s1 / s) bits of ends-level split (seg_wiring_variation), and a hidden merge of two neurons inside one object costs the same expression as merge. So what an object can cost is fixed by its end count before any geometry is known:

• bound = s / 2n — the supremum over all cuts (reached when the ends halve). The bounds sum to n_ends / 2n: exactly 1 bit when no end lies on background.

• worst = (s / 2n) * H2(floor(s / 2) / s) — the largest cost a cut can actually reach.

• expected = (s / 2n) * E[H2(K / s)], K ~ Binomial(s, p) — the cost of a cut that puts each end on the cut-off side independently with probability p (default 1/2, the cut through the object's median voxel with ends spread evenly over it). This is the count-only prediction; the gap to the observed cost is the spatial clustering of the ends.

• density = (s / 2n) / (voxels / N) — the object's share of ends over its share of the N voxels of the volume. For an edit, wiring bits / pixel bits = density × (H2 of the end fractions / H2 of the voxel fractions): merges have the second factor near 1 (ends follow voxels), so their ratio is the density; a cut's second factor is H2(s1 / s) / 1 and is what the binomial predicts.

Objects with no end are not listed. Returns labels, voxels, ends, density, bound, worst, expected (aligned arrays), n synapses, n_ends kept, n_background ends dropped, total_bound, total_expected.

Raises ValueError: as seg_synapse_partners; p not strictly inside (0, 1); no end outside the background.

Detailed usage guide

• emproof family guide

References (sample data, literature)

• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).

• Operator provenance and references — the sources of the research/methods this op family came from.

• The canonical algorithm (author, year) and its uses are named in the family usage guide above.

Runnable examples (verified samples that actually call this op)

• poc_em_wiring_errors — py -3.11 examples/poc_em_wiring_errors.py

Ops the type connects to (they accept table as input)

seg_synapse_partners · seg_wiring_variation · seg_synapse_nri

Same category (wiring)

seg_synapse_partners · seg_wiring_variation · seg_synapse_nri


*Provenance: segcompare.py — EMPROOF operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*

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