Skip to content

Commit

Permalink
project re-structure
Browse files Browse the repository at this point in the history
  • Loading branch information
Siel committed May 7, 2024
1 parent 77b84f3 commit a831075
Show file tree
Hide file tree
Showing 17 changed files with 60 additions and 212 deletions.
2 changes: 2 additions & 0 deletions Cargo.toml
Expand Up @@ -43,6 +43,8 @@ nalgebra = "0.32.5"
faer = "0.18.2"
faer-ext = {version = "0.1.0", features = ["nalgebra", "ndarray"]}
serde_with = "3.8.1"
anyhow = "1.0.83"
num-traits = "0.2.19"


[profile.release]
Expand Down
2 changes: 1 addition & 1 deletion benches/compare.rs
@@ -1,4 +1,4 @@
use pmcore::routines::data::{parse_pmetrics::read_pmetrics, DataTrait};
use pmcore::prelude::data::{parse_pmetrics::read_pmetrics, DataTrait};
use pmcore::simulator::analytical::one_compartment_with_absorption;
use pmcore::{prelude::*, simulator::Equation};
use std::path::Path;
Expand Down
2 changes: 1 addition & 1 deletion examples/new_simulator.rs
@@ -1,5 +1,5 @@
use pmcore::prelude::data::{parse_pmetrics::read_pmetrics, DataTrait};
use pmcore::prelude::*;
use pmcore::routines::data::{parse_pmetrics::read_pmetrics, DataTrait};
use pmcore::simulator::analytical::one_compartment_with_absorption;
use pmcore::simulator::Equation;
use std::path::Path;
Expand Down
2 changes: 1 addition & 1 deletion examples/parse_pmetrics.rs
@@ -1,4 +1,4 @@
use pmcore::routines::data::*;
use pmcore::prelude::data::*;

fn main() {
let path = std::path::Path::new("examples/data/bimodal_ke.csv");
Expand Down
3 changes: 2 additions & 1 deletion src/algorithms/npag.rs
Expand Up @@ -6,6 +6,7 @@ use crate::{
output::{CycleLog, NPCycle, NPResult},
qr,
settings::Settings,
simulator::get_population_predictions,
},
routines::expansion::adaptative_grid::adaptative_grid,
simulator::{likelihood::PopulationPredictions, Equation},
Expand All @@ -16,7 +17,7 @@ use ndarray::{Array, Array1, Array2, Axis};
use ndarray_stats::{DeviationExt, QuantileExt};
use tokio::sync::mpsc::UnboundedSender;

use super::{data::Subject, get_population_predictions};
use super::data::Subject;

const THETA_E: f64 = 1e-4; // Convergence criteria
const THETA_G: f64 = 1e-4; // Objective function convergence criteria
Expand Down
3 changes: 2 additions & 1 deletion src/algorithms/npod.rs
Expand Up @@ -8,6 +8,7 @@ use crate::{
output::{CycleLog, NPCycle, NPResult},
qr,
settings::Settings,
simulator::get_population_predictions,
},
simulator::{likelihood::PopulationPredictions, Equation},
tui::ui::Comm,
Expand All @@ -17,7 +18,7 @@ use ndarray::{Array, Array1, Array2, Axis};
use ndarray_stats::{DeviationExt, QuantileExt};
use tokio::sync::mpsc::UnboundedSender;

use super::{data::Subject, get_population_predictions};
use super::data::Subject;

const THETA_D: f64 = 1e-4;
const THETA_F: f64 = 1e-2;
Expand Down
3 changes: 2 additions & 1 deletion src/algorithms/postprob.rs
Expand Up @@ -5,6 +5,7 @@ use crate::{
ipm_faer::burke,
output::NPResult,
settings::Settings,
simulator::get_population_predictions,
},
simulator::Equation,
tui::ui::Comm,
Expand All @@ -13,7 +14,7 @@ use crate::{
use ndarray::{Array1, Array2};
use tokio::sync::mpsc::UnboundedSender;

use super::{data::Subject, get_population_predictions};
use super::data::Subject;

/// Posterior probability algorithm
/// Reweights the prior probabilities to the observed data and error model
Expand Down
File renamed without changes.
@@ -1,4 +1,4 @@
use crate::routines::data::*;
use crate::prelude::data::*;
use serde::de::{MapAccess, Visitor};
use serde::{de, Deserialize, Deserializer, Serialize};
use std::collections::HashMap;
Expand Down
12 changes: 4 additions & 8 deletions src/lib.rs
Expand Up @@ -52,10 +52,12 @@ pub mod algorithms;

pub mod simulator;

/// New data format
pub mod data;

/// Routines for the crate
pub mod routines {
/// New data format
pub mod data;

/// Routines for initializing the grid
pub mod initialization;
pub mod optimization {
Expand Down Expand Up @@ -84,9 +86,6 @@ pub mod routines {
pub mod qr;
pub mod sigma;
}
pub mod simulation {
pub mod predict;
}
}

/// Entry points for external use of the framework.
Expand All @@ -112,12 +111,9 @@ pub mod prelude {
pub use crate::logger;
pub use crate::prelude::evaluation::{sigma, *};
pub use crate::routines::condensation;
pub use crate::routines::data::CovariateTrait;
pub use crate::routines::expansion::*;
pub use crate::routines::initialization::*;
pub use crate::routines::optimization;
pub use crate::routines::simulation::predict::*;
pub use crate::routines::simulation::*;
pub use crate::routines::*;
pub use crate::tui::ui::*;
#[macro_export]
Expand Down
6 changes: 2 additions & 4 deletions src/routines/optimization/d_optimizer.rs
Expand Up @@ -5,10 +5,8 @@ use argmin::{
use ndarray::{Array1, Axis};

use crate::{
routines::{
data::Subject, evaluation::sigma::ErrorModel,
simulation::predict::get_population_predictions,
},
prelude::{data::Subject, simulator::get_population_predictions},
routines::evaluation::sigma::ErrorModel,
simulator::Equation,
};

Expand Down
182 changes: 0 additions & 182 deletions src/routines/simulation/predict.rs

This file was deleted.

2 changes: 1 addition & 1 deletion src/simulator/analytical/mod.rs
@@ -1,4 +1,4 @@
use crate::{routines::data::Covariates, simulator::*};
use crate::{prelude::data::Covariates, simulator::*};

// let eq = |x: &V, p: &V, t:T, rateiv: V, _cov: &Covariates|

Expand Down
6 changes: 3 additions & 3 deletions src/simulator/likelihood.rs
@@ -1,6 +1,6 @@
use crate::routines::{
data::Observation,
evaluation::sigma::{ErrorModel, ErrorType},
use crate::{
prelude::data::Observation,
routines::evaluation::sigma::{ErrorModel, ErrorType},
};

use ndarray::{Array1, Array2, Axis};
Expand Down
37 changes: 33 additions & 4 deletions src/simulator/mod.rs
Expand Up @@ -2,17 +2,22 @@ pub mod analytical;
pub mod cache;
pub mod likelihood;
pub mod ode;
use ndarray::{parallel::prelude::*, Axis};
use std::collections::HashMap;

use self::likelihood::SubjectPredictions;
use self::likelihood::{PopulationPredictions, SubjectPredictions};
use crate::{
prelude::data::Event,
routines::data::{Covariates, Infusion, OccasionTrait, Subject, SubjectTrait},
prelude::data::{Covariates, Event, Infusion, OccasionTrait, Subject, SubjectTrait},
simulator::likelihood::ToPrediction,
};
// use diffsol::vector::Vector;

// use dashmap::mapref::entry::Entry;
// use dashmap::DashMap;
// use lazy_static::lazy_static;
use ndarray::prelude::*;
// use ndarray::Array1;
use cache::*;
use ndarray::Array2;

pub type T = f64;
// pub type V = faer::Col<T>;
Expand Down Expand Up @@ -214,6 +219,30 @@ impl Equation {
}
}

pub fn get_population_predictions<'a>(
equation: &'a Equation,
subjects: &Vec<Subject>,
support_points: &Array2<f64>,
_cache: bool,
) -> PopulationPredictions {
let mut pred = Array2::default((subjects.len(), support_points.nrows()).f());
pred.axis_iter_mut(Axis(0))
.into_par_iter()
.enumerate()
.for_each(|(i, mut row)| {
row.axis_iter_mut(Axis(0))
.into_par_iter()
.enumerate()
.for_each(|(j, mut element)| {
let subject = subjects.get(i).unwrap();
let ypred =
equation.simulate_subject(subject, support_points.row(j).to_vec().as_ref());
element.fill(ypred);
});
});
pred.into()
}

trait FromVec {
fn from_vec(vec: Vec<f64>) -> Self;
}
Expand Down

0 comments on commit a831075

Please sign in to comment.