# brainmodels.neurons.MorrisLecar

class brainmodels.neurons.MorrisLecar(size, V_Ca=130.0, g_Ca=4.4, V_K=- 84.0, g_K=8.0, V_leak=- 60.0, g_leak=2.0, C=20.0, V1=- 1.2, V2=18.0, V3=2.0, V4=30.0, phi=0.04, V_th=10.0, method='euler', **kwargs)[source]

The Morris-Lecar neuron model.

Model Descriptions

The Morris-Lecar model 1 (Also known as $$I_{Ca}+I_K$$-model) is a two-dimensional “reduced” excitation model applicable to systems having two non-inactivating voltage-sensitive conductances. This model was named after Cathy Morris and Harold Lecar, who derived it in 1981. Because it is two-dimensional, the Morris-Lecar model is one of the favorite conductance-based models in computational neuroscience.

The original form of the model employed an instantaneously responding voltage-sensitive Ca2+ conductance for excitation and a delayed voltage-dependent K+ conductance for recovery. The equations of the model are:

\begin{split}\begin{aligned} C\frac{dV}{dt} =& - g_{Ca} M_{\infty} (V - V_{Ca})- g_{K} W(V - V_{K}) - g_{Leak} (V - V_{Leak}) + I_{ext} \\ \frac{dW}{dt} =& \frac{W_{\infty}(V) - W}{ \tau_W(V)} \end{aligned}\end{split}

Here, $$V$$ is the membrane potential, $$W$$ is the “recovery variable”, which is almost invariably the normalized $$K^+$$-ion conductance, and $$I_{ext}$$ is the applied current stimulus.

Model Examples

>>> import brainpy as bp
>>> import brainmodels
>>>
>>> group = brainmodels.neurons.MorrisLecar(1, monitors=['V', 'W'], method='rk4')
>>> group.run(1000, inputs=('input', 100.), dt=0.05)
>>>
>>> fig, gs = bp.visualize.get_figure(2, 1, 3, 8)
>>> bp.visualize.line_plot(group.mon.ts, group.mon.W, ylabel='W')
>>> bp.visualize.line_plot(group.mon.ts, group.mon.V, ylabel='V', show=True)


Model Parameters

 Parameter Init Value Unit Explanation V_Ca 130 mV Equilibrium potentials of Ca+.(mV) g_Ca 4.4 Maximum conductance of corresponding Ca+.(mS/cm2) V_K -84 mV Equilibrium potentials of K+.(mV) g_K 8 Maximum conductance of corresponding K+.(mS/cm2) V_Leak -60 mV Equilibrium potentials of leak current.(mV) g_Leak 2 Maximum conductance of leak current.(mS/cm2) C 20 Membrane capacitance.(uF/cm2) V1 -1.2 Potential at which M_inf = 0.5.(mV) V2 18 Reciprocal of slope of voltage dependence of M_inf.(mV) V3 2 Potential at which W_inf = 0.5.(mV) V4 30 Reciprocal of slope of voltage dependence of W_inf.(mV) phi 0.04 A temperature factor. (1/s) V_th 10 mV The spike threshold.

Model Variables

 Variables name Initial Value Explanation V -20 Membrane potential. W 0.02 Gating variable, refers to the fraction of opened K+ channels. 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

Meier, Stephen R., Jarrett L. Lancaster, and Joseph M. Starobin. “Bursting regimes in a reaction-diffusion system with action potential-dependent equilibrium.” PloS one 10.3 (2015): e0122401.

2

http://www.scholarpedia.org/article/Morris-Lecar_model

3

https://en.wikipedia.org/wiki/Morris%E2%80%93Lecar_model

__init__(size, V_Ca=130.0, g_Ca=4.4, V_K=- 84.0, g_K=8.0, V_leak=- 60.0, g_leak=2.0, C=20.0, V1=- 1.2, V2=18.0, V3=2.0, V4=30.0, phi=0.04, V_th=10.0, method='euler', **kwargs)[source]

Methods

 __init__(size[, V_Ca, g_Ca, V_K, g_K, ...]) build_inputs([inputs, show_code]) build_monitors([show_code]) cpu() cuda() derivative(V, W, t, I_ext) ints([method]) Collect all integrators in this node and the children nodes. load_states(filename[, verbose, check]) Load the model states. nodes([method, _paths]) Collect all children nodes. register_constant_delay(key, size, delay[, ...]) Register a constant delay. run(duration[, dt, report, inputs, extra_func]) The running function. save_states(filename[, all_vars]) Save the model states. step(t_and_dt, **kwargs) to(devices) tpu() 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

 implicit_nodes Used to wrap the implicit children nodes which cannot be accessed by self.xxx implicit_vars Used to wrap the implicit variables which cannot be accessed by self.xxx target_backend Used to specify the target backend which the model to run.