Source code for laser_measles.components.base_initialize_equilibrium_states
"""
Component for initializing the population in each of the model states by rough equilibrium of R0.
"""
from pydantic import BaseModel
from pydantic import Field
from laser_measles.base import BaseLaserModel
from laser_measles.base import BasePhase
class BaseInitializeEquilibriumStatesParams(BaseModel):
"""
Parameters for the InitializeEquilibriumStatesProcess.
"""
R0: float = Field(default=8.0, description="Basic reproduction number setting the initialization", ge=0.0)
[docs]
class BaseInitializeEquilibriumStatesProcess(BasePhase):
"""
Initialize S, R states of the population in each of the model states by rough equilibrium of R0.
"""
def __init__(self, model: BaseLaserModel, verbose: bool = False, params: BaseInitializeEquilibriumStatesParams | None = None):
super().__init__(model, verbose)
self.params = params or BaseInitializeEquilibriumStatesParams()
def _initialize(self, model: BaseLaserModel):
"""
Initialize the population in each of the model states by rough equilibrium of R0.
THis is run after model.run()
"""
states = model.patches.states
population = states.S + states.R
states.S = population / self.params.R0
states.R = population * (1 - 1 / self.params.R0)