{
  "_id": "6a5f3e6614e95619b75d5f7c",
  "Package": "PESTO",
  "Type": "Package",
  "Title": "Parameter Estimation Optimised, with APSIM Coupling",
  "Version": "0.10.1",
  "Authors@R": "c(\nperson(\"Max\", \"Moldovan\",\nrole = c(\"aut\", \"cre\", \"cph\"),\nemail = \"max.moldovan@adelaide.edu.au\",\ncomment = c(ORCID = \"0000-0001-9680-8474\"))\n)",
  "Description": "High-performance parameter estimation, uncertainty\nquantification, and inverse modelling toolkit built on\nmodernised PEST++ algorithms. Provides native R interfaces to\niterative ensemble smoothers (IES), Gauss-Levenberg-Marquardt\n(GLM) solvers, global sensitivity analysis, and multi-objective\noptimisation under uncertainty. Includes surrogate-accelerated\nIES via Gaussian Process and Random Fourier Features, adaptive\nSVD backends (randomised SVD, LAPACK, Eigen), and\nconvergence-aware adaptive ensemble sizing. Designed for\nlarge-scale environmental, hydrological, and agricultural\nmodels with support for highly-parameterised problems (>100,000\nparameters). The toolkit is model-independent -- any R function\ncan serve as the forward model -- with first-class in-process\ncoupling to the APSIM agricultural-systems model via the\n'apsimx' package as its flagship simulator partner.",
  "License": "GPL (>= 3)",
  "URL": "https://github.com/max578/PESTO, https://max578.github.io/PESTO/",
  "BugReports": "https://github.com/max578/PESTO/issues",
  "Encoding": "UTF-8",
  "Language": "en-AU",
  "Roxygen": "list(markdown = TRUE, roclets = c(\"namespace\", \"rd\",\n\"srr::srr_stats_roclet\"))",
  "RoxygenNote": "7.3.3",
  "SystemRequirements": "C++17",
  "VignetteBuilder": "knitr",
  "Config/testthat/edition": "3",
  "Repository": "https://max578.r-universe.dev",
  "Date/Publication": "2026-07-16 02:02:54 UTC",
  "RemoteUrl": "https://github.com/max578/PESTO",
  "RemoteRef": "main",
  "RemoteSha": "283644fc365677fd7c12f0cdc53f91a7f4f55527",
  "NeedsCompilation": "yes",
  "Packaged": {
    "Date": "2026-07-21 09:32:24 UTC",
    "User": "root"
  },
  "Author": "Max Moldovan [aut, cre, cph] (ORCID:\n<https://orcid.org/0000-0001-9680-8474>)",
  "Maintainer": "Max Moldovan <max.moldovan@adelaide.edu.au>",
  "_user": "max578",
  "_type": "src",
  "_file": "PESTO_0.10.1.tar.gz",
  "_fileid": "https://r2.ropensci.org/5e214f464033ed56b8bdfa6ee87d1859a37552be75d015917b3fa87bb9f62dff",
  "_filesize": 2043966,
  "_sha256": "5e214f464033ed56b8bdfa6ee87d1859a37552be75d015917b3fa87bb9f62dff",
  "_expires": "2026-10-29T09:39:48.000Z",
  "_created": "2026-07-21T09:32:24.000Z",
  "_published": "2026-07-21T09:39:49.989Z",
  "_jobs": [
    {
      "job": 88596293789,
      "time": 243,
      "config": "linux-devel-arm64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "8490554770"
    },
    {
      "job": 88596293745,
      "time": 258,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "8490560522"
    },
    {
      "job": 88596293796,
      "time": 247,
      "config": "linux-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8490556446"
    },
    {
      "job": 88596293764,
      "time": 249,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8490556282"
    },
    {
      "job": 88596293826,
      "time": 197,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "8490533230"
    },
    {
      "job": 88596293854,
      "time": 311,
      "config": "macos-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "8490583077"
    },
    {
      "job": 88596294001,
      "time": 180,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8490525634"
    },
    {
      "job": 88596293849,
      "time": 323,
      "config": "macos-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8490588145"
    },
    {
      "job": 88594980168,
      "time": 363,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8490443030"
    },
    {
      "job": 88596293683,
      "time": 177,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "FAIL",
      "artifact": ""
    },
    {
      "job": 88596293721,
      "time": 257,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "8490559028"
    },
    {
      "job": 88596293731,
      "time": 235,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "8490549816"
    },
    {
      "job": 88596293714,
      "time": 244,
      "config": "windows-release",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8490554050"
    }
  ],
  "_host": "GitHub-Actions",
  "_buildurl": "https://github.com/r-universe/max578/actions/runs/29818362433",
  "_status": "success",
  "_upstream": "https://github.com/max578/PESTO",
  "_commit": {
    "id": "283644fc365677fd7c12f0cdc53f91a7f4f55527",
    "author": "Max Moldovan <max.moldovan@gmail.com>",
    "committer": "Max Moldovan <max.moldovan@gmail.com>",
    "message": "chore: release 0.10.1\n\nThe APSIM discovery fix landed after the 0.10.0 tag, so it gets its own\nversion. Bugfix only: no interface changes.\n\n0.10.0 fixed how the APSIM version is READ (a8bee8a: Models --version rather\nthan apsimx::apsim_version(), which scans /Applications folder names). This\nfixes whether the engine is FOUND at all. Both were needed -- without the\nlookup, the correct reader still returned NA on a machine with a working\nengine.\n",
    "time": 1784167374
  },
  "_maintainer": {
    "name": "Max Moldovan",
    "email": "max.moldovan@adelaide.edu.au",
    "orcid": "0000-0001-9680-8474"
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1.0",
      "role": "Depends"
    },
    {
      "package": "Rcpp",
      "role": "LinkingTo"
    },
    {
      "package": "RcppEigen",
      "role": "LinkingTo"
    },
    {
      "package": "Rcpp",
      "version": ">= 1.0.12",
      "role": "Imports"
    },
    {
      "package": "data.table",
      "role": "Imports"
    },
    {
      "package": "ggplot2",
      "role": "Imports"
    },
    {
      "package": "parallel",
      "role": "Imports"
    },
    {
      "package": "S7",
      "version": ">= 0.2.0",
      "role": "Imports"
    },
    {
      "package": "yaml",
      "version": ">= 2.3.0",
      "role": "Imports"
    },
    {
      "package": "digest",
      "version": ">= 0.6.0",
      "role": "Imports"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "viridis",
      "role": "Suggests"
    },
    {
      "package": "microbenchmark",
      "role": "Suggests"
    },
    {
      "package": "Matrix",
      "role": "Suggests"
    },
    {
      "package": "apsimx",
      "version": ">= 2.7.0",
      "role": "Suggests"
    },
    {
      "package": "deSolve",
      "version": ">= 1.30",
      "role": "Suggests"
    },
    {
      "package": "srr",
      "role": "Suggests"
    }
  ],
  "_owner": "max578",
  "_selfowned": true,
  "_usedby": 1,
  "_updates": [
    {
      "week": "2026-15",
      "n": 2
    },
    {
      "week": "2026-17",
      "n": 1
    },
    {
      "week": "2026-21",
      "n": 4
    },
    {
      "week": "2026-22",
      "n": 7
    },
    {
      "week": "2026-23",
      "n": 8
    },
    {
      "week": "2026-24",
      "n": 3
    },
    {
      "week": "2026-26",
      "n": 28
    },
    {
      "week": "2026-27",
      "n": 7
    },
    {
      "week": "2026-29",
      "n": 7
    }
  ],
  "_tags": [
    {
      "name": "v0.2.0",
      "date": "2026-04-25"
    },
    {
      "name": "v0.3.3",
      "date": "2026-05-18"
    },
    {
      "name": "v0.4.0",
      "date": "2026-05-27"
    },
    {
      "name": "v0.4.1",
      "date": "2026-05-28"
    },
    {
      "name": "v0.5.0",
      "date": "2026-06-02"
    },
    {
      "name": "v0.6.0",
      "date": "2026-06-02"
    },
    {
      "name": "v0.7.0",
      "date": "2026-06-13"
    },
    {
      "name": "v0.8.0",
      "date": "2026-06-27"
    },
    {
      "name": "v0.9.0",
      "date": "2026-07-02"
    },
    {
      "name": "v0.10.0",
      "date": "2026-07-16"
    },
    {
      "name": "v0.10.1",
      "date": "2026-07-16"
    }
  ],
  "_stars": 0,
  "_contributors": [
    {
      "user": "max578",
      "count": 72,
      "uuid": 35710829
    }
  ],
  "_userbio": {
    "uuid": 35710829,
    "type": "user",
    "name": "Max Moldovan",
    "followers": 0,
    "description": "Research scientist, R&D translation professional, woking on practical impact applications in agriculture, healthcare/madicine and good-practices-AI education."
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/PESTO"
  },
  "_devurl": "https://github.com/max578/pesto",
  "_pkgdown": "https://max578.github.io/PESTO/",
  "_searchresults": 11,
  "_topics": [
    "openblas",
    "cpp"
  ],
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/PESTO.html",
    "extra/readme.html",
    "extra/readme.md",
    "manual.pdf"
  ],
  "_cranurl": false,
  "_exports": [
    "accelerate_svd",
    "adaptive_ensemble_size",
    "adaptive_svd",
    "apsim_callback",
    "as_forward_model",
    "as_manifest",
    "check_surrogate_regime",
    "compute_phi",
    "correlation_localisation",
    "create_pest_scenario",
    "crop_growth_forward_model",
    "ensemble_solution",
    "ensemble_solution_adaptive",
    "ensemble_solution_gpu",
    "ensemble_solution_localised",
    "ensemble_solution_mda",
    "ensemble_spread_ess",
    "gaspari_cohn",
    "mf_control_variate",
    "ode_forward_model",
    "pesto_ensemble_manifest",
    "pesto_evaluate",
    "pesto_forward_model",
    "pesto_glm",
    "pesto_ies",
    "pesto_ies_callback",
    "pesto_ies_filter",
    "pesto_inflation",
    "pesto_localisation",
    "pesto_multifidelity_model",
    "pesto_obs_schema",
    "pesto_reference_ies",
    "pesto_sensitivity",
    "pesto_surrogate_ies",
    "pesto_sweep",
    "pesto_version",
    "pestpp_available",
    "plot_ensemble",
    "plot_identifiability",
    "plot_phi",
    "plot_surrogate_diagnostics",
    "predict_gp_surrogate",
    "predict_gp_surrogate_tuned",
    "predict_rff_surrogate",
    "read_ensemble",
    "read_manifest",
    "read_pst",
    "rsvd",
    "seir_forward_model",
    "surrogate_ensemble_update",
    "train_gp_surrogate",
    "train_gp_surrogate_tuned",
    "train_rff_surrogate",
    "verify_manifest",
    "write_ensemble",
    "write_manifest",
    "write_pst"
  ],
  "_help": [
    {
      "page": "accelerate_svd",
      "title": "Hardware-Accelerated SVD via LAPACK",
      "topics": [
        "accelerate_svd"
      ]
    },
    {
      "page": "adaptive_ensemble_size",
      "title": "Adaptive Ensemble Sizing",
      "topics": [
        "adaptive_ensemble_size"
      ]
    },
    {
      "page": "adaptive_svd",
      "title": "Adaptive SVD with Automatic Backend Selection",
      "topics": [
        "adaptive_svd"
      ]
    },
    {
      "page": "apsim_callback",
      "title": "apsimx Forward-Model Adapter for PESTO IES",
      "topics": [
        "apsim_callback"
      ]
    },
    {
      "page": "as_forward_model",
      "title": "Coerce an object into a 'pesto_forward_model'",
      "topics": [
        "as_forward_model"
      ]
    },
    {
      "page": "as_manifest",
      "title": "Convert a PESTO ensemble result into a 'pesto_ensemble_manifest'",
      "topics": [
        "as_manifest"
      ]
    },
    {
      "page": "check_surrogate_regime",
      "title": "Check whether a surrogate-IES regime is favourable",
      "topics": [
        "check_surrogate_regime"
      ]
    },
    {
      "page": "compute_phi",
      "title": "Compute Phi (Objective Function) for Ensemble",
      "topics": [
        "compute_phi"
      ]
    },
    {
      "page": "correlation_localisation",
      "title": "Correlation-Based Automatic Localisation Taper",
      "topics": [
        "correlation_localisation"
      ]
    },
    {
      "page": "create_pest_scenario",
      "title": "Create a PEST Scenario Programmatically",
      "topics": [
        "create_pest_scenario"
      ]
    },
    {
      "page": "crop_growth_forward_model",
      "title": "Crop-Growth Forward Model (Logistic / Expolinear Biomass)",
      "topics": [
        "crop_growth_forward_model"
      ]
    },
    {
      "page": "ensemble_solution",
      "title": "Ensemble Solution Kernel (GLM form)",
      "topics": [
        "ensemble_solution"
      ]
    },
    {
      "page": "ensemble_solution_adaptive",
      "title": "Ensemble Solution with Adaptive SVD Backend",
      "topics": [
        "ensemble_solution_adaptive"
      ]
    },
    {
      "page": "ensemble_solution_gpu",
      "title": "Deprecated: ensemble solution with adaptive SVD backend",
      "topics": [
        "ensemble_solution_gpu"
      ]
    },
    {
      "page": "ensemble_solution_localised",
      "title": "Localised Ensemble Solution Kernel (explicit-gain GLM form)",
      "topics": [
        "ensemble_solution_localised"
      ]
    },
    {
      "page": "ensemble_solution_mda",
      "title": "Ensemble Solution Kernel (MDA / Evensen form)",
      "topics": [
        "ensemble_solution_mda"
      ]
    },
    {
      "page": "ensemble_spread_ess",
      "title": "Spectral Spread Effective Sample Size of a Parameter Ensemble",
      "topics": [
        "ensemble_spread_ess"
      ]
    },
    {
      "page": "gaspari_cohn",
      "title": "Gaspari-Cohn Localisation Taper",
      "topics": [
        "gaspari_cohn"
      ]
    },
    {
      "page": "mf_control_variate",
      "title": "Affine control-variate bias correction across fidelities",
      "topics": [
        "mf_control_variate"
      ]
    },
    {
      "page": "ode_forward_model",
      "title": "Forward Model from a System of Ordinary Differential Equations",
      "topics": [
        "ode_forward_model"
      ]
    },
    {
      "page": "pesto_ensemble_manifest",
      "title": "PESTO Ensemble Manifest (S7 class)",
      "topics": [
        "pesto_ensemble_manifest"
      ]
    },
    {
      "page": "pesto_evaluate",
      "title": "Evaluate a PESTO forward model",
      "topics": [
        "pesto_evaluate"
      ]
    },
    {
      "page": "pesto_forward_model",
      "title": "Forward-Model Contract (S7 class)",
      "topics": [
        "pesto_forward_model"
      ]
    },
    {
      "page": "pesto_glm",
      "title": "Run PEST++ GLM (Gauss-Levenberg-Marquardt)",
      "topics": [
        "pesto_glm"
      ]
    },
    {
      "page": "pesto_ies",
      "title": "Run PEST++ IES (Iterative Ensemble Smoother)",
      "topics": [
        "pesto_ies"
      ]
    },
    {
      "page": "pesto_ies_callback",
      "title": "Run IES with an In-Process R Callback Forward Model",
      "topics": [
        "pesto_ies_callback"
      ]
    },
    {
      "page": "pesto_ies_filter",
      "title": "Run a Sequential (Filter-Mode) Iterative Ensemble Smoother",
      "topics": [
        "pesto_ies_filter"
      ]
    },
    {
      "page": "pesto_ies_result-methods",
      "title": "Print and plot methods for PESTO ensemble-smoother results",
      "topics": [
        "pesto_ies_result-methods",
        "plot.pesto_ies_result",
        "print.pesto_ies_result"
      ]
    },
    {
      "page": "pesto_inflation",
      "title": "Covariance Inflation Specification for IES",
      "topics": [
        "pesto_inflation"
      ]
    },
    {
      "page": "pesto_localisation",
      "title": "Covariance Localisation Specification for IES",
      "topics": [
        "pesto_localisation"
      ]
    },
    {
      "page": "pesto_multifidelity_model",
      "title": "Multi-Fidelity Forward Model (S7 class)",
      "topics": [
        "pesto_multifidelity_model"
      ]
    },
    {
      "page": "pesto_obs_schema",
      "title": "Build a grounded 'obs_schema' descriptor for a manifest",
      "topics": [
        "pesto_obs_schema"
      ]
    },
    {
      "page": "pesto_reference_ies",
      "title": "Pure-R Reference IES Update — Chen & Oliver (2013) eq. 12",
      "topics": [
        "pesto_reference_ies"
      ]
    },
    {
      "page": "pesto_sensitivity",
      "title": "Run PEST++ SEN (Global Sensitivity Analysis)",
      "topics": [
        "pesto_sensitivity"
      ]
    },
    {
      "page": "pesto_surrogate_ies",
      "title": "Surrogate-Accelerated IES Iteration",
      "topics": [
        "pesto_surrogate_ies"
      ]
    },
    {
      "page": "pesto_sweep",
      "title": "Run PEST++ SWP (Parametric Sweep)",
      "topics": [
        "pesto_sweep"
      ]
    },
    {
      "page": "pesto_version",
      "title": "Get PESTO package version information",
      "topics": [
        "pesto_version"
      ]
    },
    {
      "page": "pestpp_available",
      "title": "Is a PEST++ Executable Available?",
      "topics": [
        "pestpp_available"
      ]
    },
    {
      "page": "plot_ensemble",
      "title": "Plot Ensemble Parameter Distributions",
      "topics": [
        "plot_ensemble"
      ]
    },
    {
      "page": "plot_identifiability",
      "title": "Plot Parameter Identifiability",
      "topics": [
        "plot_identifiability"
      ]
    },
    {
      "page": "plot_phi",
      "title": "Plot Objective Function (Phi) Convergence",
      "topics": [
        "plot_phi"
      ]
    },
    {
      "page": "plot_surrogate_diagnostics",
      "title": "Plot Surrogate Diagnostics",
      "topics": [
        "plot_surrogate_diagnostics"
      ]
    },
    {
      "page": "predict_gp_surrogate",
      "title": "Predict with GP Surrogate (with Uncertainty)",
      "topics": [
        "predict_gp_surrogate"
      ]
    },
    {
      "page": "predict_gp_surrogate_tuned",
      "title": "Predict from an MLE-Tuned GP Surrogate",
      "topics": [
        "predict_gp_surrogate_tuned"
      ]
    },
    {
      "page": "predict_rff_surrogate",
      "title": "Predict with RFF Sparse GP Surrogate",
      "topics": [
        "predict_rff_surrogate"
      ]
    },
    {
      "page": "print.pesto_pst",
      "title": "Print method for pesto_pst objects",
      "topics": [
        "print.pesto_pst"
      ]
    },
    {
      "page": "read_ensemble",
      "title": "Read an Ensemble File",
      "topics": [
        "read_ensemble"
      ]
    },
    {
      "page": "read_manifest",
      "title": "Read a manifest from YAML + sidecar data files",
      "topics": [
        "read_manifest"
      ]
    },
    {
      "page": "read_pst",
      "title": "Read a PEST Control File (.pst)",
      "topics": [
        "read_pst"
      ]
    },
    {
      "page": "rsvd",
      "title": "Randomised SVD (Halko-Martinsson-Tropp Algorithm)",
      "topics": [
        "rsvd"
      ]
    },
    {
      "page": "seir_forward_model",
      "title": "SEIR Compartmental Forward Model",
      "topics": [
        "seir_forward_model"
      ]
    },
    {
      "page": "surrogate_ensemble_update",
      "title": "Surrogate-Accelerated Ensemble Update",
      "topics": [
        "surrogate_ensemble_update"
      ]
    },
    {
      "page": "train_gp_surrogate",
      "title": "Train a Gaussian Process Surrogate",
      "topics": [
        "train_gp_surrogate"
      ]
    },
    {
      "page": "train_gp_surrogate_tuned",
      "title": "Train a GP Surrogate with Maximum-Likelihood (Anisotropic) Length Scales",
      "topics": [
        "train_gp_surrogate_tuned"
      ]
    },
    {
      "page": "train_rff_surrogate",
      "title": "Train a Sparse GP Surrogate via Random Fourier Features",
      "topics": [
        "train_rff_surrogate"
      ]
    },
    {
      "page": "verify_manifest",
      "title": "Verify the integrity of a manifest",
      "topics": [
        "verify_manifest"
      ]
    },
    {
      "page": "write_ensemble",
      "title": "Write an Ensemble File",
      "topics": [
        "write_ensemble"
      ]
    },
    {
      "page": "write_manifest",
      "title": "Write a manifest to YAML + sidecar data files",
      "topics": [
        "write_manifest"
      ]
    },
    {
      "page": "write_pst",
      "title": "Write a PEST Control File (.pst)",
      "topics": [
        "write_pst"
      ]
    }
  ],
  "_readme": "https://github.com/max578/PESTO/raw/main/README.md",
  "_rundeps": [
    "cli",
    "cpp11",
    "data.table",
    "digest",
    "farver",
    "ggplot2",
    "glue",
    "gtable",
    "isoband",
    "labeling",
    "lifecycle",
    "R6",
    "RColorBrewer",
    "Rcpp",
    "RcppEigen",
    "rlang",
    "S7",
    "scales",
    "vctrs",
    "viridisLite",
    "withr",
    "yaml"
  ],
  "_sysdeps": [
    {
      "shlib": "liblapack",
      "package": "libopenblas0-pthread",
      "source": "openblas",
      "version": "0.3.32+ds-5",
      "name": "openblas",
      "homepage": "https://www.openblas.net/",
      "description": "Optimized BLAS (linear algebra) library (shared lib, pthread)"
    },
    {
      "shlib": "libstdc++",
      "package": "libstdc++6",
      "source": "gcc",
      "version": "16-20260322-1ubuntu1",
      "name": "c++",
      "homepage": "http://gcc.gnu.org/",
      "description": "GNU Standard C++ Library v3"
    }
  ],
  "_vignettes": [
    {
      "source": "pestpp-comparison-and-simulation.Rmd",
      "filename": "pestpp-comparison-and-simulation.html",
      "title": "Benchmarking PESTO against PEST and PEST++",
      "engine": "knitr::rmarkdown",
      "headings": [
        "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"
      ],
      "created": "2026-04-25 12:05:53",
      "modified": "2026-06-29 01:15:40",
      "commits": 7
    },
    {
      "source": "apsim-case-study.Rmd",
      "filename": "apsim-case-study.html",
      "title": "Calibrating APSIM Wheat with PESTO: a case study",
      "engine": "knitr::rmarkdown",
      "headings": [
        "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"
      ],
      "created": "2026-06-28 02:49:40",
      "modified": "2026-06-29 01:15:40",
      "commits": 4
    },
    {
      "source": "apsim-callback.Rmd",
      "filename": "apsim-callback.html",
      "title": "Calibrating APSIM with PESTO (in-process callback)",
      "engine": "knitr::rmarkdown",
      "headings": [
        "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"
      ],
      "created": "2026-05-18 09:39:09",
      "modified": "2026-06-29 01:15:40",
      "commits": 9
    },
    {
      "source": "inflation-localisation.Rmd",
      "filename": "inflation-localisation.html",
      "title": "Countering Ensemble Collapse: Inflation and Localisation",
      "engine": "knitr::rmarkdown",
      "headings": [
        "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"
      ],
      "created": "2026-06-02 22:35:10",
      "modified": "2026-06-29 01:15:40",
      "commits": 2
    },
    {
      "source": "getting-started.Rmd",
      "filename": "getting-started.html",
      "title": "Getting Started with PESTO",
      "engine": "knitr::rmarkdown",
      "headings": [
        "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"
      ],
      "created": "2026-04-09 06:17:00",
      "modified": "2026-06-29 01:15:40",
      "commits": 8
    },
    {
      "source": "surrogate-ies.Rmd",
      "filename": "surrogate-ies.html",
      "title": "Surrogate-accelerated iterative ensemble smoother",
      "engine": "knitr::rmarkdown",
      "headings": [
        "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"
      ],
      "created": "2026-04-09 06:17:00",
      "modified": "2026-06-29 01:15:40",
      "commits": 6
    },
    {
      "source": "ensemble-manifest.Rmd",
      "filename": "ensemble-manifest.html",
      "title": "The Ensemble-Run Manifest: a Portable, Verifiable Record",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Why a manifest?",
        "Constructing a manifest from an IES run",
        "Writing, reading, and verifying",
        "Inspection CSVs (optional)",
        "Tamper-detection",
        "Consuming a manifest",
        "Reproducibility"
      ],
      "created": "2026-05-18 09:39:09",
      "modified": "2026-06-29 01:15:40",
      "commits": 5
    }
  ],
  "_score": 5.016824493667488,
  "_indexed": true,
  "_nocasepkg": "pesto",
  "_universes": [
    "max578"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.10.1",
      "date": "2026-07-21T09:36:30.000Z",
      "distro": "resolute",
      "arch": "aarch64",
      "commit": "283644fc365677fd7c12f0cdc53f91a7f4f55527",
      "fileid": "https://r2.ropensci.org/c9bd3eee0a72fda6b9ff48fa97b5a0a12f55278a40f09f57f263168396c20858",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/max578/actions/runs/29818362433"
    },
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.10.1",
      "date": "2026-07-21T09:36:12.000Z",
      "distro": "resolute",
      "arch": "x86_64",
      "commit": "283644fc365677fd7c12f0cdc53f91a7f4f55527",
      "fileid": "https://r2.ropensci.org/cc916425b915aef17b9966f9ac3acec26861b1657e024adbffebb7948da1c71c",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/max578/actions/runs/29818362433"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.10.1",
      "date": "2026-07-21T09:36:22.000Z",
      "distro": "resolute",
      "arch": "aarch64",
      "commit": "283644fc365677fd7c12f0cdc53f91a7f4f55527",
      "fileid": "https://r2.ropensci.org/fcab2183ba53d493e952a8cdc64e6b05717213bfaba72a5d235124bc27ad1682",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/max578/actions/runs/29818362433"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.10.1",
      "date": "2026-07-21T09:36:05.000Z",
      "distro": "resolute",
      "arch": "x86_64",
      "commit": "283644fc365677fd7c12f0cdc53f91a7f4f55527",
      "fileid": "https://r2.ropensci.org/6bc39d40a9ab1ee3e000b1e5ebd52cacd49c876398fd373e609b0a78210f0fd5",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/max578/actions/runs/29818362433"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.10.1",
      "date": "2026-07-21T09:35:35.000Z",
      "arch": "aarch64",
      "commit": "283644fc365677fd7c12f0cdc53f91a7f4f55527",
      "fileid": "https://r2.ropensci.org/3bd51ee197f790bbc8b712db19036fdd151f2fe29ef7664f15cae61d69b81914",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/max578/actions/runs/29818362433"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.10.1",
      "date": "2026-07-21T09:36:35.000Z",
      "arch": "x86_64",
      "commit": "283644fc365677fd7c12f0cdc53f91a7f4f55527",
      "fileid": "https://r2.ropensci.org/4bce41a190d1740b7ddb04c76a70c544d6e4531a656c7ec07384500a7a91319d",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/max578/actions/runs/29818362433"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.10.1",
      "date": "2026-07-21T09:35:23.000Z",
      "arch": "aarch64",
      "commit": "283644fc365677fd7c12f0cdc53f91a7f4f55527",
      "fileid": "https://r2.ropensci.org/d4d497380955df67a4085aea8f2d23f4b034f506988ccb48e0984de32ec9cd6e",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/max578/actions/runs/29818362433"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.10.1",
      "date": "2026-07-21T09:36:36.000Z",
      "arch": "x86_64",
      "commit": "283644fc365677fd7c12f0cdc53f91a7f4f55527",
      "fileid": "https://r2.ropensci.org/e8448903ec9fa091e91b09680f505940373a7de4d7f98c67c927a11aa4c2b30e",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/max578/actions/runs/29818362433"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.10.1",
      "date": "2026-07-21T09:35:06.000Z",
      "arch": "x86_64",
      "commit": "283644fc365677fd7c12f0cdc53f91a7f4f55527",
      "fileid": "https://r2.ropensci.org/150c31822e21fe55f2d372f2e6a47308cf950373db3fec91729609cc19e69238",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/max578/actions/runs/29818362433"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.10.1",
      "date": "2026-07-21T09:34:55.000Z",
      "arch": "x86_64",
      "commit": "283644fc365677fd7c12f0cdc53f91a7f4f55527",
      "fileid": "https://r2.ropensci.org/5ccfaa29adc59566bd0f3a0a5d6a0b29e72dcffa522b324ae86fd90252f5d73e",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/max578/actions/runs/29818362433"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.10.1",
      "date": "2026-07-21T09:35:08.000Z",
      "arch": "x86_64",
      "commit": "283644fc365677fd7c12f0cdc53f91a7f4f55527",
      "fileid": "https://r2.ropensci.org/68f73580cebbc121fa0e8d6b2d874b437343715de23f08188652fc28de600526",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/max578/actions/runs/29818362433"
    }
  ]
}