-
Notifications
You must be signed in to change notification settings - Fork 0
/
iM.mod
204 lines (135 loc) · 6.32 KB
/
iM.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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
TITLE Mod file for component: Component(id=iM type=ionChannelHH)
COMMENT
This NEURON file has been generated by org.neuroml.export (see https://github.com/NeuroML/org.neuroml.export)
org.neuroml.export v1.5.4
org.neuroml.model v1.5.4
jLEMS v0.9.9.1
ENDCOMMENT
NEURON {
SUFFIX iM
USEION k WRITE ik VALENCE 1 ? Assuming valence = 1; TODO check this!!
RANGE gion
RANGE gmax : Will be changed when ion channel mechanism placed on cell!
RANGE conductance : parameter
RANGE g : exposure
RANGE fopen : exposure
RANGE m_instances : parameter
RANGE m_tau : exposure
GLOBAL m_min
RANGE m_inf : exposure
RANGE m_rateScale : exposure
RANGE m_fcond : exposure
RANGE m_timeCourse_TIME_SCALE : parameter
RANGE m_timeCourse_VOLT_SCALE : parameter
RANGE m_timeCourse_t : exposure
RANGE m_steadyState_rate : parameter
RANGE m_steadyState_midpoint : parameter
RANGE m_steadyState_scale : parameter
RANGE m_steadyState_x : exposure
RANGE m_q10Settings_q10Factor : parameter
RANGE m_q10Settings_experimentalTemp : parameter
RANGE m_q10Settings_TENDEGREES : parameter
RANGE m_q10Settings_q10 : exposure
RANGE m_timeCourse_V : derived variable
RANGE m_tauUnscaled : derived variable
RANGE conductanceScale : derived variable
RANGE fopen0 : derived variable
RANGE gmin
RANGE shift
}
UNITS {
(nA) = (nanoamp)
(uA) = (microamp)
(mA) = (milliamp)
(A) = (amp)
(mV) = (millivolt)
(mS) = (millisiemens)
(uS) = (microsiemens)
(molar) = (1/liter)
(kHz) = (kilohertz)
(mM) = (millimolar)
(um) = (micrometer)
(umol) = (micromole)
(S) = (siemens)
}
PARAMETER {
gmax = 0 (S/cm2) : Will be changed when ion channel mechanism placed on cell!
gmin = 0 (S/cm2)
conductance = 1.0E-5 (uS)
m_instances = 1
m_timeCourse_TIME_SCALE = 1 (ms)
m_timeCourse_VOLT_SCALE = 1 (mV)
m_steadyState_rate = 1
m_steadyState_midpoint = -36.7 (mV)
m_steadyState_scale = 9.48 (mV)
m_q10Settings_q10Factor = 2.6
m_q10Settings_experimentalTemp = 308.15 (K)
m_q10Settings_TENDEGREES = 10 (K)
shift=3 (mV)
m_min=0
}
ASSIGNED {
gion (S/cm2) : Transient conductance density of the channel? Standard Assigned variables with ionChannel
v (mV)
celsius (degC)
temperature (K)
ek (mV)
ik (mA/cm2)
m_timeCourse_V : derived variable
m_timeCourse_t (ms) : derived variable
m_steadyState_x : derived variable
m_q10Settings_q10 : derived variable
m_rateScale : derived variable
m_fcond : derived variable
m_inf : derived variable
m_tauUnscaled (ms) : derived variable
m_tau (ms) : derived variable
conductanceScale : derived variable
fopen0 : derived variable
fopen : derived variable
g (uS) : derived variable
rate_m_q (/ms)
}
STATE {
m_q
}
INITIAL {
ek = -90.0
temperature = celsius + 273.15
rates()
rates() ? To ensure correct initialisation.
m_q = m_inf
}
BREAKPOINT {
SOLVE states METHOD cnexp
? DerivedVariable is based on path: conductanceScaling[*]/factor, on: Component(id=iM type=ionChannelHH), from conductanceScaling; null
? Path not present in component, using factor: 1
conductanceScale = 1
? DerivedVariable is based on path: gates[*]/fcond, on: Component(id=iM type=ionChannelHH), from gates; Component(id=m type=gateHHtauInf)
? multiply applied to all instances of fcond in: <gates> ([Component(id=m type=gateHHtauInf)]))
fopen0 = m_fcond ? path based, prefix =
fopen = conductanceScale * fopen0 ? evaluable
g = conductance * fopen ? evaluable
gion = gmax * (m_min+fopen) + gmin
ik = gion * (v - ek)
}
DERIVATIVE states {
rates()
m_q' = rate_m_q
}
PROCEDURE rates() {
m_timeCourse_V = v / m_timeCourse_VOLT_SCALE ? evaluable
m_timeCourse_t = (13.4+26.3*exp( -( ( m_timeCourse_V -29.7+shift)/30.3 ) * ( ( m_timeCourse_V -29.7+shift)/30.3 ) )) * m_timeCourse_TIME_SCALE ? evaluable
m_steadyState_x = m_steadyState_rate / (1 + exp(0 - (v - m_steadyState_midpoint +shift)/ m_steadyState_scale )) ? evaluable
m_q10Settings_q10 = m_q10Settings_q10Factor ^((temperature - m_q10Settings_experimentalTemp )/ m_q10Settings_TENDEGREES ) ? evaluable
? DerivedVariable is based on path: q10Settings[*]/q10, on: Component(id=m type=gateHHtauInf), from q10Settings; Component(id=null type=q10ExpTemp)
? multiply applied to all instances of q10 in: <q10Settings> ([Component(id=null type=q10ExpTemp)]))
m_rateScale = m_q10Settings_q10 ? path based, prefix = m_
m_fcond = m_q ^ m_instances ? evaluable
? DerivedVariable is based on path: steadyState/x, on: Component(id=m type=gateHHtauInf), from steadyState; Component(id=null type=HHSigmoidVariable)
m_inf = m_steadyState_x ? path based, prefix = m_
? DerivedVariable is based on path: timeCourse/t, on: Component(id=m type=gateHHtauInf), from timeCourse; Component(id=null type=iM_m_tau)
m_tauUnscaled = m_timeCourse_t ? path based, prefix = m_
m_tau = m_tauUnscaled / m_rateScale ? evaluable
rate_m_q = ( m_inf - m_q ) / m_tau ? Note units of all quantities used here need to be consistent!
}