[ANN] SBML.jl - simple wrapper for Systems biology markup language

We have released SBML.jl back in February, but since the original micropackage keeps packing up new features, I guess it’s a good time to announce it here now.

SBML.jl is a wrapper for libSBML (http://sbml.org/Software/libSBML), which is a de-facto standard for semantic storage of metabolic (and other) models in systems biology. The package uses a JLL wrapper around the C library API, ensuring the compatibility with the standard. We use the C calls to extract a (slightly reduced) representation of the stored SBML model, and output it as a normal Julia data structure, allowing easy and efficient manipulation of the model data. Others may use SBML_jll wrapper directly to interface with more advanced functions from libSBML.

We expect that the library is going to be extended on demand, mainly with extracting new kinds of information, as has already happened several times (last time we added extraction of reaction kinetics math).

The use is pretty straightforward: You give it a filename, and get a struct with all possible information extracted from the file. With one well known toy model of E. Coli, that may look as follows:

julia> using SBML

julia> m = readSBML("e_coli_core.xml");

julia> keys(m.species)
KeySet for a Dict{String, Species} with 72 entries. Keys:
  "M_succoa_c"
  "M_ac_c"
  "M_etoh_c"
  "M_acald_e"
  "M_oaa_c"
  "M_2pg_c"
  "M_coa_c"
  "M_nadh_c"
  ⋮

julia> m.species["M_glu__L_c"].name      # very tasty!
"L-Glutamate"

julia> m.species["M_glu__L_c"].formula
"C5H8NO4"

PS. thanks laurentheirendt stelmo @anandj @paulflang and others for programming&support&ideas! (I can only @-hilite 2 users, haha)

10 Likes

And for everyone who invariably is going to ask, ModelingToolkit.jl is getting integration with SBML.jl to automatically generate ODE and jump equation models for DifferentialEquations.jl solvers from the SBML files. It should be coming very soon!

9 Likes