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:

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.

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

fn variablepoisson(lambda: F,maxlambda: f64,domain: &T) -> Array2 where F: Fn(&Array1) -> 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:

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

To run the examples, do for instance

bash cargo run --example variable_poisson

Some will produce SVG image files in the examples directory.

The examples show how to use the API.