<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://morphml.org/channelml/schema"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://morphml.org/channelml/schema"
xmlns:meta="http://morphml.org/metadata/schema"
xmlns:bio="http://morphml.org/biophysics/schema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<!--
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
-->
<xs:import namespace="http://morphml.org/metadata/schema"
schemaLocation="../Level1/Metadata_v1.6.xsd"/>
<xs:import namespace="http://morphml.org/biophysics/schema"
schemaLocation="Biophysics_v1.6.xsd"/>
<xs:annotation>
<xs: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</xs:documentation>
</xs:annotation>
<xs:element name="channelml" type="ChannelML">
<xs:annotation>
<xs: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</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="ChannelML">
<xs:annotation>
<xs: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.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:group ref="meta:metadata"/>
<xs:element name="ion" type="Ion" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>One or more ions which play some role in the mechanism, e.g. transmitted, affect the rate, etc.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="channel_type" type="ChannelType" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Specification of a voltage or ligand gated membrane conductance mechanism</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="synapse_type" type="SynapseType" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Specification of a synaptic conductance, triggered by a presynaptic event</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ion_concentration" type="IonConcentration" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs: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.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="units" type="meta:Units" use="required">
<xs:annotation>
<xs:documentation>Unit system of all quantities. Only SI or Physiological units are allowed!</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="ChannelType">
<xs:annotation>
<xs:documentation>Definition of a voltage/concentration dependent cell membrane conductance</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="status" type="meta:Status" minOccurs="0">
<xs:annotation>
<xs:documentation>Status of the channel specification: stable, in progress, etc.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:group ref="meta:metadata">
<xs:annotation>
<xs:documentation>Some metadata (notes, etc.) to describe the conductance. </xs:documentation>
</xs:annotation>
</xs:group>
<xs:group ref="meta:referencedata"/>
<xs:element name="current_voltage_relation" type="CurrentVoltageRelation">
<xs:annotation>
<xs:documentation>The specification of how the current flow etc. into the cell relates to the membrane potential difference (e.g. Ohmic relationship)</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="hh_gate" type="HHGate" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Channel specification based on the Hodgkin Huxley formalism</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ks_gate" type="KSGate" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Channel specification based on a kinetic scheme formalism</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="impl_prefs" type="ImplementationPrefs" minOccurs="0">
<xs:annotation>
<xs:documentation>Optional recommended values when creating implementation of the channel mechanism</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="density" type="meta:YesNo" default="yes">
<xs:annotation>
<xs:documentation>Is this a specification of conductance per unit area?</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="SynapseType">
<xs:annotation>
<xs:documentation>Definition of a synaptic mechanism</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="status" type="meta:Status" minOccurs="0">
<xs:annotation>
<xs:documentation>Status of the synapse specification: stable, in progress, etc.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:group ref="meta:metadata">
<xs:annotation>
<xs:documentation>Some metadata (notes, etc.) to describe the synapse. </xs:documentation>
</xs:annotation>
</xs:group>
<xs:group ref="meta:referencedata"/>
<xs:choice>
<xs:annotation>
<xs:documentation>Either the basic DoubleExponentialSynapse, a blocking synapse or more complex PlasticSynapse</xs:documentation>
</xs:annotation>
<xs:element name="doub_exp_syn" type="DoubleExponentialSynapse">
<xs:annotation>
<xs:documentation>Synaptic conductance with rise time and decay time</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="blocking_syn" type="BlockingSynapse">
<xs:annotation>
<xs:documentation>For example NMDA receptor synapses</xs:documentation>
</xs:annotation>
</xs: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> -->
</xs:choice>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
<!-- Not needed... <xs:attribute name="density" type="meta:YesNo" />-->
</xs:complexType>
<xs:complexType name="DoubleExponentialSynapse">
<xs:annotation>
<xs: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)</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:group ref="meta:metadata"/>
</xs:sequence>
<xs:attribute name="max_conductance" type="bio:ConductanceValue" use="required">
<xs:annotation>
<xs:documentation>The maximum conductance of the channel</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="rise_time" type="bio:TimeConstantValue" use="required">
<xs:annotation>
<xs:documentation>The characteristic rise time of the conductance waveform </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="decay_time" type="bio:TimeConstantValue" use="required">
<xs:annotation>
<xs:documentation>The characteristic decay time of the conductance waveform </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="reversal_potential" type="bio:VoltageValue" use="required">
<xs:annotation>
<xs:appinfo>
<meta:units>V</meta:units>
</xs:appinfo>
<xs:documentation>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 </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="BlockingSynapse">
<xs:annotation>
<xs: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</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="DoubleExponentialSynapse">
<xs:sequence>
<xs:element name="block" type="Block"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="Block">
<xs:annotation>
<xs: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</xs:documentation>
</xs:annotation>
<xs:attribute name="species" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Name of species. For ions use lowercase, e.g. mg</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="conc" type="bio:ConcentrationValue" use="required">
<xs:annotation>
<xs:documentation>Concentration of species. Multiplicative factor for total conductance: 1/(1 + eta * [conc] * exp(-1* gamma * V))</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="eta" type="xs:double" use="required">
<xs:annotation>
<xs:appinfo>
<meta:units>mM^-1</meta:units>
</xs:appinfo>
<xs:documentation>Used in multiplicative factor for total conductance: 1/(1 + eta * [conc] * exp(-1* gamma * V))</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="gamma" type="xs:double" use="required">
<xs:annotation>
<xs:appinfo>
<meta:units>V^-1</meta:units>
</xs:appinfo>
<xs:documentation>Used in multiplicative factor for total conductance: 1/(1 + eta * [conc] * exp(-1* gamma * V))</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!-- 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> -->
<xs:complexType name="CurrentVoltageRelation">
<xs:annotation>
<xs:documentation>How the current through the channel depends on the conductance of the channel.
Only ohmic and integrate_and_fire supported at the moment</xs:documentation>
</xs:annotation>
<xs:choice>
<xs:element name="ohmic" type="Ohmic">
<xs:annotation>
<xs:documentation>Signifies an ohmic relation; the current is proportional to the potential difference across the channel</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="integrate_and_fire" type="IntegrateAndFire">
<xs:annotation>
<xs:documentation>Signifies a current which will cause the cell to behave like an integrate and fire neuron</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:attribute name="name" type="xs:string"/>
</xs:complexType>
<xs:complexType name="IntegrateAndFire">
<xs:annotation>
<xs:documentation>Signifies a current which will cause the cell to behave like an integrate and fire neuron</xs:documentation>
</xs:annotation>
<xs:attribute name="threshold" type="bio:VoltageValue" use="required">
<xs:annotation><xs:documentation>Voltage at which the mechanism causes the segment/cell to fire, i.e. membrane potential will be reset to v_reset</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="t_refrac" type="bio:TimeValue" use="required">
<xs:annotation><xs: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))</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="v_reset" type="bio:VoltageValue" use="required">
<xs:annotation><xs:documentation>Membrane potential is reset to this after spiking</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="g_refrac" type="bio:ConductanceValue" use="required">
<xs:annotation><xs: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</xs:documentation></xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="Ohmic">
<xs:annotation>
<xs:documentation>Signifies an ohmic relation; the current is proportional to the potential difference across the channel</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="conductance">
<xs:annotation>
<xs:documentation>Description of the conductance including maximum conductance density and possible (voltage dependent) gating mechanisms</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:group ref="meta:metadata"/>
<xs:element name="rate_adjustments" type="RateAdjustments" minOccurs="0">
<xs:annotation><xs:documentation>Adjustments, e.g. temperature dependence, to apply to the gating mechanisms</xs:documentation></xs:annotation>
</xs:element>
<xs:element name="gate" type="Gate" minOccurs="0" maxOccurs = "unbounded">
<xs:annotation>
<xs:documentation>Voltage/concentration dependent gate</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="default_gmax" type="bio:ConductanceDensityValue" use="required">
<xs:annotation><xs:documentation>Maximum conductance density of channel</xs:documentation></xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="ion" type="xs:string" use="optional">
<xs:annotation>
<xs: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.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="ImplementationPrefs">
<xs:annotation>
<xs: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.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="comment" minOccurs="0" type="xs:string">
<xs:annotation>
<xs: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. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="table_settings" minOccurs="0">
<xs:annotation>
<xs: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</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="max_v" type="xs:double" default="70">
<xs:annotation>
<xs:documentation>The maximum potential from which to calculate the tables of rate values</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="min_v" type="xs:double" default="-100">
<xs:annotation>
<xs:documentation>The minimum potential from which to calculate the tables of rate values</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="table_divisions" type="xs:positiveInteger" default="200">
<xs:annotation>
<xs:documentation>The number of divisions in the table</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="RateAdjustments">
<xs:annotation>
<xs: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.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="q10_settings" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs: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. </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="gate" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>The gate to which the Q10 adjustment should be applied. If this attribute is not present, assume the adjustment applies at all gates.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="fixed_q10" type="xs:double" use="optional">
<xs:annotation>
<xs: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!</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="q10_factor" type="xs:double" use="optional">
<xs:annotation>
<xs: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!</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="experimental_temp" type="bio:TemperatureValue" use="required">
<xs:annotation>
<xs:documentation>The experimental temperature at which alpha and beta rate
equations were determined were measured</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="offset" minOccurs="0">
<xs:complexType>
<xs:attribute name="value" type="bio:VoltageValue">
<xs:annotation>
<xs:documentation>Offset introduced to alter voltage dependence of
rate equations, see NEURON/GENESIS mappings for details</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Ion">
<xs:annotation>
<xs:documentation>Definition of an ion which is involved in this channel mechanism</xs:documentation>
</xs:annotation>
<xs:group ref="meta:metadata">
<xs:annotation>
<xs:documentation>Some metadata (notes, etc.) to describe the conductance. </xs:documentation>
</xs:annotation>
</xs:group>
<xs:attribute name="name" type="xs:string" use="required">
<xs:annotation>
<xs: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</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="default_erev" type="bio:VoltageValue" use="optional">
<xs:annotation>
<xs: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</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="charge" type="xs:positiveInteger" use="required">
<xs:annotation>
<xs:documentation>Electrical charge of the ion in question</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="role" type="IonRole" use="optional" default="PermeatedSubstance">
<xs:annotation>
<xs:documentation>What role the ion plays in the dynamics of the channel/cell mechanism</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:simpleType name="IonRole">
<xs:annotation>
<xs: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.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="PermeatedSubstance">
<xs:annotation>
<xs:documentation>Ion passes through the channel, e.g. Na ions permeate through an "Na Channel"</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="ModulatingSubstance">
<xs:annotation>
<xs: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</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="SignallingSubstance">
<xs:annotation>
<xs:documentation>Ion/substance is involved in internal signalling in the cell and the mechanism can alter its concentration, e.g. exponentially decaying Ca pool</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="Gate">
<xs:annotation>
<xs:documentation>Definition of a single voltage/concentration dependent gate</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="state" maxOccurs="2">
<xs:annotation>
<xs: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.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="fraction" type="meta:ZeroToOne" default="1"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="power" type="xs:nonNegativeInteger" use="required">
<xs:annotation>
<xs:documentation>The power to which the gate is raised in the expression for the total conductance</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="HHGate">
<xs:annotation>
<xs:documentation>Gate with Hodgkin Huxley like state transitions</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="transition" type="Transition"/>
</xs:sequence>
<xs:attribute name="state" type="xs:string" use="required"/>
</xs:complexType>
<xs:complexType name="KSGate">
<xs:annotation>
<xs:documentation>Gate with kinetic scheme transitions</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="state" type="KSState" maxOccurs="unbounded"/>
<xs:element name="transition" type="Transition" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="KSState">
<xs:annotation>
<xs:documentation>Single kinetic scheme state. Transitions will happen between these states</xs:documentation>
</xs:annotation>
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
<xs:complexType name="Transition">
<xs:annotation>
<xs:documentation>What causes the gate to open and close. A dependence on potential difference,
or a voltage and (ion) concentration dependence</xs:documentation>
</xs:annotation>
<xs:choice>
<xs:element name="voltage_gate" type="VoltageGate"/>
<xs:element name="voltage_conc_gate" type="VoltageConcGate"/>
</xs:choice>
<xs:attribute name="src" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>Source state of the transition if used in kinetic scheme. Must be used with attribute target</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="target" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>Target state of the transition if used in kinetic scheme. Must be used with attribute src</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="VoltageGate">
<xs:annotation>
<xs:documentation>Definition of a voltage gate. Normally this will be specified as rate equations for
alpha and beta, or for tau and inf</xs:documentation>
</xs:annotation>
<xs:sequence>
<!-- Usually the alpha & beta form are specified/known, but tau and inf could be used instead-->
<xs:group ref="AlphaBetaForm" minOccurs="0"/>
<xs:group ref="ExtraRateExpressions" minOccurs="0"/>
<!-- Note: one of tau or inf could be specified even if alpha and beta are given-->
<xs:element name="tau" type="RateConstantEqnChoice" minOccurs="0"/>
<xs:element name="inf" type="RateConstantEqnChoice" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="VoltageConcGate">
<xs:annotation>
<xs: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</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="conc_dependence" type="ConcDependence"/>
<!-- Usually the alpha & beta form are specified/known, but tau and inf could be used instead-->
<xs:group ref="AlphaBetaFormVoltConcDep" minOccurs="0"/>
<xs:group ref="ExtraRateExpressions" minOccurs="0"/>
<!-- Note: one of tau or inf could be specified even if alpha and beta are given-->
<xs:element name="tau" type="RateConstVoltConcDep" minOccurs="0"/>
<xs:element name="inf" type="RateConstVoltConcDep" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ConcDependence">
<xs:annotation>
<xs:documentation>Specification of the concentration dependence of a gate</xs:documentation>
</xs:annotation>
<xs:attribute name="name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Name of substance, just for reference</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ion" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>If the substance is an ion, here is a reference the entry in the ion list at the start of the file</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="variable_name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>How the value of conductance will be expressed in the rate equations</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="min_conc" type="bio:ConcentrationValue" use="required">
<xs:annotation>
<xs:documentation>Minimum expected concentration. Quite likely to be needed by simulators (e.g. for generating tables)</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="max_conc" type="bio:ConcentrationValue" use="required">
<xs:annotation>
<xs:documentation>Maximum expected concentration. Quite likely to be needed by simulators (e.g. for generating tables)</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:group name="AlphaBetaForm">
<xs:annotation>
<xs:documentation>alpha, beta form of rate equations. These will always be together if present</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="alpha" type="RateConstantEqnChoice"/>
<xs:element name="beta" type="RateConstantEqnChoice"/>
</xs:sequence>
</xs:group>
<xs:group name="ExtraRateExpressions">
<xs:annotation>
<xs: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.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="gamma" type="RateConstantEqnChoice"/>
<xs:element name="zeta" type="RateConstantEqnChoice"/>
</xs:sequence>
</xs:group>
<xs:group name="AlphaBetaFormVoltConcDep">
<xs:annotation>
<xs:documentation>alpha, beta form of rate equations of voltage and conc dependent channels. These will always be together if present</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="alpha" type="RateConstVoltConcDep"/>
<xs:element name="beta" type="RateConstVoltConcDep"/>
</xs:sequence>
</xs:group>
<xs:complexType name="RateConstantEqnChoice">
<xs:annotation>
<xs:documentation>Choice of the various rate constant expressions allowed</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:group ref="meta:metadata"/>
<xs:choice>
<xs:element name="parameterised_hh" type="AkdEquation"/>
<xs:element name="generic_equation_hh" type="GenericEquation"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="RateConstVoltConcDep">
<xs:annotation>
<xs: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</xs:documentation>
</xs:annotation>
<xs:choice>
<xs:element name="generic_equation_hh" type="GenericEquation"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="RateConstantEqn">
<xs:annotation>
<xs:documentation>Definition of a rate constant equation.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="parameter" type="Parameter" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>A parameter which is used in the equation</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="type" type="xs:string" use="required"/>
<xs:attribute name="expr" type="xs:string"/>
</xs:complexType>
<xs:complexType name="AkdEquation">
<xs:annotation>
<xs:documentation>Definition of a type of rate constant equation which takes parameters A, k, d
and maps to either exponential, sigmoidal or linoidal.</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:restriction base="RateConstantEqn">
<xs:sequence>
<xs:element name="parameter" type="Parameter" minOccurs="3" maxOccurs="3"/>
</xs:sequence>
<xs:attribute name="type" type="CoreEquationType" use="required"/>
<xs:attribute name="expr" type="xs:string"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="GenericEquation">
<xs:annotation>
<xs:documentation>Definition of a type of rate constant equation</xs:documentation>
</xs:annotation>
<xs:attribute name="expr" type="xs:string" use="required">
<xs:annotation>
<xs: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. </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="IonConcentration">
<xs:annotation>
<xs: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.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="status" type="meta:Status" minOccurs="0">
<xs:annotation>
<xs:documentation>Status of the ion conc mech specification: stable, in progress, etc.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:group ref="meta:metadata">
<xs:annotation>
<xs:documentation>Some metadata to describe the ion concentration</xs:documentation>
</xs:annotation>
</xs:group>
<xs:group ref="meta:referencedata"/> <!-- ppppp one recent change...-->
<xs:element name="ion_species" type="xs:string"/>
<xs:choice>
<xs:element name="decaying_pool_model" type="DecayingPoolModel">
<xs:annotation>
<xs:documentation>At present there is only one choice of a model for this process,
more can be added later</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>The name of the ion, as used in the Ion element.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name = "DecayingPoolModel">
<xs:annotation>
<xs:documentation>Element for parameters in a decaying pool model of ion concentration (e.g. calcium pool)</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="resting_conc" type="bio:ConcentrationValue">
<xs:annotation>
<xs:documentation>Resting concentration of ion</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="decay_constant" type="bio:TimeConstantValue">
<xs:annotation>
<xs:documentation>Exponential decay time of pool </xs:documentation>
</xs:annotation>
</xs:element>
<xs:sequence>
<xs:element name="pool_volume_info" type="PoolVolumeInfo"/>
</xs:sequence>
</xs:sequence>
</xs:complexType>
<xs:complexType name = "PoolVolumeInfo">
<xs:annotation>
<xs:documentation>Information on the volume of the ion pool</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:annotation>
<xs: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</xs:documentation>
</xs:annotation>
<xs:element name="shell_thickness" type="bio:LengthValue"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name = "Parameter">
<xs:annotation>
<xs:documentation>Generic parameter used in rate equations</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:group ref="meta:metadata"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="value" type="xs:double" use="required"/>
</xs:complexType>
<!-- Definition of core equation types follows. -->
<xs:simpleType name="CoreEquationType">
<xs:annotation>
<xs:documentation>Enumeration of core equation types, linoidal, sigmoidal, exponential</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="exponential">
<xs:annotation>
<xs:documentation>Of the form: A * exp(k * (v-d))</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="sigmoid">
<xs:annotation>
<xs:documentation>Of the form: A / (1 + exp(k * (v-d)))</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="linoid">
<xs:annotation>
<xs:documentation>Of the form: A * (k * (v-d)) / (1 - exp(-(k * (v-d))))</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:schema>
|