lin_rate_ipn

lin_rate_ipn#

class brainpy.state.lin_rate_ipn(in_size, tau=Quantity(10., 'ms'), lambda_=1.0, sigma=1.0, mu=0.0, g=1.0, mult_coupling=False, g_ex=1.0, g_in=1.0, theta_ex=0.0, theta_in=0.0, linear_summation=True, rectify_rate=0.0, rectify_output=False, rate_initializer=Constant(value=0.0), noise_initializer=Constant(value=0.0), name=None)#

NEST-compatible lin_rate_ipn linear rate neuron with input noise.

Description

lin_rate_ipn implements NEST’s linear rate neuron with input noise:

\[\tau\, dX(t) = \left[-\lambda X(t) + \mu + \phi(\cdot)\right] dt + \left[\sqrt{\tau}\,\sigma\right] dW(t),\]

where \(\phi(h)=g\,h\).

The model supports:

  • additive mean drive mu (plus optional runtime input x),

  • Gaussian input noise (sigma),

  • optional multiplicative coupling,

  • linear/nonlinear summation mode (linear_summation),

  • optional output rectification (rectify_output).

Update ordering (matching NEST ``rate_neuron_ipn``)

For each simulation step:

  1. Compute noise sample noise = sigma * xi.

  2. Propagate intrinsic dynamics with stochastic exponential Euler (or Euler-Maruyama when lambda=0).

  3. Read delayed and instantaneous rate-event buffers.

  4. Apply linear input nonlinearity and optional multiplicative coupling.

  5. Apply output rectification (if enabled).

  6. Store outputs analogous to NEST events: delayed_rate (pre-update rate), instant_rate (post-update rate).

Parameters:
  • in_size (Size) – Population shape.

  • tau (Quantity[ms], optional) – Time constant of rate dynamics. Default 10 ms.

  • lambda_ (float, optional) – Passive decay rate \(\lambda\). Default 1.0.

  • sigma (float, optional) – Input noise scale. Default 1.0.

  • mu (float, optional) – Mean drive. Default 0.0.

  • g (float, optional) – Input gain \(g\). Default 1.0.

  • mult_coupling (bool, optional) – Enable multiplicative coupling. Default False.

  • g_ex (float, optional) – Parameters of multiplicative coupling factors g_ex * (theta_ex - rate) and g_in * (theta_in + rate).

  • g_in (float, optional) – Parameters of multiplicative coupling factors g_ex * (theta_ex - rate) and g_in * (theta_in + rate).

  • theta_ex (float, optional) – Parameters of multiplicative coupling factors g_ex * (theta_ex - rate) and g_in * (theta_in + rate).

  • theta_in (float, optional) – Parameters of multiplicative coupling factors g_ex * (theta_ex - rate) and g_in * (theta_in + rate).

  • linear_summation (bool, optional) – If True apply input nonlinearity to summed input; if False to each input branch before coupling. For linear nonlinearity both are mathematically equivalent.

  • rectify_rate (float, optional) – Lower bound used when rectify_output=True. Default 0.0.

  • rectify_output (bool, optional) – If True clamp output rate to >= rectify_rate.

  • rate_initializer (Callable, optional) – Initializer for rate. Default Constant(0.0).

  • noise_initializer (Callable, optional) – Initializer for noise. Default Constant(0.0).

  • name (str, optional) – Module name.

Notes

Runtime events:

  • instant_rate_events are applied in the current step.

  • delayed_rate_events are scheduled by integer delay_steps: value 1 means next step, 2 means two steps later, etc.

  • Event format can be dict or tuple: (rate, weight), (rate, weight, delay_steps), (rate, weight, delay_steps, multiplicity).

init_state(**kwargs)[source]#

State initialization function.