libSBML
Version 3.2.0 released 20 August 2008
Sarah Keating, Ben Bornstein, Akiya Jouraku, and Michael Hucka
LibSBML is an open-source programming library designed to help you read, write, manipulate, translate, and validate SBML files and data streams. It is not an application itself (though it does come with example programs), but rather a library you can embed in your own applications.
LibSBML understands all Levels and Versions of SBML, as well as the SBML Layout proposal by Gauges, Rost, Sahle and Wegner. It's written in ISO C and C++ but can be used from all the languages listed in the right-hand box.
Why use libSBML?
Why not simply use an off-the-shelf XML parser? In some cases this approach may be appropriate. However, there are many reasons to prefer libSBML. Here are just a few:
- Architecture. LibSBML's object model and API are designed around SBML and the operations that are commonly needed when working with SBML.
- Features. LibSBML offers powerful features, such as detecting overconstrained models, dimensional analysis and unit checking, access to SBML
<annotation>elements as XML objects, and a parser abstraction layer (dubbed LIBLAX) that allows nearly seamless use of any one of three popular XML parsing libraries: Xerces, Expat, and libxml2.
- Efficiency. LibSBML is more efficient in memory use than an ordinary XML DOM. The memory consumption difference between libSBML and the Xerces-C++ XML DOM representation is dramatic.
- Portability. The LibSBML code is also very portable. It runs and is supported on Linux (multiple variants), MS Windows (native), and Mac OS X.
Please cite the paper if you use libSBML
Article citations are crucial to our academic careers. If you use libSBML and you publish papers about your software, we ask that you please cite the libSBML paper:
Bornstein, B. J., Keating, S. M., Jouraku, A., and Hucka M. (2008) LibSBML: An API Library for SBML. Bioinformatics, 24(6):880–881, doi:10.1093/bioinformatics/btn051.
SBML Contributors
LibSBML has been developed and supported for many years and is the result of hard work by many people. We especially thank the following contributors (in alphabetical order):
- Frank Bergmann
- Bill Denny
- Christoph Flamm
- Akira Funahashi
- Ralph Gauges
- Martin Ginkel
- Alex Gutteridge
- Stefan Hoops
- Ben Kovitz
- Rainer Machné
- Nicolas Rodriguez


