Getting Started

The JigCell SBML parser is a complete library written in Java for reading, writing, and working with SBML Level 2 files. Download the JigCell SBML parser as part of the JigCell distribution. The source code and instructions for building the JigCell SBML parser are avilable from the same location.

The source code for the JigCell SBML parser is divided into several packages.

All of the classes for SBML structures and processing are in the jigcell.sbml2 package.
The jigcell.sbml2.math package contains classes for processing MathML.
The jigcell.sbml2.jep package is the Java Expression Parser, which is used for handling infix expressions.
The jigcell.sbml2.tests package contains unit tests and models for the JigCell SBML parser.

Reading and Writing Files

SBML files are handled by the SBMLLevel2Document class. This class contains a static method readDocument that gives several ways to load SBML documents. The JigCell SBML parser is quite tolerant of errors in SBML files, but will throw an exception from this method if it has to give up. You can also create instances of the SBMLLevel2Document class to make a new document not based on any existing model.

The SBMLLevel2Document class also handles writing SBML documents. Once you've obtained an instance of SBMLLevel2Document, call the method writeDocument to write the SBML document to a file, writer, or output stream. In addition, every SBML element has overridden the toString method to produce the SBML equivalent to that element. Any individual SBML element can be serialized by calling toString, even if there isn't a containing SBML document.

Accessing Model Data

The methods and classes of the JigCell SBML parser have been given names that match the SBML Level 2 specification. For example, the name of the class that represents an SBML compartment is called Compartment and the outside property of a compartment is accessed by calling getOutside and setOutside. All of the settable properties for SBML elements have similarly named pairs of get and set methods. Readonly properties only have a get method.

When working with SBML elements, the JigCell SBML parser allows you to use either the id of the element or a copy of the element itself. Every property in the SBML specification that is an SBML id can be set either as a string containing the id or with an instance of an SBML element that the id can refer to. The species property of a species reference is represented with an SBML id. There is a version of the setSpecies method that takes a string, and a version that takes an instance of the Species class. Reverse lookups are also supported. The plain getSpecies method returns the SBML id, while an overloaded version that takes an instance of a model searches for a species with that particular id in the model. All of the search capabilities can also be accessed directly in the Model class to aid locating SBML elements in a model.

Finally, the JigCell SBML parser provides other services for working with SBML models. Many of the SBML classes support performing semantic queries that analyze the structure of the SBML model. For instance, the Species class has isSetByRule and isSetByEvent methods that can tell whether other elements in the SBML model will affect this instance. Similarly, the Model class can check to see if any reactions use local parameters, and the UnitDefinition class has a wide variety of methods for testing whether units are being used correctly. Every SBML element supports an isValid method that analyzes whether the element will convert to legal SBML when saved.

The JigCell SBML parser also includes a tool for working with algebraic conservation relations in an SBML model. The ConservationRelationFinder class takes an instance of an SBML model, and detects all of the present algebraic conservation relations. You can also use this class to validate that a particular set of algebraic conservation relations is consistent with the SBML model.