-
Notifications
You must be signed in to change notification settings - Fork 1
/
ch_CavL.mod
130 lines (103 loc) · 2.01 KB
/
ch_CavL.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
TITLE L-type calcium channel (voltage dependent)
COMMENT
L-Type Ca2+ channel (voltage dependent)
Ions: ca
Style: ghk
From: Jaffe et al, 1994
Updates:
2014 December (Marianne Bezaire): documented
ENDCOMMENT
VERBATIM
#include <stdlib.h> /* Include this library so that the following
(innocuous) warning does not appear:
In function '_thread_cleanup':
warning: incompatible implicit declaration of
built-in function 'free' */
ENDVERBATIM
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
(molar) = (1/liter)
(mM) = (millimolar)
FARADAY = 96520 (coul)
R = 8.3134 (joule/degC)
KTOMV = .0853 (mV/degC)
}
PARAMETER {
v (mV)
celsius (degC) : temperature - set in hoc; default is 6.3
gmax (mho/cm2)
ki=.001 (mM)
cai (mM)
cao (mM)
tfa=1
}
NEURON {
SUFFIX ch_CavL
USEION ca READ cai, cao, eca WRITE ica VALENCE 2
RANGE gmax, cai, ica, eca
RANGE myi, g
GLOBAL minf,mtau : neither of these are thread safe
THREADSAFE
}
STATE {
m
}
ASSIGNED {
ica (mA/cm2)
g (mho/cm2)
minf
mtau (ms)
eca (mV)
myi (mA/cm2)
}
INITIAL {
rate(v)
m = minf
VERBATIM
cai=_ion_cai;
ENDVERBATIM
}
BREAKPOINT {
SOLVE state METHOD cnexp
g = gmax*m*m*h2(cai)
ica = g*ghk(v,cai,cao)
myi = ica
}
FUNCTION h2(cai(mM)) {
h2 = ki/(ki+cai)
}
FUNCTION ghk(v(mV), ci(mM), co(mM)) (mV) {
LOCAL nu,f
f = KTF(celsius)/2
nu = v/f
ghk=-f*(1. - (ci/co)*exp(nu))*efun(nu)
}
FUNCTION KTF(celsius (DegC)) (mV) {
KTF = ((25./293.15)*(celsius + 273.15))
}
FUNCTION efun(z) {
if (fabs(z) < 1e-4) {
efun = 1 - z/2
}else{
efun = z/(exp(z) - 1)
}
}
FUNCTION alp(v(mV)) (1/ms) {
TABLE FROM -150 TO 150 WITH 200
alp = 15.69*(-1.0*v+81.5)/(exp((-1.0*v+81.5)/10.0)-1.0)
}
FUNCTION bet(v(mV)) (1/ms) {
TABLE FROM -150 TO 150 WITH 200
bet = 0.29*exp(-v/10.86)
}
DERIVATIVE state {
rate(v)
m' = (minf - m)/mtau
}
PROCEDURE rate(v (mV)) { :callable from hoc
LOCAL a
a = alp(v)
mtau = 1/(tfa*(a + bet(v)))
minf = tfa*a*mtau
}