graph_conductance_states — CONNGRAPH circuit op

• Datenarten: conn_graph × matrix → matrix

• Aufruf: import fullseye as fs; fs.ledger.graph_conductance_states(W: 'Any', drive: 'Any', dt_s: 'float' = 0.001, tau_s: 'float' = 0.02, e_rest: 'float' = 0.0, e_exc: 'float' = 1.0, e_inh: 'float' = -1.0, release: 'str' = 'relu', v_half: 'float' = 0.5, slope: 'float' = 4.0, gain: 'float' = 1.0, v0: 'Any' = None) -> 'np.ndarray' (die Implementierung direkt: import conngraph; conngraph.graph_conductance_states(W: 'Any', drive: 'Any', dt_s: 'float' = 0.001, tau_s: 'float' = 0.02, e_rest: 'float' = 0.0, e_exc: 'float' = 1.0, e_inh: 'float' = -1.0, release: 'str' = 'relu', v_half: 'float' = 0.5, slope: 'float' = 4.0, gain: 'float' = 1.0, v0: 'Any' = None) -> 'np.ndarray'; aus dem Register: opsconngraph.get("graph_conductance_states"))

Verwendung

Zeitreihe der Membranpotentiale (T, n), erhalten, indem die Verschaltung W direkt als Schaltkreis betrieben wird (matrix, ohne Lernen).

Was im optischen Lobus der Fliege als "Multiplikation" erschien, war in Wahrheit ein dendritisches Leitfähigkeitsverhältnis (Groschner et al. 2022: im stationären Zustand Vm = Σgᵢ Eᵢ / Σgᵢ). Eine Gleichung derselben Form ist auch die Standardform von Ganzhirnmodellen, die das Konnektom als Verdrahtung festlegen (Lappalainen et al. 2024:

τᵢ V̇ᵢ = −Vᵢ + Σ sᵢⱼ + V_rest). Dieses op lässt seine dynamische Version mit nur 1 conn_graph und 1 externen Eingabe laufen:

τ dVᵢ/dt = −(Vᵢ − e_rest) + g⁺ᵢ (e_exc − Vᵢ) + g⁻ᵢ (e_inh − Vᵢ)

g⁺ ist die Summe der positiven Gewichte von W, g⁻ die der Beträge der negativen Gewichte, jeweils gewichtet mit der präsynaptischen Ausschüttung f(V) (das Vorzeichen von drive wird in derselben Richtung addiert). Die Gewichte werden so verwendet, wie sie gegeben sind -- keinerlei Lernen und keinerlei Anpassung. Die Zeitkonstante schrumpft mit der Eingabe (effektives τ = τ/(1+g⁺+g⁻)), daher ist dies genau eine Dynamik vom Typ liquid time-constant, aber die Parameter sind nur Verdrahtung und Konstanten; nicht 1 Zahl wurde per Gradient bestimmt.

W: (n, n)-gewichtete Adjazenzmatrix (W[pre, post], positiv = exzitatorisch, negativ = inhibitorisch).

drive: (T, n)-externe Eingabe. Positive Werte gehen als Leitfähigkeit ein, die den Knoten zu e_exc zieht, negative zu e_inh

(kein Strom -- mit einem Strom ginge die Beschränktheit unten verloren).

dt_s / tau_s: Schrittweite und Membranzeitkonstante [s]. e_rest / e_exc / e_inh: Ruhepotential und die 2 Umkehrpotentiale.

release: präsynaptische Ausschüttung f(V). "relu" ist gain·max(V, 0), "sigmoid" ist

gain/(1+exp(−slope(V−v_half))). Beide sind nichtnegativ und erzeugen keine negative Leitfähigkeit

(die physikalisch nicht existiert) -- das ist die Voraussetzung der Beschränktheit unten.

v_half / slope: Halbwertspunkt und Steigung der Sigmoide. gain: Ausschüttungsverstärkung (nichtnegativ).

v0: Anfangszustand (n,). Standard ist e_rest für alle Knoten.

Jede Stufe schreitet mit der exakten Lösung bei festgehaltenen Leitfähigkeiten voran (V ← V∞ + (V − V∞)e^{−dt·g_tot/τ}), daher divergiert es auch bei grober Schrittweite nicht.

Was sich gegen geschlossene Ausdrücke prüfen lässt:

• Beschränktheit: Solange die Ausschüttung nichtnegativ ist, ist V∞ eine konvexe Kombination der 3 Umkehrpotentiale und liegt daher in [min(e_rest, e_exc, e_inh), max(...)]. Jede Stufe zieht V nur exponentiell zu diesem V∞, daher gilt: Wer in der Box startet, bleibt immer in der Box, und wer außerhalb startet, geht nicht weiter hinaus, sondern bewegt sich auf die Box zu. Dass es für keine Verdrahtung und keine Eingabe divergiert, garantiert die Struktur (der Standard von v0 ist e_rest = in der Box).

• Abklingen: Ohne Eingabe und ohne Kopplung exakt V(t) = e_rest + (V₀ − e_rest)e^{−t/τ}.

• Stationär: Eine konstante Eingabe d > 0 in 1 Knoten ergibt V∞ = (e_rest + d·e_exc)/(1 + d), und die effektive Zeitkonstante dorthin ist exakt τ/(1 + d) (die Zahl hinter "Eingabe verkürzt die Zeitkonstante").

ValueError: nicht quadratisches / nicht endliches W, drive, das nicht (T, n) ist, nicht positives dt_s / tau_s, negatives gain, unbekanntes release, v0 mit unpassender Länge.

Ausführlicher Anwendungsleitfaden

• Leitfaden zur Familie conngraph

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_fly_optomotor_steering — py -3.11 examples/poc_fly_optomotor_steering.py

Typkompatible Folge-Operatoren (nehmen matrix als Eingabe)

reservoir_states · reservoir_encode · ridge_readout · ridge_predict · graph_activation_latency · graph_activity_spread · points_activity_video · graph_layer_propagate

Gleiche Kategorie (circuit)

—


*Provenance: conngraph.py — CONNGRAPH 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.