Recent outbreaks of Ebola, COVID-19 and mpox have demonstrated the value of modelling for synthesising data for rapid evidence to inform decision making. Effective models require integration of expert domain knowledge from multiple domains such as clinical medicine, environmental science, behavioural research, and public health, yet current modelling approaches create barriers to this integration. Methods used to synthesise available data broadly fall into pipeline approaches that chain separate models together, losing information and potentially introducing bias, or joint models that are often monolithic and difficult to adapt. These barriers have prevented advances across multiple settings where models could have provided actionable insights. Composable models where components can be reused across different contexts and combined in various configurations whilst maintaining statistical rigour could address these limitations. In this work, we start by outlining the key requirements for a composable infectious disease modelling framework and then present a prototype that addresses these requirements through composable epidemiological components built on Julia's type system and Turing.jl. Through three case studies using the prototype, we show how components can be reused across different models whilst maintaining statistical rigour. The first replicates a COVID-19 analysis for South Korea using renewal processes with time-varying reproduction numbers. The second extends these components with reporting delays and day-of-week effects for real-time nowcasting applications. The third replicates an SIR model analysis of influenza outbreak data, integrating ODE solvers. We then discuss strengths, limitations, and alternative approaches. We explore other potential options and compare them to our proposed approach. The prototype demonstrates promise but future work is needed to solve remaining composability challenges, expand the component library, and integrate bridges to existing epidemiological software ecosystems.
📖 Read the paper (PDF)
🌐 Read the paper online (HTML)
📑 Supplementary Information: Case Studies (HTML)
📦 EpiAwareR Documentation | GitHub
Citation information will be added upon publication.
Follow the instructions at quarto.org to install Quarto.
Follow the instructions at juliaup to install Julia using the official Julia version manager.
Install R (version 4.0.0 or higher) if you want to run the EpiAwareR vignettes.
Install Task for automated workflow management.
taskThis automatically handles git submodules, Julia environment setup, Quarto extension installation, and document rendering.
Available tasks:
task- Render all documents (default)task render-case-studies- Render case studies (generates figures)task render-index- Render main documenttask preview- Preview document with live reloadtask repl- Launch Julia REPL with project environmenttask install-extensions- Install Quarto extensionstask renv-restore- Restore R environment from renv.locktask setup-epiawarer- Set up EpiAwareR with Julia backendtask --list- Show all available tasks
-
Install Julia 1.11.6 (we expect any version of 1.11 to work well):
juliaup add 1.11.6 juliaup override set 1.11.6 -
Initialise git submodules:
git submodule update --init --recursive
-
Set up Julia environment:
julia +1.11.6
Then in the Julia REPL:
using Pkg Pkg.activate(".") Pkg.instantiate()
-
Render the document:
quarto render
The case studies in case-studies.qmd can be run interactively using Quarto's preview mode:
-
Set up the environment:
task instantiate
-
Preview with live reload:
task preview
Or open
case-studies.qmddirectly in VS Code or another editor with Quarto support.
The EpiAwareR/ submodule contains R vignettes demonstrating the R interface to EpiAware:
EpiAwareR.Rmd- Getting started guidemishra-case-study.Rmd- Replicating Mishra et al. (2020) COVID-19 analysisepinow2-comparison.Rmd- Comparison with EpiNow2 workflows
To run the vignettes interactively:
-
Set up EpiAwareR with Julia backend:
task setup-epiawarer
-
Open the vignettes in RStudio or VS Code:
EpiAwareR/vignettes/EpiAwareR.Rmd EpiAwareR/vignettes/mishra-case-study.Rmd EpiAwareR/vignettes/epinow2-comparison.Rmd -
Run code chunks interactively using your IDE's execution features.