LarterBreakspearStep#
- class brainmass.LarterBreakspearStep(in_size, gCa=1.1, gK=2.0, gL=0.5, gNa=6.7, TCa=-0.01, TK=0.0, TNa=0.3, d_Ca=0.15, d_K=0.3, d_Na=0.15, VCa=1.0, VK=-0.7, VL=-0.5, VNa=0.53, phi=0.7, tau_K=1.0, aee=0.4, aei=2.0, aie=2.0, ane=1.0, ani=0.4, b=0.1, C=0.1, Iext=0.3, rNMDA=0.25, VT=0.0, d_V=0.65, ZT=0.0, d_Z=0.7, QV_max=1.0, QZ_max=1.0, t_scale=1.0, init_V=Constant(value=0.0), init_W=Constant(value=0.0), init_Z=Constant(value=0.0), noise_V=None, method='exp_euler')#
Larter-Breakspear conductance-based neural mass model.
A modified Morris-Lecar mean-field model with three state variables: the mean membrane potential of pyramidal cells \(V\), the potassium gating variable \(W\), and the inhibitory interneuron activity \(Z\) [1] [2]. Voltage sigmoidally gates Ca2+, Na+ and K+ conductances, and a voltage-dependent firing rate feeds excitatory recurrence; the model exhibits fixed points, limit cycles and chaos depending on parameters.
Auxiliary (instantaneous) variables — sigmoidal channel gating and firing rates:
\[\begin{split}\begin{aligned} m_{\mathrm{Ca}} &= \tfrac12\bigl(1 + \tanh\tfrac{V - T_{\mathrm{Ca}}}{\delta_{\mathrm{Ca}}}\bigr),\quad m_{\mathrm{Na}} = \tfrac12\bigl(1 + \tanh\tfrac{V - T_{\mathrm{Na}}}{\delta_{\mathrm{Na}}}\bigr),\quad m_{K} = \tfrac12\bigl(1 + \tanh\tfrac{V - T_K}{\delta_K}\bigr), \\ Q_V &= \tfrac12 Q_V^{\max}\bigl(1 + \tanh\tfrac{V - V_T}{\delta_V}\bigr),\quad Q_Z = \tfrac12 Q_Z^{\max}\bigl(1 + \tanh\tfrac{Z - Z_T}{\delta_Z}\bigr). \end{aligned}\end{split}\]State equations (with long-range coupling \(c\) entering on \(V\)):
\[\begin{split}\begin{aligned} \dot V &= t_s\bigl(-I_{\mathrm{Ca}} - I_K - I_L - I_{\mathrm{Na}} - a_{ie} Z Q_Z + a_{ne} I_{\mathrm{ext}}\bigr), \\ \dot W &= t_s\,\phi\,(m_K - W)/\tau_K, \\ \dot Z &= t_s\,b\,(a_{ni} I_{\mathrm{ext}} + a_{ei} V Q_V), \end{aligned}\end{split}\]with currents \(I_{\mathrm{Ca}} = (g_{\mathrm{Ca}} + (1-C) r_{\mathrm{NMDA}} a_{ee} Q_V + C r_{\mathrm{NMDA}} a_{ee} c)\,m_{\mathrm{Ca}}(V - V_{\mathrm{Ca}})\), \(I_{\mathrm{Na}} = (g_{\mathrm{Na}} m_{\mathrm{Na}} + (1-C) a_{ee} Q_V + C a_{ee} c)(V - V_{\mathrm{Na}})\), \(I_K = g_K W (V - V_K)\) and \(I_L = g_L (V - V_L)\).
- Parameters:
in_size (
int|Sequence[int] |integer|Sequence[integer]) – Spatial shape of the population. All parameters broadcast to this shape.gCa (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Ca, K, leak and Na conductances. Defaults1.1, 2.0, 0.5, 6.7.gK (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Ca, K, leak and Na conductances. Defaults1.1, 2.0, 0.5, 6.7.gL (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Ca, K, leak and Na conductances. Defaults1.1, 2.0, 0.5, 6.7.gNa (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Ca, K, leak and Na conductances. Defaults1.1, 2.0, 0.5, 6.7.TCa (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Channel activation thresholds. Defaults-0.01, 0.0, 0.3.TK (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Channel activation thresholds. Defaults-0.01, 0.0, 0.3.TNa (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Channel activation thresholds. Defaults-0.01, 0.0, 0.3.d_Ca (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Channel activation slopes. Defaults0.15, 0.3, 0.15.d_K (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Channel activation slopes. Defaults0.15, 0.3, 0.15.d_Na (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Channel activation slopes. Defaults0.15, 0.3, 0.15.VCa (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Nernst / reversal potentials. Defaults1.0, -0.7, -0.5, 0.53.VK (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Nernst / reversal potentials. Defaults1.0, -0.7, -0.5, 0.53.VL (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Nernst / reversal potentials. Defaults1.0, -0.7, -0.5, 0.53.VNa (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Nernst / reversal potentials. Defaults1.0, -0.7, -0.5, 0.53.phi (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Temperature scaling of K kinetics. Default0.7.tau_K (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Potassium relaxation time constant (dimensionless). Default1.0.aee (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Synaptic coupling strengths (E->E, E->I, I->E, ext->E, ext->I). Defaults0.4, 2.0, 2.0, 1.0, 0.4.aei (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Synaptic coupling strengths (E->E, E->I, I->E, ext->E, ext->I). Defaults0.4, 2.0, 2.0, 1.0, 0.4.aie (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Synaptic coupling strengths (E->E, E->I, I->E, ext->E, ext->I). Defaults0.4, 2.0, 2.0, 1.0, 0.4.ane (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Synaptic coupling strengths (E->E, E->I, I->E, ext->E, ext->I). Defaults0.4, 2.0, 2.0, 1.0, 0.4.ani (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Synaptic coupling strengths (E->E, E->I, I->E, ext->E, ext->I). Defaults0.4, 2.0, 2.0, 1.0, 0.4.b (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Inhibitory feedback strength. Default0.1.C (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Long-range vs local coupling weight. Default0.1.Iext (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – External input current. Default0.3.rNMDA (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – NMDA receptor strength. Default0.25.VT (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Firing thresholds for pyramidal / inhibitory cells. Default0.0.ZT (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Firing thresholds for pyramidal / inhibitory cells. Default0.0.d_V (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Pyramidal firing-rate slope. Governs the dynamical regime:d_V < 0.55gives fixed points,0.55 < d_V < 0.59limit cycles,d_V > 0.59chaos. Default0.65.d_Z (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Inhibitory firing-rate slope. Default0.7.QV_max (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Maximum firing rates. Default1.0.QZ_max (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Maximum firing rates. Default1.0.t_scale (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Global time-scale factor. Default1.0.init_V (
Callable) – State initializers. Defaultbraintools.init.Constant(0.0).init_W (
Callable) – State initializers. Defaultbraintools.init.Constant(0.0).init_Z (
Callable) – State initializers. Defaultbraintools.init.Constant(0.0).noise_V (
Noise) – Additive noise process for theV(membrane) dynamics. DefaultNone.method (
str) – Integration method,'exp_euler'(default) or anybraintools.quadmethod (e.g.'rk4').
- Return type:
Any
- V#
Mean membrane potential of pyramidal cells (dimensionless).
- Type:
brainstate.HiddenState
- W#
Potassium channel gating variable (dimensionless).
- Type:
brainstate.HiddenState
- Z#
Inhibitory interneuron activity (dimensionless).
- Type:
brainstate.HiddenState
Notes
State variables are dimensionless; each right-hand side carries unit
1/msso an exponential-Euler step withdtin milliseconds is consistent.The external input
V_inpis the long-range coupling \(c\) entering the Ca and Na currents exactly as in the upstream TVB model (the local-coupling term is taken as zero for an isolated node).
References
Examples
>>> import brainmass >>> import brainstate >>> import brainunit as u >>> model = brainmass.LarterBreakspearStep(in_size=1) >>> _ = brainstate.nn.init_all_states(model) >>> with brainstate.environ.context(dt=0.1 * u.ms): ... V = model.update() >>> V.shape (1,)
- __init__(in_size, gCa=1.1, gK=2.0, gL=0.5, gNa=6.7, TCa=-0.01, TK=0.0, TNa=0.3, d_Ca=0.15, d_K=0.3, d_Na=0.15, VCa=1.0, VK=-0.7, VL=-0.5, VNa=0.53, phi=0.7, tau_K=1.0, aee=0.4, aei=2.0, aie=2.0, ane=1.0, ani=0.4, b=0.1, C=0.1, Iext=0.3, rNMDA=0.25, VT=0.0, d_V=0.65, ZT=0.0, d_Z=0.7, QV_max=1.0, QZ_max=1.0, t_scale=1.0, init_V=Constant(value=0.0), init_W=Constant(value=0.0), init_Z=Constant(value=0.0), noise_V=None, method='exp_euler')[source]#
- Parameters:
gCa (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
gK (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
gL (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
gNa (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
TCa (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
TK (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
TNa (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
d_Ca (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
d_K (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
d_Na (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
VCa (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
VK (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
VL (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
VNa (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
phi (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
tau_K (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
aee (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
aei (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
aie (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
ane (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
ani (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
b (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
C (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
Iext (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
rNMDA (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
VT (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
d_V (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
ZT (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
d_Z (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
QV_max (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
QZ_max (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
t_scale (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
init_V (Callable)
init_W (Callable)
init_Z (Callable)
noise_V (Noise)
method (str)
- dV(V, W, Z, V_inp)[source]#
Right-hand side for the membrane potential
V(unit1/ms).V_inpis the long-range coupling \(c\) entering the Ca/Na currents.
- update(V_inp=None)[source]#
Advance
(V, W, Z)by one time step.- Parameters:
V_inp (array-like or scalar or None, optional) – Long-range coupling input on the membrane equation. If
None, treated as zero. Ifnoise_Vis set, its output is added.- Returns:
The updated membrane potential
V(the coupling observable).- Return type:
array-like