<?xml version="1.0"?>
<!--
FILE : basic_reaction_model.xml
CREATED : 27 November 2000
LAST MODIFIED : 22nd July 2002
AUTHOR : Warren Hedley (w.hedley@auckland.ac.nz)
Department of Engineering Science
The University of Auckland
MODEL STATUS : This model conforms to the CellML 1.0 Specification released on
10th August 2001, and the 16/01/2002 CellML Metadata 1.0
Specification.
ORIGINAL CONCEPT BY :
Melanie Nelson (mnelson@phsyiome.com)
Physiome Sciences, Inc.
DESCRIPTION : This file contains a CellML description of an extremely simple
reaction/pathway cellular model. The model and associated markup have been
created solely for demonstration purposes.
-->
<!--
The root element for our CellML model description is <model>. This contains
a "name" attribute which would be used if the model were to be combined with
another model at a later date, or if the model is to be referenced in some
way by another model.
Two namespaces are declared on the root element. The first sets the default
namespace for the <model> element and all elements contained within the
<model> element to the CellML namespace. The second namespace is again the
CellML namespace, but this time declared with an explicit "cellml" prefix.
This declaration has document-wide scope, so the "cellml" prefix may be used
anywhere to move an element or attribute into the CellML namespace.
-->
<model name="basic_reaction_model" xmlns="http://www.cellml.org/cellml/1.0#" xmlns:cellml="http://www.cellml.org/cellml/1.0#" xmlns:cmeta="http://www.cellml.org/metadata/1.0#">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqs="http://www.cellml.org/bqs/1.0#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#">
<!--
The following RDF block contains metadata that applies to this document
as a whole, as indicated by the empty about attribute on the
<rdf:Description> element.
-->
<rdf:Description rdf:about="">
<!--
The Model Builder Metadata. The Dublin Core "creator" element is used
to indicate the person who translated the model into CellML.
-->
<dc:creator rdf:parseType="Resource">
<vCard:N rdf:parseType="Resource">
<vCard:Family>Hedley</vCard:Family>
<vCard:Given>Warren</vCard:Given>
</vCard:N>
<vCard:ORG rdf:parseType="Resource">
<vCard:Orgname>The University of Auckland</vCard:Orgname>
<vCard:Orgunit>The Engineering Science Department</vCard:Orgunit>
</vCard:ORG>
</dc:creator>
<!--
The Creation Date metadata. This is the date on which the model
was translated into CellML.
-->
<dcterms:created rdf:parseType="Resource">
<dcterms:W3CDTF>2000-11-20</dcterms:W3CDTF>
</dcterms:created>
<!--
The Last Modified Date metadata. This is the date on which
the model was last changed.
-->
<cmeta:modification rdf:parseType="Resource">
<rdf:value>
Added metadata.
</rdf:value>
<cmeta:modifier rdf:parseType="Resource">
<vCard:N rdf:parseType="Resource">
<vCard:Family>Lloyd</vCard:Family>
<vCard:Given>Catherine</vCard:Given>
<vCard:Other>May</vCard:Other>
</vCard:N>
</cmeta:modifier>
<dcterms:modified rdf:parseType="Resource">
<dcterms:W3CDTF>2002-07-22</dcterms:W3CDTF>
</dcterms:modified>
</cmeta:modification>
<!-- The Publisher metadata. -->
<dc:publisher>
The University of Auckland, Bioengineering Institute
</dc:publisher>
</rdf:Description>
<!--
The following metadata refers to the model itself, as indicated by the
reference to the ID "basic_reaction_model", which is declared on the <model> element.
-->
<rdf:Description rdf:about="#basic_reaction_model">
<!-- A human readable name for the model. -->
<dc:title>A Simple Reaction Model</dc:title>
<!-- A comment regarding the model. -->
<cmeta:comment rdf:parseType="Resource">
<rdf:value>
Below is a CellML description of a simple reaction model.
The purpose of this description is to illustrate how CellML can be
used to model metabolic and signal transduction pathways within a cell.
</rdf:value>
<!-- The creator of the comment. -->
<dc:creator>
<vCard:FN>Catherine Lloyd</vCard:FN>
</dc:creator>
</cmeta:comment>
</rdf:Description>
</rdf:RDF>
<!--
The following <units> elements are used to declare a set of unit names
that can be referenced by units attributes on <variable> and <cn> elements
elsewhere in the model. See the example documentation of the simple
electro-physiological model for more details. Note that the empty prefix
attributes could have been omitted. They are included here for clarity.
-->
<units name="concentration_units">
<unit prefix="milli" units="mole" />
<unit units="litre" exponent="-1" />
</units>
<units name="flux_units">
<unit units="concentration_units" exponent="1" />
<unit units="second" exponent="-1" />
</units>
<units name="second_order_rate_constant">
<unit units="concentration_units" exponent="-1" />
<unit units="second" exponent="-1" />
</units>
<units name="third_order_rate_constant">
<unit units="concentration_units" exponent="-2" />
<unit units="second" exponent="-1" />
</units>
<!--
The environment component is used to declare variables that are used
by all or most of the other components. Variables must be declared inside
of a component element. Note that the name "global_variables" should not
be interpreted in any way other than as an name, i.e., it has no special
significance.
-->
<component name="environment">
<variable name="time" public_interface="out" units="second" />
</component>
<!--
The first four components correspond to the reactants and products in
the simple reaction model. They are primarily used to store the
concentrations of each of the species. These variables are given the
same name as their parent component, and exposed to the rest of the model
by having a public_interface value of "out". The reaction calculates the
rate of change of concentration of each of the species as a result
of that reaction, and the results (the "delta" variables) are passed back
to the components representing the chemical species. These variables
therefore have a public_interface value of in. Because the concentration
variables are continuous functions of time, the time variable must also
be declared.
Although it would be possible to define all of the chemical species and
the reaction in the same component, it is recommended best practice to
put each chemical species and each reaction in its own component. This
makes it easier to combine this model with other pathway models, or merge
it with electro-physiological or other classes of model.
-->
<component name="A">
<variable name="A" public_interface="out" units="concentration_units" />
<variable name="delta_A" public_interface="in" units="flux_units" />
<variable name="time" public_interface="in" units="second" />
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply><eq />
<apply><diff />
<bvar><ci> time </ci></bvar>
<ci> A </ci>
</apply>
<ci> delta_A </ci>
</apply>
</math>
</component>
<component name="B">
<variable name="B" public_interface="out" units="concentration_units" />
<variable name="delta_B" public_interface="in" units="flux_units" />
<variable name="time" public_interface="in" units="second" />
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply><eq />
<apply><diff />
<bvar><ci> time </ci></bvar>
<ci> B </ci>
</apply>
<ci> delta_B </ci>
</apply>
</math>
</component>
<component name="C">
<variable name="C" public_interface="out" units="concentration_units" />
<variable name="delta_C" public_interface="in" units="flux_units" />
<variable name="time" public_interface="in" units="second" />
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply><eq />
<apply><diff />
<bvar><ci> time </ci></bvar>
<ci> C </ci>
</apply>
<ci> delta_C </ci>
</apply>
</math>
</component>
<component name="D">
<variable name="D" public_interface="out" units="concentration_units" />
<variable name="delta_D" public_interface="in" units="flux_units" />
<variable name="time" public_interface="in" units="second" />
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply><eq />
<apply><diff />
<bvar><ci> time </ci></bvar>
<ci> D </ci>
</apply>
<ci> delta_D </ci>
</apply>
</math>
</component>
<!--
The basic reaction component contains the definition of the only actual
reaction in our simple model, importing the concentrations of the reactants
(A and B) and products (C and D) and calculating the change in these
concentrations (the delta variables) for export back to the components
where these concentrations are declared (defined above).
-->
<component name="basic_reaction">
<!-- These variables are modifiable elsewhere and imported. -->
<variable name="A" public_interface="in" units="concentration_units" />
<variable name="B" public_interface="in" units="concentration_units" />
<variable name="C" public_interface="in" units="concentration_units" />
<variable name="D" public_interface="in" units="concentration_units" />
<!-- These variables are modifiable in this component and exported. -->
<variable name="delta_A" public_interface="out" units="flux_units" />
<variable name="delta_B" public_interface="out" units="flux_units" />
<variable name="delta_C" public_interface="out" units="flux_units" />
<variable name="delta_D" public_interface="out" units="flux_units" />
<!--
k_forward and k_reverse are the forward and reverse rate constants,
respectively. "r" is the reaction rate, or extent of the reaction.
They are not used by any other component in the model, and therefore
have no public or private interface.
-->
<variable name="k_forward" units="second_order_rate_constant" />
<variable name="k_reverse" units="third_order_rate_constant" />
<variable name="r" units="flux_units" />
<!--
The <reaction> element is used to indicate which chemical species are
participating in this reaction, and what role they play in the reaction.
When the "delta_variable" and "stoichiometry" attributes are both
specified on a <role> element, it implies an equation defining the delta
variable's value in terms of the stoichiometry and the reaction rate.
The reaction rate is determined by the variable with a role of "rate"
(in this case "r"), and the equation determining the value of "r" is
defined using MathML inside that variable reference.
So <role delta_variable="delta_A" stoichiometry="1"> implies
<apply><eq />
<ci> delta_A </ci>
<apply><times />
<cn cellml:units="dimensionless"> 1.0 </cn>
<ci> r </ci>
</apply>
</apply>
Note that the "direction" attributes on the <role> elements defaults to
"forward" so could have been omitted on the <role> elements below.
-->
<reaction reversible="yes">
<variable_ref variable="A">
<role role="reactant" direction="forward" delta_variable="delta_A" stoichiometry="1" />
</variable_ref>
<variable_ref variable="B">
<role role="reactant" direction="forward" delta_variable="delta_B" stoichiometry="1" />
</variable_ref>
<variable_ref variable="C">
<role role="product" direction="forward" delta_variable="delta_C" stoichiometry="2" />
</variable_ref>
<variable_ref variable="D">
<role role="product" direction="forward" delta_variable="delta_D" stoichiometry="1" />
</variable_ref>
<variable_ref variable="r">
<role role="rate">
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply><eq />
<ci> r </ci>
<apply><plus />
<apply><minus />
<apply><times />
<ci> k_forward </ci>
<ci> A </ci>
<ci> B </ci>
</apply>
</apply>
<apply><times />
<ci> k_reverse </ci>
<apply><power />
<ci> C </ci>
<cn cellml:units="dimensionless"> 2.0 </cn>
</apply>
<ci> D </ci>
</apply>
</apply>
</apply>
</math>
</role>
</variable_ref>
</reaction>
</component>
<!--
The connections define the mappings between variables declared in
different components. When more than one variable is mapped between
two components, all variable mappings must be listed in the same
connection element (there can only be one connection between two
components).
-->
<connection>
<map_components component_1="A" component_2="basic_reaction" />
<map_variables variable_1="A" variable_2="A" />
<map_variables variable_1="delta_A" variable_2="delta_A" />
</connection>
<connection>
<map_components component_1="B" component_2="basic_reaction" />
<map_variables variable_1="B" variable_2="B" />
<map_variables variable_1="delta_B" variable_2="delta_B" />
</connection>
<connection>
<map_components component_1="C" component_2="basic_reaction" />
<map_variables variable_1="C" variable_2="C" />
<map_variables variable_1="delta_C" variable_2="delta_C" />
</connection>
<connection>
<map_components component_1="D" component_2="basic_reaction" />
<map_variables variable_1="D" variable_2="D" />
<map_variables variable_1="delta_D" variable_2="delta_D" />
</connection>
<connection>
<map_components component_1="A" component_2="environment" />
<map_variables variable_1="time" variable_2="time" />
</connection>
<connection>
<map_components component_1="B" component_2="environment" />
<map_variables variable_1="time" variable_2="time" />
</connection>
<connection>
<map_components component_1="C" component_2="environment" />
<map_variables variable_1="time" variable_2="time" />
</connection>
<connection>
<map_components component_1="D" component_2="environment" />
<map_variables variable_1="time" variable_2="time" />
</connection>
</model>