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. Defaults 1.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. Defaults 1.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. Defaults 1.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. Defaults 1.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. Defaults 0.15, 0.3, 0.15.

  • d_K (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param) – Channel activation slopes. Defaults 0.15, 0.3, 0.15.

  • d_Na (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param) – Channel activation slopes. Defaults 0.15, 0.3, 0.15.

  • VCa (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param) – Nernst / reversal potentials. Defaults 1.0, -0.7, -0.5, 0.53.

  • VK (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param) – Nernst / reversal potentials. Defaults 1.0, -0.7, -0.5, 0.53.

  • VL (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param) – Nernst / reversal potentials. Defaults 1.0, -0.7, -0.5, 0.53.

  • VNa (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param) – Nernst / reversal potentials. Defaults 1.0, -0.7, -0.5, 0.53.

  • phi (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param) – Temperature scaling of K kinetics. Default 0.7.

  • tau_K (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param) – Potassium relaxation time constant (dimensionless). Default 1.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). Defaults 0.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). Defaults 0.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). Defaults 0.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). Defaults 0.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). Defaults 0.4, 2.0, 2.0, 1.0, 0.4.

  • b (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param) – Inhibitory feedback strength. Default 0.1.

  • C (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param) – Long-range vs local coupling weight. Default 0.1.

  • Iext (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param) – External input current. Default 0.3.

  • rNMDA (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param) – NMDA receptor strength. Default 0.25.

  • VT (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param) – Firing thresholds for pyramidal / inhibitory cells. Default 0.0.

  • ZT (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param) – Firing thresholds for pyramidal / inhibitory cells. Default 0.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.55 gives fixed points, 0.55 < d_V < 0.59 limit cycles, d_V > 0.59 chaos. Default 0.65.

  • d_Z (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param) – Inhibitory firing-rate slope. Default 0.7.

  • QV_max (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param) – Maximum firing rates. Default 1.0.

  • QZ_max (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param) – Maximum firing rates. Default 1.0.

  • t_scale (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param) – Global time-scale factor. Default 1.0.

  • init_V (Callable) – State initializers. Default braintools.init.Constant(0.0).

  • init_W (Callable) – State initializers. Default braintools.init.Constant(0.0).

  • init_Z (Callable) – State initializers. Default braintools.init.Constant(0.0).

  • noise_V (Noise) – Additive noise process for the V (membrane) dynamics. Default None.

  • method (str) – Integration method, 'exp_euler' (default) or any braintools.quad method (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/ms so an exponential-Euler step with dt in milliseconds is consistent.

  • The external input V_inp is 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,)
QV(V)[source]#

Pyramidal-cell firing rate as a function of V (dimensionless).

QZ(Z)[source]#

Inhibitory-cell firing rate as a function of Z (dimensionless).

__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:
dV(V, W, Z, V_inp)[source]#

Right-hand side for the membrane potential V (unit 1/ms).

V_inp is the long-range coupling \(c\) entering the Ca/Na currents.

dW(W, V)[source]#

Right-hand side for the potassium gating variable W (unit 1/ms).

dZ(Z, V)[source]#

Right-hand side for the inhibitory activity Z (unit 1/ms).

derivative(state, t, V_inp)[source]#
init_state(batch_size=None, **kwargs)[source]#

Allocate the V, W and Z states.

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. If noise_V is set, its output is added.

Returns:

The updated membrane potential V (the coupling observable).

Return type:

array-like