Package: PESTO 0.10.1

Max Moldovan

PESTO: Parameter Estimation Optimised, with APSIM Coupling

High-performance parameter estimation, uncertainty quantification, and inverse modelling toolkit built on modernised PEST++ algorithms. Provides native R interfaces to iterative ensemble smoothers (IES), Gauss-Levenberg-Marquardt (GLM) solvers, global sensitivity analysis, and multi-objective optimisation under uncertainty. Includes surrogate-accelerated IES via Gaussian Process and Random Fourier Features, adaptive SVD backends (randomised SVD, LAPACK, Eigen), and convergence-aware adaptive ensemble sizing. Designed for large-scale environmental, hydrological, and agricultural models with support for highly-parameterised problems (>100,000 parameters). The toolkit is model-independent -- any R function can serve as the forward model -- with first-class in-process coupling to the APSIM agricultural-systems model via the 'apsimx' package as its flagship simulator partner.

Authors:Max Moldovan [aut, cre, cph]

PESTO_0.10.1.tar.gz
PESTO_0.10.1.zip(r-4.7)PESTO_0.10.1.zip(r-4.6)PESTO_0.10.1.zip(r-4.5)
PESTO_0.10.1.tgz(r-4.6-x86_64)PESTO_0.10.1.tgz(r-4.6-arm64)PESTO_0.10.1.tgz(r-4.5-x86_64)PESTO_0.10.1.tgz(r-4.5-arm64)
PESTO_0.10.1.tar.gz(r-4.7-arm64)PESTO_0.10.1.tar.gz(r-4.7-x86_64)PESTO_0.10.1.tar.gz(r-4.6-arm64)PESTO_0.10.1.tar.gz(r-4.6-x86_64)
manual.pdf |manual.html
DESCRIPTION |NEWS
card.svg |card.png
PESTO/json (API)

# Install 'PESTO' in R:
install.packages('PESTO', repos = c('https://max578.r-universe.dev', 'https://cloud.r-project.org'))

Bug tracker:https://github.com/max578/pesto/issues

Pkgdown/docs site:https://max578.github.io

Uses libs:
  • openblas– Optimized BLAS
  • c++– GNU Standard C++ Library v3

On CRAN:

Conda:

openblascpp

5.02 score 1 packages 11 scripts 57 exports 22 dependencies

Last updated from:283644fc36 (on main). Checks:12 OK, 1 FAIL. Indexed: yes.

TargetResultTimeFilesSyslog
linux-devel-arm64OK243
linux-devel-x86_64OK258
source / vignettesOK363
linux-release-arm64OK247
linux-release-x86_64OK249
macos-release-arm64OK180
macos-release-x86_64OK323
macos-oldrel-arm64OK197
macos-oldrel-x86_64OK311
windows-develOK257
windows-releaseOK244
windows-oldrelOK235
wasm-releaseFAIL177

Exports:accelerate_svdadaptive_ensemble_sizeadaptive_svdapsim_callbackas_forward_modelas_manifestcheck_surrogate_regimecompute_phicorrelation_localisationcreate_pest_scenariocrop_growth_forward_modelensemble_solutionensemble_solution_adaptiveensemble_solution_gpuensemble_solution_localisedensemble_solution_mdaensemble_spread_essgaspari_cohnmf_control_variateode_forward_modelpesto_ensemble_manifestpesto_evaluatepesto_forward_modelpesto_glmpesto_iespesto_ies_callbackpesto_ies_filterpesto_inflationpesto_localisationpesto_multifidelity_modelpesto_obs_schemapesto_reference_iespesto_sensitivitypesto_surrogate_iespesto_sweeppesto_versionpestpp_availableplot_ensembleplot_identifiabilityplot_phiplot_surrogate_diagnosticspredict_gp_surrogatepredict_gp_surrogate_tunedpredict_rff_surrogateread_ensembleread_manifestread_pstrsvdseir_forward_modelsurrogate_ensemble_updatetrain_gp_surrogatetrain_gp_surrogate_tunedtrain_rff_surrogateverify_manifestwrite_ensemblewrite_manifestwrite_pst

Dependencies:clicpp11data.tabledigestfarverggplot2gluegtableisobandlabelinglifecycleR6RColorBrewerRcppRcppEigenrlangS7scalesvctrsviridisLitewithryaml

Benchmarking PESTO against PEST and PEST++
Overview | Lineage and scope | Cross-tool benchmark: PESTO vs PEST vs PEST++ | Accuracy, calibration, and cost | Interpretation | Performance characteristics | A worked example: a well-posed inverse problem | The problem | Building a PEST control file | Running PESTO | Comparison with the reference smoother | Limits | Reproducibility | References

Last update: 2026-06-29
Started: 2026-04-25

Calibrating APSIM Wheat with PESTO: a case study
Why this study | The calibration target | The synthetic observations | The calibration | Convergence | Parameter recovery | Identifiability -- what the data can constrain | Out-of-sample validation -- and the under-dispersion caveat | The ensemble manifest | Part 2 -- calibration to real observed data | Estimates, with an independent cross-check | Reproducibility | What this study shows | References

Last update: 2026-06-29
Started: 2026-06-28

Calibrating APSIM with PESTO (in-process callback)
Why a callback driver? | A synthetic recovery example | The forward-model contract | Parallel, fault-tolerant ensembles | Guard: calibrate to field-realistic uncertainty, not the mean's standard error | Driving APSIM through apsim_callback() | Failure handling | Concurrency | Multi-fidelity calibration | ODE / compartmental forward-model templates | Sequential (filter-mode) assimilation | When to prefer pesto_ies() instead | Reproducibility

Last update: 2026-06-29
Started: 2026-05-18

Countering Ensemble Collapse: Inflation and Localisation
The problem: finite-ensemble under-dispersion | A linear-Gaussian problem with a known posterior | The bare smoother collapses | Inflation re-expands the spread | Localisation suppresses spurious correlations | References | Session information

Last update: 2026-06-29
Started: 2026-06-02

Getting Started with PESTO
Introduction | Key features | Installation | Quick start: creating a model scenario | Core computational kernel | Performance benchmarking | Computing phi (the objective function) | Visualisation | Adaptive SVD backends | Adaptive-backend ensemble solution | Surrogate-accelerated IES | Adaptive ensemble sizing | Next steps | References

Last update: 2026-06-29
Started: 2026-04-09

Surrogate-accelerated iterative ensemble smoother
Overview | Regime of applicability | The test problem | Step 1: generate the prior ensemble | Step 2: train the GP surrogate | Step 3: evaluate surrogate predictions | Step 4: surrogate-assisted IES update | Comparison: standard vs surrogate | When the surrogate pays off | Effect of nonlinearity | Random Fourier features for large ensembles | Scaling comparison | When does the surrogate help? | References

Last update: 2026-06-29
Started: 2026-04-09

The Ensemble-Run Manifest: a Portable, Verifiable Record
Why a manifest? | Constructing a manifest from an IES run | Writing, reading, and verifying | Inspection CSVs (optional) | Tamper-detection | Consuming a manifest | Reproducibility

Last update: 2026-06-29
Started: 2026-05-18

Readme and manuals

Help Manual

Help pageTopics
Hardware-Accelerated SVD via LAPACKaccelerate_svd
Adaptive Ensemble Sizingadaptive_ensemble_size
Adaptive SVD with Automatic Backend Selectionadaptive_svd
apsimx Forward-Model Adapter for PESTO IESapsim_callback
Coerce an object into a 'pesto_forward_model'as_forward_model
Convert a PESTO ensemble result into a 'pesto_ensemble_manifest'as_manifest
Check whether a surrogate-IES regime is favourablecheck_surrogate_regime
Compute Phi (Objective Function) for Ensemblecompute_phi
Correlation-Based Automatic Localisation Tapercorrelation_localisation
Create a PEST Scenario Programmaticallycreate_pest_scenario
Crop-Growth Forward Model (Logistic / Expolinear Biomass)crop_growth_forward_model
Ensemble Solution Kernel (GLM form)ensemble_solution
Ensemble Solution with Adaptive SVD Backendensemble_solution_adaptive
Deprecated: ensemble solution with adaptive SVD backendensemble_solution_gpu
Localised Ensemble Solution Kernel (explicit-gain GLM form)ensemble_solution_localised
Ensemble Solution Kernel (MDA / Evensen form)ensemble_solution_mda
Spectral Spread Effective Sample Size of a Parameter Ensembleensemble_spread_ess
Gaspari-Cohn Localisation Tapergaspari_cohn
Affine control-variate bias correction across fidelitiesmf_control_variate
Forward Model from a System of Ordinary Differential Equationsode_forward_model
PESTO Ensemble Manifest (S7 class)pesto_ensemble_manifest
Evaluate a PESTO forward modelpesto_evaluate
Forward-Model Contract (S7 class)pesto_forward_model
Run PEST++ GLM (Gauss-Levenberg-Marquardt)pesto_glm
Run PEST++ IES (Iterative Ensemble Smoother)pesto_ies
Run IES with an In-Process R Callback Forward Modelpesto_ies_callback
Run a Sequential (Filter-Mode) Iterative Ensemble Smootherpesto_ies_filter
Print and plot methods for PESTO ensemble-smoother resultspesto_ies_result-methods plot.pesto_ies_result print.pesto_ies_result
Covariance Inflation Specification for IESpesto_inflation
Covariance Localisation Specification for IESpesto_localisation
Multi-Fidelity Forward Model (S7 class)pesto_multifidelity_model
Build a grounded 'obs_schema' descriptor for a manifestpesto_obs_schema
Pure-R Reference IES Update — Chen & Oliver (2013) eq. 12pesto_reference_ies
Run PEST++ SEN (Global Sensitivity Analysis)pesto_sensitivity
Surrogate-Accelerated IES Iterationpesto_surrogate_ies
Run PEST++ SWP (Parametric Sweep)pesto_sweep
Get PESTO package version informationpesto_version
Is a PEST++ Executable Available?pestpp_available
Plot Ensemble Parameter Distributionsplot_ensemble
Plot Parameter Identifiabilityplot_identifiability
Plot Objective Function (Phi) Convergenceplot_phi
Plot Surrogate Diagnosticsplot_surrogate_diagnostics
Predict with GP Surrogate (with Uncertainty)predict_gp_surrogate
Predict from an MLE-Tuned GP Surrogatepredict_gp_surrogate_tuned
Predict with RFF Sparse GP Surrogatepredict_rff_surrogate
Print method for pesto_pst objectsprint.pesto_pst
Read an Ensemble Fileread_ensemble
Read a manifest from YAML + sidecar data filesread_manifest
Read a PEST Control File (.pst)read_pst
Randomised SVD (Halko-Martinsson-Tropp Algorithm)rsvd
SEIR Compartmental Forward Modelseir_forward_model
Surrogate-Accelerated Ensemble Updatesurrogate_ensemble_update
Train a Gaussian Process Surrogatetrain_gp_surrogate
Train a GP Surrogate with Maximum-Likelihood (Anisotropic) Length Scalestrain_gp_surrogate_tuned
Train a Sparse GP Surrogate via Random Fourier Featurestrain_rff_surrogate
Verify the integrity of a manifestverify_manifest
Write an Ensemble Filewrite_ensemble
Write a manifest to YAML + sidecar data fileswrite_manifest
Write a PEST Control File (.pst)write_pst