Changelog¶
Version 1.4.0 (2026-09-17)¶
Added¶
Model registry –
epimodels.get_model(name, family=...)andlist_models()for string-based lookup across continuous/discrete/stochastic families, with a@register_modeldecorator for custom modelsIntervention scenarios –
epimodels.interventionswithIntervention,ScenarioandScenarioComparisonfor time-bounded parameter changes (e.g. lockdowns) with comparison plots and final-size/peak metricsUncertainty ensembles –
epimodels.ensembles.simulate_ensembleruns many simulations with sampled parameters/initial conditions;TraceEnsembleprovides quantiles, summaries and uncertainty-band plotsBayesian inference –
epimodels.fitting.bayes.fit_model_bayesianimplements DE-MCMC posterior sampling (normal/Poisson/negative-binomial observation models), with MAP estimates, credible intervals, trace plots and optional ArviZ exportRt estimation –
epimodels.rt.estimate_rtimplements the Cori et al. (2013) sliding-window reproduction-number estimator (EpiEstim method) with gamma serial interval, gamma prior/posterior and credible bandsSDE layer –
epimodels.sde.SDEModelwraps any continuous model as a Langevin SDE with demographic square-root noise (or a custom diffusion), integrated with diffrax/JAX; multi-replicate support with means/quantilesNetwork models –
epimodels.network.NetworkSIR/NetworkSIS: event-driven epidemics on networkx graphs, adjacency dicts or matrices, with replicates, final-size, means/quantiles and band plots ([network]extra)Model serialization –
epimodels.io.save_model/load_modelstore model specs (optionally with traces) as JSON or YAML; reconstruction goes through the registry with module-path fallback for custom modelsSugar API –
model.simulate(...)returns the model for chaining andmodel.fit(data, params_to_fit, ..., method="mle"|"bayes")dispatches into the fitting/bayesian machinery from any model instanceBetaGammaR0Mixin/BetaRR0Mixinshared R0 properties (replacing 14 duplicated implementations)ModelFitter(raise_on_error=True)option to surface model-evaluation failures
Fixed¶
Discrete SIS no longer expects 3 initial conditions for a 2-compartment model
Discrete SIRS
R0read a nonexistent parameter and always returnedNoneInfluenzaresult key typo (Igl->Ig1) and missingrunaliasSEQIAHR (continuous and discrete) unpacked parameters by dict order, silently breaking with differently-ordered dicts
SIRSEI.R0/R0_taccessed unchecked parameters, raisingKeyErrorinstead of returningNoneContinuousModel.runmutated the caller’s parameter dictBaseModel.copy()was shallow: copies shared parameter dicts, specs and formulasCTMC parallel replicates (
n_jobs > 1) failed because a closure cannot be pickledDiffraxSolverignoredt_eval(hardcoded 100-point output grid) and converted state to a Python list on every RHS evaluationJAXOptimizerproduced constant gradients under autodiff (float()truncation) and misused the optimistix API; rewritten as projected gradient descent with finite-difference gradients (no external dependency)Importing the package no longer writes
epimodels.logto the working directory (import-timelogging.basicConfigremoved) or require matplotlibLegacy
gillespie.py: undeclaredtqdmimport removed, no-op “validation” loops actually convert/clip values now, bounded worker poolMalformed LaTeX in parameter tables and symbols (
\begin[l|c|c], unclosed$)SymbolicModelsilentexcept: pass/Nonefailures now logged; unreachable dead code removedSEQIAHRandSIRSEIare now symbolically extractable (numpy function calls in_modelare mapped to SymPy during extraction)
Changed¶
Packaging:
matplotlib/pandas/jax/diffrax/ipykernelare no longer hard dependencies – use extras[plot],[dataframe],[jax];scipy-stubsmoved to dev; added[build-system], license expression, fixed classifiers; removed stalesrc/layout andrequirements.txtPerformance:
SymbolicModelcaches symbolic R0/Jacobian; vectorized CTMC grid interpolation,phase.pymutual information and Cao E-statisticCTMC solvers share a template-method trajectory loop
Version 1.3.0 (2026-06-14)¶
Added¶
EbolaSEIHFRV model – SEIHFR-V compartmental model for Ebola epidemic dynamics with community, hospital, and funeral transmission pathways, ring vaccination (rVSV-ZEBOV / Ervebo), and next-generation matrix R0 decomposition
Example notebook
Ebola_SEIHFRV_Example.ipynbwith scenario analysis, R0 decomposition, and vaccination timing analysis based on the DRC technical report (doi:10.5281/zenodo.20634292)
Version 1.2.0 (2026-05-13)¶
Added¶
Documentation update – new user guide pages for previously undocumented features: - Phase space analysis tools (TimeDelayEmbedding, mutual_information, Cao’s method) - Stochastic CTMC models (Gillespie SSA, replicate methods, quantile bands) - VFGen XML exporter for external tool interoperability
SIR1D model added to documentation and export list
LogLikelihood loss function documented in fitting guide
InitialConditionSpec usage section added to fitting docs
Updated validation system docs to reflect implemented symbolic analysis features
Fixed¶
Added
SISLogistic,SIRSNonAutonomous,NeipelHeterogeneousSIRtocontinuous/__init__.py__all__
Version 1.1.0 (2026-04-11)¶
Added¶
SIRSNonAutonomous continuous model with time-dependent transmission, recovery, and waning immunity parameters (callable functions)
SISLogistic fitting with real epidemiological data support
SIRS parameter inference with reduced parameter space, bounded optimization, and RK23 solver
Model fitting framework (
epimodels.fitting) – full-featured parameter estimation: - 7 loss functions (SSE, Weighted SSE, Poisson, Negative Binomial, Normal, Log-likelihood, Huber) - 4 optimizers (Scipy, JAX, Nevergrad, Multi-start) - Dataset management with time series validation - Profile likelihood confidence intervals - Automatic initial condition estimationSIRSEIData – climate-data-driven malaria model with real temperature/precipitation interpolation
SEIRS_SEI – vector-borne model with deforestation and forest fire environmental effects
SIR2Strain – two-strain SIR with cross-immunity and vital dynamics
SISLogistic – SIS model with logistic population growth
NeipelHeterogeneousSIR – heterogeneous susceptibility model (Neipel et al. 2020)
VFGen exporter for symbolic model export to XML format
Phase space tools – time delay embedding, mutual information, Cao’s method
SymbolicModel analysis framework – R0 computation, equilibrium finding, stability analysis, sensitivity/elasticity, parameter importance ranking
Mermaid diagram generation on all model classes (
model.diagramproperty)
Changed¶
Fixed SISLogistic R0 parametrization
Updated notebooks and examples for new models and fitting workflows
Removed¶
Obsolete run scripts
Version 1.0.2¶
Package definition fixes
Version 1.0.1¶
Initial PyPI release
Version 1.0.0¶
First stable release
Version 0.5.2¶
Model fitting tutorial notebook
Version 0.5.1¶
SIRS non-autonomous model corrections
Version 0.5.0¶
Validation framework implementation
Rich parameter specifications
Version 0.4.3¶
Minor bug fixes
Version 0.4.2¶
SEIRS-SEI model with environmental factors
Version 0.4.1¶
Solver interface improvements
Version 0.4.0¶
Diffrax/JAX solver support
Performance benchmarks
Version 0.1¶
Feature A added
FIX: nasty bug #1729 fixed