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"))
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 :func:seg_synapse_partners`)
fall `s1 / s - s1 on the two sides costs exactly (s / 2n) * H2(s1 / s)` bits of
ends-level split (:func: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 :func:seg_synapse_partners; p` not strictly inside
(0, 1); no end outside the background.
• 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.
• poc_em_wiring_errors — py -3.11 examples/poc_em_wiring_errors.py
table as input)seg_synapse_partners · seg_wiring_variation · seg_synapse_nri
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.