A tutorial about SBML and
SBML Level 2 Version 2
Michael Hucka
Biological Network Modeling Center, Beckman Institute California Institute of Technology Pasadena, California, USA
Sarah Keating
Science & Technology Research Institute University of Hertfordshire Hateld, Hertfordshire, UK
UH
1
Tutorial outline
1. Some background about SBML 2. SBML language basics 3. LibSBML and other SBML software infrastructure 4. Additional SBML features and SBML Level 2 Version 2 differences 5. A brief survey of SBML-compatible software 6. Closing comments and discussions
The background of SBML
Computational modeling is essential
Computational modeling is essential
Computational modeling is increasingly crucial to biology
Computational modeling is essential
Computational modeling is increasingly crucial to biology Not a new idea!
Experiencing heightened interest thanks to systems biology
Computational modeling is essential
Computational modeling is increasingly crucial to biology Not a new idea!
Experiencing heightened interest thanks to systems biology
Serves the scientic method
Enables quantitative hypothesis testing
Forces you to quantify every assumption & make it testable
Enables precise knowledge transfer Reduces ambiguities
Computational modeling is essential
Computational modeling is increasingly crucial to biology Not a new idea!
Experiencing heightened interest thanks to systems biology
Serves the scientic method
Enables quantitative hypothesis testing
Forces you to quantify every assumption & make it testable
Enables precise knowledge transfer Reduces ambiguities
Sign of rising popularity: new journals starting up
E.g., PLoS Computational Biology
Computational models
Software tools to aid modeling
Software tools to aid modeling
General-purpose environments
Mathematica, MATLAB, etc.
Software tools to aid modeling
General-purpose environments
Mathematica, MATLAB, etc.
Special-purpose software
model editing simulation analysis visualization
Software tools to aid modeling
General-purpose environments
Mathematica, MATLAB, etc.
Special-purpose software
model editing simulation analysis visualization
CellDesigner
Software tools to aid modeling
General-purpose environments
Mathematica, MATLAB, etc.
Special-purpose software
model editing simulation analysis visualization
CellDesigner
JDesigner
Software tools to aid modeling
General-purpose environments
Mathematica, MATLAB, etc.
Special-purpose software
model editing simulation analysis visualization
COPASI
CellDesigner
JDesigner
Ability to exchange models is critical
Ability to exchange models is critical
Simply publishing equations is not enough
Dont want to transcribe equations from papers Want a common le format
Ability to exchange models is critical
Simply publishing equations is not enough
Dont want to transcribe equations from papers Want a common le format
Not an earth-shattering idea!
But curiously, such a format hadnt existed before year 2000
Each tool had its own unique proprietary format
SBML = Systems Biology Markup Language
SBML = Systems Biology Markup Language
Machine-readable format for representing computational models
SBML = Systems Biology Markup Language
Machine-readable format for representing computational models Suitable for reaction networks
Arbitrary rate functions
2A+BC CD+F ...
SBML = Systems Biology Markup Language
Machine-readable format for representing computational models Suitable for reaction networks
Arbitrary rate functions
Declarative, not procedural
2A+BC CD+F ...
SBML = Systems Biology Markup Language
Machine-readable format for representing computational models Suitable for reaction networks
Arbitrary rate functions
Declarative, not procedural Models can also include
2A+BC CD+F ...
Compartments (i.e., where chemical substances are located) Mathematical extras (assignments, explicit different eqs) Discontinuous events with arbitrary triggers
Fundamentally an exchange format
For transferring models between software tools Not meant as a systems internal format Not suited for representing
Experimental results Numerical simulation results
Now the de facto standard
Supported by >100 systems
Simulators, databases, analysis tools, editing tools
Accepted by journals
Nature PLoS Computational Biology BMC
Used in texbooks & courses
SBML Levels
Levels are meant to coexist Level 1: mostly basic compartmental modeling Level 2: signicantly more featurese.g.:
User-dened functions Events Types for chemical species and compartments Initial conditions, constraints, other ddly bits
Level 3: now (back) in development
Latest: SBML Level 2 Version 2
Final version released September 26
Embodies years of discussions and practical experience Most software currently only supports L2V1, not L2V2 yet
But L2V2 support will come soon
A general overview of SBML
How is SBML used?
How is SBML used?
Meant to provide an exchange language for software tools
How is SBML used?
Meant to provide an exchange language for software tools Dont write SBML by hand if you can help it
(SBML is in XML, so you could write it by hand if you had to)
<listOfReactants> <speciesReference species="MKKK"/> </listOfReactants> <listOfProducts> <speciesReference species="MKKK_P"/> </listOfProducts> <listOfModifiers> <modifierSpeciesReference species="MAPK_PP"/> </listOfModifiers> <kineticLaw> <math xmlns="http://www.w3.org/1998/Math/MathML"> <apply> <divide/> <apply> <times/> <ci> V1 </ci> <ci> MKKK </ci> </apply> <apply> <times/> <apply>
How is SBML used?
Meant to provide an exchange language for software tools Dont write SBML by hand if you can help it
(SBML is in XML, so you could write it by hand if you had to)
Software tools that speak SBML provide a higher-level interface
How is SBML used?
Meant to provide an exchange language for software tools Dont write SBML by hand if you can help it
(SBML is in XML, so you could write it by hand if you had to)
Software tools that speak SBML provide a higher-level interface Applications usually have their own native format
Import/export SBML rather than natively save as SBML
Some important SBML constructs
Basic elements
species compartment parameter reaction
species A
reaction 1 species B reaction 2
Additional useful elements
unit denition rule function denition event initial assignment constraint
compartment_1
reaction 3 reaction 4 species C
species D
compartment_2
Example #1
One reaction, 2A
B + C, where rate is given as k[A(t)]2
Initial conditions: [A(0)] = 3, [B(0)] = 0, [C(0)] = 0.
Basic SBML document structure
<?xml version="1.0" encoding="UTF-8"?> <sbml xmlns="http://www.sbml.org/sbml/level2/version2" level="2" version="2"> ... </sbml>
Format: plain text (technically UTF-8) Extension: usually .xml (not .sbml)
The Model container
Overall structure of the XML rendition of a Model instance
<model id=m name=Example> <listOfFunctionDefinitions> ... </listOfFunctionDefinitions> <listOfUnitDefinitions> ... </listOfUnitDefinitions> <listOfCompartmentTypes> ... </listOfCompartmentTypes> <listOfSpeciesTypes> ... </listOfSpeciesTypes> <listOfSpecies> ... </listOfSpecies> ...
Overall structure of the XML rendition of a Model instance
<model id=m name=Example> <listOfFunctionDefinitions> ... </listOfFunctionDefinitions> <listOfUnitDefinitions> ... </listOfUnitDefinitions> <listOfCompartmentTypes> ... </listOfCompartmentTypes> <listOfSpeciesTypes> ... </listOfSpeciesTypes> <listOfSpecies> ... </listOfSpecies> ...
Overall structure of the XML rendition of a Model instance
<model id=m name=Example> <listOfFunctionDefinitions> ... </listOfFunctionDefinitions> <listOfUnitDefinitions> ... </listOfUnitDefinitions> <listOfCompartmentTypes> ... </listOfCompartmentTypes> <listOfSpeciesTypes> ... </listOfSpeciesTypes> <listOfSpecies> ... </listOfSpecies> ...
Overall structure of the XML rendition of a Model instance
<model id=m name=Example> <listOfFunctionDefinitions> ... </listOfFunctionDefinitions> <listOfUnitDefinitions> ... </listOfUnitDefinitions> <listOfCompartmentTypes> ... </listOfCompartmentTypes> <listOfSpeciesTypes> ... </listOfSpeciesTypes> <listOfSpecies> ... </listOfSpecies> ...
Overall structure of the XML rendition of a Model instance
<model id=m name=Example> <listOfFunctionDefinitions> ... </listOfFunctionDefinitions> <listOfUnitDefinitions> ... </listOfUnitDefinitions> <listOfCompartmentTypes> ... </listOfCompartmentTypes> <listOfSpeciesTypes> ... </listOfSpeciesTypes> <listOfSpecies> ... </listOfSpecies> ...
order is signicant
listOf______s
Lists like Parameter[0..*] in the denition are translated into
<listOfParameters> <parameter ... /> <parameter ... /> ... </listOfParameters>
listOf_____s are derived from SBase
Therefore, can have metaid, <notes>, <annotation>
SBase
Abstract type Most object structures in SBML are derived from SBase
<notes> allows human-readable annotations to be added
Format is XHTML
<annotation> allows machine-readable annotations to be added
Applications can put their own data into itjust needs to be XML Guidelines are discussed later in this tutorial
metaid is for references by annotations
Common feature: identiers and names
Most elements have both an id and a name eld
Identier eld has restricted syntax: abc123 or _abc123 or a_b_c_1 etc.
The id is what you use in expressions
Identier
species id compartment id parameter id function id reaction id (L2v2)
Meaning
quantity of the species size of the compartment numerical value a call to that function rate of the reaction
Value of name is unrestricted (exception: no newlines or carriage returns) Must assign a value to id on most objects, but name is always optional
Some tools let you use names & auto-generate ids (e.g., COPASI)
Representation of mathematical expressions in SBML
SBML Level 1: mathematical expressions encoded as text strings
In the XML, have formula=2*S1
SBML Level 2: math expressions encoded using MathML 2.0
Standard XML format for encoding mathematical expressions SBML uses only a subset of the content portion of MathML
MathML content always must be placed in a <math> element
MathML operators in SBML
Most common operators available:
plus, minus, power, exp, etc.
relational operators: eq, neq, gt, lt, geq, leq
piecewise pi, exponentiale many others
Complete list on p. 21 of L2V2 specication document
References in MathML
References to numbers are through the <cn> element:
<math xmlns="http://www.w3.org/1998/Math/MathML"> <apply> <times/> <cn type="integer"> 42 </cn> <cn type="real"> 3.3 </cn> </apply> </math>
References to identiers are through the <ci> element:
<math xmlns="http://www.w3.org/1998/Math/MathML"> <apply> <times/> <cn> 0.014 </cn> <ci> S1 </ci> </apply> </math>
References in MathML
References to numbers are through the <cn> element:
<math xmlns="http://www.w3.org/1998/Math/MathML"> <apply> <times/> <cn type="integer"> 42 </cn> <cn type="real"> 3.3 </cn> </apply> </math>
References to identiers are through the <ci> element:
<math xmlns="http://www.w3.org/1998/Math/MathML"> <apply> <times/> <cn> 0.014 </cn> <ci> S1 </ci> </apply> </math>
References in MathML
References to numbers are through the <cn> element:
<math xmlns="http://www.w3.org/1998/Math/MathML"> <apply> <times/> <cn type="integer"> 42 </cn> <cn type="real"> 3.3 </cn> </apply> </math>
References to identiers are through the <ci> element:
<math xmlns="http://www.w3.org/1998/Math/MathML"> <apply> <times/> <cn> 0.014 </cn> <ci> S1 </ci> </apply> </math>
References in MathML
References to numbers are through the <cn> element:
<math xmlns="http://www.w3.org/1998/Math/MathML"> <apply> <times/> <cn type="integer"> 42 </cn> <cn type="real"> 3.3 </cn> </apply> </math>
References to identiers are through the <ci> element:
<math xmlns="http://www.w3.org/1998/Math/MathML"> <apply> <times/> <cn> 0.014 </cn> <ci> S1 </ci> </apply> </math>
Compartment basics
id & name spatialDimensions
3, 2, 1, 0 (default: 3)
size
Floating-point number giving the compartment size (volume or other) Identier of the units of measure for the size Identier of the compartment outside of this one
Boolean: is the compartment size constant? (Default: true)
units outside outside
constant
Compartment example
... <listOfCompartments> <compartment id="cytoplasm" size="5"/> <compartment id="nucleus" size="1" outside="cytoplasm" /> </listOfCompartments> ... <listOfSpecies> <species id="X" compartment="nucleus" initialAmount="1" /> <species id="Y" compartment="cytoplasm" initialAmount="1" /> </listOfSpecies> ...
Species basics
Species basics
id & name compartment
Identier of compartment where species is located Floating-point number giving initial quantity as molecular/item count Floating-point number giving initial quantity as concentration
initialAmount initialConcentration
More precisely: (units of substance)/(units of size)
Species basics
id & name compartment
Identier of compartment where species is located Mutually exclusive initialAmount Floating-point number giving initial quantity as molecular/item count Floating-point number giving initial quantity as concentration
initialConcentration
More precisely: (units of substance)/(units of size)
Species basics
id & name compartment
Identier of compartment where species is located Mutually exclusive initialAmount Floating-point number giving initial quantity as molecular/item count Floating-point number giving initial quantity as concentration
initialConcentration
More precisely: (units of substance)/(units of size)
boundaryCondition
Boolean: should a rate of change equation be constructed for the species based on the system of reactions? (Default: false) Boolean: is the species quantity constant? (Default: false)
constant
More about species
Think of species as a pool of molecules of the same type Species must be located in some compartment
If have the same species in multiple compartments, must have separate species denitions for each
... but in L2V2, can use SpeciesType to relate them together
If doing stochastic model, best dene species in terms of amounts
Species example
<listOfSpecies> <species id="S1" initialConcentration="0" compartment="c1" boundaryCondition="true" /> <species id="S3" initialConcentration="10" compartment="c2" constant="true"/> <species id="S4" initialConcentration="4.5" compartment="c2"/> </listOfSpecies>
Parameter basics
id & name value
The oating-point value of the parameter
units
Identier of the units of measure for the value
constant
Boolean: is the value of the parameter constant? (Default: true)
Parameter example
<listOfParameters> <parameter id="k1" value="0.5"/> <parameter id="k2" value="0.1"/> </listOfParameters>
Reaction basics
References to dened species
Reaction basics
id & name
<listOfReactants> (optional) <listOfProducts> (optional) <listOfModifiers> (optional) <kineticLaw> (optional)
References to dened species
Reaction basics
id & name
<listOfReactants> (optional) <listOfProducts> (optional) <listOfModifiers> (optional) <kineticLaw> (optional)
reversible
References to dened species
Boolean: is the reaction reversible? (Default: true)
About reactants, products and modiers
About reactants, products and modiers
All species must be dened in the models top-level list of species
Reactions simply refer back to the species denitions
About reactants, products and modiers
All species must be dened in the models top-level list of species
Reactions simply refer back to the species denitions
Reaction can have any number of reactants or products, but must have at least one reactant or product
About reactants, products and modiers
All species must be dened in the models top-level list of species
Reactions simply refer back to the species denitions
Reaction can have any number of reactants or products, but must have at least one reactant or product A species can appear in both the list of reactants & list of products
Effective stoichiometry is then: (stoich.-as-react.) - (stoich.-as-prod.)
E.g.: 2A
A+B
==> effective stoichiometry of A is +1
About reactants, products and modiers
All species must be dened in the models top-level list of species
Reactions simply refer back to the species denitions
Reaction can have any number of reactants or products, but must have at least one reactant or product A species can appear in both the list of reactants & list of products
Effective stoichiometry is then: (stoich.-as-react.) - (stoich.-as-prod.)
E.g.: 2A
A+B
==> effective stoichiometry of A is +1
A species labeled as modier may also appear in list of reactants and/or productsnot an either/or situation
About reactants, products and modiers
All species must be dened in the models top-level list of species
Reactions simply refer back to the species denitions
Reaction can have any number of reactants or products, but must have at least one reactant or product A species can appear in both the list of reactants & list of products
Effective stoichiometry is then: (stoich.-as-react.) - (stoich.-as-prod.)
E.g.: 2A
A+B
==> effective stoichiometry of A is +1
A species labeled as modier may also appear in list of reactants and/or productsnot an either/or situation A modier species appears in the rate expression but is neither created nor destroyed in that reaction
About reactants, products and modiers
All species must be dened in the models top-level list of species
Reactions simply refer back to the species denitions
Reaction can have any number of reactants or products, but must have at least one reactant or product A species can appear in both the list of reactants & list of products
Effective stoichiometry is then: (stoich.-as-react.) - (stoich.-as-prod.)
E.g.: 2A
A+B
==> effective stoichiometry of A is +1
A species labeled as modier may also appear in list of reactants and/or productsnot an either/or situation A modier species appears in the rate expression but is neither created nor destroyed in that reaction
no specic role assumed for modiers
Lists of reactants, products and modiers
Most import common eld: species
species value must be id of existing species dened in the model
ModierSpeciesReference does not add any more elds SpeciesReference adds elds for stoichiometry
Lists of reactants, products and modiers
Most import common eld: species
species value must be id of existing species dened in the model
ModierSpeciesReference does not add any more elds SpeciesReference adds elds for stoichiometry
Lists of reactants, products and modiers
Most import common eld: species
species value must be id of existing species dened in the model
ModierSpeciesReference does not add any more elds SpeciesReference adds elds for stoichiometry
Stoichiometries
Normally a stoichiometry is an integer or oating-point scalar value
Default value is 1
<reaction id="Dimerization" reversible="false"> <listOfReactants> <speciesReference species="P" stoichiometry="2"/> </listOfReactants> <listOfProducts> <speciesReference species="P2" /> </listOfProducts> ...
For more complicated stoichiometries, use stoichiometryMath
MathML expression Mutually exclusive with stoichiometry, use one or the other
Stoichiometries
Normally a stoichiometry is an integer or oating-point scalar value
Default value is 1
<reaction id="Dimerization" reversible="false"> <listOfReactants> <speciesReference species="P" stoichiometry="2"/> </listOfReactants> <listOfProducts> <speciesReference species="P2" /> </listOfProducts> ...
For more complicated stoichiometries, use stoichiometryMath
MathML expression Mutually exclusive with stoichiometry, use one or the other
Stoichiometries
Normally a stoichiometry is an integer or oating-point scalar value
Default value is 1
<reaction id="Dimerization" reversible="false"> <listOfReactants> <speciesReference species="P" stoichiometry="2"/> </listOfReactants> <listOfProducts> <speciesReference species="P2" /> </listOfProducts> ...
For more complicated stoichiometries, use stoichiometryMath
MathML expression Mutually exclusive with stoichiometry, use one or the other
KineticLaw basics
<math>
MathML expression for the speed of the reaction Units must be substance/time
<listOfParameters>
Denes parameters whose identiers have scope local to the reaction only
Not visible from any other reaction, or rest of model Identiers shadow global identiers
Data type is same Parameter as for global parameters
KineticLaw basics
<math>
MathML expression for the speed of the reaction Units must be substance/time not concentration/time
<listOfParameters>
Denes parameters whose identiers have scope local to the reaction only
Not visible from any other reaction, or rest of model Identiers shadow global identiers
Data type is same Parameter as for global parameters
Interpreting reactions
Why are SBML rate expression not identical to rate laws?
Consider simple example:
What does this mean?
S1 S2 rate law = k [S1 ]
V1 S1 S2 V2
d[S2 ] d[S1 ] = = k [S1 ] dt dt But what if V1 = V2 ? For example, what if V2 = 3V1 ?
How molecules leave & enter each compartment?
Look at number of molecules of each species in each compartment:
nS1 = [S1 ] V1
nS2 = [S2 ] V2
k [S1 ] V1 molecules leave the rst compartment 3 k [S1 ] V1 molecules enter the second compartment
Kinetic law in SBML
Rate expressions are substance/time, not substance/size/time Conversion for basic cases is simple:
Multiply by volume of compartment where reactants are located:
rate = k [S1 ] V1
Express rates of changes of reactants & products in terms of substances:
dnS1 = k1 [S1 ] V1 dt dnS2 = k1 [S1 ] V1 dt
Can easily recover concentrations:
nS1 [S1 ] = V1
nS2 [S2 ] = V2
Kinetic law in SBML
Rate expressions are substance/time, not substance/size/time Conversion for basic cases is simple:
Multiply by volume of compartment where reactants are located:
rate = k [S1 ] V1
Express rates of changes of reactants & products in terms of substances:
dnS1 = k1 [S1 ] V1 dt dnS2 = k1 [S1 ] V1 dt
Can easily recover concentrations:
moles items mass dimensionless
nS1 [S1 ] = V1
nS2 [S2 ] = V2
Example #2
S1 S2 S3
Rate laws:
r1 = k1 [S1 ]
r2 = k2 [S2 ]
Compartments: Compartment volumes: Initial concentrations: Volumes: Constants:
S1 V1 S1 = 4 V1 = 1
S2 V2
S3 V3 S2 = 10 S3 = 0
V2 = 0.5 V3 = 2 k2 = 0.7
k1 = 0.2
Example #2: interpretation of differential equations
Express rates of change of species quantities (as amounts, not concentrations):
dnS1 = r1 dt dnS2 = + r1 r2 dt dnS3 = + r2 dt
= k1 [S1 ] V1 = +k1 [S1 ] V1 k2 [S2 ] V2 = + k2 [S2 ] V2
LibSBML and other SBML software infrastructure
Software infrastructure supporting use of SBML
http://sbml.org/wiki/icsb2006_tutorial
libSBML
Ben Bornstein and Sarah Keating
Application Programming Interface read write validate translate
manipulate
Languages ISO C and C++ java python perl lisp MATLAB octave
(coming in libSBML-3)
XML Parsers Xerces Expat libXML
(coming in libSBML-3)
Platforms Linux Windows Mac OS
Why use libSBML ?
Memory efficient
Why use libSBML ? SBML validation
XML checks syntax checks ordering checks consistency checks
Why use libSBML ? High level interface
Query a model
Model->getNumReactions() Compartment->isSetSize()
Retrieve information from a model
Model->getSpecies(s1) Species->getInitialConcentration()
Why use libSBML ? High level interface
Add information to a model
Species->setInitialConcentration(2.0) Compartment->setSize(5.6)
Create a model
Model->create(my_model) Model->addCompartment(Compartment&)
Why use libSBML ? Math support
Infix (Level 1)
k*A*B
MathML (Level 2)
<apply> <times/> <ci> k </ci> <ci> A </ci> <ci> B </ci> </apply>
Getting started
http://sourceforge.net/project/showfiles.php?group_id=7 1971&package_id=71670
http://sbml.org/wiki/icsb2006_tutorial Download libSBML
Online validator
Ben Bornstein
http://sbml.org/validator/
SBMLToolbox
Sarah Keating
An SBML toolbox for MATLAB users
Why use SBMLToolbox ?
import SBML into MATLAB represent models as MATLAB structures
Why use SBMLToolbox ?
mimic libSBML API examples of simulation
Why use SBMLToolbox ?
GUI Model inspector/creator save/load models to MATLAB data files
NOT a systems biology toolbox
provides import/export between SBML and MATLAB provide examples of how MATLAB functionality can be applied to SBML models
Acknowledgements
Ben Kovitz Stefan Hoops Christoph Flamm Rainer Machne Martin Ginkel Mike Hucka Anyone who caught bugs, made suggestions, discussed
Break
Additional SBML features and SBML Level 2 Version 2 differences
Units in SBML
All mathematical entities can have units dened or implied. 2 ways:
Key object structures have explicit elds for setting units:
Structure Compartment Species Parameter Event KineticLaw Units elds
units substanceUnits, spatialSizeUnits units timeUnits substanceUnits, timeUnits
removed in L2V2
Built-in default units
Identifer substance volume area length time Default mole litre square metre metre second Possible scalable units mole, item, gram, kilogram, dimensionless litre, cubic metre, dimensionless square metre, dimensionless metre, dimensionless second, dimensionless
Redening units
Same mechanism for dening new units and redening the built-ins:
Unit denition creates a new unit identier (the value of id)
Unit identier namespace is global but different from space of other ids
Approach is multiplicative composition
E.g., moles/(litre second) =
mole
UnitDenition Unit
1 litre
Unit
1 second
Unit
The meaning of elds in Unit
yb {ub } = y {u} w {ub } {u}
The meaning of elds in Unit
yb {ub } = y {u} w {ub } {u}
Quantity y in original units u
The meaning of elds in Unit
yb {ub } = y {u}
Units you want to convert into
w {ub } {u}
Quantity y in original units u
The meaning of elds in Unit
Resultant quantity
yb {ub } = y {u}
Units you want to convert into
w {ub } {u}
Quantity y in original units u
The meaning of elds in Unit
Resultant quantity
yb {ub } = y {u}
Units you want to convert into
w {ub } {u}
SBML lets you dene this
Quantity y in original units u
The meaning of elds in Unit
yb {ub } = y {u} w {ub } {u}
The meaning of elds in Unit
yb {ub } = y {u} w {ub } {u}
{u} = (multiplier 10scale {ub })exponent
The meaning of elds in Unit
yb {ub } = y {u} w {ub } {u}
{u} = (multiplier 10scale {ub })exponent
UnitKind is an enumeration of base units (SI + a few extras)
mole, kelvin, second, metre, litre, gram, kilogram, item, dimensionless, etc.
Example unit denition
Denition of foot:
foot = (0.3048 "100 "metre)1 yb metres = 0.3048 "y feet
<listOfUnitDefinitions> <unitDefinition id="foot"> <listOfUnits> <unit kind="metre" multiplier="0.3048" exponent=1 scale=0/> </listOfUnits> </unitDefinition> </listOfUnitDefinitions>
More on using units
Default model-wide units
Redene the special units time, substance, volume, length, area
<listOfUnitDefinitions> <unitDefinition id="volume"> <listOfUnits> <unit kind="litre" scale="-3"/> </listOfUnits> </unitDefinition> <unitDefinition id="substance"> <listOfUnits> <unit kind="mole" scale="-3"/> </listOfUnits> </unitDefinition> </listOfUnitDefinitions>
Tools usually provide a more direct way
Changes to unit system in L2V2
No offset on UnitDenition No predened unit Celsius
Modeler needs to include necessary conversions explicitly
Could use a function denition Could use an assignment rule
AssignmentRule, RateRule, AlgebraicRule
Rules in SBML dene extra mathematical expressions
E.g.: if need to express additional mathematical relationships beyond what is implied by the system of reactions
3 subtypes:
Rule type algebraic assignment rate General form Example 0 = S1 + S2 x=y+z dS/dt = 10.5
0 = f (W) x = f (V) dx/dt = f (W)
Rules dene relationships that hold at all times
Rules in the context of the overall system
dS1 /dt = r1 + r2 + r3 + . . . dS2 /dt = r1 + r5 + . . . ... 0 = f1 (W) 0 = f2 (W) ... x = g1 (W) y = g2 (W) ... dm/dt = h1 (W) dq/dt = h2 (W) ...
Rules in the context of the overall system
Equations derived from reaction denitions
dS1 /dt = r1 + r2 + r3 + . . . dS2 /dt = r1 + r5 + . . . ... 0 = f1 (W) 0 = f2 (W) ... x = g1 (W) y = g2 (W) ... dm/dt = h1 (W) dq/dt = h2 (W) ...
Rules in the context of the overall system
dS1 /dt = r1 + r2 + r3 + . . . dS2 /dt = r1 + r5 + . . . ... 0 = f1 (W) 0 = f2 (W) ... x = g1 (W) y = g2 (W) ... dm/dt = h1 (W) dq/dt = h2 (W) ...
Algebraic rules
Rules in the context of the overall system
dS1 /dt = r1 + r2 + r3 + . . . dS2 /dt = r1 + r5 + . . . ... 0 = f1 (W) 0 = f2 (W) ... x = g1 (W) y = g2 (W) ... dm/dt = h1 (W) dq/dt = h2 (W) ...
Assignment rules
Rules in the context of the overall system
dS1 /dt = r1 + r2 + r3 + . . . dS2 /dt = r1 + r5 + . . . ... 0 = f1 (W) 0 = f2 (W) ... x = g1 (W) y = g2 (W) ... dm/dt = h1 (W) dq/dt = h2 (W) ...
Rate rules
Rules in the context of the overall system
dS1 /dt = r1 + r2 + r3 + . . . dS2 /dt = r1 + r5 + . . . ... 0 = f1 (W) 0 = f2 (W) ... x = g1 (W) y = g2 (W) ... dm/dt = h1 (W) dq/dt = h2 (W) ...
Rules and equations from reactions are taken together
SBML object structures for rules
E.g.:
<assignmentRule variable="k"> <math xmlns="http://www.w3.org/1998/Math/MathML"> <apply> <divide/> <ci> k3 </ci> <ci> k2 </ci> </apply> </math> </assignmentRule>
Rule semantics and restrictions
AssignmentRule
Assignment to a species, compartment or parameter overrides the initial value given in the denition Variable must not be set by both an AssignmentRule and a RateRule Variable must not be set by both an AssignmentRule and an InitialAssignment
RateRule
Variable must not be set by both an AssignmentRule and a RateRule
Overall restrictions on the whole model:
The model must not contain algebraic loops The model must not be overdetermined
Can only happen if model contains algebraic rules Can be assessed statically (L2V2 spec contains one possible approach)
User-dened functions
All references to model variables must be passed as arguments References to other user-dened functions must be for functions dened earlier in the le
I.e., no forward references to functions No recursive or mutually-recursive functions
(Point of all this: can implement functions as macro substitutions)
User-dened functions: example
<functionDefinition id="pow3"> <math xmlns="http://www.w3.org/1998/Math/MathML"> <lambda> <bvar><ci> x </ci></bvar> <apply> <power/> <ci> x </ci> <cn> 3 </cn> </apply> </lambda> </math> </functionDefinition> ... <listOfReactions> <reaction id="reaction_1"> ... <kineticLaw> <math xmlns="http://www.w3.org/1998/Math/MathML"> <apply> <ci> pow3 </ci> <ci> S1 </ci> </apply> </math> </kineticLaw> ... </reaction> </listOfReactions>
User-dened functions: example
<functionDefinition id="pow3"> <math xmlns="http://www.w3.org/1998/Math/MathML"> <lambda> <bvar><ci> x </ci></bvar> <apply> <power/> <ci> x </ci> <cn> 3 </cn> </apply> </lambda> </math> </functionDefinition> ... <listOfReactions> <reaction id="reaction_1"> ... <kineticLaw> <math xmlns="http://www.w3.org/1998/Math/MathML"> <apply> <ci> pow3 </ci> <ci> S1 </ci> </apply> </math> </kineticLaw> ... </reaction> </listOfReactions>
User-dened functions: example
<functionDefinition id="pow3"> <math xmlns="http://www.w3.org/1998/Math/MathML"> <lambda> <bvar><ci> x </ci></bvar> <apply> <power/> <ci> x </ci> <cn> 3 </cn> </apply> </lambda> </math> </functionDefinition> ... <listOfReactions> <reaction id="reaction_1"> ... <kineticLaw> <math xmlns="http://www.w3.org/1998/Math/MathML"> <apply> <ci> pow3 </ci> <ci> S1 </ci> </apply> </math> Uses <ci> to reference function identier </kineticLaw> ... </reaction> </listOfReactions>
User-dened functions: example
<functionDefinition id="pow3"> <math xmlns="http://www.w3.org/1998/Math/MathML"> <lambda> <bvar><ci> x </ci></bvar> <apply> <power/> Uses <bvar> to pass arguments <ci> x </ci> <cn> 3 </cn> </apply> </lambda> </math> </functionDefinition> ... <listOfReactions> <reaction id="reaction_1"> ... <kineticLaw> <math xmlns="http://www.w3.org/1998/Math/MathML"> <apply> <ci> pow3 </ci> <ci> S1 </ci> </apply> </math> </kineticLaw> ... </reaction> </listOfReactions>
Events
Denes discontinuous changes in model variables
EventAssignment variable can be
species compartment parameter
Trigger and delay conditions are full mathematical expressions
Usage points: events
Triggered on transition from false to true
Not possible for event to trigger at t=0 no transition in variable values
Assignment math expression evaluated when event is red
Effect can be delayed (expressed using delay expression)
Cannot create or destroy species/compartments/reactions/etc.
But you could use a variable that acts as a switch: x*switch
Warning: not well supported by most software tools (yet)
Compartments
There is no default size! Extremely good practice to always set the size
Can use size eld, assignment rules, or (in L2V2) initial assignments
size value only allowed if spatialDimensions != 0
Units of size must be consistent
Species
Units of substance and spatial size can be set separately
hasOnlySubstanceUnits
Boolean: should species quantity always be as substance or substance/size? Important: setting initialAmount or initialConcentration does not imply units will be substance or substance/size, respectively
Species
Units of substance and spatial size can be set separately
hasOnlySubstanceUnits
Boolean: should species quantity always be as substance or substance/size? Important: setting initialAmount or initialConcentration does not imply units will be substance or substance/size, respectively
interpretation is concentration unless hasOnlySubstanceUnits=true
Species: boundary conditions and constant species
Some intuitive explanations:
Boundary condition: when a species is a reactant or product in one or more reactions, but its quantity is not changed by those reactions
E.g., when a chemical is buffered in an experimental set-up, or the modeler wants to assume there is an innite quantity of the species ODE (or equivalent) shouldnt be constructed based on the reactions
But SBML rules and other constructs may still change it
Constant: if a species quantity is constant Different from being a boundary conditionboundaryCondition ag says whether an ODE should be constructed
Species: constant and boundaryCondition
Reactions
Usage points: reactions (specic)
Reversibility:
Because kinetic law is optional, its useful to have separate ag
Some types of analyses can be done without simulation or kinetic law
reversible ag should be true only if rate expression represents
combined effect of forward and backward reaction
Converse: if false, its a statement that the reaction only proceeds in the forward direction
Caution: not clear how to dene reversible reactions for stochastic simulation. Best practice: always dene 2 reactions explicitly in that case.
New in SBML Level 2 Version 2
Added in Level 2 Version 2
Compartment types and species types
L2V2 only Does not affect mathematical interpretation
<listOfSpeciesTypes> <speciesType id="ATP"/> </listOfSpeciesTypes> ... <listOfSpecies> <species id="ATP_in_cytosol" speciesType="ATP" compartment="cytosol"/> <species id="ATP_in_nucleus" speciesType="ATP" compartment="nucleus"/> </listOfSpecies>
Compartment types and species types
L2V2 only Does not affect mathematical interpretation
<listOfSpeciesTypes> <speciesType id="ATP"/> </listOfSpeciesTypes> ... <listOfSpecies> <species id="ATP_in_cytosol" speciesType="ATP" compartment="cytosol"/> <species id="ATP_in_nucleus" speciesType="ATP" compartment="nucleus"/> </listOfSpecies>
Usage points: how do you assign initial values?
Multiple approaches:
1. Use the appropriate value eld on an element (most portable approach)
Element species compartment parameter Initial value eld(s) initialConcentration initialAmount size value
Limitation: scalar values only, not a mathematical expression
2. Use assignment rules (somewhat less portable) Mathematical expression
3. Use Initial Assignment in Level 2 Version 2 Mathematical expression
Initial assignments
Overrides value given in object denition
But the object denition must still be provided
Applies for t <= 0 Cannot have both an initial assignment and an assignment rule for the same identier
Constraints
Allows stating assumptions under which simulation is valid Intuitively: if the math expression is true, model is in a valid state
As soon as the expression evalues to false, the model is in an invalid state SBML does not require a particular action to be taken
But it would be a good idea for the software system to stop or at least indicate the model has failed a constraint
sboTerm
SBO = Systems Biology Ontology
Independent, international, open effort of BioModels.net Consortium Occupies a space not lled by other ontologies
Primarily for describing rate laws and constituents 1. Classication of rate laws
Each term includes a mathematical function denition
2. Controlled vocabulary for the roles of reaction participants E.g.: substrate, catalyst, competitive inhibitor, etc.
3. Controlled vocabulary for the roles of quantitative parameters E.g.: Hill coefcient
SBO Browser
http://biomodels.net/SBO
by Melanie Curtot at EBI
Terms are machine-readable
Terms are machine-readable
Terms are machine-readable
Terms are machine-readable
Terms are machine-readable
Terms are machine-readable
Terms are machine-readable
Terms are machine-readable
Terms are machine-readable
Terms are machine-readable
can insert in SBML
Select SBML constructs have sboTerm
Values of sboTerm for different SBML constructs
Annotations
Applications can add data to each element in SBML Must have only one element enclosing an applications data
Each application should put its data under a separate element
Format for annotations
Content of <annotation> must be single top-level namespace Theres a recommended format for
1. referring to controlled vocabulary terms and database identiers for describing biological and biochemical entities 2. describing the creator of a model and its modication history
Uses RDF & a restricted set of Dublin Core to encode relationships Specic BioModels qualier names
http://biomodels.net
See Sec. 6 in L2V2 specication
Break
A brief survey of SBMLcompatible software
Summary of several software tools: general features
Package MathSBML COPASI CellDesigner SBML ODE Solver Jarnac/ JDesigner SBToolbox SimBiology Dizzy
Win Mac Lin Web
Interface Text Forms Graphical, Forms
Environment Mathematica
ODE x x x x x
Stoch
x x x x x x x x
x x x x
x x x x x
API & cmd line Text, Graphical
x x x x
x x x
x x x
Text Text, Graphical Text, Forms
MATLAB MATLAB
x x x
Summary of several software tools: SBML details
Package MathSBML COPASI CellDesigner SBML ODE Solver Jarnac/JDesigner SBToolbox SimBiology x
Algebraic Units? Events? Rules? Delays? Functions?
Special Features all of Mathematica sensitivity analysis, parameter scan., MCA, optimization parameter scan., sensitivity analysis parameter scan., sensitivity analysis compact language, MCA optimization, sensitivity analysis, all of MATLAB full-blown MATLAB product
x x x x
x x
part. part. part. part.
x x part. x x x
x x x x x
Where to nd the software
MathSBML: http://sbml.org/software/mathsbml
Author: Bruce Shapiro (Caltech/JPL/BNMC) Most current documentation is online, not in download! Authors: P. Mendes, S.Hoops (Virginia Tech), S. Sahle, R.Gauges (EML Heidelberg) Authors: R. Machne, C. Flamm (U.Vienna) Author: Herbert Sauro (KGI) Author: Henning Schmidt (Chalmers, Sweden)
COPASI: http://copasi.org SBML ODE Solver: http://www.tbi.univie.ac.at/~raim/odeSolver/ Jarnac, JDesigner: http://sbw.kgi.edu SBToolbox: http://www.sbtoolbox.org/ CellDesigner: http://celldesigner.org SimBiology: http://mathworks.com Dizzy: http://www.systemsbiology.org/Technology/ Data_Visualization_and_Analysis/Dizzy
Closing comments and discussions
SBML = Systems Biology Markup Language
SBML = Systems Biology Markup Language
Machine-readable format for representing computational models
SBML = Systems Biology Markup Language
Machine-readable format for representing computational models Declarative, not procedural
2A+BC CD+F ...
SBML = Systems Biology Markup Language
Machine-readable format for representing computational models
2A+BC CD+F Models can also include ... Compartments (i.e., where chemical substances are located)
Declarative, not procedural
Mathematical extras (assignments, explicit different eqs) Discontinuous events with arbitrary triggers
Current de facto standard
Current de facto standard
Successful as a model exchange language
100+ software systems worldwide
Including commercial developers: MathWorks, TERANODE, etc.
Used by international consortia, industry, academia Used in educational materials
Current de facto standard
Successful as a model exchange language
100+ software systems worldwide
Including commercial developers: MathWorks, TERANODE, etc.
Used by international consortia, industry, academia Used in educational materials
Successful as glue
Coalesced a community of software developers Allows interchange where none existed before
Between people, between software, between researchers at many different levels
Current de facto standard
Successful as a model exchange language
100+ software systems worldwide
Including commercial developers: MathWorks, TERANODE, etc.
Used by international consortia, industry, academia Used in educational materials
Successful as glue
Coalesced a community of software developers Allows interchange where none existed before
Between people, between software, between researchers at many different levels
Of course, SBML isnt without problems
SBML evolution continues
SBML evolution continues
Current development process is informal
SBML Editors seek consensus and created integrated specication Polling & voting by community for major decisions
SBML evolution continues
Current development process is informal
SBML Editors seek consensus and created integrated specication Polling & voting by community for major decisions
New SBML process coming
Borrow ideas from World Wide Web Consortium & other orgs Architectural board with larger membership SBML Editors voted in for limited terms Implement better-dened, regimented process
Calls for proposals, etc. Voting, etc.
Upcoming SBML meetings
SBML Forum Meeting 2006 Oct. 12-13 (after ICSB, in Tokyo)
See http://sbml.org/workshops for more info
SBML Hackathon, June 2007, University of Newcastle (UK) SBML Forum Meeting 2007, Oct. 5-6, Long Beach, California (USA)
See http://icbs-2007.org
Keep informed!
Join [email protected] (low-volume, broadcast-only) Join sbml-discuss (higher volume, discussions & debates) Join libsbml-discuss (discussions & help about libsbml) See http://sbml.org/forums
Thank you for attending!
And a big thanks to our funding agencies:
NIH National Institute of General Medical Sciences (USA) National Science Foundation (USA) International Joint Research Program of NEDO (Japan) JST ERATO Kitano Symbiotic Systems Project (Japan) JST ERATO-SORST Program (Japan) Japanese Ministry of Agriculture Japanese Ministry of Education, Culture, Sports, Science and Tech. BBSRC e-Science Initiative (UK) DARPA IPTO Bio-Computation Program (USA) Air Force Ofce of Scientic Research (USA) STRI, University of Hertfordshire (UK) Beckman Institute, Caltech