brainmodels.neurons.FHN

class brainmodels.neurons.FHN(size, a=0.7, b=0.8, tau=12.5, Vth=1.8, method='exp_auto', 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
>>> import brainmodels
>>>
>>> # simulation
>>> fnh = brainmodels.neurons.FHN(1)
>>> runner = bp.StructRunner(fnh, 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, method='exp_auto', name=None)[source]

Methods

 __init__(size[, a, b, tau, Vth, method, name]) child_ds([method, include_self]) Return the children instance of dynamical systems. dV(V, t, w, Iext) dw(w, t, V) ints([method]) Collect all integrators in this node and the children nodes. load_states(filename[, verbose, check_missing]) Load the model states. nodes([method, _paths]) Collect all children nodes. register_constant_delay(key, size, delay[, ...]) Register a constant delay, whose update method will be appended into the self.steps in this host class. register_implicit_nodes(nodes) register_implicit_vars(variables) save_states(filename[, all_vars]) Save the model states. train_vars([method]) 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]) Collect all variables in this node and the children nodes.

Attributes

 derivative