simbio
is a Python-based package for simulation of Chemical Reaction Networks (CRNs).
It extends poincare
,
a package for modelling dynamical systems,
to add functionality for CRNs.
To create a system with two species
>>> from simbio import Compartment, Species, RateLaw, initial
>>> class Model(Compartment):
... A: Species = initial(default=1)
... B: Species = initial(default=0)
... r = RateLaw(
... reactants=[2 * A],
... products=[B],
... rate_law=1,
... )
This corresponds to the following system of equations
with initial conditions
In CRNs,
we usually deal with mass-action reactions.
Using MassAction
instead of Reaction
automatically adds the reactants to the rate law:
>>> from simbio import MassAction
>>> class MassActionModel(Compartment):
... A: Species = initial(default=1)
... B: Species = initial(default=0)
... r = MassAction(
... reactants=[2 * A],
... products=[B],
... rate=1,
... )
generating the following equations:
To simulate the system,
use the Simulator.solve
which outputs a pandas.DataFrame
:
>>> from simbio import Simulator
>>> Simulator(MassActionModel).solve(save_at=range(5))
A B
time
0 1.000000 0.000000
1 0.333266 0.333367
2 0.199937 0.400032
3 0.142798 0.428601
4 0.111061 0.444470
For more details into SimBio's capabilities, we recommend reading poincaré's README.
SimBio can import models from Systems Biology Markup Language (SBML) files:
>>> from simbio.io import sbml
>>> sbml.load("repressilator.sbml")
Elowitz2000 - Repressilator
-----------------------------------------------------------------------------------
type total names
---------- ------- --------------------------------------------------------------
variables 6 PX, PY, PZ, X, Y, Z
parameters 17 cell, beta, alpha0, alpha, eff, n, KM, tau_mRNA, tau_prot, ...
equations 12 Reaction1, Reaction2, Reaction3, Reaction4, Reaction5, ...
or download them from the BioModels repository:
>>> from simbio.io import biomodels
>>> biomodels.load("BIOMD12")
Elowitz2000 - Repressilator
-----------------------------------------------------------------------------------
type total names
---------- ------- --------------------------------------------------------------
variables 6 PX, PY, PZ, X, Y, Z
parameters 17 cell, beta, alpha0, alpha, eff, n, KM, tau_mRNA, tau_prot, ...
equations 12 Reaction1, Reaction2, Reaction3, Reaction4, Reaction5, ...
It can be installed from PyPI with pip
:
pip install simbio
Or, to additionally install the SBML importer:
pip install simbio[io]
While poincaré
is installed automatically as a dependency,
if you are using conda/mamba,
you might prefer to install it from conda-forge:
conda install --channel conda-forge poincare