vogels_sprekeler_synapse#
- class brainpy.state.vogels_sprekeler_synapse(*args, **kwargs)#
Symmetric inhibitory-plasticity synapse spec (NEST
vogels_sprekeler_synapse).The substrate maintains a single, symmetric trace constant
tauon both sides (pre_trace_tau = post_trace_tau = tau). This kernel gates its own writeback — the online all-to-all scheme equal to NEST’s deferredsend()at every send (pre-spike) time:post spike — symmetric facilitation using the pre trace
K+;pre spike — symmetric facilitation using the post trace
K-, then a single constant depression (independent of any trace).
with the sign-aware, magnitude-saturating operations (NEST
facilitate_/depress_)\[ \begin{align}\begin{aligned}\operatorname{facilitate}(w, k) = \operatorname{copysign}\!\big(\min(|w| + \eta k,\ |W_{\max}|),\ W_{\max}\big)\\\operatorname{depress}(w) = \operatorname{copysign}\!\big(\max(|w| - \alpha\eta,\ 0),\ W_{\max}\big)\end{aligned}\end{align} \]so the weight saturates at \(\pm |W_{\max}|\) while keeping
Wmax’s sign (weights are typically inhibitory). Each side excludes the current step’s own spike from the opposite trace (K+ = pre_trace - pre_spike,K- = post_trace - post_spike).- Parameters:
weight (
ArrayLikeorQuantity, optional) – Per-edge weight (pA; bare numbers are pA). Same sign asWmax(if non-zero). Default0.5pA.delay (
Quantity, optional) – Homogeneous axonal delay (> 0). Default1.0 ms.receptor_type (
int, optional) – Postsynaptic receptor port (>= 0). Default0.tau (
Quantity, optional) – Symmetric pre/post trace constant (> 0). Default20.0 ms.eta (
float, optional) – Learning rate \(\eta\). Default0.001.alpha (
float, optional) – Constant depression factor \(\alpha\) (sets the target rate). Default0.12.Wmax (
float, optional) – Weight bound (magnitude; sign defines the weight sign). Default1.0.Kplus (
float, optional) – InitialK+(the substrate seeds traces at 0, the NEST default). Default0.0.
Notes
NEST divergence — ``tau`` location. In NEST the postsynaptic trace
K-is maintained by the post neuron (ArchivingNode) under itstau_minus; the symmetric rule requirestau_minus = tau. Heretauis a single synapse-spec attribute driving both per-neuron traces, so the rule runs standalone.Online vs deferred: the substrate facilitates eagerly at post-spike steps, whereas NEST defers it to the next pre spike; the two coincide at pre-spike (send) times, so parity is asserted there.
References
Examples
>>> import brainunit as u >>> from brainpy.state import vogels_sprekeler_synapse >>> s = vogels_sprekeler_synapse(weight=0.5, alpha=0.12, eta=0.001) >>> s.is_homogeneous_weight, s.edge_state_init() (False, {}) >>> s.eta, s.alpha, s.Wmax (0.001, 0.12, 1.0) >>> bool(u.Quantity(s.pre_trace_tau).to_decimal(u.ms) == u.Quantity(s.post_trace_tau).to_decimal(u.ms)) True