Class SEIRModel

java.lang.Object
org.episteme.natural.medicine.epidemiology.SEIRModel
All Implemented Interfaces:
UniversalDataModel

public class SEIRModel extends Object implements UniversalDataModel
SEIR (Susceptible-Exposed-Infected-Recovered) epidemic model.

Extends SIR model by adding an Exposed compartment representing individuals who are infected but not yet infectious (latent period).

S → E → I → R

dS/dt = -βSI/N
dE/dt = βSI/N - σE
dI/dt = σE - γI
dR/dt = γI
*

Reference:
Zeigler, B. P., Praehofer, H., invalid input: '&' Kim, T. G. (2000). Theory of Modeling and Simulation. Academic Press.

Since:
1.0
Author:
Silvere Martin-Michiellot, Gemini AI (Google DeepMind)
  • Constructor Details

    • SEIRModel

      public SEIRModel(int population, int initialExposed, int initialInfected, Quantity<Frequency> transmissionRate, Quantity<Frequency> incubationRate, Quantity<Frequency> recoveryRate)
      Creates a SEIR model.
      Parameters:
      population - total population
      initialExposed - initial exposed individuals
      initialInfected - initial infectious individuals
      transmissionRate - β (contacts/time)
      incubationRate - σ (1/latent period)
      recoveryRate - γ (1/infectious period)
  • Method Details

    • getR0

      public Real getR0()
      Basic reproduction number R₀ = β/γ
    • getEffectiveR

      public Real getEffectiveR()
      Effective reproduction number Rₑ = R₀ × S/N
    • getLatentPeriod

      public double getLatentPeriod()
      Latent period (1/σ) in days
    • getInfectiousPeriod

      public double getInfectiousPeriod()
      Infectious period (1/γ) in days
    • step

      public void step(Quantity<Time> dt)
      Advance simulation by dt using Euler method
    • simulate

      public Real[][] simulate(Quantity<Time> duration, Quantity<Time> dt)
      Run simulation for duration
    • reset

      public void reset()
    • getSusceptible

      public Real getSusceptible()
    • getExposed

      public Real getExposed()
    • getInfected

      public Real getInfected()
    • getRecovered

      public Real getRecovered()
    • getTime

      public Quantity<Time> getTime()
    • getPopulation

      public int getPopulation()
    • getBeta

      public Quantity<Frequency> getBeta()
    • getSigma

      public Quantity<Frequency> getSigma()
    • getGamma

      public Quantity<Frequency> getGamma()
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • covid19Like

      public static SEIRModel covid19Like(int population, int initialCases)
      COVID-19 like: R0≈2.5, latent ~5d, infectious ~10d
    • influenzaLike

      public static SEIRModel influenzaLike(int population, int initialCases)
      Influenza like: R0≈1.5, latent ~2d, infectious ~5d
    • measlesLike

      public static SEIRModel measlesLike(int population, int initialCases)
      Measles like: R0≈15, latent ~10d, infectious ~8d
    • getModelType

      public String getModelType()
      Description copied from interface: UniversalDataModel
      Returns a unique identifier for the type of data model. Examples: "SPATIAL_GEOMETRY", "ECONOMIC_PORTFOLIO", "ARCHITECTURAL_PLAN".
      Specified by:
      getModelType in interface UniversalDataModel
    • getQuantities

      public Map<String, Quantity<?>> getQuantities()
      Description copied from interface: UniversalDataModel
      Returns the primary physical values associated with this model. This allows generic tools to extract and convert measurements.
      Specified by:
      getQuantities in interface UniversalDataModel