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)
>>> fig.add_subplot(gs[0, 0])
>>> bp.visualize.line_plot(group.mon.ts, group.mon.W, ylabel='W')
>>> fig.add_subplot(gs[1, 0])
>>> bp.visualize.line_plot(group.mon.ts, group.mon.V, ylabel='V', show=True)

(Source code, png, hires.png, pdf)

../../_images/brainmodels-neurons-MorrisLecar-1.png

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.