sigmoid_rate_ipn#

class brainpy.state.sigmoid_rate_ipn(in_size, tau=Quantity(10., 'ms'), lambda_=1.0, sigma=1.0, mu=0.0, g=1.0, beta=1.0, theta=0.0, mult_coupling=False, 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 sigmoid_rate_ipn nonlinear rate neuron with input noise.

Description

sigmoid_rate_ipn implements NEST’s sigmoid_rate_ipn model:

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

where the gain function is

\[\phi(h)=\frac{g}{1+\exp[-\beta(h-\theta)]}.\]

This model corresponds to NEST’s input-noise rate neuron template instantiated with sigmoid_rate nonlinearity. Multiplicative coupling factors are fixed to one for this model (the flag is kept for compatibility).

Update ordering (matching NEST ``rate_neuron_ipn`` with sigmoid nonlinearity)

Per simulation step:

  1. Store outgoing delayed value as current rate.

  2. Draw noise = sigma * xi.

  3. Propagate intrinsic dynamics with stochastic exponential Euler (Euler-Maruyama for lambda=0).

  4. Read delayed and instantaneous buffers.

  5. Apply input contributions: - linear_summation=True: apply sigmoid to branch sums. - linear_summation=False: apply sigmoid per event before summation.

  6. Apply rectification when rectify_output=True.

  7. Store outgoing instantaneous value as updated 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) – Gain (amplitude) of the sigmoid nonlinearity. Default 1.0.

  • beta (float, optional) – Slope parameter of sigmoid nonlinearity. Default 1.0.

  • theta (float, optional) – Threshold (horizontal shift) of sigmoid nonlinearity. Default 0.0.

  • mult_coupling (bool, optional) – Kept for NEST compatibility. For sigmoid_rate this switch has no effect because multiplicative coupling factors are identically 1.

  • linear_summation (bool, optional) – If True apply sigmoid to summed branch inputs; if False apply sigmoid to each event before weighted summation.

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

  • rectify_output (bool, optional) – If True clamp updated 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 use integer delay_steps.

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

init_state(**kwargs)[source]#

State initialization function.