Source code for emodpy_malaria.interventions.malaria_challenge
from emod_api import schema_to_class as s2c
from emodpy_malaria.interventions.common import add_campaign_event
[docs]
def add_challenge_trial(campaign, start_day: int = 0, node_ids: list = None, demographic_coverage: float = 1,
infectious_bites: int = 5, sporozoites: int = 0, intervention_name: str = "MalariaChallenge"):
"""
Add an intervention to distribute an infectious challenge mosquito bites or sporozoites to individuals
to the campaign using the **MalariaChallenge** class, a node-level intervention.
Args:
campaign: A campaign builder that also contains schema_path parameters
start_day: The day to distribute the intervention; default = 0.
node_ids: List of nodes to which to distribute the intervention. [] or None, indicates all nodes
will get the intervention
demographic_coverage: The fraction of individuals receiving the challenge
infectious_bites: The number of infectious bites a person is challenged with, Default: 5
sprorozoites needs to be set to 0
sporozoites: The number of sporozoites a person is challenged with. Default: 0. To use "sporozoites", set
infectious_bites to 0.
intervention_name: The optional name used to refer to this intervention as a means to differentiate it from
others that use the same class.
Returns:
Nothing
"""
if sporozoites and infectious_bites:
raise ValueError(f"Please enter a positive value for either 'infectious_bites' or 'sporozoites', "
f"but not both.\n")
intervention = _malaria_challenge(campaign, demographic_coverage=demographic_coverage,
infectious_bites=infectious_bites, sporozoites=sporozoites,
intervention_name=intervention_name)
add_campaign_event(campaign, start_day=start_day, node_ids=node_ids, node_intervention=intervention)
def _malaria_challenge(campaign, demographic_coverage: float = 1, infectious_bites: int = 5, sporozoites: int = 0,
intervention_name: str = "MalariaChallenge"):
"""
Configures a MalariaChallenge node-level intervention
Args:
campaign: A campaign builder that also contains schema_path parameters
demographic_coverage: The fraction of individuals receiving the challenge
infectious_bites: The number of infectious bites a person is challenged with, Default: 5
sprorozoites needs to be set to 0
sporozoites: The number of sporozoites a person is challenged with. Default: 0. To use "sporozoites", set
infectious_bites to 0.
intervention_name: The optional name used to refer to this intervention as a means to differentiate it from
others that use the same class.
Returns:
Configured MalariaChallenge intervention object
"""
schema_path = campaign.schema_path
intervention = s2c.get_class_with_defaults("MalariaChallenge", schema_path)
intervention.Intervention_Name = intervention_name
intervention.Coverage = demographic_coverage
if sporozoites:
intervention.Sporozoite_Count = sporozoites
elif infectious_bites:
intervention.Infectious_Bite_Count = infectious_bites
else:
raise ValueError(f"Please enter a positive value for either 'infectious_bites' or 'sporozoites', "
f"but not both.\n")
return intervention