class brainpy.dyn.LifRefLTC(size, sharding=None, keep_size=False, mode=None, spk_fun=InvSquareGrad(alpha=100.0), spk_dtype=None, detach_spk=False, spk_reset='soft', method='exp_auto', name=None, init_var=True, scaling=None, V_rest=0.0, V_reset=-5.0, V_th=20.0, R=1.0, tau=10.0, V_initializer=ZeroInit, tau_ref=0.0, ref_var=False)[source]#

Leaky integrate-and-fire neuron model with liquid time-constant which has refractory periods .

The formal equations of a LIF model [1] is given by:

\[\begin{split}\tau \frac{dV}{dt} = - (V(t) - V_{rest}) + RI(t) \\ \text{after} \quad V(t) \gt V_{th}, V(t) = V_{reset} \quad \text{last} \quad \tau_{ref} \quad \text{ms}\end{split}\]

where \(V\) is the membrane potential, \(V_{rest}\) is the resting membrane potential, \(V_{reset}\) is the reset membrane potential, \(V_{th}\) is the spike threshold, \(\tau\) is the time constant, \(\tau_{ref}\) is the refractory time period, and \(I\) is the time-variant synaptic inputs.


There is an example usage:

import brainpy as bp

neu = bp.dyn.LifRefLTC(1, )

# example for section input
inputs = bp.inputs.section_input([0., 21., 0.], [100., 300., 100.])

runner = bp.DSRunner(neu, monitors=['V'])

bp.visualize.line_plot(runner.mon['ts'], runner.mon['V'], show=True)
reset_state(batch_size=None, **kwargs)[source]#

Reset function which resets local states in this model.

Simply speaking, this function should implement the logic of resetting of local variables in this node.

See for details.


The function to specify the updating rule.