23 releases (12 breaking)
0.13.0 | Sep 12, 2019 |
---|---|
0.11.0 | Dec 8, 2018 |
0.10.0 | Nov 15, 2018 |
0.4.1 | Jul 29, 2018 |
#127 in Simulation
51 downloads per month
240KB
764 lines
Point processes in Rust
Point processes are stochastic processes with a wide range of applications in seismology, epidemiology, or financial mathematics. They are utilized to model the arrival of random events as a function of time.
This crate provides functions to simulate point processes in Rust, built on top of ndarray
. There is a Rust API available through the base crate as well as a Python library crate.
Overview
Time-dependent processes
The following time-dependent point processes have been implemented within the temporal
module:
- Poisson point process (homogeneous and inhomogeneous, with custom function)
- Exponential-kernel Hawkes processes, using a linear-time simulation algorithm (both constant and variable background intensities supported)
Spatial processes
The generalized
module provides functions for higher-dimensional processes.
For now, only Poisson processes have been implemented.
Estimators
The estimators
module provides estimator routines for point process statistics such as the intensity.
Python package
An Python wrapper crate is available in the pylib
directory.
Examples
Run the examples with for instance
cd lib/
cargo run --example variable_poisson
Some will produce SVG image files in the lib/examples
directory.
The examples show how to use the API.
They require the plotters
crate for plotting.
Building locally
To compile the Rust library, do
cd lib/
cargo build
To build the Python library,
cd pylib/
cargo build --release
Warning on macOS, you might need to add the following to ~/.cargo/config
(see PyO3's README):
[target.x86_64-apple-darwin]
rustflags = [
"-C", "link-arg=-undefined",
"-C", "link-arg=dynamic_lookup",
]
or linking with the C compiler will fail.
To compile both crates at the same time, just do
cargo build
Dependencies
~6.5MB
~119K SLoC