From f67330ab37d483e1ee3f925ec8ade21afbcddfca Mon Sep 17 00:00:00 2001 From: Markus Date: Sat, 11 Apr 2026 09:39:07 +0200 Subject: [PATCH] feat: Bump pharmsol and update examples Cache is now enabled by default, so reducing verbosity --- Cargo.toml | 2 +- benches/bimodal_ke.rs | 1 - examples/bestdose.rs | 3 +-- examples/bestdose_auc.rs | 3 +-- examples/bestdose_bounds.rs | 3 +-- examples/bimodal_ke/main.rs | 3 +-- examples/drusano/main.rs | 3 +-- examples/iov/main.rs | 3 +-- examples/meta/main.rs | 3 +-- examples/neely/main.rs | 3 +-- examples/new_iov/main.rs | 3 +-- examples/theophylline/main.rs | 3 +-- examples/two_eq_lag/main.rs | 3 +-- examples/vanco.rs | 3 +-- examples/vanco_sde/main.rs | 3 +-- tests/bestdose_tests.rs | 43 ++++++++++++----------------------- tests/onecomp.rs | 9 +++----- 17 files changed, 31 insertions(+), 63 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 4623b7acb..c3a5d1538 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,7 +28,7 @@ tracing-subscriber = { version = "0.3.19", features = [ "time", ] } faer = "0.24.0" -pharmsol = "=0.25" +pharmsol = "=0.26" rand = "0.9.0" anyhow = "1.0.100" rayon = "1.10.0" diff --git a/benches/bimodal_ke.rs b/benches/bimodal_ke.rs index fc0d5d01d..b8ce6c55e 100644 --- a/benches/bimodal_ke.rs +++ b/benches/bimodal_ke.rs @@ -18,7 +18,6 @@ fn create_equation() -> equation::ODE { y[1] = x[0] / v; }, ) - .with_default_cache() } fn create_parameters() -> Parameters { diff --git a/examples/bestdose.rs b/examples/bestdose.rs index 3fa34c8fc..6968514a6 100644 --- a/examples/bestdose.rs +++ b/examples/bestdose.rs @@ -16,8 +16,7 @@ fn main() -> Result<()> { fetch_params!(p, _ke, v); y[0] = x[0] / v; }, - } - .with_default_cache(); + }; let params = Parameters::new() .add("ke", 0.001, 3.0) diff --git a/examples/bestdose_auc.rs b/examples/bestdose_auc.rs index 475b72562..70aecb429 100644 --- a/examples/bestdose_auc.rs +++ b/examples/bestdose_auc.rs @@ -19,8 +19,7 @@ fn main() -> Result<()> { fetch_params!(p, _ke, v); y[0] = x[0] / v; }, - } - .with_default_cache(); + }; // Minimal parameter ranges let params = Parameters::new() diff --git a/examples/bestdose_bounds.rs b/examples/bestdose_bounds.rs index 7c57fbd4a..4b2eab3bb 100644 --- a/examples/bestdose_bounds.rs +++ b/examples/bestdose_bounds.rs @@ -19,8 +19,7 @@ fn main() -> Result<()> { fetch_params!(p, _ke, v); y[0] = x[0] / v; }, - } - .with_default_cache(); + }; let params = Parameters::new() .add("ke", 0.001, 3.0) diff --git a/examples/bimodal_ke/main.rs b/examples/bimodal_ke/main.rs index 58e2d008b..b4796a710 100644 --- a/examples/bimodal_ke/main.rs +++ b/examples/bimodal_ke/main.rs @@ -13,8 +13,7 @@ fn main() -> Result<()> { y[1] = x[0] / v; }, } - .with_solver(OdeSolver::ExplicitRk(ExplicitRkTableau::Tsit45)) - .with_default_cache(); + .with_solver(OdeSolver::ExplicitRk(ExplicitRkTableau::Tsit45)); let params = Parameters::new() .add("ke", 0.001, 3.0) diff --git a/examples/drusano/main.rs b/examples/drusano/main.rs index 58ec866ed..640fb20eb 100644 --- a/examples/drusano/main.rs +++ b/examples/drusano/main.rs @@ -69,8 +69,7 @@ fn main() -> Result<()> { y[3] = x[3].log10(); y[4] = x[4].log10(); }, - } - .with_default_cache(); + }; let params = Parameters::new() .add("v1", 5.0, 160.0) diff --git a/examples/iov/main.rs b/examples/iov/main.rs index 53abf12db..222015dfc 100644 --- a/examples/iov/main.rs +++ b/examples/iov/main.rs @@ -29,8 +29,7 @@ fn main() -> Result<()> { ) .with_nstates(2) .with_ndrugs(1) - .with_nout(1) - .with_default_cache(); + .with_nout(1); let params = Parameters::new().add("ke0", 0.001, 2.0); diff --git a/examples/meta/main.rs b/examples/meta/main.rs index 46f7fed41..61dc77ebf 100644 --- a/examples/meta/main.rs +++ b/examples/meta/main.rs @@ -26,8 +26,7 @@ fn main() { y[1] = x[0] / v; y[2] = x[1] / v2; }, - } - .with_default_cache(); + }; let params = Parameters::new() .add("cls", 0.1, 10.0) diff --git a/examples/neely/main.rs b/examples/neely/main.rs index a61f700ca..51883c1ae 100644 --- a/examples/neely/main.rs +++ b/examples/neely/main.rs @@ -45,8 +45,7 @@ fn main() { y[2] = x[2] / vm1; y[3] = x[3] / vm2; }, - } - .with_default_cache(); + }; let params = Parameters::new() .add("cls", 0.0, 0.4) diff --git a/examples/new_iov/main.rs b/examples/new_iov/main.rs index d50a9a970..6cf4e2094 100644 --- a/examples/new_iov/main.rs +++ b/examples/new_iov/main.rs @@ -29,8 +29,7 @@ fn main() { ) .with_nstates(2) .with_ndrugs(1) - .with_nout(1) - .with_default_cache(); + .with_nout(1); let params = Parameters::new() .add("ke0", 0.0001, 2.4) diff --git a/examples/theophylline/main.rs b/examples/theophylline/main.rs index 8eb78e3b4..9addb5e2f 100644 --- a/examples/theophylline/main.rs +++ b/examples/theophylline/main.rs @@ -11,8 +11,7 @@ fn main() { fetch_params!(p, _ka, _ke, v); y[0] = x[1] * 1000.0 / v; }, - ) - .with_default_cache(); + ); let params = Parameters::new() .add("ka", 0.001, 3.0) diff --git a/examples/two_eq_lag/main.rs b/examples/two_eq_lag/main.rs index ed4dd2fc1..92454a6b6 100644 --- a/examples/two_eq_lag/main.rs +++ b/examples/two_eq_lag/main.rs @@ -20,8 +20,7 @@ fn main() { fetch_params!(p, _ka, _ke, _tlag, v); y[1] = x[1] / v; }, - } - .with_default_cache(); + }; // let eq = Equation::new_analytical( // one_compartment_with_absorption, // |_p, _cov| {}, diff --git a/examples/vanco.rs b/examples/vanco.rs index 7e111f34a..f76b60c67 100644 --- a/examples/vanco.rs +++ b/examples/vanco.rs @@ -12,8 +12,7 @@ fn main() { out: |x, _p, _t, _cov, y| { y[0] = x[1]; }, - } - .with_default_cache(); + }; // same eq but analytical // let eq = Equation::new_analytical( // two_compartments, diff --git a/examples/vanco_sde/main.rs b/examples/vanco_sde/main.rs index f600251d5..a0837f97f 100644 --- a/examples/vanco_sde/main.rs +++ b/examples/vanco_sde/main.rs @@ -27,8 +27,7 @@ fn main() { y[0] = x[1] / (vol * wt); }, 100, - ) - .with_default_cache(); + ); // let ode = equation::ODE::new( // |x, p, _t, dx, _rateiv, _cov| { diff --git a/tests/bestdose_tests.rs b/tests/bestdose_tests.rs index 57118c86a..145bf11ae 100644 --- a/tests/bestdose_tests.rs +++ b/tests/bestdose_tests.rs @@ -21,8 +21,7 @@ fn test_infusion_mask_inclusion() -> Result<()> { fetch_params!(p, _ke, v); y[0] = x[0] / v; }, - ) - .with_default_cache(); + ); let params = Parameters::new().add("ke", 0.1, 0.5).add("v", 40.0, 60.0); @@ -137,8 +136,7 @@ fn test_fixed_infusion_preservation() -> Result<()> { fetch_params!(p, _ke, v); y[0] = x[0] / v; }, - ) - .with_default_cache(); + ); let params = Parameters::new() .add("ke", 0.001, 3.0) @@ -231,8 +229,7 @@ fn test_dose_count_validation() -> Result<()> { fetch_params!(p, _ke, v); y[0] = x[0] / v; }, - ) - .with_default_cache(); + ); let params = Parameters::new().add("ke", 0.1, 0.5).add("v", 40.0, 60.0); let ems = AssayErrorModels::new().add( @@ -302,8 +299,7 @@ fn test_empty_observations_validation() -> Result<()> { fetch_params!(p, _ke, v); y[0] = x[0] / v; }, - ) - .with_default_cache(); + ); let params = Parameters::new().add("ke", 0.1, 0.5).add("v", 40.0, 60.0); let ems = AssayErrorModels::new().add( @@ -363,8 +359,7 @@ fn test_basic_auc_mode() -> Result<()> { fetch_params!(p, _ke, v); y[0] = x[0] / v; }, - ) - .with_default_cache(); + ); let params = Parameters::new().add("ke", 0.1, 0.5).add("v", 40.0, 60.0); @@ -449,8 +444,7 @@ fn test_infusion_auc_mode() -> Result<()> { fetch_params!(p, _ke, v); y[0] = x[0] / v; }, - ) - .with_default_cache(); + ); let params = Parameters::new().add("ke", 0.1, 0.5).add("v", 40.0, 60.0); @@ -554,8 +548,7 @@ fn test_multi_outeq_auc_mode() -> Result<()> { y[0] = x[0] / v; // outeq 0: concentration y[1] = x[0]; // outeq 1: amount }, - ) - .with_default_cache(); + ); let params = Parameters::new().add("ke", 0.1, 0.5).add("v", 40.0, 60.0); @@ -625,8 +618,7 @@ fn test_multi_outeq_auc_optimization() -> Result<()> { y[0] = x[0] / v; y[1] = x[0]; }, - ) - .with_default_cache(); + ); let params = Parameters::new().add("ke", 0.1, 0.5).add("v", 40.0, 60.0); let error_model = AssayErrorModel::additive(ErrorPoly::new(0.0, 5.0, 0.0, 0.0), 0.0); @@ -711,8 +703,7 @@ fn test_auc_from_zero_single_dose() -> Result<()> { fetch_params!(p, _ke, v); y[0] = x[0] / v; }, - ) - .with_default_cache(); + ); let params = Parameters::new().add("ke", 0.2, 0.4).add("v", 40.0, 60.0); @@ -796,8 +787,7 @@ fn test_auc_from_last_dose_maintenance() -> Result<()> { fetch_params!(p, _ke, v); y[0] = x[0] / v; }, - ) - .with_default_cache(); + ); let params = Parameters::new().add("ke", 0.2, 0.4).add("v", 40.0, 60.0); @@ -885,8 +875,7 @@ fn test_auc_modes_comparison() -> Result<()> { fetch_params!(p, _ke, v); y[0] = x[0] / v; }, - ) - .with_default_cache(); + ); let params = Parameters::new().add("ke", 0.3, 0.3).add("v", 50.0, 50.0); @@ -1015,8 +1004,7 @@ fn test_auc_from_last_dose_multiple_observations() -> Result<()> { fetch_params!(p, _ke, v); y[0] = x[0] / v; }, - ) - .with_default_cache(); + ); let params = Parameters::new().add("ke", 0.2, 0.4).add("v", 40.0, 60.0); @@ -1110,8 +1098,7 @@ fn test_auc_from_last_dose_no_prior_dose() -> Result<()> { fetch_params!(p, _ke, v); y[0] = x[0] / v; }, - ) - .with_default_cache(); + ); let params = Parameters::new().add("ke", 0.2, 0.4).add("v", 40.0, 60.0); @@ -1200,8 +1187,7 @@ fn test_dose_range_bounds_respected() -> Result<()> { fetch_params!(p, _ke, v); y[0] = x[0] / v; }, - ) - .with_default_cache(); + ); let params = Parameters::new().add("ke", 0.1, 0.5).add("v", 40.0, 60.0); @@ -1295,7 +1281,6 @@ fn one_compartment_model() -> pharmsol::ODE { y[0] = x[0] / v; }, ) - .with_default_cache() } /// Helper to build minimal settings for tests (no posterior refinement) diff --git a/tests/onecomp.rs b/tests/onecomp.rs index 3f20ed9b4..58230aca0 100644 --- a/tests/onecomp.rs +++ b/tests/onecomp.rs @@ -16,8 +16,7 @@ fn test_one_compartment_npag() -> Result<()> { fetch_params!(p, v); y[0] = x[0] / v; }, - ) - .with_default_cache(); + ); // Define parameters let params = Parameters::new().add("ke", 0.1, 1.0).add("v", 1.0, 20.0); @@ -84,8 +83,7 @@ fn test_one_compartment_npod() -> Result<()> { fetch_params!(p, v); y[0] = x[0] / v; }, - ) - .with_default_cache(); + ); // Define parameters let params = Parameters::new().add("ke", 0.1, 1.0).add("v", 1.0, 20.0); @@ -152,8 +150,7 @@ fn test_one_compartment_postprob() -> Result<()> { fetch_params!(p, v); y[0] = x[0] / v; }, - ) - .with_default_cache(); + ); // Define parameters let params = Parameters::new().add("ke", 0.1, 1.0).add("v", 1.0, 20.0);