diff --git a/Cargo.toml b/Cargo.toml index 356ac27e..b5fe80d8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "pmcore" version = "0.10.0" -edition = "2021" +edition = "2024" authors = [ "Julián D. Otálvaro ", "Markus Hovd", diff --git a/benches/bimodal_ke.rs b/benches/bimodal_ke.rs index 68ef7701..769c0e60 100644 --- a/benches/bimodal_ke.rs +++ b/benches/bimodal_ke.rs @@ -1,5 +1,5 @@ use anyhow::Result; -use criterion::{criterion_group, criterion_main, Criterion}; +use criterion::{Criterion, criterion_group, criterion_main}; use pmcore::prelude::*; fn create_equation() -> equation::ODE { diff --git a/src/algorithms/mod.rs b/src/algorithms/mod.rs index b8e21b52..8f4887cb 100644 --- a/src/algorithms/mod.rs +++ b/src/algorithms/mod.rs @@ -204,11 +204,11 @@ pub trait Algorithms: Sync { } return Err(anyhow::anyhow!( - "The probability of {}/{} subjects is zero given the model. Affected subjects: {:?}", - indices.len(), - self.psi().matrix().nrows(), - zero_probability_subjects - )); + "The probability of {}/{} subjects is zero given the model. Affected subjects: {:?}", + indices.len(), + self.psi().matrix().nrows(), + zero_probability_subjects + )); } Ok(()) diff --git a/src/algorithms/npag.rs b/src/algorithms/npag.rs index f2490bb9..44142e1c 100644 --- a/src/algorithms/npag.rs +++ b/src/algorithms/npag.rs @@ -5,11 +5,11 @@ pub use crate::routines::evaluation::qr; use crate::routines::settings::Settings; use crate::routines::output::{CycleLog, NPCycle, NPResult}; -use crate::structs::psi::{calculate_psi, Psi}; +use crate::structs::psi::{Psi, calculate_psi}; use crate::structs::theta::Theta; -use anyhow::bail; use anyhow::Result; +use anyhow::bail; use pharmsol::prelude::{ data::{Data, ErrorModel, ErrorType}, simulator::Equation, diff --git a/src/algorithms/npod.rs b/src/algorithms/npod.rs index ec81a775..495171d3 100644 --- a/src/algorithms/npod.rs +++ b/src/algorithms/npod.rs @@ -8,26 +8,26 @@ use crate::{ }, }, structs::{ - psi::{calculate_psi, Psi}, + psi::{Psi, calculate_psi}, theta::Theta, }, }; -use anyhow::bail; use anyhow::Result; +use anyhow::bail; use faer_ext::IntoNdarray; use pharmsol::{ + Subject, prelude::{ data::{Data, ErrorModel}, simulator::Equation, }, - Subject, }; use faer::Col; use ndarray::{ - parallel::prelude::{IntoParallelRefMutIterator, ParallelIterator}, Array, Array1, ArrayBase, Dim, OwnedRepr, + parallel::prelude::{IntoParallelRefMutIterator, ParallelIterator}, }; use crate::routines::{initialization, optimization::SppOptimizer}; @@ -404,7 +404,8 @@ impl NPOD { indices.iter().map(|&i| subject[i].id()).collect(); return Err(anyhow::anyhow!( - "The probability of one or more subjects, given the model, is zero. The following subjects have zero probability: {:?}", zero_probability_subjects + "The probability of one or more subjects, given the model, is zero. The following subjects have zero probability: {:?}", + zero_probability_subjects )); } diff --git a/src/algorithms/postprob.rs b/src/algorithms/postprob.rs index fe0c880c..70067064 100644 --- a/src/algorithms/postprob.rs +++ b/src/algorithms/postprob.rs @@ -1,7 +1,7 @@ use crate::{ prelude::algorithms::Algorithms, structs::{ - psi::{calculate_psi, Psi}, + psi::{Psi, calculate_psi}, theta::Theta, }, }; diff --git a/src/lib.rs b/src/lib.rs index 86656daa..c410ba66 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -66,8 +66,8 @@ pub mod prelude { pub use super::HashMap; pub use super::Result; pub use crate::algorithms; - pub use crate::algorithms::dispatch_algorithm; pub use crate::algorithms::Algorithm; + pub use crate::algorithms::dispatch_algorithm; pub use crate::routines; pub use crate::routines::logger; @@ -89,6 +89,8 @@ pub mod prelude { } //traits + pub use pharmsol::ODE; + pub use pharmsol::SDE; pub use pharmsol::data::*; pub use pharmsol::equation::Equation; pub use pharmsol::equation::EquationTypes; @@ -96,8 +98,6 @@ pub mod prelude { pub use pharmsol::equation::*; pub use pharmsol::prelude::*; pub use pharmsol::simulator::*; - pub use pharmsol::ODE; - pub use pharmsol::SDE; //macros pub use pharmsol::fa; diff --git a/src/routines/evaluation/qr.rs b/src/routines/evaluation/qr.rs index ebb6b8ff..e19b6894 100644 --- a/src/routines/evaluation/qr.rs +++ b/src/routines/evaluation/qr.rs @@ -1,6 +1,6 @@ use crate::structs::psi::Psi; -use faer::linalg::solvers::ColPivQr; use faer::Mat; +use faer::linalg::solvers::ColPivQr; pub fn calculate_r(psi: &Psi) -> (Mat, Vec) { // Clone the matrix, as we will modify it diff --git a/src/routines/initialization/latin.rs b/src/routines/initialization/latin.rs index 9baffce8..416fb7b9 100644 --- a/src/routines/initialization/latin.rs +++ b/src/routines/initialization/latin.rs @@ -1,8 +1,8 @@ use anyhow::Result; use faer::Mat; +use rand::Rng; use rand::prelude::*; use rand::rngs::StdRng; -use rand::Rng; use crate::prelude::Parameters; use crate::structs::theta::Theta; diff --git a/src/routines/initialization/mod.rs b/src/routines/initialization/mod.rs index b3c1b142..fe797e47 100644 --- a/src/routines/initialization/mod.rs +++ b/src/routines/initialization/mod.rs @@ -1,7 +1,7 @@ use std::fs::File; use crate::structs::theta::Theta; -use anyhow::{bail, Context, Result}; +use anyhow::{Context, Result, bail}; use faer::Mat; use serde::{Deserialize, Serialize}; @@ -66,8 +66,8 @@ pub fn sample_space(settings: &Settings) -> Result { let prior = match settings.prior() { Prior::Sobol(points, seed) => sobol::generate(settings.parameters(), *points, *seed)?, Prior::Latin(points, seed) => latin::generate(settings.parameters(), *points, *seed)?, - Prior::File(ref path) => parse_prior(path, settings)?, - Prior::Theta(ref theta) => { + Prior::File(path) => parse_prior(path, settings)?, + Prior::Theta(theta) => { // If a custom prior is provided, return it directly return Ok(theta.clone()); } diff --git a/src/routines/logger.rs b/src/routines/logger.rs index 1d7d1b49..5d0ec245 100644 --- a/src/routines/logger.rs +++ b/src/routines/logger.rs @@ -3,12 +3,12 @@ use std::time::Instant; use crate::routines::output::OutputFile; use crate::routines::settings::Settings; use anyhow::Result; +use tracing_subscriber::EnvFilter; use tracing_subscriber::fmt::time::FormatTime; use tracing_subscriber::fmt::{self}; use tracing_subscriber::prelude::__tracing_subscriber_SubscriberExt; use tracing_subscriber::registry::Registry; use tracing_subscriber::util::SubscriberInitExt; -use tracing_subscriber::EnvFilter; /// Setup logging for the library /// diff --git a/src/routines/optimization/mod.rs b/src/routines/optimization/mod.rs index ae1a89a7..e0342a35 100644 --- a/src/routines/optimization/mod.rs +++ b/src/routines/optimization/mod.rs @@ -6,7 +6,7 @@ use ndarray::{Array1, Axis}; use pharmsol::prelude::{ data::{Data, ErrorModel}, - simulator::{psi, Equation}, + simulator::{Equation, psi}, }; pub struct SppOptimizer<'a, E: Equation> { diff --git a/src/routines/output.rs b/src/routines/output.rs index 85accaae..06465d54 100644 --- a/src/routines/output.rs +++ b/src/routines/output.rs @@ -1,7 +1,7 @@ use crate::prelude::*; use crate::structs::psi::Psi; use crate::structs::theta::Theta; -use anyhow::{bail, Context, Result}; +use anyhow::{Context, Result, bail}; use csv::WriterBuilder; use faer::linalg::zip::IntoView; use faer_ext::IntoNdarray; @@ -12,7 +12,7 @@ use serde::Serialize; // use pharmsol::Cache; use crate::routines::settings::Settings; use faer::{Col, Mat}; -use std::fs::{create_dir_all, File, OpenOptions}; +use std::fs::{File, OpenOptions, create_dir_all}; use std::path::{Path, PathBuf}; /// Defines the result objects from an NPAG run @@ -810,7 +810,12 @@ pub fn posterior_mean_median( // Check for compatible sizes if theta.nrows() != w.len() || theta.nrows() != psi.ncols() || psi.ncols() != w.len() { - bail!("Number of parameters and number of weights do not match, theta.nrows(): {}, w.len(): {}, psi.ncols(): {}", theta.nrows(), w.len(), psi.ncols()); + bail!( + "Number of parameters and number of weights do not match, theta.nrows(): {}, w.len(): {}, psi.ncols(): {}", + theta.nrows(), + w.len(), + psi.ncols() + ); } // Normalize psi to get probabilities of each spp for each id diff --git a/src/routines/settings.rs b/src/routines/settings.rs index 9d0b5754..6fe81d0e 100644 --- a/src/routines/settings.rs +++ b/src/routines/settings.rs @@ -1,7 +1,7 @@ use crate::algorithms::Algorithm; use crate::routines::initialization::Prior; use crate::routines::output::OutputFile; -use anyhow::{bail, Result}; +use anyhow::{Result, bail}; use pharmsol::prelude::data::ErrorType; use serde::{Deserialize, Serialize}; use serde_json; diff --git a/src/structs/psi.rs b/src/structs/psi.rs index 6f8330e4..18849c1c 100644 --- a/src/structs/psi.rs +++ b/src/structs/psi.rs @@ -2,10 +2,10 @@ use faer::Mat; use faer_ext::IntoFaer; use faer_ext::IntoNdarray; use ndarray::{Array2, ArrayView2}; -use pharmsol::prelude::simulator::psi; use pharmsol::Data; use pharmsol::Equation; use pharmsol::ErrorModel; +use pharmsol::prelude::simulator::psi; use super::theta::Theta;