libSBML Python API
5.18.0
|
This section summarizes how to read and write SBML content using the facilities provided by libSBML.
This is only a basic orientation to these essential facilities of libSBML, and is far from exhaustive in its coverage. Readers are directed to the rest of this manual for more details about using libSBML's many features and facilities. Please use the navigation bar near the top of the page and the table of contents in the left-hand column for navigating to other parts of this manual.
In LibSBML, the class SBMLDocument is used as a top-level container for storing SBML content and data associated with it (such as warnings and error messages). Here is a simple example to start this discussion, using Python in interactive mode:
The code above illustrates probably the simplest possible use of libSBML: reading a model and printing any errors or warnings encountered. The code begins with a Python import
command to load the libSBML API into the running Python interpreter. Next, it instantiates an SBMLReader object and stores it in a variable called reader
. Then, it uses this object to read an SBML model stored in a file, creating an SBMLDocument object in the process and storing it in the variable document
. Finally, it calls on the SBMLDocument.getNumErrors() method to check if any errors were encountered.
SBML may be read from a file or an in-memory character string into an SBMLDocument object. LibSBML defines two basic, convenient, global functions for reading SBML:
The model may be in any SBML Level and Version combination. LibSBML implements an unified object model for SBML that encompasses all SBML Levels, so applications generally do not need to worry about differences in syntax between these definitions of SBML when reading and writing models. (However, applications still need to be concerned about the constructs used and how they are interpreted, since there are substantial differences between SBML Level 1, Level 2, and Level 3!)
As might be deduced from the examples so far, an SBMLDocument object in libSBML represents a whole SBML model and its associated data. The SBMLDocument class corresponds roughly to the class Sbml defined in the SBML Level 2 specification, but it does not have a direct correspondence in SBML Level 1. (Nevertheless, it is created by libSBML no matter whether the model is Level 1, Level 2 or Level 3.)
SBMLDocument is derived from SBase, so that it contains the usual SBase attributes (in SBML Level 2 Version 3) of "metaid" and "sboTerm", as well as the subelements "notes" and "annotation". It also contains the attributes "level" and "version" indicating the Level and Version of the SBML read. SBase (and thus its subclasses such as SBMLDocument) provides methods for querying this information:
Of course, the whole point of reading an SBML file or data stream is to get at the SBML model it contains. The following method allows access to the Model object within an SBML document:
Here is an example of using this:
SBMLDocument also acts to log any problems encountered while reading the model from the file or data stream. Whether the problems are warnings or errors, they are reported through a single common interface involving the object class SBMLError. The example earlier on this page already showed some of the methods available for accessing errors and warnings; here is a slightly more complete list:
n
in the error log. The SBMLError object class provides methods for displaying an error message, assessing the severity of the problem encountered, and for finding out the line and column number of where the problem occurred in the SBML input. Finally, another set of SBMLDocument methods worth mentioning in the context of reading SBML are those for running consistency-checking and validation rules on the SBML content. These methods assess whether the SBML is legal according to basic rules listed in the SBML Level 2 and Level 3 specification documents. Note that they are mostly structural checks, in the sense that they can indicate whether the SBML is properly constructed; they cannot tell if a model is nonsense. (But at least they can assess whether it's syntactically correct nonsense!).
At the time of this release of libSBML, the most recent release of SBML is Level 3 Version 2 Core Release 1 (RC 2).
Writing SBML is, in the end, a very simple matter in libSBML. The library provides the following methods for this purposes:
1
on success or 0
on failure. Reasons for failure can be, for example, that the named file could not be opened for writing. ostream
output stream, and returns either 1
on success or 0
on failure.