ht_synapse

Contents

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 P and last-spike time t_lastspike (no pre_trace/post_trace seam). On each presynaptic spike, with the previous spike at \(t_\text{last}\), it applies the NEST send() 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 weight is static — depression lives in P, so the delivered amplitude w_eff = w * P_send is the observable (this is what NEST’s weight_recorder logs). Each pre-spike’s pool/time writeback is frozen(...)-gated on ctx.pre_spike so non-firing edges hold.

Parameters:
  • weight (ArrayLike or Quantity, optional) – Per-edge baseline weight (pA; bare numbers are pA). May be positive (excitatory) or negative (inhibitory). Default 1.0 pA.

  • delay (Quantity, optional) – Homogeneous axonal delay (> 0). Default 1.0 ms.

  • receptor_type (int, optional) – Postsynaptic receptor port (>= 0). Default 0.

  • tau_P (Quantity, optional) – Vesicle-pool recovery constant (> 0); larger is slower recovery / stronger depression. Default 500.0 ms.

  • delta_P (float, optional) – Fractional depletion per spike, in [0, 1] (0 disables depression, 1 fully depletes). Default 0.125.

  • P (float, optional) – Initial pool availability, in [0, 1]. Default 1.0 (fully available).

Notes

t_lastspike initialises to 0.0 ms (the NEST default), not the -1.0 first-spike-skip sentinel used by tsodyks2_synapse. With the default P = 1 the first spike recovers as a no-op (1 - P = 0), but for a partial initial P the first spike correctly recovers from t = 0 — matching NEST exactly. Unlike the STDP-window models, ht_synapse maintains no K- trace, so there is no tau_minus post-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)