Skip to content

Simulation of point processes in the Rust programming language

License

Notifications You must be signed in to change notification settings

ManifoldFR/point-process-rust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Point processes in Rust

Crates.io Status Docs License Build Status

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, 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)

cos_bg_exphawkes

Spatial processes

2dpoisson_circle

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.

polyexp_poisson_estimation

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