Skip to main content

Python package for stochastic simulations

Project description

pyssa : Python package for stochastic simulations

Build Status Build Status codecov Updates Documentation Status pypi License Code style: black

Introduction

pyssa is a Python package for stochastic simulations. It offers a simple api to define models, perform stochastic simulations on them and visualize the results in a convenient manner.

Install

Install with pip:

$ pip install pyssa

Documentation

Usage

from pyssa.simulation import Simulation
V_r = np.array([[1, 0], [0, 1], [0, 0]])  # Reactant matrix
V_p = np.array([[0, 0], [1, 0], [0, 1]])  # Product matrix
X0 = np.array([100, 0, 0])  # Initial state
k = np.array([1.0, 1.0])  # Rate constants
sim = Simulation(V_r, V_p, X0, k)  # Declare the simulation object
# Run the simulation
sim.simulate(max_t=150, max_iter=1000, chem_flag=True, n_rep=10)

You can change the algorithm used to perform the simulation by changing the algorithm parameter

sim.simulate(max_t=150, max_iter=1000, chem_flag=True, n_rep=10, algorithm="tau_adaptive")

You can run the simulations on multiple cores by specifying the n_procs parameter

sim.simulate(max_t=150, max_iter=1000, chem_flag=True, n_rep=10, n_procs=4)

Plotting

sim.plot()

Plot of species A, B and C

Accessing the results

results = sim.results

You can also access the final states of all the simulation runs by

final_times, final_states = results.final

Benchmarks

We chose numba after extensive testing and benchmarking against python and cython implementations.

Name (time in ms) Min Max Mean StdDev Median IQR Outliers OPS Rounds Iterations
test_numba_benchmark 314.1758 (1.0) 342.9915 (1.0) 322.9318 (1.0) 11.4590 (1.0) 318.7983 (1.0) 9.1533 (1.0) 1;1 3.0966 (1.0) 5 1
test_cy_benchmark 17,345.7698 (55.21) 19,628.3931 (57.23) 18,255.3931 (56.53) 862.4711 (75.27) 18,148.9358 (56.93) 1,030.3676 (112.57) 2;0 0.0548 (0.02) 5 1
test_py_benchmark 27,366.3681 (87.11) 28,417.8333 (82.85) 27,782.2482 (86.03) 387.2758 (33.80) 27,728.4224 (86.98) 347.3891 (37.95) 2;0 0.0360 (0.01) 5 1

License

Copyright (c) 2018-2019, Dileep Kishore, Srikiran Chandrasekaran. Released under: Apache Software License 2.0

Credits

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for pyssa, version 0.8.2
Filename, size & hash File type Python version Upload date
pyssa-0.8.2.tar.gz (80.3 kB) View hashes Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page