After a lot of work I am pleased to announce the first official release of libRoadRunner, 1.0.0. This represents a complete rewrite of the original C# RoadRunner developed by Frank Bergmann and Herbert Sauro.
libRoadRunner is a high-performance cross-platform C/C++ library that supports the simulation and analysis of SBML based models. One of its key innovations is the development of a SBML to LLVM compiler. One of the primary use cases for libRoadRunner is to support multicellular simulators where tens of thousands of cells are simulated simultaneously requiring high performance. Details of libRoadRunner can be found at the dedicated web site: libroadrunner.org A summary of the most important features is given below:
- Time dependent simulation (with optional conservation law reduction), sundials (CVODE)
- Steady state evaluation (NLEQ2)
- Supports SBML Level 2 to 3 (libSBML 5.9) including full and robust event support
- Includes a SBML to LLVM compiler
- Optional generation of model in C code
- Support for metabolic and frequency domain control analysis
- Supports a rich set of APIs designed specifically for modelers: C++ API, C API, Python API
- Additional Plugin API (C, C++ and Python) – Levenberg-Marquardt optimizer plugin included
- Access to other items such as: Eigenvalues/Eigenvectors, Jacobian stoichiometric analysis
- Extensive documentation.
- …and more.
A sample Python script to run a simulation is shown below:
import roadrunner rr = roadrunner.RoadRunner() rr.load("mymodel.xml") result = rr.simulate() roadrunner.plot(result)
A short paper giving some architectural details and timing information can be found here:
Authors: Andy Somogyi – LLVM backend and overall architectural design, Mac OS port, Python interface
Totte Karlsson – Initial translation and design of plugin system
Michal Galdzicki – Documentation and testing
Maciej Swat – Linux deployment and testing
Herbert Sauro – Documentation, testing
Support: libRoadRunner is funded through the generous support of the NIGMS, grant: GM081070