The SpineML component layer syntax describes the functional entities, i.e. neurons and synapses, that are used as building blocks from a model. The syntax is derived from the NineML abstraction layer and LEMS common object model specification with some very minor changes requiring the specification of an initial regime and some minor syntax changes to the specification of ports.
A technical description of the NineML Abstraction layer is available here.
We now describe the differences between the NineML Abstraction layer and the SpineML Component layer explicitly.
In SpineML we use W3C shemas for validation. This means that the port tags require seperation into several types.
Contains | Description |
---|---|
@name::String |
state variable or alias for output |
@is_per_connection::bool |
for weightupdates sends an output for each connection, instead of each destination neuron |
Contains | Description |
---|---|
@name::String |
port identifying name |
@dimension::String |
port dimensionality |
@post::bool [optional] |
for weightupdates remaps the input into connections as though it were a postsynaptic input |
Contains | Description |
---|---|
@name::String |
port identifting name |
@dimension::String |
port dimensionality |
@reduce_op::String |
operation used to combine multiple inputs |
@post::bool [optional] |
for weightupdates remaps the input into connections as though it were a postsynaptic input |
Contains | Description |
---|---|
@name::String |
port identifying name |
@is_per_connection::bool [optional] |
for weightupdates sends an output for each connection, instead of each destination neuron |
Contains | Description |
---|---|
@name::String |
port identifying name |
@dimension::String |
port dimensionality |
@post::bool [optional] |
for weightupdates remaps the input into connections as though it were a postsynaptic input |
We have added a new communication port type: Impulse. Impulses transfer an event with a value. The tags associated with these ports align with the event port tags, with the following form.
Contains | Description |
---|---|
@name::String |
statevariable, parameter or alias for output |
@is_per_connection::bool [optional] |
for weightupdates sends an output for each connection, instead of each destination neuron |
Contains | Description |
---|---|
@name::String |
port identifying name |
@dimension::Stirng |
port dimensionality |
@post::bool [optional] |
for weightupdates remaps the input into connections as though it were a postsynaptic input |
As EventOut
As OnEvent, however the ImpulseRecievePort name can be used in the contained MathinLine tags as a variable.
ComponentClass
contains an attribute type
, which can take the values neuron_body
,postsynapse
or weight_update
.
Dynamics
contains an attribute initial_regime
which denotes the starting Regime.
NineML
is replaced as the root tag by SpineML
.
The units and dimensions of components parameters and analog/impulse input ports are specified within a component description. A single @dimension
attribute is used for this purpose and consists of a value derived from, a Si unit described by using a prefix and unit from the following tables. E.g. millivolts (mV) is prefix=m, unit=V.
Prefix | Description |
---|---|
G | giga (109) |
M | mega (106) |
k | kilo (103) |
c | centi (10-2) |
m | milli (10-3) |
u | micro (10-6) |
n | nano (10-9) |
p | pico (10-12) |
f | femto (10-15) |
Unit | Description |
---|---|
V | volt (voltage) |
Ohm | Ohm (resistance) |
g | gram (weight) |
m | meter (distance) |
S | siemens (conductance) |
A | ampere (current) |
cd | candela (luminosity) |
mol | mole (substance) |
degC | degree Celsius (temperature) |
s | seconds (time) |
F | farad (capacitance) |
Hz | hertz (frequency) |