brainpy.neurons.Izhikevich#

class brainpy.neurons.Izhikevich(*args, input_var=True, spike_fun=None, **kwargs)[source]#

The Izhikevich neuron model.

Model Descriptions

The dynamics of the Izhikevich neuron model [1] [2] is given by:

\begin{align}\begin{aligned}\frac{d V}{d t} &= 0.04 V^{2}+5 V+140-u+I\\\frac{d u}{d t} &=a(b V-u)\end{aligned}\end{align}
$\begin{split}\text{if} v \geq 30 \text{mV}, \text{then} \begin{cases} v \leftarrow c \\ u \leftarrow u+d \end{cases}\end{split}$

Model Examples

Model Parameters

 Parameter Init Value Unit Explanation a 0.02 It determines the time scale of the recovery variable $$u$$. b 0.2 It describes the sensitivity of the recovery variable $$u$$ to the sub-threshold fluctuations of the membrane potential $$v$$. c -65 It describes the after-spike reset value of the membrane potential $$v$$ caused by the fast high-threshold $$K^{+}$$ conductance. d 8 It describes after-spike reset of the recovery variable $$u$$ caused by slow high-threshold $$Na^{+}$$ and $$K^{+}$$ conductance. tau_ref 0 ms Refractory period length. [ms] V_th 30 mV The membrane potential threshold.

Model Variables

 Variables name Initial Value Explanation V -65 Membrane potential. u 1 Recovery variable. input 0 External and synaptic input current. spike False Flag to mark whether the neuron is spiking. refractory False Flag to mark whether the neuron is in refractory period. t_last_spike -1e7 Last spike time stamp.

References

__init__(*args, input_var=True, spike_fun=None, **kwargs)[source]#

Methods

 __init__(*args[, input_var, spike_fun]) add_aft_update(key, fun) Add the after update into this node add_bef_update(key, fun) Add the before update into this node add_inp_fun(key, fun[, label, category]) Add an input function. clear_input() Empty function of clearing inputs. cpu() Move all variable into the CPU device. cuda() Move all variables into the GPU device. dV(V, t, u, I) du(u, t, V) get_aft_update(key) Get the after update of this node by the given key. get_batch_shape([batch_size]) get_bef_update(key) Get the before update of this node by the given key. get_delay_data(identifier, delay_pos, *indices) Get delay data according to the provided delay steps. get_delay_var(name) get_inp_fun(key) Get the input function. get_local_delay(var_name, delay_name) Get the delay at the given identifier (name). has_aft_update(key) Whether this node has the after update of the given key. has_bef_update(key) Whether this node has the before update of the given key. init_param(param[, shape, sharding]) Initialize parameters. init_variable(var_data, batch_or_mode[, ...]) Initialize variables. inv_scaling(x[, scale]) jit_step_run(i, *args, **kwargs) The jitted step function for running. load_state(state_dict, **kwargs) Load states from a dictionary. load_state_dict(state_dict[, warn, compatible]) Copy parameters and buffers from state_dict into this module and its descendants. nodes([method, level, include_self]) Collect all children nodes. offset_scaling(x[, bias, scale]) register_delay(identifier, delay_step, ...) Register delay variable. register_implicit_nodes(*nodes[, node_cls]) register_implicit_vars(*variables[, var_cls]) register_local_delay(var_name, delay_name[, ...]) Register local relay at the given delay time. reset(*args, **kwargs) Reset function which reset the whole variables in the model (including its children models). reset_local_delays([nodes]) Reset local delay variables. reset_state([batch_size]) return_info() save_state(**kwargs) Save states as a dictionary. setattr(key, value) rtype: None state_dict(**kwargs) Returns a dictionary containing a whole state of the module. std_scaling(x[, scale]) step_run(i, *args, **kwargs) The step run function. sum_current_inputs(*args[, init, label]) Summarize all current inputs by the defined input functions .current_inputs. sum_delta_inputs(*args[, init, label]) Summarize all delta inputs by the defined input functions .delta_inputs. sum_inputs(*args, **kwargs) to(device) Moves all variables into the given device. tpu() Move all variables into the TPU device. tracing_variable(name, init, shape[, ...]) Initialize the variable which can be traced during computations and transformations. train_vars([method, level, include_self]) The shortcut for retrieving all trainable variables. tree_flatten() Flattens the object as a PyTree. tree_unflatten(aux, dynamic_values) Unflatten the data to construct an object of this class. unique_name([name, type_]) Get the unique name for this object. update([x]) The function to specify the updating rule. update_local_delays([nodes]) Update local delay variables. vars([method, level, include_self, ...]) Collect all variables in this node and the children nodes.

Attributes

 after_updates before_updates cur_inputs current_inputs delta_inputs derivative implicit_nodes implicit_vars mode Mode of the model, which is useful to control the multiple behaviors of the model. name Name of the model. spk_dtype supported_modes Supported computing modes. varshape The shape of variables in the neuron group.