mod forward;
pub use forward::*;
mod importance;
pub use importance::*;
use crate::models::{BN, CTBN};
pub trait BNSampler<T>
where
T: BN,
{
type Sample;
type Samples;
fn sample(&self) -> Self::Sample;
fn sample_n(&self, n: usize) -> Self::Samples;
}
pub trait ParBNSampler<T>
where
T: BN,
{
type Samples;
fn par_sample_n(&self, n: usize) -> Self::Samples;
}
pub trait CTBNSampler<T>
where
T: CTBN,
{
type Sample;
type Samples;
fn sample_by_length(&self, max_length: usize) -> Self::Sample;
fn sample_by_time(&self, max_time: f64) -> Self::Sample;
fn sample_by_length_or_time(&self, max_length: usize, max_time: f64) -> Self::Sample;
fn sample_n_by_length(&self, max_length: usize, n: usize) -> Self::Samples;
fn sample_n_by_time(&self, max_time: f64, n: usize) -> Self::Samples;
fn sample_n_by_length_or_time(
&self,
max_length: usize,
max_time: f64,
n: usize,
) -> Self::Samples;
}
pub trait ParCTBNSampler<T>
where
T: CTBN,
{
type Samples;
fn par_sample_n_by_length(&self, max_length: usize, n: usize) -> Self::Samples;
fn par_sample_n_by_time(&self, max_time: f64, n: usize) -> Self::Samples;
fn par_sample_n_by_length_or_time(
&self,
max_length: usize,
max_time: f64,
n: usize,
) -> Self::Samples;
}