seg_membrane_chord_score — EMPROOF suspect op

• Datenarten: labels2d × image2d → table

• Aufruf: 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' (die Implementierung direkt: 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'; aus dem Register: opsemproof.get("seg_membrane_chord_score"))

Verwendung

Verdacht auf Verschmelzung: Länge der Membran-"Sehne", die das Innere eines Labels durchquert / Durchmesser des Labels. Eine Zeile pro Label (Zusammenhangskomponente).

Vorgehen: Innerhalb einer Komponente (tiefer als band px vom Rand) werden Pixel mit Membranantwort > tau zu 8-zusammenhängenden Komponenten gruppiert; für jede Membrankomponente mit mindestens min_segment px wird um 3 px verdickt und der größte Abstand zwischen 2 Punkten unter den Pixeln, die das Randband (band < Abstand ≤ band + 3) berühren, als Sehnenlänge genommen. score = max Sehnenlänge / sqrt(Fläche). Eine Membran, die 2 Stellen des Rands verbindet (= die Grenze zwischen 2 aneinanderklebenden Zellen), hat score ≈ 1; Fragmente, die den Rand nicht berühren, ergeben 0 oder kleine Werte. Membrankomponenten mit Löchern (Löcher von mindestens min_hole px = geschlossene Ringe = Mitochondrien, Vesikel) werden aus den Sehnenkandidaten ausgeschlossen -- ein Ring, der 2 Punkte des Rands berührt, hat dieselben "2 weit entfernten Punkte" wie eine Sehne, daher wird zuerst nach dem Vorhandensein eines Lochs getrennt. Membranen, deren Ring zu einem Bogen aufgebrochen ist, lassen sich nicht ausschließen (der Hauptgrund, warum die AUC auf echten Daten nicht 1 erreicht).

Auf CREMI sample A (512²-Schnitte, 12 Stück, Prototyp), künstlich verschmolzene Komponenten vs. Rest: AUC 0.83 (tau 0.2).

Spalten: label / component / area / score / chord_px / n_segments / cy / cx (absteigend nach score). Komponenten kleiner als min_area werden nicht gezählt (die Sehne eines kleinen Fragments ist etwa so groß wie sein Durchmesser und fällt immer hoch aus).

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

>>> table["label"][:5], table["score"][:5] # verdächtigste zuerst

Ausführlicher Anwendungsleitfaden

• Leitfaden zur Familie emproof

Referenzen (Beispieldaten, Literatur)

• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).

• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.

• Der kanonische Algorithmus (Autor, Jahr) und seine Anwendungen stehen im Familienleitfaden oben.

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

• poc_em_second_opinion — py -3.11 examples/poc_em_second_opinion.py

Typkompatible Folge-Operatoren (nehmen table als Eingabe)

seg_synapse_partners · seg_wiring_variation · seg_synapse_nri · seg_wiring_exposure

Gleiche Kategorie (suspect)

seg_boundary_membrane_gap


*Provenance: emproof.py — EMPROOF Operator-Registry. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*

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