Skip to content

CoverageByNodeEventCoordinator

The CoverageByNodeEventCoordinator distributes individual-level interventions with node-specific demographic coverage. It is similar to the StandardInterventionDistributionEventCoordinator but adds the ability to specify different coverage fractions for each node via the Coverage_By_Node parameter. Each entry in Coverage_By_Node is a pair of node ID and coverage value. If no coverage has been specified for a particular node ID, the coverage defaults to zero for that node.

This coordinator supports the same demographic targeting, property restrictions, repetition, and targeting config options as the standard event coordinator.

Note

This can only be used with individual-level interventions, but EMOD will not produce an error if you attempt to use it with a node-level intervention.

At a glance:

  • Distributed to: Nodes
  • Serialized: No, it needs to be redistributed when starting from a serialized file.

Note

Parameters are case-sensitive. For Boolean parameters, set to 1 for true or 0 for false. Minimum, maximum, or default values of "NA" indicate that those values are not applicable for that parameter.

EMOD does not use true defaults; that is, if the dependency relationships indicate that a parameter is required, you must supply a value for it. However, many of the tools used to work with EMOD will use the default values provided below.

JSON format does not permit comments, but you can add "dummy" parameters to add contextual information to your files. Any keys that are not EMOD parameter names will be ignored by the model.

The table below describes all possible parameters with which this class can be configured. The JSON example that follows shows one potential configuration.

Parameter Type Min Max Default Description
Coverage_By_Node array of JSON objects NA NA [] An array of JSON objects each containing a Node_Id (integer) and Coverage (float) pair that configures the demographic coverage of interventions by node for the targeted populations. The coverage value must be a float between 0 and 1. See idmType:NodeIdAndCoverage for individual element details. See example.
Coverage_By_Node.Coverage float 0 1 0 Located within Coverage_By_Node. The percentage of people in the node that should be randomly selected to receive the intervention. The value must be a float between 0 and 1.
Coverage_By_Node.Node_Id integer 0 999999 0 Located within Coverage_By_Node. The ID of the node specified in the demographics to which this coverage applies.
Intervention_Config JSON object NA NA NA The nested JSON of the intervention to be distributed by this event coordinator. See example.
Node_Property_Restrictions array of JSON objects NA NA [] A list of the NodeProperty key:value pairs that the node in which the individual is currently located must have in order to be targeted for the intervention. See IndividualProperties and NodeProperties parameters for more information. You can specify AND and OR combinations of key:value pairs with this parameter. See example.
Number_Repetitions integer -1 10000 1 The number of times an intervention is given, used with Timesteps_Between_Repetitions. A value of -1 implies an infinite number of repetitions.
Property_Restrictions array of strings NA NA [] A list of the IndividualProperty key:value pairs that individuals must have to be targeted by this intervention. See IndividualProperties and NodeProperties parameters for more information. To specify AND and OR combinations of key:value pairs use Property_Restrictions_Within_Node. You cannot use both of these parameters in the same event coordinator. See example.
Property_Restrictions_Within_Node array of JSON objects NA NA [] A list of JSON objects where each object has Individual Property (IP) Keys as JSON keys and IP Values as JSON values. The values in the object are AND'd together while the objects are OR'd together. An individual's IP values must meet the logic in order to receive the intervention. You may specify individual property restrictions using either this parameter or Property_Restrictions but not both. See example.
Target_Age_Max float 0 9.3228e+35 9.3228e+35 The age in years of an individual being considered must be less than or equal to this value in order to be selected. Used when Target_Demographic is set to ExplicitAgeRanges or ExplicitAgeRangesAndGender.
Target_Age_Min float 0 9.3228e+35 0 The age in years of an individual being considered must be greater than or equal to this value in order to be selected. Used when Target_Demographic is set to ExplicitAgeRanges or ExplicitAgeRangesAndGender.
Target_Demographic enum NA NA Everyone The target demographic group. Possible values are:
Everyone
ExplicitAgeRanges
ExplicitAgeRangesAndGender
ExplicitGender
* ExplicitDiseaseState
Target_Gender enum NA NA All Specifies the gender restriction for the intervention. Possible values are:
Male
Female
* All
Target_Residents_Only boolean 0 1 0 When set to true (1), only individuals that currently reside in their 'home' node will be selected. The 'home' node is either the one they began the simulation in or the one set by the MigrateIndividuals or MigrateFamily interventions.
Targeting_Config JSON object NA NA NA Be more selective of individuals by using the Targeting_Config classes. See example.
Timesteps_Between_Repetitions integer -1 10000 -1 The number of time steps — not days — between repetitions. If the Simulation_Timestep is set to 30 days and Timesteps_Between_Repetitions is set to 4 then there will be 120 days between repetitions.
{
    "Use_Defaults": 1,
    "Events": [
        {
            "class": "CampaignEvent",
            "Start_Day": 0,
            "Nodeset_Config": {
                "class": "NodeSetNodeList",
                "Node_List": [1, 2, 3]
            },
            "Event_Coordinator_Config": {
                "class": "CoverageByNodeEventCoordinator",
                "Target_Demographic": "Everyone",
                "Number_Repetitions": 1,
                "Coverage_By_Node": [
                    {
                        "Node_Id": 1,
                        "Coverage": 0.6
                    },
                    {
                        "Node_Id": 2,
                        "Coverage": 0.9
                    },
                    {
                        "Node_Id": 3,
                        "Coverage": 0.1
                    }
                ],
                "Intervention_Config": {
                    "class": "SimpleVaccine",
                    "Vaccine_Type": "AcquisitionBlocking",
                    "Vaccine_Take": 1,
                    "Waning_Config": {
                        "class": "WaningEffectBox",
                        "Initial_Effect": 1,
                        "Box_Duration": 3650
                    }
                }
            }
        }
    ]
}