libSBML 3.0.0 beta_2
We are pleased to announce the release of a second beta version of
libSBML. This beta_2 release of libSBML 3.0.0 supports all levels and
versions of SBML, including the draft Level 2 Version 3.
At this time, only the C++ and C interfaces are available. The other
language bindings will take more time to update. We are making the
release available now rather than waiting longer so that early
adopters can start experimenting with it and giving us feedback. Our
goal is to identify remaining issues, produce documentation, and
finish the language bindings in time for the final issuing of SBML
Level 2 Version 3. We have tested this release on over 1000 SBML
models (including all those in BioModels Database), so hopefully all
major bugs have already been squashed, but we want to know about all
issues and comments you have. Please report problems using the new
The release is currently available from the SourceForge download page:
There are two versions: one a source code-only release, and one that
includes prebuilt Windows binaries for use with both Xerces and Expat.
Highlights of significant changes in this release include the
following (and note that some of these are not backward compatible
- There is a new XML parser abstraction layer, and identical
functionality and XML syntax checking is now available no matter
whether you use Expat, Xerces or libxml2 as the underlying XML
- LibSBML now implements a thorough system for dimensional analysis
and checking units of quantities in a model. The validation rules
for units that are specified in SBML Level 2 Vers. 2 and Vers. 3
are fully implemented, including the checking units in
mathematical formulas. (This alone represents months of effort.)
- Annotations and notes are now read and manipulated as XML structures
instead of text strings. Further, in order to facilitate the
support of MIRIAM compatible annotations, there are new object
classes ModelHistory and CVTerm. These classes facilitate the
creation and addition of RDF annotations inside <annotation>
elements by providing parsing and manipulation functions that treat
the annotations in terms of XMLNode objects implemented by the new
XML layer. Both ModelHistory and CVTerm follow the general libSBML
format of providing getters and setters for each variable stored
within the class.
- LibSBML 3.0.0 implements a number of changes to memory handling
improve consistency and memory management. Examples: LibSBML
methods now copy objects passed to them, and classes implement
virtual copy constructors via .clone() methods.
- The Level 2 and Level 1 object models are now unified. All objects
have .getSBMLDocument(), .getModel(), .getLevel(), and
.getVersion(), among other things. Also, the interface to SBML
rules abstracts away some of the individual rule type (assignment,
rate, algebraic) differences.
- FunctionDefinitions now have convenience methods to access function
arguments (getArgument() and getNumArguments()) and the function
body (getBody()) directly. Arguments may be accessed by position or
variable name. Corresponding functions for the libSBML C interface
exist as well.
- Errors/Warnings/Fatals have been amalgamated into one Error class
with a Severity field that stores information relating to the type
of error. There is only one printError function but the individual
errors can be queried to determine their severity.
- LibSBML 3.0.0 implements all the validation rules defined in the
SBML specifications for L2 Version 2 and Version 3.
- The Trigger and Delay elements of an Event are now properly
implemented as SBase objects. (They were previously not.)
As many of you know, Ben Bornstein has not been actively working on
libSBML since mid-2006. Please remember to send your bug reports
using the tracker URL given above, or firstname.lastname@example.org,
*not* to Ben directly.
Finally, we want to thank Ralph Gauges for his tremendous amount of
effort and time in debugging and fixing problems, implementing many
missing methods, and updating the layout extension code in time for
Sarah Keating & Mike Hucka
To manage your sbml-discuss list subscription, visit
For a web interface to the sbml-discuss mailing list, visit
For questions or feedback about the sbml-discuss list,