parent
c2a86cfccd
commit
67f77c3361
@ -1,11 +1,16 @@ |
|||||||
|
use std::collections::BTreeSet; |
||||||
|
use crate::params; |
||||||
|
|
||||||
pub enum DomainType { |
|
||||||
Discrete(Vec<String>) |
|
||||||
} |
|
||||||
|
|
||||||
pub struct Node { |
pub struct Node { |
||||||
pub domain: DomainType, |
pub params: Box<dyn params::Params>, |
||||||
pub label: String |
pub label: String |
||||||
} |
} |
||||||
|
|
||||||
|
impl PartialEq for Node { |
||||||
|
fn eq(&self, other: &Node) -> bool{ |
||||||
|
self.label == other.label |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@ -1,15 +1,39 @@ |
|||||||
use ndarray::prelude::*; |
use ndarray::prelude::*; |
||||||
|
use std::collections::{HashMap, BTreeSet}; |
||||||
|
use petgraph::prelude::*; |
||||||
|
|
||||||
pub struct CIM { |
|
||||||
cim: Array3<f64>, |
|
||||||
} |
|
||||||
|
|
||||||
pub struct M { |
|
||||||
transitions: Array3<u64>, |
pub trait Params { |
||||||
|
|
||||||
|
fn add_parent(&mut self, p: &petgraph::stable_graph::NodeIndex); |
||||||
} |
} |
||||||
|
|
||||||
pub struct T { |
pub struct DiscreteStatesContinousTimeParams { |
||||||
residence_time: Array2<f64>, |
domain: BTreeSet<String>, |
||||||
|
parents: BTreeSet<petgraph::stable_graph::NodeIndex>, |
||||||
|
cim: Option<Array3<f64>>, |
||||||
|
transitions: Option<Array3<u64>>, |
||||||
|
residence_time: Option<Array2<f64>> |
||||||
} |
} |
||||||
|
|
||||||
|
impl DiscreteStatesContinousTimeParams { |
||||||
|
fn init(domain: BTreeSet<String>) -> DiscreteStatesContinousTimeParams { |
||||||
|
DiscreteStatesContinousTimeParams { |
||||||
|
domain: domain, |
||||||
|
parents: BTreeSet::new(), |
||||||
|
cim: Option::None, |
||||||
|
transitions: Option::None, |
||||||
|
residence_time: Option::None |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
impl Params for DiscreteStatesContinousTimeParams { |
||||||
|
fn add_parent(&mut self, p: &petgraph::stable_graph::NodeIndex) { |
||||||
|
self.parents.insert(p.clone()); |
||||||
|
self.cim = Option::None; |
||||||
|
self.transitions = Option::None; |
||||||
|
self.residence_time = Option::None; |
||||||
|
} |
||||||
|
} |
||||||
|
@ -0,0 +1,30 @@ |
|||||||
|
use ndarray::prelude::*; |
||||||
|
use crate::network; |
||||||
|
use petgraph::prelude::*; |
||||||
|
use rand::Rng; |
||||||
|
|
||||||
|
pub struct Trajectory { |
||||||
|
time: Array1<f64>, |
||||||
|
events: Array2<u32> |
||||||
|
} |
||||||
|
|
||||||
|
pub struct Dataset { |
||||||
|
trajectories: Vec<Trajectory> |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
fn trajectory_generator(net: &Box<dyn network::Network>, n_trajectories: u64, t_end: f64) -> Dataset { |
||||||
|
let mut dataset = Dataset{ |
||||||
|
trajectories: Vec::new() |
||||||
|
}; |
||||||
|
for _ in 0..n_trajectories { |
||||||
|
let mut rng = rand::thread_rng(); |
||||||
|
let t = 0.0; |
||||||
|
let mut time: Vec<f64> = Vec::new(); |
||||||
|
let mut events: Vec<Vec<u32>> = Vec::new(); |
||||||
|
let current_state: Vec<u32> = net.get_node_indices().map(|x| rng.gen_range(0..2)).collect(); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
dataset |
||||||
|
} |
Loading…
Reference in new issue