Skip to content

Overview

William Poole edited this page Nov 9, 2018 · 5 revisions

Overview

There are fundamentally 3 parts to the package. If you want to simply simulate some biological circuits and maybe do parameter sweeps, you only need to know about parts 1 and 2. If you want to do parameter inference as well, then you'll need all 3 parts. If you have your own preferred method for parameter inference, you can still use parts 1 and 2 and build your own inference method on top of them.

  1. The first is a flexible XML specification format for inputting species, reactions, and reaction rates in a easily modifiable way. This way, if you specify a model and want to tweak it later to get different behavior or better fits, you can just quickly edit the XML file and proceed rather than re-write a ton of code. BioSCRAPE's internal model can also be accessed via the model API Once you have created your model, you can then change parameters and species however you like in order to run deterministic or stochastic simulations or do parameter inference from data. There are a ton of possible options.

  2. The second is a set of fast simulators written in Cython that can be used to simulate the model. These simulators are flexible supporting many different chemical reaction models and are much faster than other packages where the simulation is done in pure Python. There are deterministic and stochastic simulators which also support delays. Additionally, bioSCRAPE allows for the simulation of growing and dividing cells via its cell lineage simulators. However, deterministic delayed reactions are not yet supported when simulating cell lineages (stochastic delay reactions are). It is also possible to write your own simulator, propensities, delays, or cell lineage model that easily integrate with bioSCRAPE.

  3. The third piece is a set of methods for Bayesian parameter inference that use the fast simulators underneath as well as existing Markov chain Monte Carlo libraries to do parameter inference given data. In this scenario, you specify a model, you specify the parameters you would like to identify, and you specify the data that you have measured. The inference method then runs for a while (could be a loooong time) and spits out parameter estimates as well as distributions.