seird Module#
SEIRD compartmental epidemic model with mortality.
The SEIRD model adds a **D**eath compartment to account for disease-induced mortality, essential for understanding outbreak severity.
Equations#
\[\begin{split}\\frac{dS}{dt} &= -\\frac{\\beta S I}{N} \\\\
\\frac{dE}{dt} &= \\frac{\\beta S I}{N} - \\sigma E \\\\
\\frac{dI}{dt} &= \\sigma E - (\\gamma + \\mu) I \\\\
\\frac{dR}{dt} &= \\gamma I \\\\
\\frac{dD}{dt} &= \\mu I\end{split}\]
where: - \(\\beta\) = transmission rate (day⁻¹) - \(\\sigma\) = progression rate E→I (day⁻¹) - \(\\gamma\) = recovery rate (day⁻¹) - \(\\mu\) = mortality rate (day⁻¹) - \(R_0 = \\beta / (\\gamma + \\mu)\) - \(CFR = \\mu / (\\gamma + \\mu)\)
Class#
- class episia.models.seird.SEIRDModel(parameters)[source]#
Bases:
CompartmentalModelSEIRD epidemic model with disease-induced mortality.
- Parameters:
parameters (SEIRDParameters) – SEIRDParameters instance.
Example:
from episia.models import SEIRDModel from episia.models.parameters import SEIRDParameters params = SEIRDParameters( N=1_000_000, I0=1, E0=5, beta=0.35, sigma=1/5.2, gamma=0.09, mu=0.01, # ~10% CFR at peak load t_span=(0, 365), ) result = SEIRDModel(params).run() print(f"Total deaths: {result.compartments['D'][-1]:,.0f}") result.plot().show()
- __init__(parameters)[source]#
- Parameters:
parameters (SEIRDParameters)
Examples#
Mortality modeling:
from episia.models import SEIRDModel
from episia.models.parameters import SEIRDParameters
params = SEIRDParameters(
N=1_000_000,
I0=10,
E0=50,
beta=0.35,
sigma=1/5.2,
gamma=0.09, # 90% recover
mu=0.01, # 10% die
t_span=(0, 365)
)
model = SEIRDModel(params)
result = model.run()
total_deaths = result.compartments['D'][-1]
print(f"Total deaths: {total_deaths:,.0f}")
print(f"CFR: {params.cfr:.1%}")
print(f"Attack rate: {result.metadata['metrics']['attack_rate']:.1%}")
result.plot().show()
Estimating hospital burden:
result = SEIRDModel(params).run()
# Peak infectious = peak hospital/ICU demand
peak_inf = result.peak_infected
peak_day = result.peak_time
print(f"Peak hospital demand: {peak_inf:,.0f} patients at day {peak_day:.0f}")
print(f"Cumulative deaths: {result.compartments['D'][-1]:,.0f}")