No project description provided
Project description
Arrow
“... even if the previous millisecond is closer to us than the birth of the universe, it is equally out of reach.” ― Jean-Christophe Valtat, Luminous Chaos
Concept
This library implements a generalized version of the Gillespie
Algorithm, a stochastic
approach to numerically solving discrete systems. Each iteration, the algorithm
will calculate the propensities for each reaction given a rate and the counts
of the reactants present in the current state of the system, then selects one
reaction to occur and the interval of time between the previous reaction and
the current reaction. Iterating this produces a trajectory (or history
) of
the state vector over the course of the simulation.
Installation
Add the following to your requirements.txt
, or
pip install stochastic-arrow
:
stochastic-arrow==0.0.1
Usage
The arrow
library presents a single class as an interface,
StochasticSystem
, which operates on a set of reactions (encoded as a numpy
matrix of stoichiometrix coefficients) and associated reaction rates:
from arrow import StochasticSystem
import numpy as np
# Each column is a reaction and each row is a molecular species (or other
# entity). The first reaction here means that the first and second elements
# combine to create the third, while the fourth is unaffected.
stoichiometric_matrix = np.array([
[-1, -2, +1],
[-1, 0, +1],
[+1, 0, -1],
[ 0, +1, 0]
])
# Each reaction has an associated rate for how probable that reaction is.
rates = np.array([3.0, 1.0, 1.0])
# Once we have a matrix of reactions and their associated rates, we can
# construct the system.
system = StochasticSystem(stoichiometric_matrix, rates)
Now that the system has been instantiated, we can invoke it with any initial state vector and then run it for a given time interval:
# This gives the initial state of the system (counts of each molecular species,
# for instance).
state = np.array([1000, 1000, 0, 0])
# We also specify how long we want the simulation to run. Here we set it to one
# second.
duration = 1
# Once we have an initial state and duration, we can run the simulation for the
# given duration. `evolve` returns the history of the state vector (counts) for
# each time step, and the history of time steps as they will be in uneven
# increments throughout the simulation.
time, counts = system.evolve(state, duration)
Testing
arrow
uses pytest: https://docs.pytest.org/en/latest/ so you can test simply
by invoking:
> pytest
Also, we have a test that generates plots of various systems which can be run like so:
> python arrow/test/test_arrow.py
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file stochastic-arrow-0.0.8.tar.gz
.
File metadata
- Download URL: stochastic-arrow-0.0.8.tar.gz
- Upload date:
- Size: 3.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/2.7.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 33bdee3cbfe3d84b019fce63f2efcec1b0351bd72654cf20962fe3b20845a139 |
|
MD5 | dca52d28ed36b6c68dfa1d933e226400 |
|
BLAKE2b-256 | c31666042443f3f0be0eb7d83b3e5ce7bfa356af17445173f0ee421ae6f887de |
File details
Details for the file stochastic_arrow-0.0.8-py2-none-any.whl
.
File metadata
- Download URL: stochastic_arrow-0.0.8-py2-none-any.whl
- Upload date:
- Size: 4.4 kB
- Tags: Python 2
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/2.7.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2d4a857ad79d0888ad679855badc18b65de414efb00a115c3c9d52e6576cac94 |
|
MD5 | 8ad5ac8b6289116c5dbf850cc27d652d |
|
BLAKE2b-256 | 1f1c9ffb83ff5cf1755a264f86f0db1c5b02c539cbb12e2767b98d44ee11443f |