Skip to content
Snippets Groups Projects
Unverified Commit e056694e authored by Thorsten Hater's avatar Thorsten Hater Committed by GitHub
Browse files

NMDOL: default catalogue clean up (#1935)

* Clean up the bundled mechanisms. Closes #1155
parent 834961f8
No related branches found
No related tags found
No related merge requests found
......@@ -14,13 +14,9 @@ PARAMETER {
e = 0 (mV)
}
ASSIGNED {
factor
}
ASSIGNED { factor }
STATE {
A B
}
STATE { A B }
INITIAL {
LOCAL tp
......@@ -32,6 +28,8 @@ INITIAL {
BREAKPOINT {
SOLVE state METHOD cnexp
LOCAL g
g = B - A
i = (B - A)*(v - e)
}
......
......@@ -21,7 +21,7 @@ STATE {
}
INITIAL {
g=0
g = 0
}
BREAKPOINT {
......
......@@ -27,7 +27,6 @@ INITIAL {
}
BREAKPOINT {
:SOLVE state METHOD cnexp
SOLVE state METHOD sparse : to match with expsyn_curr_calcium_plasticity
I = -g / R_mem
......
......@@ -3,11 +3,10 @@ NEURON {
NONSPECIFIC_CURRENT i
RANGE g
}
INITIAL {}
PARAMETER {
g = 1
}
PARAMETER { g = 1 }
BREAKPOINT {
i = g*(v - v_peer)
......
......@@ -6,33 +6,29 @@ TITLE K-A
: ik has units (mA/cm2)
NEURON {
THREADSAFE
SUFFIX kamt
USEION k READ ek WRITE ik
RANGE gbar, q10
GLOBAL minf, mtau, hinf, htau
RANGE gbar
}
PARAMETER {
gbar = 0.002 (mho/cm2)
gbar = 0.002 (mho/cm2)
celsius
a0m=0.04
vhalfm=-45
zetam=0.1
gmm=0.75
a0h=0.018
vhalfh=-70
zetah=0.2
gmh=0.99
sha=9.9
shi=5.7
q10=3
a0m = 0.04
vhalfm = -45
zetam = 0.1
gmm = 0.75
a0h = 0.018
vhalfh = -70
zetah = 0.2
gmh = 0.99
sha = 9.9
shi = 5.7
}
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
......@@ -40,18 +36,9 @@ UNITS {
(um) = (micron)
}
ASSIGNED {
v (mV)
minf
mtau (ms)
hinf
htau (ms)
}
ASSIGNED { v (mV) }
STATE {
m
h
}
STATE { m h }
BREAKPOINT {
SOLVE states METHOD cnexp
......@@ -59,40 +46,21 @@ BREAKPOINT {
}
INITIAL {
trates(v,celsius)
m=minf
h=hinf
m = minf(v)
h = hinf(v)
}
DERIVATIVE states {
trates(v,celsius)
m' = (minf-m)/mtau
h' = (hinf-h)/htau
}
PROCEDURE trates(v,celsius) {
LOCAL qt
qt=q10^((celsius-24)/10)
minf = 1/(1 + exp(-(v-sha-7.6)/14))
mtau = betm(v)/(qt*a0m*(1+alpm(v)))
hinf = 1/(1 + exp((v-shi+47.4)/6))
htau = beth(v)/(qt*a0h*(1+alph(v)))
}
FUNCTION alpm(v) {
alpm = exp(zetam*(v-vhalfm))
qt = 3^((celsius-24)/10)
m' = (minf(v) - m)*qt*a0m*(1 + alpm(v))/betm(v)
h' = (hinf(v) - h)*qt*a0h*(1 + alph(v))/beth(v)
}
FUNCTION betm(v) {
betm = exp(zetam*gmm*(v-vhalfm))
}
FUNCTION minf(v) { minf = 1/(1 + exp(-(v-sha-7.6)/14)) }
FUNCTION hinf(v) { hinf = 1/(1 + exp((v-shi+47.4)/6)) }
FUNCTION alph(v) {
alph = exp(zetah*(v-vhalfh))
}
FUNCTION beth(v) {
beth = exp(zetah*gmh*(v-vhalfh))
}
FUNCTION alpm(v) { alpm = exp(zetam*(v - vhalfm)) }
FUNCTION betm(v) { betm = exp(zetam*gmm*(v - vhalfm)) }
FUNCTION alph(v) { alph = exp(zetah*(v - vhalfh)) }
FUNCTION beth(v) { beth = exp(zetah*gmh*(v - vhalfh)) }
......@@ -9,21 +9,19 @@ NEURON {
THREADSAFE
SUFFIX kdrmt
USEION k READ ek WRITE ik
RANGE gbar, q10, vhalfm
GLOBAL minf, mtau
RANGE gbar, vhalfm
}
PARAMETER {
gbar = 0.002 (mho/cm2)
gbar = 0.002 (mho/cm2)
celsius
a0m=0.0035
vhalfm=-50
zetam=0.055
gmm=0.5
q10=3
alpm=0
betm=0
a0m = 0.0035
vhalfm = -50
zetam = 0.055
gmm = 0.5
q10 = 3
alpm = 0
betm = 0
}
......@@ -34,39 +32,27 @@ UNITS {
(um) = (micron)
}
ASSIGNED {
v (mV)
minf
mtau (ms)
}
ASSIGNED { v(mV) }
STATE {
m
}
STATE { m }
BREAKPOINT {
SOLVE states METHOD cnexp
ik = gbar*m*(v - ek)
LOCAL gk
gk = gbar*m
ik = gk*(v - ek)
}
INITIAL {
trates(v,celsius)
m=minf
m = minf(v)
}
DERIVATIVE states {
trates(v,celsius)
m' = (minf-m)/mtau
}
LOCAL qt, tmp
PROCEDURE trates(v,celsius) {
LOCAL qt
LOCAL alpm_t, betm_t
LOCAL tmp
qt=q10^((celsius-24)/10)
minf = 1/(1 + exp(-(v-21)/10))
tmp = zetam*(v-vhalfm)
alpm_t = exp(tmp)
betm_t = exp(gmm*tmp)
mtau = betm_t/(qt*a0m*(1+alpm_t))
qt = q10^(0.1*(celsius - 24))
tmp = zetam*(v - vhalfm)
m' = qt*a0m*(1 + exp(tmp))*(minf(v) - m)*exp(-gmm*tmp)
}
FUNCTION minf(v) { minf = 1/(1 + exp((21 - v)/10)) }
......@@ -10,26 +10,26 @@ NEURON {
}
PARAMETER {
sh = 5 (mV)
gbar = 0.010 (mho/cm2)
tha = -30 (mV) : v 1/2 for act
qa = 7.2 (mV) : act slope (4.5)
Ra = 0.4 (/ms) : open (v)
Rb = 0.124 (/ms) : close (v)
thi1 = -45 (mV) : v 1/2 for inact
thi2 = -45 (mV) : v 1/2 for inact
qd = 1.5 (mV) : inact tau slope
qg = 1.5 (mV)
mmin=0.02
hmin=0.5
q10=2
Rg = 0.01 (/ms) : inact recov (v)
Rd = .03 (/ms) : inact (v)
thinf = -50 (mV) : inact inf slope
qinf = 4 (mV) : inact inf slope
sh = 5 (mV)
gbar = 0.010 (mho/cm2)
tha = -30 (mV) : v 1/2 for act
qa = 7.2 (mV) : act slope (4.5)
Ra = 0.4 (/ms) : open (v)
Rb = 0.124 (/ms) : close (v)
thi1 = -45 (mV) : v 1/2 for inact
thi2 = -45 (mV) : v 1/2 for inact
qd = 1.5 (mV) : inact tau slope
qg = 1.5 (mV)
mmin = 0.02
hmin = 0.5
q10 = 2
Rg = 0.01 (/ms) : inact recov (v)
Rd = .03 (/ms) : inact (v)
thinf = -50 (mV) : inact inf slope
qinf = 4 (mV) : inact inf slope
celsius
}
......@@ -42,53 +42,51 @@ UNITS {
(um) = (micron)
}
ASSIGNED {
v (mV)
thegna (mho/cm2)
minf
hinf
mtau (ms)
htau (ms)
}
ASSIGNED { v (mV) }
STATE {
m
h
}
STATE { m h }
BREAKPOINT {
SOLVE states METHOD cnexp
thegna = gbar*m*m*m*h
ina = thegna * (v - ena)
LOCAL gna
gna = gbar*m*m*m*h
ina = gna * (v - ena)
}
INITIAL {
trates(v,sh,celsius)
m=minf
h=hinf
LOCAL a, b, u
u = tha + sh - v
a = trap0( u, Ra, qa)
b = trap0(-u, Rb, qa)
m = a/(a + b)
u = thi1 + sh - v
a = trap0( u, Rd, qd)
b = trap0(-u, Rg, qg)
h = 1/(1 + exp((v - thinf - sh)/qinf))
}
DERIVATIVE states {
trates(v,sh,celsius)
m' = (minf-m)/mtau
h' = (hinf-h)/htau
}
LOCAL a, b, u, qt, hinf, minf, htau, mtau, iq
PROCEDURE trates(vm,sh2,celsius) {
LOCAL a, b, qt
qt=q10^((celsius-24)/10)
a = trap0(vm,tha+sh2,Ra,qa)
b = trap0(-vm,-tha-sh2,Rb,qa)
mtau = max(1/(a+b)/qt, mmin)
minf = a/(a+b)
a = trap0(vm,thi1+sh2,Rd,qd)
b = trap0(-vm,-thi2-sh2,Rg,qg)
htau = max(1/(a+b)/qt, hmin)
hinf = 1/(1+exp((vm-thinf-sh2)/qinf))
}
iq = q10^(-0.1*(celsius - 24))
u = tha + sh - v
a = trap0( u, Ra, qa)
b = trap0(-u, Rb, qa)
mtau = max(iq/(a + b), mmin)
minf = a/(a + b)
FUNCTION trap0(v,th,a,q) {
: trap0 = a * (v - th) / (1 - exp(-(v - th)/q))
trap0 = a*q*exprelr(-(v-th)/q)
u = thi1 + sh - v
a = trap0( u, Rd, qd)
b = trap0(-u, Rg, qg)
htau = max(iq/(a + b), hmin)
hinf = 1/(1 + exp((v - thinf - sh)/qinf))
m' = (minf - m)/mtau
h' = (hinf - h)/htau
}
FUNCTION trap0(v, a, q) { trap0 = a*q*exprelr(v/q) }
......@@ -16,16 +16,13 @@ PARAMETER {
celsius : temperature in °C (set externally)
}
ASSIGNED {
coeff
}
ASSIGNED { coeff }
INITIAL {
coeff = R*(celsius+273.15)/(zx*F)*1000
coeff = R*(celsius + 273.15)/(zx*F)*1000
}
STATE {
}
STATE {}
BREAKPOINT {
ex = coeff*log(xo/xi)
......
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