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