Table of Contents
The basic structure of an SBML model definition
is given in Example 3.1, “
The basic structure of an SBML file used in MesoRD is
”. The
leading ?xml
tag should alway be
included, as the character encoding for SBML is
always UTF-8. The outermost enclosing
sbml
tag should used verbatim in
any models used with MesoRD, since
MesoRD only supports
SBML level 2 version 4. Not all of the
features built into SBML are utilised in
MesoRD. Similarly, there are some
features required by MesoRD which are
not provided in SBML. The departures in
SBML files for use with
MesoRD with respect to standard level 2
version 4 are briefly listed in the section called “
Departures from Standard SBML Level 2
”.
Example 3.1. The basic structure of an SBML file used in MesoRD is
<?xml version="1.0" encoding="UTF-8"?> <sbml xmlns="http://www.sbml.org/sbml/level2/version4" level="2" version="4"> <model id="My_Model"> <listOfUnitDefinitions> ... </listOfUnitDefinitions> <listOfCompartments> ... </listOfCompartments> <listOfSpecies> ... </listOfSpecies> <listOfParameters> ... </listOfParameters> <listOfReactions> ... </listOfReactions> </model> </sbml>
Note that the above outline is a subset of the structures
available in SBML. MesoRD does not support
Functions
,
Events
,
SpeciesTypes
,
CompartmentTypes
,
Rules
, Initial
assignments
, or
Constraints
. Note that none of
the components in the skeletal SBML file above,
or the structures directly above, are actually mandatory: if there
are no parameters in a model, it makes no sense to include an
empty listOfParameters
. This also
means that MesoRD is not breaking any SBML
standard by not implementing them. The following sections discuss
each part in turn, focusing on where the user has to take special
care when writing model definitions for
MesoRD.
This section briefly presents the key topics where MesoRD and SBML disagree as far as the format of input files is concerned. It would seem that by introducing these changes, we are breaking the major purpose of SBML: interchangeability. This is entirely true. It is also the reason why we have attempted to make this section as small as possible. On the other hand: if we didn't reinterpret SBML a little, we could not have achieved what we wanted.
MesoRD does not support the set of
reserved, predefined units, such as
volume
and
area
. In fact, to be safe,
you should define everything you use.
Compartments for use in MesoRD
must have the default setting of
spatialDimensions="3"
or
spatialDimensions="2"
.
Furthermore, compartments must have
constant="true"
.
Species must be defined once for every compartment where they can be found. [6] Each definition must include diffusion constant for diffusion from the compartment of definition to all other compartments in the model.
Reactions in MesoRD are
single-compartment. Reactions must include
reversible="false"
. Using
stoichiometryMath
is
completely unsupported.
Note that in cases where MesoRD
requires additional information in form of SBML
annotations, these elements are defined in the name space
identified by
http://www.icm.uu.se
. Note also
that the URI reference in arguments such as
xmlns:MesoRD="http://www.icm.uu.se"
,
is not directly usable; it does not identify an actual,
retrievable document or resource on the Internet. It is simply
intended to make the name space unique.
Figure 3.1.
The SBML definition
of UnitDefinition
UnitDefinition | |
---|---|
id | SId |
name | string { use="optional" } |
unit | Unit[1..*] |
Figure 3.2.
The SBML definition
of Unit
Unit | |
---|---|
kind | UnitKind |
exponent | integer { use="optional" default="1" } |
scale | integer { use="optional" default="0" } |
multiplier | double { use="optional" default="1" } |
SBML gives the user the possibility to define a
name for a unit. The defined name can subsequently be used in the
expression of quantities in a model. Novel units in
SBML are composed of a set of predefined
units. These predefined units are listed in [Hucka et al 2008]. A new unitdefinition is constructed as
follows: unew =
({multiplier}*10{scale} *
u){exponent}, where u is one of
predefined units. Units are constructed through multiplication of
unitdefinitions as U = u1 * ... *
uN, where U is the constructed unit and
u1...N are unitdefinitions. For instance,
some of the sample model files included in the distribution define
a unit um
for micrometre. This
unit is then used when defining the geometry of the
system.
Example 3.2. Unit Definition.
<listOfUnitDefinitions> <unitDefinition id="um"> <listOfUnits> <unit kind="metre" scale="-6"/> </listOfUnits> </unitDefinition> </listOfUnitDefinitions>
<unit kind="metre" exponent="2"
scale="-4"/>
, whereas version 0.3 and above
use <unit kind="metre" exponent="2"
scale="-2"/>
. The reason we changed is that
the SBML standard changed.
It may be interesting to know that
MesoRD internally only uses basic SI
units, as defined in for instance [Physics Handbook]. Any units are converted to products
of these units when parsing the SBML. Thus you could for instance
define a unit fulmeter
as one
Joule per Newton, and specify all your lengths in
fulmeter
in the unit definitions.
[Hucka et al 2008] defines default units for several entities in the model. The specification also says that one can redefine these default units throughout the model. You should not use default units in MesoRD! You should instead always define units explicitly, whenever possible.
Figure 3.3.
The SBML definition of
Compartment
. Unsupported
SBML features are marked with a star.
Compartment | |
---|---|
id | SId |
name | string { use="optional" } |
compartmentType* | string { use="optional" } |
spatialDimensions | integer { maxInclusive="3" minInclusive="0" use="optional" default="3"} |
size* | double { use="optional" } |
units | SId { use="optional" } |
outside* | SId { use="optional" } |
constant* | boolean { use="optional" default="true" } |
In SBML, a compartment is a container of finite
size for substances. Note that compartments do not necessarily
have to correspond to actual structures inside or outside of a
cell
[7]. It is important to remember that we cannot have a
substance without having a unique
compartment to contain it. This is the source of some trouble
when it comes to species that can cross compartment boundaries.
MesoRD's approach to resolve the
problem is discussed in the section called “
Species
”. When using a
concentration for defining the initial concentration of species,
units
has to be defined. See the section called “
Species
” for more information
Please note that the format for defining compartments has changed between version 0.2 and 0.3 of MesoRD.
units
in Compartment is
used instead of
spatialSizeUnit
in Species
to define the volume unit of a concentration. See the section called “
Species
” and below for more
information.
Each annotation
block now
always starts with <MesoRD:csg
xmlns:mesoRD="http://www.icm.uu.se">
,
and ends with
</MesoRD:csg>
. See
Example 3.3, “
Compartment Definition.
” below, and
also
Chapter 4,
Constructive Solid Geometry
The most important modification of compartments for use in MesoRD compared to their definition in SBML, is that every compartment needs a geometry definition. Exactly how these geometries are defined is discussed in Chapter 4, Constructive Solid Geometry . Suffice it here to say that the model excerpt below will result in ellipsoid spanning two micrometres in the x-direction, and one micrometre in the y- and z-direction respectively.
Example 3.3. Compartment Definition.
<listOfCompartments> <compartment id="CompartmentOne"> <annotation> <MesoRD:csg xmlns:mesoRD="http://www.icm.uu.se"> <MesoRD:scale MesoRD:x="2" MesoRD:y="1" MesoRD:z="1"> <MesoRD:sphere MesoRD:radius="1" MesoRD:units="um"/> </MesoRD:scale> </MesoRD:csg> </annotation> </compartment> </listOfCompartments>
For three-dimensional models the computed volume of a subvolume is
recorded as global parameter with the id
volume_subvolume
. For
two-dimensional models the computed area of a subarea is recorded
as area_subarea
. The area or
volumes of compartments are recorded as global parameters with the
id of the compartment. If one wishes to include these parameters
in kinetic rate expressions the correct procedure is to define
parameters with the id and name that are the same as the
compartment id. The value of a particular parameter is
irrelevant. When simulating, MesoRD
will replace the value, in litres for volumes and micrometre
squared for areas, with the volume or area as computed. The side
length of a subvolume and a subarea are stored as
size_subvolume
and
size_subarea
, respectively.
The most common problem during early development of MesoRD turned out to be that the geometry of the compartment was empty. It is not very difficult to inadvertently accomplish such a feat. If one for instance were to model a box, the shortest side of which is 10 nanometre, using cubic subvolumes of side length 100 nanometre, the resulting geometry may not contain any subvolumes, even though the specified volume is in fact three dimensional.
Notable differences between SBML and MesoRD compartments are listed below. At present, one should not rely on MesoRD reporting any violations against these requirements. If the program silently breaks, it may be worthwhile verifying that the below conditions are satisfied.
Compartments for use in MesoRD
must have
spatialDimensions
set to
either 3 or 2. MesoRD does
currently not support 1-dimensional
objects. MesoRD
strictly requires that all compartments in the model have
the same spatial dimension.
Although it is not fatally wrong to specify the size of an compartment, it is unnecessary. Because MesoRD will discretise the compartment from fixed sized sub volumes, it is difficult to say beforehand exactly how large a compartment will be. Note that it is the internally computed size that will be used if the amount of any given species is specified in terms of concentrations, as opposed to absolute numbers of molecules.
Although it may seem useless to define
units
, since
size
it not used by MesoRD;
units
is, however, used
when defining initial concentrations of species.
Currently, MesoRD only supports
the default constant
compartments. This means that one should
not set
constant="false"
. The size
of the individual subvolumes which compose a compartment is
fixed throughout the entire simulation. Although it would
be possible to change the size of compartment during a
simulation by dynamically adding or removing subvolumes,
this is currently not implemented.
There is no need for the
outside
attribute to be
specified, as far MesoRD is
concerned. The topology of the different compartments in
the model is completely covered by the geometry description.
Figure 3.4.
The SBML definition of
Species
. Unsupported
SBML features are marked with a star
Species | |
---|---|
id | SId |
name | string { use="optional" } |
speciesType* | SId { use="optional" } |
compartment | SId |
initialAmount | double { use="optional" } |
initialConcentration | double { use="optional" } |
substanceUnits | SId { use="optional" } |
hasOnlySubstanceUnits | boolean { use="optional" default="false" } |
boundaryCondition* | boolean { use="optional" default="false" } |
charge* | integer { use="optional" } |
constant* | boolean { use="optional" default="true" } |
SBML defines species as substances or entities that take part in one or more reactions. Clearly, ATP and glucose are species. However, large complexes such as ribosomes fit the SBML definition of species as well. In SBML, species are defined in exactly one compartment. We shall call this compartment the "home compartment" of a species for the remainder of this section. The existence of a unique home compartment leads to problems when we have species that can cross compartment boundaries. The way the problem is solved in MesoRD is that a species that can occur in several compartment is defined several times, once for every compartment in which it can occur. To prevent violation of the uniqueness criteria for SBML ID:s, every definition must have a unique ID. In order to keep track of which species are actually the same, such species must share the same name. One may think that this is extremely redundant. However, the next paragraph explains why it is in fact only very redundant. [8]
Another requirement that MesoRD
introduces that is absent in SBML is the need
for diffusion rate constant. This is accomplished by the
species_diffusion
annotation
. Every species
definition must define a rate constant for diffusion from the home
compartment into every other compartment, including the diffusion
rate within the home compartment itself. Thus we see that this
partially offsets the redundancy introduced by having to define
the same species several times: it need not be the case the
diffusion constant for diffusion from compartment one to
compartment two is equal to the diffusion constant from
compartment two to compartment one, which could be useful to model
active transport. The diffusion rate constant must be defined with
a length unit squared per time, and we recommend using centimetres
squared per second.
To set the initial number to a fixed value regardless of the
compartment size use the initialAmount, and set the
hasOnlySubstanceUnits to true
. To
set the initial concentration of a molecule in a compartment set
the hasOnlySubstanceUnits to
false
and substanceUnits to
either mole
or
item
. Finally set the
units
in the corresponding
compartment to a unit that can be reduced to
m3 in a three-dimensional model and
m2 in a two-dimensional model.
Please note that the format for defining species has changed between version 0.2 and 0.3 of MesoRD
spatialSizeUnit
is not
present in SBML level 2 version 4. This
is now represented by the unit on the
Compartment
, see the section called “
Compartment
”. In order to
set an initial concentration in molar set
substanceUnits
to mole
and set the units
on the
corresponding compartment to litre. See example Example 3.4, “
Species Definition.
”
Each annotation
block now
always starts with
<MesoRD:species_diffusion
xmlns:mesoRD="http://www.icm.uu.se">
,
and ends with
</MesoRD:species_diffusion>
The example below defines an hypothetical species
A
in a two-compartment system.
Note that the initial amount in CompartmentOne
is given in number of molecules since
hasOnlySubstanceUnits="true"
, but
that the initial amount in
CompartmentTwo
is given as a
concentration in units of mole
per
litre
. Furthermore, note that
the diffusion constants are different for diffusion within two
compartments.
<listOfCompartments> <compartment id="CompartmentOne" units="litre"> <annotation> <MesoRD:csg xmlns:MesoRD="http://www.icm.uu.se"> <MesoRD:translation MesoRD:x="0" MesoRD:y="1" MesoRD:z="0" MesoRD:units="um"> <MesoRD:box MesoRD:x="0.4" MesoRD:y="0.4" MesoRD:z="0.4" MesoRD:units="um"/> </MesoRD:translation> </MesoRD:csg> </annotation> </compartment> <compartment id="CompartmentTwo" units="litre"> <annotation> <MesoRD:csg xmlns:MesoRD="http://www.icm.uu.se"> <MesoRD:difference> <MesoRD:box MesoRD:x="0.4" MesoRD:y="4.0" MesoRD:z="0.4" MesoRD:units="um"> <MesoRD:pbc MesoRD:x="false" MesoRD:y="true" MesoRD:z="false"/> </MesoRD:box> <MesoRD:compartment MesoRD:id="CompartmentOne"/> </MesoRD:difference> </MesoRD:csg> </annotation> </compartment> </listOfCompartments> <listOfSpecies> <species id="A1" compartment="CompartmentOne" hasOnlySubstanceUnits="true" initialAmount="10000" name="A" substanceUnits="item"> <annotation> <MesoRD:species_diffusion xmlns:MesoRD="http://www.icm.uu.se"> <MesoRD:diffusion MesoRD:compartment="CompartmentOne" MesoRD:rate="6e-8" MesoRD:units="cm2ps"/> <MesoRD:diffusion MesoRD:compartment="CompartmentTwo" MesoRD:rate="6e-8" MesoRD:units="cm2ps"/> </MesoRD:speces_diffusion> </annotation> </species> <species id="A2" compartment="CompartmentTwo" hasOnlySubstanceUnits="false" initialConcentration="1e-5" name="A" substanceUnits="mole"> <annotation> <MesoRD:species_diffusion xmlns:MesoRD="http://www.icm.uu.se"> <MesoRD:diffusion MesoRD:compartment="CompartmentOne" MesoRD:rate="6e-8" MesoRD:units="cm2ps"/> <MesoRD:diffusion MesoRD:compartment="CompartmentTwo" MesoRD:rate="3e-8" MesoRD:units="cm2ps"/> </MesoRD:species_diffusion> </annotation> </species> <listOfSpecies>
Other things to keep in mind when defining species are listed below.
No matter how the initial amount of a species is declared, MesoRD internally uses numbers of molecules. If the initial amount is given as a concentration, the volume of the home compartment, not the entire system, is used in determining the amount of the species.
Though it is not incorrect to only specify the species in the compartments in which they physically can exist it is recommended (at least for now) to specify all species in all compartments. Why? The only reason is that the output from the program depends on the names of the species. If a species is not defined in a compartment it will take the name of a species in another compartment which might be confusing to interpret if you are looking at the output.
There is no support for
boundaryCondition
, and
its default value must not be changed by setting
boundaryCondition="true"
.
This has to do with the fact that
MesoRD does not implement
SBML rates.
MesoRD does not honour the
constant
flag.
The species charge
is
completely ignored.
MesoRD does not support
initialAssignments
,
thus the initialAmounts and concentrations set in
Species
cannot be changed
by other parts of the SBML file.
Figure 3.7.
The SBML definition of
Parameter
Unsupported
SBML features are marked with a star
Parameter | |
---|---|
id | SId |
name | string { use="optional" } |
value | double { use="optional" } |
units | SId |
constant* | boolean { use="optional" default="true" } |
A parameter in SBML associates a quantity with a symbolic name. The symbols may be used in mathematical formula which in turn define kinetic rate laws that control the reactions. Note also that reactions can have local parameters, as well as access to the global ones.
No matter what, MesoRD will
always (re)create some additional
parameters in the model. One of these is
volume_subvolume
, which gives
the volume and unit of each individual sub volume. Another is
one_molecule_molar
, which
gives the concentration of one molecule in a subvolume.
Furthermore, for every compartment,
MesoRD records a parameter with ID
COMPARTMENTID
, where
COMPARTMENTID
is the ID of
the compartment. These latter parameters give the volume and
unit of the respective compartments. If one wants to use
these parameters in the model, one should define them in the
parameter section of the definition first. Before simulation
begins, MesoRD will replace the
values and units with values as calculated from the geometry.
Since MesoRD version 0.3,
volume_subvolme
has only lower
case (as compared to
volume_subVolme
earlier
releases of MesoRD).
All parameters are effectively
constant
, since the lack of
SBML rules means that there is no way to
update a parameter value. The units tag needs to be defined
as defined in the section called “
Unit
”.
units
is
not optional in
MesoRD.
Figure 3.8.
The SBML definition of
Reaction
. Unsupported
SBML features are indicated with a star.
Reaction | |
---|---|
id | SId |
name | string { use="optional" } |
listOfReactants | SpeciesReference[0..*] |
listOfProducts | SpeciesReference[0..*] |
listOfModifiers | ModifierSpeciesReference[0..*] |
kineticLaw | KineticLaw { minOccurs="0" } |
reversible* | boolean { use="optional" default="true" } |
fast* | boolean { use="optional" } |
Figure 3.9.
The SBML definition of
SpeciesReference
. Unsupported
SBML features are indicated with a star.
SpeciesReference | |
---|---|
species | SId |
stoichiometry | double { use="optional" default="1" } |
stoichiometryMath* | StoichiometryMath { use="optional" } |
Figure 3.11.
The SBML definition
of KineticLaw
KineticLaw | |
---|---|
math | Math { namespace="http://www.w3.org/1998/Math/MathML" } |
listOfParameters | Parameter[0..*] |
An SBML reaction is a statement describing some transformation, transport or binding process that can change the amount of one or more species. Typically, an SBML reaction represents a chemical reaction which in turn describes how certain reactants are transformed into products. Reactions have associated kinetic rate expressions describing how often they take place.
Note that [Hucka et al 2008] states that reaction rate expressions should be written such that their units evaluate to "per second". This is a little awkward for the type of reactions MesoRD deals with, because doing so would require one to include the reaction volume in the mathematical expression. In MesoRD the reaction volume is identical to the volume of a subvolume, and this quantity in turn is not necessarily part of the model. Therefore, MesoRD allows reaction rates to be specified in molar per second. If a rate expression evaluates in concentration per time MesoRD attempts to transform the rate to in molar per second automatically. If the reaction rate has the per second unit, MesoRD will assume you know what you are doing and apply no transformations. Thus MesoRD has relaxed the SBML specification a little, not restricted it. However, to make thing simple we strongly recommend that your rate expressions evaluates in concentration per time, or you will have problems every time you change the subvolume size.
Note that only a subset of MathML is supported by SBML for use in kinetic rate laws. To make matters even worse, only a subset of the SBML-supported features of MathML are supported in MesoRD. The SBML-supported MathML that is unsupported in MesoRD is limited to some of the less common trigonometric functions. The reason is that internally, MesoRD for efficiency reasons only works with real numbers, as opposed to complex numbers. On the other hand, the reactions one could define using the unsupported features, would probably be non-physical.
Internally MesoRD ignores the modifier species since they only defined which species that are allowed to be included into the kineticLaw.
In contrast to the SBML standard, all
species IDs occurring in the kinetic rate expressions are
treated as concentrations counted in Molar. The volume used in
calculating concentrations from absolute numbers of molecules
in a subvolume is
volume_subvolume
.
MesoRD does currently not support
reversible reactions. Since the default is that any given
reaction is reversible, reactions must include
reversible="false"
. If one
wants reversible reactions, one should define an additional
reaction going backwards relative to the former.
The fast
argument is
completely ignored by MesoRD.
fast
reactions are not
meaningful in the stochastic treatment as performed by the
program.
For species, using the
stoichiometryMath
is
unsupported. Rather, one must define the
stoichiometry
as a constant,
floating point value. It is actually recommended in [Hucka et al 2008] to do it this way (event though
the specification also says that software, for
inter-operability reasons, should be able to handle all
possible cases).
Because user-defined functions are not supported by MesoRD, we cannot have functions in the kinetic rate expressions.
Reactions in MesoRD occur in a single compartment only. This is different from SBML, where reactions are multi-compartment by design. There is however no need to specify the compartment in which a reaction occurs. Since the species that take part in a reaction are defined in a unique compartment, MesoRD can figure out the compartment to which a reaction belongs by checking the participating species. This can obviously not be done if the participating species were defined in different compartments. Therefore: all species that take part in a given reaction must be defined in the same compartment and the species must be referred to by the species id, not their names.
The example below show the very hypothetical reaction A+B->C , with a reaction-rate constant k.
Example 3.5. Reaction Definition.
<reaction id="Reaction1" reversible="false"> <listOfReactants> <speciesReference species="A"/> <speciesReference species="B"/> </listOfReactants> <listOfProducts> <speciesReference species="C"/> </listOfProducts> <kineticLaw> <math xmlns="http://www.w3.org/1998/Math/MathML"> <apply> <times/> <ci>k</ci> <ci>A</ci> <ci>B</ci> </apply> </math> </kineticLaw> </reaction>
Except from taking notice of the units used in the definition of reaction rates, one should also be aware of the need for subvolume size dependent scaling of the reaction rates in the limit of small subvolumes when running stochastic simulations [Fange et al. 2010]. This is due to the breakdown of the assumption that the commonly used association rate constant include both the time to react at the target and the time to diffuse to the binding target. When the subvolumes are small, diffusion is handled explicitly by MesoRD and should therefore be removed in appropriate amounts from the reaction rate constants. Details on how MesoRD does this is given in the section called “ Scale dependent association rate constants ”.
As of the release 1.0, MesoRD can
automatically scale the reaction rate constants for
bimolecular association and dissociation
reactions. Automatic scaling is turned on by adding a
microscopicParameters
node to
an annotation
block of the
bi-molecular association
reaction
. MesoRD will
internally find the corresponding dissociation reaction, which
should also be scaled appropriately.
To make corrections MesoRD requires
either associationRateConst
or
degreeOfDiffusionControl
and
reactionRadius
to be
defined. The
associationRateConst
is the
reaction rate when the molecules are at the reaction radii of
each other [Collins & Kimball
1949][Berg 1978]. The
associationRateConstant
must
have a unit that can be reduced to cubic metres per second (such
as per molar per second, i.e. litre/(mole
second)) in 3D, and square metres per second in 2D.
reactionRadius
is the sum of the
reaction radii of the two molecules. The
degreeOfDiffusionControl
is
defined as
and
in 3D and 2D respectively. Here
is the
association rate constant when on the reaction radii,
is the
sum of the reaction radii, and
is the sum of the diffusion constants of the two reactants. In
addition MesoRD needs the equilibrium
constant for the bi-molecular reaction to make the
correction. This is taken from the ratio of the rate constants
for the association and dissociation respectively. This means
that MesoRD does not break the
SBML standard for other softwares that do
not implement scale dependent rates constants.
Figure 3.12.
The XML definition of
MicroscopicParameters
.
MicroscopicParameters | |
---|---|
associationRateConst | AssociationRateConst { use="optional" } |
reactionRadius | Radius[1] |
degreeOfDiffusionControl | DegreeOfDiffusionControl { use="optional" } |
MesoRD will read the SBML file, and if it finds an
MicroscopicParamter
field use
the microscopic parameters to calculate new association- and
dissociation rate constants and then update them in the global
parameter table. This means that the value for the association
and dissociation rate presented in final parameter list in the
MesoRD is after corrective
scaling. The calculations of the new association and
dissociation rates are executed in accordance with the theory in
[Fange et al. 2010] and is described in the section called “
Scale dependent association rate constants
”
The example below shows a hypothetical association and dissociation of A and B using scale dependent reaction rates.
Example 3.6. Reaction Definitions with scale dependent reaction rates.
<listOfReactions> <reaction id="Reaction1" reversible="false"> <listOfReactants> <speciesReference species="A"/> <speciesReference species="B"/> </listOfReactants> <listOfProducts> <speciesReference species="C"/> </listOfProducts> <kineticLaw> <math xmlns="http://www.w3.org/1998/Math/MathML"> <apply> <times/> <ci>ka</ci> <ci>A</ci> <ci>B</ci> </apply> </math> </kineticLaw> <annotation> <MesoRD:microscopicParameters xmlns:MesoRD="http://www.icm.uu.se"> <MesoRD:associationRateConstant MesoRD:rate="7.5672e9" MesoRD:units="pMps"/> <MesoRD:reactionRadius MesoRD:size="10" MesoRD:units="nm"/> </MesoRD:microscopicParameters> </annotation> </reaction> <reaction id="Reaction2" reversible="false"> <listOfReactants> <speciesReference species="C"/> </listOfReactants> <listOfProducts> <speciesReference species="A"/> <speciesReference species="B"/> </listOfProducts> <kineticLaw> <math xmlns="http://www.w3.org/1998/Math/MathML"> <apply> <times/> <ci>kd</ci> <ci>C</ci> </apply> </math> </kineticLaw> </reaction> <listOfReactions>
SBML provides events for modelling instantaneous, discontinuous change in a set of variables of any type. Events are triggered by certain conditions. Events are also not supported by MesoRD.
SBML allows the definition of named mathematical functions that may be used throughout the rest of a model. This is a feature MesoRD does not support.
Rules in SBML are mathematical expressions used in combination with any equations derived from the reactions. Rules can be used to establish constraints between variables, define variable values in terms of other variables or define the rate of change of a variable. Rules are not supported at all by MesoRD.
[6] The recently added SBML feature SpeciesType is not yet implemented in MesoRD
[7] Rather, defining a part of a real cell compartment as a MesoRD compartment has proven to be very useful to create specific initial distributions of molecules or for monitoring the time evolution of a specific part of a cell.
[8] The latest SBML standard implements a feature called SpeciesType which may actually solve this problem, MesoRD does, however, not yet support this feature