-
Notifications
You must be signed in to change notification settings - Fork 2
/
isi.mod
131 lines (121 loc) · 2.31 KB
/
isi.mod
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
TITLE Cardiac second inward current
COMMENT
modified From DiFrancesco & Noble 1985 Phil Trans R Soc Lond 307:353-398
modified for Neuron by FE GANNIER
francois.gannier@univ-tours.fr (University of TOURS)
ENDCOMMENT
INCLUDE "Unit.inc"
INCLUDE "Volume.inc"
NEURON {
SUFFIX Isi
USEION ca READ cao, cai WRITE ica
USEION k READ ko, ki WRITE ik
USEION na READ nao, nai WRITE ina
RANGE P, ica, ik, ina, isi
GLOBAL minf, mtau, hinf, htau
}
PARAMETER {
P = 15 (nA/mM)
alpha_f2 = 5 (/s)
Kmf2 = 0.001 (mM)
}
STATE { : d, f, f2
m n h
}
ASSIGNED {
v (mV)
celsius (degC) : 37
isi (mA/cm2)
ica (mA/cm2)
ik (mA/cm2)
ina (mA/cm2)
eca (mV)
minf ninf hinf
mtau (ms)
ntau (ms)
htau (ms)
cai (mM)
cao (mM)
nai (mM)
nao (mM)
ki (mM)
ko (mM)
beta_f2 (/s)
}
LOCAL RT
INITIAL {
RT = (1000)*R*(273.15+celsius)
rate(v)
m = minf
n = ninf
h = hinf
}
BREAKPOINT { LOCAL com, com2, Eo, icat, inat, ikt
SOLVE states METHOD derivimplicit
Eo = v - 50
com = (1e-06)* P/S*Eo*F/RT * m*n*h
icat = 4*com /(1 - exp(-2*Eo*F/RT))*(cai*exp(100(mV)*F/RT) - cao*exp(-2*F*Eo/RT))
ica = icat
com2 = 0.01*com /(1 - exp(-Eo*F/RT))
ikt = com2*(ki*exp(50(mV)*F/RT) - ko*exp(-F*Eo/RT))
ik = ikt
inat = com2*(nai*exp(50(mV)*F/RT) - nao*exp(-F*Eo/RT))
ina = inat
isi = inat + ikt + icat
}
DERIVATIVE states { : d, f, f2
rate(v)
m' = (minf - m)/mtau
n' = (ninf - n)/ntau
h' = (0.001)*(alpha_f2 - h * (alpha_f2 + beta_f2))
beta_f2 = cai * alpha_f2 / Kmf2
}
FUNCTION alp(v(mV), i) (/ms) { : order d, f
LOCAL Eo, E1
if (i==0) {
Eo = v + 24
if (fabs(Eo*1(/mV)) < 1e-5)
{
alp = (0.001)*120 (/s)
}
else
{
alp = (0.001)*30(/s/mV)*Eo / (1 - exp(-Eo/4(mV)))
}
} else if (i==1) {
E1 = v + 34
if (fabs(E1*1(/mV)) < 1e-5)
{
alp = (0.001)*25 (/s)
}
else
{
alp = (0.001)*6.25(/mV/s)*E1/(exp(E1/4(mV))-1)
}
}
}
FUNCTION bet(v(mV), i) (/ms) { : order d,f
LOCAL Eo
if (i==0) {
Eo = v + 24
if (fabs(Eo*1(/mV)) < 1e-5)
{
bet = (0.001)*120 (/s)
}
else
{
bet = (0.001)*12(/mV/s) *Eo / (exp(Eo/10(mV)) -1)
}
} else if (i==1) {
bet = (0.001)*50(/s)/(1 + exp(-(v + 34)/4(mV)))
}
}
PROCEDURE rate(v (mV)) { LOCAL a,b :
TABLE minf, mtau, ninf, ntau FROM -100 TO 100 WITH 200
a = alp(v,0) b = bet(v,0)
mtau = 1/(a + b)
minf = a * mtau
a = alp(v,1) b = bet(v,1)
ntau = 1/(a + b)
ninf = a * ntau
}