Skip to content
Snippets Groups Projects
Unverified Commit dbea3c0a authored by thorstenhater's avatar thorstenhater Committed by GitHub
Browse files

Add optimised HH model. (#1042)

* Replace HH model with optimised version.
parent ea5348c9
No related branches found
No related tags found
No related merge requests found
...@@ -3,8 +3,7 @@ NEURON { ...@@ -3,8 +3,7 @@ NEURON {
USEION na READ ena WRITE ina USEION na READ ena WRITE ina
USEION k READ ek WRITE ik USEION k READ ek WRITE ik
NONSPECIFIC_CURRENT il NONSPECIFIC_CURRENT il
RANGE gnabar, gkbar, gl, el, gna, gk RANGE gnabar, gkbar, gl, el
GLOBAL minf, hinf, ninf, mtau, htau, ntau
} }
UNITS { UNITS {
...@@ -26,70 +25,68 @@ STATE { ...@@ -26,70 +25,68 @@ STATE {
ASSIGNED { ASSIGNED {
v (mV) v (mV)
gna (S/cm2)
gk (S/cm2)
minf
hinf
ninf
mtau (ms)
htau (ms)
ntau (ms)
q10 q10
} }
BREAKPOINT { BREAKPOINT {
SOLVE states METHOD cnexp SOLVE states METHOD cnexp
gna = gnabar*m*m*m*h LOCAL gna, gk, n2, n_, m_
n_ = n
n2 = n_*n_
m_ = m
gna = gnabar*m_*m_*m_*h
ina = gna*(v - ena) ina = gna*(v - ena)
gk = gkbar*n*n*n*n gk = gkbar*n2*n2
ik = gk*(v - ek) ik = gk*(v - ek)
il = gl*(v - el) il = gl*(v - el)
} }
INITIAL { INITIAL {
q10 = 3^((celsius - 6.3)/10) q10 = 3^((celsius - 6.3)*0.1)
rates(v)
m = minf
h = hinf
n = ninf
}
DERIVATIVE states { LOCAL alpha, beta
rates(v)
m' = (minf-m)/mtau :"m" sodium activation system
h' = (hinf-h)/htau alpha = exprelr(-(v+40)*0.1)
n' = (ninf-n)/ntau beta = 4 * exp(-(v+65)*0.05555555555555555)
m = alpha/(alpha + beta)
:"h" sodium inactivation system
alpha = .07 * exp(-(v+65)*0.05)
beta = 1 / (exp(-(v+35)*0.1) + 1)
h = alpha/(alpha + beta)
:"n" potassium activation system
alpha = .1*exprelr(-(v+55)*0.1)
beta = .125*exp(-(v+65)*0.0125)
n = alpha/(alpha + beta)
} }
PROCEDURE rates(v) DERIVATIVE states {
{ LOCAL alpha, beta, sum, minf, ninf, hinf, mrate, nrate, hrate
LOCAL alpha, beta, sum
:"m" sodium activation system :"m" sodium activation system
alpha = .1 * vtrap(-(v+40),10) alpha = exprelr(-(v+40)*0.1)
beta = 4 * exp(-(v+65)/18) beta = 4 * exp(-(v+65)*0.05555555555555555)
sum = alpha + beta sum = alpha + beta
mtau = 1/(q10*sum) mrate = q10*sum
minf = alpha/sum minf = alpha/sum
:"h" sodium inactivation system :"h" sodium inactivation system
alpha = .07 * exp(-(v+65)/20) alpha = .07 * exp(-(v+65)*0.05)
beta = 1 / (exp(-(v+35)/10) + 1) beta = 1 / (exp(-(v+35)*0.1) + 1)
sum = alpha + beta sum = alpha + beta
htau = 1/(q10*sum) hrate = q10*sum
hinf = alpha/sum hinf = alpha/sum
:"n" potassium activation system :"n" potassium activation system
alpha = .01*vtrap(-(v+55),10) alpha = .1*exprelr(-(v+55)*0.1)
beta = .125*exp(-(v+65)/80) beta = .125*exp(-(v+65)*0.0125)
sum = alpha + beta sum = alpha + beta
ntau = 1/(q10*sum) nrate = q10*sum
ninf = alpha/sum ninf = alpha/sum
}
FUNCTION vtrap(x,y) { m' = (minf-m)*mrate
: use built in exprelr(z) = z/(exp(z)-1), which handles the z=0 case correctly h' = (hinf-h)*hrate
vtrap = y*exprelr(x/y) n' = (ninf-n)*nrate
} }
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment