Skip to content

Installation

sbmlsim requires python >= 3.13 and is available from pypi. It is tested on Linux, macOS and Windows. The simulations run on libroadrunner, which ships binary wheels for all three platforms, so no compiler is needed.

With uv

uv is the recommended way to install the package. In a project it is added as a dependency, which resolves and locks it together with the rest of the environment:

uv add sbmlsim

Into an existing virtual environment it is installed through the pip interface of uv:

uv venv --python 3.14
uv pip install sbmlsim

With pip

pip install sbmlsim

Development version

The current state of the develop branch is installed directly from GitHub:

uv add "sbmlsim @ git+https://github.com/matthiaskoenig/sbmlsim.git@develop"

or, with pip,

pip install git+https://github.com/matthiaskoenig/sbmlsim.git@develop

To work on the repository itself, with the test and documentation tooling, see Development.

Dependencies

sbmlsim builds on the packages of the COMBINE ecosystem and the scientific python stack. They are installed with it:

package used for
libroadrunner simulation of the SBML models
sbmlutils, python-libsbml reading, validating and changing SBML models
pymetadata COMBINE archives of the PEtab problems
numpy, pandas, xarray, scipy, sympy numerics, data and results
h5netcdf, h5py the netCDF files of the results
sbmlmath the math of SBML as sympy expressions
pint, pydantic units and unit conversions, validated data
petab, pyyaml, SALib parameter fitting problems, the files of the PEtab test suites and global sensitivity analysis
matplotlib, seaborn, jinja2, rich plots, reports and the output of scripts

Logging

sbmlsim does not configure logging. It logs to loggers below the sbmlsim logger and leaves handlers, levels and formatting to the application, so the messages of the package stay under your control:

import logging

logging.basicConfig(level=logging.INFO)
logging.getLogger("sbmlsim").setLevel(logging.WARNING)

For scripts and interactive work the rich output of the package can be turned on explicitly:

from sbmlsim import log

log.enable_rich_logging()