Skip to main content

v0.11.0

Released 2026-10-23 · GitHub Release

Overview​

v0.11.0 addresses the simulation counting, preset defaults, and input handling reported in epydemix issue #25. Existing clients need to account for changed defaults and HTTP error responses.

Correct infection counts​

The API now requires epydemix 1.4.0 or later, with 1.4.0 recorded in uv.lock. This includes the upstream fix for duplicate transition counts when multiple mediated transitions share the same source and target compartments. V-SEIR and V-SEIHR now count each infection once. Custom models with the same transition pattern also receive the fix.

Preset defaults​

SIR, SEIR, and SIS now default to R0: 2.5 instead of a fixed transmission_rate: 0.3. The API derives the transmission rate from the recovery rate and the selected population's contact matrix. The default recovery rate remains 0.1.

The previous fixed rates could imply a much larger R0 depending on the population's contact matrix. For example, the effective R0 for Vermont was approximately 42.

Requests that omit both R0 and transmission_rate produce different results. To retain the previous transmission rate, pass "transmission_rate": 0.3 explicitly. V-SEIR and V-SEIHR already default to R0: 2.5.

See Preset conversions and precedence.

Input validation and HTTP errors​

Invalid requests now return HTTP 422 before the simulation starts. Validation covers invalid or reversed dates, unknown initial-condition compartments, out-of-range or non-finite numeric inputs, invalid model references, and negative resolved transition rates. Python exports also validate their inputs.

Simulation failures no longer return HTTP 200 with "status": "failed". Clients must handle HTTP errors and read the response's detail field:

HTTP statusMeaning
422Invalid request
504Built-in population loading timed out
500Unexpected internal error, with details kept in server logs

Successful simulations still return HTTP 200 with "status": "completed". See Errors for the request constraints.

Parameter warnings​

Simulation responses now include a warnings list that explains when an input was ignored. For example, passing both R0 and transmission_rate uses transmission_rate and returns a parameter_overridden warning for R0. The simulation still runs using the explicit rate. This also applies when an explicit rate expression does not use the source, directly or through another expression.

There is no warning when only a preset default is overridden or when the rate expression uses the supplied source. See Warnings for examples and the warning fields.

Documentation​

  • Update preset and parameter guides with the new defaults and precedence rules.
  • Document input constraints, HTTP errors, and parameter warnings.
  • Regenerate the OpenAPI reference for v0.11.0.