parameters Module#
Parameter containers for compartmental models.
This module provides validated parameter classes for each model type, with automatic calculation of derived quantities (R₀, CFR, etc.).
Classes#
- class episia.models.parameters.ModelParameters(N, I0, E0=0.0, R0_init=0.0, D0=0.0, t_span=(0.0, 160.0), dt=1.0)[source]#
Bases:
objectBase parameters shared by all compartmental models.
- Parameters:
N (int) – Total population size.
I0 (float) – Initial number of infected individuals.
E0 (float) – Initial number of exposed (used by SEIR/SEIRD).
R0_init (float) – Initial recovered (default 0).
D0 (float) – Initial dead (used by SEIRD, default 0).
dt (float) – Output time step in days (informational only).
- __init__(N, I0, E0=0.0, R0_init=0.0, D0=0.0, t_span=(0.0, 160.0), dt=1.0)#
- class episia.models.parameters.SIRParameters(N, I0, E0=0.0, R0_init=0.0, D0=0.0, t_span=(0.0, 160.0), dt=1.0, beta=0.3, gamma=0.1)[source]#
Bases:
ModelParametersParameters for the SIR model.
- Parameters:
- Derived:
r0 = beta / gamma t_inf = 1 / gamma (mean infectious period)
- __init__(N, I0, E0=0.0, R0_init=0.0, D0=0.0, t_span=(0.0, 160.0), dt=1.0, beta=0.3, gamma=0.1)#
- class episia.models.parameters.SEIRParameters(N, I0, E0=0.0, R0_init=0.0, D0=0.0, t_span=(0.0, 160.0), dt=1.0, beta=0.3, sigma=0.2, gamma=0.1)[source]#
Bases:
ModelParametersParameters for the SEIR model.
- Parameters:
- Derived:
r0 = beta / gamma t_inc = 1 / sigma t_inf = 1 / gamma
- __init__(N, I0, E0=0.0, R0_init=0.0, D0=0.0, t_span=(0.0, 160.0), dt=1.0, beta=0.3, sigma=0.2, gamma=0.1)#
- class episia.models.parameters.SEIRDParameters(N, I0, E0=0.0, R0_init=0.0, D0=0.0, t_span=(0.0, 160.0), dt=1.0, beta=0.3, sigma=0.2, gamma=0.09, mu=0.01)[source]#
Bases:
ModelParametersParameters for the SEIRD model (with death compartment).
- Parameters:
- Derived:
r0 = beta / (gamma + mu) cfr = mu / (gamma + mu) (case fatality ratio)
- __init__(N, I0, E0=0.0, R0_init=0.0, D0=0.0, t_span=(0.0, 160.0), dt=1.0, beta=0.3, sigma=0.2, gamma=0.09, mu=0.01)#
- class episia.models.parameters.ScenarioSet(scenarios=<factory>)[source]#
Bases:
objectNamed collection of parameter sets for scenario comparison.
Example:
from episia.models.parameters import SIRParameters, ScenarioSet baseline = SIRParameters(N=1_000_000, I0=1, beta=0.3, gamma=0.1) intervention = SIRParameters(N=1_000_000, I0=1, beta=0.15, gamma=0.1) scenarios = ScenarioSet([ ("Baseline", baseline), ("50% reduction", intervention), ])
- Parameters:
scenarios (List[Tuple[str, ModelParameters]])
- add(label, params)[source]#
Append a scenario and return self for chaining.
- Parameters:
label (str)
params (ModelParameters)
- Return type:
- scenarios: List[Tuple[str, ModelParameters]]#
Examples#
SIR parameters:
from episia.models.parameters import SIRParameters
params = SIRParameters(
N=1_000_000, # Population
I0=10, # Initial infected
beta=0.3, # Transmission rate
gamma=0.1, # Recovery rate
t_span=(0, 200) # Simulation period
)
print(f"R₀: {params.r0:.2f}")
print(f"Infectious period: {params.t_infectious:.1f} days")
SEIRD parameters with mortality:
from episia.models.parameters import SEIRDParameters
params = SEIRDParameters(
N=1_000_000,
I0=10,
E0=50,
beta=0.35,
sigma=1/5.2, # Incubation rate
gamma=0.09, # Recovery rate
mu=0.01, # Mortality rate
t_span=(0, 365)
)
print(f"CFR: {params.cfr:.1%}")
print(f"R₀: {params.r0:.2f}")
Scenario sets:
from episia.models.parameters import SIRParameters, ScenarioSet
baseline = SIRParameters(N=1e6, I0=10, beta=0.3, gamma=0.1)
lockdown = SIRParameters(N=1e6, I0=10, beta=0.15, gamma=0.1)
masks = SIRParameters(N=1e6, I0=10, beta=0.2, gamma=0.1)
scenarios = ScenarioSet([
("Baseline", baseline),
("Lockdown", lockdown),
("Masks only", masks),
])
for label, params in scenarios:
print(f"{label}: R₀={params.r0:.2f}")