graph_conductance_states — CONNGRAPH circuit op

• Data kinds: conn_graph × matrix → matrix

• Call: 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' (implementation को सीधे call करना हो तो 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', registry से लेना हो तो opsconngraph.get("graph_conductance_states"))

उपयोग

wiring W को सीधे circuit के रूप में चलाकर मिली membrane potential की time series (T, n) (matrix, learning नहीं)।

fly के optic lobe में जो nonlinearity "गुणा" जैसी दिखती थी, वह असल में dendrite का conductance ratio निकली (Groschner आदि 2022: steady state में Vm = Σgᵢ Eᵢ / Σgᵢ)। इसी रूप का समीकरण, connectome को wiring के रूप में तय करने वाले whole-brain models का standard रूप भी है (Lappalainen आदि 2024:

τᵢ V̇ᵢ = −Vᵢ + Σ sᵢⱼ + V_rest)। यह op उसका dynamic version केवल 1 conn_graph और 1 external input से चलाता है:

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

g⁺, W के positive weights का, और g⁻ negative weights के absolute value का योग है, presynaptic release f(V) से weighted (drive का positive/negative भी उसी दिशा में जोड़ा जाता है)। weights को जैसे दिए गए हैं वैसे ही इस्तेमाल किया जाता है -- न learning, न fitting, कुछ भी नहीं। time constant input से घटता है (effective τ = τ/(1+g⁺+g⁻)), इसलिए यह ठीक liquid time-constant प्रकार की dynamics है, लेकिन parameters केवल wiring और constants हैं; gradient से तय किया गया 1 भी number नहीं है।

W: (n, n) weighted adjacency matrix (W[pre, post], positive = excitatory, negative = inhibitory)।

drive: (T, n) external input। positive उस node को e_exc की ओर, negative e_inh की ओर खींचने वाले

conductance के रूप में आता है (current नहीं -- current होने पर नीचे वाली boundedness टूट जाती है)।

dt_s / tau_s: step और membrane time constant [सेकंड]। e_rest / e_exc / e_inh: resting potential और 2 reversal potentials।

release: presynaptic release f(V)। "relu" है gain·max(V, 0), "sigmoid" है

gain/(1+exp(−slope(V−v_half)))। दोनों non-negative हैं, इसलिए negative conductance

(जो physically मौजूद नहीं) नहीं बनता -- यही नीचे वाली boundedness की शर्त है।

v_half / slope: sigmoid का half-value और slope। gain: release का gain (non-negative)।

v0: initial state (n,)। default सभी nodes के लिए e_rest।

हर stage conductance को fix करके exact solution से आगे बढ़ता है (V ← V∞ + (V − V∞)e^{−dt·g_tot/τ}), इसलिए step मोटा रखने पर भी यह diverge नहीं होता।

closed form से जाँची जा सकने वाली बातें:

• boundedness: जब तक release non-negative है, V∞ 3 reversal potentials का convex combination है, इसलिए [min(e_rest, e_exc, e_inh), max(...)] के अंदर रहता है। हर stage V को केवल उस V∞ की ओर exponential तरीके से खींचता है, इसलिए box के अंदर से शुरू करें तो हमेशा box के अंदर रहता है, और box के बाहर से शुरू करें तो भी और बाहर नहीं जाता बल्कि box की ओर बढ़ता है। किसी भी wiring और किसी भी input पर diverge न होना structure से guaranteed है (v0 का default e_rest = box के अंदर)।

• decay: न input हो न coupling, तो ठीक V(t) = e_rest + (V₀ − e_rest)e^{−t/τ}।

• steady state: 1 node में constant input d > 0 देने पर V∞ = (e_rest + d·e_exc)/(1 + d), और उसकी ओर जाने का effective time constant ठीक τ/(1 + d) है ("input से time constant घटता है" का संख्यात्मक रूप)।

ValueError: non-square / non-finite W, (T, n) न होने वाला drive, non-positive dt_s / tau_s, negative gain, अनजान release, ग़लत लंबाई वाला v0।

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

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

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

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

इसी category के (circuit)

—


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

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