Configure heterogeneous disease transmission

By default, Epidemiological MODeling software (EMOD) assumes disease transmission is homogeneous across a population within each node when using the generic simulation type. That is, the population within a node is “well-mixed” and has a homogeneous pattern of mixing. Disease transmission is configured by the parameter Base_Infectivity, which determines a single transmission constant, \beta_0, to calculate the transmission rate for each individual. These assumptions simplify the mathematical calculations that are performed when running a simulation.

However, these assumptions do not reflect the true complexity of disease transmission in a population. The dynamics of transmission for some diseases are influenced by heterogeneous contact patterns. Several studies have shown that contact pattern is not random and correlates with specific characteristics, such as age, household and community structure, and spatial movement. When modeling scenarios with large heterogeneities, such as accessibility to health care or age groups, a simulation without heterogeneous mixing cannot incorporate these population segments in a node.

This topic describes how to use the HINT feature to add heterogeneous transmission to your generic model by defining population groups and the transmission rate between each of these groups. Heterogeneity and transmission scaling describes the mathematics underpinning HINT.

  1. In the configuration file, set the following:
    • Enable_Heterogeneous_Intranode_Transmission to 1.
    • Base_Infectivity to your desired value.
  2. If you have not already created population groups in the demographics file, create them using the steps in Configure heterogeneity using individual and node properties.
  3. In the demographics file, within the IndividualProperties array, add the TransmissionMatrix parameter and assign it an empty JSON object.
  4. In the object, set the following:
    • Route to the the transmission route (currently “Contact” is the only supported value).
    • Matrix to an array that contains a WAIFW matrix that scales the base infectivity set in the configuration file. This matrix is described in more detail below.

Transmission matrix

The matrix is n \times n sized, where n is the number of groups defined in IndividualProperties. Each value in the matrix contains the \beta value by which to scale the base infectivity, \beta_0, for the simulation. Rows represent from whom the disease is transmitted and columns represent to whom the disease is transmitted, in terms of the group the individual belongs to.

For example, the following demographics file configures HINT for transmission between individuals in high-risk and low-risk groups.

{
    "IndividualProperties": [{
        "Property": "Risk",
        "Values": ["High", "Low"],
        "TransmissionMatrix": {
            "Route": "Contact",
            "Matrix": [
                [10, 0.1],
                [0.1, 1]
            ]
        }
    }]
}

Based on the order the property values are listed, the high-risk group is represented in the first column and first row; the low-risk group is represented in the second column and second row. The following matrix represents the direction of the disease transmission between the groups:

WAIFW = \begin{pmatrix}
\text{High Risk} \rightarrow \text{High Risk} & \text{High Risk} \rightarrow \text{Low Risk}\\
\text{Low Risk} \rightarrow \text{High Risk} & \text{Low Risk} \rightarrow \text{Low Risk}\\
\end{pmatrix}

Multiple properties

When a simulation has more than one Property, an individual will belong to one group in each Property type.

The \beta values for the different groups that an individual belongs to are multiplied together to create the transmission constant. In the following example, an individual who is high risk and suburban will have the following transmission multiplier when interacting with an individual who is a low risk and suburban: 0.1 \times 1.4 = 0.14.

{
    "IndividualProperties": [{
        "Property": "Risk",
        "Values": ["High", "Low"],
        "Initial_Distribution": [0.2, 0.8],
        "Transitions": [],
        "TransmissionMatrix": {
            "Route": "Contact",
            "Matrix": [
                [10, 0.1],
                [0.1, 1]
            ]
        }
    }, {
        "Property": "Place",
        "Values": ["Urban", "Suburban", "Rural"],
        "Initial_Distribution": [0.55, 0.35, 0.1],
        "Transitions": [],
        "TransmissionMatrix": {
            "Route": "Contact",
            "Matrix": [
                [2.5, 1.0, 0.1],
                [1.0, 1.4, 0.2],
                [0.2, 0.4, 0.8]
            ]

        }
    }]
}