traub_psc_alpha

Name: traub_psc_alpha - Traub model according to Borgers 2017.

Reduced Traub-Miles Model of a Pyramidal Neuron in Rat Hippocampus[1]. parameters got from reference [2].

  1. Post-synaptic currents

Incoming spike events induce a post-synaptic change of current modelled by an alpha function.

  1. Spike Detection

Spike detection is done by a combined threshold-and-local-maximum search: if there is a local maximum above a certain threshold of the membrane potential, it is considered a spike.

References:

[1] R. D. Traub and R. Miles, Neuronal Networks of the Hippocampus,Cam- bridge University Press, Cambridge, UK, 1991. [2] Borgers, C., 2017. An introduction to modeling neuronal dynamics (Vol. 66). Cham: Springer.

SeeAlso: hh_cond_exp_traub

Parameters

Name

Physical unit

Default value

Description

t_ref

ms

2.0ms

Refractory period 2.0

g_Na

nS

10000.0nS

Sodium peak conductance

g_K

nS

8000.0nS

Potassium peak conductance

g_L

nS

10nS

Leak conductance

C_m

pF

100.0pF

Membrane Capacitance

E_Na

mV

50.0mV

Sodium reversal potential

E_K

mV

-100.0mV

Potassium reversal potentia

E_L

mV

-67.0mV

Leak reversal Potential (aka resting potential)

V_Tr

mV

-20.0mV

Spike Threshold

tau_syn_ex

ms

0.2ms

Rise time of the excitatory synaptic alpha function i

tau_syn_in

ms

2.0ms

Rise time of the inhibitory synaptic alpha function

I_e

pA

0pA

constant external input current

State variables

Name

Physical unit

Default value

Description

V_m

mV

-70.0mV

Membrane potential

alpha_n_init

real

0.032 * (V_m / mV + 52.0) / (1.0 - exp(-(V_m / mV + 52.0) / 5.0))

beta_n_init

real

0.5 * exp(-(V_m / mV + 57.0) / 40.0)

alpha_m_init

real

0.32 * (V_m / mV + 54.0) / (1.0 - exp(-(V_m / mV + 54.0) / 4.0))

beta_m_init

real

0.28 * (V_m / mV + 27.0) / (exp((V_m / mV + 27.0) / 5.0) - 1.0)

alpha_h_init

real

0.128 * exp(-(V_m / mV + 50.0) / 18.0)

beta_h_init

real

4.0 / (1.0 + exp(-(V_m / mV + 27.0) / 5.0))

Act_m

real

alpha_m_init / (alpha_m_init + beta_m_init)

Activation variable m for Na

Inact_h

real

alpha_h_init / (alpha_h_init + beta_h_init)

Inactivation variable h for Na

Act_n

real

alpha_n_init / (alpha_n_init + beta_n_init)

Activation variable n for K

Equations

\[\frac{ dV_{m} } { dt }= \frac 1 { C_{m} } \left( { (-(I_{Na} + I_{K} + I_{L}) + I_{e} + I_{stim} + I_{syn,inh} + I_{syn,exc}) } \right)\]
\[\frac{ dAct_{n} } { dt }= \frac 1 { \mathrm{ms} } \left( { (\alpha_{n} \cdot (1 - Act_{n}) - \beta_{n} \cdot Act_{n}) } \right)\]
\[\frac{ dAct_{m} } { dt }= \frac 1 { \mathrm{ms} } \left( { (\alpha_{m} \cdot (1 - Act_{m}) - \beta_{m} \cdot Act_{m}) } \right)\]
\[\frac{ dInact_{h} } { dt }= \frac 1 { \mathrm{ms} } \left( { (\alpha_{h} \cdot (1 - Inact_{h}) - \beta_{h} \cdot Inact_{h}) } \right)\]

Source code

neuron traub_psc_alpha:
  state:
    r integer = 0 # number of steps in the current refractory phase

    V_m mV = -70. mV # Membrane potential

    Act_m real =  alpha_m_init / ( alpha_m_init + beta_m_init )     # Activation variable m for Na
    Inact_h real = alpha_h_init / ( alpha_h_init + beta_h_init )    # Inactivation variable h for Na
    Act_n real =  alpha_n_init / ( alpha_n_init + beta_n_init )     # Activation variable n for K
  end

  equations:
    # synapses: alpha functions
    kernel I_syn_in = (e/tau_syn_in) * t * exp(-t/tau_syn_in)
    kernel I_syn_ex = (e/tau_syn_ex) * t * exp(-t/tau_syn_ex)

    inline I_syn_exc pA = convolve(I_syn_ex, spikeExc)
    inline I_syn_inh pA = convolve(I_syn_in, spikeInh)
    inline I_Na  pA = g_Na * Act_m * Act_m * Act_m * Inact_h * ( V_m - E_Na )
    inline I_K   pA  = g_K * Act_n * Act_n * Act_n * Act_n * ( V_m - E_K )
    inline I_L   pA = g_L * ( V_m - E_L )
    V_m' = ( -( I_Na + I_K + I_L ) + I_e + I_stim + I_syn_inh + I_syn_exc ) / C_m

    # Act_n
    inline alpha_n real = 0.032 * (V_m / mV + 52.) / (1. - exp(-(V_m / mV + 52.) / 5.))
    inline beta_n  real = 0.5 * exp(-(V_m / mV + 57.) / 40.)
    Act_n' = ( alpha_n * ( 1 - Act_n ) - beta_n * Act_n ) / ms # n-variable

    # Act_m
    inline alpha_m real = 0.32 * (V_m / mV + 54.) / (1.0 - exp(-(V_m / mV + 54.) / 4.))
    inline beta_m  real = 0.28 * (V_m / mV + 27.) / (exp((V_m / mV + 27.) / 5.) - 1.)
    Act_m' = ( alpha_m * ( 1 - Act_m ) - beta_m * Act_m ) / ms # m-variable

    # Inact_h'
    inline alpha_h real = 0.128 * exp(-(V_m / mV + 50.0) / 18.0)
    inline beta_h  real = 4.0 / (1.0 + exp(-(V_m / mV + 27.) / 5.))
    Inact_h' = ( alpha_h * ( 1 - Inact_h ) - beta_h * Inact_h ) / ms # h-variable
  end

  parameters:
    t_ref ms = 2.0 ms           # Refractory period 2.0
    g_Na nS = 10000.0 nS        # Sodium peak conductance
    g_K nS = 8000.0 nS          # Potassium peak conductance
    g_L nS = 10 nS              # Leak conductance
    C_m pF = 100.0 pF           # Membrane Capacitance
    E_Na mV = 50. mV            # Sodium reversal potential
    E_K mV = -100. mV           # Potassium reversal potentia
    E_L mV = -67. mV            # Leak reversal Potential (aka resting potential)
    V_Tr mV = -20. mV           # Spike Threshold
    tau_syn_ex ms = 0.2 ms      # Rise time of the excitatory synaptic alpha function
    tau_syn_in ms = 2. ms       # Rise time of the inhibitory synaptic alpha function

    # constant external input current
    I_e pA = 0 pA
  end

  internals:
    RefractoryCounts integer = steps(t_ref) # refractory time in steps

    alpha_n_init real = 0.032 * (V_m / mV + 52.) / (1. - exp(-(V_m / mV + 52.) / 5.))
    beta_n_init  real = 0.5 * exp(-(V_m / mV + 57.) / 40.)
    alpha_m_init real = 0.32 * (V_m / mV + 54.) / (1.0 - exp(-(V_m / mV + 54.) / 4.))
    beta_m_init  real = 0.28 * (V_m / mV + 27.) / (exp((V_m / mV + 27.) / 5.) - 1.)
    alpha_h_init real = 0.128 * exp(-(V_m / mV + 50.0) / 18.0)
    beta_h_init  real = 4.0 / (1.0 + exp(-(V_m / mV + 27.) / 5.))
  end

  input:
    spikeInh pA <- inhibitory spike
    spikeExc pA <- excitatory spike
    I_stim pA <- continuous
  end

  output: spike

  update:
    U_old mV = V_m
    integrate_odes()
    # sending spikes: crossing 0 mV, pseudo-refractoriness and local maximum...
    if r > 0: # is refractory?
      r -= 1
    elif V_m > V_Tr and U_old > V_Tr: # threshold && maximum
      r = RefractoryCounts
      emit_spike()
    end

  end

end

Characterisation