ht_synapse#
- class brainpy.state.ht_synapse(*args, **kwargs)#
Hill-Tononi vesicle-pool depression synapse spec (NEST
ht_synapse).Trace-free and presynaptic: the kernel keeps a per-edge vesicle pool
Pand last-spike timet_lastspike(nopre_trace/post_traceseam). On each presynaptic spike, with the previous spike at \(t_\text{last}\), it applies the NESTsend()order recover → emit → deplete → update:\[\begin{split}P_\text{send} &= 1 - (1 - P)\,\exp\!\big(-(t - t_\text{last}) / \tau_P\big) \\ w_\text{eff} &= w \cdot P_\text{send} \\ P_\text{new} &= (1 - \delta_P)\,P_\text{send} \\ t_\text{last} &\leftarrow t\end{split}\]The stored
weightis static — depression lives inP, so the delivered amplitudew_eff = w * P_sendis the observable (this is what NEST’sweight_recorderlogs). Each pre-spike’s pool/time writeback isfrozen(...)-gated onctx.pre_spikeso non-firing edges hold.- Parameters:
weight (
ArrayLikeorQuantity, optional) – Per-edge baseline weight (pA; bare numbers are pA). May be positive (excitatory) or negative (inhibitory). Default1.0pA.delay (
Quantity, optional) – Homogeneous axonal delay (> 0). Default1.0 ms.receptor_type (
int, optional) – Postsynaptic receptor port (>= 0). Default0.tau_P (
Quantity, optional) – Vesicle-pool recovery constant (> 0); larger is slower recovery / stronger depression. Default500.0 ms.delta_P (
float, optional) – Fractional depletion per spike, in[0, 1](0disables depression,1fully depletes). Default0.125.P (
float, optional) – Initial pool availability, in[0, 1]. Default1.0(fully available).
Notes
t_lastspikeinitialises to0.0ms (the NEST default), not the-1.0first-spike-skip sentinel used bytsodyks2_synapse. With the defaultP = 1the first spike recovers as a no-op (1 - P = 0), but for a partial initialPthe first spike correctly recovers fromt = 0— matching NEST exactly. Unlike the STDP-window models,ht_synapsemaintains noK-trace, so there is notau_minuspost-neuron divergence to note.References
Examples
>>> from brainpy.state import ht_synapse >>> s = ht_synapse() >>> s.is_homogeneous_weight, s.stochastic (False, False) >>> s.edge_state_init() {'P': 1.0, 't_lastspike': 0.0} >>> s.tau_P, s.delta_P (500.0, 0.125)