Neural Models

A variety of neuron models are available to use within SNS-Toolbox, each with different dynamics.

Non-Spiking Neuron

Non-spiking neurons are simulated as leaky integrators, where the membrane depolarization (\(V\)) behaves according to the differential equation

\[C_m \cdot \frac{dV}{dt} = -G_m\cdot \left (V - V_{rest} \right ) + \sum I_{syn} + I_{bias} + I_{app},\]

where \(C_m\) is the membrane capacitance, \(G_m\) is the membrane leak conductance, \(V_{rest}\) is the resting potential, \(I_{bias}\) is a constant offset current, \(I_{app}\) is an external applied current, and \(I_{syn}\) is the current induced by an incoming conductance-based or electrical synapse.

Default values are as follows:

  • \(C_m = 5 nF\)

  • \(G_m = 1 \mu S\)

  • \(V_{rest} = 0 mV\)

  • \(I_{bias} = 0 mV\)

This neuron can be implemented using sns_toolbox.neurons.NonSpikingNeuron.

Spiking Neuron

Spiking neurons have similar dynamics to the classic non-spiking neuron, with an additional dynamic variable (\(\theta\)) that acts as a firing threshold:

\[ \begin{align}\begin{aligned}C_{m} \cdot \frac{dV}{dt} = -G_{m}\cdot \left (V - V_{rest} \right ) + \sum I_{syn} + I_{bias} + I_{app}\\\tau_{\theta}\frac{d\theta}{dt} = b\cdot(-\theta + \theta_0) + m\cdot \left (V - V_{rest} \right )\end{aligned}\end{align} \]

where \(\tau_{\theta}\) is a threshold time constant, \(b\) is the threshold leak rate, \(\theta_0\) is an initial threshold voltage, and \(m\) is a proportionality constant describing how changes in \(U\) affect \(\theta\). These dynamics produce spiking behavior using the spiking variable \(\delta\), which represents a spike. When a spike occurs, the membrane is set to \(V_{reset}\) and the threshold is incremented by \(\theta_{inc}\):

\[ \begin{align}\begin{aligned}\begin{split}\delta = \begin{cases} 1, & V\geq\theta\\ 0, & \text{otherwise}. \end{cases}\end{split}\\\text{if $\delta=1, V_{reset}\leftarrow V, max(\theta+\theta_{inc}, \theta_{reset})\leftarrow \theta$.}\end{aligned}\end{align} \]

Default values are as follows:

  • \(\tau_{\theta} = 5 ms\)

  • \(\theta_0 = 1 mV\)

  • \(m = 0\)

  • \(b = 1\)

  • \(\theta_{inc}=0\)

  • \(\theta_{floor}=V_{rest}\)

  • \(V_{reset}=V_{rest}\)

This neuron can be implemented using sns_toolbox.neurons.SpikingNeuron.

Non-Spiking Neuron with Gated Ion Channels

These neurons share the same dynamics as the classic non-spiking neuron, with additional ionic currents \(I_{ion}\).

\[C_{m} \cdot \frac{dV}{dt} = -G_{m}\cdot \left (V - V_{rest} \right ) + \sum I_{syn} + I_{bias} + I_{app} + I_{ion}\]

\(I_{ion}\) represents currents flowing through voltage-gated ion channels, which can be responsible for additional nonlinear behavior:

\[I_{ion} = \sum_j G_{ion,j} \cdot a_{\infty,j}(V) \cdot b_j^{p_{b,j}} \cdot c_j^{p_{c,j}} \cdot \left ( E_{ion,j}-V \right )\]

Any neuron within a network can have any number of ion channels. \(G_{ion,j}\) is the maximum ionic conductance of the jth ion channel, and \(E_{ion,j}\) is the ionic reversal potential. \(b\) and \(c\) are dynamical gating variables, and have the following dynamics:

\[\frac{dz_j}{dt} = \frac{z_{\infty,j}(V) - z_j}{\tau_{z,j}(V)},\]

where functions of the form \(z_{\infty,j}\) are a voltage-dependent steady-state

\[z_{\infty,j} = \frac{1}{1 + K_{z,j} \cdot \text{exp}\left ( S_{z,j} \cdot \left ( E_{z,j} - V \right ) \right )}\]

and \(\tau_{z,j}(V)\) is a voltage-dependent time constant

\[\tau_{z,j}(V) = \tau_{max,z,j} \cdot z_{\infty,j}(V) \cdot \sqrt{K_{z,j} \cdot \text{exp}\left ( S_{z,j} \cdot \left ( E_{z,j} - V \right ) \right )}.\]

\(p\) denotes an exponent, and \(E_{z,j}\) is the gate reversal potential. \(K_{z,j}\) and \(S_{z,j}\) are parameters for shaping the \(z_{\infty,j}(V)\) and \(\tau_{z,j}(V)\) curves. \(\tau_{max,z,j}\) is the maximum value of \(\tau_{z,j}(V)\).

This neuron can be implemented using sns_toolbox.neurons.NonSpikingNeuronWithGatedChannels.

Non-Spiking Neuron with Persistent Sodium Channel

These neurons are a special case of the non-spiking neuron with gated ion channels:

\[C_{m} \cdot \frac{dV}{dt} = -G_{m}\cdot \left (V - V_{rest} \right ) + \sum I_{syn} + I_{bias} + I_{app} + \sum_j G_{Na,j} \cdot m_{\infty,j}(V) \cdot h_j \cdot \left ( E_{Na,j}-V \right )\]

Default values of the channel are as follows:

  • \(G_{Na} = 1.049 \mu S\)

  • \(p_{h} = 1\)

  • \(E_{Na} = 110mV\)

  • \(K_m = 1\)

  • \(S_m = \frac{1}{2}\)

  • \(E_m = 20mV\)

  • \(K_h = \frac{1}{2}\)

  • \(S_h = -\frac{1}{2}\)

  • \(E_h = 0mV\)

  • \(\tau_{max,h} = 300ms\)

This neuron can be implemented using sns_toolbox.neurons.NonSpikingNeuronWithPersisitentSodiumChannel