# brainpy.dyn.neurons.FHN#

class brainpy.dyn.neurons.FHN(size, a=0.7, b=0.8, tau=12.5, Vth=1.8, V_initializer=ZeroInit, w_initializer=ZeroInit, method='exp_auto', keep_size=False, name=None)[source]#

FitzHugh-Nagumo neuron model.

Model Descriptions

The FitzHugh–Nagumo model (FHN), named after Richard FitzHugh (1922–2007) who suggested the system in 1961 1 and J. Nagumo et al. who created the equivalent circuit the following year, describes a prototype of an excitable system (e.g., a neuron).

The motivation for the FitzHugh-Nagumo model was to isolate conceptually the essentially mathematical properties of excitation and propagation from the electrochemical properties of sodium and potassium ion flow. The model consists of

• a voltage-like variable having cubic nonlinearity that allows regenerative self-excitation via a positive feedback, and

• a recovery variable having a linear dynamics that provides a slower negative feedback.

\begin{split}\begin{aligned} {\dot {v}} &=v-{\frac {v^{3}}{3}}-w+RI_{\rm {ext}}, \\ \tau {\dot {w}}&=v+a-bw. \end{aligned}\end{split}

The FHN Model is an example of a relaxation oscillator because, if the external stimulus $$I_{\text{ext}}$$ exceeds a certain threshold value, the system will exhibit a characteristic excursion in phase space, before the variables $$v$$ and $$w$$ relax back to their rest values. This behaviour is typical for spike generations (a short, nonlinear elevation of membrane voltage $$v$$, diminished over time by a slower, linear recovery variable $$w$$) in a neuron after stimulation by an external input current.

Model Examples

>>> import brainpy as bp
>>> fhn = bp.dyn.FHN(1)
>>> runner = bp.dyn.DSRunner(fhn, inputs=('input', 1.), monitors=['V', 'w'])
>>> runner.run(100.)
>>> bp.visualize.line_plot(runner.mon.ts, runner.mon.w, legend='w')
>>> bp.visualize.line_plot(runner.mon.ts, runner.mon.V, legend='V', show=True)


Model Parameters

 Parameter Init Value Unit Explanation a 1 Positive constant b 1 Positive constant tau 10 ms Membrane time constant. V_th 1.8 mV Threshold potential of spike.

Model Variables

 Variables name Initial Value Explanation V 0 Membrane potential. w 0 A recovery variable which represents the combined effects of sodium channel de-inactivation and potassium channel deactivation. input 0 External and synaptic input current. spike False Flag to mark whether the neuron is spiking. t_last_spike -1e7 Last spike time stamp.

References

1

FitzHugh, Richard. “Impulses and physiological states in theoretical models of nerve membrane.” Biophysical journal 1.6 (1961): 445-466.

2

https://en.wikipedia.org/wiki/FitzHugh%E2%80%93Nagumo_model

3

http://www.scholarpedia.org/article/FitzHugh-Nagumo_model

__init__(size, a=0.7, b=0.8, tau=12.5, Vth=1.8, V_initializer=ZeroInit, w_initializer=ZeroInit, method='exp_auto', keep_size=False, name=None)[source]#

Methods

 __init__(size[, a, b, tau, Vth, ...]) dV(V, t, w, I_ext) dw(w, t, V) get_delay_data(name, delay_step, *indices) Get delay data according to the provided delay steps. ints([method]) Collect all integrators in this node and the children nodes. load_states(filename[, verbose]) Load the model states. nodes([method, level, include_self]) Collect all children nodes. register_delay(name, delay_step, delay_target) Register delay variable. register_implicit_nodes(nodes) register_implicit_vars(variables) reset() Reset function which reset the whole variables in the model. save_states(filename[, variables]) Save the model states. train_vars([method, level, include_self]) The shortcut for retrieving all trainable variables. unique_name([name, type_]) Get the unique name for this object. update(t, dt) The function to specify the updating rule. vars([method, level, include_self]) Collect all variables in this node and the children nodes.

Attributes

 derivative global_delay_targets global_delay_vars name steps