Breaking changes

  • The package has been renamed from EpiAwareR to composableIDModelR, and epiaware_setup_julia() and epiaware_available() are now cidm_setup_julia() and cidm_available().
  • The package now wraps ComposableTuringIDModels.jl, the successor to EpiAware.jl, and the interface has been rewritten around it. Code written for earlier versions needs updating.
  • Components mirror their Julia constructors: argument names follow Julia (e.g. AR(damp, init, epsilon_t), Renewal(generation_time, rt, initialisation), NegativeBinomialError(cluster_factor)), and distributions come from distspec (Normal(), Gamma(), LogNormal(), Exponential(), Weibull(), Beta(), Fixed(), NonParametric(), re-exported), replacing norm(), gamma_dist(), lognorm() and exponential(). HalfNormal() (parameterised by its mean) and truncated() replace halfnorm() and truncnorm().
  • The latent process now belongs to the infection model (e.g. Renewal(rt = AR())), and IDModel(infection, observation) replaces EpiProblem(). There is no tspan: pass the observations to fit directly.
  • fit(model, y, method = nuts()) takes a numeric vector of observations and replaces nuts_sampler() with nuts(). Pathfinder initialisation has been removed.
  • epiaware_call() has been replaced by julia_spec() and julia().
  • plot(type = "posterior") has been removed; use bayesplot on posterior::as_draws_array(fit) instead.
  • The Julia setup dependency is now juliabridge, which juliaready was renamed to. An install from GitHub picks it up through Remotes; an existing checkout needs the dependency reinstalled.
  • julia_spec(), julia() and as_julia() come from juliabridge, which composableIDModelR re-exports. The code that renders a component to Julia source moved there so that other packages can build Julia calls the same way. The role of a component is given as .role, leaving every Julia keyword name free; components carry classes such as julia_latent and julia_model; and one prints as <julia model spec>. A component built without a role is accepted wherever one is expected, since the role is what the caller says the component is.

New features

Bug fixes

  • Forecasting from a fit whose Julia session has gone says so, rather than setting Julia up again and then failing inside Julia.