Source code for emodpy_malaria.interventions.larvicide

from emod_api import schema_to_class as s2c
from emod_api.interventions import utils
from emodpy_malaria.interventions.common import add_campaign_event


def _larvicides(
        campaign,
        spray_coverage: float = 1.0,
        killing_effect: float = 1,
        habitat_target: str = None,
        insecticide: str = None,
        box_duration: int = 100,
        decay_time_constant: float = 0.0,
        intervention_name: str = "Larvicides",
        cost_to_consumer: float = 0
):
    intervention = s2c.get_class_with_defaults("Larvicides", campaign.schema_path)
    intervention.Intervention_Name = intervention_name
    intervention.Spray_Coverage = spray_coverage
    intervention.Habitat_Target = habitat_target
    intervention.Cost_To_Consumer = cost_to_consumer
    if insecticide:
        intervention.Insecticide_Name = insecticide
    else:
        intervention.pop("Insecticide_Name")

    intervention.Larval_Killing_Config = utils.get_waning_from_params(campaign.schema_path,
                                                                      initial=killing_effect,
                                                                      box_duration=box_duration,
                                                                      decay_time_constant=decay_time_constant)
    return intervention


[docs] def add_larvicide( campaign, start_day: int = 1, num_repetitions: int = 0, timesteps_between_reps: int = 365, spray_coverage: float = 1.0, killing_effect: float = 1, habitat_target: str = "ALL_HABITATS", insecticide: str = None, box_duration: int = 100, decay_time_constant: float = 0.0, node_ids: list = None, intervention_name: str = "Larvicides", cost_to_consumer: float = 0, node_property_restrictions: dict = None ): """ Create a new Larvicides scheduled campaign intervention. Note: for killing effects - depending on the parameters you set, different WaningEffect classes will be used: box_duration = -1 => WaningEffectConstant, decay_time_constant is ignored box_duration = 0 + decay_time_constant > 0 => WaningEffectExponential box_duration > 0 + decay_time_constant = 0 => WaningEffectBox box_duration > 0 + decay_time_constant > 0 => WaningEffectBoxExponential Args: campaign: start_day: the day to distribute the Larvicides intervention num_repetitions: Optional number of repetitions. timesteps_between_reps: Gap between repetitions, if num_reptitions specified. spray_coverage: how much of each node to cover (total portion killed = killing effect * coverage) killing_effect: portion of vectors killed by the intervention (Initial_Effect in WaningEffect) habitat_target: E.g., (TBD) box_duration: Box_Duration of the WaningEffect decay_time_constant: decay_time_constant of the WaningEffect node_ids: list of node ids to which distribute the intervention insecticide: name of the insecticide defined in <config.Insecticides> for this intervention intervention_name: name of the intervention cost_to_consumer: Per unit cost when distributed node_property_restrictions: dict of node property restrictions Returns: The formatted intervention ready to be added to the campaign. """ node_intervention = _larvicides(campaign=campaign, spray_coverage=spray_coverage, insecticide=insecticide, habitat_target=habitat_target, intervention_name=intervention_name, killing_effect=killing_effect, box_duration=box_duration, decay_time_constant=decay_time_constant, cost_to_consumer=cost_to_consumer) add_campaign_event(campaign=campaign, start_day=start_day, node_ids=node_ids, repetitions=num_repetitions, timesteps_between_repetitions=timesteps_between_reps, node_intervention=node_intervention, node_property_restrictions=node_property_restrictions )
[docs] def new_intervention_as_file(campaign, start_day: int = 1, filename: str = None): """ Creates a file with Larvicides intervention Args: campaign: start_day: the day to distribute the Larvicides intervention filename: name of the filename created Returns: filename of the file created """ campaign.reset() add_larvicide(campaign, start_day=start_day) if filename is None: filename = "Larvicides.json" campaign.save(filename) return filename