# 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. 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. vars([method, level, include_self]) Collect all variables in this node and the children nodes.

Attributes

 derivative global_delay_targets global_delay_vars name steps