1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
: simple first-order model of calcium dynamics
DEFINE FOO 1
NEURON {
SUFFIX cadyn
USEION ca READ cai,ica WRITE cai
RANGE ca
GLOBAL depth,cainf,taur
RANGE var
RANGE ainf
RANGE alpha
}
UNITS {
(molar) = (1/liter)
(mM) = (milli/liter)
(um) = (micron)
(mA) = (milliamp)
(msM) = (ms mM)
FARADAY = (faraday) (coul)
}
PARAMETER {
depth = .1 (um)
taur = 200 (ms) : rate of calcium removal for stress conditions
cainf = 50e-6(mM) :changed oct2
cai (mM)
alpha = 1
}
ASSIGNED {
ica (mA/cm2)
drive_channel (mM/ms)
var (mV)
ainf
}
STATE {
ca (mM)
}
BREAKPOINT {
SOLVE state METHOD euler : this comment is terminated by a \r only, and it should not break the parser
}
INCLUDE "var_init.inc"
DERIVATIVE state {
VERBATIM
cai = 2 * _ion_cai;
ENDVERBATIM
drive_channel = - (10000) * ica / (2 * FARADAY * depth)
if (drive_channel <= 0.) { drive_channel = 0. } : cannot pump inward
ca' = drive_channel/18 + (cainf -ca)/taur*11
cai = ca
if (FOO == 1) {
MUTEXLOCK
alpha = alpha + 1
MUTEXUNLOCK
}
}
: to test code generation for TABLE statement
FUNCTION test_table_f(br) {
TABLE FROM 0 TO FOO WITH 1
test_table_f = 1
}
PROCEDURE test_table_p(br) {
TABLE ainf FROM 0 TO FOO WITH 1
ainf = 1
}
: to test \r only as newline
PROCEDURE test_r()
{
} : add something that will breaks the parser
BEFORE INITIAL {
ainf = 2
}
INITIAL {
var_init(var)
PROTECT ca = ca + 1
}
AFTER SOLVE {
ainf = 3
}
|