pointprocesses/temporal/
mod.rs

1/*!
2 *Temporal point processes
3 *on the real half-line $[0,\infty[$, such as Poisson or
4 *Hawkes processes.
5 */
6pub mod traits;
7pub mod poisson;
8pub mod cox;
9pub mod hawkes;
10pub mod utils;
11
12/// Reexport traits 
13pub use traits::*;
14
15pub use poisson::*;
16pub use utils::simulate_brownian;
17
18use ndarray::prelude::*;
19
20/// Simulate a Poisson process with constant intensity $\lambda$.
21pub fn poisson_process(tmax: f64, lambda: f64) -> Array1<f64>
22{
23    let process = PoissonProcess::new(lambda);
24    process.sample(tmax).timestamps
25}
26
27/// Simulate a Poisson process with variable intensity.
28pub fn variable_poisson<F>(tmax: f64, lambda: &F, max_lambda: f64) -> TimeProcessResult
29where F: Fn(f64) -> f64 + Send + Sync
30{
31    let model = VariablePoissonProcess::new(lambda, max_lambda);
32    let result = model.sample(tmax);
33    result
34}
35
36/// Simulate a Hawkes process with an exponential kernel and constant background intensity.
37pub fn hawkes_exponential(tmax: f64, alpha: f64, beta: f64, lambda0: f64) -> TimeProcessResult
38{
39    use hawkes::ExpHawkes;
40    let model: ExpHawkes = ExpHawkes::new(alpha, beta, lambda0);
41    model.sample(tmax)
42}