WilsonCowanThreePopulationStep#
- class brainmass.WilsonCowanThreePopulationStep(in_size, tau_E=Quantity(1., 'ms'), a_E=1.2, theta_E=2.8, tau_I=Quantity(1., 'ms'), a_I=1.0, theta_I=4.0, tau_M=Quantity(2., 'ms'), a_M=1.0, theta_M=3.5, wEE=12.0, wIE=4.0, wEI=13.0, wII=11.0, wME=8.0, wMI=6.0, wEM=4.0, wIM=2.0, wMM=2.0, r=1.0, noise_E=None, noise_I=None, noise_M=None, rE_init=Constant(value=0.0), rI_init=Constant(value=0.0), rM_init=Constant(value=0.0), method='exp_euler')#
Three-population Wilson-Cowan model with modulatory neurons.
This variant extends the standard Wilson-Cowan model to include a third modulatory (M) population that can represent neuromodulation, attention, arousal, or VIP interneurons. The modulatory population receives input from E and I, and projects back to modulate both populations.
- Parameters:
in_size (
int|Sequence[int] |integer|Sequence[integer]) – Spatial shape of each population (E, I, M). Can be an int, a tuple of ints, or any size compatible withbrainstate.tau_E (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Excitatory time constant with unit of time. Default is1. * u.ms.a_E (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Excitatory gain (dimensionless). Default is1.2.theta_E (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Excitatory threshold (dimensionless). Default is2.8.tau_I (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Inhibitory time constant with unit of time. Default is1. * u.ms.a_I (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Inhibitory gain (dimensionless). Default is1..theta_I (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Inhibitory threshold (dimensionless). Default is4.0.tau_M (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Modulatory time constant with unit of time. Typically slower than E/I. Default is2. * u.ms.a_M (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Modulatory gain (dimensionless). Default is1..theta_M (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Modulatory threshold (dimensionless). Default is3.5.wEE (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – E→E coupling strength. Default is12..wIE (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – E→I coupling strength. Default is4..wEI (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – I→E coupling strength. Default is13..wII (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – I→I coupling strength. Default is11..wME (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – E→M coupling strength. Default is8..wMI (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – I→M coupling strength. Default is6..wEM (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – M→E coupling strength (modulatory excitation). Default is4..wIM (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – M→I coupling strength (modulatory excitation). Default is2..wMM (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – M→M self-coupling strength. Default is2..r (
Callable|Array|ndarray|bool|number|bool|int|float|complex|Quantity|Param) – Refractory parameter for all populations. Default is1..noise_E (
Noise) – Additive noise for excitatory population. Default isNone.noise_I (
Noise) – Additive noise for inhibitory population. Default isNone.noise_M (
Noise) – Additive noise for modulatory population. Default isNone.rE_init (
Callable) – Initializer forrE. Default isbraintools.init.Constant(0.0).rI_init (
Callable) – Initializer forrI. Default isbraintools.init.Constant(0.0).rM_init (
Callable) – Initializer forrM. Default isbraintools.init.Constant(0.0).method (
str) – Numerical integration method. Default is'exp_euler'.
- Return type:
Any
- rE#
Excitatory population activity (dimensionless).
- Type:
brainstate.HiddenState
- rI#
Inhibitory population activity (dimensionless).
- Type:
brainstate.HiddenState
- rM#
Modulatory population activity (dimensionless).
- Type:
brainstate.HiddenState
Notes
The continuous-time three-population Wilson-Cowan equations are
\[\tau_E \frac{dr_E}{dt} = -r_E(t) + \bigl[1 - r\, r_E(t)\bigr] F_E\bigl(w_{EE} r_E(t) - w_{EI} r_I(t) + w_{EM} r_M(t) + I_E(t)\bigr),\]\[\tau_I \frac{dr_I}{dt} = -r_I(t) + \bigl[1 - r\, r_I(t)\bigr] F_I\bigl(w_{IE} r_E(t) - w_{II} r_I(t) + w_{IM} r_M(t) + I_I(t)\bigr),\]\[\tau_M \frac{dr_M}{dt} = -r_M(t) + \bigl[1 - r\, r_M(t)\bigr] F_M\bigl(w_{ME} r_E(t) - w_{MI} r_I(t) + w_{MM} r_M(t) + I_M(t)\bigr),\]with the sigmoidal transfer function
\[F_j(x) = \frac{1}{1 + e^{-a_j (x - \theta_j)}} - \frac{1}{1 + e^{a_j \theta_j}},\quad j \in \{E, I, M\}.\]The modulatory population provides excitatory modulation to both E and I populations, modeling attention, arousal, or neuromodulatory effects.
References
Examples
>>> import brainmass >>> import brainunit as u >>> model = brainmass.WilsonCowanThreePopulationStep( ... in_size=100, ... tau_M=2.*u.ms, ... wEM=4.0 ... )
- __init__(in_size, tau_E=Quantity(1., 'ms'), a_E=1.2, theta_E=2.8, tau_I=Quantity(1., 'ms'), a_I=1.0, theta_I=4.0, tau_M=Quantity(2., 'ms'), a_M=1.0, theta_M=3.5, wEE=12.0, wIE=4.0, wEI=13.0, wII=11.0, wME=8.0, wMI=6.0, wEM=4.0, wIM=2.0, wMM=2.0, r=1.0, noise_E=None, noise_I=None, noise_M=None, rE_init=Constant(value=0.0), rI_init=Constant(value=0.0), rM_init=Constant(value=0.0), method='exp_euler')[source]#
- Parameters:
tau_E (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
a_E (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
theta_E (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
tau_I (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
a_I (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
theta_I (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
tau_M (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
a_M (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
theta_M (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
wEE (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
wIE (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
wEI (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
wII (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
wME (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
wMI (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
wEM (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
wIM (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
wMM (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
r (Callable | Array | ndarray | bool | number | bool | int | float | complex | Quantity | Param)
noise_E (Noise)
noise_I (Noise)
noise_M (Noise)
rE_init (Callable)
rI_init (Callable)
rM_init (Callable)
method (str)
- drE(rE, rI, rM, ext)[source]#
Right-hand side for the excitatory population.
Must be implemented by subclasses.