point_process 0.4.0

A crate for simulating random point processes.
Documentation

Point processes in Rust

Crates.io Status Docs License

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.

variablepoisson

This crate provides functions to simulate point processes in Rust.

Time-dependent processes

The following time-dependent point processes have been implemented within the timedependent module:

  • Poisson point process (homogeneous and inhomogeneous, with custom function)
  • Hawkes processes, with the exponential kernel (refer to Dassios and Zhao's 2013 paper (1)) hawkesexp

The API returns the process trajectories as a vector of a struct named Events, which has the following fields: a timestamp, the current process intensity and a vector holding any children events (for processes with this property, coming soon).

n-dimensional processes

2dpoisson_circle

The generalized module provides functions for higher-dimensional processes, using ndarray.

For now, only Poisson processes have been implemented.

fn poisson_process(lambda: f64, domain: &T)
where T: Set -> ndarray::Array<f64, Ix2> {
    ...
}

fn variable_poisson<F, T>(lambda: F,max_lambda: f64,domain: &T) -> Array2<f64>
where F: Fn(&Array1<f64>) -> f64,
      T: Set
{
    ...
}

which takes a reference to a domain, that is a subset of n-dimensional space implemented with the Set trait (see API docs), and returns a 2-dimensional array which is a set of point events in d-dimensional space falling into the domain.

Examples

Some examples require milliams' plotlib graphing library. To compile them, you'll need to checkout plotlib locally:

git clone https://github.com/milliams/plotlib
cargo build --example 2d_poisson

To run the examples, do for instance

cargo run --example variable_poisson

Some will produce SVG image files in the examples directory.

The examples show how to use the API.