Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

LibSBML - open source software development

189 views

Published on

A talk on the development of libSBML as an open source software project and issues that need to be considered.

Published in: Education
  • Be the first to comment

  • Be the first to like this

LibSBML - open source software development

  1. 1. EBI is an Outstation of the European Molecular Biology Laboratory. Sarah Keating LibSBML
  2. 2. Overview 1. Brief overview of SBML 2. Evolution of libSBML 3. Does libSBML benefit SBML ? 4. Interlude 5. Users 6. Development 7. Issues
  3. 3. Overview 1. Brief overview of SBML 2. Evolution of libSBML 3. Does libSBML benefit SBML ? 4. Interlude 5. Users 6. Development 7. Issues
  4. 4. Overview 1. Brief overview of SBML 2. Evolution of libSBML 3. Does libSBML benefit SBML ? 4. Interlude 5. Users 6. Development 7. Issues
  5. 5. What are the outcomes of modelling/simulation ?
  6. 6. Models many forms What are the outcomes of modelling/simulation ?
  7. 7. How do we communicate a model ? Publish a paper
  8. 8. 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: dsp dt dc csp dt ds ⋅⋅−= ⋅⋅= PROBLEMS What is the value of p ? Is this a typo ? How do we communicate a model ?
  9. 9. Publish code How do we communicate a model ?
  10. 10. Code for various models How do we communicate a model ?
  11. 11. Potential software How do we communicate a model ?
  12. 12. How do we communicate a model ?
  13. 13. How do we communicate a model ?
  14. 14. Hard, if not impossible, to reproduce a model UNLESS Interoperable data format How do we communicate a model ?
  15. 15. 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
  16. 16. 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
  17. 17. 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
  18. 18. Overview 1. Brief overview of SBML 2. Evolution of libSBML 3. Does libSBML benefit SBML ? 4. Interlude 5. Users 6. Development 7. Issues
  19. 19. Evolution of libSBML 2000 2001 2002 SBML Project begins 20
  20. 20. Evolution of libSBML 2000 2001 2002 20 SBML L1V1 SBML Project begins
  21. 21. Evolution of libSBML 2001 2002 2003 SBML L1V1
  22. 22. Evolution of libSBML 2001 2002 2003 SBML L1V1
  23. 23. Evolution of libSBML 2002 2003 V1 2004
  24. 24. Evolution of libSBML 2002 2003 V1 2004 libSBML-1.0.0
  25. 25. What is libSBML ?
  26. 26. • API library for working with SBML What is libSBML ?
  27. 27. What is libSBML ? libSBML-1 allowed you to • read
  28. 28. What is libSBML ? libSBML-1 allowed you to • read • create
  29. 29. What is libSBML ? libSBML-1 allowed you to • read • create • manipulate
  30. 30. What is libSBML ? libSBML-1 allowed you to • read • create • manipulate • write
  31. 31. What is libSBML ? libSBML-1 allowed you to • read • create • manipulate • write • validate
  32. 32. • Standard ANSI C libSBML-1 LGPL licence What is libSBML ?
  33. 33. Evolution of libSBML 2002 2003 V1 2004 libSBML-1.0.0
  34. 34. Evolution of libSBML 2002 2003 V1 2004 libSBML-1.0.0 SBML L2V1
  35. 35. Evolution of libSBML 2002 2003 V1 2004 libSBML-1.0.0 SBML L2V1 libSBML-2.0.0
  36. 36. What is libSBML ? libSBML-2 allowed you to • read • create • manipulate • write • validate
  37. 37. What is libSBML ? libSBML-2 allowed you to • read • create • manipulate • write • validate • convert between levels/versions L1V1 L2V1
  38. 38. • Standard ANSI C++ libSBML-2 LGPL licence What is libSBML ?
  39. 39. • Standard ANSI C++ libSBML-2 LGPL licence What is libSBML ? C Java Python
  40. 40. Evolution of libSBML 2002 2003 V1 2004 libSBML-1.0.0 SBML L2V1 libSBML-2.0.0
  41. 41. Evolution of libSBML 2002 2003 V1 2004 libSBML-1.0.0 SBML L2V1 libSBML-2.0.0 SBML L1V2
  42. 42. Evolution of libSBML 2002 2003 2004 libSBML-1.0.0 SBML L2V1 libSBML-2.0.0 SBML L2V1 20
  43. 43. Evolution of libSBML 2002 2003 2004 libSBML-1.0.0 SBML L2V1 libSBML-2.0.0 SBML L2V1 20 libSBML-2.2.0
  44. 44. Evolution of libSBML 2003 2004 bSBML-1.0.0 SBML L2V1 libSBML-2.0.0 SBML L2V1 2005 libSBML-2.2.0 20
  45. 45. Evolution of libSBML 2004 ML-2.0.0 L L2V1 2005 libSBML-2.2.0 2006 20
  46. 46. Evolution of libSBML 2004 ML-2.0.0 L L2V1 2005 libSBML-2.2.0 2006 20 libSBML-3.0.0-a
  47. 47. libSBML-3 What is libSBML ?
  48. 48. libSBML-3 What is libSBML ? Significantly changed the API
  49. 49. libSBML-3 What is libSBML ? Significantly changed the API ... Not good for users
  50. 50. Evolution of libSBML 2004 ML-2.0.0 L L2V1 2005 libSBML-2.2.0 2006 20 libSBML-3.0.0-a
  51. 51. Evolution of libSBML 04 2.0.0 2V1 2005 libSBML-2.2.0 2006 2007 libSBML-3.0.0-a SBML L2V2
  52. 52. Evolution of libSBML 5 2006 2007 libSBML-3.0.0-a SBML L2V2 2008
  53. 53. Evolution of libSBML 5 2006 2007 libSBML-3.0.0-a SBML L2V2 2008 libSBML-3.0.0
  54. 54. Evolution of libSBML 5 2006 2007 libSBML-3.0.0-a SBML L2V2 2008 libSBML-3.0.0 SBML L2V3
  55. 55. Evolution of libSBML 006 2007 BML-3.0.0-a SBML L2V2 2008 libSBML-3.0.0 SBML L2V3 2009
  56. 56. Evolution of libSBML 006 2007 BML-3.0.0-a SBML L2V2 2008 libSBML-3.0.0 SBML L2V3 2009 SBML L2V4
  57. 57. Evolution of libSBML 007 2008 libSBML-3.0.0 SBML L2V3 2009 SBML L2V4 2010
  58. 58. Evolution of libSBML 007 2008 libSBML-3.0.0 SBML L2V3 2009 SBML L2V4 2010 libSBML-4.0.0-b1
  59. 59. libSBML-4 What is libSBML ? Significantly changed the API
  60. 60. libSBML-4 What is libSBML ? Significantly changed the API This time we involved the user
  61. 61. Evolution of libSBML 007 2008 libSBML-3.0.0 SBML L2V3 2009 SBML L2V4 2010 libSBML-4.0.0-b1
  62. 62. Evolution of libSBML 2008 .0.0 V3 2009 SBML L2V4 2010 libSBML-4.0.0-b1 20
  63. 63. Evolution of libSBML 2008 .0.0 V3 2009 SBML L2V4 2010 libSBML-4.0.0-b1 20 libSBML 3.4.0
  64. 64. Evolution of libSBML 2008 .0.0 V3 2009 SBML L2V4 2010 libSBML-4.0.0-b1 20 libSBML 3.4.0 libSBML 4.0.0
  65. 65. Evolution of libSBML 2009 V4 2010 -4.0.0-b1 2011 libSBML 3.4.0 libSBML 4.0.0 20
  66. 66. Evolution of libSBML 2009 V4 2010 -4.0.0-b1 2011 libSBML 3.4.0 libSBML 4.0.0 20 SBML L3V1
  67. 67. Evolution of libSBML 2009 V4 2010 -4.0.0-b1 2011 libSBML 3.4.0 libSBML 4.0.0 20 SBML L3V1 libSBML-4.2.0
  68. 68. Evolution of libSBML 2009 V4 2010 -4.0.0-b1 2011 libSBML 3.4.0 libSBML 4.0.0 20 SBML L3V1 libSBML-4.2.0 libSBML-5.0.0
  69. 69. libSBML-5 What is libSBML ?
  70. 70. libSBML-5 What is libSBML ? Seamlessly replaced libSBML-4
  71. 71. libSBML-5 What is libSBML ? Seamlessly replaced libSBML-4 but added modular support for SBML L3 packages
  72. 72. Evolution of libSBML 2009 V4 2010 -4.0.0-b1 2011 libSBML 3.4.0 libSBML 4.0.0 20 SBML L3V1 libSBML-4.2.0 libSBML-5.0.0
  73. 73. Evolution of libSBML 2010 2011 libSBML 4.0.0 2012 SBML L3V1 libSBML-4.2.0 libSBML-5.0.0 20 libSBML-5.6.0
  74. 74. • Standard ANSI C++ libSBML-5.6 LGPL licence What is libSBML ? C Java Python C# MATLAB Octave Perl R Ruby
  75. 75. Overview 1. Brief overview of SBML 2. Evolution of libSBML 3. Does libSBML benefit SBML ? 4. Interlude 5. Users 6. Development 7. Issues
  76. 76. Does libSBML benefit SBML ?
  77. 77. 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 ?
  78. 78. 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 ?
  79. 79. 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 ?
  80. 80. Does libSBML benefit SBML ?
  81. 81. Benefits of libSBML
  82. 82. Benefits of libSBML • closely mimic SBML structure
  83. 83. Benefits of libSBML Model UML diagram from SBML specification
  84. 84. Benefits of libSBML
  85. 85. 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
  86. 86. Benefits of libSBML
  87. 87. Benefits of libSBML
  88. 88. Benefits of libSBML • closely mimic SBML structure
  89. 89. Benefits of libSBML • closely mimic SBML structure • API for working with annotations
  90. 90. Minimum Information Requested In the Annotation of biochemical Models Benefits of libSBML
  91. 91. 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
  92. 92. 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
  93. 93. Benefits of libSBML ModelHistory class
  94. 94. Benefits of libSBML CVTerm class
  95. 95. 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>lenov@ebi.ac.uk</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>
  96. 96. 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
  97. 97. <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
  98. 98. Benefits of libSBML • closely mimic SBML structure • API for working with annotations
  99. 99. Benefits of libSBML • closely mimic SBML structure • interfaces to different languages • API for working with annotations
  100. 100. • Standard ANSI C++ language bindings C Java Python C# MATLAB Octave Perl R Ruby Benefits of libSBML Contributed by users
  101. 101. language bindings Benefits of libSBML PHP Pascal ???
  102. 102. Benefits of libSBML • closely mimic SBML structure • interfaces to different languages • API for working with annotations
  103. 103. Benefits of libSBML • closely mimic SBML structure • XML parsers • interfaces to different languages • API for working with annotations
  104. 104. Benefits of libSBML Abstract XML Layer XML Parser XMLInput Stream XMLOutput Stream XMLToken XMLNode XMLAttributes Expat Attributes Xerces Attributes LibXML Attributes
  105. 105. Benefits of libSBML • closely mimic SBML structure • XML parsers • interfaces to different languages • API for working with annotations
  106. 106. Benefits of libSBML • closely mimic SBML structure • XML parsers • develop in line with specification • interfaces to different languages • API for working with annotations
  107. 107. Benefits of libSBML
  108. 108. Two branches for release Benefits of libSBML
  109. 109. Benefits of libSBML
  110. 110. Benefits of libSBML Stable branch - code from accepted SBML - installers for the above
  111. 111. Benefits of libSBML
  112. 112. Benefits of libSBML Experimental branch - src - code from core and any L3 packages with code under development
  113. 113. Benefits of libSBML
  114. 114. Benefits of libSBML Experimental branch - binaries - built with ALL experimental code
  115. 115. Benefits of libSBML • closely mimic SBML structure • XML parsers • develop in line with specification • interfaces to different languages • API for working with annotations
  116. 116. 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
  117. 117. Overview 1. Brief overview of SBML 2. Evolution of libSBML 3. Does libSBML benefit SBML ? 4. Interlude 5. Users 6. Development 7. Issues
  118. 118. Interlude
  119. 119. Interlude keating-libsbml-taster SPIN_OSS – shared folder - keating
  120. 120. Overview 1. Brief overview of SBML 2. Evolution of libSBML 3. Does libSBML benefit SBML ? 4. Interlude 5. Users 6. Development 7. Issues
  121. 121. Who are our users ?
  122. 122. Who are our users ?
  123. 123. Who are our users ? docs 4% src code 24% installers 72% libSBML downloads
  124. 124. 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
  125. 125. 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)
  126. 126. 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)
  127. 127. 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%
  128. 128. Who are our users ? MATLAB R Python 2.5 Python 2.6 Python 2.7 Python 3.2 Targeted win installers
  129. 129. Who are our users ? Targeted win installers R Python 2.5 Python 2.6 Python 2.7 Python 3.2
  130. 130. Who are our users ? VCell – The Virtual Cell iBioSim
  131. 131. Overview 1. Brief overview of SBML 2. Evolution of libSBML 3. Does libSBML benefit SBML ? 4. Interlude 5. Users 6. Development 7. Issues
  132. 132. Development
  133. 133. Development Test driven development 10200 unit tests 43500 assertions 4330 invalid SBML files – test validation code
  134. 134. Development Simplified Wrapper and Interface Generator language interfaces Java Python C# Perl RubyR
  135. 135. Development Autogenerate test code for bindings Nightly builds Stable release cycle (ish) Autogenerate documentation
  136. 136. Development Open Build Service – create linux installers Future ... Include libSBML in the linux distributions Code refactoring
  137. 137. Overview 1. Brief overview of SBML 2. Evolution of libSBML 3. Does libSBML benefit SBML ? 4. Interlude 5. Users 6. Development 7. Issues
  138. 138. Issues we face as Open Source Developers
  139. 139. Issues we face as Open Source Developers How well do we know our users ?
  140. 140. Issues we face as Open Source Developers How well do we know our users ? What are THEIR requirements ?
  141. 141. Issues we face as Open Source Developers How well do we know our users ? How do our design decisions impact them ?
  142. 142. Who are our users ? Should we do this ?
  143. 143. Issues we face as Open Source Developers Which OS/versions/compilers etc. to support ?
  144. 144. 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.
  145. 145. Issues we face as Open Source Developers Dependence on other third party developers How do we keep up ?
  146. 146. Issues we face as Open Source Developers Managing community contributions Who has access ? What if they break stuff ?
  147. 147. Issues we face as Open Source Developers Managing community contributions Attribution
  148. 148. 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
  149. 149. Issues we face as Open Source Developers
  150. 150. 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
  151. 151. Community
  152. 152. • 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
  153. 153. 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

×