Skip to content

bednet

add_itn_scheduled(campaign, start_day=0, coverage_by_ages=None, demographic_coverage=1.0, target_num_individuals=None, node_ids=None, repetitions=1, timesteps_between_repetitions=365, ind_property_restrictions=None, receiving_itn_broadcast_event=None, blocking_initial_effect=0.9, blocking_box_duration=0, blocking_decay_time_constant=7300, killing_initial_effect=0.6, killing_box_duration=0, killing_decay_time_constant=7300, repelling_initial_effect=0, repelling_box_duration=-1, repelling_decay_time_constant=0, usage_initial_effect=1, usage_box_duration=-1, usage_decay_time_constant=0, insecticide='', cost=0, intervention_name='SimpleBednet')

Add a scheduled SimpleBednet intervention.

Parameters:

Name Type Description Default
campaign EMODCampaign

object for building, modifying, and writing campaign configuration files.

required
start_day int

Start day of intervention.

0
coverage_by_ages list

A list of dictionaries defining the coverage per age group. For example, [{"coverage":1,"min": 1, "max": 10}, {"coverage":1,"min": 11, "max": 50}].

None
start_day int

The day the intervention is given out.

0
demographic_coverage float

This value is the probability that each individual in the target population will receive the intervention. It does not guarantee that the exact fraction of the target population set by Demographic_Coverage receives the intervention.

1.0
target_num_individuals int

The exact number of people to select out of the targeted group. If this value is set, demographic_coverage parameter is ignored

None
node_ids list

List of nodes to which to distribute the intervention. [] or None, indicates all nodes will get the intervention

None
repetitions int

The number of times an intervention is given, used with timesteps_between_repetitions. -1 means the intervention repeats forever. Sets Number_Repetitions

1
timesteps_between_repetitions int

The interval, in timesteps, between repetitions. Ignored if repetitions = 1. Sets Timesteps_Between_Repetitions.

365
ind_property_restrictions list

A list of dictionaries of IndividualProperties, which are needed for the individual to receive the intervention. Sets the Property_Restrictions_Within_Node. In the format [{ "BitingRisk":"High"}, {"IsCool":"Yes}]

None
receiving_itn_broadcast_event str

Optional. BroadcastEvent that's sent out when bednet is received. Default is to send out 'Received_ITN' event. To not send out event set to None.

None
killing_initial_effect float

Initial strength of the Killing effect. The effect may decay over time.

0.6
killing_box_duration int

Box duration of effect in days before the decay of Killing Initial_Effect.

0
killing_decay_time_constant float

The exponential decay length, in days of the Killing Initial_Effect.

7300
blocking_initial_effect float

Initial strength of the Blocking effect. The effect may decay over time.

0.9
blocking_box_duration float

Box duration of effect in days before the decay of Blocking Initial_Effect.

0
blocking_decay_time_constant float

The exponential decay length, in days of the Blocking Initial_Effect.

7300
repelling_initial_effect float

Initial strength of the Repelling effect. The effect may decay over time.

0
repelling_box_duration float

Box duration of effect in days before the decay of Repelling Initial_Effect.

-1
repelling_decay_time_constant float

The exponential decay length, in days of the Repelling Initial_Effect.

0
usage_initial_effect float

Determines when and if an individual is using a bed net.

1
usage_box_duration float

?

-1
usage_decay_time_constant float

?

0
insecticide str

The name of the insecticide defined in config.Insecticides for this intervention. If insecticides are being used, then this must be defined as one of those values. If they are not being used, then this does not needed to be specified or can be empty string. It cannot have a value if config.Insecticides does not define anything.

''
cost float

Unit cost per bednet

0
intervention_name str

The optional name used to refer to this intervention as a means to differentiate it from others that use the same class. It’s possible to have multiple SimpleBednet interventions attached to a person if they have different Intervention_Name values.

'SimpleBednet'
Source code in emodpy_malaria/interventions/bednet.py
def add_itn_scheduled(campaign,
                      start_day: int = 0,
                      coverage_by_ages: list = None,
                      demographic_coverage: float = 1.0,
                      target_num_individuals: int = None,
                      node_ids: list = None,
                      repetitions: int = 1,
                      timesteps_between_repetitions: int = 365,
                      ind_property_restrictions: list = None,
                      receiving_itn_broadcast_event: str = None,
                      blocking_initial_effect: float = 0.9,
                      blocking_box_duration: float = 0,
                      blocking_decay_time_constant: float = 7300,
                      killing_initial_effect: float = 0.6,
                      killing_box_duration: int = 0,
                      killing_decay_time_constant: float = 7300,
                      repelling_initial_effect: float = 0,
                      repelling_box_duration: float = -1,
                      repelling_decay_time_constant: float = 0,
                      usage_initial_effect: float = 1,
                      usage_box_duration: float = -1,
                      usage_decay_time_constant: float = 0,
                      insecticide: str = "",
                      cost: float = 0,
                      intervention_name: str = "SimpleBednet"
                      ):
    """
        Add a scheduled SimpleBednet intervention.

    Args:
        campaign (emodpy.campaign.emod_campaign.EMODCampaign): object for building, modifying, and writing campaign configuration files.
        start_day: Start day of intervention.
        coverage_by_ages: A list of dictionaries defining the coverage per
            age group. For example, ``[{"coverage":1,"min": 1, "max": 10},
            {"coverage":1,"min": 11, "max": 50}]``.
        start_day: The day the intervention is given out.
        demographic_coverage: This value is the probability that each individual in the target population will
            receive the intervention. It does not guarantee that the exact fraction of the target population set by
            Demographic_Coverage receives the intervention.
        target_num_individuals: The exact number of people to select out of the targeted group. If this value is set,
            demographic_coverage parameter is ignored
        node_ids: List of nodes to which to distribute the intervention. [] or None, indicates all nodes
            will get the intervention
        repetitions: The number of times an intervention is given, used with timesteps_between_repetitions. -1 means
            the intervention repeats forever. Sets **Number_Repetitions**
        timesteps_between_repetitions: The interval, in timesteps, between repetitions. Ignored if repetitions = 1.
            Sets **Timesteps_Between_Repetitions**.
        ind_property_restrictions: A list of dictionaries of IndividualProperties, which are needed for the individual
            to receive the intervention. Sets the **Property_Restrictions_Within_Node**. In the format ``[{
            "BitingRisk":"High"}, {"IsCool":"Yes}]``
        receiving_itn_broadcast_event: Optional. BroadcastEvent that's sent out when bednet is received.
            Default is to send out 'Received_ITN' event. To not send out event set to None.
        killing_initial_effect: Initial strength of the Killing effect. The effect may decay over time.
        killing_box_duration: Box duration of effect in days before the decay of Killing Initial_Effect.
        killing_decay_time_constant: The exponential decay length, in days of the Killing Initial_Effect.
        blocking_initial_effect: Initial strength of the Blocking effect. The effect may decay over time.
        blocking_box_duration: Box duration of effect in days before the decay of Blocking Initial_Effect.
        blocking_decay_time_constant: The exponential decay length, in days of the Blocking Initial_Effect.
        repelling_initial_effect: Initial strength of the Repelling effect. The effect may decay over time.
        repelling_box_duration: Box duration of effect in days before the decay of Repelling Initial_Effect.
        repelling_decay_time_constant: The exponential decay length, in days of the Repelling Initial_Effect.
        usage_initial_effect: Determines when and if an individual is using a bed net.
        usage_box_duration: ?
        usage_decay_time_constant: ?
        insecticide: The name of the insecticide defined in config.Insecticides for this intervention.
            If insecticides are being used, then this must be defined as one of those values.  If they are not
            being used, then this does not needed to be specified or can be empty string.  It cannot have a
            value if config.Insecticides does not define anything.
        cost: Unit cost per bednet
        intervention_name: The optional name used to refer to this intervention as a means to differentiate it from
            others that use the same class. It’s possible to have multiple SimpleBednet interventions
            attached to a person if they have different Intervention_Name values.
    """
    if target_num_individuals and coverage_by_ages:
        raise ValueError("You cannot use both - 'target_num_individuals' and 'coverage_by_ages'.\n")

    intervention = _simple_bednet(campaign,
                                  killing_initial_effect=killing_initial_effect,
                                  killing_box_duration=killing_box_duration,
                                  killing_decay_time_constant=killing_decay_time_constant,
                                  blocking_initial_effect=blocking_initial_effect,
                                  blocking_box_duration=blocking_box_duration,
                                  blocking_decay_time_constant=blocking_decay_time_constant,
                                  repelling_initial_effect=repelling_initial_effect,
                                  repelling_box_duration=repelling_box_duration,
                                  repelling_decay_time_constant=repelling_decay_time_constant,
                                  usage_initial_effect=usage_initial_effect,
                                  usage_box_duration=usage_box_duration,
                                  usage_decay_time_constant=usage_decay_time_constant,
                                  insecticide=insecticide,
                                  cost=cost,
                                  intervention_name=intervention_name)

    if receiving_itn_broadcast_event:
        intervention = [intervention, BroadcastEvent(camp=campaign, Event_Trigger=receiving_itn_broadcast_event)]

    if coverage_by_ages:
        for coverage_by_age in coverage_by_ages:
            add_campaign_event(campaign,
                               start_day=start_day,
                               demographic_coverage=coverage_by_age["coverage"],
                               target_age_min=coverage_by_age["min"],
                               target_age_max=coverage_by_age["max"],
                               node_ids=node_ids,
                               repetitions=repetitions,
                               timesteps_between_repetitions=timesteps_between_repetitions,
                               ind_property_restrictions=ind_property_restrictions,
                               individual_intervention=intervention)
    else:
        add_campaign_event(campaign,
                           start_day=start_day,
                           demographic_coverage=demographic_coverage,
                           target_num_individuals=target_num_individuals,
                           node_ids=node_ids,
                           repetitions=repetitions,
                           timesteps_between_repetitions=timesteps_between_repetitions,
                           ind_property_restrictions=ind_property_restrictions,
                           individual_intervention=intervention)

add_itn_triggered(campaign, start_day=0, demographic_coverage=1.0, trigger_condition_list=None, listening_duration=-1, delay_period_constant=0, node_ids=None, repetitions=1, timesteps_between_repetitions=365, ind_property_restrictions=None, receiving_itn_broadcast_event=None, blocking_initial_effect=0.9, blocking_box_duration=0, blocking_decay_time_constant=7300, killing_initial_effect=0.6, killing_box_duration=0, killing_decay_time_constant=7300, repelling_initial_effect=0, repelling_box_duration=-1, repelling_decay_time_constant=0, usage_initial_effect=1, usage_box_duration=-1, usage_decay_time_constant=0, insecticide='', cost=0, intervention_name='SimpleBednet')

Adds a triggered SimpleBednet intervention

Parameters:

Name Type Description Default
campaign EMODCampaign

object for building, modifying, and writing campaign configuration files.

required
start_day int

The day the intervention is given out.

0
demographic_coverage float

This value is the probability that each individual in the target population will receive the intervention. It does not guarantee that the exact fraction of the target population set by Demographic_Coverage receives the intervention.

1.0
trigger_condition_list list

A list of the events that will trigger intervention distribution.

None
listening_duration int

The number of time steps that the distributed event will monitor for triggers. Default is -1, which is indefinitely.

-1
delay_period_constant float

Optional. Delay, in days, before the intervention is given out after a trigger is received.

0
node_ids list

List of nodes to which to distribute the intervention. [] or None, indicates all nodes will get the intervention

None
repetitions int

The number of times an intervention is given, used with timesteps_between_repetitions. -1 means the intervention repeats forever. Sets Number_Repetitions

1
timesteps_between_repetitions int

The interval, in timesteps, between repetitions. Ignored if repetitions = 1. Sets Timesteps_Between_Repetitions.

365
ind_property_restrictions list

A list of dictionaries of IndividualProperties, which are needed for the individual to receive the intervention. Sets the Property_Restrictions_Within_Node. In the format [{ "BitingRisk":"High"}, {"IsCool":"Yes"}]

None
receiving_itn_broadcast_event str

Optional. BroadcastEvent that's sent out when bednet is received. Default is to send out 'Received_ITN' event. To not send out event set to None.

None
killing_initial_effect float

Initial strength of the Killing effect. The effect may decay over time.

0.6
killing_box_duration int

Box duration of effect in days before the decay of Killing Initial_Effect.

0
killing_decay_time_constant float

The exponential decay length, in days of the Killing Initial_Effect.

7300
blocking_initial_effect float

Initial strength of the Blocking effect. The effect may decay over time.

0.9
blocking_box_duration float

Box duration of effect in days before the decay of Blocking Initial_Effect.

0
blocking_decay_time_constant float

The exponential decay length, in days of the Blocking Initial_Effect.

7300
repelling_initial_effect float

Initial strength of the Repelling effect. The effect may decay over time.

0
repelling_box_duration float

Box duration of effect in days before the decay of Repelling Initial_Effect.

-1
repelling_decay_time_constant float

The exponential decay length, in days of the Repelling Initial_Effect.

0
usage_initial_effect float

Determines when and if an individual is using a bed net.

1
usage_box_duration float

?

-1
usage_decay_time_constant float

?

0
insecticide str

The name of the insecticide defined in config.Insecticides for this intervention. If insecticides are being used, then this must be defined as one of those values. If they are not being used, then this does not needed to be specified or can be empty string. It cannot have a value if config.Insecticides does not define anything.

''
cost float

Unit cost per bednet

0
intervention_name str

The optional name used to refer to this intervention as a means to differentiate it from others that use the same class. It’s possible to have multiple SimpleBednet interventions attached to a person if they have different Intervention_Name values.

'SimpleBednet'
Source code in emodpy_malaria/interventions/bednet.py
def add_itn_triggered(campaign,
                      start_day: int = 0,
                      demographic_coverage: float = 1.0,
                      trigger_condition_list: list = None,
                      listening_duration: int = -1,
                      delay_period_constant: float = 0,
                      node_ids: list = None,
                      repetitions: int = 1,
                      timesteps_between_repetitions: int = 365,
                      ind_property_restrictions: list = None,
                      receiving_itn_broadcast_event: str = None,
                      blocking_initial_effect: float = 0.9,
                      blocking_box_duration: float = 0,
                      blocking_decay_time_constant: float = 7300,
                      killing_initial_effect: float = 0.6,
                      killing_box_duration: int = 0,
                      killing_decay_time_constant: float = 7300,
                      repelling_initial_effect: float = 0,
                      repelling_box_duration: float = -1,
                      repelling_decay_time_constant: float = 0,
                      usage_initial_effect: float = 1,
                      usage_box_duration: float = -1,
                      usage_decay_time_constant: float = 0,
                      insecticide: str = "",
                      cost: float = 0,
                      intervention_name: str = "SimpleBednet"
                      ):
    """
        Adds a triggered SimpleBednet intervention

    Args:
        campaign (emodpy.campaign.emod_campaign.EMODCampaign): object for building, modifying, and writing campaign configuration files.
        start_day: The day the intervention is given out.
        demographic_coverage: This value is the probability that each individual in the target population will
            receive the intervention. It does not guarantee that the exact fraction of the target population set by
            Demographic_Coverage receives the intervention.
        trigger_condition_list: A list of the events that will trigger intervention distribution.
        listening_duration: The number of time steps that the distributed event will monitor for triggers.
            Default is -1, which is indefinitely.
        delay_period_constant: Optional. Delay, in days, before the intervention is given out after a trigger
            is received.
        node_ids: List of nodes to which to distribute the intervention. [] or None, indicates all nodes
            will get the intervention
        repetitions: The number of times an intervention is given, used with timesteps_between_repetitions. -1 means
            the intervention repeats forever. Sets **Number_Repetitions**
        timesteps_between_repetitions: The interval, in timesteps, between repetitions. Ignored if repetitions = 1.
            Sets **Timesteps_Between_Repetitions**.
        ind_property_restrictions: A list of dictionaries of IndividualProperties, which are needed for the individual
            to receive the intervention. Sets the **Property_Restrictions_Within_Node**. In the format ``[{
            "BitingRisk":"High"}, {"IsCool":"Yes"}]``
        receiving_itn_broadcast_event: Optional. BroadcastEvent that's sent out when bednet is received.
            Default is to send out 'Received_ITN' event. To not send out event set to None.
        killing_initial_effect: Initial strength of the Killing effect. The effect may decay over time.
        killing_box_duration: Box duration of effect in days before the decay of Killing Initial_Effect.
        killing_decay_time_constant: The exponential decay length, in days of the Killing Initial_Effect.
        blocking_initial_effect: Initial strength of the Blocking effect. The effect may decay over time.
        blocking_box_duration: Box duration of effect in days before the decay of Blocking Initial_Effect.
        blocking_decay_time_constant: The exponential decay length, in days of the Blocking Initial_Effect.
        repelling_initial_effect: Initial strength of the Repelling effect. The effect may decay over time.
        repelling_box_duration: Box duration of effect in days before the decay of Repelling Initial_Effect.
        repelling_decay_time_constant: The exponential decay length, in days of the Repelling Initial_Effect.
        usage_initial_effect: Determines when and if an individual is using a bed net.
        usage_box_duration: ?
        usage_decay_time_constant: ?
        insecticide: The name of the insecticide defined in config.Insecticides for this intervention.
            If insecticides are being used, then this must be defined as one of those values.  If they are not
            being used, then this does not needed to be specified or can be empty string.  It cannot have a
            value if config.Insecticides does not define anything.
        cost: Unit cost per bednet
        intervention_name: The optional name used to refer to this intervention as a means to differentiate it from
            others that use the same class. It’s possible to have multiple SimpleBednet interventions
            attached to a person if they have different Intervention_Name values.
    """

    intervention_list = [_simple_bednet(campaign,
                                        killing_initial_effect=killing_initial_effect,
                                        killing_box_duration=killing_box_duration,
                                        killing_decay_time_constant=killing_decay_time_constant,
                                        blocking_initial_effect=blocking_initial_effect,
                                        blocking_box_duration=blocking_box_duration,
                                        blocking_decay_time_constant=blocking_decay_time_constant,
                                        repelling_initial_effect=repelling_initial_effect,
                                        repelling_box_duration=repelling_box_duration,
                                        repelling_decay_time_constant=repelling_decay_time_constant,
                                        usage_initial_effect=usage_initial_effect,
                                        usage_box_duration=usage_box_duration,
                                        usage_decay_time_constant=usage_decay_time_constant,
                                        insecticide=insecticide,
                                        cost=cost,
                                        intervention_name=intervention_name)]

    if receiving_itn_broadcast_event:
        intervention_list.append(BroadcastEvent(camp=campaign, Event_Trigger=receiving_itn_broadcast_event))

    add_triggered_campaign_delay_event(campaign=campaign,
                                       start_day=start_day,
                                       demographic_coverage=demographic_coverage,
                                       trigger_condition_list=trigger_condition_list,
                                       listening_duration=listening_duration,
                                       delay_period_constant=delay_period_constant,
                                       node_ids=node_ids,
                                       repetitions=repetitions,
                                       timesteps_between_repetitions=timesteps_between_repetitions,
                                       ind_property_restrictions=ind_property_restrictions,
                                       individual_intervention=intervention_list)

new_intervention_as_file(campaign, start_day, filename=None)

Write a campaign file to disk with a single bednet event, using defaults. Useful for testing and learning.

Parameters:

Name Type Description Default
campaign EMODCampaign

The 🇵🇾obj:emod_api:emod_api.campaign object to which the intervention will be added.

required
start_day float

The day of the simulation on which the bednets are distributed. We recommend aligning this with the start of the simulation.

required
filename str

The campaign filename; can be omitted and default will be used and returned to user.

None

Returns:

Type Description
str

The campaign filename written to disk.

Source code in emodpy_malaria/interventions/bednet.py
def new_intervention_as_file(campaign, start_day, filename=None):
    """
    Write a campaign file to disk with a single bednet event, using defaults. Useful for testing and learning.

    Args:
        campaign (emodpy.campaign.emod_campaign.EMODCampaign): The :py:obj:`emod_api:emod_api.campaign` object to which the intervention will be added.
        start_day (float): The day of the simulation on which the bednets are distributed. We recommend
            aligning this with the start of the simulation.
        filename (str): The campaign filename; can be omitted and default will be used and returned to user.

    Returns:
        (str): The campaign filename written to disk.
    """
    add_itn_scheduled(campaign=campaign, start_day=start_day)
    if filename is None:
        filename = "BedNet.json"
    campaign.save(filename)
    return filename