Module pybeepop.beepop.mitetreatments

BeePop+ Mite Treatment Management Module.

This module contains classes for managing Varroa mite treatment schedules and efficacy parameters. Mite treatments are critical interventions that reduce mite populations to prevent colony collapse from mite-induced mortality.

Classes

MiteTreatmentItem: Individual treatment schedule with efficacy parameters MiteTreatments: Collection manager for treatment schedules and active treatment lookup

Classes

class MiteTreatmentItem (start_time: datetime.datetime,
duration: int,
pct_mortality: float,
pct_resistant: float)
Expand source code
@dataclass
class MiteTreatmentItem:
    """Individual mite treatment schedule with efficacy and resistance parameters.

    Represents a single miticide application with specified timing, duration,
    and efficacy characteristics. Treatments target Varroa mites with defined
    mortality rates while accounting for resistant mite populations that
    survive treatment.

    Attributes:
        start_time (datetime): Treatment application start date
        duration (int): Treatment duration in days
        pct_mortality (float): Mortality rate for susceptible mites (0-100%)
        pct_resistant (float): Proportion of mites resistant to treatment (0-100%)
    """

    start_time: datetime
    duration: int  # in days
    pct_mortality: float  # percent mortality (0-100)
    pct_resistant: float  # percent resistant (0-100)
    # TODO: Need to change logic in rest of program to treat pct_mortality like a float (percentage)

    def is_valid(self) -> bool:
        return isinstance(self.start_time, datetime)

Individual mite treatment schedule with efficacy and resistance parameters.

Represents a single miticide application with specified timing, duration, and efficacy characteristics. Treatments target Varroa mites with defined mortality rates while accounting for resistant mite populations that survive treatment.

Attributes

start_time : datetime
Treatment application start date
duration : int
Treatment duration in days
pct_mortality : float
Mortality rate for susceptible mites (0-100%)
pct_resistant : float
Proportion of mites resistant to treatment (0-100%)

Instance variables

var duration : int
var pct_mortality : float
var pct_resistant : float
var start_time : datetime.datetime

Methods

def is_valid(self) ‑> bool
Expand source code
def is_valid(self) -> bool:
    return isinstance(self.start_time, datetime)
class MiteTreatments
Expand source code
class MiteTreatments:
    """Collection manager for mite treatment schedules and active treatment lookup.

    Manages multiple mite treatment schedules and provides functionality to
    determine active treatments for any given date.

    Attributes:
        items (List[MiteTreatmentItem]): Collection of scheduled mite treatments
    """

    def __init__(self):
        self.items: List[MiteTreatmentItem] = []

    def add_item(self, item: MiteTreatmentItem):
        self.items.append(item)

    def add_item_by_values(
        self,
        start_time: datetime,
        duration: int,
        pct_mortality: float,
        pct_resistant: float,
    ):
        item = MiteTreatmentItem(start_time, duration, pct_mortality, pct_resistant)
        self.add_item(item)

    def get_item(self, index: int) -> Optional[MiteTreatmentItem]:
        if 0 <= index < len(self.items):
            return self.items[index]
        return None

    def get_item_by_date(self, date: datetime) -> Optional[MiteTreatmentItem]:
        for item in self.items:
            if item.start_time.date() == date.date():
                return item
        return None

    def get_active_item(self, date: datetime) -> Optional[MiteTreatmentItem]:
        for item in self.items:
            if (
                item.start_time
                <= date
                < item.start_time + timedelta(days=item.duration)
            ):
                return item
        return None

    def is_new_treatment_starting(self, date: datetime) -> bool:
        return any(item.start_time.date() == date.date() for item in self.items)

    def delete_item(self, index: int):
        if 0 <= index < len(self.items):
            del self.items[index]

    def get_count(self) -> int:
        return len(self.items)

    def clear_all(self):
        self.items.clear()

Collection manager for mite treatment schedules and active treatment lookup.

Manages multiple mite treatment schedules and provides functionality to determine active treatments for any given date.

Attributes

items : List[MiteTreatmentItem]
Collection of scheduled mite treatments

Methods

def add_item(self,
item: MiteTreatmentItem)
Expand source code
def add_item(self, item: MiteTreatmentItem):
    self.items.append(item)
def add_item_by_values(self,
start_time: datetime.datetime,
duration: int,
pct_mortality: float,
pct_resistant: float)
Expand source code
def add_item_by_values(
    self,
    start_time: datetime,
    duration: int,
    pct_mortality: float,
    pct_resistant: float,
):
    item = MiteTreatmentItem(start_time, duration, pct_mortality, pct_resistant)
    self.add_item(item)
def clear_all(self)
Expand source code
def clear_all(self):
    self.items.clear()
def delete_item(self, index: int)
Expand source code
def delete_item(self, index: int):
    if 0 <= index < len(self.items):
        del self.items[index]
def get_active_item(self, date: datetime.datetime) ‑> MiteTreatmentItem | None
Expand source code
def get_active_item(self, date: datetime) -> Optional[MiteTreatmentItem]:
    for item in self.items:
        if (
            item.start_time
            <= date
            < item.start_time + timedelta(days=item.duration)
        ):
            return item
    return None
def get_count(self) ‑> int
Expand source code
def get_count(self) -> int:
    return len(self.items)
def get_item(self, index: int) ‑> MiteTreatmentItem | None
Expand source code
def get_item(self, index: int) -> Optional[MiteTreatmentItem]:
    if 0 <= index < len(self.items):
        return self.items[index]
    return None
def get_item_by_date(self, date: datetime.datetime) ‑> MiteTreatmentItem | None
Expand source code
def get_item_by_date(self, date: datetime) -> Optional[MiteTreatmentItem]:
    for item in self.items:
        if item.start_time.date() == date.date():
            return item
    return None
def is_new_treatment_starting(self, date: datetime.datetime) ‑> bool
Expand source code
def is_new_treatment_starting(self, date: datetime) -> bool:
    return any(item.start_time.date() == date.date() for item in self.items)