Skip to content

Commit

Permalink
NMDOL: default catalogue clean up (#1935)
Browse files Browse the repository at this point in the history
* Clean up the bundled mechanisms. Closes #1155
  • Loading branch information
thorstenhater authored Aug 9, 2022
1 parent 834961f commit e056694
Show file tree
Hide file tree
Showing 8 changed files with 113 additions and 168 deletions.
10 changes: 4 additions & 6 deletions mechanisms/default/exp2syn.mod
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,9 @@ PARAMETER {
e = 0 (mV)
}

ASSIGNED {
factor
}
ASSIGNED { factor }

STATE {
A B
}
STATE { A B }

INITIAL {
LOCAL tp
Expand All @@ -32,6 +28,8 @@ INITIAL {

BREAKPOINT {
SOLVE state METHOD cnexp
LOCAL g
g = B - A
i = (B - A)*(v - e)
}

Expand Down
2 changes: 1 addition & 1 deletion mechanisms/default/expsyn.mod
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ STATE {
}

INITIAL {
g=0
g = 0
}

BREAKPOINT {
Expand Down
1 change: 0 additions & 1 deletion mechanisms/default/expsyn_curr.mod
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
5 changes: 2 additions & 3 deletions mechanisms/default/gj.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@ NEURON {
NONSPECIFIC_CURRENT i
RANGE g
}

INITIAL {}

PARAMETER {
g = 1
}
PARAMETER { g = 1 }

BREAKPOINT {
i = g*(v - v_peer)
Expand Down
86 changes: 27 additions & 59 deletions mechanisms/default/kamt.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,93 +6,61 @@ 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)
(pS) = (picosiemens)
(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
ik = gbar*m*h*(v - ek)
}

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)) }
56 changes: 21 additions & 35 deletions mechanisms/default/kdrmt.mod
Original file line number Diff line number Diff line change
Expand Up @@ -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
}


Expand All @@ -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)) }
112 changes: 55 additions & 57 deletions mechanisms/default/nax.mod
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand All @@ -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) }
Loading

0 comments on commit e056694

Please sign in to comment.