EpiAware EpiAware EpiAware
  • Quick start
  • Docs
  • Tutorials
  • News
  • Gallery
  • Guides
    • Using Julia
    • FAQ
    • Contributing
    • Developer docs
  • Community
    • Get involved
    • Team
    • Funding
    • epinowcast & the forum
  • Forum

EpiAware logo

EpiAware

Composable tools for infectious disease modelling in Julia.

Explore the packages Get involved GitHub

Composable at every level

EpiAware gives you composable pieces at two levels: build the exact distributions your data need, and assemble whole models from interchangeable parts. Use either on its own, or together.

Compose distributions

using ComposedDistributions, Distributions

# A case's delays: infection → onset → admission → death
chain = Sequential([Gamma(2.0, 1.5),
                    LogNormal(1.0, 0.5), Gamma(2.0, 3.0)])

Delay from infection to each event

ComposedDistributions.jl →

Build a joint model

using ComposableTuringIDModels, Distributions

# A random-walk-driven model, observed with Poisson error
model = IDModel(
    DirectInfections(; Z = RandomWalk(),
        initialisation_prior = Normal()),
    PoissonError())

Prior predictive case simulations

Build & fit it in the Quick start →

Composable

Small packages that each do one thing and combine into joint models, so you assemble the model a problem needs instead of rebuilding it.

Uncertainty-aware

Components propagate uncertainty correctly when combined, avoiding the error that creeps in when separate models are chained together.

Built for response

Designed for real-time infectious disease analysis under the time pressure and resource limits of a live outbreak.

Core packages

ComposableTuringIDModels.jl

Assemble infectious disease models from interchangeable parts as a single Turing model. Docs ↗

CensoredDistributions.jl

Handle the censoring and truncation biases common in epidemiological delay data. Docs ↗

ConvolvedDistributions.jl

Convolve distributions, with shared quadrature. Docs ↗

ComposedDistributions.jl

A grammar for composing distributions. Docs ↗

See all packages →

From the blog

A composable ecosystem for infectious disease modelling

Why we are building EpiAware, and where it is today.

Jul 8, 2026
No matching items

All news →

Built on Julia

We build in Julia for its type system, multiple dispatch, and automatic differentiation, and on the scientific infrastructure already there:

SciML

Differential equations, sensitivity analysis, and scientific machine learning.

Turing.jl

Probabilistic programming and Bayesian inference.

Distributions.jl

The shared vocabulary of probability distributions our packages extend.

New to Julia? Start with the Using Julia guide.

Background

In R we built the epinowcast ecosystem and packages such as EpiNow2 and scoringutils, now used by academics and public health teams internationally. EpiAware is the Julia equivalent: a domain-focused ecosystem in the mould of SciML or Turing.jl, with community infrastructure like rOpenSci and the domain focus of SpeedyWeather.jl.

We are at an early stage and looking for collaborators — here is how to get involved.

EpiAware — a composable Julia ecosystem for infectious disease modelling.

  • Packages

  • Get involved

  • Funding

  • epinowcast forum

  • Edit this page
  • Report an issue