seg_membrane_chord_score — EMPROOF 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' (implementation को सीधे call करना हो तो 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', registry से लेना हो तो opsemproof.get("seg_membrane_chord_score"))

उपयोग

merge का संदेह: label के अंदर से गुज़रने वाली membrane "chord" की लंबाई / label का व्यास। हर label (connected component) के लिए 1 row।

प्रक्रिया: component के अंदर (boundary से band px से ज़्यादा अंदर) membrane response > tau वाले pixels को 8-connected components में बाँटा जाता है, और min_segment px या उससे बड़े हर membrane component को 3 px मोटा करके, boundary band (band < distance ≤ band + 3) को छूने वाले pixels में सबसे दूर के 2 points के बीच की दूरी को chord length माना जाता है। score = max chord length / sqrt(area)। boundary की 2 जगहों को जोड़ने वाली membrane (= आपस में चिपकी 2 cells की सीमा) का score ≈ 1 होता है, और boundary को न छूने वाले टुकड़े 0 या छोटे होते हैं। holes वाले membrane components (min_hole px या उससे बड़े hole = बंद ring = mitochondria, vesicles) को chord के candidates से हटाया जाता है -- boundary के 2 points को छूने वाली ring में भी chord जैसे ही "दूर के 2 points" होते हैं, इसलिए पहले hole है या नहीं इससे अलग किया जाता है। जिस membrane की ring टूटकर arc बन गई हो उसे हटाया नहीं जा सकता (real data पर AUC के 1 न होने का मुख्य कारण)।

CREMI sample A (512² sections, 12 slices, prototype) पर artificially merged components vs बाकी: AUC 0.83 (tau 0.2)।

columns: label / component / area / score / chord_px / n_segments / cy / cx (score के घटते क्रम में)। min_area से छोटे components नहीं गिने जाते (छोटे टुकड़े का chord उसके diameter जितना होता है और हमेशा ऊँचा आता है)।

>>> table = seg_membrane_chord_score(labels, seg_membrane_response(raw))

>>> table["label"][:5], table["score"][:5] # सबसे ज़्यादा संदिग्ध पहले

उपयोग की विस्तृत guide

• emproof family guide

संदर्भ (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_em_second_opinion — py -3.11 examples/poc_em_second_opinion.py

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

seg_synapse_partners · seg_wiring_variation · seg_synapse_nri · seg_wiring_exposure

इसी category के (suspect)

seg_boundary_membrane_gap


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

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