Awesome
libSBML<img width="22%" align="right" src=".graphics/libsbml-logo-and-name.svg">
LibSBML is an open-source library for working with SBML (the Systems Biology Markup Language). It is written in C++ and provides language bindings for many other programming languages.
Table of contents
- Introduction
- Installation
- Usage
- Relationships to other similar tools
- Getting help
- Contributing
- License
- Authors and history
- Acknowledgments
Introduction
LibSBML is a programming library that helps you read, write, manipulate, translate, and validate files and data streams in the SBML (Systems Biology Markup Language) format. Developers can embed the library in their applications, saving themselves the work of implementing their own parsing, manipulation and validation software. At the API level, libSBML provides the same interface to data structures independently of whether the model originated in SBML Level 1, 2 or 3. LibSBML understands all Levels and Versions of SBML, and supports all SBML Level 3 packages.
Why not simply use a generic XML parsing library? A specialized library such as libSBML or JSBML offers many advantages over using a generic XML library directly. Here are some:
-
Domain-specific object model. LibSBML's object model and API are designed around SBML and the operations that are commonly needed when working with SBML.
-
Validation facilities. LibSBML implements all the validation rules defined in the SBML specifications, and performs additional validation of its own. (These validation rules are not part of the SBML schemas.)
-
Conversion facilities: LibSBML can convert between most Levels and Versions of SBML, and can interconvert between certain kinds of SBML constructs.
-
Broad language support: LibSBML is written in ISO standard C++ and provides APIs for the languages C, C++, C#, Java, JavaScript, MATLAB, Perl, PHP, Python, R, and Ruby.
-
Other features. LibSBML offers powerful features such as reading/writing compressed SBML files, detecting overconstrained models, dimensional analysis and unit checking, and an API for SBML
<annotation>
content.
LibSBML works on Linux, Windows, MacOS X, and other operating systems, and can use any of the three most popular XML parser libraries: Xerces, Expat, and libxml2.
Installation
A stable release of libSBML includes support for SBML Level 3 Core and all accepted SBML 3 packages, as well as support for packages that are currently under development. An experimental-only release only updates code for the SBML Level 3 packages under development.
Before the year 2020, we used SourceForge for our code repository and software downloads. Though you can find the source code releases on GitHub, our binary software releases for libSBML are currently still done from SourceForge at the following location:
<p align="center"><b> ↓ ↓ ↓<br> → → → http://sourceforge.net/projects/sbml/files/libsbml/ ← ← ←<br> ↑ ↑ ↑ </b></p>We provide Zenodo DOIs for specific releases, so that you can cite the exact version of the software that you use:
- libSBML-5.19.0 ⇒ 10.5281/zenodo.4293358
- libSBML-5.18.0 ⇒ 10.5281/zenodo.2645216
- libSBML-5.17.0 ⇒ 10.5281/zenodo.1250696
- libSBML-5.16.0 ⇒ 10.5281/zenodo.1095483
- libSBML-5.15.0 ⇒ 10.5281/zenodo.495344
If you'd like to include the latest features, binaries of the latest development
branch of SBMLTeam/libsbml
are built nightly by the CI/CD system.
Further information for developers about the CI/CD system can be found here.
Usage
Please read the file NEWS.txt for highlights about recent changes in libSBML and important information.
Documentation is available online at http://sbml.org/software/libsbml
Getting help
We encourage you to join the sbml-discuss group, where other libSBML users can be found. You can ask questions and discuss the development, use, and interoperability of all kinds of software that supports SBML.
You can report issues, suggestions and requests using the GitHub issue tracker. If you are interested in participating in or observing libSBML development more closely, we encourage you to join libsbml-development@googlegroups.com, a mailing list and web forum devoted to discussions about LIBSBML.
You can email the main developers directly at libsbml-team@googlegroups.com.
Contributing
We welcome contributions to libSBML! Please read our contribution guidelines, and also feel free to contact the developers at libsbml-team@googlegroups.com to coordinate your efforts.
License
LibSBML is available for free under the terms of the LGPL version 2.1 in both source-code form and precompiled binaries for a variety of systems. Please see the accompanying license file, LICENSE.html, for detailed copyright and license information, particularly for third-party software included in and used by the libSBML distribution.
Authors and history
LibSBML's main authors are Sarah M. Keating, Frank T. Bergmann, Lucian P. Smith, Brett G. Olivier, Akiya Jouraku, Michael Hucka, and Ben Bornstein, with contributions from many others. We especially thank the following (in alphabetical order):
- Gordon Ball
- Bill Denney
- Alessandro Felder
- Christoph Flamm
- Akira Funahashi
- Ralph Gauges
- Martin Ginkel
- Alex Gutteridge
- Stefan Hoops
- Totte Karlsson
- Moriyoshi Koizumi
- Ben Kovitz
- Rainer Machné
- Thomas Pfau
- Nicolas Rodriguez
- Jamie J Quinn
- Fengkai Zhang
Research notice
Please note that this repository is participating in a study into sustainability of open source projects. Data will be gathered about this repository for approximately the next 12 months, starting from July 2021.
Data collected will include number of contributors, number of PRs, time taken to close/merge these PRs, and issues closed.
For more information, please visit this informational page or download the participant information sheet.
Acknowledgments
The development of libSBML was supported in largely by funding from the National Institute of General Medical Sciences (USA) under grant R01 GM070923 (principal investigator: Michael Hucka).
The work to facilitate moving libSBML to GitHub and establishing Continuous Integration Testing was funded by Chan Zuckerberg Initiative under grant 2020-218578 (5022) (principal investigator: Sarah M Keating).
Contributions to libSBML have also come as a result of work by the SBML Team and others on other grant-funded projects. The core development of SBML from its inception through 2003 was principally funded by the Japan Science and Technology Agency under the ERATO Kitano Symbiotic Systems Project, with funding going to the group of John Doyle at Caltech. This included the first version of libSBML. After 2003, primary direct support for the core development of SBML and supporting software and activities came from the National Institute of General Medical Sciences (NIH/NIGMS) under grants R01 GM070923 and R01GM077671. Additional support came from the following agencies and programs: the National Human Genome Research Institute (USA), the International Joint Research Program of NEDO (Japan), the ERATO-SORST Program of the Japan Science and Technology Agency (Japan), the Ministry of Agriculture (Japan), the Ministry of Education, Culture, Sports, Science and Technology (Japan), the BBSRC e-Science Initiative (UK), the DARPA IPTO Bio-Computation Program (USA), the Army Research Office's Institute for Collaborative Biotechnologies (USA), the Air Force Office of Scientific Research (USA), the EU Commission 6th Framework Programme, the European Commision's 7th Framework Programme for Research and Technological Development, the Federal Ministry of Education and Research (BMBF, Germany), the Virtual Liver Network, the Systems Biology Institute (Japan), and Google Summer of Code.
Thanks also go to the developers of the msvc-dev-cmd and gha-setup-ninja Github actions. They have come in handy in the CI/CD system.
<br> <div align="center"> <a href="https://www.nigms.nih.gov"> <img valign="middle" height="100" src=".graphics/US-NIH-NIGMS-Logo.svg"> </a> <a href="https://www.caltech.edu"> <img valign="middle" height="130" src=".graphics/caltech-round.png"> </a> <a href="https://www.caltech.edu"> <img valign="middle" height="100" src=".graphics/sbml-logo-only.png"> </a> </div>