<?xml version=
"1.0"
?>
<!--
FILE : two_reaction_model.xml
CREATED : 18 January 2001
LAST MODIFIED : 22nd July 2002
AUTHOR : Melanie Nelson
Physiome Sciences, Inc.
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.
DESCRIPTION : In this CellML file, the simple reaction/pathway model presented
in the examples section of the CellML website is extended to include two
reactions. This demonstrates how the differential equations governing the
conservation of concentration of a chemical species work in the presence
of multiple reactions.
Only features that weren't commented in the original basic reaction model
are commented in this file.
-->
<model
name="
two_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
>
Nelson
</vCard:Family>
<vCard:Given
>
Melanie
</vCard:Given>
</vCard:N>
<vCard:ORG
rdf:parseType="
Resource
"
>
<vCard:Orgname
>
Physiome Sciences
</vCard:Orgname>
</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
>
2001-01-22
</dcterms:W3CDTF>
</dcterms:modified>
</cmeta:modification>
<!-- The Publisher metadata. -->
<dc:publisher
>
Physiome Sciences
</dc:publisher>
</rdf:Description>
<!--
The following metadata refers to the model itself, as indicated by the
reference to the ID "two_reaction_model", which is
declared on the <model> element.
-->
<rdf:Description
rdf:about="
#two_reaction_model
"
>
<!-- A human readable name for the model. -->
<dc:title
>
A Simple Two Reaction Model
</dc:title>
<!-- A comment regarding the model. -->
<cmeta:comment
rdf:parseType="
Resource
"
>
<rdf:value
>
Below is a CellML description of a simple two 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
for use within the units attributes on <variable> and <cn> elements
elsewhere in the model. See the example documentation of the simple
electro-physiological model for more details.
-->
<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="
first_order_rate_constant
"
>
<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>
<component
name="
environment
"
>
<variable
name="
time
"
public_interface="
out
"
units="
second
"
/>
</component>
<!--
The first six components correspond to the reactants and products in
the two reactions in this simple model. They are primarily used to store
the concentrations of each of the metabolites. 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". Each reaction calculates
the rate of change of concentration of each of the metabolites as a result
of that reaction, and the results are returned as fluxes (the "delta"
variables in the metabolite components), which are then 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>
<!--
The chemical species "C" is used in both reactions in this model.
Therefore, it has two "delta" variables: one to represent the change
in its concentration due to the first_reaction, and the other to represent
the change in its concentration due to the second_reaction. The mathematical
expression defining how the changes in concentration due to the two
reactions are to be merged into a global rate of change of C with respect
to time is stored in this component. In this simple model, the two delta
variables are simply summed. This is how most models will probably behave.
However, more complex situations could also be represented in CellML. The
modeller is free to use any mathematical expression that can be represented
in MathML.
-->
<component
name="
C
"
>
<variable
name="
C
"
public_interface="
out
"
units="
concentration_units
"
/>
<variable
name="
delta_C_rxn1
"
public_interface="
in
"
units="
flux_units
"
/>
<variable
name="
delta_C_rxn2
"
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>
<apply
>
<plus
/>
<ci
>
delta_C_rxn1
</ci>
<ci
>
delta_C_rxn2
</ci>
</apply>
</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>
<component
name="
E
"
>
<variable
name="
E
"
public_interface="
out
"
units="
concentration_units
"
/>
<variable
name="
delta_E
"
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
>
E
</ci>
</apply>
<ci
>
delta_E
</ci>
</apply>
</math>
</component>
<component
name="
F
"
>
<variable
name="
F
"
public_interface="
out
"
units="
concentration_units
"
/>
<variable
name="
delta_F
"
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
>
F
</ci>
</apply>
<ci
>
delta_F
</ci>
</apply>
</math>
</component>
<!--
The first reaction component contains the definition of the first
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="
first_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.
-->
<reaction
>
<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>
<component
name="
second_reaction
"
>
<!-- These variables are modifiable elsewhere and imported. -->
<variable
name="
C
"
public_interface="
in
"
units="
concentration_units
"
/>
<variable
name="
E
"
public_interface="
in
"
units="
concentration_units
"
/>
<variable
name="
F
"
public_interface="
in
"
units="
concentration_units
"
/>
<!-- These variables are modifiable in this component and exported. -->
<variable
name="
delta_C
"
public_interface="
out
"
units="
flux_units
"
/>
<variable
name="
delta_E
"
public_interface="
out
"
units="
flux_units
"
/>
<variable
name="
delta_F
"
public_interface="
out
"
units="
flux_units
"
/>
<!-- These variables are internal to this component. -->
<variable
name="
k_forward
"
units="
second_order_rate_constant
"
/>
<variable
name="
k_reverse
"
units="
first_order_rate_constant
"
/>
<variable
name="
r
"
units="
flux_units
"
/>
<reaction
>
<variable_ref
variable="
C
"
>
<role
role="
reactant
"
direction="
forward
"
delta_variable="
delta_C
"
stoichiometry="
1
"
/>
</variable_ref>
<variable_ref
variable="
E
"
>
<role
role="
reactant
"
direction="
forward
"
delta_variable="
delta_E
"
stoichiometry="
1
"
/>
</variable_ref>
<variable_ref
variable="
F
"
>
<role
role="
product
"
direction="
forward
"
delta_variable="
delta_F
"
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
>
C
</ci>
<ci
>
E
</ci>
</apply>
</apply>
<apply
>
<times
/>
<ci
>
k_reverse
</ci>
<ci
>
F
</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="
first_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="
first_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="
first_reaction
"
/>
<map_variables
variable_1="
C
"
variable_2="
C
"
/>
<map_variables
variable_1="
delta_C_rxn1
"
variable_2="
delta_C
"
/>
</connection>
<connection
>
<map_components
component_1="
C
"
component_2="
second_reaction
"
/>
<map_variables
variable_1="
C
"
variable_2="
C
"
/>
<map_variables
variable_1="
delta_C_rxn2
"
variable_2="
delta_C
"
/>
</connection>
<connection
>
<map_components
component_1="
D
"
component_2="
first_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="
E
"
component_2="
second_reaction
"
/>
<map_variables
variable_1="
E
"
variable_2="
E
"
/>
<map_variables
variable_1="
delta_E
"
variable_2="
delta_E
"
/>
</connection>
<connection
>
<map_components
component_1="
F
"
component_2="
second_reaction
"
/>
<map_variables
variable_1="
F
"
variable_2="
F
"
/>
<map_variables
variable_1="
delta_F
"
variable_2="
delta_F
"
/>
</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>
<connection
>
<map_components
component_1="
E
"
component_2="
environment
"
/>
<map_variables
variable_1="
time
"
variable_2="
time
"
/>
</connection>
<connection
>
<map_components
component_1="
F
"
component_2="
environment
"
/>
<map_variables
variable_1="
time
"
variable_2="
time
"
/>
</connection>
</model>