Target interventions to nodes or groups

Generally, you want to target your outbreaks and campaign interventions to specific regions or individuals who meet certain criteria. For example, you may want to distribute bednets only to areas where a mosquito-borne disease is endemic or vaccinate only young children who are at highest risk. This topic describes how to distribute interventions to specific geographic nodes or groups of individuals.

Target to nodes

Targeting geographic nodes with a particular intervention is controlled by the Nodeset_Config parameter in the campaign file. To distribute the intervention to all nodes, simply set it to “NodeSetAll”. To distribute to a subset of nodes, follow the steps below.

  1. In the JSON object for the campaign event, set Nodeset_Config using one of the following two options:

    • Set it to an empty JSON object. Within that object, set the following:

      • Set class to “NodeSetNodeList”.

      • Set Node_List to an array that contains a comma-delimited list of nodes that set where the intervention will be distributed.

    • Set it to an empty JSON object. Within that object, set the following:

      • Set class to “NodeSetPolygon”.

      • Set Polygon_Format to “SHAPE”.

      • Set Vertices to a comma-delimited list of latitude and longitude pairs that define the outer boundary of the region you want to target. The intervention will be distributed to all nodes within the defined bounds.

See the example below.

{
    "Use_Defaults": 1,
    "Events": [{
        "Event_Name": "Outbreak",
        "Nodeset_Config": {
            "class": "NodeSetNodeList",
            "Node_List": [1, 3, 5]
        },
        "Start_Day": 10,
        "class": "CampaignEvent"
    }]
}

Target to groups

To target interventions to particular groups in a population, you must first create those groups in the demographics file using IndividualProperties. Then, in the campaign file, you can target an intervention or outbreak to a group of individuals based on the properties applied to them. See Configure heterogeneous populations for instructions on creating the groups.

Just as creating groups based on age works a little differently than groups based on other properties, targeting an intervention to a particular age range works a little differently than targeting an intervention to other properties.

To target interventions to properties other than age:

  1. In the campaign file, in the event you want to target, set Target_Demographic to “Everyone”.

  2. Add the Property_Restrictions parameter and set to an empty array.

  3. In that array, add a list of JSON key-value pairs of the property type and value that specifies the groups to apply the intervention to. If the name of the element is not valid, EMOD will ignore the property restriction.

To target interventions to age ranges:

  1. In the campaign file, in the event you want to target, set Target_Demographic to “ExplicitAgeRanges.”

  2. Add the Target_Age_Min and set to the lower age bound.

  3. Add the Target_Age_Max and set to the upper age bound.

    Both of these values must match one the values listed in Age_Bin_Edges_In_Years in the demographics file. EMOD does not verify this range.

The following examples illustrate how to target interventions to different groups. This includes how to configure interventions when there are multiple relevant properties, such as targeting individuals who are both low-risk and in a suburban setting or individuals who are either low- risk or living in suburban settings.

Single property, single value

The following examples show how to target interventions based on a single property value.

At day 0 of the simulation, an outbreak starts. Target_Demographic is set to “Everyone” but Property_Restrictions restricts the start of the outbreak to the “Urban” group.

_images/howto-targeted-1.png
{
    "Events": [{
        "Event_Coordinator_Config": {
            "Number_Distributions": -1,
            "Intervention_Config": {
                "Antigen": 0,
                "Genome": 0,
                "Outbreak_Source": "PrevalenceIncrease",
                "class": "OutbreakIndividual"
            },
            "Demographic_Coverage": 1,
            "Target_Demographic": "Everyone",
            "Property_Restrictions": [
                "Place:Urban"
            ],
            "class": "StandardInterventionDistributionEventCoordinator"
        },
        "Nodeset_Config": {
            "class": "NodeSetAll"
        },
        "Start_Day": 0,
        "class": "CampaignEvent"
    }]
}

Even if you have multiple properties defined in the demographics file, you can target interventions to a single property value in the same way. Individuals can have membership in any of the groups from the other property type.

In this example, groups are defined for both the “Risk” and “Place” property types. The outbreak only targets the “Suburban” group using the “Place” property type. Individuals can have membership in either of the “Risk” groups.

_images/howto-targeted-2.png
{
    "Events": [{
        "Event_Coordinator_Config": {
            "Number_Distributions": -1,
            "Intervention_Config": {
                "Antigen": 0,
                "Genome": 0,
                "Outbreak_Source": "PrevalenceIncrease",
                "class": "OutbreakIndividual"
            },
            "Demographic_Coverage": 1,
            "Target_Demographic": "Everyone",
            "Property_Restrictions": [
                "Place:Urban"
            ],
            "class": "StandardInterventionDistributionEventCoordinator"
        },
        "Nodeset_Config": {
            "class": "NodeSetAll"
        },
        "Start_Day": 0,
        "class": "CampaignEvent"
    }]
}

Single property, multiple values

If you want to target multiple groups with the same property type, such as both “Urban” and “Rural” values with the “Place” property, you must use multiple interventions. You cannot have more than one group with the same property value in one intervention or outbreak.

In this example, an outbreak starts at day 0 in the both the “Rural” and “Urban” groups.

_images/howto-targeted-3.png
{
    "Events": [{
        "Event_Coordinator_Config": {
            "Number_Distributions": -1,
            "Intervention_Config": {
                "Antigen": 0,
                "Genome": 0,
                "Outbreak_Source": "PrevalenceIncrease",
                "class": "OutbreakIndividual"
            },
            "Demographic_Coverage": 1,
            "Target_Demographic": "Everyone",
            "Property_Restrictions": [
                "Place:Rural"
            ],
            "class": "StandardInterventionDistributionEventCoordinator"
        },
        "Nodeset_Config": {
            "class": "NodeSetAll"
        },
        "Start_Day": 0,
        "class": "CampaignEvent"
    }, {
        "Event_Coordinator_Config": {
            "Number_Distributions": -1,
            "Intervention_Config": {
                "Antigen": 0,
                "Genome": 0,
                "Outbreak_Source": "PrevalenceIncrease",
                "class": "OutbreakIndividual"
            },
            "Demographic_Coverage": 1,
            "Target_Demographic": "Everyone",
            "Property_Restrictions": [
                "Place:Urban"
            ],
            "class": "StandardInterventionDistributionEventCoordinator"
        },
        "Nodeset_Config": {
            "class": "NodeSetAll"
        },
        "Start_Day": 0,
        "class": "CampaignEvent"
    }]
}

Multiple properties, individuals must match all values

To target individuals who belong to multiple groups defined by different property types, such as people who are both urban and low risk, you can use a single intervention or outbreak. When two groups from multiple properties are targeted in one intervention or outbreak, the event is only applied to individuals that belong to both of the groups.

In this example, a vaccine intervention is targeted at the “Low” risk group and the “Suburban” place group. Individuals that are targeted to receive the vaccine must be in both the “Suburban” group and the “Low” risk group.

_images/howto-targeted-4.png
{
    "Events": [{
        "Event_Coordinator_Config": {
            "Demographic_Coverage": 1.0,
            "Intervention_Config": {
                "Cost_To_Consumer": 10,
                "Durability_Time_Profile": "BOXDECAYDURABILITY",
                "Primary_Decay_Time_Constant": 3650,
                "Reduced_Acquire": 1,
                "Reduced_Transmit": 0,
                "Secondary_Decay_Time_Constant": 3650,
                "Vaccine_Take": 1,
                "Vaccine_Type": "StrainSpecific",
                "class": "SimpleImmunoglobulin"
            },
            "Target_Demographic": "Everyone",
            "Property_Restrictions": [
                "Risk:Low",
                "Place:Suburban"
            ],
            "class": "StandardInterventionDistributionEventCoordinator"
        },
        "Nodeset_Config": {
            "class": "NodeSetAll"
        },
        "Start_Day": 100,
        "class": "CampaignEvent"
    }]
}

Multiple properties, individuals must match at least one value

However, if you want to target multiple groups, but individuals need to be a member of only one of the specified groups to qualify for the intervention, you must create an intervention for each of the targeted groups. The events are applied separately and are not restricted to individuals that belong to both of the groups. Instead, individuals can belong to either of the groups.

In this example, an outbreak is targeted at the “Low” risk group in the first intervention and is targeted at the “Suburban” group in the second intervention.

_images/howto-targeted-5.png
{
    "Events": [{
        "Event_Coordinator_Config": {
            "Number_Distributions": -1,
            "Intervention_Config": {
                "Antigen": 0,
                "Genome": 0,
                "Outbreak_Source": "PrevalenceIncrease",
                "class": "OutbreakIndividual"
            },
            "Demographic_Coverage": 1,
            "Target_Demographic": "Everyone",
            "Property_Restrictions": [
                "Risk:Low"
            ],
            "class": "StandardInterventionDistributionEventCoordinator"
        },
        "Nodeset_Config": {
            "class": "NodeSetAll"
        },
        "Start_Day": 0,
        "class": "CampaignEvent"
    }, {
        "Event_Coordinator_Config": {
            "Number_Distributions": -1,
            "Intervention_Config": {
                "Antigen": 0,
                "Genome": 0,
                "Outbreak_Source": "PrevalenceIncrease",
                "class": "OutbreakIndividual"
            },
            "Demographic_Coverage": 1,
            "Target_Demographic": "Everyone",
            "Property_Restrictions": [
                "Place:Suburban"
            ],
            "class": "StandardInterventionDistributionEventCoordinator"
        },
        "Nodeset_Config": {
            "class": "NodeSetAll"
        },
        "Start_Day": 0,
        "class": "CampaignEvent"
    }]
}

Target an age range

Targeting an intervention to an age range is set up differently than targeting an intervention to other property types. However, you can combine both kinds of restrictions. In this example, a vaccine campaign is targeted at the “Urban” group for individuals who are age 0 to 5.

_images/howto-targeted-6.png
{
    "Events": [{
        "Event_Coordinator_Config": {
            "Demographic_Coverage": 1.0,
            "Intervention_Config": {
                "Cost_To_Consumer": 10,
                "Durability_Time_Profile": "BOXDECAYDURABILITY",
                "Primary_Decay_Time_Constant": 3650,
                "Reduced_Acquire": 1,
                "Reduced_Transmit": 0,
                "Secondary_Decay_Time_Constant": 3650,
                "Vaccine_Take": 1,
                "Vaccine_Type": "StrainSpecific",
                "class": "SimpleImmunoglobulin"
            },
            "Target_Demographic": "ExplicitAgeRanges",
            "Target_Age_Min": 0,
            "Target_Age_Max": 5,
            "Property_Restrictions": [
                "Place:Urban"
            ],
            "class": "StandardInterventionDistributionEventCoordinator"
        },
        "Nodeset_Config": {
            "class": "NodeSetAll"
        },
        "Start_Day": 30,
        "class": "CampaignEvent"
    }]
}