I have a question about units in a NMODL file.
First, I ran a simulation with the following NMODL code.
Code: Select all
NEURON {
POINT_PROCESS synAMPA
RANGE onset, taur, taud, gmax, e, i, Epsilon
NONSPECIFIC_CURRENT i
}
UNITS {
(nA) = (nanoamp)
(mV) = (millivolt)
(uS) = (microsiemens)
}
PARAMETER {
onset = 0 (ms)
taur = 1.0 (ms)
taud = 5.0 (ms)
gmax = 0.001 (uS)
e = 0 (mV)
Epsilon = 0.000001
}
ASSIGNED {
v (mV)
i (nA)
g (uS)
Frac
}
INITIAL {
Frac = wexpzero( -taur/(taur-taud) * log(taur/taud) , -taud/(taur-taud) * log(taur/taud) )
}
BREAKPOINT {
at_time(onset)
g = gmax * (1/Frac) * wexpzero( -(t-onset)/taud , -(t-onset)/taur )
i = g * (v - e)
}
FUNCTION wexpzero(x, y) {
if ( x > -Epsilon || y > -Epsilon ) {
wexpzero = 0
} else {
wexpzero = expzero(x) - expzero(y)
}
}
FUNCTION expzero(x) {
if (x < -5 || x >= 0) {
expzero = 0
}else{
expzero = exp(x)
}
}
Code: Select all
NEURON {
POINT_PROCESS synAMPA
RANGE onset, taur, taud, gmax, e, i, Epsilon
NONSPECIFIC_CURRENT i
}
UNITS {
(nA) = (nanoamp)
(mV) = (millivolt)
(nS) = (nanosiemens)
}
PARAMETER {
onset = 0 (ms)
taur = 1.0 (ms)
taud = 5.0 (ms)
gmax = 1 (nS)
e = 0 (mV)
Epsilon = 0.000001
}
ASSIGNED {
v (mV)
i (nA)
g (nS)
Frac
}
INITIAL {
Frac = wexpzero( -taur/(taur-taud) * log(taur/taud) , -taud/(taur-taud) * log(taur/taud) )
}
BREAKPOINT {
at_time(onset)
g = gmax * (1/Frac) * wexpzero( -(t-onset)/taud , -(t-onset)/taur )
i = g * (v - e)
}
FUNCTION wexpzero(x, y) {
if ( x > -Epsilon || y > -Epsilon ) {
wexpzero = 0
} else {
wexpzero = expzero(x) - expzero(y)
}
}
FUNCTION expzero(x) {
if (x < -5 || x >= 0) {
expzero = 0
}else{
expzero = exp(x)
}
}
Because the actual value of gmax remain unchanged, I predicted that the results are same.
However, actual results are extremely different.
The activity of a cell at first simulation was quiet,
while the one at second simulation was very intense.
What is a cause of this difference?