mod categorical;
pub use categorical::*;
use crate::{
models::graphs::DiGraph,
types::{Map, Result},
};
pub trait CTBN {
type CIM;
type InitialDistribution;
type Event;
type Trajectory;
type Trajectories;
fn new<I>(graph: DiGraph, cims: I) -> Result<Self>
where
I: IntoIterator<Item = Self::CIM>,
Self: Sized;
fn initial_distribution(&self) -> &Self::InitialDistribution;
fn graph(&self) -> &DiGraph;
fn cims(&self) -> &Map<String, Self::CIM>;
fn parameters_size(&self) -> usize;
fn with_optionals<I>(
name: Option<String>,
description: Option<String>,
initial_distribution: Self::InitialDistribution,
graph: DiGraph,
cims: I,
) -> Result<Self>
where
I: IntoIterator<Item = Self::CIM>,
Self: Sized;
}