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 — small parts that combine into joint models.
  • Uncertainty-aware — uncertainty propagated correctly across components.
  • Built for response — designed for real-time outbreak analysis.
  • Built on Julia — fast, autodiff-ready, on top of Turing and SciML.

Get started →

Compose distributions

using ComposedDistributions, ModifiedDistributions, Distributions

# Compose a case's delays; affine() rescales one of them
tree = Sequential([
    Gamma(2.0, 1.5),
    compose((admission = affine(LogNormal(1.0, 0.5); scale = 1.5),
             death     = Gamma(2.0, 3.0))),
])

Assemble and fit a model

using ComposableTuringIDModels, Distributions

# AR(1) log-Rt → renewal infections → negative-binomial reports
latent = AR(; ϵ_t = HierarchicalNormal(std_prior = HalfNormal(0.1)))
data = IDData(gen_distribution = Gamma(1.4, 1 / 0.38))
model = IDModel(
    Renewal(data; rt = latent,
        initialisation_prior = Normal(log(1.0), 1.0)),
    NegativeBinomialError())

# Fit it to case data with Turing
chain = sample(as_turing_model(model, cases, length(cases)),
               NUTS(), MCMCThreads(), 1_000, 2)

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 ↗

ComposedDistributions.jl

A grammar for composing distributions into event trees. Docs ↗

ModifiedDistributions.jl

Rescale, weight, or modify distributions, keeping the full interface. 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