from dataclasses import dataclass as _dataclass
from ._network import Network
__all__ = ["Infections"]
[docs]@_dataclass
class Infections:
"""This class holds the arrays that record the infections as they
are occuring during the outbreak
"""
#: The infections caused by fixed (work) movements. This is a list
#: of int arrays, size work[N_INF_CLASSES][nlinks+1]
work = None
#: The infections caused by random (play) movements. This is a list
#: of int arrays, size play[N_INF_CLASSES][nnodes+1]
play = None
[docs] @staticmethod
def build(network: Network):
"""Construct and return the Infections object that will track
infections during a model run on the passed Network
"""
from .utils import initialise_infections, initialise_play_infections
inf = Infections()
inf.work = initialise_infections(network=network)
inf.play = initialise_play_infections(network=network)
return inf
[docs] def clear(self, nthreads: int = 1):
"""Clear all of the infections (resets all to zero)
Parameters
----------
nthreads: int
Optionally parallelise this reset by specifying the number
of threads to use
"""
from .utils import clear_all_infections
clear_all_infections(infections=self, nthreads=nthreads)