Therefore I replaced the numbers in the alpha end beta functions by range variables which I also assigned in the parameter block. For example the alpha function of the 'm' gate becomes
Code: Select all
alpha = am0 * vtrap(-(v+am1),am2)
Code: Select all
cell.am0_na_hh=0.2
I find this particularly puzzling since changing 'gnabar' does have the expected effect, so it seems to only affect variables that are used in the 'rates PROCEDURE'
Does anyone have an idea what could be going on here?
Here is my modified version of the mod file:
Code: Select all
TITLE hh.mod squid sodium, potassium, and leak channels
COMMENT
This is the original Hodgkin-Huxley treatment for the set of sodium,
potassium, and leakage channels found in the squid giant axon membrane.
SW Jaslove 6 March, 1992
ENDCOMMENT
? interface
NEURON {
SUFFIX na_hh
USEION na READ ena WRITE ina
RANGE gnabar, gna, am0, am1, am2, bm0, bm1,bm2, ah0, ah1,ah2, bh0, bh1, bh2
GLOBAL minf, hinf, mtau, htau
THREADSAFE : assigned GLOBALs will be per thread
}
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
(S) = (siemens)
}
PARAMETER {
gnabar = .12 (S/cm2) <0,1e9>
am0 = 0.1 (/ms)
am1 = 40
am2 = 10
bm0 = 4
bm1 = 65
bm2 = 18
ah0 = 0.07
ah1 = 65
ah2 = 20
bh0 = 1
bh1 = 35
bh2 = 10
}
ASSIGNED {
v (mV)
celsius (degC)
ena (mV)
gna (S/cm2)
ina (mA/cm2)
minf hinf ninf
mtau (ms) htau (ms)
}
STATE {
m h
}
? currents
INITIAL {
rates(v)
m = minf
h = hinf
}
BREAKPOINT {
SOLVE states METHOD cnexp
gna = gnabar*m*m*m*h
ina = gna*(v - ena)
}
? states
DERIVATIVE states {
rates(v)
m' = (minf-m)/mtau
h' = (hinf-h)/htau
}
:LOCAL q10
? rates
PROCEDURE rates(v(mV)) { :Computes rate and other constants at current v.
:Call once from HOC to initialize inf at resting v.
LOCAL alpha, beta, sum, q10
: `TABLE minf` will be replaced with `:TABLE minf` if CoreNEURON enabled)
TABLE minf, mtau, hinf, htau DEPEND celsius FROM -100 TO 100 WITH 200
UNITSOFF
q10 = 3^((celsius - 25)/10)
:"m" sodium activation system
alpha = am0 * vtrap(-(v+am1),am2)
beta = bm0 * exp(-(v+bm1)/bm2)
sum = alpha + beta
mtau = 1/(q10*sum)
minf = alpha/sum
:"h" sodium inactivation system
alpha = ah0 * exp(-(v+ah1)/ah2)
beta = bh0 / (exp(-(v+bh1)/bh2) + 1)
sum = alpha + beta
htau = 1/(q10*sum)
hinf = alpha/sum
}
FUNCTION vtrap(x,y) { :Traps for 0 in denominator of rate eqns.
if (fabs(x/y) < 1e-6) {
vtrap = y*(1 - x/y/2)
}else{
vtrap = x/(exp(x/y) - 1)
}
}
UNITSON