hh_cond_exp_traub
hh_cond_exp_traub - Hodgkin-Huxley model for Brette et al (2007) review
Description
hh_cond_exp_traub is an implementation of a modified Hodgkin-Huxley model.
This model was specifically developed for a major review of simulators 1, based on a model of hippocampal pyramidal cells by Traub and Miles 2. The key differences between the current model and the model in 2 are:
This model is a point neuron, not a compartmental model.
This model includes only I_Na and I_K, with simpler I_K dynamics than in 2, so it has only three instead of eight gating variables; in particular, all Ca dynamics have been removed.
Incoming spikes induce an instantaneous conductance change followed by exponential decay instead of activation over time.
This model is primarily provided as reference implementation for hh_coba example of the Brette et al (2007) review. Default parameter values are chosen to match those used with NEST 1.9.10 when preparing data for 1. Code for all simulators covered is available from ModelDB 3.
Note: In this model, a spike is emitted if \(V_m >= V_T + 30\) mV and \(V_m\) has fallen during the current time step.
To avoid that this leads to multiple spikes during the falling flank of a spike, it is essential to choose a sufficiently long refractory period. Traub and Miles used \(t_{ref} = 3\) ms [2, p 118], while we used \(t_{ref} = 2\) ms in 2.
References
- 1(1,2)
Brette R et al. (2007). Simulation of networks of spiking neurons: A review of tools and strategies. Journal of Computational Neuroscience 23:349-98. DOI: https://doi.org/10.1007/s10827-007-0038-6
- 2(1,2,3,4)
Traub RD and Miles R (1991). Neuronal networks of the hippocampus. Cambridge University Press, Cambridge UK.
- 3
See also
hh_psc_alpha
Parameters
Name |
Physical unit |
Default value |
Description |
---|---|---|---|
g_Na |
nS |
20000nS |
Na Conductance |
g_K |
nS |
6000nS |
K Conductance |
g_L |
nS |
10nS |
Leak Conductance |
C_m |
pF |
200pF |
Membrane Capacitance |
E_Na |
mV |
50mV |
Reversal potentials |
E_K |
mV |
-90mV |
Potassium reversal potential |
E_L |
mV |
-60mV |
Leak reversal potential (aka resting potential) |
V_T |
mV |
-63mV |
Voltage offset that controls dynamics. For default |
tau_syn_exc |
ms |
5ms |
parameters, V_T = -63 mV results in a threshold around -50 mV.Synaptic time constant of excitatory synapse |
tau_syn_inh |
ms |
10ms |
Synaptic time constant of inhibitory synapse |
t_ref |
ms |
2ms |
Refractory period |
E_exc |
mV |
0mV |
Excitatory synaptic reversal potential |
E_inh |
mV |
-80mV |
Inhibitory synaptic reversal potential |
alpha_n_init |
1 / ms |
0.032 / (ms * mV) * (15.0mV - E_L) / (exp((15.0mV - E_L) / 5.0mV) - 1.0) |
|
beta_n_init |
1 / ms |
0.5 / ms * exp((10.0mV - E_L) / 40.0mV) |
|
alpha_m_init |
1 / ms |
0.32 / (ms * mV) * (13.0mV - E_L) / (exp((13.0mV - E_L) / 4.0mV) - 1.0) |
|
beta_m_init |
1 / ms |
0.28 / (ms * mV) * (E_L - 40.0mV) / (exp((E_L - 40.0mV) / 5.0mV) - 1.0) |
|
alpha_h_init |
1 / ms |
0.128 / ms * exp((17.0mV - E_L) / 18.0mV) |
|
beta_h_init |
1 / ms |
(4.0 / (1.0 + exp((40.0mV - E_L) / 5.0mV))) / ms |
|
I_e |
pA |
0pA |
constant external input current |
State variables
Name |
Physical unit |
Default value |
Description |
---|---|---|---|
r |
integer |
0 |
counts number of tick during the refractory period |
V_m |
mV |
E_L |
Membrane potential |
Act_m |
real |
alpha_m_init / (alpha_m_init + beta_m_init) |
|
Act_h |
real |
alpha_h_init / (alpha_h_init + beta_h_init) |
|
Inact_n |
real |
alpha_n_init / (alpha_n_init + beta_n_init) |
Equations
Source code
neuron hh_cond_exp_traub:
state:
r integer = 0 # counts number of tick during the refractory period
V_m mV = E_L # Membrane potential
Act_m real = alpha_m_init / (alpha_m_init + beta_m_init)
Act_h real = alpha_h_init / (alpha_h_init + beta_h_init)
Inact_n real = alpha_n_init / (alpha_n_init + beta_n_init)
end
equations:
# synapses: exponential conductance
kernel g_inh = exp(-t / tau_syn_inh)
kernel g_exc = exp(-t / tau_syn_exc)
# Add aliases to simplify the equation definition of V_m
inline I_Na pA = g_Na * Act_m * Act_m * Act_m * Act_h * (V_m - E_Na)
inline I_K pA = g_K * Inact_n * Inact_n * Inact_n * Inact_n * (V_m - E_K)
inline I_L pA = g_L * (V_m - E_L)
inline I_syn_exc pA = convolve(g_exc,exc_spikes) * (V_m - E_exc)
inline I_syn_inh pA = convolve(g_inh,inh_spikes) * (V_m - E_inh)
V_m'=(-I_Na - I_K - I_L - I_syn_exc - I_syn_inh + I_e + I_stim) / C_m
# channel dynamics
inline V_rel mV = V_m - V_T
inline alpha_n 1/ms = 0.032 / (ms * mV) * (15.0mV - V_rel) / (exp((15.0mV - V_rel) / 5.0mV) - 1.0)
inline beta_n 1/ms = 0.5 / ms * exp((10.0mV - V_rel) / 40.0mV)
inline alpha_m 1/ms = 0.32 / (ms * mV) * (13.0mV - V_rel) / (exp((13.0mV - V_rel) / 4.0mV) - 1.0)
inline beta_m 1/ms = 0.28 / (ms * mV) * (V_rel - 40.0mV) / (exp((V_rel - 40.0mV) / 5.0mV) - 1.0)
inline alpha_h 1/ms = 0.128 / ms * exp((17.0mV - V_rel) / 18.0mV)
inline beta_h 1/ms = (4.0 / (1.0 + exp((40.0mV - V_rel) / 5.0mV))) / ms
Act_m'=(alpha_m - (alpha_m + beta_m) * Act_m)
Act_h'=(alpha_h - (alpha_h + beta_h) * Act_h)
Inact_n'=(alpha_n - (alpha_n + beta_n) * Inact_n)
end
parameters:
g_Na nS = 20000nS # Na Conductance
g_K nS = 6000nS # K Conductance
g_L nS = 10nS # Leak Conductance
C_m pF = 200pF # Membrane Capacitance
E_Na mV = 50mV # Reversal potentials
E_K mV = -90mV # Potassium reversal potential
E_L mV = -60mV # Leak reversal potential (aka resting potential)
V_T mV = -63mV # Voltage offset that controls dynamics. For default
# parameters, V_T = -63 mV results in a threshold around -50 mV.
# parameters, V_T = -63 mV results in a threshold around -50 mV.
tau_syn_exc ms = 5ms # Synaptic time constant of excitatory synapse
tau_syn_inh ms = 10ms # Synaptic time constant of inhibitory synapse
t_ref ms = 2ms # Refractory period
E_exc mV = 0mV # Excitatory synaptic reversal potential
E_inh mV = -80mV # Inhibitory synaptic reversal potential
alpha_n_init 1/ms = 0.032 / (ms * mV) * (15.0mV - E_L) / (exp((15.0mV - E_L) / 5.0mV) - 1.0)
beta_n_init 1/ms = 0.5 / ms * exp((10.0mV - E_L) / 40.0mV)
alpha_m_init 1/ms = 0.32 / (ms * mV) * (13.0mV - E_L) / (exp((13.0mV - E_L) / 4.0mV) - 1.0)
beta_m_init 1/ms = 0.28 / (ms * mV) * (E_L - 40.0mV) / (exp((E_L - 40.0mV) / 5.0mV) - 1.0)
alpha_h_init 1/ms = 0.128 / ms * exp((17.0mV - E_L) / 18.0mV)
beta_h_init 1/ms = (4.0 / (1.0 + exp((40.0mV - E_L) / 5.0mV))) / ms
# constant external input current
I_e pA = 0pA
end
internals:
RefractoryCounts integer = steps(t_ref)
end
input:
inh_spikes nS <-inhibitory spike
exc_spikes nS <-excitatory spike
I_stim pA <-current
end
output: spike
update:
U_old mV = V_m
integrate_odes()
# sending spikes: crossing 0 mV, pseudo-refractoriness and local maximum...
if r > 0:
r -= 1
elif V_m > V_T + 30mV and U_old > V_m:
r = RefractoryCounts
emit_spike()
end
end
end