|
Converting the file: NetworkML_v1.6.xsd
<?xml version="1.0" encoding="UTF-8"?>
<rng:grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns="http://morphml.org/networkml/schema" xmlns:meta="http://morphml.org/metadata/schema" xmlns:mml="http://morphml.org/morphml/schema" xmlns:bio="http://morphml.org/biophysics/schema" ns="http://morphml.org/networkml/schema" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<!--
This file specifies a number of elements needed by NeuroML v1.6 Level 3 compliant files
This file has been developed as part of the neuroConstruct and NeuroML initiatives
Funding for this work has been received from the Medical Research Council
Author: Padraig Gleeson
Copyright 2007 Department of Physiology, UCL
-->
<rng:include href="../Level1/Metadata_v1.6.rng" ns="http://morphml.org/metadata/schema"/>
<rng:include href="../Level1/MorphML_v1.6.rng" ns="http://morphml.org/morphml/schema"/>
<rng:include href="../Level2/Biophysics_v1.6.rng" ns="http://morphml.org/biophysics/schema"/>
<a:documentation>
The specification of populations and projections which allows network connections to be encoded in NeuroML
</a:documentation>
<rng:start combine="choice">
<rng:ref name="networkml"/>
</rng:start>
<rng:define combine="choice" name="networkml">
<rng:element name="networkml">
<rng:ref name="NetworkML"/>
<a:documentation>
The root element.
Note: this element will only be present in a standalone NetworkML file.
For files covering many levels, neuroml will be the root element
</a:documentation>
</rng:element>
</rng:define>
<rng:define combine="choice" name="NetworkML">
<a:documentation>
The main elements which make up a NetworkML compliant document.
</a:documentation>
<rng:ref name="metadata"/>
<rng:ref name="CoreNetworkElements"/>
<rng:optional>
<rng:attribute name="name">
<rng:data type="string"/>
</rng:attribute>
</rng:optional>
<rng:attribute name="lengthUnits">
<rng:ref name="LengthUnits"/>
<a:documentation>
Unit of all length measurements.
</a:documentation>
</rng:attribute>
<rng:optional>
<a:documentation>
default value is : cubic_millimetre</a:documentation>
<rng:attribute name="volumeUnits">
<rng:ref name="VolumeUnits"/>
<a:documentation>
Unit of all volume measurements.
</a:documentation>
</rng:attribute>
</rng:optional>
</rng:define>
<rng:define combine="choice" name="CoreNetworkElements">
<a:documentation>
The elements needed to specify a network connection
</a:documentation>
<rng:element name="populations">
<rng:ref name="Populations"/>
<a:documentation>
The least that's needed in a network is a population of cells...
</a:documentation>
</rng:element>
<rng:optional>
<rng:element name="projections">
<rng:ref name="Projections"/>
<a:documentation>
In theory there can be no projections, if the file is intended only to specify positions
</a:documentation>
</rng:element>
</rng:optional>
<rng:optional>
<rng:element name="inputs">
<rng:ref name="Inputs"/>
<a:documentation>
No inputs need be specified
</a:documentation>
</rng:element>
</rng:optional>
</rng:define>
<rng:define combine="choice" name="Populations">
<a:documentation>
The list of cell populations
</a:documentation>
<rng:ref name="metadata"/>
<rng:oneOrMore>
<rng:element name="population">
<rng:ref name="Population"/>
</rng:element>
</rng:oneOrMore>
</rng:define>
<rng:define combine="choice" name="Projections">
<a:documentation>
The list of projections from one cell population to another
</a:documentation>
<rng:ref name="metadata"/>
<rng:zeroOrMore>
<rng:element name="projection">
<rng:ref name="Projection"/>
</rng:element>
</rng:zeroOrMore>
<rng:attribute name="units">
<rng:ref name="Units"/>
<a:documentation>
Unit system of all quantities in the projection descriptions, e.g. synaptic time constants
</a:documentation>
</rng:attribute>
</rng:define>
<rng:define combine="choice" name="Inputs">
<a:documentation>
The list of electrical inputs into the cells. Should this be extended to allow voltage clamp inputs??
</a:documentation>
<rng:ref name="metadata"/>
<rng:oneOrMore>
<rng:element name="input">
<rng:ref name="Input"/>
</rng:element>
</rng:oneOrMore>
<rng:attribute name="units">
<rng:ref name="Units"/>
<a:documentation>
Unit system of all quantities in the input description, e.g. input current amplitudes
</a:documentation>
</rng:attribute>
</rng:define>
<rng:define combine="choice" name="Input">
<a:documentation>
Description of a single electrical input to a number of cells
</a:documentation>
<rng:ref name="metadata"/>
<rng:choice>
<a:documentation>
Currently either a pulse input or a random spiking input are allowed
</a:documentation>
<rng:element name="pulse_input">
<rng:ref name="PulseInput"/>
</rng:element>
<rng:element name="random_stim">
<rng:ref name="RandomStim"/>
</rng:element>
</rng:choice>
<rng:element name="target">
<rng:ref name="InputTarget"/>
</rng:element>
<rng:attribute name="name">
<rng:data type="string"/>
</rng:attribute>
</rng:define>
<rng:define combine="choice" name="PulseInput">
<a:documentation>
A single input pulse. Note: this should be changed to allow easier specifications of
pulse trains, input protocols, etc.
</a:documentation>
<rng:attribute name="delay">
<rng:ref name="TimeValue"/>
</rng:attribute>
<rng:attribute name="duration">
<rng:ref name="TimeValue"/>
</rng:attribute>
<rng:attribute name="amplitude">
<rng:ref name="CurrentValue"/>
</rng:attribute>
</rng:define>
<rng:define combine="choice" name="RandomStim">
<a:documentation>
A random stimulation at a specific frequency. Note: can be interpreted differently by different simulators!!
</a:documentation>
<rng:attribute name="frequency">
<rng:ref name="FrequencyValue"/>
</rng:attribute>
<rng:attribute name="synaptic_mechanism">
<rng:data type="string">
<a:documentation>
The name of a synaptic mechanism which will provides the conductance change.
This will be fired once every 'spike' at the given frequency
</a:documentation>
</rng:data>
</rng:attribute>
</rng:define>
<rng:define combine="choice" name="InputTarget">
<a:documentation>
Specifies the cell group and which cells/segments to apply the stimulation
</a:documentation>
<rng:ref name="metadata"/>
<rng:choice>
<a:documentation>
As with populations/projections, there should be two ways to specify the locations of the
stimulations: a list of cell location instances and a template for choosing the cells. Only
the former is currently included...
</a:documentation>
<rng:oneOrMore>
<rng:element name="site">
<rng:ref name="InputSite"/>
</rng:element>
</rng:oneOrMore>
<!-- <xs:element name="cell_choice" ... -->
</rng:choice>
<rng:attribute name="cell_group">
<rng:data type="string">
<a:documentation>
The cell group to which to apply the stimulation
</a:documentation>
</rng:data>
</rng:attribute>
</rng:define>
<rng:define combine="choice" name="InputSite">
<a:documentation>
Specifies a location on a cell where input is received
</a:documentation>
<rng:attribute name="cell_id">
<rng:ref name="CellIdInNetwork"/>
</rng:attribute>
<rng:optional>
<a:documentation>
default value is : 0</a:documentation>
<rng:attribute name="segment_id">
<rng:ref name="SegmentIdInCell"/>
</rng:attribute>
</rng:optional>
<rng:optional>
<a:documentation>
default value is : 0.5</a:documentation>
<rng:attribute name="fraction_along">
<rng:ref name="ZeroToOne"/>
</rng:attribute>
</rng:optional>
</rng:define>
<rng:define combine="choice" name="Population">
<a:documentation>
Description of a cell population of the same type
</a:documentation>
<rng:ref name="metadata"/>
<rng:element name="cell_type">
<rng:data type="string"/>
</rng:element>
<rng:choice>
<a:documentation>
Either instances or a specification of the location
</a:documentation>
<rng:element name="instances">
<rng:ref name="Instances"/>
</rng:element>
<rng:element name="pop_location">
<rng:ref name="PopulationLocation"/>
</rng:element>
</rng:choice>
<rng:attribute name="name">
<rng:data type="string"/>
</rng:attribute>
</rng:define>
<rng:define combine="choice" name="Instances">
<a:documentation>
Cell Instance position information
</a:documentation>
<rng:ref name="metadata"/>
<rng:oneOrMore>
<rng:element name="instance">
<rng:ref name="CellInstance"/>
</rng:element>
</rng:oneOrMore>
</rng:define>
<rng:define combine="choice" name="Projection">
<a:documentation>
Description of how one cell population makes synaptic connections with another
</a:documentation>
<rng:ref name="metadata"/>
<rng:element name="source">
<rng:data type="string">
<a:documentation>
Cell population where synaptic connection begins
</a:documentation>
</rng:data>
</rng:element>
<rng:element name="target">
<rng:data type="string">
<a:documentation>
Cell population where synaptic connection terminates
</a:documentation>
</rng:data>
</rng:element>
<rng:oneOrMore>
<rng:element name="synapse_props">
<rng:ref name="SynapseProperties"/>
<a:documentation>
Properties of a synapse associated with this connection.
</a:documentation>
</rng:element>
</rng:oneOrMore>
<rng:choice>
<a:documentation>
Either an explicit list of the connections or a description of how to create the connections
</a:documentation>
<rng:element name="connections">
<rng:ref name="Connections"/>
</rng:element>
<rng:element name="connectivity_pattern">
<rng:ref name="ConnectivityPattern"/>
</rng:element>
</rng:choice>
<rng:attribute name="name">
<rng:data type="string"/>
</rng:attribute>
</rng:define>
<rng:define combine="choice" name="SynapseProperties">
<a:documentation>
Information on the synapse which is used in a connection
</a:documentation>
<rng:ref name="metadata"/>
<rng:element name="synapse_type">
<rng:data type="string"/>
</rng:element>
<rng:element name="default_values">
<rng:ref name="SynapseInternalProperties"/>
</rng:element>
</rng:define>
<rng:define combine="choice" name="SynapseInternalProperties">
<a:documentation>
Variables specifying a single synapse or default values for a set of connections
</a:documentation>
<rng:optional>
<rng:attribute name="synapse_type">
<rng:data type="string">
<a:documentation>
In the case where multiple synapses are present at one connection and there are non default values for each synapse's weights, etc. this field gives the name of the synapse type referred to.
</a:documentation>
</rng:data>
</rng:attribute>
</rng:optional>
<rng:optional>
<a:documentation>
default value is : 0</a:documentation>
<rng:attribute name="internal_delay">
<rng:ref name="SynapticDelayValue"/>
<a:documentation>
Delay due to diffusion across the synaptic cleft. If only one delay value is known, this can be used
</a:documentation>
</rng:attribute>
</rng:optional>
<rng:optional>
<a:documentation>
default value is : 0</a:documentation>
<rng:attribute name="pre_delay">
<rng:ref name="SynapticDelayValue"/>
<a:documentation>
Delay due to presynaptic mechanism
</a:documentation>
</rng:attribute>
</rng:optional>
<rng:optional>
<a:documentation>
default value is : 0</a:documentation>
<rng:attribute name="post_delay">
<rng:ref name="SynapticDelayValue"/>
<a:documentation>
Delay due to postsynaptic mechanism
</a:documentation>
</rng:attribute>
</rng:optional>
<rng:optional>
<a:documentation>
default value is : 0</a:documentation>
<rng:attribute name="prop_delay">
<rng:ref name="SynapticDelayValue"/>
<a:documentation>
Delay due to simulated AP propagation along an axon
</a:documentation>
</rng:attribute>
</rng:optional>
<rng:optional>
<a:documentation>
default value is : 1</a:documentation>
<rng:attribute name="weight">
<rng:ref name="NonNegativeDouble"/>
<a:documentation>
Multiplicative weighting factor for the synapse
</a:documentation>
</rng:attribute>
</rng:optional>
<rng:optional>
<a:documentation>
default value is : 0</a:documentation>
<rng:attribute name="threshold">
<rng:ref name="VoltageValue"/>
<a:documentation>
Presynaptic membrane potential level above which the synapse fires
</a:documentation>
</rng:attribute>
</rng:optional>
</rng:define>
<rng:define combine="choice" name="ConnectivityPattern">
<a:documentation>
Information on the number of target cells connected to source cells, etc.
</a:documentation>
<rng:choice>
<!-- Lots more scenarios could be described here... -->
<rng:element name="all_to_all">
<a:documentation>
Connect every pre cell to every post cell
</a:documentation>
</rng:element>
<rng:element name="fixed_probability">
<a:documentation>
For each pre - post pair, there is a fixed probability of connection
</a:documentation>
<rng:attribute name="probability">
<rng:ref name="ZeroToOne"/>
</rng:attribute>
</rng:element>
<rng:element name="per_cell_connection">
<rng:ref name="PerCellConnection"/>
<a:documentation>
Connection built iteratively from each pre (or post) cell based on a number of parameters
</a:documentation>
</rng:element>
</rng:choice>
</rng:define>
<rng:define combine="choice" name="PerCellConnection">
<a:documentation>
Connection built iteratively from each pre (or post) cell based on a number of parameters
</a:documentation>
<a:documentation>
default value is : PreToPost</a:documentation>
<rng:attribute name="direction">
<a:documentation>
Whether the settings below (e.g. number per source cell) refer to PreToPost or PostToPre connections.
Note more info could be known about numbers of connections on post synaptic cells, so this possibility should be allowed.
</a:documentation>
<rng:choice>
<rng:value>PreToPost</rng:value>
<rng:value>PostToPre</rng:value>
</rng:choice>
</rng:attribute>
<rng:attribute name="num_per_source">
<rng:ref name="PositiveDouble"/>
</rng:attribute>
<rng:optional>
<rng:attribute name="max_per_target">
<rng:data type="positiveInteger"/>
</rng:attribute>
</rng:optional>
<!-- More settings can be put here, e.g. distance dependence of connections-->
</rng:define>
<rng:define combine="choice" name="Connections">
<a:documentation>
The list of cell connections
</a:documentation>
<rng:ref name="metadata"/>
<rng:oneOrMore>
<rng:element name="connection">
<rng:ref name="Connection"/>
</rng:element>
</rng:oneOrMore>
</rng:define>
<rng:define combine="choice" name="CellInstance">
<a:documentation>
An instance of a cell at a the specified location
</a:documentation>
<rng:ref name="metadata"/>
<rng:element name="location">
<rng:ref name="Point"/>
</rng:element>
<rng:attribute name="id">
<rng:data type="nonNegativeInteger">
<a:documentation>
A unique non negative integer id for the cell instance
</a:documentation>
</rng:data>
</rng:attribute>
<rng:optional>
<rng:attribute name="node_id">
<rng:data type="nonNegativeInteger">
<a:documentation>
An optional specification of the node id on which this cell should run. This is a preliminary
attempt to allow exchange of neuronal networks partitioned for optimal running in
distributed computing environments.
</a:documentation>
</rng:data>
</rng:attribute>
</rng:optional>
</rng:define>
<rng:define combine="choice" name="Connection">
<a:documentation>
A network connection
</a:documentation>
<rng:ref name="metadata"/>
<rng:element name="pre">
<rng:ref name="SynapticLocation"/>
</rng:element>
<rng:element name="post">
<rng:ref name="SynapticLocation"/>
</rng:element>
<rng:zeroOrMore>
<rng:element name="properties">
<rng:ref name="SynapseInternalProperties"/>
</rng:element>
</rng:zeroOrMore>
<rng:attribute name="id">
<rng:data type="integer"/>
</rng:attribute>
</rng:define>
<rng:define combine="choice" name="SynapticLocation">
<rng:attribute name="cell_id">
<rng:data type="integer">
<a:documentation>
The ID of the cell. Must be listed in populations, so that too must deal with instances
</a:documentation>
</rng:data>
</rng:attribute>
<rng:optional>
<a:documentation>
default value is : 0</a:documentation>
<rng:attribute name="segment_id">
<rng:data type="integer">
<a:documentation>
The segment where the synapse is located.
</a:documentation>
</rng:data>
</rng:attribute>
</rng:optional>
<rng:optional>
<a:documentation>
default value is : 0.5</a:documentation>
<rng:attribute name="fraction_along">
<rng:ref name="ZeroToOne"/>
<a:documentation>
The fraction along the length of the specified segment where the synapse is located.
</a:documentation>
</rng:attribute>
</rng:optional>
</rng:define>
<rng:define combine="choice" name="PopulationLocation">
<a:documentation>
Description of the 3D positioning of cells in the population, in place of giving explicit locations for each cell
</a:documentation>
<rng:ref name="metadata"/>
<rng:choice>
<rng:element name="random_arrangement">
<rng:ref name="RandomArrangement"/>
</rng:element>
<rng:element name="grid_arrangement">
<rng:ref name="GridArrangement"/>
</rng:element>
<!-- More should be included... -->
</rng:choice>
<rng:attribute name="reference">
<rng:data type="string"/>
</rng:attribute>
</rng:define>
<rng:define combine="choice" name="RandomArrangement">
<a:documentation>
A random arrangement of cells in a 3D location. Note other 3D regions besides spheres and rectangles can be added if required.
</a:documentation>
<rng:ref name="metadata"/>
<rng:element name="population_size">
<rng:data type="nonNegativeInteger">
<a:documentation>
Number of cells to place randomly in the specified 3D location
</a:documentation>
</rng:data>
</rng:element>
<rng:choice>
<rng:element name="spherical_location">
<rng:ref name="Sphere"/>
</rng:element>
<rng:element name="rectangular_location">
<rng:ref name="RectangularBox"/>
</rng:element>
</rng:choice>
</rng:define>
<rng:define combine="choice" name="GridArrangement">
<a:documentation>
A regular placement of the cells in a number of dimensions
</a:documentation>
<rng:ref name="metadata"/>
<rng:choice>
<rng:ref name="SpatialLayout"/>
<rng:element name="non_spatial_grid">
<rng:ref name="NonSpatialGrid"/>
<a:documentation>
Specifying this means the precise spatial location of the cells is irrelvant
</a:documentation>
</rng:element>
</rng:choice>
</rng:define>
<rng:define combine="choice" name="SpatialLayout">
<a:documentation>
Layout of the cells according to x,y,z spatial coordinates
</a:documentation>
<rng:element name="rectangular_location">
<rng:ref name="RectangularBox"/>
<a:documentation>
3D box in which the cells are regularly packed. Note if one or two of dimensions of the box is zero it can be a 2D or 1D grid (respectively).
</a:documentation>
</rng:element>
<rng:element name="spacing">
<a:documentation>
Separation of the cells in each dimension
</a:documentation>
<rng:attribute name="x">
<rng:data type="double"/>
</rng:attribute>
<rng:attribute name="y">
<rng:data type="double"/>
</rng:attribute>
<rng:attribute name="z">
<rng:data type="double"/>
</rng:attribute>
</rng:element>
</rng:define>
<rng:define combine="choice" name="PotentialSynapticLocation">
<a:documentation>
Subset of sections on cell where synaptic connection of a particular type is allowed
</a:documentation>
<rng:ref name="metadata"/>
<rng:element name="synapse_type">
<rng:data type="string">
<a:documentation>
Which of the synaptic mechanisms can be present
</a:documentation>
</rng:data>
</rng:element>
<rng:optional>
<rng:element name="synapse_direction">
<rng:ref name="SynapseDirection"/>
<a:documentation>
Whether this synapse location allows a presynaptic connection, a postsynaptic
connection or either
</a:documentation>
</rng:element>
</rng:optional>
<rng:oneOrMore>
<rng:element name="group">
<rng:data type="string">
<a:documentation>
List of groups of sections allowing the synapse
</a:documentation>
</rng:data>
</rng:element>
</rng:oneOrMore>
</rng:define>
<rng:define combine="choice" name="SynapseDirection">
<a:documentation>
Indicated whether a potential synapse location allows a presynaptic connection
of the specified type, a postsynaptic connection or either.
</a:documentation>
<rng:choice>
<rng:value>pre</rng:value>
<rng:value>post</rng:value>
<rng:value>preAndOrPost</rng:value>
</rng:choice>
</rng:define>
<rng:define combine="choice" name="CellIdInNetwork">
<a:documentation>
Id of individual cell in a network
</a:documentation>
<rng:data type="nonNegativeInteger">
</rng:data>
</rng:define>
<rng:define combine="choice" name="BiophysicsNetworkElements">
<a:documentation>
The elements in biophysics needed to specify a network connection
</a:documentation>
<rng:zeroOrMore>
<rng:element name="potentialSynapticLocation">
<rng:ref name="PotentialSynapticLocation"/>
</rng:element>
</rng:zeroOrMore>
</rng:define>
</rng:grammar>
|