1. Summary
  2. Files
  3. Support
  4. Report Spam
  5. Create account
  6. Log in

root/NeuroML2/NeuroML2CoreTypes/Channels.xml

Revision 1013, 22.4 KB (checked in by pgleeson, 7 months ago)

Added an optional conductanceScaling element in ionChannelHH to allow a (temperature dependent) scaling of the channel conductance as found in a number of mod files
Updated NeuronWriter? to support this (and q10 in nml2)
Updated lems jar

Line 
1<Lems xmlns="http://www.neuroml.org/lems/0.5"
2      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3      xsi:schemaLocation="http://www.neuroml.org/lems/0.5 ../Schemas/LEMS/LEMS_v0.5.xsd"
4      description="Defines voltage (and concentration) gated ion channel models. Ion channels will generally extend _baseIonChannel_. The most commonly used voltage dependent gate will extend _baseGate_.">
5
6    <!-- A number of channel types for use in NeuroML 2 documents  -->
7
8
9    <!-- Including standard unit comp types & units for NeuroML v2.0 -->
10    <Include file="NeuroMLCoreCompTypes.xml"/>
11
12
13    <ComponentType name="baseVoltageDepRate"
14               description="Base ComponentType for voltage dependent rate. Produces a time varying rate _r which depends on _v.">
15        <Exposure name="r" dimension="per_time"/>
16        <Requirement name="v" dimension="voltage"/>
17    </ComponentType>
18
19    <ComponentType name="baseVoltageConcDepRate"
20               description="Base ComponentType for voltage and concentration dependent rate. Produces a time varying rate _r which depends on _v and _caConc."
21               extends="baseVoltageDepRate">
22        <Requirement name="caConc" dimension="concentration"/>
23    </ComponentType>
24
25
26    <ComponentType name="baseHHRate"
27               description="Base ComponentType for rate which follow one of the typical forms for rate equations in the standard HH formalism, using the parameters _rate, _midpoint and _scale"
28               extends="baseVoltageDepRate">
29        <Parameter name="rate" dimension="per_time"/>
30        <Parameter name="midpoint" dimension="voltage"/>
31        <Parameter name="scale" dimension="voltage"/>
32    </ComponentType>
33
34
35    <ComponentType name="HHExpRate" 
36        extends="baseHHRate"
37        description="Exponential form for rate equation (Q: Should these be renamed hhExpRate, etc?)">
38        <Behavior>
39            <DerivedVariable name="r" exposure="r" value="rate * exp((v - midpoint)/scale)" dimension="per_time"/>
40        </Behavior>
41    </ComponentType>
42
43
44    <ComponentType name="HHSigmoidRate"
45        extends="baseHHRate"
46        description="Sigmoidal form for rate equation">
47        <Behavior>
48            <DerivedVariable name="r" exposure="r" value="rate / (1 + exp(0 - (v - midpoint)/scale))" dimension="per_time"/>
49        </Behavior>
50    </ComponentType>
51
52
53    <ComponentType name="HHExpLinearRate"
54        extends="baseHHRate"
55        description="Exponential linear form for rate equation. Linear for large positive _v, exponentially decays for large negative _v.">
56        <Behavior>
57            <DerivedVariable name="x" value="(v - midpoint) / scale" dimension="none"/>
58            <DerivedVariable name="r" exposure="r" value="rate * x / (1 - exp(0 - x))" dimension="per_time"/>
59        </Behavior>
60    </ComponentType>
61
62
63    <ComponentType name="baseVoltageDepVariable"
64               description="Base ComponentType for voltage dependent variable  _x, which depends on _v. Can be used for inf/steady state of rate variable.">
65        <Exposure name="x" dimension="none"/>
66        <Requirement name="v" dimension="voltage"/>
67    </ComponentType>
68
69    <ComponentType name="baseVoltageConcDepVariable"
70               description="Base ComponentType for voltage and calcium concentration dependent variable _x, which depends on _v and _caConc."
71               extends="baseVoltageDepVariable">
72        <Requirement name="caConc" dimension="concentration"/>
73    </ComponentType>
74
75    <ComponentType name="baseHHVariable"
76               description="Base ComponentType for voltage dependent dimensionless variable which follow one of the typical forms for variable equations in the standard HH formalism, using the parameters _rate, _midpoint, _scale"
77               extends="baseVoltageDepVariable">
78        <Parameter name="rate" dimension="none"/>
79        <Parameter name="midpoint" dimension="voltage"/>
80        <Parameter name="scale" dimension="voltage"/>
81    </ComponentType>
82
83
84    <ComponentType name="HHExpVariable" 
85        extends="baseHHVariable"
86        description="Exponential form for variable equation">
87        <Behavior>
88            <DerivedVariable name="x" dimension="none" exposure="x" value="rate * exp((v - midpoint)/scale)"/>
89        </Behavior>
90    </ComponentType>
91
92
93    <ComponentType name="HHSigmoidVariable" 
94        extends="baseHHVariable"
95        description="Sigmoidal form for variable equation">
96        <Behavior>
97            <DerivedVariable name="x" dimension="none" exposure="x" value="rate / (1 + exp(0 - (v - midpoint)/scale))"/>
98        </Behavior>
99    </ComponentType>
100
101
102    <ComponentType name="HHExpLinearVariable" 
103        extends="baseHHVariable"
104        description="Exponential linear form for variable equation. Linear for large positive _v, exponentially decays for large negative _v.">
105        <Behavior>
106            <DerivedVariable name="a" dimension="none" value="(v - midpoint) / scale"/>
107            <DerivedVariable name="x" dimension="none" exposure="x" value="rate * a / (1 - exp(0 - a))"/>
108        </Behavior>
109    </ComponentType>
110
111
112    <ComponentType name="baseVoltageDepTime"
113               description="Base type for voltage dependent ComponentType producing value _t with dimension time (e.g. for time course of rate variable). Note: time course would not normally be fit to exp/sigmoid etc.">
114        <Exposure name="t" dimension="time"/>
115        <Requirement name="v" dimension="voltage"/>
116    </ComponentType>
117
118    <ComponentType name="fixedTimeCourse"
119        extends="baseVoltageDepTime"
120        description="Time course of a fixed magnitude _tau which can be used for the time course in _gateHH_">
121           
122        <Parameter name="tau" dimension="time"/>
123        <Behavior>
124            <DerivedVariable name="t" dimension="time" exposure="t" value="tau"/>
125        </Behavior>
126    </ComponentType>
127
128
129
130    <ComponentType name="baseQ10Settings"
131        description="Base ComponentType for a scaling to apply to gating variable time course, usually temperature dependent">
132
133        <Exposure name="q10" dimension="none"/>
134        <Requirement name="temperature" dimension="temperature"/>
135
136    </ComponentType>
137
138
139    <ComponentType name="q10Fixed" 
140        extends="baseQ10Settings"
141        description="A fixed value, _fixedQ10, for the scaling of the time course of the gating variable">
142        <Parameter name="fixedQ10" dimension="none"/>
143        <Behavior>
144            <DerivedVariable name="q10" exposure="q10" dimension="none" value="fixedQ10"/>
145        </Behavior>
146    </ComponentType>
147
148
149    <ComponentType name="q10ExpTemp" 
150        extends="baseQ10Settings"
151        description="A value for the Q10 scaling which varies as a standard function of the difference between the current temperature, _temperature, and the temperature at which the gating variable equations were determined, _experimentalTemp">
152
153        <Parameter name="q10Factor" dimension="none"/>
154        <Parameter name="experimentalTemp" dimension="temperature"/>
155
156        <Behavior>
157            <DerivedVariable name="q10" exposure="q10" dimension="none" value="q10Factor^((temperature - experimentalTemp)/10)"/>
158        </Behavior>
159    </ComponentType>
160
161    <ComponentType name="baseConductanceScaling"
162        description="Base ComponentType for a scaling to apply to a gate's conductance, e.g. temperature dependent scaling">
163
164        <Exposure name="factor" dimension="none"/>
165        <Requirement name="temperature" dimension="temperature"/>
166
167    </ComponentType>
168
169
170    <ComponentType name="q10ConductanceScaling"
171        extends="baseConductanceScaling"
172        description="A value for the conductance scaling which varies as a standard function of the difference between the current temperature, _temperature, and the temperature at which the conductance was originally determined, _experimentalTemp">
173
174        <Parameter name="q10Factor" dimension="none"/>
175        <Parameter name="experimentalTemp" dimension="temperature"/>
176
177        <Behavior>
178            <DerivedVariable name="factor" exposure="factor" dimension="none" value="q10Factor^((temperature - experimentalTemp)/10)"/>
179        </Behavior>
180    </ComponentType>
181
182    <ComponentType name="baseGate"
183        description="Base ComponentType for a voltage and/or concentration dependent gate">
184        <Parameter name="instances" dimension="none"/>
185        <Exposure name="fcond" dimension="none"/>
186        <Exposure name="q" dimension="none"/>
187       
188    </ComponentType>
189
190    <ComponentType name="gateHH" 
191        extends="baseGate"
192        description="Gate which follows the general Hodgkin Huxley formalism">
193
194        <Child name="notes" type="notes"/>
195        <Child name="q10Settings" type="baseQ10Settings"/>
196
197        <Child name="forwardRate" type="baseVoltageDepRate"/>
198        <Child name="reverseRate" type="baseVoltageDepRate"/>
199
200        <Child name="timeCourse" type="baseVoltageDepTime" />
201
202        <Child name="steadyState" type="baseVoltageDepVariable" />
203
204        <Exposure name="alpha" dimension="per_time"/>
205        <Exposure name="beta" dimension="per_time"/>
206   
207        <Exposure name="tau" dimension="time"/>
208        <Exposure name="inf" dimension="none"/>
209
210        <Exposure name="rateScale" dimension="none"/>
211   
212        <Behavior>
213            <StateVariable name="q" exposure="q" dimension="none"/>
214
215            <DerivedVariable name="rateScale" exposure="rateScale" dimension="none" select="q10Settings/q10" onAbsent="1"/>
216
217            <DerivedVariable name="alpha" dimension="per_time" exposure="alpha" select="forwardRate/r" onAbsent="-1"/>
218            <DerivedVariable name="beta" dimension="per_time" exposure="beta" select="reverseRate/r" onAbsent="-1"/>
219
220            <DerivedVariable name="fcond" exposure="fcond" dimension="none" value="q^instances"/>
221
222            <!-- Perhaps not the neatest solution... -->
223            <DerivedVariable name="tauExplicit" dimension="time" select="timeCourse/t" onAbsent="-1"/>
224            <DerivedVariable name="infExplicit" dimension="none" select="steadyState/x" onAbsent="-1"/>
225
226            <DerivedVariable name="inf" dimension="none" exposure="inf" value="infExplicit" valueCondition="infExplicit .geq. 0" valueIfFalse="alpha/(alpha+beta)"/>
227       
228            <DerivedVariable name="tau" dimension="time" exposure="tau" value="tauExplicit / rateScale" valueCondition="tauExplicit .geq. 0" valueIfFalse="1/((alpha+beta) * rateScale)"/>
229
230            <TimeDerivative variable="q" value="(inf - q) / tau"/>
231
232            <OnStart>
233                <StateAssignment variable="q" value="inf"/>
234            </OnStart>
235
236        </Behavior>
237    </ComponentType>
238
239
240
241    <!--
242    <ComponentType name="gateHHTauInf" extends="gate">
243
244
245        <Child name="notes" type="notes"/>
246        <Child name="q10Settings" type="q10Settings"/>
247
248         <Child name="alpha" type="HHRate"/> may be absent..
249         <Child name="beta" type="HHRate"/>  may be absent...
250
251
252         <Child type="timeCourse" name="timeCourse"/>
253
254        <Exposure name="tau" dimension="time"/>
255        <Exposure name="inf" dimension="none"/>
256
257
258        <Behavior>
259            <StateVariable name="q" exposure="q" dimension="none"/>
260
261            <DerivedVariable name="rateScale" dimension="none" select="q10Settings/q10" onAbsent="1"/>
262
263            <DerivedVariable name="inf" dimension="none" exposure="inf" value="1"/>
264            <DerivedVariable name="tau" dimension="time" exposure="tau" value="1"/>
265
266            <DerivedVariable name="fcond" exposure="fcond" dimension="none" value="q^instances"/>
267            <OnStart>
268                 <StateAssignment variable="q" value="inf"/>
269            </OnStart>
270
271
272        </Behavior>
273    </ComponentType>
274
275
276
277    <ComponentType name="gateTauInfComplex" extends="gate">
278        <Parameter name="threshold" dimension="voltage"/>
279        <Parameter name="vscale" dimension="voltage"/>
280        <Parameter name="C" dimension="time"/>
281        <Parameter name="a" dimension="none"/>
282        <Parameter name="b" dimension="none"/>
283        <Parameter name="vs1" dimension="voltage"/>
284        <Parameter name="vs2" dimension="voltage"/>
285
286        <Requirement name="v" dimension="voltage"/>
287
288        <Behavior>
289            <StateVariable name="q" exposure="q" dimension="none"/>
290            <DerivedVariable name="tau" dimension="time" value="C / (exp(a + v/vs1) + exp(b + v/vs2))"/>
291            <DerivedVariable name="qinf" dimension="none" value="1 / (1 + exp((v - threshold)/vscale))"/>
292            <TimeDerivative variable="q" value="(qinf - q) / tau"/>
293            <DerivedVariable name="fcond" exposure="fcond" dimension="none" value="q^instances"/>
294        </Behavior>
295    </ComponentType>-->
296
297
298    <!--<Component id="gtic" type="gateTauInfComplex" instances="1" C="1ms"
299        threshold="-75mV" vscale="5.5mV" a="-14.59" vs1="16mV" b="-1.87" vs2="17mV"/>-->
300
301
302
303    <!-- neater way of expressing same thing
304
305    <ComponentType name="Tau_t">
306            <Exposure name="tau" dimension="time"/>
307
308    </ComponentType>
309
310    <ComponentType name="Inf_t">
311              <Exposure name="minf" dimension="none"/>
312
313    </ComponentType>
314
315    <ComponentType name="gateTauInf" extends="gate">
316
317         <Child type="Tau_t" name="Tau"/>
318         <Child type="Inf_t" name="Inf"/>
319
320         <Exposure name="minf" dimension="none"/>
321         <Exposure name="tau" dimension="time"/>
322         <Requirement name="v" dimension="voltage"/>-->
323
324
325     <!-- likely need for inner types here, so the Tau and Inf type definitions could be nested in here
326          <Behavior>
327            <StateVariable name="m" exposure="q" dimension="none"/>
328            <DerivedVariable name="minf" exposure="minf" dimension="none" select="Inf/minf"/>
329            <DerivedVariable name="tau" exposure="tau" dimension="time" select="Tau/tau"/>
330
331            <DerivedVariable name="fcond" exposure="fcond" dimension="none" value="m^instances"/>
332
333            <TimeDerivative variable="m" value="(minf - m) / tau"/> -->
334
335
336             <!--  note that '/' is part of a path, or a division operator depending on context
337
338          </Behavior>
339    </ComponentType>-->
340
341    <!--
342    <ComponentType name="hillTau" extends="Tau_t">
343        <Parameter name="C" dimension="time"/>
344        <Parameter name="a" dimension="none"/>
345        <Parameter name="b" dimension="none"/>
346        <Parameter name="vs1" dimension="voltage"/>
347        <Parameter name="vs2" dimension="voltage"/>
348        <Requirement name="v" dimension="voltage"/>
349        <Behavior>
350            <DerivedVariable name="tau" exposure="tau" dimension="time" value="C / (exp(a + v/vs1) + exp(b + v/vs2))"/>
351        </Behavior>
352    </ComponentType>
353
354    <ComponentType name="hillInf" extends="Inf_t">
355        <Parameter name="threshold" dimension="voltage"/>
356        <Parameter name="vscale" dimension="voltage"/>
357         <Requirement name="v" dimension="voltage"/>
358
359        <Behavior>
360            <DerivedVariable name="inf" exposure="minf" dimension="none" value="1 / (1 + exp((v - threshold)/vscale))"/>
361        </Behavior>
362    </ComponentType>-->
363
364
365
366
367    <ComponentType name="baseIonChannel"
368        description="Base for all ion channel ComponentTypes">
369        <Parameter name="conductance" dimension="conductance"/>
370        <Exposure name="g" dimension="conductance"/>
371        <Exposure name="fopen" dimension="none"/>
372        <Requirement name="v" dimension="voltage"/>
373
374    </ComponentType>
375
376    <ComponentType name="ionChannel"
377        extends="baseIonChannel"
378        description="Temporary ComponentTypes extending _baseIonChannel_. This is needed since many existing examples use the name ionChannel. Should be removed.">
379
380    </ComponentType>
381
382    <ComponentType name="ionChannelPassive" 
383        extends="ionChannel"
384        description="Simple passive ion channel where the constant conductance through the channel is equal to _conductance">
385        <Child name="notes" type="notes"/>
386        <Text name="neuroLexId"/>
387
388        <Behavior>
389            <DerivedVariable name="fopen" exposure="fopen" value="1" dimension="none"/>
390            <DerivedVariable name="g" exposure="g" value="conductance" dimension="conductance"/>
391        </Behavior>
392    </ComponentType>
393
394    <!--<ComponentType name="parameter">
395        <Parameter name="value" dimension="none"/>
396    </ComponentType>-->
397
398    <ComponentType name="ionChannelHH" 
399        extends="ionChannel"
400        description="Ion channel according to the Hodgkin Huxley formalism, with a number of gates (of type _gateHH_)">
401        <Child name="notes" type="notes"/>
402        <Child name="conductanceScaling" type="baseConductanceScaling"/>
403        <!--<Children name="parameters" type="parameter"/>-->
404        <Children name="gates" type="gateHH"/>
405        <Requirement name="temperature" dimension="temperature"/>
406        <Text name="neuroLexId"/>
407        <Text name="species"/>
408   
409        <Behavior>
410            <DerivedVariable name="conductanceScale" dimension="none" select="conductanceScaling/factor" onAbsent="1"/>
411            <DerivedVariable name="fopenUnscaled" dimension="none" select="gates[*]/fcond" reduce="multiply"/>
412            <DerivedVariable name="fopen" exposure="fopen" dimension="none" value="conductanceScale * fopenUnscaled"/>
413            <DerivedVariable name="g" exposure="g" value="conductance * fopen" dimension="conductance"/>
414        </Behavior>
415    </ComponentType>
416
417 
418
419    <ComponentType name="KSState"
420        description="One of the states in which a _gateKS_ can be. The rates of transitions between these states are given by _KSTransition_s">
421        <Parameter name="relativeConductance" dimension="none"/>
422        <Child name="notes" type="notes"/>
423        <Exposure name="occupancy" dimension="none"/>
424        <Exposure name="q" dimension="none"/>
425
426        <Behavior>
427            <StateVariable name="occupancy" exposure="occupancy" dimension="none"/>
428            <DerivedVariable name="q" dimension="none" exposure="q" value="relativeConductance * occupancy"/>
429        </Behavior>
430    </ComponentType>
431
432    <ComponentType name="closedState" 
433        extends="KSState"
434        description="A _KSState_ with _relativeConductance of 0">
435        <Fixed parameter="relativeConductance" value="0"/>
436    </ComponentType>
437
438
439    <ComponentType name="openState" 
440        extends="KSState"
441        description="A _KSState_ with _relativeConductance of 1">
442        <Fixed parameter="relativeConductance" value="1"/>
443    </ComponentType>
444
445
446    <ComponentType name="ionChannelKS" 
447        extends="ionChannel"
448        description="A kinetic scheme based ion channel with multiple _gateKS_s, each of which consists of multiple _KSState_s and _KSTransition_s giving the rates of transition between them">
449        <Parameter name="conductance" dimension="conductance"/>
450        <Children name="gates" type="gateKS"/>
451   
452        <Text name="species"/>
453   
454        <Behavior>
455            <DerivedVariable name="fopen" exposure="fopen" dimension="none" select="gates[*]/fcond" reduce="multiply"/>
456            <DerivedVariable name="g" exposure="g" dimension="conductance" value="fopen * conductance"/>
457
458        </Behavior>
459    </ComponentType>
460
461 
462
463    <ComponentType name="KSTransition" description="Specified the forward and reverse rates of transition between two _KSState_s in a _gateKS_">
464        <Link name="from" type="KSState"/>
465        <Link name="to" type="KSState"/>
466        <Exposure name="rf" dimension="per_time"/>
467        <Exposure name="rr" dimension="per_time"/>
468     
469    </ComponentType>
470
471 
472    <ComponentType name="forwardTransition"
473        extends="KSTransition"
474        description="A forward only _KSTransition_ for a _gateKS_ which specifies a _rate (type _baseHHRate_) which follows one of the standard Hodgkin Huxley forms (e.g. _HHExpRate_, _HHSigmoidRate_, _HHExpLinearRate_">
475
476        <Child name="rate" type="baseHHRate"/>
477   
478        <Behavior>
479            <DerivedVariable name="rf0" dimension="per_time" select="rate/r"/>
480            <DerivedVariable name="rf" exposure="rf" dimension="per_time" value="rf0"/>
481            <DerivedVariable name="rr" exposure="rr" dimension="per_time" value="0"/>
482        </Behavior>
483
484    </ComponentType>
485
486    <ComponentType name="reverseTransition" 
487        extends="KSTransition"
488        description="A reverse only _KSTransition_ for a _gateKS_ which specifies a _rate (type _baseHHRate_) which follows one of the standard Hodgkin Huxley forms (e.g. _HHExpRate_, _HHSigmoidRate_, _HHExpLinearRate_">
489
490        <Child name="rate" type="baseHHRate"/>
491
492        <Behavior>
493            <DerivedVariable name="rr0" dimension="per_time" select="rate/r"/>
494            <DerivedVariable name="rr" exposure="rr" dimension="per_time" value="rr0"/>
495            <DerivedVariable name="rf" exposure="rf" dimension="per_time" value="0"/>
496        </Behavior>
497    </ComponentType>
498 
499
500    <ComponentType name="vHalfTransition"
501        extends="KSTransition"
502        description="Transition which specifies both the forward and reverse rates of transition">
503        <Parameter name="vHalf" dimension="voltage"/>
504        <Parameter name="z" dimension="none"/>
505        <Parameter name="gamma" dimension="none"/>
506        <Parameter name="tau" dimension="time"/>
507        <Parameter name="tauMin" dimension="time"/>
508        <Constant name="kte" dimension="voltage" value="25.3mV"/>
509        <Requirement name="v" dimension="voltage"/>
510
511        <Behavior>
512       
513            <DerivedVariable name="rf0" dimension="per_time" value="exp(z * gamma * (v - vHalf) / kte) / tau"/>
514            <DerivedVariable name="rr0" dimension="per_time" value="exp(-z * (1 - gamma) * (v - vHalf) / kte) / tau"/>
515            <DerivedVariable name="rf" exposure="rf" dimension="per_time" value="1 / (1/rf0 + tauMin)"/>
516            <DerivedVariable name="rr" exposure="rr" dimension="per_time" value="1 / (1/rr0 + tauMin)"/>
517        </Behavior>
518    </ComponentType>
519
520
521
522    <ComponentType name="gateKS" 
523        extends="baseGate"
524        description="A gate which consists of multiple _KSState_s and _KSTransition_s giving the rates of transition between them">
525        <Parameter name="deltaV" dimension="voltage"/>
526        <Children name="states" type="KSState"/>
527        <Children name="transitions" type="KSTransition"/>
528        <Exposure name="qq" dimension="none"/>
529
530        <Behavior>
531
532            <DerivedVariable name="q" exposure="q" dimension="none" select="states[*]/q" reduce="add"/>
533            <DerivedVariable name="fopen" exposure="fcond" dimension="none" value="q^instances"/>
534            <DerivedVariable name="qq" exposure="qq" dimension="none" value="q"/>
535
536            <KineticScheme name="ks">
537                <Nodes children="states" variable="occupancy"/>
538                <Edges children="transitions" sourceNodeName="from" targetNodeName="to" forwardRate="rf" reverseRate="rr"/>
539                <Tabulable variable="v" increment="deltaV"/>
540            </KineticScheme>
541
542        </Behavior>
543   
544    </ComponentType>
545
546
547
548</Lems>
549
Note: See TracBrowser for help on using the browser.