Source code for laser_measles.components.base_tracker_fadeout

"""
FadeOutTracker component for tracking the number of nodes with fade-outs.

This module provides a component that monitors and records the number of nodes that have
experienced fade-outs (state transitions to 0) at each time tick in the simulation.
The tracker maintains a time series of fade-out counts that can be used for analysis
and visualization of the model's behavior over time.
"""

import numpy as np
from pydantic import BaseModel

from laser_measles.base import BaseLaserModel
from laser_measles.base import BasePhase


class BaseFadeOutTrackerParams(BaseModel):
    """Parameters for the FadeOutTracker component."""


[docs] class BaseFadeOutTracker(BasePhase): """A phase that tracks and records the number of nodes experiencing fade-outs over time. This component maintains a time series of fade-out counts by monitoring the number of nodes that have transitioned to state 0 at each simulation tick. The data can be used for analyzing the temporal dynamics of fade-outs in the network. Attributes: fade_out_tracker (numpy.ndarray): An array of length nticks that stores the count of nodes in state 0 at each time tick. Args: model: The simulation model instance. verbose (bool, optional): Whether to enable verbose logging. Defaults to False. """ def __init__(self, model, verbose: bool = False) -> None: super().__init__(model, verbose) self.fade_out_tracker = np.zeros(model.params.num_ticks) def __call__(self, model, tick: int) -> None: self.fade_out_tracker[tick] = np.sum(model.patches.states.I == 0) # number of nodes with 0 in I state def initialize(self, model: BaseLaserModel) -> None: pass