EpiModel / swfcalib

https://epimodel.github.io/swfcalib/
Other
1 stars 0 forks source link

swfcalib

Lifecycle:
experimental CRAN
status R-CMD-check codecov

swfcalib is designed to automate the calibration of complex multi-parameters multi-outputs models ran on Slurm equipped HPC.

Should you use swfcalib

swfcalib is not the simplest calibration system to set up. It was designed to solve a specific set of problems listed below. If you already have a system that works well you should probably not consider swfcalib.

However, if you have the following issues, swfcalib may be for you:

By using slurmworkflow, swfcalib can implement a loop like behavior in Slurm without the need of a pilot job staying alive for the whole duration of the calibration process (sometimes several weeks).

swfcalib was created to calibrate epidemic models like this one. These models have around 20 free parameters to calibrate and 20 outcomes to be matched to observed targets. However, knowledge of the model allow us to define many conditional one to one relationship between parameters and outcomes. swfcalib can use this knowledge to split the calibration into multiple waves of simpler parallel calibration jobs.

Design

The calibration process follows a proposal, validation loop. Where the model is run with a set of parameters and new proposals are made according to the results. This goes on until the model is fully calibrated.

Terminology:

The specificity of swfcalib lies in the ability to try many proposal at once on an HPC, and to set up this proposal validation loop without a long running orchestrating job (pilot job).

The calibration is split into waves. Each wave can contains multiple jobs, each focusing on a set of parameters and related outcomes. This permits the parallel calibration of multiple independent parameters. At each iteration, the model is ran once per proposal, and each job gather the outcomes it needs to make its next proposal. Once all jobs in a wave are done, i.e. the parameters they govern are calibrated, the system moves to the next wave. This allows the sequential calibration of parameters when strong assumption about their independence can be made.

This design was crafted for the very noisy models where many replications are needed and where most parameters are independent or conditionally independent.

Versatility

swfcalib makes no assumptions on how a set of parameters should be changed and how the quality of fit is assessed. It is up to the user to provide the mechanism to:

swfcalib provides some pre-built functions for this. See the getting started vignette.

Installation

You can install the development version of swfcalib like so:

remotes::install_github("EpiModel/swfcalib")

Example

library(swfcalib)