-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbibi_configuration.xsd
More file actions
350 lines (326 loc) · 15.5 KB
/
Copy pathbibi_configuration.xsd
File metadata and controls
350 lines (326 loc) · 15.5 KB
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
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://schemas.humanbrainproject.eu/SP10/2014/BIBI"
xmlns="http://schemas.humanbrainproject.eu/SP10/2014/BIBI"
attributeFormDefault="unqualified" elementFormDefault="qualified">
<!--Root element of the bibi file -->
<xs:element name="bibi" type="BIBIConfiguration"/>
<xs:complexType name="BIBIConfiguration">
<xs:annotation>
<xs:documentation>This class represents the root of the BIBI configuration.</xs:documentation>
</xs:annotation>
<xs:all>
<xs:element name="timestep" type="TimeStep" minOccurs="0">
<xs:annotation>
<xs:documentation>If specified, the CLE uses a different timestep than the default timestep of 20ms. The timestep is specified in milliseconds and depicts the time between two successive loops of the CLE in simulation time.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="brainModel" type="BrainModelWithPath" minOccurs="0">
<xs:annotation>
<xs:documentation>The brain model depicts a path to the neural network model.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="bodyModel" type="SDFWithPath" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>The path to the robot model that should be used. This can either be a path to an SDF model or a path to a zip file containing all required assets for a robot. This zip file must have a file model.sdf at the root of the archive.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="mode" type="SimulationMode" minOccurs="0">
<xs:annotation>
<xs:documentation>The simulation mode. This determines the choice of the neural network simulator.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="extRobotController" type="ScriptFilename" minOccurs="0">
<xs:annotation>
<xs:documentation>A path to an external robot controller. If specified, the robot controller is started when the simulation begins and stopped when the simulation is over. Therefore, the path must be a path to a shell script that offers a function start and a function stop.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="configuration" type="ConfFile" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>The configuration entries of an experiment depict additional files required for the simulation of experiments using this BIBI configuration.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="transferFunction" type="TransferFunction" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>The transfer functions that are used to couple a neural network to robot</xs:documentation>
</xs:annotation>
</xs:element>
</xs:all>
</xs:complexType>
<xs:simpleType name="SimulationMode">
<xs:annotation>
<xs:documentation>The supported simulation modes of the NRP</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="SynchronousNestSimulation">
<xs:annotation>
<xs:documentation>In this mode, the NRP uses a synchronized Nest configuration for the neural network simulation</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="SynchronousDirectNestSimulation">
<xs:annotation>
<xs:documentation>In this mode, the NRP uses a synchronized direct Nest configuration for the neural network simulation</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="SynchronousSpinnakerSimulation">
<xs:annotation>
<xs:documentation>In this mode, the NRP uses a synchronized SpiNNaker configuration for the neural network simulation (single process only)</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="SynchronousRobotRosNest">
<xs:annotation>
<xs:documentation>In this mode, the NRP can communicate with a robot that uses ROS, with a synchronized Nest for the neural network simulation</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="SynchronousNengoSimulation">
<xs:annotation>
<xs:documentation>In this mode, the NRP can communicate with a robot that uses ROS, with a synchronized Nengo for the neural network simulation</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="TimeStep">
<xs:annotation>
<xs:documentation>The timestep type of the CLE. This is a positive number in milliseconds. The maximum allowed value is an hour.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:positiveInteger">
<xs:maxInclusive value="3600000"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="BrainModelWithPath">
<xs:complexContent>
<xs:extension base="BrainModel">
<xs:attribute name="model" type="xs:string" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="BrainModel">
<xs:annotation>
<xs:documentation>A neural network description as used in the CLE</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="file" type="BrainFilename">
<xs:annotation>
<xs:documentation>A path to the neural network file.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="populations" type="MultiNeuronSelector" minOccurs="0"
maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>The populations in this field are the explicitly defined populations. Each of this population is defined as a view of an assumed 'circuit' population.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="SDFWithPath">
<xs:simpleContent>
<xs:extension base="SDFFilename">
<xs:attribute name="robotId" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>Robot id the pose refers to</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="model" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>If the model is custom, it tells the name of the model</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="isCustom" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>Whether the model is custom</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="BrainFilename">
<xs:annotation>
<xs:documentation>This denotes the supported file types for neural network models. The current version only supports Python or H5 files for neural networks.</xs:documentation>
</xs:annotation>
<xs:union memberTypes="H5Filename PythonFilename"/>
</xs:simpleType>
<xs:simpleType name="SDFFilename">
<xs:annotation>
<xs:documentation>This type denotes a path to an SDF (or Zip) file</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="(storage:)?[a-zA-Z0-9\._/]*\.(sdf|zip)"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="H5Filename">
<xs:annotation>
<xs:documentation>This type denotes a path to an H5 file.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z0-9\._/]*\.h5"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PythonFilename">
<xs:annotation>
<xs:documentation>This type denotes a path to a Python file.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="(storage:)?[a-zA-Z0-9\._/]*\.py"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ScriptFilename">
<xs:annotation>
<xs:documentation>This type denotes a path to a script file.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z0-9\._/]*\.sh"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="ConfFile">
<xs:annotation>
<xs:documentation>This type denotes an additional configuration entry that consists of a file and a purpose.</xs:documentation>
</xs:annotation>
<xs:attribute name="src" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>The source of a configuration entry is a path to a file that contains the necessary information. The path is relative to the BIBI model.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="type" type="ConfType" use="required">
<xs:annotation>
<xs:documentation>The type of a configuration entry denotes the purpose how this entry is used. This is used to decouple the purpose of a configuration entry from the file name.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:simpleType name="ConfType">
<xs:annotation>
<xs:documentation>This type denotes a configuration type which can be a standard configuration type or a custom type. The latter is just any string.</xs:documentation>
</xs:annotation>
<xs:union memberTypes="ConfTypeEnumeration xs:string"/>
</xs:simpleType>
<xs:simpleType name="ConfTypeEnumeration">
<xs:annotation>
<xs:documentation>This enumeration lists the standard configuration types used in the NRP.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="retina"/>
<xs:enumeration value="brainvisualizer"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="TransferFunction" abstract="true">
<xs:annotation>
<xs:documentation>This is the abstract type for a transfer function specification. A transfer function may be specified either in XML or in Python. These specification options are reflected in subclasses of the abstract transfer function type.</xs:documentation>
</xs:annotation>
<xs:attribute name="active" type="xs:boolean" default="true">
<xs:annotation>
<xs:documentation>Whether the Transfer Function is active</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="PythonTransferFunction">
<xs:annotation>
<xs:documentation>This type denotes a transfer function entirely specified in the Python DSL PyTF.</xs:documentation>
</xs:annotation>
<xs:complexContent mixed="true">
<xs:extension base="TransferFunction">
<xs:sequence>
<xs:any namespace="##other" processContents="skip"
minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="src" type="PythonFilename" use="optional">
<xs:annotation>
<xs:documentation>The 'src' attribute denotes the path of a python file that contains the entire transfer function. If this attribute is present, the actual contents of the transfer function element is ignored and only the contents of the specified Python file are taken into account.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="priority" type="xs:nonNegativeInteger" use="optional">
<xs:annotation>
<xs:documentation>The 'priority' attribute is used to specify the order in which transfer functions are executed at every simulation step. Transfer functions with higher priority are executed first.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="NeuronSelector" abstract="true">
<xs:annotation>
<xs:documentation>The abstract base class of neuron selectors</xs:documentation>
</xs:annotation>
<xs:attribute name="population" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>The population this neuron selector refers to</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="Index">
<xs:annotation>
<xs:documentation>Selection of exactly one neuron using an index of a base population</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="NeuronSelector">
<xs:attribute name="index" type="xs:nonNegativeInteger" use="required">
<xs:annotation>
<xs:documentation>The index of the selected neuron within its population</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="MultiNeuronSelector" abstract="true">
<xs:annotation>
<xs:documentation>
The abstract base class of selections of multiple neurons
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="NeuronSelector"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="Range">
<xs:annotation>
<xs:documentation>Selection of a range of neurons from an existing population</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="MultiNeuronSelector">
<xs:attribute name="from" type="xs:nonNegativeInteger" use="required">
<xs:annotation>
<xs:documentation>The starting index from which neurons are selected</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="to" type="xs:nonNegativeInteger" use="required">
<xs:annotation>
<xs:documentation>The stop index to which neurons are selected</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="step" type="xs:positiveInteger" use="optional">
<xs:annotation>
<xs:documentation>The step of the selection</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="List">
<xs:annotation>
<xs:documentation>Selection of a list of neurons using their indices</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="MultiNeuronSelector">
<xs:sequence>
<xs:element name="element" type="xs:nonNegativeInteger" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>The indices of selected neurons</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="Population">
<xs:annotation>
<xs:documentation>Selection of an entire population of neurons</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="MultiNeuronSelector">
<xs:attribute name="count" type="xs:positiveInteger" use="required">
<xs:annotation>
<xs:documentation>The size of the selected population. This is necessary for validation purposes where the neural network is not available.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>