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

root/NeuroML2/Schemas/NeuroML2/NeuroML_v2alpha.xsd

Revision 1011, 50.2 KB (checked in by pgleeson, 7 months ago)

Restructuring allowed options for timeCourse element

Line 
1<?xml version="1.0" encoding="UTF-8"?>
2
3<xs:schema targetNamespace="http://www.neuroml.org/schema/neuroml2"
4    xmlns="http://www.neuroml.org/schema/neuroml2"
5    xmlns:xi="http://www.w3.org/2001/XInclude"
6    xmlns:xs="http://www.w3.org/2001/XMLSchema"
7    elementFormDefault="qualified"
8    attributeFormDefault="unqualified">
9
10    <!-- An attempt to incorporate LEMS custom definitions...
11    xmlns:lems="http://www.neuroml.org/lems/0.5"
12    <xs:import namespace="http://www.neuroml.org/lems/0.5"
13        schemaLocation=" http://neuroml.svn.sourceforge.net/viewvc/neuroml/NeuroML2/Schemas/LEMS/LEMS_v0.5.xsd"/>-->
14
15    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
16    <!--      Core elements                                    -->
17    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
18
19    <xs:simpleType name="NmlId">
20        <xs:annotation>
21            <xs:documentation>An id attribute for elements which need to be identified uniquely (normally just within their parent element).</xs:documentation>
22        </xs:annotation>
23
24        <xs:restriction base="xs:string">
25            <xs:pattern value="[a-zA-Z0-9_]*"/>
26        </xs:restriction>
27
28    </xs:simpleType>
29
30    <xs:simpleType name="Nml2Quantity">
31        <xs:annotation>
32            <xs:documentation>A value for a physical quantity in NeuroML 2, e.g. 20, -60.0mV or 5nA</xs:documentation>
33        </xs:annotation>
34
35        <xs:restriction base="xs:string">
36            <xs:pattern value="-?([0-9]*(\.[0-9]+)?)([eE]-?[0-9]+)?[\s]*([_a-zA-Z0-9])*"/>
37        </xs:restriction>
38
39    </xs:simpleType>
40
41    <xs:simpleType name="Nml2Quantity_none">
42
43        <xs:restriction base="xs:string">
44            <xs:pattern value="-?([0-9]*(\.[0-9]+)?)([eE]-?[0-9]+)?"/> <!-- No units string -->
45        </xs:restriction>
46
47    </xs:simpleType>
48
49    <xs:simpleType name="Nml2Quantity_voltage">
50
51        <xs:restriction base="xs:string">
52            <xs:pattern value="-?([0-9]*(\.[0-9]+)?)([eE]-?[0-9]+)?[\s]*(V|mV)"/> <!-- Based on set of defined Units in NeuroMLCoreDimensions.xml -->
53        </xs:restriction>
54
55    </xs:simpleType>
56
57    <xs:simpleType name="Nml2Quantity_length">
58
59        <xs:restriction base="xs:string">
60            <xs:pattern value="-?([0-9]*(\.[0-9]+)?)([eE]-?[0-9]+)?[\s]*(m|cm|um)"/> <!-- Based on set of defined Units in NeuroMLCoreDimensions.xml -->
61        </xs:restriction>
62
63    </xs:simpleType>
64
65    <xs:simpleType name="Nml2Quantity_conductance">
66
67        <xs:restriction base="xs:string">
68            <xs:pattern value="-?([0-9]*(\.[0-9]+)?)([eE]-?[0-9]+)?[\s]*(S|mS|uS|nS|pS)"/> <!-- Based on set of defined Units in NeuroMLCoreDimensions.xml -->
69        </xs:restriction>
70
71    </xs:simpleType>
72
73    <xs:simpleType name="Nml2Quantity_conductanceDensity">
74
75        <xs:restriction base="xs:string">
76            <xs:pattern value="-?([0-9]*(\.[0-9]+)?)([eE]-?[0-9]+)?[\s]*(S_per_m2|mS_per_cm2|S_per_cm2)"/> <!-- Based on set of defined Units in NeuroMLCoreDimensions.xml -->
77        </xs:restriction>
78
79    </xs:simpleType>
80
81    <xs:simpleType name="Nml2Quantity_time">
82
83        <xs:restriction base="xs:string">
84            <xs:pattern value="-?([0-9]*(\.[0-9]+)?)([eE]-?[0-9]+)?[\s]*(s|ms)"/> <!-- Based on set of defined Units in NeuroMLCoreDimensions.xml -->
85        </xs:restriction>
86
87    </xs:simpleType>
88
89    <xs:simpleType name="Nml2Quantity_pertime">
90
91        <xs:restriction base="xs:string">
92            <xs:pattern value="-?([0-9]*(\.[0-9]+)?)([eE]-?[0-9]+)?[\s]*(per_s|per_ms)"/> <!-- Based on set of defined Units in NeuroMLCoreDimensions.xml -->
93        </xs:restriction>
94
95    </xs:simpleType>
96
97    <xs:simpleType name="Nml2Quantity_capacitance">
98
99        <xs:restriction base="xs:string">
100            <xs:pattern value="-?([0-9]*(\.[0-9]+)?)([eE]-?[0-9]+)?[\s]*(F|uF|nF|pF)"/> <!-- Based on set of defined Units in NeuroMLCoreDimensions.xml -->
101        </xs:restriction>
102
103    </xs:simpleType>
104
105    <xs:simpleType name="Nml2Quantity_specificCapacitance">
106
107        <xs:restriction base="xs:string">
108            <xs:pattern value="-?([0-9]*(\.[0-9]+)?)([eE]-?[0-9]+)?[\s]*(F_per_m2|uF_per_cm2)"/> <!-- Based on set of defined Units in NeuroMLCoreDimensions.xml -->
109        </xs:restriction>
110
111    </xs:simpleType>
112
113    <xs:simpleType name="Nml2Quantity_concentration">
114
115        <xs:restriction base="xs:string">
116            <xs:pattern value="-?([0-9]*(\.[0-9]+)?)([eE]-?[0-9]+)?[\s]*(mol_per_m3|mol_per_cm3|M|mM)"/> <!-- Based on set of defined Units in NeuroMLCoreDimensions.xml -->
117        </xs:restriction>
118
119    </xs:simpleType>
120
121    <xs:simpleType name="Nml2Quantity_current">
122
123        <xs:restriction base="xs:string">
124            <xs:pattern value="-?([0-9]*(\.[0-9]+)?)([eE]-?[0-9]+)?[\s]*(A|uA|nA|pA)"/> <!-- Based on set of defined Units in NeuroMLCoreDimensions.xml -->
125        </xs:restriction>
126
127    </xs:simpleType>
128
129    <xs:simpleType name="Nml2Quantity_temperature">
130
131        <xs:restriction base="xs:string">
132            <xs:pattern value="-?([0-9]*(\.[0-9]+)?)([eE]-?[0-9]+)?[\s]*(degC)"/> <!-- Based on set of defined Units in NeuroMLCoreDimensions.xml -->
133        </xs:restriction>
134
135    </xs:simpleType>
136
137
138    <xs:simpleType name="MetaId">
139        <xs:annotation>
140            <xs:documentation>An id string for pointing to an entry in an annotation element related to a MIRIAM resource. Based on metaid of SBML</xs:documentation>
141        </xs:annotation>
142
143        <xs:restriction base="xs:string">
144            <xs:pattern value="[a-zA-Z0-9_]*"/>
145        </xs:restriction>
146
147    </xs:simpleType>
148
149
150    <xs:simpleType name="NeuroLexId">
151        <xs:annotation>
152            <xs:documentation>An id string for pointing to an entry in the NeuroLex ontology. Use of this attribute is a shorthand for a full
153            RDF based reference to the MIRIAM Resource urn:miriam:neurolex, with an bqbiol:is qualifier</xs:documentation>
154        </xs:annotation>
155
156        <xs:restriction base="xs:string">
157            <xs:pattern value="[a-zA-Z0-9_]*"/>
158        </xs:restriction>
159
160    </xs:simpleType>
161
162
163    <xs:simpleType name="SegmentId">
164        <xs:annotation>
165            <xs:documentation>An id attribute for segments: integer >=0 only!</xs:documentation>
166        </xs:annotation>
167
168        <xs:restriction base="xs:nonNegativeInteger">
169        </xs:restriction>
170
171    </xs:simpleType>
172
173    <!--NOTE: Base and Standalone definitions moved to end of file, as some XML language binding
174        generators, e.g. generateDS.py, require superclasses to be defined after the subclasses... -->
175
176
177    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
178    <!--      Metadata elements                                -->
179    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
180
181    <xs:simpleType name="Notes">
182        <xs:annotation>
183            <xs:documentation>Textual human readable notes related to the element in question. It's useful to put these into
184         the NeuroML files instead of XML comments, as the notes can be extracted and repeated in the files to which the NeuroML is mapped.</xs:documentation>
185        </xs:annotation>
186        <xs:restriction base="xs:string"/>
187    </xs:simpleType>
188
189
190    <xs:complexType name="Annotation">
191        <xs:annotation>
192            <xs:documentation>Placeholder for MIRIAM related metadata, among others.</xs:documentation>
193        </xs:annotation>
194        <xs:sequence>
195            <xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded"/> <!-- Further elements will be specified!! -->
196        </xs:sequence>
197    </xs:complexType>
198
199    <xs:complexType name="ComponentType">
200        <xs:annotation>
201            <xs:documentation>Contains an extension to NeuroML by creating custom LEMS ComponentType.</xs:documentation>
202        </xs:annotation>
203        <xs:sequence>
204            <xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded"/> <!-- Further elements will be specified!! -->
205        </xs:sequence>
206
207        <xs:attribute name="name" type="xs:string" use="required"/>
208        <xs:attribute name="extends" type="xs:string" use="optional"/>
209        <xs:attribute name="description" type="xs:string" use="optional"/>
210
211    </xs:complexType>
212
213
214    <xs:simpleType name="ZeroToOne">
215        <xs:annotation>
216                <xs:documentation>Double restricted to between 1 and 0</xs:documentation>
217        </xs:annotation>
218        <xs:restriction base="xs:double">
219            <xs:minInclusive value="0"/>
220            <xs:maxInclusive value="1"/>
221        </xs:restriction>
222    </xs:simpleType>
223
224
225
226    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
227    <!--      Main NeuroML element                             -->
228    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
229
230    <xs:element name="neuroml" type="neuroml">
231        <xs:annotation>
232            <xs:documentation>The root NeuroML element.</xs:documentation>
233        </xs:annotation>
234    </xs:element>
235
236    <xs:complexType name="neuroml"> <!-- Making the complexType definition of the root element lowercase, not to confuse language binding generators... -->
237
238        <xs:complexContent>
239
240            <xs:extension base="Standalone">
241
242            <xs:sequence>
243               
244                <xs:element name="include" type="includeType" minOccurs="0" maxOccurs="unbounded"/>
245
246                <xs:element name="extracellularProperties" type="ExtracellularProperties" minOccurs="0" maxOccurs="unbounded"/>
247                <xs:element name="intracellularProperties" type="IntracellularProperties" minOccurs="0" maxOccurs="unbounded"/>
248
249                <xs:element name="morphology" type="Morphology" minOccurs="0" maxOccurs="unbounded"/>
250
251                <xs:element name="ionChannel" type="IonChannel" minOccurs="0" maxOccurs="unbounded"/>
252
253                <xs:group ref="concentrationModelTypes"/>
254
255                <xs:group ref="synapseTypes"/>
256
257                <xs:element name="biophysicalProperties" type="BiophysicalProperties" minOccurs="0" maxOccurs="unbounded"/>
258
259                <xs:group ref="cellTypes"/>
260
261                <xs:element name="pulseGenerator" type="PulseGenerator" minOccurs="0" maxOccurs="unbounded"/>
262
263                <xs:element name="network" type="Network" minOccurs="0" maxOccurs="unbounded"/>
264
265                <xs:element name="ComponentType" type="ComponentType" minOccurs="0" maxOccurs="unbounded"/>
266
267            </xs:sequence>
268
269            </xs:extension>
270
271        </xs:complexContent>
272
273    </xs:complexType>
274
275    <!-- A small subset of XLInclude from: http://www.w3.org/2001/XInclude.xsd 
276         Will be sufficient for now... -->
277    <xs:complexType name="includeType" mixed="true">
278        <xs:attribute name="href" use="optional" type="xs:anyURI"/>
279    </xs:complexType>
280
281    <xs:group name="cellTypes">
282        <xs:annotation>
283        <xs:documentation>Various types of cells which are defined in NeuroML 2. This list will be expanded...</xs:documentation>
284        </xs:annotation>
285        <xs:sequence>
286                <xs:element name="cell" type="Cell" minOccurs="0" maxOccurs="unbounded"/>
287                <xs:element name="abstractCell" type="AbstractCell" minOccurs="0" maxOccurs="unbounded"/>
288                <xs:element name="iafTauCell" type="IaFTauCell" minOccurs="0" maxOccurs="unbounded"/>
289                <xs:element name="iafCell" type="IaFCell" minOccurs="0" maxOccurs="unbounded"/>
290                <xs:element name="izhikevichCell" type="IzhikevichCell" minOccurs="0" maxOccurs="unbounded"/>
291                <xs:element name="adExIaFCell" type="AdExIaFCell" minOccurs="0" maxOccurs="unbounded"/>
292        </xs:sequence>
293   </xs:group>
294
295
296
297    <xs:group name="synapseTypes">
298        <xs:annotation>
299        <xs:documentation>Various types of synapse which are defined in NeuroML 2. This list will be expanded...</xs:documentation>
300        </xs:annotation>
301        <xs:sequence>
302                <xs:element name="expOneSynapse" type="ExpOneSynapse" minOccurs="0" maxOccurs="unbounded"/>
303                <xs:element name="expTwoSynapse" type="ExpTwoSynapse" minOccurs="0" maxOccurs="unbounded"/>
304                <xs:element name="nmdaSynapse"   type="NmdaSynapse"   minOccurs="0" maxOccurs="unbounded"/>
305                <xs:element name="stpSynapse"    type="StpSynapse"    minOccurs="0" maxOccurs="unbounded"/>
306        </xs:sequence>
307   </xs:group>
308
309
310    <xs:group name="concentrationModelTypes">
311        <xs:annotation>
312        <xs:documentation>Various types of concentration model which are defined in NeuroML 2. This list will be expanded...</xs:documentation>
313        </xs:annotation>
314        <xs:sequence>
315                <xs:element name="decayingPoolConcentrationModel" type="DecayingPoolConcentrationModel" minOccurs="0" maxOccurs="unbounded"/>
316        </xs:sequence>
317   </xs:group>
318
319    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
320    <!--      IonChannel element                                  -->
321    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
322
323    <xs:complexType name="IonChannel">
324
325        <xs:complexContent>
326            <xs:extension base="Standalone">
327                <xs:choice>
328                    <xs:element name="gate" type="GateHH" minOccurs="0" maxOccurs="unbounded"/>    <!-- TODO check type="gateHH" for this -->
329                    <xs:element name="gateHH" type="GateHH" minOccurs="0" maxOccurs="unbounded"/>
330                </xs:choice>
331
332                <xs:attribute name="species" type="NmlId" use="optional"/>
333
334                <xs:attribute name="type" type="channelTypes" use="optional"/>
335
336                <xs:attribute name="conductance" type="Nml2Quantity_conductance" use="optional"/>
337
338            </xs:extension>
339        </xs:complexContent>
340    </xs:complexType>
341
342    <xs:simpleType name="channelTypes">
343      <xs:restriction base="xs:string">
344        <xs:enumeration value="ionChannelPassive"/>
345        <xs:enumeration value="ionChannelHH"/>
346        <xs:enumeration value="ionChannelKS"/>
347      </xs:restriction>
348    </xs:simpleType>
349
350    <xs:simpleType name="gateTypes">
351      <xs:restriction base="xs:string">
352        <xs:enumeration value="gateHH"/>
353        <xs:enumeration value="gateKS"/>
354      </xs:restriction>
355    </xs:simpleType>
356
357
358
359    <xs:complexType name="GateHH">
360        <xs:complexContent>
361            <xs:extension base="Base">
362                <xs:all>
363                    <xs:element name="notes" type="Notes" minOccurs="0"/>
364                    <xs:element name="q10Settings" type="Q10Settings" minOccurs="0"/>
365                    <xs:element name="forwardRate" type="HHRate" minOccurs="0"/>
366                    <xs:element name="reverseRate" type="HHRate" minOccurs="0"/>
367                    <xs:element name="timeCourse" type="HHTime"  minOccurs="0"/>
368                    <xs:element name="steadyState" type="HHVariable" minOccurs="0"/>
369                </xs:all>
370                <xs:attribute name="instances" type="xs:integer" use="optional" default="1"/>
371                <xs:attribute name="type" type="gateTypes" use="optional"/>
372            </xs:extension>
373        </xs:complexContent>
374    </xs:complexType>
375
376
377    <xs:complexType name="Q10Settings">
378            <xs:attribute name="type" type="NmlId" use="required"/>
379            <xs:attribute name="fixedQ10" type="Nml2Quantity_none" use="optional"/>   <!-- TODO: make this and follwing 2 attrs either/or-->
380            <xs:attribute name="q10Factor" type="Nml2Quantity_none" use="optional"/>
381            <xs:attribute name="experimentalTemp" type="Nml2Quantity_temperature" use="optional"/>
382    </xs:complexType>
383
384    <xs:complexType name="HHRate">
385            <xs:attribute name="type" type="NmlId" use="required"/>
386            <xs:attribute name="rate" type="Nml2Quantity_pertime" use="optional"/>
387            <xs:attribute name="midpoint" type="Nml2Quantity_voltage" use="optional"/>
388            <xs:attribute name="scale" type="Nml2Quantity_voltage" use="optional"/>
389    </xs:complexType>
390
391    <xs:complexType name="HHVariable">
392            <xs:attribute name="type" type="NmlId" use="required"/>
393            <xs:attribute name="rate" type="xs:float" use="optional"/>
394            <xs:attribute name="midpoint" type="Nml2Quantity_voltage" use="optional"/>
395            <xs:attribute name="scale" type="Nml2Quantity_voltage" use="optional"/>
396    </xs:complexType>
397
398    <xs:complexType name="HHTime">
399            <xs:attribute name="type" type="NmlId" use="required"/>
400            <xs:attribute name="rate" type="Nml2Quantity_time" use="optional"/>
401            <xs:attribute name="midpoint" type="Nml2Quantity_voltage" use="optional"/>
402            <xs:attribute name="scale" type="Nml2Quantity_voltage" use="optional"/>
403            <xs:attribute name="tau" type="Nml2Quantity_time" use="optional"/>    <!-- TODO: make this and prev 3 attrs either/or-->
404    </xs:complexType>
405
406    <!--<xs:complexType name="FixedTimeCourse">
407            <xs:attribute name="tau" type="Nml2Quantity_time" use="required"/>
408    </xs:complexType>-->
409
410
411
412    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
413    <!--      Concentration Model types                        -->
414    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
415
416    <xs:complexType name="DecayingPoolConcentrationModel">
417
418        <xs:complexContent>
419            <xs:extension base="Standalone">
420
421                <xs:attribute name="ion" type="NmlId" use="required">
422                    <xs:annotation>
423                        <xs:documentation>Should not be required, as it's present on the species element!</xs:documentation>
424                    </xs:annotation>
425                </xs:attribute>
426                <xs:attribute name="restingConc" type="Nml2Quantity_concentration" use="required"/>
427                <xs:attribute name="decayConstant" type="Nml2Quantity_time" use="required"/>
428                <xs:attribute name="shellThickness" type="Nml2Quantity_length" use="required"/>
429
430            </xs:extension>
431        </xs:complexContent>
432    </xs:complexType>
433
434
435    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
436    <!--      Synapse types                                    -->
437    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
438
439    <xs:complexType name="ConductanceBasedSynapse">
440
441        <xs:complexContent>
442            <xs:extension base="Standalone">
443
444                <xs:attribute name="gbase" type="Nml2Quantity_conductance" use="required"/>
445                <xs:attribute name="erev" type="Nml2Quantity_voltage" use="required"/>
446
447            </xs:extension>
448        </xs:complexContent>
449    </xs:complexType>
450   
451   
452    <xs:complexType name="ExpOneSynapse">
453
454        <xs:complexContent>
455            <xs:extension base="ConductanceBasedSynapse">
456
457                <xs:attribute name="tauDecay" type="Nml2Quantity_time" use="required"/>
458
459            </xs:extension>
460        </xs:complexContent>
461    </xs:complexType>
462   
463   
464    <xs:complexType name="ExpTwoSynapse">
465
466        <xs:complexContent>
467            <xs:extension base="ConductanceBasedSynapse">
468
469                <xs:attribute name="tauDecay" type="Nml2Quantity_time" use="required"/>
470                <xs:attribute name="tauRise" type="Nml2Quantity_time" use="required"/>
471
472            </xs:extension>
473        </xs:complexContent>
474    </xs:complexType>
475   
476   
477    <xs:complexType name="NmdaSynapse">
478
479        <xs:complexContent>
480            <xs:extension base="ExpTwoSynapse">
481                <xs:sequence>
482                    <xs:element name="voltageConcDepBlock" type="VoltageConcDepBlock"/>
483                </xs:sequence>
484
485            </xs:extension>
486        </xs:complexContent>
487    </xs:complexType>
488   
489    <xs:complexType name="StpSynapse">
490
491        <xs:complexContent>
492            <xs:extension base="ExpTwoSynapse">
493                <xs:sequence>
494                    <xs:element name="stpMechanism" type="StpMechanism"/>
495                </xs:sequence>
496
497            </xs:extension>
498        </xs:complexContent>
499    </xs:complexType>
500   
501   
502
503    <xs:complexType name="VoltageConcDepBlock">
504        <xs:attribute name="type" type="xs:string" fixed="voltageConcDepBlock"/>
505        <xs:attribute name="species" type="NmlId" use="required"/>
506        <xs:attribute name="blockConcentration" type="Nml2Quantity_concentration" use="required"/>
507        <xs:attribute name="scalingConc" type="Nml2Quantity_concentration" use="required"/>
508        <xs:attribute name="scalingVolt" type="Nml2Quantity_voltage" use="required"/>
509    </xs:complexType>
510   
511    <xs:complexType name="StpMechanism">
512        <xs:attribute name="initReleaseProb" type="ZeroToOne" use="required"/>
513        <xs:attribute name="tauFac" type="Nml2Quantity_time" use="required"/>
514        <xs:attribute name="tauRec" type="Nml2Quantity_time" use="required"/>
515    </xs:complexType>
516
517
518
519    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
520    <!--      Cell element                                     -->
521    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
522
523    <xs:complexType name="AbstractCell">
524
525        <xs:complexContent>
526            <xs:extension base="Standalone">
527
528            </xs:extension>
529        </xs:complexContent>
530    </xs:complexType>
531
532    <xs:complexType name="IaFTauCell">
533        <xs:complexContent>
534            <xs:extension base="AbstractCell">
535                <xs:attribute name="leakReversal" type="Nml2Quantity_voltage" use="required"/>
536                <xs:attribute name="thresh" type="Nml2Quantity_voltage" use="required"/>
537                <xs:attribute name="reset" type="Nml2Quantity_voltage" use="required"/>
538                <xs:attribute name="tau" type="Nml2Quantity_time" use="required"/>
539            </xs:extension>
540        </xs:complexContent>
541    </xs:complexType>
542
543    <xs:complexType name="IaFCell">
544        <xs:complexContent>
545            <xs:extension base="AbstractCell">
546                <xs:attribute name="leakReversal" type="Nml2Quantity_voltage" use="required"/>
547                <xs:attribute name="thresh" type="Nml2Quantity_voltage" use="required"/>
548                <xs:attribute name="reset" type="Nml2Quantity_voltage" use="required"/>
549                <xs:attribute name="C" type="Nml2Quantity_capacitance" use="required"/>
550                <xs:attribute name="leakConductance" type="Nml2Quantity_conductance" use="required"/>
551            </xs:extension>
552        </xs:complexContent>
553    </xs:complexType>
554
555    <xs:complexType name="IzhikevichCell">
556        <xs:complexContent>
557            <xs:extension base="AbstractCell">
558                <xs:attribute name="v0" type="Nml2Quantity_voltage" use="required"/>
559                <xs:attribute name="thresh" type="Nml2Quantity_voltage" use="required"/>
560                <xs:attribute name="a" type="Nml2Quantity_none" use="required"/>
561                <xs:attribute name="b" type="Nml2Quantity_none" use="required"/>
562                <xs:attribute name="c" type="Nml2Quantity_none" use="required"/>
563                <xs:attribute name="d" type="Nml2Quantity_none" use="required"/>
564                <xs:attribute name="Iamp" type="Nml2Quantity_none" use="required"/>
565                <xs:attribute name="Idel" type="Nml2Quantity_time" use="required"/>
566                <xs:attribute name="Idur" type="Nml2Quantity_time" use="required"/>
567            </xs:extension>
568        </xs:complexContent>
569    </xs:complexType>
570
571    <xs:complexType name="AdExIaFCell">
572        <xs:complexContent>
573            <xs:extension base="AbstractCell">
574                <xs:attribute name="C" type="Nml2Quantity_capacitance" use="required"/>
575                <xs:attribute name="gL" type="Nml2Quantity_conductance" use="required"/>
576                <xs:attribute name="EL" type="Nml2Quantity_voltage" use="required"/>
577                <xs:attribute name="reset" type="Nml2Quantity_voltage" use="required"/>
578                <xs:attribute name="VT" type="Nml2Quantity_voltage" use="required"/>
579                <xs:attribute name="thresh" type="Nml2Quantity_voltage" use="required"/>
580                <xs:attribute name="delT" type="Nml2Quantity_voltage" use="required"/>
581                <xs:attribute name="tauw" type="Nml2Quantity_time" use="required"/>
582                <xs:attribute name="a" type="Nml2Quantity_conductance" use="required"/>
583                <xs:attribute name="b" type="Nml2Quantity_current" use="required"/>
584                <xs:attribute name="Iamp" type="Nml2Quantity_current" use="required"/>
585                <xs:attribute name="Idel" type="Nml2Quantity_time" use="required"/>
586                <xs:attribute name="Idur" type="Nml2Quantity_time" use="required"/>
587            </xs:extension>
588        </xs:complexContent>
589    </xs:complexType>
590
591
592    <xs:complexType name="Cell">
593
594        <xs:complexContent>
595            <xs:extension base="AbstractCell">
596
597                <xs:sequence>
598                    <xs:element name="morphology" type="Morphology" minOccurs="0"/>
599                    <xs:element name="biophysicalProperties" type="BiophysicalProperties" minOccurs="0"/>
600                </xs:sequence>
601
602
603                <xs:attribute name="morphology" type="NmlId" use="optional" default="1">
604                    <xs:annotation>
605                        <xs:documentation>Should only be used if morphology element is outside the cell.
606                                          This points to the id of the morphology</xs:documentation>
607                    </xs:annotation>
608                </xs:attribute>
609
610                <xs:attribute name="biophysicalProperties" type="NmlId" use="optional" default="1">
611                    <xs:annotation>
612                        <xs:documentation>Should only be used if biophysicalProperties element is outside the cell.
613                                          This points to the id of the biophysicalProperties</xs:documentation>
614                    </xs:annotation>
615                </xs:attribute>
616
617
618            </xs:extension>
619        </xs:complexContent>
620    </xs:complexType>
621
622
623    <xs:complexType name="Morphology">
624        <xs:annotation>
625            <xs:documentation>Standalone element which is usually inside a single cell, but could be outside and
626                              referenced by id.</xs:documentation>
627        </xs:annotation>
628
629        <xs:complexContent>
630
631            <xs:extension base="Standalone">
632
633                <xs:sequence>
634                    <xs:element name="segment" type="Segment" maxOccurs="unbounded"/>
635                    <xs:element name="segmentGroup" type="SegmentGroup" minOccurs="0" maxOccurs="unbounded"/>
636                </xs:sequence>
637
638            </xs:extension>
639        </xs:complexContent>
640    </xs:complexType>
641
642    <xs:complexType name="Segment">
643        <xs:complexContent>
644            <xs:extension base="Base">
645
646                <xs:sequence>
647                    <xs:element name="parent" type="SegmentParent" minOccurs="0"/>
648                    <xs:element name="proximal" type="Point3DWithDiam" minOccurs="0"/>
649                    <xs:element name="distal" type="Point3DWithDiam" minOccurs="1"/>
650                </xs:sequence>
651
652                <!-- TODO: Do we want to do away with numerical ids and just use unique strings/names in id attribute?? -->
653                <!--<xs:attribute name="id" type="SegmentId" use="required"/>-->
654                <xs:attribute name="name" type="xs:string" use="required"/>
655
656            </xs:extension>
657        </xs:complexContent>
658
659    </xs:complexType>
660
661    <xs:complexType name="SegmentParent">
662        <xs:attribute name="segment" type="SegmentId" use="required"/>
663        <xs:attribute name="fractionAlong" type="ZeroToOne" use="optional" default="1"/>
664    </xs:complexType>
665
666
667    <xs:complexType name="Point3DWithDiam">
668        <xs:annotation>
669            <xs:documentation>A 3D point with diameter.</xs:documentation>
670        </xs:annotation>
671        <xs:attribute name="x" type="xs:double" use="required"/>
672        <xs:attribute name="y" type="xs:double" use="required"/>
673        <xs:attribute name="z" type="xs:double" use="required"/>
674        <xs:attribute name="diameter" type="xs:double" use="required"/>
675    </xs:complexType>
676
677
678    <xs:complexType name="SegmentGroup">
679
680
681        <!--.... dendrite_group  ...-->
682        <xs:complexContent>
683            <xs:extension base="Base">
684
685                <xs:sequence>
686                    <xs:element name="member" type="Member" minOccurs="0" maxOccurs="unbounded"/>
687                    <xs:element name="include" type="Include" minOccurs="0" maxOccurs="unbounded"/>
688                    <xs:element name="path" type="Path" minOccurs="0" maxOccurs="unbounded"/>
689                    <xs:element name="subTree" type="SubTree" minOccurs="0" maxOccurs="unbounded"/>
690                    <xs:element name="inhomogeneousParam" type="InhomogeneousParam" minOccurs="0" maxOccurs="unbounded"/>
691                </xs:sequence>
692
693            </xs:extension>
694        </xs:complexContent>
695    </xs:complexType>
696
697
698    <xs:complexType name="InhomogeneousParam">
699        <xs:complexContent>
700            <xs:extension base="Base">
701                <xs:sequence>
702                    <xs:element name="proximal" type="ProximalDetails" minOccurs="0"/>
703                    <xs:element name="distal" type="DistalDetails" minOccurs="0"/>
704                </xs:sequence>
705                <xs:attribute name="variable" type="xs:string" use="required"/>
706                <xs:attribute name="metric" type="Metric" use="required"/>
707            </xs:extension>
708        </xs:complexContent>
709    </xs:complexType>
710
711
712    <xs:simpleType name="Metric">
713        <xs:annotation>
714                <xs:documentation>Allowed metrics for InhomogeneousParam</xs:documentation>
715        </xs:annotation>
716        <xs:restriction base="xs:string">
717                <xs:enumeration value="Path Length from root"/>
718        </xs:restriction>
719    </xs:simpleType>
720
721
722    <xs:complexType name="ProximalDetails">
723        <xs:attribute name="translationStart" type="xs:double" use="required"/>
724    </xs:complexType>
725
726    <xs:complexType name="DistalDetails">
727        <xs:attribute name="normalizationEnd" type="xs:double" use="required"/>
728    </xs:complexType>
729
730    <xs:complexType name="Member">
731        <xs:attribute name="segment" type="SegmentId" use="required"/>
732    </xs:complexType>
733   
734    <xs:complexType name="Include">
735        <xs:attribute name="segmentGroup" type="NmlId" use="required"/>
736    </xs:complexType>
737   
738    <xs:complexType name="Path">
739        <xs:sequence>
740            <xs:element name="from" type="SegmentEndPoint" minOccurs="0"/>
741            <xs:element name="to" type="SegmentEndPoint" minOccurs="0"/>
742        </xs:sequence>
743    </xs:complexType>
744   
745    <xs:complexType name="SubTree">
746        <xs:choice>
747            <xs:element name="from" type="SegmentEndPoint" minOccurs="0"/>
748            <xs:element name="to" type="SegmentEndPoint" minOccurs="0"/>
749        </xs:choice>
750    </xs:complexType>
751   
752    <xs:complexType name="SegmentEndPoint">
753        <xs:attribute name="segment" type="SegmentId" use="required"/>
754    </xs:complexType>
755
756
757    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
758    <!--      Biophysical properties                           -->
759    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
760
761
762    <xs:complexType name="BiophysicalProperties">
763        <xs:annotation>
764            <xs:documentation>Standalone element which is usually inside a single cell, but could be outside and
765                              referenced by id.</xs:documentation>
766        </xs:annotation>
767        <xs:complexContent>
768            <xs:extension base="Standalone">
769
770                <xs:sequence>
771                    <xs:element name="membraneProperties" type="MembraneProperties"/>
772                    <xs:element name="intracellularProperties" type="IntracellularProperties" minOccurs="0"/>
773                    <xs:element name="extracellularProperties" type="ExtracellularProperties" minOccurs="0"/>
774                </xs:sequence>
775
776
777            </xs:extension>
778        </xs:complexContent>
779    </xs:complexType>
780
781
782    <xs:complexType name="MembraneProperties">
783
784        <xs:sequence>
785            <xs:element name="channelPopulation" type="ChannelPopulation" minOccurs="0" maxOccurs="unbounded"/>
786            <xs:element name="channelDensity" type="ChannelDensity" minOccurs="0" maxOccurs="unbounded"/>
787
788            <xs:element name="spikeThresh" type="ValueAcrossSegOrSegGroup" minOccurs="0" maxOccurs="unbounded"/>
789            <xs:element name="specificCapacitance" type="ValueAcrossSegOrSegGroup" minOccurs="0" maxOccurs="unbounded"/>
790
791            <xs:element name="initMembPotential" type="ValueAcrossSegOrSegGroup" minOccurs="0" maxOccurs="unbounded"/>
792           
793            <xs:element name="reversalPotential" type="ReversalPotential" minOccurs="0" maxOccurs="unbounded"/>
794           
795        </xs:sequence>
796
797    </xs:complexType>
798
799    <xs:complexType name="ChannelPopulation">
800
801        <xs:complexContent>
802            <xs:extension base="Base">
803
804                <xs:sequence>
805                        <xs:element name="variableParameter" type="VariableParameter" minOccurs="0" maxOccurs="unbounded"/>
806                </xs:sequence>
807
808                <xs:attribute name="ionChannel" type="NmlId" use="required"/>
809                <xs:attribute name="number" type="xs:nonNegativeInteger" use="required"/>
810
811                <xs:attribute name="erev" type="Nml2Quantity_voltage" use="optional"/>
812
813                <!-- Note: only one of the following should be used!! -->
814                <xs:attribute name="segmentGroup" type="NmlId" use="optional" default="all"/>
815                <xs:attribute name="segment" type="NmlId" use="optional"/>
816
817                <xs:attribute name="ion" type="NmlId" use="optional">
818                    <xs:annotation>
819                        <xs:documentation>Specifying the ion here again is redundant, this will be set in ionChannel. It is added here
820                        TEMPORARILY as selecting all ca or na conducting channel populations/densities in a cell would be difficult otherwise.
821                        It should be removed in the longer term, due to possible inconsistencies in this value and that in the ionChannel
822                        element. TODO: remove.</xs:documentation>
823                    </xs:annotation>
824                </xs:attribute>
825
826            </xs:extension>
827        </xs:complexContent>
828
829    </xs:complexType>
830
831    <xs:complexType name="ChannelDensity">
832
833        <xs:complexContent>
834            <xs:extension base="Base">
835                   
836                <xs:sequence>
837                        <xs:element name="variableParameter" type="VariableParameter" minOccurs="0" maxOccurs="unbounded"/>
838                </xs:sequence>
839
840                <xs:attribute name="ionChannel" type="NmlId" use="required"/>
841                <xs:attribute name="condDensity" type="Nml2Quantity_conductanceDensity" use="optional"/>
842
843                <xs:attribute name="erev" type="Nml2Quantity_voltage" use="optional"/>
844               
845                <!-- Note: only one of the following should be used!! -->
846                <xs:attribute name="segmentGroup" type="NmlId" use="optional" default="all"/>
847
848                <xs:attribute name="segment" type="NmlId" use="optional"/>
849
850                <xs:attribute name="ion" type="NmlId" use="optional">
851                    <xs:annotation>
852                        <xs:documentation>Specifying the ion here again is redundant, this will be set in ionChannel. It is added here
853                        TEMPORARILY as selecting all ca or na conducting channel populations/densities in a cell would be difficult otherwise.
854                        It should be removed in the longer term, due to possible inconsistencies in this value and that in the ionChannel
855                        element. TODO: remove.</xs:documentation>
856                    </xs:annotation>
857                </xs:attribute>
858
859            </xs:extension>
860        </xs:complexContent>
861       
862    </xs:complexType>
863
864    <xs:complexType name="ValueAcrossSegOrSegGroup">
865
866        <xs:attribute name="value" type="Nml2Quantity" use="optional"/>
867
868        <!-- Note: only one of the following should be used!! -->
869        <xs:attribute name="segmentGroup" type="NmlId" use="optional" default="all"/>
870        <xs:attribute name="segment" type="NmlId" use="optional"/>
871
872    </xs:complexType>
873
874
875    <xs:complexType name="VariableParameter">
876
877        <xs:sequence>
878            <xs:element name="inhomogeneousValue" type="InhomogeneousValue" minOccurs="0"/>
879        </xs:sequence>
880        <xs:attribute name="parameter" type="xs:string" use="required"/>
881        <xs:attribute name="segmentGroup" type="xs:string" use="required"/>
882
883    </xs:complexType>
884
885    <xs:complexType name="InhomogeneousValue">
886        <xs:attribute name="inhomogeneousParam" type="xs:string" use="required"/>
887        <xs:attribute name="value" type="xs:string" use="required"/>
888    </xs:complexType>
889
890
891    <xs:complexType name="ReversalPotential">
892
893        <xs:complexContent>
894            <xs:extension base="ValueAcrossSegOrSegGroup">
895                <xs:attribute name="species" type="NmlId" use="optional"/>
896            </xs:extension>
897        </xs:complexContent>
898
899    </xs:complexType>
900
901
902    <xs:complexType name="Species">
903
904        <xs:complexContent>
905            <xs:extension base="ValueAcrossSegOrSegGroup">
906
907                <xs:attribute name="id" type="NmlId" use="required"/>
908
909                <xs:attribute name="concentrationModel" type="NmlId" use="required"/>
910
911                <xs:attribute name="ion" type="NmlId" use="optional">
912                    <xs:annotation>
913                        <xs:documentation>Specifying the ion here again is redundant, the ion name should be the same as id. Kept for now
914                        until LEMS implementation can select by id. TODO: remove.</xs:documentation>
915                    </xs:annotation>
916                </xs:attribute>
917
918                <xs:attribute name="initialConcentration" type="Nml2Quantity_concentration" use="required"/>
919                <xs:attribute name="initialExtConcentration" type="Nml2Quantity_concentration" use="required"/>
920               
921            </xs:extension>
922        </xs:complexContent>
923
924    </xs:complexType>
925
926
927    <!--
928    <xs:complexType name="FixedConcentration">
929        <xs:attribute name="concentration" type="Nml2Quantity_concentration" use="required"/>
930    </xs:complexType>
931
932    -->
933
934 <!-- TODO: remove -->
935    <xs:complexType name="ConcentrationModel_D">
936
937        <xs:complexContent>
938            <xs:extension base="DecayingPoolConcentrationModel">
939
940                <xs:attribute name="type" use="required" fixed="decayingPoolConcentrationModel"/>
941
942            </xs:extension>
943        </xs:complexContent>
944    </xs:complexType>
945
946    <xs:complexType name="IntracellularProperties">
947
948        <xs:sequence>
949            <xs:element name="species" type="Species" minOccurs="0" maxOccurs="unbounded"/>
950            <xs:element name="resistivity" type="ValueAcrossSegOrSegGroup" minOccurs="0" maxOccurs="unbounded"/>
951        </xs:sequence>
952
953    </xs:complexType>
954
955    <xs:complexType name="ExtracellularProperties">
956
957        <xs:complexContent>
958            <xs:extension base="Base"> <!-- Should be standalone, but need some real elements below or XSD not valid... -->
959                <xs:sequence>
960                    <xs:element name="species" type="Species" minOccurs="0" maxOccurs="unbounded"/> <!-- Further elements will be specified!! -->
961                </xs:sequence>
962
963                <xs:attribute name="temperature" type="Nml2Quantity_temperature" use="optional"/>
964
965            </xs:extension>
966        </xs:complexContent>
967
968
969    </xs:complexType>
970
971    <xs:complexType name="ExtracellularPropertiesLocal">
972
973        <xs:sequence>
974            <xs:element name="species" type="Species" minOccurs="0" maxOccurs="unbounded"/> <!-- Further elements will be specified!! -->
975        </xs:sequence>
976
977        <xs:attribute name="temperature" type="Nml2Quantity_temperature" use="optional"/>
978
979    </xs:complexType>
980
981    <xs:complexType name="ReactionScheme">
982
983        <xs:complexContent>
984            <xs:extension base="Base"> <!-- Should be standalone, but need some real elements below or XSD not valid... -->
985                <xs:sequence>
986                    <xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded"/> <!-- Further elements will be specified!! -->
987                </xs:sequence>
988                <xs:attribute name="source" type="xs:string" use="required"/>
989                <xs:attribute name="type" type="xs:string" use="required"/>
990            </xs:extension>
991        </xs:complexContent>
992
993    </xs:complexType>
994
995
996
997    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
998    <!--      Inputs                                         -->
999    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
1000
1001
1002<!--Will be updated in line with LEMS ComponentType definitions -->
1003
1004    <xs:complexType name="PulseGenerator">
1005
1006        <xs:complexContent>
1007            <xs:extension base="Standalone">
1008
1009                <xs:attribute name="delay" type="Nml2Quantity_time" use="required"/>
1010                <xs:attribute name="duration" type="Nml2Quantity_time" use="required"/>
1011                <xs:attribute name="amplitude" type="Nml2Quantity_current" use="required"/>
1012
1013            </xs:extension>
1014        </xs:complexContent>
1015    </xs:complexType>
1016
1017    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
1018    <!--      Networks                                         -->
1019    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
1020
1021
1022    <xs:complexType name="Network">
1023
1024        <xs:complexContent>
1025            <xs:extension base="Standalone">
1026                <xs:sequence>
1027                    <xs:element name="space" type="Space" minOccurs="0" maxOccurs="unbounded"/>
1028                    <xs:element name="region" type="Region" minOccurs="0" maxOccurs="unbounded"/>
1029                    <xs:element name="extracellularProperties" type="ExtracellularPropertiesLocal" minOccurs="0" maxOccurs="unbounded"/>
1030                    <xs:element name="population" type="Population" maxOccurs="unbounded"/>
1031                    <xs:element name="cellSet" type="CellSet" minOccurs="0" maxOccurs="unbounded"/>
1032                    <xs:element name="projection" type="Projection" minOccurs="0" maxOccurs="unbounded"/>
1033                    <xs:element name="synapticConnection" type="SynapticConnection" minOccurs="0" maxOccurs="unbounded"/> <!--Will be updated in line with LEMS ComponentType definitions -->
1034                    <xs:element name="connection" type="Connection" minOccurs="0" maxOccurs="unbounded"/> <!--Will be updated in line with LEMS ComponentType definitions -->
1035                    <xs:element name="explicitInput" type="ExplicitInput" minOccurs="0" maxOccurs="unbounded"/> <!--Will be updated in line with LEMS ComponentType definitions -->
1036                </xs:sequence>
1037            </xs:extension>
1038        </xs:complexContent>
1039
1040    </xs:complexType>
1041
1042
1043    <xs:complexType name="Space"> <!-- Something onto which cells & networks can be laid out, e.g. n dim grid or n dim Euclidean space -->
1044
1045        <xs:complexContent>
1046            <xs:extension base="Base">
1047                <xs:sequence>
1048                    <xs:element name="structure" type="SpaceStructure" minOccurs="0"/>
1049                </xs:sequence>
1050                <xs:attribute name="basedOn" type="allowedSpaces" use="optional"/>
1051            </xs:extension>
1052        </xs:complexContent>
1053
1054    </xs:complexType>
1055
1056    <xs:complexType name="SpaceStructure">
1057                <xs:attribute name="xSpacing" type="xs:float"/>
1058                <xs:attribute name="ySpacing" type="xs:float" use="optional"/> <!-- only use if >= 2D grid-->
1059                <xs:attribute name="zSpacing" type="xs:float" use="optional"/> <!-- only use if 3D grid-->
1060                <xs:attribute name="xStart" type="xs:float" use="optional" default="0"/>
1061                <xs:attribute name="yStart" type="xs:float" use="optional" default="0"/> <!-- only use if >= 2D grid-->
1062                <xs:attribute name="zStart" type="xs:float" use="optional" default="0"/> <!-- only use if 3D grid-->
1063    </xs:complexType>
1064
1065
1066    <xs:simpleType name="allowedSpaces">
1067      <xs:restriction base="xs:string">
1068        <xs:enumeration value="Euclidean_1D"/>
1069        <xs:enumeration value="Euclidean_2D"/>
1070        <xs:enumeration value="Euclidean_3D"/>
1071        <xs:enumeration value="Grid_1D"/>
1072        <xs:enumeration value="Grid_2D"/>
1073        <xs:enumeration value="Grid_3D"/>
1074      </xs:restriction>
1075    </xs:simpleType>
1076
1077
1078    <xs:complexType name="Region">
1079
1080        <xs:complexContent>
1081            <xs:extension base="Base">
1082                <xs:sequence>
1083                    <xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded"/> <!-- Further elements will be specified!! -->
1084                </xs:sequence>
1085
1086                <xs:attribute name="space" type="NmlId" use="optional"/>
1087            </xs:extension>
1088        </xs:complexContent>
1089
1090    </xs:complexType>
1091
1092
1093    <xs:complexType name="Population">
1094
1095        <xs:complexContent>
1096            <xs:extension base="Standalone">
1097                <xs:choice>
1098                    <xs:element name="layout" type="Layout" minOccurs="0"/>
1099                    <xs:element name="instances" type="Instances"/>
1100                </xs:choice>
1101
1102                <xs:attribute name="cell" type="NmlId" use="optional"/>       <!-- Only one of these should be used!!! -->
1103                <xs:attribute name="network" type="NmlId" use="optional"/>    <!-- Only one of these should be used!!! -->
1104                <xs:attribute name="component" type="NmlId" use="optional"/>    <!-- Only one of these should be used!!! -->
1105
1106                <xs:attribute name="size" type="xs:integer" use="optional"/>    <!-- Temp!!! -->
1107
1108                <xs:attribute name="extracellularProperties" type="NmlId" use="optional"/>
1109
1110            </xs:extension>
1111        </xs:complexContent>
1112
1113    </xs:complexType>
1114
1115
1116    <xs:complexType name="Layout">
1117
1118                <xs:choice>
1119                    <xs:element name="random" type="RandomLayout"/>
1120                    <xs:element name="grid" type="GridLayout"/>
1121                    <xs:element name="unstructured" type="UnstructuredLayout"/>
1122                </xs:choice>
1123
1124                <xs:attribute name="space" type="NmlId"/>
1125
1126    </xs:complexType>
1127
1128
1129
1130    <xs:complexType name="UnstructuredLayout">
1131                <xs:attribute name="number" type="xs:nonNegativeInteger"/>
1132    </xs:complexType>
1133
1134
1135    <xs:complexType name="RandomLayout">
1136                <xs:attribute name="number" type="xs:nonNegativeInteger"/>
1137                <xs:attribute name="region" type="NmlId"/>
1138    </xs:complexType>
1139
1140
1141    <xs:complexType name="GridLayout">
1142                <xs:attribute name="xSize" type="xs:nonNegativeInteger"/>
1143                <xs:attribute name="ySize" type="xs:nonNegativeInteger" use="optional"/> <!-- only use if >= 2D grid-->
1144                <xs:attribute name="zSize" type="xs:nonNegativeInteger" use="optional"/> <!-- only use if 3D grid-->
1145    </xs:complexType>
1146
1147
1148    <xs:complexType name="Instances">
1149                <xs:sequence>
1150                    <xs:element name="instance" type="Instance" maxOccurs="unbounded"/>
1151                </xs:sequence>
1152                <xs:attribute name="size" type="xs:nonNegativeInteger"/>
1153    </xs:complexType>
1154
1155    <xs:complexType name="Instance">
1156                <xs:sequence>
1157                    <xs:element name="location" type="Location"/>
1158                </xs:sequence>
1159                <xs:attribute name="id" type="xs:nonNegativeInteger"/>
1160                <xs:attribute name="i" type="xs:nonNegativeInteger"/>  <!-- for grid -->
1161                <xs:attribute name="j" type="xs:nonNegativeInteger"/>  <!-- for grid -->
1162                <xs:attribute name="k" type="xs:nonNegativeInteger"/>  <!-- for grid -->
1163    </xs:complexType>
1164
1165    <xs:complexType name="Location">
1166                <xs:attribute name="x" type="xs:float"/>
1167                <xs:attribute name="y" type="xs:float"/>
1168                <xs:attribute name="z" type="xs:float"/>
1169    </xs:complexType>
1170
1171
1172    <xs:complexType name="CellSet">
1173
1174        <xs:complexContent>
1175            <xs:extension base="Base">
1176                <xs:sequence>
1177                    <xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded"/> <!-- Further elements will be specified!! -->
1178                </xs:sequence>
1179
1180                <xs:attribute name="select" type="xs:string" use="required"/>
1181            </xs:extension>
1182        </xs:complexContent>
1183
1184    </xs:complexType>
1185
1186
1187    <xs:complexType name="Projection">
1188
1189        <xs:complexContent>
1190            <xs:extension base="Base">
1191                <xs:sequence>
1192                    <xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded"/> <!-- Further elements will be specified!! -->
1193                </xs:sequence>
1194            </xs:extension>
1195        </xs:complexContent>
1196
1197    </xs:complexType>
1198
1199
1200<!--Will be updated in line with LEMS ComponentType definitions -->
1201    <xs:complexType name="SynapticConnection">
1202                <xs:attribute name="from" type="xs:string"/>
1203                <xs:attribute name="to" type="xs:string"/>
1204                <xs:attribute name="synapse" type="xs:string"/>
1205    </xs:complexType>
1206
1207<!--Will be updated in line with LEMS ComponentType definitions -->
1208    <xs:complexType name="Connection">
1209                <xs:attribute name="from" type="xs:string"/>
1210                <xs:attribute name="to" type="xs:string"/>
1211    </xs:complexType>
1212
1213<!--Will be updated in line with LEMS ComponentType definitions -->
1214    <xs:complexType name="ExplicitInput">
1215                <xs:attribute name="target" type="xs:string"/>
1216                <xs:attribute name="input" type="xs:string"/>
1217    </xs:complexType>
1218
1219
1220
1221    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
1222    <!--      Further Core elements                                    -->
1223    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
1224
1225    <!--NOTE: Base and Standalone definitions moved to end of file, as some XML language binding
1226        generators, e.g. generateDS.py, require superclasses to be defined after the subclasses... -->
1227
1228    <xs:complexType name="Base">
1229           
1230        <xs:annotation>
1231            <xs:documentation>Anything which can have a unique id (within its parent) i.e. most elements.</xs:documentation>
1232        </xs:annotation>
1233
1234        <xs:attribute name="id" type="NmlId" use="required"/>
1235
1236        <xs:attribute name="neuroLexId" type="NeuroLexId" use="optional"/>
1237
1238    </xs:complexType>
1239
1240
1241    <xs:complexType name="Standalone">
1242
1243        <xs:annotation>
1244            <xs:documentation>Elements which can stand alone and be referenced by id, e.g. cell, morphology.</xs:documentation>
1245        </xs:annotation>
1246
1247        <xs:complexContent>
1248            <xs:extension base="Base">
1249                <xs:sequence>
1250                    <xs:element name="notes" type="Notes" minOccurs="0"/> <!-- More metadata needed -->
1251                    <xs:element name="annotation" type="Annotation" minOccurs="0"/> <!-- More metadata needed -->
1252                </xs:sequence>
1253                <xs:attribute name="metaid" type="MetaId" use="optional"/>
1254
1255            </xs:extension>
1256        </xs:complexContent>
1257
1258    </xs:complexType>
1259
1260</xs:schema>
1261
1262
1263
Note: See TracBrowser for help on using the browser.