LibSBML - open source software development
-
Upload
sarah-keating -
Category
Education
-
view
201 -
download
5
Transcript of LibSBML - open source software development
EBI is an Outstation of the European Molecular Biology Laboratory.
Sarah Keating
LibSBML
Overview 1. Brief overview of SBML
2. Evolution of libSBML
3. Does libSBML benefit SBML ?
4. Interlude
5. Users
6. Development
7. Issues
Overview 1. Brief overview of SBML
2. Evolution of libSBML
3. Does libSBML benefit SBML ?
4. Interlude
5. Users
6. Development
7. Issues
Overview 1. Brief overview of SBML
2. Evolution of libSBML
3. Does libSBML benefit SBML ?
4. Interlude
5. Users
6. Development
7. Issues
What are the outcomes of modelling/simulation ?
Models
many forms
What are the outcomes of modelling/simulation ?
How do we communicate a model ?
Publish a paper
Species s with initial concentration 2 nM reacts with species c with initial concentration 5 nM with a rate of p*s*c. Here are the equations:
dspdtdc
cspdtds
⋅⋅−=
⋅⋅= PROBLEMS
What is the value of p ?
Is this a typo ?
How do we communicate a model ?
Publish code
How do we communicate a model ?
Code for various models
How do we communicate a model ?
Potential software
How do we communicate a model ?
How do we communicate a model ?
How do we communicate a model ?
Hard, if not impossible, to reproduce a model
UNLESS
Interoperable data format
How do we communicate a model ?
A machine-readable format for representing computational models in systems biology – a tool neutral exchange format
Brief (very brief) overview of SBML
More information on SBML: http://www.cds.caltech.edu/~mhucka/tmp/mhucka-ccb-2012.pdf
Independent of modelling formalism
Brief (very brief) overview of SBML
<?xml version="1.0" encoding="UTF-8"?> <sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" level="3" version="1"> <model id="dimerization“ timeUnits="second" > <listOfCompartments> <compartment id="Cell" size="1e-15" spatialDimensions="3”/> </listOfCompartments> <listOfSpecies> <species id="P" compartment="Cell" initialAmount="301”/> <species id="P2" compartment="Cell" initialAmount="0" /> </listOfSpecies> <listOfInitialAssignments> <initialAssignment symbol="y"> <math xmlns="http://www.w3.org/1998/Math/MathML"> <cn> 3.2 </cn> </math> </initialAssignment> </listOfInitialAssignments> </model> </sbml>
Expressed in XML
Independent of modelling formalism
Brief (very brief) overview of SBML
<?xml version="1.0" encoding="UTF-8"?> <sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" level="3" version="1"> <model id="dimerization“ timeUnits="second" > <listOfCompartments> <compartment id="Cell" size="1e-15" spatialDimensions="3”/> </listOfCompartments> <listOfSpecies> <species id="P" compartment="Cell" initialAmount="301”/> <species id="P2" compartment="Cell" initialAmount="0" /> </listOfSpecies> <listOfInitialAssignments> <initialAssignment symbol="y"> <math xmlns="http://www.w3.org/1998/Math/MathML"> <cn> 3.2 </cn> </math> </initialAssignment> </listOfInitialAssignments> </model> </sbml>
Expressed in XML
Overview 1. Brief overview of SBML
2. Evolution of libSBML
3. Does libSBML benefit SBML ?
4. Interlude
5. Users
6. Development
7. Issues
Evolution of libSBML
2000 2001 2002 SBML Project begins
20
Evolution of libSBML
2000 2001 2002 20
SBML L1V1
SBML Project begins
Evolution of libSBML
2001 2002 2003
SBML L1V1
Evolution of libSBML
2001 2002 2003
SBML L1V1
Evolution of libSBML
2002 2003
V1
2004
Evolution of libSBML
2002 2003
V1
2004
libSBML-1.0.0
What is libSBML ?
• API library for working with SBML
What is libSBML ?
What is libSBML ?
libSBML-1 allowed you to • read
What is libSBML ?
libSBML-1 allowed you to • read
• create
What is libSBML ?
libSBML-1 allowed you to • read
• create
• manipulate
What is libSBML ?
libSBML-1 allowed you to • read
• create
• manipulate
• write
What is libSBML ?
libSBML-1 allowed you to • read
• create
• manipulate
• write
• validate
• Standard ANSI C libSBML-1
LGPL licence
What is libSBML ?
Evolution of libSBML
2002 2003
V1
2004
libSBML-1.0.0
Evolution of libSBML
2002 2003
V1
2004
libSBML-1.0.0
SBML L2V1
Evolution of libSBML
2002 2003
V1
2004
libSBML-1.0.0
SBML L2V1
libSBML-2.0.0
What is libSBML ?
libSBML-2 allowed you to • read
• create
• manipulate
• write
• validate
What is libSBML ?
libSBML-2 allowed you to • read
• create
• manipulate
• write
• validate
• convert between levels/versions
L1V1 L2V1
• Standard ANSI C++ libSBML-2
LGPL licence
What is libSBML ?
• Standard ANSI C++ libSBML-2
LGPL licence
What is libSBML ?
C Java Python
Evolution of libSBML
2002 2003
V1
2004
libSBML-1.0.0
SBML L2V1
libSBML-2.0.0
Evolution of libSBML
2002 2003
V1
2004
libSBML-1.0.0
SBML L2V1
libSBML-2.0.0
SBML L1V2
Evolution of libSBML
2002 2003 2004
libSBML-1.0.0
SBML L2V1
libSBML-2.0.0
SBML L2V1
20
Evolution of libSBML
2002 2003 2004
libSBML-1.0.0
SBML L2V1
libSBML-2.0.0
SBML L2V1
20
libSBML-2.2.0
Evolution of libSBML
2003 2004
bSBML-1.0.0
SBML L2V1
libSBML-2.0.0
SBML L2V1
2005
libSBML-2.2.0 20
Evolution of libSBML
2004
ML-2.0.0
L L2V1
2005
libSBML-2.2.0 2006 20
Evolution of libSBML
2004
ML-2.0.0
L L2V1
2005
libSBML-2.2.0 2006 20
libSBML-3.0.0-a
libSBML-3
What is libSBML ?
libSBML-3
What is libSBML ?
Significantly changed the API
libSBML-3
What is libSBML ?
Significantly changed the API
... Not good for users
Evolution of libSBML
2004
ML-2.0.0
L L2V1
2005
libSBML-2.2.0 2006 20
libSBML-3.0.0-a
Evolution of libSBML
04
2.0.0
2V1
2005
libSBML-2.2.0 2006 2007
libSBML-3.0.0-a
SBML L2V2
Evolution of libSBML
5 2006 2007
libSBML-3.0.0-a
SBML L2V2
2008
Evolution of libSBML
5 2006 2007
libSBML-3.0.0-a
SBML L2V2
2008
libSBML-3.0.0
Evolution of libSBML
5 2006 2007
libSBML-3.0.0-a
SBML L2V2
2008
libSBML-3.0.0
SBML L2V3
Evolution of libSBML
006 2007
BML-3.0.0-a
SBML L2V2
2008
libSBML-3.0.0
SBML L2V3
2009
Evolution of libSBML
006 2007
BML-3.0.0-a
SBML L2V2
2008
libSBML-3.0.0
SBML L2V3
2009
SBML L2V4
Evolution of libSBML
007 2008
libSBML-3.0.0
SBML L2V3
2009
SBML L2V4
2010
Evolution of libSBML
007 2008
libSBML-3.0.0
SBML L2V3
2009
SBML L2V4
2010
libSBML-4.0.0-b1
libSBML-4
What is libSBML ?
Significantly changed the API
libSBML-4
What is libSBML ?
Significantly changed the API
This time we involved the user
Evolution of libSBML
007 2008
libSBML-3.0.0
SBML L2V3
2009
SBML L2V4
2010
libSBML-4.0.0-b1
Evolution of libSBML
2008
.0.0
V3
2009
SBML L2V4
2010
libSBML-4.0.0-b1 20
Evolution of libSBML
2008
.0.0
V3
2009
SBML L2V4
2010
libSBML-4.0.0-b1 20
libSBML3.4.0
Evolution of libSBML
2008
.0.0
V3
2009
SBML L2V4
2010
libSBML-4.0.0-b1 20
libSBML3.4.0
libSBML4.0.0
Evolution of libSBML
2009
V4
2010
-4.0.0-b1 2011
libSBML3.4.0
libSBML4.0.0
20
Evolution of libSBML
2009
V4
2010
-4.0.0-b1 2011
libSBML3.4.0
libSBML4.0.0
20
SBML L3V1
Evolution of libSBML
2009
V4
2010
-4.0.0-b1 2011
libSBML3.4.0
libSBML4.0.0
20
SBML L3V1
libSBML-4.2.0
Evolution of libSBML
2009
V4
2010
-4.0.0-b1 2011
libSBML3.4.0
libSBML4.0.0
20
SBML L3V1
libSBML-4.2.0 libSBML-5.0.0
libSBML-5
What is libSBML ?
libSBML-5
What is libSBML ?
Seamlessly replaced libSBML-4
libSBML-5
What is libSBML ?
Seamlessly replaced libSBML-4
but added modular support for SBML L3 packages
Evolution of libSBML
2009
V4
2010
-4.0.0-b1 2011
libSBML3.4.0
libSBML4.0.0
20
SBML L3V1
libSBML-4.2.0 libSBML-5.0.0
Evolution of libSBML
2010 2011
libSBML4.0.0
2012
SBML L3V1
libSBML-4.2.0 libSBML-5.0.0 20
libSBML-5.6.0
• Standard ANSI C++ libSBML-5.6
LGPL licence
What is libSBML ?
C Java Python C# MATLAB Octave Perl R Ruby
Overview 1. Brief overview of SBML
2. Evolution of libSBML
3. Does libSBML benefit SBML ?
4. Interlude
5. Users
6. Development
7. Issues
Does libSBML benefit SBML ?
0
50
100
150
200
250
2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012
(counted in middle of each year)
Number of tools supporting SBML
Does libSBML benefit SBML ?
0
50
100
150
200
250
2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012
(counted in middle of each year)
Number of tools supporting SBML
libSBML-1.0.0
Does libSBML benefit SBML ?
0
50
100
150
200
250
2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012
(counted in middle of each year)
Number of tools supporting SBML
libSBML-1.0.0
Does libSBML benefit SBML ?
Does libSBML benefit SBML ?
Benefits of libSBML
Benefits of libSBML
• closely mimic SBML structure
Benefits of libSBML
Model UML diagram from SBML specification
Benefits of libSBML
Benefits of libSBML SBase
id: SId name: string { use=”optional” } compartmentType: SId { use=”optional” } spatialDimensions: int { use=”optional” default=”3” } size: double { use=”optional” } units: UnitSId { use=”optional” } outside: SId { use=”optional” } constant: boolean { use=”optional” default=”true” }
Compartment
Benefits of libSBML
Benefits of libSBML
Benefits of libSBML
• closely mimic SBML structure
Benefits of libSBML
• closely mimic SBML structure
• API for working with annotations
Minimum Information
Requested In the
Annotation of biochemical Models
Benefits of libSBML
Benefits of libSBML
Standard scheme for machine-readable annotations
- Authorship, publication info
- Links to other data resources
Semantics of the mathematics
Guidelines for model quality Defined by SBML
Benefits of libSBML
Standard scheme for machine-readable annotations
- Authorship, publication info
- Links to other data resources
Semantics of the mathematics
Guidelines for model quality Within the annotation
Benefits of libSBML
ModelHistory class
Benefits of libSBML
CVTerm class
Benefits of libSBML
<rdf:RDF> <rdf:Description rdf:about="#_000001"> <dc:creator rdf:parseType="Resource"> <vCard:Family>Le Novère</vCard:Family> <vCard:Given>Nicolas</vCard:Given> <vCard:EMAIL>[email protected]</vCard:EMAIL> <vCard:Orgname>EMBL-EBI</vCard:Orgname> </dc:creator> <dcterms:created rdf:parseType="Resource"> <dcterms:W3CDTF>2005-02-02T14:56:11Z <bqmodel:is> <rdf:li rdf:resource="urn:miriam:biomodels.db:BIOMD0000000001"/> </bqmodel:is> <bqmodel:isDescribedBy> <rdf:li rdf:resource="urn:miriam:pubmed:8983160"/> </bqmodel:isDescribedBy>
Benefits of libSBML
Standard scheme for machine-readable annotations
- Authorship, publication info
Semantics of the mathematics
Guidelines for model quality Defined by SBO
- Links to other data resources
<listOfSpecies> <species id="P" compartment="Cell" initialAmount="301" hasOnlySubstanceUnits="true" boundaryCondition="false" constant="false" sboTerm="SBO:0000252"/> <species id="P2" compartment="Cell" initialAmount="0" hasOnlySubstanceUnits="true" boundaryCondition="false" constant="false" sboTerm="SBO:0000420"/> </listOfSpecies>
Benefits of libSBML
Benefits of libSBML
• closely mimic SBML structure
• API for working with annotations
Benefits of libSBML
• closely mimic SBML structure
• interfaces to different languages
• API for working with annotations
• Standard ANSI C++ language bindings
C Java Python C# MATLAB Octave Perl R Ruby
Benefits of libSBML
Contributed by users
language bindings
Benefits of libSBML
PHP
Pascal ???
Benefits of libSBML
• closely mimic SBML structure
• interfaces to different languages
• API for working with annotations
Benefits of libSBML
• closely mimic SBML structure
• XML parsers
• interfaces to different languages
• API for working with annotations
Benefits of libSBML
Abstract XML Layer
XML Parser XMLInput Stream
XMLOutput Stream
XMLToken
XMLNode
XMLAttributes
Expat Attributes
Xerces Attributes
LibXML Attributes
Benefits of libSBML
• closely mimic SBML structure
• XML parsers
• interfaces to different languages
• API for working with annotations
Benefits of libSBML
• closely mimic SBML structure
• XML parsers
• develop in line with specification
• interfaces to different languages
• API for working with annotations
Benefits of libSBML
Two branches for release
Benefits of libSBML
Benefits of libSBML
Benefits of libSBML
Stable branch - code from accepted SBML - installers for the above
Benefits of libSBML
Benefits of libSBML
Experimental branch - src - code from core and any L3 packages with code under development
Benefits of libSBML
Benefits of libSBML
Experimental branch - binaries - built with ALL experimental code
Benefits of libSBML
• closely mimic SBML structure
• XML parsers
• develop in line with specification
• interfaces to different languages
• API for working with annotations
Benefits of libSBML
• closely mimic SBML structure
• XML parsers
• develop in line with specification
• backwards compatibility
• interfaces to different languages
• API for working with annotations
Overview 1. Brief overview of SBML
2. Evolution of libSBML
3. Does libSBML benefit SBML ?
4. Interlude
5. Users
6. Development
7. Issues
Interlude
Interlude
keating-libsbml-taster
SPIN_OSS – shared folder - keating
Overview 1. Brief overview of SBML
2. Evolution of libSBML
3. Does libSBML benefit SBML ?
4. Interlude
5. Users
6. Development
7. Issues
Who are our users ?
Who are our users ?
Who are our users ?
docs 4%
src code 24%
installers 72%
libSBML downloads
Who are our users ?
Mac OS X 28%
Win 36%
Linux 36%
Figures here do not include installers that target a particular programming language (e.g. R, MATLAB)
Installer downloads
Who are our users ?
Mac OS X 28%
Win 36%
Linux-32-deb
7% Linux-32-rpm
3%
Linux-64-deb 14% Linux-64-rpm
12% Other 36%
Installer downloads
Figures here do not include installers that target a particular programming language (e.g. R, MATLAB)
Who are our users ?
Win 36%
Linux 36%
MacOSX - snow leopard
9%
Mac OS X - lion 19%
Other 28%
Installer downloads
Figures here do not include installers that target a particular programming language (e.g. R, MATLAB)
Who are our users ?
Installer downloads
Figures here do not include installers that target a particular programming language (e.g. R, MATLAB)
Mac OS X 28%
Linux 36%
Win32 17%
Win64 19%
Other 36%
Who are our users ?
MATLAB
R
Python 2.5 Python 2.6
Python 2.7 Python 3.2
Targeted win installers
Who are our users ?
Targeted win installers
R
Python 2.5
Python 2.6
Python 2.7
Python 3.2
Who are our users ?
VCell – The Virtual Cell
iBioSim
Overview 1. Brief overview of SBML
2. Evolution of libSBML
3. Does libSBML benefit SBML ?
4. Interlude
5. Users
6. Development
7. Issues
Development
Development
Test driven development
10200 unit tests
43500 assertions
4330 invalid SBML files – test validation code
Development
Simplified Wrapper and Interface Generator
language interfaces
Java Python C# Perl Ruby R
Development
Autogenerate test code for bindings
Nightly builds
Stable release cycle (ish)
Autogenerate documentation
Development
Open Build Service – create linux installers
Future ...
Include libSBML in the linux distributions
Code refactoring
Overview 1. Brief overview of SBML
2. Evolution of libSBML
3. Does libSBML benefit SBML ?
4. Interlude
5. Users
6. Development
7. Issues
Issues we face as Open Source Developers
Issues we face as Open Source Developers
How well do we know our users ?
Issues we face as Open Source Developers
How well do we know our users ?
What are THEIR requirements ?
Issues we face as Open Source Developers
How well do we know our users ?
How do our design decisions impact them ?
Who are our users ?
Should we do this ?
Issues we face as Open Source Developers
Which OS/versions/compilers etc. to support ?
Issues we face as Open Source Developers
Linux Different versions using different defaults for other programs
http://stackoverflow.com/questions/10960805/apt-get-install-for-different-python-versions
ubuntu 10.04 with python2.6 by default
Ideally Maverick would support Python 2.6, 2.7, and 3.2 (beta), with Python 2.7 as the default.
Issues we face as Open Source Developers
Dependence on other third party developers
How do we keep up ?
Issues we face as Open Source Developers
Managing community contributions
Who has access ?
What if they break stuff ?
Issues we face as Open Source Developers
Managing community contributions
Attribution
Issues we face as Open Source Developers
How well do we know our users ?
Which OS/versions/compilers etc. to support ?
Dependence on other third party developers
Managing community contributions
Issues we face as Open Source Developers
Lucian Smith
Mike Hucka
Frank Bergmann
Linda Taddeo
Nicolas Rodriguez
Sarah Keating
SBML Team
Previous members:
Akira Funahashi; Andrew Finney; Ben Bornstein; Akiya Jouraku; Ben Kovitz; Herbert Sauro; Maria Schilstra; Jo Matthews; Hamid Bolouri;
John Doyle; Hiroaki Kitano
U. of Washington, USA
Caltech, USA
University of Heidelberg, DE
Caltech, USA
EMBL-EBI, UK
EMBL-EBI, UK
Community
• Gordon Ball • Alex Gutteridge
• Bill Denny • Stefan Hoops
• Christoph Flamm • Totte Karlsson
• Akira Funahashi • Moriyoshi Koizumi
• Ralph Gauges • Rainer Machné
• Martin Ginkel • Nicolas Rodriguez
Acknowledgements
Acknowledgements
๏ NIH National Institute of General Medical Sciences (USA) ๏ JST ERATO Kitano Symbiotic Systems Project (Japan) (to 2003) ๏ National Science Foundation (USA) ๏ International Joint Research Program of NEDO (Japan) ๏ JST ERATO-SORST Program (Japan) ๏ Japanese Ministry of Agriculture ๏ Japanese Ministry of Educ., Culture, Sports, Science and Tech. ๏ EMBL-EBI (UK) ๏ BBSRC e-Science Initiative (UK) ๏ DARPA IPTO Bio-SPICE Bio-Computation Program (USA) ๏ Air Force Office of Scientific Research (USA) ๏ STRI, University of Hertfordshire (UK) ๏ Beckman Institute, Caltech (USA) ๏ Molecular Sciences Institute (USA)
SBML Funding over the years