brainpy.dyn.neurons.GIF#

class brainpy.dyn.neurons.GIF(size, V_rest=- 70.0, V_reset=- 70.0, V_th_inf=- 50.0, V_th_reset=- 60.0, R=20.0, tau=20.0, a=0.0, b=0.01, k1=0.2, k2=0.02, R1=0.0, R2=1.0, A1=0.0, A2=0.0, V_initializer=OneInit(value=- 70.0), I1_initializer=ZeroInit, I2_initializer=ZeroInit, Vth_initializer=OneInit(value=- 50.0), method='exp_auto', keep_size=False, name=None)[source]#

Generalized Integrate-and-Fire model.

Model Descriptions

The generalized integrate-and-fire model 1 is given by

\[ \begin{align}\begin{aligned}&\frac{d I_j}{d t} = - k_j I_j\\&\frac{d V}{d t} = ( - (V - V_{rest}) + R\sum_{j}I_j + RI) / \tau\\&\frac{d V_{th}}{d t} = a(V - V_{rest}) - b(V_{th} - V_{th\infty})\end{aligned}\end{align} \]

When \(V\) meet \(V_{th}\), Generalized IF neuron fires:

\[ \begin{align}\begin{aligned}&I_j \leftarrow R_j I_j + A_j\\&V \leftarrow V_{reset}\\&V_{th} \leftarrow max(V_{th_{reset}}, V_{th})\end{aligned}\end{align} \]

Note that \(I_j\) refers to arbitrary number of internal currents.

Model Examples

Model Parameters

Parameter

Init Value

Unit

Explanation

V_rest

-70

mV

Resting potential.

V_reset

-70

mV

Reset potential after spike.

V_th_inf

-50

mV

Target value of threshold potential \(V_{th}\) updating.

V_th_reset

-60

mV

Free parameter, should be larger than \(V_{reset}\).

R

20

Membrane resistance.

tau

20

ms

Membrane time constant. Compute by \(R * C\).

a

0

Coefficient describes the dependence of \(V_{th}\) on membrane potential.

b

0.01

Coefficient describes \(V_{th}\) update.

k1

0.2

Constant pf \(I1\).

k2

0.02

Constant of \(I2\).

R1

0

Free parameter. Describes dependence of \(I_1\) reset value on \(I_1\) value before spiking.

R2

1

Free parameter. Describes dependence of \(I_2\) reset value on \(I_2\) value before spiking.

A1

0

Free parameter.

A2

0

Free parameter.

Model Variables

Variables name

Initial Value

Explanation

V

-70

Membrane potential.

input

0

External and synaptic input current.

spike

False

Flag to mark whether the neuron is spiking.

V_th

-50

Spiking threshold potential.

I1

0

Internal current 1.

I2

0

Internal current 2.

t_last_spike

-1e7

Last spike time stamp.

References

1

Mihalaş, Ştefan, and Ernst Niebur. “A generalized linear integrate-and-fire neural model produces diverse spiking behaviors.” Neural computation 21.3 (2009): 704-718.

2

Teeter, Corinne, Ramakrishnan Iyer, Vilas Menon, Nathan Gouwens, David Feng, Jim Berg, Aaron Szafer et al. “Generalized leaky integrate-and-fire models classify multiple neuron types.” Nature communications 9, no. 1 (2018): 1-15.

__init__(size, V_rest=- 70.0, V_reset=- 70.0, V_th_inf=- 50.0, V_th_reset=- 60.0, R=20.0, tau=20.0, a=0.0, b=0.01, k1=0.2, k2=0.02, R1=0.0, R2=1.0, A1=0.0, A2=0.0, V_initializer=OneInit(value=- 70.0), I1_initializer=ZeroInit, I2_initializer=ZeroInit, Vth_initializer=OneInit(value=- 50.0), method='exp_auto', keep_size=False, name=None)[source]#

Methods

__init__(size[, V_rest, V_reset, V_th_inf, ...])

dI1(I1, t)

dI2(I2, t)

dV(V, t, I1, I2, I_ext)

dVth(V_th, t, V)

get_delay_data(name, delay_step, *indices)

Get delay data according to the provided delay steps.

ints([method])

Collect all integrators in this node and the children nodes.

load_states(filename[, verbose])

Load the model states.

nodes([method, level, include_self])

Collect all children nodes.

register_delay(name, delay_step, delay_target)

Register delay variable.

register_implicit_nodes(nodes)

register_implicit_vars(variables)

reset()

Reset function which reset the whole variables in the model.

reset_delay(name, delay_target)

Reset the delay variable.

save_states(filename[, variables])

Save the model states.

train_vars([method, level, include_self])

The shortcut for retrieving all trainable variables.

unique_name([name, type_])

Get the unique name for this object.

update(t, dt)

The function to specify the updating rule.

update_delay(name, delay_data)

Update the delay according to the delay data.

vars([method, level, include_self])

Collect all variables in this node and the children nodes.

Attributes

derivative

global_delay_vars

name

steps