Source code for laser_measles.components.base_tracker_population
import numpy as np
from pydantic import BaseModel
from laser_measles.base import BaseLaserModel
from laser_measles.base import BasePhase
class BasePopulationTrackerParams(BaseModel):
pass
[docs]
class BasePopulationTracker(BasePhase):
"""
Tracks the population size of each patch at each time tick.
"""
def __init__(self, model: BaseLaserModel, verbose: bool = False, params: BasePopulationTrackerParams | None = None) -> None:
super().__init__(model, verbose)
self.params = params or BasePopulationTrackerParams()
self.population_tracker = np.zeros((model.patches.count, model.params.num_ticks), dtype=model.patches.states.dtype)
def __call__(self, model, tick: int) -> None:
self.population_tracker[:, tick] = model.patches.states.sum(axis=0)
def _initialize(self, model: BaseLaserModel) -> None:
pass