Skip to main content
. 2020 Aug 26;16(8):e9110. doi: 10.15252/msb.20199110

Application Programming Interface (API)

Open‐source (LGPL) libraries and code generators help read, write, manipulate, validate, and transform SBML. They support all Levels and Versions of SBML, and all Level 3 packages
  1. LibSBML (Bornstein et al, 2008) (http://sbml.org/Software/libSBML), written in C++, offers interfaces for C, C++, C#, Java, JavaScript, MATLAB, Octave, Perl, PHP, Python, R, and Ruby
  2. JSBML (Rodriguez et al, 2015) (http://sbml.org/Software/JSBML) offers a pure Java API
  3. Deviser (http://sbml.org/Software/Deviser) generates libSBML code for rapid package prototyping

Test Suite

The SBML Test Suite (http://sbml.org/Software/SBML_Test_Suite) helps developers implement SBML compatibility and helps users check SBML features supported in software
  1. Thousands of test cases for
    • Semantic interpretation of models (for both deterministic and stochastic simulation)
    • Syntactic correctness
  2. A graphical front end enables cases to be filtered by Level/Version and type of test
  3. An online database allows results to be uploaded and compared with results from other simulators

Validation Facilities

Validation software can check files for compliance to the definition of SBML, good modeling practices, and consistency of units
  1. API libraries include built‐in validation
  2. Online validator has simple user interface (http://sbml.org/Facilities/Validator)
  3. Web services support software access
Validation ensures compliance with:
  • SBML syntax
  • SBML validation rules published as part of each accepted SBML specification

Conversion Facilities

Converters (http://sbml.org/Software/Converters) can translate some other formats to/from SBML
  1. Conversion tools support format conversions from MATLAB, BioPAX, CellML, XPP, SBtab, and others
  2. Online services such as SBFC (Rodriguez et al, 2016) convert uploaded files to a variety of formats
  3. API libraries provide converters between different SBML Levels/Versions and different SBML constructs