|
Converting the file: ChannelML_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/channelml/schema" xmlns:meta="http://morphml.org/metadata/schema" xmlns:bio="http://morphml.org/biophysics/schema" ns="http://morphml.org/channelml/schema" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<!--
This file specifies the form of ChannelML v1.6 compliant files
This file has been developed as part of the neuroConstruct and NeuroML initiatives
Authors: Padraig Gleeson, Michael Hines
-->
<rng:include href="../Level1/Metadata_v1.6.rng" ns="http://morphml.org/metadata/schema"/>
<rng:include href="Biophysics_v1.6.rng" ns="http://morphml.org/biophysics/schema"/>
<a:documentation>
Definition of the elements needed for specifying electrophysiological
cellular mechanisms. Voltage/concentration dependent channels can be
specified, but also activity dependent ion concentrations (e.g. decaying calcium pools)
and (eventually) synaptic mechanisms.
The mechanisms which can be specified by this schema can be mapped on into the scripting
languages of a number of common simulation platforms, e.g. NEURON, GENESIS. This mapping
can be done a number of XML based ways, but XSL mappings are included with the
NeuroMLValidator code.
The elements outlined below are linked together with with those in MorphML.xsd
and Biophysics.xsd in the NeuroML.xsd file to make Level 2 compliant NeuroML files
</a:documentation>
<rng:start combine="choice">
<rng:ref name="channelml"/>
</rng:start>
<rng:define combine="choice" name="channelml">
<rng:element name="channelml">
<rng:ref name="ChannelML"/>
<a:documentation>
The root element of any ChannelML file. Note this element will only be present in a standalone ChannelML file.
For files covering many levels, neuroml will be the root element
</a:documentation>
</rng:element>
</rng:define>
<rng:define combine="choice" name="ChannelML">
<a:documentation>
Root element containing the ions used in the mechanism, the unit system of the
file (as attribute), and information on channels and/or ion concentration dynamics. Normally only the ion element and
one of channel_type, synapse_type or ion_concentration should be present.
</a:documentation>
<rng:ref name="metadata"/>
<rng:zeroOrMore>
<rng:element name="ion">
<rng:ref name="Ion"/>
<a:documentation>
One or more ions which play some role in the mechanism, e.g. transmitted, affect the rate, etc.
</a:documentation>
</rng:element>
</rng:zeroOrMore>
<rng:zeroOrMore>
<rng:element name="channel_type">
<rng:ref name="ChannelType"/>
<a:documentation>
Specification of a voltage or ligand gated membrane conductance mechanism
</a:documentation>
</rng:element>
</rng:zeroOrMore>
<rng:zeroOrMore>
<rng:element name="synapse_type">
<rng:ref name="SynapseType"/>
<a:documentation>
Specification of a synaptic conductance, triggered by a presynaptic event
</a:documentation>
</rng:element>
</rng:zeroOrMore>
<rng:zeroOrMore>
<rng:element name="ion_concentration">
<rng:ref name="IonConcentration"/>
<a:documentation>
Specification of how an ion concentration alters with time, e.g. calcium dynamics. This may influence other
channels (e.g. Ca dependent K channels), and other mechanisms may have a contribution to the concentration of the ion specified here.
</a:documentation>
</rng:element>
</rng:zeroOrMore>
<rng:attribute name="units">
<rng:ref name="Units"/>
<a:documentation>
Unit system of all quantities. Only SI or Physiological units are allowed!
</a:documentation>
</rng:attribute>
</rng:define>
<rng:define combine="choice" name="ChannelType">
<a:documentation>
Definition of a voltage/concentration dependent cell membrane conductance
</a:documentation>
<rng:optional>
<rng:element name="status">
<rng:ref name="Status"/>
<a:documentation>
Status of the channel specification: stable, in progress, etc.
</a:documentation>
</rng:element>
</rng:optional>
<rng:ref name="metadata"/>
<a:documentation>
Some metadata (notes, etc.) to describe the conductance.
</a:documentation>
<rng:ref name="referencedata"/>
<rng:element name="current_voltage_relation">
<rng:ref name="CurrentVoltageRelation"/>
<a:documentation>
The specification of how the current flow etc. into the cell relates to the membrane potential difference (e.g. Ohmic relationship)
</a:documentation>
</rng:element>
<rng:zeroOrMore>
<rng:element name="hh_gate">
<rng:ref name="HHGate"/>
<a:documentation>
Channel specification based on the Hodgkin Huxley formalism
</a:documentation>
</rng:element>
</rng:zeroOrMore>
<rng:zeroOrMore>
<rng:element name="ks_gate">
<rng:ref name="KSGate"/>
<a:documentation>
Channel specification based on a kinetic scheme formalism
</a:documentation>
</rng:element>
</rng:zeroOrMore>
<rng:optional>
<rng:element name="impl_prefs">
<rng:ref name="ImplementationPrefs"/>
<a:documentation>
Optional recommended values when creating implementation of the channel mechanism
</a:documentation>
</rng:element>
</rng:optional>
<rng:attribute name="name">
<rng:data type="string"/>
</rng:attribute>
<a:documentation>
default value is : yes</a:documentation>
<rng:attribute name="density">
<rng:ref name="YesNo"/>
<a:documentation>
Is this a specification of conductance per unit area?
</a:documentation>
</rng:attribute>
</rng:define>
<rng:define combine="choice" name="SynapseType">
<a:documentation>
Definition of a synaptic mechanism
</a:documentation>
<rng:optional>
<rng:element name="status">
<rng:ref name="Status"/>
<a:documentation>
Status of the synapse specification: stable, in progress, etc.
</a:documentation>
</rng:element>
</rng:optional>
<rng:ref name="metadata"/>
<a:documentation>
Some metadata (notes, etc.) to describe the synapse.
</a:documentation>
<rng:ref name="referencedata"/>
<rng:choice>
<a:documentation>
Either the basic DoubleExponentialSynapse, a blocking synapse or more complex PlasticSynapse
</a:documentation>
<rng:element name="doub_exp_syn">
<rng:ref name="DoubleExponentialSynapse"/>
<a:documentation>
Synaptic conductance with rise time and decay time
</a:documentation>
</rng:element>
<rng:element name="blocking_syn">
<rng:ref name="BlockingSynapse"/>
<a:documentation>
For example NMDA receptor synapses
</a:documentation>
</rng:element>
<!-- in progress... <xs:element name="plastic_syn" type="PlasticSynapse">
<xs:annotation>
<xs:documentation>An extension incorporating synaptic plasticity mechanisms</xs:documentation>
</xs:annotation>
</xs:element> -->
</rng:choice>
<rng:attribute name="name">
<rng:data type="string"/>
</rng:attribute>
<!-- Not needed... <xs:attribute name="density" type="meta:YesNo" />-->
</rng:define>
<rng:define combine="choice" name="DoubleExponentialSynapse">
<a:documentation>
A basic synaptic mechanism with a double exponential conductance time course. This mechanism maps
easily on to mechanisms in both NEURON (Exp2Syn) and GENESIS (synchan)
</a:documentation>
<rng:ref name="metadata"/>
<rng:attribute name="max_conductance">
<rng:ref name="ConductanceValue"/>
<a:documentation>
The maximum conductance of the channel
</a:documentation>
</rng:attribute>
<rng:attribute name="rise_time">
<rng:ref name="TimeConstantValue"/>
<a:documentation>
The characteristic rise time of the conductance waveform
</a:documentation>
</rng:attribute>
<rng:attribute name="decay_time">
<rng:ref name="TimeConstantValue"/>
<a:documentation>
The characteristic decay time of the conductance waveform
</a:documentation>
</rng:attribute>
<rng:attribute name="reversal_potential">
<rng:ref name="VoltageValue"/>
<a:documentation>
<meta:units xmlns:xs="http://www.w3.org/2001/XMLSchema">V</meta:units>
The reversal potential of the synapse, which (along with the membrane potential) will determine the current passing through the synapse when the conductance is non zero
</a:documentation>
</rng:attribute>
</rng:define>
<rng:define combine="choice" name="BlockingSynapse">
<a:documentation>
A synaptic mechanism whose conductance can be blocked by the presence of a specific species (ion/molecule). Based on the
mechanism for blocking of an NMDA receptor by Mg as outlined in Gabbiani et al, 1994, Maex DeSchutter 1998
</a:documentation>
<rng:ref name="DoubleExponentialSynapse"/>
<rng:element name="block">
<rng:ref name="Block"/>
</rng:element>
</rng:define>
<rng:define combine="choice" name="Block">
<a:documentation>
Specification for the influence of a blocking species on the conductance of a BlockingSynapse. Based on the
mechanism for blocking of an NMDA receptor by Mg as outlined in Gabbiani et al, 1994, Maex DeSchutter 1998
</a:documentation>
<rng:attribute name="species">
<rng:data type="string">
<a:documentation>
Name of species. For ions use lowercase, e.g. mg
</a:documentation>
</rng:data>
</rng:attribute>
<rng:attribute name="conc">
<rng:ref name="ConcentrationValue"/>
<a:documentation>
Concentration of species. Multiplicative factor for total conductance: 1/(1 + eta * [conc] * exp(-1* gamma * V))
</a:documentation>
</rng:attribute>
<rng:attribute name="eta">
<rng:data type="double">
<a:documentation>
<meta:units xmlns:xs="http://www.w3.org/2001/XMLSchema">mM^-1</meta:units>
Used in multiplicative factor for total conductance: 1/(1 + eta * [conc] * exp(-1* gamma * V))
</a:documentation>
</rng:data>
</rng:attribute>
<rng:attribute name="gamma">
<rng:data type="double">
<a:documentation>
<meta:units xmlns:xs="http://www.w3.org/2001/XMLSchema">V^-1</meta:units>
Used in multiplicative factor for total conductance: 1/(1 + eta * [conc] * exp(-1* gamma * V))
</a:documentation>
</rng:data>
</rng:attribute>
</rng:define>
<!-- In progress...
<xs:complexType name="PlasticSynapse">
<xs:annotation>
<xs:documentation>A more complex synaptic mechanism featuring up to 4 exponential components, facilitation and recovery, and
desensitisation. Currently there is only an implementation of this in a NEURON mod file</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="DoubleExponentialSynapse">
<xs:sequence>
<xs:element name="plasticity" type="Plasticity" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="decay_time_2" type="TimeConstant" use="optional"/>
<xs:attribute name="decay_time_3" type="TimeConstant" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="Plasticity">
<xs:annotation>
<xs:documentation>Measure of the plasticity of the synaptic mechanism</xs:documentation>
</xs:annotation>
<xs:attribute name="init_release_prob" type="xs:double" use="required"/>
<xs:attribute name="tau_rec" type="TimeConstant" use="required"/>
<xs:attribute name="tau_fac" type="TimeConstant" use="required"/>
</xs:complexType> -->
<rng:define combine="choice" name="CurrentVoltageRelation">
<a:documentation>
How the current through the channel depends on the conductance of the channel.
Only ohmic and integrate_and_fire supported at the moment
</a:documentation>
<rng:choice>
<rng:element name="ohmic">
<rng:ref name="Ohmic"/>
<a:documentation>
Signifies an ohmic relation; the current is proportional to the potential difference across the channel
</a:documentation>
</rng:element>
<rng:element name="integrate_and_fire">
<rng:ref name="IntegrateAndFire"/>
<a:documentation>
Signifies a current which will cause the cell to behave like an integrate and fire neuron
</a:documentation>
</rng:element>
</rng:choice>
<rng:attribute name="name">
<rng:data type="string"/>
</rng:attribute>
</rng:define>
<rng:define combine="choice" name="IntegrateAndFire">
<a:documentation>
Signifies a current which will cause the cell to behave like an integrate and fire neuron
</a:documentation>
<rng:attribute name="threshold">
<rng:ref name="VoltageValue"/>
<a:documentation>Voltage at which the mechanism causes the segment/cell to fire, i.e. membrane potential will be reset to v_reset</a:documentation>
</rng:attribute>
<rng:attribute name="t_refrac">
<rng:ref name="TimeValue"/>
<a:documentation>Time after a spike during which the segment will be clamped to v_reset (clamping current given by i = g_refrac*(v - v_reset))</a:documentation>
</rng:attribute>
<rng:attribute name="v_reset">
<rng:ref name="VoltageValue"/>
<a:documentation>Membrane potential is reset to this after spiking</a:documentation>
</rng:attribute>
<rng:attribute name="g_refrac">
<rng:ref name="ConductanceValue"/>
<a:documentation>Conductance during the period t_refrac after a spike, when the current due to this mechanism is given by i = g_refrac*(v - v_reset), therefore a high value for g_refrac, e.g. 100 microsiemens, will effectively clamp the cell at v_reset</a:documentation>
</rng:attribute>
</rng:define>
<rng:define combine="choice" name="Ohmic">
<a:documentation>
Signifies an ohmic relation; the current is proportional to the potential difference across the channel
</a:documentation>
<rng:element name="conductance">
<a:documentation>
Description of the conductance including maximum conductance density and possible (voltage dependent) gating mechanisms
</a:documentation>
<rng:ref name="metadata"/>
<rng:optional>
<rng:element name="rate_adjustments">
<rng:ref name="RateAdjustments"/>
<a:documentation>Adjustments, e.g. temperature dependence, to apply to the gating mechanisms</a:documentation>
</rng:element>
</rng:optional>
<rng:zeroOrMore>
<rng:element name="gate">
<rng:ref name="Gate"/>
<a:documentation>
Voltage/concentration dependent gate
</a:documentation>
</rng:element>
</rng:zeroOrMore>
<rng:attribute name="default_gmax">
<rng:ref name="ConductanceDensityValue"/>
<a:documentation>Maximum conductance density of channel</a:documentation>
</rng:attribute>
</rng:element>
<rng:optional>
<rng:attribute name="ion">
<rng:data type="string">
<a:documentation>
The ion which will flow due to the conductance. Note this should be already declared in an Ion element at the beginning of the file.
</a:documentation>
</rng:data>
</rng:attribute>
</rng:optional>
</rng:define>
<rng:define combine="choice" name="ImplementationPrefs">
<a:documentation>
These items ideally shouldn't be in a specification which deals with
a description of the physiology of the channel. However, some channels won't be properly
implemented in the scripting mechanism of given simulator using the standard mappings
unless these factors are taken into account, e.g. if the rate equations change rapidly,
but the default table size isn't large enough.
</a:documentation>
<rng:optional>
<rng:element name="comment">
<rng:data type="string">
<a:documentation>
Comment element to give explination for the implementation preferences. Having a dedicated element as opposed to a <-- comment --> allows the comment to be repeated in the script file impl.
</a:documentation>
</rng:data>
</rng:element>
</rng:optional>
<rng:optional>
<rng:element name="table_settings">
<a:documentation>
Preferences for the table of values for the rate equations, e.g. used in the TABLE statement in NMODL, or in tabchannel GENESIS objects
</a:documentation>
<a:documentation>
default value is : 70</a:documentation>
<rng:attribute name="max_v">
<rng:data type="double">
<a:documentation>
The maximum potential from which to calculate the tables of rate values
</a:documentation>
</rng:data>
</rng:attribute>
<a:documentation>
default value is : -100</a:documentation>
<rng:attribute name="min_v">
<rng:data type="double">
<a:documentation>
The minimum potential from which to calculate the tables of rate values
</a:documentation>
</rng:data>
</rng:attribute>
<a:documentation>
default value is : 200</a:documentation>
<rng:attribute name="table_divisions">
<rng:data type="positiveInteger">
<a:documentation>
The number of divisions in the table
</a:documentation>
</rng:data>
</rng:attribute>
</rng:element>
</rng:optional>
</rng:define>
<rng:define combine="choice" name="RateAdjustments">
<a:documentation>
Adjustments necessary to all the rate equations, e.g
temperature dependencies, voltage offsets introduced when moving
between species, etc. See the XSL mappings for more information on the
meaning of these adjustments.
</a:documentation>
<rng:zeroOrMore>
<rng:element name="q10_settings">
<a:documentation>
Q10 scaling affects the tau in the rate equations. It allows rate equations determined at one temperature to be used at a different temperature.
If tauExp is the experimentally measured tau, the rate at temperature T is given by tau(T) = tauExp / q10_factor ^ ((T - experimental_temp)/10). NOTE: if fixed_q10 is specified
the expression will be tau(T) = tauExp / fixed_q10, and the experimental_temp can be used to check that a simulation is running
at the desired temperature.
</a:documentation>
<rng:optional>
<rng:attribute name="gate">
<rng:data type="string">
<a:documentation>
The gate to which the Q10 adjustment should be applied. If this attribute is not present, assume the adjustment applies at all gates.
</a:documentation>
</rng:data>
</rng:attribute>
</rng:optional>
<rng:optional>
<rng:attribute name="fixed_q10">
<rng:data type="double">
<a:documentation>
Q10 factor if the cell is to be run at a different temp than that at which
the alpha and beta were determined. Only one of fixed_q10 or q10_factor should be specified!
</a:documentation>
</rng:data>
</rng:attribute>
</rng:optional>
<rng:optional>
<rng:attribute name="q10_factor">
<rng:data type="double">
<a:documentation>
Q10 factor if the cell is to be run at a different temp than that at which
the alpha and beta were determined. Only one of fixed_q10 or q10_factor should be specified!
</a:documentation>
</rng:data>
</rng:attribute>
</rng:optional>
<rng:attribute name="experimental_temp">
<rng:ref name="TemperatureValue"/>
<a:documentation>
The experimental temperature at which alpha and beta rate
equations were determined were measured
</a:documentation>
</rng:attribute>
</rng:element>
</rng:zeroOrMore>
<rng:optional>
<rng:element name="offset">
<rng:attribute name="value">
<rng:ref name="VoltageValue"/>
<a:documentation>
Offset introduced to alter voltage dependence of
rate equations, see NEURON/GENESIS mappings for details
</a:documentation>
</rng:attribute>
</rng:element>
</rng:optional>
</rng:define>
<rng:define combine="choice" name="Ion">
<a:documentation>
Definition of an ion which is involved in this channel mechanism
</a:documentation>
<rng:ref name="metadata"/>
<a:documentation>
Some metadata (notes, etc.) to describe the conductance.
</a:documentation>
<rng:attribute name="name">
<rng:data type="string">
<a:documentation>
Simple name for the ion. Due to the conventions used in NEURON, it is usually best to use
the lower case form of the chemical symbol, e.g. na, ca, k
</a:documentation>
</rng:data>
</rng:attribute>
<rng:optional>
<rng:attribute name="default_erev">
<rng:ref name="VoltageValue"/>
<a:documentation>
Most implementations of these channel mechanisms (e.g. a mod file) will need a value for the
reversal potential for the ion which flows through the channel. However, this is a property of the cell, as opposed to the channel.
For convenience though, a typical value can be used here, so a pretty self contained script can be produced, but when used in a real cell the
actual value for erev must be calculated
</a:documentation>
</rng:attribute>
</rng:optional>
<rng:attribute name="charge">
<rng:data type="positiveInteger">
<a:documentation>
Electrical charge of the ion in question
</a:documentation>
</rng:data>
</rng:attribute>
<rng:optional>
<a:documentation>
default value is : PermeatedSubstance</a:documentation>
<rng:attribute name="role">
<rng:ref name="IonRole"/>
<a:documentation>
What role the ion plays in the dynamics of the channel/cell mechanism
</a:documentation>
</rng:attribute>
</rng:optional>
</rng:define>
<rng:define combine="choice" name="IonRole">
<a:documentation>
Role ion plays in cellular mechanism, e.g. ion passes through the channel (Na, K), or the
concentration of the ion is a factor in the rate equations of gating, or the mechanism alters
the concentration of this ion. This greatly simplifies the number of roles an ion can play
in the channel, but these three options cover the majority of cases currently being modelled. Note: the term subtance is used as
this formalism can also be used for other chemicals which may be transmitted, modulate channels, etc.
</a:documentation>
<rng:choice>
<rng:value>PermeatedSubstance</rng:value>
<a:documentation>
Ion passes through the channel, e.g. Na ions permeate through an "Na Channel"
</a:documentation>
<rng:value>ModulatingSubstance</rng:value>
<a:documentation>
Concentration of ion/substance modulates dynamics/rate equations of channel, e.g. Ca dependent K channel, K permeates, but the rate is dependent on concentration of internal Ca
</a:documentation>
<rng:value>SignallingSubstance</rng:value>
<a:documentation>
Ion/substance is involved in internal signalling in the cell and the mechanism can alter its concentration, e.g. exponentially decaying Ca pool
</a:documentation>
</rng:choice>
</rng:define>
<rng:define combine="choice" name="Gate">
<a:documentation>
Definition of a single voltage/concentration dependent gate
</a:documentation>
<rng:element name="state">
<a:documentation>
Internal state of the gate, specifying a name, and possibly a fractional contribution.
HHGate or KSGate elements will specify the rate equations, etc. for the gate, referencing this state name.
</a:documentation>
<rng:attribute name="name">
<rng:data type="string"/>
</rng:attribute>
<a:documentation>
default value is : 1</a:documentation>
<rng:attribute name="fraction">
<rng:ref name="ZeroToOne"/>
</rng:attribute>
</rng:element>
<rng:attribute name="power">
<rng:data type="nonNegativeInteger">
<a:documentation>
The power to which the gate is raised in the expression for the total conductance
</a:documentation>
</rng:data>
</rng:attribute>
</rng:define>
<rng:define combine="choice" name="HHGate">
<a:documentation>
Gate with Hodgkin Huxley like state transitions
</a:documentation>
<rng:element name="transition">
<rng:ref name="Transition"/>
</rng:element>
<rng:attribute name="state">
<rng:data type="string"/>
</rng:attribute>
</rng:define>
<rng:define combine="choice" name="KSGate">
<a:documentation>
Gate with kinetic scheme transitions
</a:documentation>
<rng:oneOrMore>
<rng:element name="state">
<rng:ref name="KSState"/>
</rng:element>
</rng:oneOrMore>
<rng:oneOrMore>
<rng:element name="transition">
<rng:ref name="Transition"/>
</rng:element>
</rng:oneOrMore>
</rng:define>
<rng:define combine="choice" name="KSState">
<a:documentation>
Single kinetic scheme state. Transitions will happen between these states
</a:documentation>
<rng:attribute name="name">
<rng:data type="string"/>
</rng:attribute>
</rng:define>
<rng:define combine="choice" name="Transition">
<a:documentation>
What causes the gate to open and close. A dependence on potential difference,
or a voltage and (ion) concentration dependence
</a:documentation>
<rng:choice>
<rng:element name="voltage_gate">
<rng:ref name="VoltageGate"/>
</rng:element>
<rng:element name="voltage_conc_gate">
<rng:ref name="VoltageConcGate"/>
</rng:element>
</rng:choice>
<rng:optional>
<rng:attribute name="src">
<rng:data type="string">
<a:documentation>
Source state of the transition if used in kinetic scheme. Must be used with attribute target
</a:documentation>
</rng:data>
</rng:attribute>
</rng:optional>
<rng:optional>
<rng:attribute name="target">
<rng:data type="string">
<a:documentation>
Target state of the transition if used in kinetic scheme. Must be used with attribute src
</a:documentation>
</rng:data>
</rng:attribute>
</rng:optional>
</rng:define>
<rng:define combine="choice" name="VoltageGate">
<a:documentation>
Definition of a voltage gate. Normally this will be specified as rate equations for
alpha and beta, or for tau and inf
</a:documentation>
<!-- Usually the alpha & beta form are specified/known, but tau and inf could be used instead-->
<rng:optional>
<rng:ref name="AlphaBetaForm"/>
</rng:optional>
<rng:optional>
<rng:ref name="ExtraRateExpressions"/>
</rng:optional>
<!-- Note: one of tau or inf could be specified even if alpha and beta are given-->
<rng:optional>
<rng:element name="tau">
<rng:ref name="RateConstantEqnChoice"/>
</rng:element>
</rng:optional>
<rng:optional>
<rng:element name="inf">
<rng:ref name="RateConstantEqnChoice"/>
</rng:element>
</rng:optional>
</rng:define>
<rng:define combine="choice" name="VoltageConcGate">
<a:documentation>
Definition of a mechanics of a gate which depends on voltage and concentration (e.g. Calcium conc dependent K channel).
Normally this will be specified as rate equations for alpha and beta (in terms of v and conc), or for tau and inf
</a:documentation>
<rng:element name="conc_dependence">
<rng:ref name="ConcDependence"/>
</rng:element>
<!-- Usually the alpha & beta form are specified/known, but tau and inf could be used instead-->
<rng:optional>
<rng:ref name="AlphaBetaFormVoltConcDep"/>
</rng:optional>
<rng:optional>
<rng:ref name="ExtraRateExpressions"/>
</rng:optional>
<!-- Note: one of tau or inf could be specified even if alpha and beta are given-->
<rng:optional>
<rng:element name="tau">
<rng:ref name="RateConstVoltConcDep"/>
</rng:element>
</rng:optional>
<rng:optional>
<rng:element name="inf">
<rng:ref name="RateConstVoltConcDep"/>
</rng:element>
</rng:optional>
</rng:define>
<rng:define combine="choice" name="ConcDependence">
<a:documentation>
Specification of the concentration dependence of a gate
</a:documentation>
<rng:attribute name="name">
<rng:data type="string">
<a:documentation>
Name of substance, just for reference
</a:documentation>
</rng:data>
</rng:attribute>
<rng:optional>
<rng:attribute name="ion">
<rng:data type="string">
<a:documentation>
If the substance is an ion, here is a reference the entry in the ion list at the start of the file
</a:documentation>
</rng:data>
</rng:attribute>
</rng:optional>
<rng:attribute name="variable_name">
<rng:data type="string">
<a:documentation>
How the value of conductance will be expressed in the rate equations
</a:documentation>
</rng:data>
</rng:attribute>
<rng:attribute name="min_conc">
<rng:ref name="ConcentrationValue"/>
<a:documentation>
Minimum expected concentration. Quite likely to be needed by simulators (e.g. for generating tables)
</a:documentation>
</rng:attribute>
<rng:attribute name="max_conc">
<rng:ref name="ConcentrationValue"/>
<a:documentation>
Maximum expected concentration. Quite likely to be needed by simulators (e.g. for generating tables)
</a:documentation>
</rng:attribute>
</rng:define>
<rng:define combine="choice" name="AlphaBetaForm">
<a:documentation>
alpha, beta form of rate equations. These will always be together if present
</a:documentation>
<rng:element name="alpha">
<rng:ref name="RateConstantEqnChoice"/>
</rng:element>
<rng:element name="beta">
<rng:ref name="RateConstantEqnChoice"/>
</rng:element>
</rng:define>
<rng:define combine="choice" name="ExtraRateExpressions">
<a:documentation>
Two more rate variables, which may be needed for calculating a non standard tau, inf, e.g. Kdr in the Purkinje cell model. tau and inf will be calculated as normal unless otherwise specified.
</a:documentation>
<rng:element name="gamma">
<rng:ref name="RateConstantEqnChoice"/>
</rng:element>
<rng:element name="zeta">
<rng:ref name="RateConstantEqnChoice"/>
</rng:element>
</rng:define>
<rng:define combine="choice" name="AlphaBetaFormVoltConcDep">
<a:documentation>
alpha, beta form of rate equations of voltage and conc dependent channels. These will always be together if present
</a:documentation>
<rng:element name="alpha">
<rng:ref name="RateConstVoltConcDep"/>
</rng:element>
<rng:element name="beta">
<rng:ref name="RateConstVoltConcDep"/>
</rng:element>
</rng:define>
<rng:define combine="choice" name="RateConstantEqnChoice">
<a:documentation>
Choice of the various rate constant expressions allowed
</a:documentation>
<rng:ref name="metadata"/>
<rng:choice>
<rng:element name="parameterised_hh">
<rng:ref name="AkdEquation"/>
</rng:element>
<rng:element name="generic_equation_hh">
<rng:ref name="GenericEquation"/>
</rng:element>
</rng:choice>
</rng:define>
<rng:define combine="choice" name="RateConstVoltConcDep">
<a:documentation>
Rate constant expressions allowed for voltage and conc dependent channels. Note, at this stage no
Akd like expression for a generic voltage/conc dep experssion. Time will tell if there's an expression common enough
accross different models to be expressed in such a way
</a:documentation>
<rng:choice>
<rng:element name="generic_equation_hh">
<rng:ref name="GenericEquation"/>
</rng:element>
</rng:choice>
</rng:define>
<rng:define combine="choice" name="RateConstantEqn">
<a:documentation>
Definition of a rate constant equation.
</a:documentation>
<rng:zeroOrMore>
<rng:element name="parameter">
<rng:ref name="Parameter"/>
<a:documentation>
A parameter which is used in the equation
</a:documentation>
</rng:element>
</rng:zeroOrMore>
<rng:attribute name="type">
<rng:data type="string"/>
</rng:attribute>
<rng:attribute name="expr">
<rng:data type="string"/>
</rng:attribute>
</rng:define>
<rng:define combine="choice" name="AkdEquation">
<a:documentation>
Definition of a type of rate constant equation which takes parameters A, k, d
and maps to either exponential, sigmoidal or linoidal.
</a:documentation>
<rng:ref name="RateConstantEqn"/>
<rng:element name="parameter">
<rng:ref name="Parameter"/>
</rng:element>
<rng:element name="parameter">
<rng:ref name="Parameter"/>
</rng:element>
<rng:element name="parameter">
<rng:ref name="Parameter"/>
</rng:element>
<rng:attribute name="type">
<rng:ref name="CoreEquationType"/>
</rng:attribute>
<rng:attribute name="expr">
<rng:data type="string"/>
</rng:attribute>
</rng:define>
<rng:define combine="choice" name="GenericEquation">
<a:documentation>
Definition of a type of rate constant equation
</a:documentation>
<rng:attribute name="expr">
<rng:data type="string">
<a:documentation>
Note: only variable allowed in expression is v (or for an expression for tau or inf,
alpha and beta can be used too). Also, liberal use of brackets, e.g. 5.0*(exp (-50*(v +46))) instead
of 5.0* exp (-50*(v +46)) is advised, due to GENESIS's handling of exp, abs, etc.
</a:documentation>
</rng:data>
</rng:attribute>
</rng:define>
<rng:define combine="choice" name="IonConcentration">
<a:documentation>
Specification of how an ion concentration alters with time, e.g. calcium dynamics. This may influence other
channels (e.g. Ca dependent K channels), and other mechanisms may have a contribution to the concentration of the ion specified here.
</a:documentation>
<rng:optional>
<rng:element name="status">
<rng:ref name="Status"/>
<a:documentation>
Status of the ion conc mech specification: stable, in progress, etc.
</a:documentation>
</rng:element>
</rng:optional>
<rng:ref name="metadata"/>
<a:documentation>
Some metadata to describe the ion concentration
</a:documentation>
<rng:ref name="referencedata"/> <!-- ppppp one recent change...-->
<rng:element name="ion_species">
<rng:data type="string"/>
</rng:element>
<rng:choice>
<rng:element name="decaying_pool_model">
<rng:ref name="DecayingPoolModel"/>
<a:documentation>
At present there is only one choice of a model for this process,
more can be added later
</a:documentation>
</rng:element>
</rng:choice>
<rng:attribute name="name">
<rng:data type="string">
<a:documentation>
The name of the ion, as used in the Ion element.
</a:documentation>
</rng:data>
</rng:attribute>
</rng:define>
<rng:define combine="choice" name="DecayingPoolModel">
<a:documentation>
Element for parameters in a decaying pool model of ion concentration (e.g. calcium pool)
</a:documentation>
<rng:element name="resting_conc">
<rng:ref name="ConcentrationValue"/>
<a:documentation>
Resting concentration of ion
</a:documentation>
</rng:element>
<rng:element name="decay_constant">
<rng:ref name="TimeConstantValue"/>
<a:documentation>
Exponential decay time of pool
</a:documentation>
</rng:element>
<rng:element name="pool_volume_info">
<rng:ref name="PoolVolumeInfo"/>
</rng:element>
</rng:define>
<rng:define combine="choice" name="PoolVolumeInfo">
<a:documentation>
Information on the volume of the ion pool
</a:documentation>
<a:documentation>
At the moment only allowable format is the thichness of the shell inside
the membrane. This will have to be multiplied by the surface area of the relevant compartment
</a:documentation>
<rng:element name="shell_thickness">
<rng:ref name="LengthValue"/>
</rng:element>
</rng:define>
<rng:define combine="choice" name="Parameter">
<a:documentation>
Generic parameter used in rate equations
</a:documentation>
<rng:ref name="metadata"/>
<rng:attribute name="name">
<rng:data type="string"/>
</rng:attribute>
<rng:attribute name="value">
<rng:data type="double"/>
</rng:attribute>
</rng:define>
<!-- Definition of core equation types follows. -->
<rng:define combine="choice" name="CoreEquationType">
<a:documentation>
Enumeration of core equation types, linoidal, sigmoidal, exponential
</a:documentation>
<rng:choice>
<rng:value>exponential</rng:value>
<a:documentation>
Of the form: A * exp(k * (v-d))
</a:documentation>
<rng:value>sigmoid</rng:value>
<a:documentation>
Of the form: A / (1 + exp(k * (v-d)))
</a:documentation>
<rng:value>linoid</rng:value>
<a:documentation>
Of the form: A * (k * (v-d)) / (1 - exp(-(k * (v-d))))
</a:documentation>
</rng:choice>
</rng:define>
</rng:grammar>
|