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 clinical medicine, environmental science, behavioural research, and public health to accurately capture transmission processes, 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, 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. Our approach enables "LEGO-like" model construction where complex models emerge from composing simpler, reusable components. 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 integrates ODE solvers for compartmental disease transmission models applied to influenza outbreak data. Across all case studies, the same core components combine differently to address distinct epidemiological questions. 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)
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 Task for automated workflow management.
task
This automatically handles git submodules, Julia environment setup, Quarto extension installation, and document rendering.
Available tasks:
task
- Complete workflow (default)task preview
- Preview document with live reloadtask repl
- Launch Julia REPL with project environmenttask install-extensions
- Install Quarto extensionstask --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