suspect op• Data kinds: labels2d × image2d → table
• Call: import fullseye as fs; fs.ledger.seg_membrane_chord_score(labels, membrane, tau: 'float' = 0.2, band: 'int' = 4, min_area: 'int' = 1500, min_segment: 'int' = 20, normalize: 'bool' = True, ignore_zero: 'bool' = True, max_points: 'int' = 400, min_hole: 'int' = 4) -> 'dict' (to call the implementation directly, import emproof; emproof.seg_membrane_chord_score(labels, membrane, tau: 'float' = 0.2, band: 'int' = 4, min_area: 'int' = 1500, min_segment: 'int' = 20, normalize: 'bool' = True, ignore_zero: 'bool' = True, max_points: 'int' = 400, min_hole: 'int' = 4) -> 'dict'; from the registry, opsemproof.get("seg_membrane_chord_score"))
• GPU: none (CPU reference implementation only)
Suspected merge: length of the membrane "chord" crossing the interior of a label / diameter of the label. One row per label (connected component).
Procedure: Make pixels with membrane response > tau inside the component (within band px from the boundary) into 8 connected components, For each membrane component greater than or equal to min_segment px, thicken it by 3 px to the boundary side (distance ≤ band + 3) The chord length is the distance between the two farthest pixels that can be touched. score = max chord length / sqrt(area). A membrane that connects two boundaries (= boundary between two pasted cells) has score ≈ 1, and fragments that do not touch the boundary are 0 or small. Membrane component with holes (min_hole hole larger than px = closed ring = mitochondria/vesicles) is excluded from string candidates --- At two points on the boundary Since the touching rings have the same two distant points'' as the strings, we first divide them based on the presence or absence of holes. The membrane that has been cut into an arc is This cannot be excluded (the main reason why AUC does not reach 1 in real data).
CREMI sample A (12 cross sections of 512², prototype), artificial fusion component vs. others: AUC 0.83 (tau 0.2).
Columns: label / component / area / score / chord_px / n_segments / cy / cx (score descending order). Components less than min_area are not counted (small fragment chords will always come out higher as they are equal to the diameter).
>>> table = seg_membrane_chord_score(labels, seg_membrane_response(raw))
>>> table["label"][:5], table["score"][:5] # Most suspicious
• 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_second_opinion — py -3.11 examples/poc_em_second_opinion.py
table as input)seg_synapse_partners · seg_wiring_variation · seg_synapse_nri · seg_wiring_exposure
suspect)*Provenance: emproof.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.