What’s new#
This topic describes new functionality and breaking changes for recently released versions of Epidemiological MODeling software (EMOD).
EMOD v2.20#
The EMOD v2.20 release includes support for typhoid disease modeling, including new campaign classes: EnvironmentalDiagnostic, TyphoidCarrierDiagnostic, TyphoidVaccine, and TyphoidWASH.
ImmunityBloodTest was added for identifying whether an individual’s immunity meets a specified threshold and then broadcasts an event based on the results. This new campaign class can be used with all supported disease modeling sim types.
OutbreakIndividualTBorHIV extends OutbreakIndividual and allows for specifying HIV or a specific strain of infection for TB.
In addition, configuration and campaign parameters that set the type of distribution (uniform, Gaussian, etc.) of infectiousness, incubation period, and delivery of interventions have been refactored. The number of distributions available and naming conventions used are now consistent across the configuration and campaign files. This change does not affect the distributions used in the demographics files.
A beta release of new campaign classes (not yet fully tested) are included to support surveillance of events, where events are listened to, detected, and broadcast when a threshold has been met. These classes include: BroadcastCoordinatorEvent, BroadcastNodeEvent, DelayEventCoordinator, SurveillanceEventCoordinator, and TriggeredEventCoordinator.
New configuration parameters#
For the generic simulation type, the following new configuration parameters are available:
Parameter |
Data type |
Minimum |
Maximum |
Default |
Description |
Example |
---|---|---|---|---|---|---|
Enable_Infectivity_Reservoir |
boolean |
0 |
1 |
0 |
Controls whether or not an exogeneous reservoir of infectivity will be included in the simulation and allows for the infectivity in a node to be increased additively. When set to 1 (true), the demographics parameter InfectivityReservoirSize is expected in NodeAtttributes for each node. |
{
"Enable_Infectivity_Reservoir": 1
}
|
Enable_Abort_Zero_Infectivity |
boolean |
0 |
Controls whether or not the simulation should be ended when total infectivity falls to zero. Supported only in single-node simulations. |
{
"Enable_Abort_Zero_Infectivity": 1,
"Minimum_End_Time": 3650
}
|
||
Enable_Random_Generator_From_Serialized_Population |
boolean |
0 |
Determines if the random number generator(s) should be extracted from a serialized population file. Enabling this will start a simulation from this file with the exact same random number stream and location in that stream as when the file was serialized. |
{
"Run_Number": 12,
"Random_Number_Generator_Type": "USE_AES_COUNTER",
"Random_Number_Generator_Policy": "ONE_PER_NODE",
"Enable_Random_Generator_From_Serialized_Population": 1
}
|
||
Minimum_End_Time |
float |
0 |
1000000 |
0 |
The minimum time step the simulation must reach before checking for early termination conditions. Enable_Abort_Zero_Infectivity must be set to 1 (true). |
{
"Enable_Abort_Zero_Infectivity": 1,
"Minimum_End_Time": 3650
}
|
Random_Number_Generator_Policy |
enum |
ONE_PER_CORE |
The policy that determines if random numbers are generated for objects in a simulation on a per-core or per-node basis. The following values are available:
|
{
"Run_Number": 15,
"Random_Number_Generator_Type": "USE_AES_COUNTER",
"Random_Number_Generator_Policy": "ONE_PER_NODE"
}
|
||
Random_Number_Generator_Type |
enum |
USE_PSEUDO_DES |
The type of random number generator to use for objects in a simulation. Must set the RNG seed in Run_Number. The following values are available:
|
{
"Run_Number": 15,
"Random_Number_Generator_Type": "USE_LINEAR_CONGRUENTIAL",
"Random_Number_Generator_Policy": "ONE_PER_NODE",
"Enable_Random_Generator_From_Serialized_Population": 1
}
|
New configuration parameters (Distribution)#
Note: These configuration parameters are part of the refactoring of distribution parameters.
For the generic simulation type, the following new configuration parameters are available:
Parameter |
Data type |
Minimum |
Maximum |
Default |
Description |
Example |
---|---|---|---|---|---|---|
Incubation_Period_Constant |
float |
0 |
3.40E+38 |
6 |
The incubation period to use for all individuals. |
{
"Incubation_Period_Distribution": "CONSTANT_DISTRIBUTION",
"Incubation_Period_Constant": 8
}
|
Incubation_Period_Distribution |
enum |
NA |
NA |
NOT_INITIALIZED |
The distribution type to use for assigning the incubation period to each individual in the population. Each individual’s value is a random draw from the distribution. Possible values are:
|
{
"Incubation_Period_Distribution": "GAUSSIAN_DISTRIBUTION",
"Incubation_Period_Gaussian_Mean": 8,
"Incubation_Period_Gaussian_Std_Dev": 1.5
}
|
Incubation_Period_Exponential |
float |
0 |
3.40E+38 |
6 |
The mean incubation period when Incubation_Period_Distribution is set to EXPONENTIAL_DISTRIBUTION. |
{
"Incubation_Period_Distribution": "EXPONENTIAL_DISTRIBUTION",
"Incubation_Period_Exponential": 4.25
}
|
Incubation_Period_Gaussian_Mean |
float |
0 |
3.40E+38 |
6 |
The mean of the incubation period when Incubation_Period_Distribution is set to GAUSSIAN_DISTRIBUTION. |
{
"Incubation_Period_Distribution": "GAUSSIAN_DISTRIBUTION",
"Incubation_Period_Gaussian_Mean": 8,
"Incubation_Period_Gaussian_Std_Dev": 1.5
}
|
Incubation_Period_Gaussian_Std_Dev |
float |
1.18E-38 |
3.40E+38 |
1 |
The standard deviation of the incubation period when Incubation_Period_Distribution is set to GAUSSIAN_DISTRIBUTION. |
{
"Incubation_Period_Distribution": "GAUSSIAN_DISTRIBUTION",
"Incubation_Period_Gaussian_Mean": 8,
"Incubation_Period_Gaussian_Std_Dev": 1.5
}
|
Incubation_Period_Kappa |
float |
1.18E-38 |
3.40E+38 |
1 |
The shape value for the incubation period when Incubation_Period_Distribution is set to WEIBULL_DISTRIBUTION. |
{
"Incubation_Period_Distribution": "WEIBULL_DISTRIBUTION",
"Incubation_Period_Kappa": 0.9,
"Incubation_Period_Lambda": 1.5
}
|
Incubation_Period_Lambda |
float |
1.18E-38 |
3.40E+38 |
1 |
The scale value for the incubation period when Incubation_Period_Distribution is set to WEIBULL_DISTRIBUTION. |
{
"Incubation_Period_Distribution": "WEIBULL_DISTRIBUTION",
"Incubation_Period_Kappa": 0.9,
"Incubation_Period_Lambda": 1.5
}
|
Incubation_Period_Log_Normal_Mu |
float |
1.18E-38 |
3.40E+38 |
6 |
The mean of the natural log of the incubation period when Incubation_Period_Distribution is set to LOG_NORMAL_DISTRIBUTION. |
{
"Incubation_Period_Distribution": "LOG_NORMAL_DISTRIBUTION",
"Incubation_Period_Log_Normal_Mu": 4,
"Incubation_Period_Log_Normal_Sigma": 1
}
|
Incubation_Period_Log_Normal_Sigma |
float |
1.18E-38 |
3.40E+38 |
1 |
The standard deviation of the natural log of the incubation period when Incubation_Period_Distribution is set to LOG_NORMAL_DISTRIBUTION. |
{
"Incubation_Period_Distribution": "LOG_NORMAL_DISTRIBUTION",
"Incubation_Period_Log_Normal_Mu": 4,
"Incubation_Period_Log_Normal_Sigma": 1
}
|
Incubation_Period_Max |
float |
0 |
3.40E+38 |
1 |
The maximum incubation period when Incubation_Period_Distribution is set to UNIFORM_DISTRIBUTION. |
{
"Incubation_Period_Distribution": "UNIFORM_DISTRIBUTION",
"Incubation_Period_Min": 2,
"Incubation_Period_Max": 7
}
|
Incubation_Period_Mean_1 |
float |
1.18E-38 |
3.40E+38 |
1 |
The mean of the first exponential distribution when Incubation_Period_Distribution is set to DUAL_EXPONENTIAL_DISTRIBUTION. |
{
"Incubation_Period_Distribution": "DUAL_EXPONENTIAL_DISTRIBUTION",
"Incubation_Period_Mean_1": 4,
"Incubation_Period_Mean_2": 12,
"Incubation_Period_Proportion_1": 0.2
}
|
Incubation_Period_Mean_2 |
float |
1.18E-38 |
3.40E+38 |
1 |
The mean of the second exponential distribution when Incubation_Period_Distribution is set to DUAL_EXPONENTIAL_DISTRIBUTION. |
{
"Incubation_Period_Distribution": "DUAL_EXPONENTIAL_DISTRIBUTION",
"Incubation_Period_Mean_1": 4,
"Incubation_Period_Mean_2": 12,
"Incubation_Period_Proportion_1": 0.2
}
|
Incubation_Period_Min |
float |
0 |
3.40E+38 |
0 |
The minimum incubation period when Incubation_Period_Distribution is set to UNIFORM_DISTRIBUTION. |
{
"Incubation_Period_Distribution": "UNIFORM_DISTRIBUTION",
"Incubation_Period_Min": 2,
"Incubation_Period_Max": 7
}
|
Incubation_Period_Peak_2_Value |
float |
0 |
3.40E+38 |
1 |
The incubation period value to assign to the remaining individuals when Incubation_Period_Distribution is set to DUAL_CONSTANT_DISTRIBUTION. |
{
"Incubation_Period_Distribution": "DUAL_CONSTANT_DISTRIBUTION",
"Incubation_Period_Proportion_0": 0.25,
"Incubation_Period_Peak_2_Value": 5
}
|
Incubation_Period_Poisson_Mean |
float |
0 |
3.40E+38 |
6 |
The mean of the incubation period when Incubation_Period_Distribution is set to POISSON_DISTRIBUTION. |
{
"Incubation_Period_Distribution": "POISSON_DISTRIBUTION",
"Incubation_Period_Poisson_Mean": 5
}
|
Incubation_Period_Proportion_0 |
float |
0 |
1 |
1 |
The proportion of individuals to assign a value of zero days incubation when Incubation_Period_Distribution is set to DUAL_CONSTANT_DISTRIBUTION. |
{
"Incubation_Period_Distribution": "DUAL_CONSTANT_DISTRIBUTION",
"Incubation_Period_Proportion_0": 0.25,
"Incubation_Period_Peak_2_Value": 5
}
|
Incubation_Period_Proportion_1 |
float |
0 |
1 |
1 |
The proportion of individuals in the first exponential distribution when Incubation_Period_Distribution is set to DUAL_EXPONENTIAL_DISTRIBUTION. |
{
"Incubation_Period_Distribution": "DUAL_EXPONENTIAL_DISTRIBUTION",
"Incubation_Period_Mean_1": 4,
"Incubation_Period_Mean_2": 12,
"Incubation_Period_Proportion_1": 0.2
}
|
Infectious_Period_Constant |
float |
0 |
3.40E+38 |
6 |
The infectious period to use for all individuals. |
{
"Infectious_Period_Distribution": "CONSTANT_DISTRIBUTION",
"Infectious_Period_Constant": 8
}
|
Infectious_Period_Distribution |
enum |
NA |
NA |
NOT_INITIALIZED |
The distribution type to use for assigning the infectious period to each individual in the population. Each individual’s value is a random draw from the distribution. Possible values are:
|
{
"Infectious_Period_Distribution": "GAUSSIAN_DISTRIBUTION",
"Infectious_Period_Gaussian_Mean": 4,
"Infectious_Period_Gaussian_Std_Dev": 1
}
|
Infectious_Period_Exponential |
float |
0 |
3.40E+38 |
6 |
The mean infectious period when Infectious_Period_Distribution is set to EXPONENTIAL_DISTRIBUTION. |
{
"Infectious_Period_Distribution": "EXPONENTIAL_DISTRIBUTION",
"Infectious_Period_Exponential": 4.25
}
|
Infectious_Period_Gaussian_Mean |
float |
0 |
3.40E+38 |
6 |
The mean of the infectious period when Infectious_Period_Distribution is set to GAUSSIAN_DISTRIBUTION. |
{
"Infectious_Period_Distribution": "GAUSSIAN_DISTRIBUTION",
"Infectious_Period_Gaussian_Mean": 4,
"Infectious_Period_Gaussian_Std_Dev": 1
}
|
Infectious_Period_Gaussian_Std_Dev |
float |
1.18E-38 |
3.40E+38 |
1 |
The standard deviation of the infectious period when Infectious_Period_Distribution is set to GAUSSIAN_DISTRIBUTION. |
{
"Infectious_Period_Distribution": "GAUSSIAN_DISTRIBUTION",
"Infectious_Period_Gaussian_Mean": 4,
"Infectious_Period_Gaussian_Std_Dev": 1
}
|
Infectious_Period_Kappa |
float |
1.18E-38 |
3.40E+38 |
1 |
The shape value for the infectious period when Infectious_Period_Distribution is set to WEIBULL_DISTRIBUTION. |
{
"Infectious_Period_Distribution": "WEIBULL_DISTRIBUTION",
"Infectious_Period_Kappa": 0.9,
"Infectious_Period_Lambda": 1.5
}
|
Infectious_Period_Lambda |
float |
1.18E-38 |
3.40E+38 |
1 |
The scale value for the infectious period when Infectious_Period_Distribution is set to WEIBULL_DISTRIBUTION. |
{
"Infectious_Period_Distribution": "WEIBULL_DISTRIBUTION",
"Infectious_Period_Kappa": 0.9,
"Infectious_Period_Lambda": 1.5
}
|
Infectious_Period_Log_Normal_Mu |
float |
1.18E-38 |
3.40E+38 |
6 |
The mean of the natural log of the infectious period when Infectious_Period_Distribution is set to LOG_NORMAL_DISTRIBUTION. |
{
"Infectious_Period_Distribution": "LOG_NORMAL_DISTRIBUTION",
"Infectious_Period_Log_Normal_Mu": 9,
"Infectious_Period_Log_Normal_Sigma": 2
}
|
Infectious_Period_Log_Normal_Sigma |
float |
1.18E-38 |
3.40E+38 |
1 |
The standard deviation of the natural log of the infectious period when Infectious_Period_Distribution is set to LOG_NORMAL_DISTRIBUTION. |
{
"Infectious_Period_Distribution": "LOG_NORMAL_DISTRIBUTION",
"Infectious_Period_Log_Normal_Mu": 9,
"Infectious_Period_Log_Normal_Sigma": 2
}
|
Infectious_Period_Max |
float |
0 |
3.40E+38 |
1 |
The maximum infectious period when Infectious_Period_Distribution is set to UNIFORM_DISTRIBUTION. |
{
"Infectious_Period_Distribution": "UNIFORM_DISTRIBUTION",
"Infectious_Period_Min": 2,
"Infectious_Period_Max": 7
}
|
Infectious_Period_Mean_1 |
float |
1.18E-38 |
3.40E+38 |
1 |
The mean of the first exponential distribution when Infectious_Period_Distribution is set to DUAL_EXPONENTIAL_DISTRIBUTION. |
{
"Infectious_Period_Distribution": "DUAL_EXPONENTIAL_DISTRIBUTION",
"Infectious_Period_Mean_1": 4,
"Infectious_Period_Mean_2": 12,
"Infectious_Period_Proportion_1": 0.2
}
|
Infectious_Period_Mean_2 |
float |
1.18E-38 |
3.40E+38 |
1 |
The mean of the second exponential distribution when Infectious_Period_Distribution is set to DUAL_EXPONENTIAL_DISTRIBUTION. |
{
"Infectious_Period_Distribution": "DUAL_EXPONENTIAL_DISTRIBUTION",
"Infectious_Period_Mean_1": 4,
"Infectious_Period_Mean_2": 12,
"Infectious_Period_Proportion_1": 0.2
}
|
Infectious_Period_Min |
float |
0 |
3.40E+38 |
0 |
The minimum infectious period when Infectious_Period_Distribution is set to UNIFORM_DISTRIBUTION. |
{
"Infectious_Period_Distribution": "UNIFORM_DISTRIBUTION",
"Infectious_Period_Min": 2,
"Infectious_Period_Max": 7
}
|
Infectious_Period_Peak_2_Value |
float |
0 |
3.40E+38 |
1 |
The infectious period value to assign to the remaining individuals when Infectious_Period_Distribution is set to DUAL_CONSTANT_DISTRIBUTION. |
{
"Infectious_Period_Distribution": "DUAL_CONSTANT_DISTRIBUTION",
"Infectious_Period_Proportion_0": 0.25,
"Infectious_Period_Peak_2_Value": 5
}
|
Infectious_Period_Poisson_Mean |
float |
0 |
3.40E+38 |
6 |
The mean of the infectious period with Infectious_Period_Distribution is set to POISSON_DISTRIBUTION. |
{
"Infectious_Period_Distribution": "POISSON_DISTRIBUTION",
"Infectious_Period_Poisson_Mean": 5
}
|
Infectious_Period_Proportion_0 |
float |
0 |
1 |
1 |
The proportion of individuals to assign a value of zero days infectiousness when Infectious_Period_Distribution is set to DUAL_CONSTANT_DISTRIBUTION. |
{
"Infectious_Period_Distribution": "DUAL_CONSTANT_DISTRIBUTION",
"Infectious_Period_Proportion_0": 0.25,
"Infectious_Period_Peak_2_Value": 5
}
|
Infectious_Period_Proportion_1 |
float |
0 |
1 |
1 |
The proportion of individuals in the first exponential distribution when Infectious_Period_Distribution is set to DUAL_EXPONENTIAL_DISTRIBUTION. |
{
"Infectious_Period_Distribution": "DUAL_EXPONENTIAL_DISTRIBUTION",
"Infectious_Period_Mean_1": 4,
"Infectious_Period_Mean_2": 12,
"Infectious_Period_Proportion_1": 0.2
}
|
Symptomatic_Infectious_Offset |
float |
-3.40E+38 |
3.40E+38 |
3.40E+38 |
Amount of time, in days, after the infectious period starts that symptoms appear. Negative values imply an individual is symptomatic before infectious. If this offset is greater than the infectious duration, the infection will not be symptomatic. For example, if Incubation_Period_Constant is set to 10 and Symptomatic_Infectious_Offset is set to 4, then an infected person would become symptomatic 14 days after transmission. |
{
"Infectious_Period_Distribution": "CONSTANT_DISTRIBUTION",
"Symptomatic_Infectious_Offset": 4,
"Incubation_Period_Constant": 10
}
|
Symptomatic_Infectious_Offset |
float |
-3.40E+38 |
3.40E+38 |
3.40E+38 |
Amount of time, in days, after the infectious period starts that symptoms appear. Negative values imply an individual is symptomatic before infectious. If this offset is greater than the infectious duration, the infection will not be symptomatic. For example, if Incubation_Period_Constant is set to 10 and Symptomatic_Infectious_Offset is set to 4, then an infected person would become symptomatic 14 days after transmission. |
{
"Infectious_Period_Distribution": "CONSTANT_DISTRIBUTION",
"Symptomatic_Infectious_Offset": 4,
"Incubation_Period_Constant": 10
}
|
New configuration parameters (Beta)#
Note: These configuration parameters are currently in beta release and have not yet been fully tested.
For the generic simulation type, the following new configuration parameters are available:
Parameter |
Data type |
Minimum |
Maximum |
Default |
Description |
Example |
|||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Report_Coordinator_Event_Recorder |
boolean |
0 |
Enables or disables the ReportCoordinatorEventRecorder.csv output report for coordinator events. When enabled (set to 1) reports will be generated for the broadcasted valid coordinator events, as specified in Report_Coordinator_Event_Recorder_Events. Note: This configuration parameter is currently in beta release and has not yet been fully tested. |
{
"Custom_Coordinator_Events": [
"Coordinator_Event_1",
"Coordinator_Event_2",
"Coordinator_Event_3"
],
"Report_Coordinator_Event_Recorder": 1,
"Report_Coordinator_Event_Recorder_Events": [
"Coordinator_Event_1",
"Coordinator_Event_2",
"Coordinator_Event_3"
]
}
|
|||||||||||||||||
Report_Coordinator_Event_Recorder_Events |
array of strings |
NA |
The list of events to include or exclude in the ReportCoordinatorEventRecorder.csv output report, based on how Report_Coordinator_Event_Recorder_Ignore_Events_In_List is set. This list must not be empty and is dependent upon Report_Coordinator_Event_Recorder being enabled. In addition, the events must be defined in Customer_Coordinator_Events. Note: This configuration parameter is currently in beta release and has not yet been fully tested. |
{
"Custom_Coordinator_Events": [
"Coordinator_Event_1",
"Coordinator_Event_2",
"Coordinator_Event_3"
],
"Report_Coordinator_Event_Recorder": 1,
"Report_Coordinator_Event_Recorder_Events": [
"Coordinator_Event_1",
"Coordinator_Event_2",
"Coordinator_Event_3"
]
}
|
|||||||||||||||||
Report_Coordinator_Event_Recorder_Ignore_Events_In_List |
boolean |
0 |
If set to false (0), only the events listed in the Report_Coordinator_Event_Recorder_Events array will be included in the ReportCoordinatorEventRecorder.csv output report. If set to true (1), only the events listed in the array will be excluded, and all other events will be included. If you want to return all events from the simulation, leave the events array empty. Note: This configuration parameter is currently in beta release and has not yet been fully tested. |
{
"Custom_Coordinator_Events": [
"Coordinator_Event_1",
"Coordinator_Event_2",
"Coordinator_Event_3"
],
"Report_Coordinator_Event_Recorder": 1,
"Report_Coordinator_Event_Recorder_Events": [
"Coordinator_Event_1",
"Coordinator_Event_2",
"Coordinator_Event_3"
],
"Report_Coordinator_Event_Recorder_Ignore_Events_In_List": 0
}
|
|||||||||||||||||
Report_Node_Event_Recorder |
boolean |
0 |
Enables or disables the ReportNodeEventRecorder.csv output report. When enabled (set to 1) reports will be generated for the broadcasted valid node events, as specified in Report_Node_Event_Recorder_Events. Note: This configuration parameter is currently in beta release and has not yet been fully tested. |
{
"Custom_Node_Events": [
"Node_Event_1",
"Node_Event_2"
],
"Report_Node_Event_Recorder": 1,
"Report_Node_Event_Recorder_Events": [
"Node_Event_1",
"Node_Event_2"
]
}
|
|||||||||||||||||
Report_Node_Event_Recorder_Events |
array of strings |
NA |
The list of node events to include or exclude in the ReportNodeEventRecorder.csv output report, based on how Report_Node_Event_Recorder_Ignore_Events_In_List is set. Note: This configuration parameter is currently in beta release and has not yet been fully tested. |
{
"Custom_Node_Events": [
"Node_Event_1",
"Node_Event_2"
],
"Report_Node_Event_Recorder": 1,
"Report_Node_Event_Recorder_Events": [
"Node_Event_1",
"Node_Event_2"
],
"Report_Node_Event_Recorder_Ignore_Events_In_List": 0
}
|
|||||||||||||||||
Report_Node_Event_Recorder_Ignore_Events_In_List |
boolean |
0 |
If set to false (0), only the node events listed in the Report_Node_Event_Recorder_Events array will be included in the ReportNodeEventRecorder.csv output report. If set to true (1), only the node events listed in the array will be excluded, and all other node events will be included. If you want to return all node events from the simulation, leave the node events array empty. Note: This configuration parameter is currently in beta release and has not yet been fully tested.
|
{
"Custom_Node_Events": [
"Node_Event_1",
"Node_Event_2"
],
"Report_Node_Event_Recorder": 1,
"Report_Node_Event_Recorder_Events": [
"Node_Event_1",
"Node_Event_2"
],
"Report_Node_Event_Recorder_Ignore_Events_In_List": 0
}
|
|||||||||||||||||
Report_Node_Event_Recorder_Node_Properties |
array of strings |
[] |
Specifies an array of (optional) node property keys, as defined in NodeProperties in the demographics file, to be added as additional columns to the ReportNodeEventRecorder.csv output report. |
{
"Custom_Node_Events": [
"Node_Event_1",
"Node_Event_2"
],
"Report_Node_Event_Recorder": 1,
"Report_Node_Event_Recorder_Events": [
"Node_Event_1",
"Node_Event_2"
],
"Report_Node_Event_Recorder_Ignore_Events_In_List": 0,
"Report_Node_Event_Recorder_Node_Properties": [
"Geographic"
]
}
|
|||||||||||||||||
Report_Node_Event_Recorder_Stats_By_IPs |
array of strings |
[] |
Specifies an array of (optional) individual property keys, as defined in IndividualProperties in the demographics file, to be added to the ReportNodeEventRecorder.csv output report. For each key:value pair there will be two additional columns (Key:Value:NumIndividuals, Key:Value:NumInfected) added to the report. For example, with a Risk property key assigned the values of LOW and HIGH there would then be four additional columns (Risk:LOW:NumIndividuals, Risk:LOW:NumInfected, Risk:HIGH:NumIndividuals, Risk:HIGH:NumInfected). An empty array equals no additional columns added. |
{
"Custom_Node_Events": [
"Node_Event_1",
"Node_Event_2"
],
"Report_Node_Event_Recorder": 1,
"Report_Node_Event_Recorder_Events": [
"Node_Event_1",
"Node_Event_2"
],
"Report_Node_Event_Recorder_Ignore_Events_In_List": 0,
"Report_Node_Event_Recorder_Node_Properties": [
"Geographic"
],
"Report_Node_Event_Recorder_Stats_By_IPs": [
"Risk"
]
}
|
|||||||||||||||||
Report_Surveillance_Event_Recorder |
boolean |
0 |
Enables or disables the ReportSurveillanceEventRecorder.csv output report. When enabled (set to 1) reports will be generated for the broadcasted valid coordinator events, as specified in Report_Surveillance_Event_Recorder_Events. Note: This configuration parameter is currently in beta release and has not yet been fully tested. |
{
"Custom_Coordinator_Events": [
"Start_ACF",
"Start_SIA_2",
"Start_SIA_4",
"Ind_Start_SIA_2",
"Ind_Start_SIA_4",
"Respond_To_Surveillance"
],
"Report_Surveillance_Event_Recorder": 1,
"Report_Surveillance_Event_Recorder_Events": [
"Respond_To_Surveillance"
]
}
|
|||||||||||||||||
Report_Surveillance_Event_Recorder_Events |
array of strings |
NA |
The list of events to include or exclude in the ReportSurveillanceEventRecorder.csv output report, based on how Report_Surveillance_Event_Recorder_Ignore_Events_In_List is set. This list must not be empty and is dependent upon Report_Surveillance_Event_Recorder being enabled. Note: This configuration parameter is currently in beta release and has not yet been fully tested. |
{
"Custom_Coordinator_Events": [
"Start_ACF",
"Start_SIA_2",
"Start_SIA_4",
"Ind_Start_SIA_2",
"Ind_Start_SIA_4",
"Respond_To_Surveillance"
],
"Report_Surveillance_Event_Recorder": 1,
"Report_Surveillance_Event_Recorder_Events": [
"Respond_To_Surveillance"
]
}
|
|||||||||||||||||
Report_Surveillance_Event_Recorder_Ignore_Events_In_List |
boolean |
0 |
If set to false (0), only the events listed in the Report_Surveillance_Event_Recorder_Events array will be included in the ReportSurveillanceEventRecorder.csv output report. If set to true (1), only the events listed in the array will be excluded, and all other events will be included. If you want to return all events from the simulation, leave the events array empty. Note: This configuration parameter is currently in beta release and has not yet been fully tested.
|
{
"Custom_Coordinator_Events": [
"Start_ACF",
"Start_SIA_2",
"Start_SIA_4",
"Ind_Start_SIA_2",
"Ind_Start_SIA_4",
"Respond_To_Surveillance"
],
"Report_Surveillance_Event_Recorder": 1,
"Report_Surveillance_Event_Recorder_Events": [
"Respond_To_Surveillance"
],
"Report_Surveillance_Event_Recorder_Ignore_Events_In_List": 0
}
|
|||||||||||||||||
Report_Surveillance_Event_Recorder_Stats_By_IPs |
array of strings |
[] |
Specifies an array of (optional) individual property keys, as defined in IndividualProperties in the demographics file, to be added to the ReportSurveillanceEventRecorder.csv output report. For each key:value pair there will be two additional columns (Key:Value:NumIndividuals, Key:Value:NumInfected) added to the report. For example, with a Risk property key assigned the values of LOW and HIGH there would then be four additional columns (Risk:LOW:NumIndividuals, Risk:LOW:NumInfected, Risk:HIGH:NumIndividuals, Risk:HIGH:NumInfected). An empty array equals no additional columns added. |
{
"Custom_Coordinator_Events": [
"Start_ACF",
"Start_SIA_2",
"Start_SIA_4",
"Ind_Start_SIA_2",
"Ind_Start_SIA_4",
"Respond_To_Surveillance"
],
"Report_Surveillance_Event_Recorder": 1,
"Report_Surveillance_Event_Recorder_Events": [
"Respond_To_Surveillance"
],
"Report_Surveillance_Event_Recorder_Stats_By_IPs": []
}
|
New demographics parameters#
In all simulation types, you can now specify the quantity-per-timestep added to the total infectivity present in a node; it is equivalent to the expected number of additional infections in a node, per timestep. For example, if timestep is equal to a day, then setting InfectivityReservoirSize to a value of 0.1 would introduce an infection every 10 days from the exogenous reservoir.
For more information, see the table below.
Parameter |
Data type |
Minimum |
Maximum |
Default |
Description |
Example |
---|---|---|---|---|---|---|
InfectivityReservoirEndTime |
float |
InfectivityReservoirStartTime |
3.40E+38 |
3.40E+38 |
The ending of the exogeneous reservoir of infectivity. This parameter is conditional upon the configuration parameter, Enable_Infectivity_Reservoir, being enabled (set to 1). |
{
"NodeAttributes": {
"InfectivityReservoirSize": 0.1,
"InfectivityReservoirStartTime": 90,
"InfectivityReservoirEndTime": 365
}
}
|
InfectivityReservoirSize |
float |
0 |
3.40E+38 |
0 |
The quantity-per-timestep added to the total infectivity present in a node; it is equivalent to the expected number of additional infections in a node, per timestep. For example, if timestep is equal to a day, then setting InfectivityReservoirSize to a value of 0.1 would introduce an infection every 10 days from the exogenous reservoir. This parameter is conditional upon the configuration parameter, Enable_Infectivity_Reservoir, being enabled (set to 1). |
{
"NodeAttributes": {
"InfectivityReservoirSize": 0.1,
"InfectivityReservoirStartTime": 90,
"InfectivityReservoirEndTime": 365
}
}
|
InfectivityReservoirStartTime |
float |
0 |
3.40E+38 |
0 |
The beginning of the exogeneous reservoir of infectivity. This parameter is conditional upon the configuration parameter, Enable_Infectivity_Reservoir, being enabled (set to 1). |
{
"NodeAttributes": {
"InfectivityReservoirSize": 0.1,
"InfectivityReservoirStartTime": 90,
"InfectivityReservoirEndTime": 365
}
}
|
New campaign parameters#
The following campaign classes are new and can be used in the (specified) models:
ImmunityBloodTest (generic)#
The ImmunityBloodTest intervention class identifies whether an individual’s immunity meets a specified threshold (as set with the Positive_Threshold_AcquisitionImmunity campaign parameter) and then broadcasts an event based on the results; positive has immunity while negative does not.
Parameter |
Data type |
Minimum |
Maximum |
Default |
Description |
Example |
---|---|---|---|---|---|---|
Base_Sensitivity |
float |
0 |
1 |
1 |
The sensitivity of the diagnostic. This sets the proportion of the time that individuals with the condition being tested receive a positive diagnostic test. When set to zero, then individuals who have the condition always receive a false-negative diagnostic test. |
{
"Event_Coordinator_Config": {
"Demographic_Coverage": 1,
"Intervention_Config": {
"Base_Sensitivity": 1,
"Base_Specificity": 1,
"Cost_To_Consumer": 0,
"Days_To_Diagnosis": 0,
"Event_Or_Config": "Event",
"Positive_Diagnosis_Event": "TestedPositive_IamImmune",
"Negative_Diagnosis_Event": "TestedNegative_IamSusceptible",
"Treatment_Fraction": 1,
"Positive_Threshold_AcquisitionImmunity": 0.99,
"class": "ImmunityBloodTest"
}
}
}
|
Base_Specificity |
float |
0 |
1 |
1 |
The specificity of the diagnostic. This sets the proportion of the time that individuals without the condition being tested receive a negative diagnostic test. When set to 1, the diagnostic always accurately reflects the lack of having the condition. When set to zero, then individuals who do not have the condition always receive a false-positive diagnostic test. |
{
"Event_Coordinator_Config": {
"Demographic_Coverage": 1,
"Intervention_Config": {
"Base_Sensitivity": 1,
"Base_Specificity": 1,
"Cost_To_Consumer": 0,
"Days_To_Diagnosis": 0,
"Event_Or_Config": "Event",
"Negative_Diagnosis_Event": "TestedNegative_IamSusceptible",
"Positive_Diagnosis_Event": "TestedPositive_IamImmune",
"Positive_Threshold_AcquisitionImmunity": 0.99,
"Treatment_Fraction": 1,
"class": "ImmunityBloodTest"
}
}
}
|
Cost_To_Consumer |
float |
0 |
3.40282e+38 |
1 |
The unit ‘cost’ assigned to the diagnostic. Setting Cost_To_Consumer to zero for all other interventions, and to a non-zero amount for one intervention, provides a convenient way to track the number of times the intervention has been applied in a simulation. |
{
"Event_Coordinator_Config": {
"Demographic_Coverage": 1,
"Intervention_Config": {
"Base_Sensitivity": 1,
"Base_Specificity": 1,
"Cost_To_Consumer": 0,
"Days_To_Diagnosis": 0,
"Event_Or_Config": "Event",
"Negative_Diagnosis_Event": "TestedNegative_IamSusceptible",
"Positive_Diagnosis_Event": "TestedPositive_IamImmune",
"Positive_Threshold_AcquisitionImmunity": 0.99,
"Treatment_Fraction": 1,
"class": "ImmunityBloodTest"
}
}
}
|
Days_To_Diagnosis |
float |
0 |
3.40282e+38 |
0 |
The number of days from test until diagnosis. |
{
"Event_Coordinator_Config": {
"Demographic_Coverage": 1,
"Intervention_Config": {
"Base_Sensitivity": 1,
"Base_Specificity": 1,
"Cost_To_Consumer": 0,
"Days_To_Diagnosis": 0,
"Event_Or_Config": "Event",
"Negative_Diagnosis_Event": "TestedNegative_IamSusceptible",
"Positive_Diagnosis_Event": "TestedPositive_IamImmune",
"Positive_Threshold_AcquisitionImmunity": 0.99,
"Treatment_Fraction": 1,
"class": "ImmunityBloodTest"
}
}
}
|
Disqualifying_Properties |
array of strings |
NA |
NA |
[] |
A list of IndividualProperty key:value pairs that cause an intervention to be aborted. Generally used to control the flow of health care access. For example, to prevent the same individual from accessing health care via two different routes at the same time. |
{
"Event_Coordinator_Config": {
"Demographic_Coverage": 1,
"Intervention_Config": {
"Base_Sensitivity": 1,
"Base_Specificity": 1,
"Cost_To_Consumer": 0,
"Days_To_Diagnosis": 0,
"Disqualifying_Properties": [
"InterventionStatus:LostForever"
],
"Event_Or_Config": "Event",
"Negative_Diagnosis_Event": "TestedNegative_IamSusceptible",
"Positive_Diagnosis_Event": "TestedPositive_IamImmune",
"Positive_Threshold_AcquisitionImmunity": 0.99,
"Treatment_Fraction": 1,
"class": "ImmunityBloodTest"
}
}
}
|
Dont_Allow_Duplicates |
boolean |
0 |
1 |
0 |
If an individual’s container has an intervention, set to true (1) to prevent them from receiving another copy of the intervention. Supported by all intervention classes. |
{
"Event_Coordinator_Config": {
"Demographic_Coverage": 1,
"Intervention_Config": {
"Base_Sensitivity": 1,
"Base_Specificity": 1,
"Cost_To_Consumer": 0,
"Days_To_Diagnosis": 0,
"Dont_Allow_Duplicates": 0,
"Event_Or_Config": "Event",
"Negative_Diagnosis_Event": "TestedNegative_IamSusceptible",
"Positive_Diagnosis_Event": "TestedPositive_IamImmune",
"Positive_Threshold_AcquisitionImmunity": 0.99,
"Treatment_Fraction": 1,
"class": "ImmunityBloodTest"
}
}
}
|
Enable_IsSymptomatic |
boolean |
0 |
1 |
0 |
If true (1), requires an infection to be symptomatic to return a positive test. |
{
"Enable_IsSymptomatic": 1,
"Base_Specificity": 0.85,
"Base_Sensitivity": 0.92
}
|
Intervention_Name |
string |
NA |
NA |
NA |
The optional name used to refer to this intervention as a means to differentiate it from others that use the same class. |
{
"Event_Coordinator_Config": {
"Demographic_Coverage": 1,
"Intervention_Config": {
"Base_Sensitivity": 1,
"Base_Specificity": 1,
"Cost_To_Consumer": 0,
"Days_To_Diagnosis": 0,
"Event_Or_Config": "Event",
"Intervention_Name": "Immunity Blood Test - Series 1",
"Negative_Diagnosis_Event": "TestedNegative_IamSusceptible",
"Positive_Diagnosis_Event": "TestedPositive_IamImmune",
"Positive_Threshold_AcquisitionImmunity": 0.99,
"Treatment_Fraction": 1,
"class": "ImmunityBloodTest"
}
}
}
|
Negative_Diagnosis_Event |
enum |
NA |
NA |
“” |
If an individual tests negative (does not have immunity), then an individual type event is broadcast. This may trigger another intervention when the event occurs. Only used when Event_Or_Config is set to Event. |
{
"Event_Coordinator_Config": {
"Demographic_Coverage": 1,
"Intervention_Config": {
"Base_Sensitivity": 1,
"Base_Specificity": 1,
"Cost_To_Consumer": 0,
"Days_To_Diagnosis": 0,
"Event_Or_Config": "Event",
"Negative_Diagnosis_Event": "TestedNegative_IamSusceptible",
"Positive_Diagnosis_Event": "TestedPositive_IamImmune",
"Positive_Threshold_AcquisitionImmunity": 0.99,
"Treatment_Fraction": 1,
"class": "ImmunityBloodTest"
}
}
}
|
New_Property_Value |
string |
NA |
NA |
NA |
An optional IndividualProperty key:value pair that will be assigned when the intervention is distributed. Generally used to indicate the broad category of health care cascade to which an intervention belongs to prevent individuals from accessing care through multiple pathways. |
{
"New_Property_Value": "InterventionStatus:None"
}
|
Positive_Diagnosis_Config |
JSON object |
NA |
NA |
NA |
The intervention distributed to individuals if they test positive. Only used when Event_Or_Config is set to Config. |
{
"Event_Coordinator_Config": {
"Demographic_Coverage": 1,
"Intervention_Config": {
"Base_Sensitivity": 1,
"Base_Specificity": 1,
"Cost_To_Consumer": 0,
"Days_To_Diagnosis": 0,
"Event_Or_Config": "Event",
"Negative_Diagnosis_Event": "TestedNegative_IamSusceptible",
"Positive_Diagnosis_Event": "TestedPositive_IamImmune",
"Positive_Threshold_AcquisitionImmunity": 0.99,
"Treatment_Fraction": 1,
"class": "ImmunityBloodTest"
}
}
}
|
Positive_Diagnosis_Event |
enum |
NA |
NA |
“” |
If the test is positive (has immunity), then an individual type event is broadcast. This may trigger another intervention when the event occurs. Only used if Event_Or_Config is set to Event. |
{
"Event_Coordinator_Config": {
"Demographic_Coverage": 1,
"Intervention_Config": {
"Base_Sensitivity": 1,
"Base_Specificity": 1,
"Cost_To_Consumer": 0,
"Days_To_Diagnosis": 0,
"Event_Or_Config": "Event",
"Negative_Diagnosis_Event": "TestedNegative_IamSusceptible",
"Positive_Diagnosis_Event": "TestedPositive_IamImmune",
"Positive_Threshold_AcquisitionImmunity": 0.99,
"Treatment_Fraction": 1,
"class": "ImmunityBloodTest"
}
}
}
|
Positive_Threshold_AcquisitionImmunity |
float |
0 |
1 |
1 |
Specifies the threshold for acquired immunity, where 1 equals 100% immunity and 0 equals 100% susceptible. |
{
"Event_Coordinator_Config": {
"Demographic_Coverage": 1,
"Intervention_Config": {
"Base_Sensitivity": 1,
"Base_Specificity": 1,
"Cost_To_Consumer": 0,
"Days_To_Diagnosis": 0,
"Event_Or_Config": "Event",
"Negative_Diagnosis_Event": "TestedNegative_IamSusceptible",
"Positive_Diagnosis_Event": "TestedPositive_IamImmune",
"Positive_Threshold_AcquisitionImmunity": 0.99,
"Treatment_Fraction": 1,
"class": "ImmunityBloodTest"
}
}
}
|
Treatment_Fraction |
float |
0 |
1 |
1 |
The fraction of positive diagnoses that are treated. |
{
"Event_Coordinator_Config": {
"Demographic_Coverage": 1,
"Intervention_Config": {
"Base_Sensitivity": 1,
"Base_Specificity": 1,
"Cost_To_Consumer": 0,
"Days_To_Diagnosis": 0,
"Event_Or_Config": "Event",
"Negative_Diagnosis_Event": "TestedNegative_IamSusceptible",
"Positive_Diagnosis_Event": "TestedPositive_IamImmune",
"Positive_Threshold_AcquisitionImmunity": 0.99,
"Treatment_Fraction": 1,
"class": "ImmunityBloodTest"
}
}
}
|
New campaign parameters (Beta)#
Note
These campaign classes and associated parameters are currently in beta release and have not yet been fully tested.
BroadcastCoordinatorEvent (generic)#
The BroadcastCoordinatorEvent coordinator class broadcasts the event you specify. This can be used with the campaign class, SurveillanceEventCoordinator, that can monitor and listen for events received from BroadcastCoordinatorEvent and then perform an action based on the broadcasted event. You can also use this for the reporting of the broadcasted events by setting the configuraton parameters, Report_Node_Event_Recorder and Report_Surveillance_Event_Recorder, which listen to events to be recorded.
Parameter |
Data type |
Minimum |
Maximum |
Default |
Description |
Example |
---|---|---|---|---|---|---|
Broadcast_Event |
string |
NA |
NA |
“” |
The name of the event to be broadcast. This event must be set in the Custom_Coordinator_Events configuration parameter. This cannot be assigned an empty string for the event. |
{
"class": "CampaignEvent",
"Start_Day": 5,
"Nodeset_Config": {
"class": "NodeSetAll"
},
"Event_Coordinator_Config": {
"class": "BroadcastCoordinatorEvent",
"Coordinator_Name": "Coordnator_1",
"Cost_To_Consumer": 10,
"Broadcast_Event": "Coordinator_Event_1"
}
}
|
Coordinator_Name |
string |
NA |
NA |
NA |
The unique identifying coordinator name, which is useful with the output report, ReportCoordinatorEventRecorder.csv. |
{
"class": "CampaignEvent",
"Start_Day": 25,
"Nodeset_Config": {
"class": "NodeSetAll"
},
"Event_Coordinator_Config": {
"class": "BroadcastCoordinatorEvent",
"Coordinator_Name": "Coordinator_3",
"Cost_To_Consumer": 30,
"Broadcast_Event": "Coordinator_Event_3"
}
}
|
Cost_To_Consumer |
float |
0 |
3.40282e+38 |
0 |
The unit cost of broadcasting the event. |
{
"class": "CampaignEvent",
"Start_Day": 15,
"Nodeset_Config": {
"class": "NodeSetAll"
},
"Event_Coordinator_Config": {
"class": "BroadcastCoordinatorEvent",
"Coordinator_Name": "Coordnator_2",
"Cost_To_Consumer": 20,
"Broadcast_Event": "Coordinator_Event_2"
}
}
|
BroadcastNodeEvent (generic)#
The BroadcastNodeEvent coordinator class broadcasts node events. This can be used with the campaign class, SurveillanceEventCoordinator, that can monitor and listen for events received from BroadcastNodeEvent and then perform an action based on the broadcasted event. You can also use this for the reporting of the broadcasted events by setting the configuraton parameters, Report_Node_Event_Recorder and Report_Surveillance_Event_Recorder, which listen to events to be recorded.
Parameter |
Data type |
Minimum |
Maximum |
Default |
Description |
Example |
---|---|---|---|---|---|---|
Broadcast_Event |
string |
NA |
NA |
“” |
The name of the node event to broadcast. This event must be set in the Custom_Node_Events configuration parameter. |
{
"class": "CampaignEvent",
"Start_Day": 5,
"Nodeset_Config": {
"class": "NodeSetNodeList",
"Node_List": [
1
]
},
"Event_Coordinator_Config": {
"class": "StandardInterventionDistributionEventCoordinator",
"Intervention_Config": {
"class": "BroadcastNodeEvent",
"Cost_To_Consumer": 10,
"Broadcast_Event": "Node_Event_1"
}
}
}
|
Cost_To_Consumer |
float |
0 |
999999 |
0 |
The unit cost of the intervention campaign that will be assigned to the specified nodes, as configured under Nodeset_Config. |
{
"class": "CampaignEvent",
"Start_Day": 5,
"Nodeset_Config": {
"class": "NodeSetNodeList",
"Node_List": [
1
]
},
"Event_Coordinator_Config": {
"class": "StandardInterventionDistributionEventCoordinator",
"Intervention_Config": {
"class": "BroadcastNodeEvent",
"Cost_To_Consumer": 10,
"Broadcast_Event": "Node_Event_1"
}
}
}
|
DelayEventCoordinator (generic)#
The DelayEventCoordinator coordinator class insert delays into coordinator event chains. This campaign event is typically used with BroadcastCoordinatorEvent to broadcast events after the delays.
Parameter |
Data type |
Minimum |
Maximum |
Default |
Description |
Example |
---|---|---|---|---|---|---|
Coordinator_Name |
string |
NA |
NA |
DelayEventCoordinator |
The unique identifying coordinator name, which is useful with the output report, ReportCoordinatorEventRecorder.csv. |
{
"Event_Coordinator_Config": {
"Coordinator_Name": "DelayEventCoordinator_10",
"Delay_Complete_Event": "Completion_Delayed_Coordinator_Event_1",
"Delay_Period_Distribution": "FIXED_DURATION",
"Delay_Period_Fixed": 25,
"Duration": 100,
"Start_Trigger_Condition_List": [
"Coordinator_Event_1"
],
"Stop_Trigger_Condition_List": [],
"class": "DelayEventCoordinator"
},
"Event_Name": "Delay",
"Nodeset_Config": {
"class": "NodeSetAll"
},
"Start_Day": 1,
"Target_Demographic": "Everyone",
"class": "CampaignEvent",
"comment": "Delay"
}
|
Delay_Complete_Event |
string |
NA |
NA |
NA |
The delay completion event to be included in the ReportCoordinatorEventRecorder.csv output report, upon completion of the delay period. |
{
"Event_Coordinator_Config": {
"Coordinator_Name": "DelayEventCoordinator_10",
"Delay_Complete_Event": "Completion_Delayed_Coordinator_Event_1",
"Delay_Distribution": "GAUSSIAN_DURATION",
"Delay_Period_Mean": 25,
"Delay_Period_Std_Dev": 5,
"Duration": 100,
"Start_Trigger_Condition_List": [
"Coordinator_Event_1"
],
"Stop_Trigger_Condition_List": [],
"class": "DelayEventCoordinator"
},
"Event_Name": "Delay",
"Nodeset_Config": {
"class": "NodeSetAll"
},
"Start_Day": 1,
"Target_Demographic": "Everyone",
"class": "CampaignEvent",
"comment": "Delay"
}
|
Delay_Period_Constant |
float |
0 |
3.40282E+38 |
-1 |
The delay period to use for all interventions, in days, when Delay_Period_Distribution is set to CONSTANT_DISTRIBUTION. |
{
"Delay_Period_Distribution": "CONSTANT_DISTRIBUTION",
"Delay_Period_Constant": 8
}
|
Delay_Period_Distribution |
enum |
NA |
NA |
NOT_INITIALIZED |
The distribution type to use for assigning the delay period for distributing interventions. Each assigned value is a random draw from the distribution. Possible values are:
|
{
"Delay_Period_Distribution": "GAUSSIAN_DISTRIBUTION",
"Delay_Period_Gaussian_Mean": 8,
"Delay_Period_Gaussian_Std_Dev": 1.5
}
|
Delay_Period_Exponential |
float |
0 |
3.40282E+38 |
-1 |
The mean of the delay period, in days, when Delay_Period_Distribution is set to EXPONENTIAL_DISTRIBUTION. |
{
"Delay_Period_Distribution": "EXPONENTIAL_DISTRIBUTION",
"Delay_Period_Exponential": 4.25
}
|
Delay_Period_Gaussian_Mean |
float |
0 |
3.40282E+38 |
-1 |
The mean of the delay period, in days, when Delay_Period_Distribution is set to GAUSSIAN_DISTRIBUTION. |
{
"Delay_Period_Distribution": "GAUSSIAN_DISTRIBUTION",
"Delay_Period_Gaussian_Mean": 8,
"Delay_Period_Gaussian_Std_Dev": 1.5
}
|
Delay_Period_Gaussian_Std_Dev |
float |
1.17549E-38 |
3.40282E+38 |
-1 |
The standard deviation of the delay period, in days, when Delay_Period_Distribution is set to GAUSSIAN_DISTRIBUTION. |
{
"Delay_Period_Distribution": "GAUSSIAN_DISTRIBUTION",
"Delay_Period_Gaussian_Mean": 8,
"Delay_Period_Gaussian_Std_Dev": 1.5
}
|
Delay_Period_Kappa |
float |
1.17549E-38 |
3.40282E+38 |
-1 |
The shape value for the delay period, in days, when Delay_Period_Distribution is set to WEIBULL_DISTRIBUTION. |
{
"Delay_Period_Distribution": "WEIBULL_DISTRIBUTION",
"Delay_Period_Kappa": 0.9,
"Delay_Period_Lambda": 1.5
}
|
Delay_Period_Lambda |
float |
1.17549E-38 |
3.40282E+38 |
-1 |
The scale value for the delay period, in days, when Delay_Period_Distribution is set to WEIBULL_DISTRIBUTION. |
{
"Delay_Period_Distribution": "WEIBULL_DISTRIBUTION",
"Delay_Period_Kappa": 0.9,
"Delay_Period_Lambda": 1.5
}
|
Delay_Period_Log_Normal_Mu |
float |
-3.40282e+38 |
1.70141e+38 |
3.40282e+38 |
The mean of the natural log of the delay period, in days, when Delay_Period_Distribution is set to LOG_NORMAL_DISTRIBUTION. |
{
"Delay_Period_Distribution": "LOG_NORMAL_DISTRIBUTION",
"Delay_Period_Log_Normal_Mu": 9,
"Delay_Period_Log_Normal_Sigma": 2
}
|
Delay_Period_Log_Normal_Sigma |
float |
-3.40282e+38 |
1.70141e+38 |
3.40282E+38 |
The standard deviation of the natural log of the delay period, in days, when Delay_Period_Distribution is set to LOG_NORMAL_DISTRIBUTION. |
{
"Delay_Period_Distribution": "LOG_NORMAL_DISTRIBUTION",
"Delay_Period_Log_Normal_Mu": 9,
"Delay_Period_Log_Normal_Sigma": 2
}
|
Delay_Period_Max |
float |
0 |
3.40282E+38 |
-1 |
The maximum delay period, in days, when Delay_Period_Distribution is set to UNIFORM_DISTRIBUTION. |
{
"Delay_Period_Distribution": "UNIFORM_DISTRIBUTION",
"Delay_Period_Min": 2,
"Delay_Period_Max": 7
}
|
Delay_Period_Mean_1 |
float |
1.17549E-38 |
3.40282E+38 |
-1 |
The mean of the first exponential distribution, in days, when Delay_Period_Distribution is set to DUAL_EXPONENTIAL_DISTRIBUTION. |
{
"Delay_Period_Distribution": "DUAL_EXPONENTIAL_DISTRIBUTION",
"Delay_Period_Mean_1": 4,
"Delay_Period_Mean_2": 12,
"Delay_Period_Proportion_1": 0.2
}
|
Delay_Period_Mean_2 |
float |
1.17549E-38 |
3.40282E+38 |
-1 |
The mean of the second exponential distribution, in days, when Delay_Period_Distribution is set to DUAL_EXPONENTIAL_DISTRIBUTION. |
{
"Delay_Period_Distribution": "DUAL_EXPONENTIAL_DISTRIBUTION",
"Delay_Period_Mean_1": 4,
"Delay_Period_Mean_2": 12,
"Delay_Period_Proportion_1": 0.2
}
|
Delay_Period_Min |
float |
0 |
3.40282E+38 |
-1 |
The minimum delay period, in days, when Delay_Period_Distribution is set to UNIFORM_DISTRIBUTION. |
{
"Delay_Period_Distribution": "UNIFORM_DISTRIBUTION",
"Delay_Period_Min": 2,
"Delay_Period_Max": 7
}
|
Delay_Period_Peak_2_Value |
float |
0 |
3.40282E+38 |
-1 |
The delay period value, in days, to assign to the remaining interventions when Delay_Period_Distribution is set to DUAL_CONSTANT_DISTRIBUTION. |
{
"Delay_Period_Distribution": "DUAL_CONSTANT_DISTRIBUTION",
"Delay_Period_Proportion_0": 0.25,
"Delay_Period_Peak_2_Value": 5
}
|
Delay_Period_Poisson_Mean |
float |
0 |
3.40282E+38 |
-1 |
The mean of the delay period, in days, when Delay_Period_Distribution is set to POISSON_DISTRIBUTION. |
{
"Delay_Period_Distribution": "POISSON_DISTRIBUTION",
"Delay_Period_Poisson_Mean": 5
}
|
Delay_Period_Proportion_0 |
float |
0 |
1 |
-1 |
The proportion of interventions to assign a value of zero delay when Delay_Period_Distribution is set to DUAL_CONSTANT_DISTRIBUTION. |
{
"Delay_Period_Distribution": "DUAL_CONSTANT_DISTRIBUTION",
"Delay_Period_Proportion_0": 0.25,
"Delay_Period_Peak_2_Value": 5
}
|
Delay_Period_Proportion_1 |
float |
0 |
1 |
-1 |
The proportion of interventions in the first exponential distribution when Delay_Period_Distribution is set to DUAL_EXPONENTIAL_DISTRIBUTION. |
{
"Delay_Period_Distribution": "DUAL_EXPONENTIAL_DISTRIBUTION",
"Delay_Period_Mean_1": 4,
"Delay_Period_Mean_2": 12,
"Delay_Period_Proportion_1": 0.2
}
|
Duration |
float |
-1 |
3.40282e+38 |
-1 |
The number of days from when the delay event coordinator was created by the campaign event. Once the number of days has passed, the delay event coordinator will unregister for events and expire. The default value of ‘-1’ = never expire. |
{
"Event_Coordinator_Config": {
"Coordinator_Name": "DelayEventCoordinator_10",
"Delay_Complete_Event": "Completion_Delayed_Coordinator_Event_1",
"Delay_Period_Distribution": "FIXED_DURATION",
"Delay_Period_Fixed": 25,
"Duration": 100,
"Start_Trigger_Condition_List": [
"Coordinator_Event_1"
],
"Stop_Trigger_Condition_List": [],
"class": "DelayEventCoordinator"
},
"Event_Name": "Delay",
"Nodeset_Config": {
"class": "NodeSetAll"
},
"Start_Day": 1,
"Target_Demographic": "Everyone",
"class": "CampaignEvent"
}
|
Start_Trigger_Condition_List |
array of strings |
NA |
NA |
NA |
The start trigger event condition list contains events defined in the Custom_Coordinator_Events config parameter that will trigger to start a new delay. If the delay event coordinator has already been triggered and is currently waiting for the duration of a delay, it will then ignore a new delay event. The list cannot be empty. |
{
"Event_Coordinator_Config": {
"Coordinator_Name": "DelayEventCoordinator_10",
"Delay_Complete_Event": "Completion_Delayed_Coordinator_Event_1",
"Delay_Period_Distribution": "FIXED_DURATION",
"Delay_Period_Fixed": 25,
"Duration": 100,
"Start_Trigger_Condition_List": [
"Coordinator_Event_1"
],
"Stop_Trigger_Condition_List": [],
"class": "DelayEventCoordinator"
},
"Event_Name": "Delay",
"Nodeset_Config": {
"class": "NodeSetAll"
},
"Start_Day": 1,
"Target_Demographic": "Everyone",
"class": "CampaignEvent",
"comment": "Delay"
}
|
Stop_Trigger_Condition_List |
array of strings |
NA |
NA |
NA |
The stop trigger event condition list contains events defined in the Custom_Coordinator_Events config parameter that will trigger to stop a delay period, but does not stop the delay event coordinator. The event is not broadcast. |
{
"Event_Coordinator_Config": {
"Coordinator_Name": "DelayEventCoordinator_10",
"Delay_Complete_Event": "Completion_Delayed_Coordinator_Event_1",
"Delay_Period_Distribution": "FIXED_DURATION",
"Delay_Period_Fixed": 25,
"Duration": 100,
"Start_Trigger_Condition_List": [
"Coordinator_Event_1"
],
"Stop_Trigger_Condition_List": [],
"class": "DelayEventCoordinator"
},
"Event_Name": "Delay",
"Nodeset_Config": {
"class": "NodeSetAll"
},
"Start_Day": 1,
"Target_Demographic": "Everyone",
"class": "CampaignEvent",
"comment": "Delay"
}
|
SurveillanceEventCoordinator (generic)#
The SurveillanceEventCoordinator coordinator class listens for and detects events happening and then responds with broadcasted events when a threshold has been met. This campaign event is typically used with other classes, such as BroadcastCoordinatorEvent, TriggeredEventCoordinator, and DelayEventCoordinator.
Parameter |
Data type |
Minimum |
Maximum |
Default |
Description |
Example |
---|---|---|---|---|---|---|
Action_List |
array of JSON objects |
NA |
NA |
NA |
A list of possible actions to take if a particular threshold is met. An action is taken when the specified threshold value is less than the number of incidence counted. If there are multiple actions listed then the action with the highest threshold value, that is also less than the number of incidence counted, is selected. The list cannot be empty. |
{
"Event_Coordinator_Config": {
"Coordinator_Name": "ACF_Counter",
"Duration": 30,
"Incidence_Counter": {
"Counter_Event_Type": "NODE",
"Counter_Period": 14,
"Counter_Type": "PERIODIC",
"Demographic_Coverage": 1,
"Target_Demographic": "Everyone",
"Trigger_Condition_List": [
"Node_Event_1",
"Node_Event_2"
]
},
"Responder": {
"Action_List": [
{
"Event_To_Broadcast": "Ind_Start_SIA_2",
"Event_Type": "COORDINATOR",
"Threshold": 5
},
{
"Event_To_Broadcast": "Ind_Start_SIA_4",
"Event_Type": "COORDINATOR",
"Threshold": 2
}
],
"Responded_Event": "Respond_To_Surveillance",
"Threshold_Type": "COUNT"
},
"Start_Trigger_Condition_List": [
"Start_ACF"
],
"Stop_Trigger_Condition_List": [
"Start_SIA_2",
"Start_SIA_4"
],
"class": "SurveillanceEventCoordinator"
},
"Nodeset_Config": {
"class": "NodeSetAll"
},
"Start_Day": 1,
"class": "CampaignEvent"
}
|
Coordinator_Name |
string |
NA |
NA |
TriggeredEventCoordinator |
The unique identifying coordinator name, which is useful with the output report, ReportSurveillanceEventRecorder.csv. |
{
"class": "CampaignEvent",
"Start_Day": 1,
"Nodeset_Config": {
"class": "NodeSetAll"
},
"Event_Coordinator_Config": {
"class": "SurveillanceEventCoordinator",
"Coordinator_Name": "ACF_Counter",
"Start_Trigger_Condition_List": [
"Start_ACF"
],
"Stop_Trigger_Condition_List": [
"Start_SIA_2",
"Start_SIA_4"
],
"Duration": 30,
"Incidence_Counter": {
"Counter_Type": "PERIODIC",
"Counter_Period": 14,
"Counter_Event_Type": "NODE",
"Trigger_Condition_List": [
"Node_Event_1",
"Node_Event_2"
],
"Target_Demographic": "Everyone",
"Demographic_Coverage": 1
},
"Responder": {
"Responded_Event": "Respond_To_Surveillance",
"Threshold_Type": "COUNT",
"Action_List": [
{
"Threshold": 5,
"Event_Type": "COORDINATOR",
"Event_To_Broadcast": "Ind_Start_SIA_2"
},
{
"Threshold": 2,
"Event_Type": "COORDINATOR",
"Event_To_Broadcast": "Ind_Start_SIA_4"
}
]
}
}
}
|
Counter_Event_Type |
enum |
NA |
NA |
INDIVIDUAL |
Type of events that can be included in Trigger_Condition_List. Possible values are:
|
{
"Event_Coordinator_Config": {
"Coordinator_Name": "ACF_Counter",
"Duration": 30,
"Incidence_Counter": {
"Counter_Event_Type": "NODE",
"Counter_Period": 14,
"Counter_Type": "PERIODIC",
"Demographic_Coverage": 1,
"Target_Demographic": "Everyone",
"Trigger_Condition_List": [
"Node_Event_1",
"Node_Event_2"
]
},
"Responder": {
"Action_List": [
{
"Event_To_Broadcast": "Ind_Start_SIA_2",
"Event_Type": "COORDINATOR",
"Threshold": 5
},
{
"Event_To_Broadcast": "Ind_Start_SIA_4",
"Event_Type": "COORDINATOR",
"Threshold": 2
}
],
"Responded_Event": "Respond_To_Surveillance",
"Threshold_Type": "COUNT"
},
"Start_Trigger_Condition_List": [
"Start_ACF"
],
"Stop_Trigger_Condition_List": [
"Start_SIA_2",
"Start_SIA_4"
],
"class": "SurveillanceEventCoordinator"
},
"Nodeset_Config": {
"class": "NodeSetAll"
},
"Start_Day": 1,
"class": "CampaignEvent"
}
|
Counter_Period |
float |
1 |
10000 |
1 |
When Counter_Type is set to PERIODIC, this is the counter period (in days). |
{
"Event_Coordinator_Config": {
"Coordinator_Name": "ACF_Counter",
"Duration": 30,
"Incidence_Counter": {
"Counter_Event_Type": "NODE",
"Counter_Period": 14,
"Counter_Type": "PERIODIC",
"Demographic_Coverage": 1,
"Target_Demographic": "Everyone",
"Trigger_Condition_List": [
"Node_Event_1",
"Node_Event_2"
]
},
"Responder": {
"Action_List": [
{
"Event_To_Broadcast": "Ind_Start_SIA_2",
"Event_Type": "COORDINATOR",
"Threshold": 5
},
{
"Event_To_Broadcast": "Ind_Start_SIA_4",
"Event_Type": "COORDINATOR",
"Threshold": 2
}
],
"Responded_Event": "Respond_To_Surveillance",
"Threshold_Type": "COUNT"
},
"Start_Trigger_Condition_List": [
"Start_ACF"
],
"Stop_Trigger_Condition_List": [
"Start_SIA_2",
"Start_SIA_4"
],
"class": "SurveillanceEventCoordinator"
},
"Nodeset_Config": {
"class": "NodeSetAll"
},
"Start_Day": 1,
"class": "CampaignEvent"
}
|
Counter_Type |
enum |
NA |
NA |
PERIODIC |
Counter type used for surveillance of events. The counter is triggered by events in Start_Trigger_Condition_List and the counter stops when it receives an event in Stop_Trigger_Condition_List or the listening duration expires. Possible values are:
|
{
"Event_Coordinator_Config": {
"Coordinator_Name": "ACF_Counter",
"Duration": 30,
"Incidence_Counter": {
"Counter_Event_Type": "NODE",
"Counter_Period": 14,
"Counter_Type": "PERIODIC",
"Demographic_Coverage": 1,
"Target_Demographic": "Everyone",
"Trigger_Condition_List": [
"Node_Event_1",
"Node_Event_2"
]
},
"Responder": {
"Action_List": [
{
"Event_To_Broadcast": "Ind_Start_SIA_2",
"Event_Type": "COORDINATOR",
"Threshold": 5
},
{
"Event_To_Broadcast": "Ind_Start_SIA_4",
"Event_Type": "COORDINATOR",
"Threshold": 2
}
],
"Responded_Event": "Respond_To_Surveillance",
"Threshold_Type": "COUNT"
},
"Start_Trigger_Condition_List": [
"Start_ACF"
],
"Stop_Trigger_Condition_List": [
"Start_SIA_2",
"Start_SIA_4"
],
"class": "SurveillanceEventCoordinator"
},
"Nodeset_Config": {
"class": "NodeSetAll"
},
"Start_Day": 1,
"class": "CampaignEvent"
}
|
Demographic_Coverage |
float |
0 |
1 |
1 |
The fraction of individuals in the target demographic that are counted. |
{
"Event_Coordinator_Config": {
"Coordinator_Name": "ACF_Counter",
"Duration": 30,
"Incidence_Counter": {
"Counter_Event_Type": "NODE",
"Counter_Period": 14,
"Counter_Type": "PERIODIC",
"Demographic_Coverage": 1,
"Target_Demographic": "Everyone",
"Trigger_Condition_List": [
"Node_Event_1",
"Node_Event_2"
]
},
"Responder": {
"Action_List": [
{
"Event_To_Broadcast": "Ind_Start_SIA_2",
"Event_Type": "COORDINATOR",
"Threshold": 5
},
{
"Event_To_Broadcast": "Ind_Start_SIA_4",
"Event_Type": "COORDINATOR",
"Threshold": 2
}
],
"Responded_Event": "Respond_To_Surveillance",
"Threshold_Type": "COUNT"
},
"Start_Trigger_Condition_List": [
"Start_ACF"
],
"Stop_Trigger_Condition_List": [
"Start_SIA_2",
"Start_SIA_4"
],
"class": "SurveillanceEventCoordinator"
},
"Nodeset_Config": {
"class": "NodeSetAll"
},
"Start_Day": 1,
"class": "CampaignEvent"
}
|
Duration |
float |
-1 |
3.40282e+38 |
-1 |
The number of days from when the surveillance event coordinator was created by the campaign event. Once the number of days has passed, the delay event coordinator will unregister for events and expire. The default value of ‘-1’ = never expire. |
{
"Event_Coordinator_Config": {
"Coordinator_Name": "ACF_Counter",
"Duration": 30,
"Incidence_Counter": {
"Counter_Event_Type": "NODE",
"Counter_Period": 14,
"Counter_Type": "PERIODIC",
"Demographic_Coverage": 1,
"Target_Demographic": "Everyone",
"Trigger_Condition_List": [
"Node_Event_1",
"Node_Event_2"
]
},
"Responder": {
"Action_List": [
{
"Event_To_Broadcast": "Ind_Start_SIA_2",
"Event_Type": "COORDINATOR",
"Threshold": 5
},
{
"Event_To_Broadcast": "Ind_Start_SIA_4",
"Event_Type": "COORDINATOR",
"Threshold": 2
}
],
"Responded_Event": "Respond_To_Surveillance",
"Threshold_Type": "COUNT"
},
"Start_Trigger_Condition_List": [
"Start_ACF"
],
"Stop_Trigger_Condition_List": [
"Start_SIA_2",
"Start_SIA_4"
],
"class": "SurveillanceEventCoordinator"
},
"Nodeset_Config": {
"class": "NodeSetAll"
},
"Start_Day": 1,
"class": "CampaignEvent"
}
|
Event_Type |
enum |
NA |
NA |
INDIVIDUAL |
The type of event to be broadcast. Possible values are:
|
{
"Event_Coordinator_Config": {
"Coordinator_Name": "ACF_Counter",
"Duration": 30,
"Incidence_Counter": {
"Counter_Event_Type": "NODE",
"Counter_Period": 14,
"Counter_Type": "PERIODIC",
"Demographic_Coverage": 1,
"Target_Demographic": "Everyone",
"Trigger_Condition_List": [
"Node_Event_1",
"Node_Event_2"
]
},
"Responder": {
"Action_List": [
{
"Event_To_Broadcast": "Ind_Start_SIA_2",
"Event_Type": "COORDINATOR",
"Threshold": 5
},
{
"Event_To_Broadcast": "Ind_Start_SIA_4",
"Event_Type": "COORDINATOR",
"Threshold": 2
}
],
"Responded_Event": "Respond_To_Surveillance",
"Threshold_Type": "COUNT"
},
"Start_Trigger_Condition_List": [
"Start_ACF"
],
"Stop_Trigger_Condition_List": [
"Start_SIA_2",
"Start_SIA_4"
],
"class": "SurveillanceEventCoordinator"
},
"Nodeset_Config": {
"class": "NodeSetAll"
},
"Start_Day": 1,
"class": "CampaignEvent"
}
|
Incidence_Counter |
array of JSON objects |
NA |
NA |
NA |
List of JSON objects for specifying the conditions and parameters that must be met for an incidence to be counted. Some of the values are specified in the following parameters: Counter_Type, Counter_Period, Counter_Event_Type, Trigger_Condition_List, Node_Property_Restrictions, Property_Restrictions_Within_Node. |
{
"Event_Coordinator_Config": {
"Coordinator_Name": "ACF_Counter",
"Duration": 30,
"Incidence_Counter": {
"Counter_Event_Type": "NODE",
"Counter_Period": 14,
"Counter_Type": "PERIODIC",
"Demographic_Coverage": 1,
"Target_Demographic": "Everyone",
"Trigger_Condition_List": [
"Node_Event_1",
"Node_Event_2"
]
},
"Responder": {
"Action_List": [
{
"Event_To_Broadcast": "Ind_Start_SIA_2",
"Event_Type": "COORDINATOR",
"Threshold": 5
},
{
"Event_To_Broadcast": "Ind_Start_SIA_4",
"Event_Type": "COORDINATOR",
"Threshold": 2
}
],
"Responded_Event": "Respond_To_Surveillance",
"Threshold_Type": "COUNT"
},
"Start_Trigger_Condition_List": [
"Start_ACF"
],
"Stop_Trigger_Condition_List": [
"Start_SIA_2",
"Start_SIA_4"
],
"class": "SurveillanceEventCoordinator"
},
"Nodeset_Config": {
"class": "NodeSetAll"
},
"Start_Day": 1,
"class": "CampaignEvent"
}
|
Node_Property_Restrictions |
array of JSON objects |
NA |
NA |
NA |
A list of the NodeProperty key:value pairs, as defined in the demographics file, that nodes must have to be targeted by the intervention. See NodeProperties and IndividualProperties parameters for more information. You can specify AND and OR combinations of key:value pairs with this parameter. |
The following example restricts the intervention to nodes that are urban and medium risk or rural and low risk. {
"Node_Property_Restrictions": [
{
"Place": "URBAN",
"Risk": "MED"
},
{
"Place": "RURAL",
"Risk": "LOW"
}
]
}
|
Percentage_Events_To_Count |
array of strings |
NA |
NA |
NA |
When Threshold_Type equals PERCENTAGE_EVENTS then Percentage_Events_To_Count lists the events that will be counted for the denominator which will then be used with the specified event for Trigger_Condition_List counted for the numerator. |
{
"Event_Coordinator_Config": {
"Coordinator_Name": "ACF_Counter",
"Duration": -1,
"Incidence_Counter": {
"Counter_Event_Type": "NODE",
"Counter_Period": 30,
"Counter_Type": "PERIODIC",
"Demographic_Coverage": 1,
"Node_Property_Restrictions": [],
"Property_Restrictions_Within_Node": [],
"Target_Demographic": "Everyone",
"Trigger_Condition_List": [
"Positive_Event_Node"
]
},
"Responder": {
"Action_List": [
{
"Event_To_Broadcast": "Ind_Start_SIA_2",
"Event_Type": "COORDINATOR",
"Threshold": 0.5
}
],
"Percentage_Events_To_Count": [
"Negative_Event_Node",
"Positive_Event_Node"
],
"Responded_Event": "Respond_To_Surveillance",
"Threshold_Type": "PERCENTAGE_EVENTS"
},
"Start_Trigger_Condition_List": [
"Start_ACF"
],
"Stop_Trigger_Condition_List": [],
"class": "SurveillanceEventCoordinator"
},
"Nodeset_Config": {
"class": "NodeSetAll"
},
"Start_Day": 1,
"class": "CampaignEvent"
}
|
Property_Restrictions |
array of JSON objects |
NA |
NA |
NA |
A list of the IndividualProperty key:value pairs, as defined in the demographics file, that individuals must have to be targeted by this intervention. See NodeProperties and IndividualProperties 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. |
{
"Property_Restrictions": [
"Risk:HIGH"
]
}
|
Property_Restrictions_Within_Node |
array of JSON objects |
NA |
NA |
NA |
A list of the IndividualProperty key:value pairs, as defined in the demographics file, that individuals must have to be targeted by this intervention. See NodeProperties and IndividualProperties parameters for more information. This parameter allows you to specify AND and OR combinations of key:value pairs. You may specify individual property restrictions using either this parameter or Property_Restrictions, but not both. |
The following example restricts the intervention to individuals who are urban and high risk or urban and medium risk. {
"Property_Restrictions_Within_Node": [
{
"Geographic": "URBAN",
"Risk": "HIGH"
},
{
"Geographic": "URBAN",
"Risk": "MEDIUM"
}
]
}
|
Responded_Event |
string |
NA |
NA |
“” |
A coordinator event, defined in Custom_Coordinator_Events, that is broadcast if Responder responded. More specifically, at the completion of a counting period, if an action is selected, the action events are broadcast and then the Responded_Event is also broadcast. This allows other event coordinators to react to the action events being broadcast. |
{
"Event_Coordinator_Config": {
"Coordinator_Name": "ACF_Counter",
"Duration": 30,
"Incidence_Counter": {
"Counter_Event_Type": "NODE",
"Counter_Period": 14,
"Counter_Type": "PERIODIC",
"Demographic_Coverage": 1,
"Target_Demographic": "Everyone",
"Trigger_Condition_List": [
"Node_Event_1",
"Node_Event_2"
]
},
"Responder": {
"Action_List": [
{
"Event_To_Broadcast": "Ind_Start_SIA_2",
"Event_Type": "COORDINATOR",
"Threshold": 5
},
{
"Event_To_Broadcast": "Ind_Start_SIA_4",
"Event_Type": "COORDINATOR",
"Threshold": 2
}
],
"Responded_Event": "Respond_To_Surveillance",
"Threshold_Type": "COUNT"
},
"Start_Trigger_Condition_List": [
"Start_ACF"
],
"Stop_Trigger_Condition_List": [
"Start_SIA_2",
"Start_SIA_4"
],
"class": "SurveillanceEventCoordinator"
},
"Nodeset_Config": {
"class": "NodeSetAll"
},
"Start_Day": 1,
"class": "CampaignEvent"
}
|
Responder |
array of JSON objects |
NA |
NA |
NA |
List of JSON objects for specifying the threshold type, values, and the actions to take when the specified conditions and parameters have been met, as configured in Incidence_Counter. Some of the values are specified in the following parameters:
|
{
"Event_Coordinator_Config": {
"Coordinator_Name": "ACF_Counter",
"Duration": 30,
"Incidence_Counter": {
"Counter_Event_Type": "NODE",
"Counter_Period": 14,
"Counter_Type": "PERIODIC",
"Demographic_Coverage": 1,
"Target_Demographic": "Everyone",
"Trigger_Condition_List": [
"Node_Event_1",
"Node_Event_2"
]
},
"Responder": {
"Action_List": [
{
"Event_To_Broadcast": "Ind_Start_SIA_2",
"Event_Type": "COORDINATOR",
"Threshold": 5
},
{
"Event_To_Broadcast": "Ind_Start_SIA_4",
"Event_Type": "COORDINATOR",
"Threshold": 2
}
],
"Responded_Event": "Respond_To_Surveillance",
"Threshold_Type": "COUNT"
},
"Start_Trigger_Condition_List": [
"Start_ACF"
],
"Stop_Trigger_Condition_List": [
"Start_SIA_2",
"Start_SIA_4"
],
"class": "SurveillanceEventCoordinator"
},
"Nodeset_Config": {
"class": "NodeSetAll"
},
"Start_Day": 1,
"class": "CampaignEvent"
}
|
Start_Trigger_Condition_List |
array of strings |
NA |
NA |
NA |
The trigger event list, as specified in the Custom_Coordinator_Events config parameter, that will start Incidence_Counter counting events. The surveillance event coordinator will keep counting and responding until it gets a stop event, as defined in Stop_Trigger_Condition_List, or the duration of the surveillance event coordinator has expired, as defined in Duration. The list cannot be empty. |
{
"class": "CampaignEvent",
"Start_Day": 1,
"Nodeset_Config": {
"class": "NodeSetAll"
},
"Event_Coordinator_Config": {
"class": "SurveillanceEventCoordinator",
"Coordinator_Name": "ACF_Counter",
"Start_Trigger_Condition_List": [
"Start_ACF"
],
"Stop_Trigger_Condition_List": [
"Start_SIA_2",
"Start_SIA_4"
],
"Duration": 30,
"Incidence_Counter": {
"Counter_Type": "PERIODIC",
"Counter_Period": 14,
"Counter_Event_Type": "NODE",
"Trigger_Condition_List": [
"Node_Event_1",
"Node_Event_2"
],
"Target_Demographic": "Everyone",
"Demographic_Coverage": 1
},
"Responder": {
"Responded_Event": "Respond_To_Surveillance",
"Threshold_Type": "COUNT",
"Action_List": [
{
"Threshold": 5,
"Event_Type": "COORDINATOR",
"Event_To_Broadcast": "Ind_Start_SIA_2"
},
{
"Threshold": 2,
"Event_Type": "COORDINATOR",
"Event_To_Broadcast": "Ind_Start_SIA_4"
}
]
}
}
}
|
Stop_Trigger_Condition_List |
array of strings |
NA |
NA |
NA |
The broadcast event list, as specified in the Custom_Coordinator_Events config parameter, that will stop Incidence_Counter counting events. The coordinator can start counting again if it receives a start trigger event. The list can be empty. |
{
"Event_Coordinator_Config": {
"Coordinator_Name": "ACF_Counter",
"Duration": 30,
"Incidence_Counter": {
"Counter_Event_Type": "NODE",
"Counter_Period": 14,
"Counter_Type": "PERIODIC",
"Demographic_Coverage": 1,
"Target_Demographic": "Everyone",
"Trigger_Condition_List": [
"Node_Event_1",
"Node_Event_2"
]
},
"Responder": {
"Action_List": [
{
"Event_To_Broadcast": "Ind_Start_SIA_2",
"Event_Type": "COORDINATOR",
"Threshold": 5
},
{
"Event_To_Broadcast": "Ind_Start_SIA_4",
"Event_Type": "COORDINATOR",
"Threshold": 2
}
],
"Responded_Event": "Respond_To_Surveillance",
"Threshold_Type": "COUNT"
},
"Start_Trigger_Condition_List": [
"Start_ACF"
],
"Stop_Trigger_Condition_List": [
"Start_SIA_2",
"Start_SIA_4"
],
"class": "SurveillanceEventCoordinator"
},
"Nodeset_Config": {
"class": "NodeSetAll"
},
"Start_Day": 1,
"class": "CampaignEvent"
}
|
Target_Age_Max |
float |
0 |
9.3228e+35 |
9.3228e+35 |
The upper end of ages targeted for an intervention, in years. Used when Target_Demographic is set to ExplicitAgeRanges or ExplicitAgeRangesAndGender. |
{
"Target_Age_Max": 20,
"Target_Age_Min": 10,
"Target_Demographic": "ExplicitAgeRanges"
}
|
Target_Age_Min |
float |
0 |
3.40282e+38 |
0 |
The lower end of ages targeted for an intervention, in years. Used when Target_Demographic is set to ExplicitAgeRanges or ExplicitAgeRangesAndGender. |
{
"Target_Age_Max": 20,
"Target_Age_Min": 10,
"Target_Demographic": "ExplicitAgeRanges"
}
|
Target_Demographic |
enum |
NA |
NA |
Everyone |
The target demographic group. Possible values are:
|
{
"Target_Age_Max": 20,
"Target_Age_Min": 10,
"Target_Demographic": "ExplicitAgeRanges"
}
|
Target_Gender |
enum |
NA |
NA |
All |
Specifies the gender restriction for the intervention. Possible values are:
|
{
"Target_Gender": "Female"
}
|
Target_Residents_Only |
boolean |
0 |
1 |
0 |
When set to true (1), only individuals that currently reside in their ‘home’ node will be counted. |
{
"Target_Residents_Only": 1
}
|
Threshold |
float |
0 |
3.40282e+38 |
0 |
The COUNT or PERCENTAGE, as configured with Threshold_Type, threshold value that must be met before and action from Action_List will be considered. |
{
"Event_Coordinator_Config": {
"Coordinator_Name": "ACF_Counter",
"Duration": 30,
"Incidence_Counter": {
"Counter_Event_Type": "NODE",
"Counter_Period": 14,
"Counter_Type": "PERIODIC",
"Demographic_Coverage": 1,
"Target_Demographic": "Everyone",
"Trigger_Condition_List": [
"Node_Event_1",
"Node_Event_2"
]
},
"Responder": {
"Action_List": [
{
"Event_To_Broadcast": "Ind_Start_SIA_2",
"Event_Type": "COORDINATOR",
"Threshold": 5
},
{
"Event_To_Broadcast": "Ind_Start_SIA_4",
"Event_Type": "COORDINATOR",
"Threshold": 2
}
],
"Responded_Event": "Respond_To_Surveillance",
"Threshold_Type": "COUNT"
},
"Start_Trigger_Condition_List": [
"Start_ACF"
],
"Stop_Trigger_Condition_List": [
"Start_SIA_2",
"Start_SIA_4"
],
"class": "SurveillanceEventCoordinator"
},
"Nodeset_Config": {
"class": "NodeSetAll"
},
"Start_Day": 1,
"class": "CampaignEvent"
}
|
Threshold_Type |
enum |
NA |
NA |
COUNT |
Threshold type to indicate how Responder handles the count of events from Incidence_Counter and the thresholds in Action_List. Possible values are:
|
{
"Event_Coordinator_Config": {
"Coordinator_Name": "ACF_Counter",
"Duration": 30,
"Incidence_Counter": {
"Counter_Event_Type": "NODE",
"Counter_Period": 14,
"Counter_Type": "PERIODIC",
"Demographic_Coverage": 1,
"Target_Demographic": "Everyone",
"Trigger_Condition_List": [
"Node_Event_1",
"Node_Event_2"
]
},
"Responder": {
"Action_List": [
{
"Event_To_Broadcast": "Ind_Start_SIA_2",
"Event_Type": "COORDINATOR",
"Threshold": 5
},
{
"Event_To_Broadcast": "Ind_Start_SIA_4",
"Event_Type": "COORDINATOR",
"Threshold": 2
}
],
"Responded_Event": "Respond_To_Surveillance",
"Threshold_Type": "COUNT"
},
"Start_Trigger_Condition_List": [
"Start_ACF"
],
"Stop_Trigger_Condition_List": [
"Start_SIA_2",
"Start_SIA_4"
],
"class": "SurveillanceEventCoordinator"
},
"Nodeset_Config": {
"class": "NodeSetAll"
},
"Start_Day": 1,
"class": "CampaignEvent"
}
|
Trigger_Condition_List |
array of strings |
NA |
NA |
NA |
The list of events to count.The list cannot be empty. The type of events contained in the list is determined by Counter_Event_Type. Depending upon the type, the events must be defined in one of the following configuration parameters:
|
{
"Event_Coordinator_Config": {
"Coordinator_Name": "ACF_Counter",
"Duration": 30,
"Incidence_Counter": {
"Counter_Event_Type": "NODE",
"Counter_Period": 14,
"Counter_Type": "PERIODIC",
"Demographic_Coverage": 1,
"Target_Demographic": "Everyone",
"Trigger_Condition_List": [
"Node_Event_1",
"Node_Event_2"
]
},
"Responder": {
"Action_List": [
{
"Event_To_Broadcast": "Ind_Start_SIA_2",
"Event_Type": "COORDINATOR",
"Threshold": 5
},
{
"Event_To_Broadcast": "Ind_Start_SIA_4",
"Event_Type": "COORDINATOR",
"Threshold": 2
}
],
"Responded_Event": "Respond_To_Surveillance",
"Threshold_Type": "COUNT"
},
"Start_Trigger_Condition_List": [
"Start_ACF"
],
"Stop_Trigger_Condition_List": [
"Start_SIA_2",
"Start_SIA_4"
],
"class": "SurveillanceEventCoordinator"
},
"Nodeset_Config": {
"class": "NodeSetAll"
},
"Start_Day": 1,
"class": "CampaignEvent"
}
|
TriggeredEventCoordinator (generic)#
The TriggeredEventCoordinator coordinator class listens for trigger events, begins a series of repetitions of intervention distributions, and then broadcasts an event upon completion. This campaign event is typically used with other classes that broadcast and distribute events, such as BroadcastCoordinatorEvent, DelayEventCoordinator, and SurveillanceEventCoordinator.
Parameter |
Data type |
Minimum |
Maximum |
Default |
Description |
Example |
---|---|---|---|---|---|---|
Completion_Event |
array of strings |
NA |
NA |
NA |
The completion event list that will be broadcast every time the triggered event coordinator completes a set of repetitions. The events contained in the list are defined in Custom_Coordinator_Events in the simulation configuration file. |
{
"Event_Coordinator_Config": {
"class": "TriggeredEventCoordinator",
"Coordinator_Name": "1n2_Vaccinator",
"Start_Trigger_Condition_List": [
"Start_Vaccinating_1n2"
],
"Stop_Trigger_Condition_List": [],
"Number_Repetitions": 1,
"Timesteps_Between_Repetitions": 1,
"Duration": -1,
"Target_Demographic": "Everyone",
"Demographic_Coverage": 0.05,
"Intervention_Config": {
"class": "SimpleVaccine",
"Cost_To_Consumer": 1,
"Vaccine_Take": 1,
"Vaccine_Type": "AcquisitionBlocking",
"Waning_Config": {
"class": "WaningEffectBox",
"Initial_Effect": 0.59,
"Box_Duration": 730
}
},
"Completion_Event": "Done_Vaccinating_1n2"
}
}
|
Coordinator_Name |
string |
NA |
NA |
TriggeredEventCoordinator |
The unique identifying coordinator name used to identify the different coordinators in reports. |
{
"Event_Coordinator_Config": {
"Completion_Event": "Done_Vaccinating_1n2",
"Coordinator_Name": "1n2_Vaccinator",
"Demographic_Coverage": 0.05,
"Duration": -1,
"Intervention_Config": {
"Cost_To_Consumer": 1,
"Vaccine_Take": 1,
"Vaccine_Type": "AcquisitionBlocking",
"Waning_Config": {
"Box_Duration": 730,
"Initial_Effect": 0.59,
"class": "WaningEffectBox"
},
"class": "SimpleVaccine"
},
"Number_Repetitions": 1,
"Start_Trigger_Condition_List": [
"Start_Vaccinating_1n2"
],
"Stop_Trigger_Condition_List": [],
"Target_Demographic": "Everyone",
"Timesteps_Between_Repetitions": 1,
"class": "TriggeredEventCoordinator"
}
}
|
Duration |
float |
-1 |
3.40282e+38 |
-1 |
The time period (in days) that the triggered event coordinator is active before it expires. Once the specified duration has been reached the coordinator will expire whether or not it is in the middle of a set of repetitions. The value of -1 (default) equals to never expire. |
{
"Event_Coordinator_Config": {
"Completion_Event": "Done_Vaccinating_1n2",
"Coordinator_Name": "1n2_Vaccinator",
"Demographic_Coverage": 0.05,
"Duration": -1,
"Intervention_Config": {
"Cost_To_Consumer": 1,
"Vaccine_Take": 1,
"Vaccine_Type": "AcquisitionBlocking",
"Waning_Config": {
"Box_Duration": 730,
"Initial_Effect": 0.59,
"class": "WaningEffectBox"
},
"class": "SimpleVaccine"
},
"Number_Repetitions": 1,
"Start_Trigger_Condition_List": [
"Start_Vaccinating_1n2"
],
"Stop_Trigger_Condition_List": [],
"Target_Demographic": "Everyone",
"Timesteps_Between_Repetitions": 1,
"class": "TriggeredEventCoordinator"
}
}
|
Intervention_Config |
JSON object |
NA |
NA |
NA |
The nested JSON of the intervention to be distributed by this event coordinator. |
{
"Event_Coordinator_Config": {
"Completion_Event": "Done_Vaccinating_1n2",
"Coordinator_Name": "1n2_Vaccinator",
"Demographic_Coverage": 0.05,
"Duration": -1,
"Intervention_Config": {
"Cost_To_Consumer": 1,
"Vaccine_Take": 1,
"Vaccine_Type": "AcquisitionBlocking",
"Waning_Config": {
"Box_Duration": 730,
"Initial_Effect": 0.59,
"class": "WaningEffectBox"
},
"class": "SimpleVaccine"
},
"Number_Repetitions": 1,
"Start_Trigger_Condition_List": [
"Start_Vaccinating_1n2"
],
"Stop_Trigger_Condition_List": [],
"Target_Demographic": "Everyone",
"Timesteps_Between_Repetitions": 1,
"class": "TriggeredEventCoordinator"
}
}
|
Node_Property_Restrictions |
array of JSON objects |
NA |
NA |
NA |
A list of the NodeProperty key:value pairs, as defined in the demographics file, that nodes must have to be targeted by the intervention. See NodeProperties and IndividualProperties parameters for more information. You can specify AND and OR combinations of key:value pairs with this parameter. |
The following configuration restrictions the intervention to nodes that are urban and high risk or have had the first round treatment and are low risk. {
"Event_Coordinator_Config": {
"Completion_Event": "Done_Vaccinating_3n4",
"Coordinator_Name": "3n4_Vaccinator",
"Demographic_Coverage": 0.05,
"Duration": -1,
"Intervention_Config": {
"Cost_To_Consumer": 2,
"Vaccine_Take": 1,
"Vaccine_Type": "AcquisitionBlocking",
"Waning_Config": {
"Box_Duration": 730,
"Initial_Effect": 0.59,
"class": "WaningEffectBox"
},
"class": "SimpleVaccine"
},
"Node_Property_Restrictions": [
{
"Place": "Urban",
"Risk": "High"
},
{
"InterventionStatus": "FirstRound",
"Risk": "Low"
}
],
"Number_Repetitions": 3,
"Property_Restrictions_Within_Node": [],
"Start_Trigger_Condition_List": [
"Start_Vaccinating_3n4"
],
"Stop_Trigger_Condition_List": [
"Stop_Vaccinating_3n4"
],
"Target_Demographic": "Everyone",
"Timesteps_Between_Repetitions": 10,
"class": "TriggeredEventCoordinator"
}
}
|
Number_Repetitions |
integer |
-1 |
1000 |
1 |
The number of times an intervention is given, used with Timesteps_Between_Repetitions. |
{
"Event_Coordinator_Config": {
"Completion_Event": "Done_Vaccinating_3n4",
"Coordinator_Name": "3n4_Vaccinator",
"Demographic_Coverage": 0.05,
"Duration": -1,
"Intervention_Config": {
"Cost_To_Consumer": 2,
"Vaccine_Take": 1,
"Vaccine_Type": "AcquisitionBlocking",
"Waning_Config": {
"Box_Duration": 730,
"Initial_Effect": 0.59,
"class": "WaningEffectBox"
},
"class": "SimpleVaccine"
},
"Number_Repetitions": 3,
"Start_Trigger_Condition_List": [
"Start_Vaccinating_3n4"
],
"Stop_Trigger_Condition_List": [
"Stop_Vaccinating_3n4"
],
"Target_Demographic": "Everyone",
"Timesteps_Between_Repetitions": 10,
"class": "TriggeredEventCoordinator"
}
}
|
Property_Restrictions |
array of JSON objects |
NA |
NA |
NA |
A list of the IndividualProperty key:value pairs, as defined in the demographics file, that individuals must have to be targeted by this intervention. See NodeProperties and IndividualProperties 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. |
{
"Property_Restrictions": [
"Risk:HIGH"
]
}
|
Property_Restrictions_Within_Node |
array of JSON objects |
NA |
NA |
NA |
A list of the IndividualProperty key:value pairs, as defined in the demographics file, that individuals must have to be targeted by this intervention. See NodeProperties and IndividualProperties parameters for more information. This parameter allows you to specify AND and OR combinations of key:value pairs. You may specify individual property restrictions using either this parameter or Property_Restrictions, but not both. |
The following example restricts the intervention to individuals who are urban and high risk or urban and medium risk. {
"Property_Restrictions_Within_Node": [
{
"Geographic": "URBAN",
"Risk": "HIGH"
},
{
"Geographic": "URBAN",
"Risk": "MEDIUM"
}
]
}
|
Start_Trigger_Condition_List |
array of strings |
NA |
NA |
NA |
The trigger condition event list that when heard will start a new set of repetitions for the triggered event coordinator. The list cannot be empty. The events contained in the list are defined in Custom_Coordinator_Events in the simulation configuration file. |
{
"Event_Coordinator_Config": {
"Completion_Event": "Done_Vaccinating_1n2",
"Coordinator_Name": "1n2_Vaccinator",
"Demographic_Coverage": 0.05,
"Duration": -1,
"Intervention_Config": {
"Cost_To_Consumer": 1,
"Vaccine_Take": 1,
"Vaccine_Type": "AcquisitionBlocking",
"Waning_Config": {
"Box_Duration": 730,
"Initial_Effect": 0.59,
"class": "WaningEffectBox"
},
"class": "SimpleVaccine"
},
"Number_Repetitions": 1,
"Start_Trigger_Condition_List": [
"Start_Vaccinating_1n2"
],
"Stop_Trigger_Condition_List": [],
"Target_Demographic": "Everyone",
"Timesteps_Between_Repetitions": 1,
"class": "TriggeredEventCoordinator"
}
}
|
Stop_Trigger_Condition_List |
array of strings |
NA |
NA |
NA |
The trigger condition event list that when heard will stop any repetitions for the triggered event coordinator until a start trigger condition event list is received. The list can be empty. The events contained in the list are defined in Custom_Coordinator_Events in the simulation configuration file. |
{
"Event_Coordinator_Config": {
"Completion_Event": "Done_Vaccinating_1n2",
"Coordinator_Name": "1n2_Vaccinator",
"Demographic_Coverage": 0.05,
"Duration": -1,
"Intervention_Config": {
"Cost_To_Consumer": 1,
"Vaccine_Take": 1,
"Vaccine_Type": "AcquisitionBlocking",
"Waning_Config": {
"Box_Duration": 730,
"Initial_Effect": 0.59,
"class": "WaningEffectBox"
},
"class": "SimpleVaccine"
},
"Number_Repetitions": 1,
"Start_Trigger_Condition_List": [
"Start_Vaccinating_1n2"
],
"Stop_Trigger_Condition_List": [],
"Target_Demographic": "Everyone",
"Timesteps_Between_Repetitions": 1,
"class": "TriggeredEventCoordinator"
}
}
|
Target_Age_Max |
float |
0 |
9.3228e+35 |
9.3228e+35 |
The upper end of ages targeted for an intervention, in years. Used when Target_Demographic is set to ExplicitAgeRanges or ExplicitAgeRangesAndGender. |
{
"Target_Age_Max": 20,
"Target_Age_Min": 10,
"Target_Demographic": "ExplicitAgeRanges"
}
|
Target_Age_Min |
float |
0 |
3.40E+38 |
0 |
The lower end of ages targeted for an intervention, in years. Used when Target_Demographic is set to ExplicitAgeRanges or ExplicitAgeRangesAndGender. |
{
"Target_Age_Max": 20,
"Target_Age_Min": 10,
"Target_Demographic": "ExplicitAgeRanges"
}
|
Target_Demographic |
enum |
NA |
NA |
Everyone |
The target demographic group. Possible values are:
|
{
"Target_Age_Max": 20,
"Target_Age_Min": 10,
"Target_Demographic": "ExplicitAgeRanges"
}
|
Target_Gender |
enum |
NA |
NA |
All |
Specifies the gender restriction for the intervention. Possible values are:
|
{
"Target_Gender": "Female"
}
|
Target_Residents_Only |
boolean |
0 |
1 |
0 |
When set to true (1), the intervention is only distributed to individuals that began the simulation in the node (i.e. those that claim the node as their residence). |
{
"Target_Residents_Only": 1
}
|
Timesteps_Between_Repetitions |
integer |
-1 |
10000 |
-1 |
The repetition interval. |
{
"Event_Coordinator_Config": {
"Completion_Event": "Done_Vaccinating_1n2",
"Coordinator_Name": "1n2_Vaccinator",
"Demographic_Coverage": 0.05,
"Duration": -1,
"Intervention_Config": {
"Cost_To_Consumer": 1,
"Vaccine_Take": 1,
"Vaccine_Type": "AcquisitionBlocking",
"Waning_Config": {
"Box_Duration": 730,
"Initial_Effect": 0.59,
"class": "WaningEffectBox"
},
"class": "SimpleVaccine"
},
"Number_Repetitions": 1,
"Start_Trigger_Condition_List": [
"Start_Vaccinating_1n2"
],
"Stop_Trigger_Condition_List": [],
"Target_Demographic": "Everyone",
"Timesteps_Between_Repetitions": 1,
"class": "TriggeredEventCoordinator"
}
}
|
Deprecated configuration parameters#
Base_Population_Scale_Factor has been renamed to x_Base_Population, which is grouped together with the other scale factor parameters beginning with x_. The functional remains the same. Enable_Demographics_Gender has been deprecated. Animal_Reservoir_Type has been replaced with Enable_Infectivity_Reservoir.
The following configuration parameters have been deprecated as a result of the refactoring of distribution parameters for better consistency across the configuration and campaign files.
Parameter |
---|
Incubation_Period_Log_Mean |
Incubation_Period_Log_Width |
Infectious_Period_Mean |
Infectious_Period_Std_Dev |
Deprecated campaign parameters#
The following campaign parameters have been deprecated as a result of the refactoring of distribution parameters for better consistency across the configuration and campaign files.
Parameter |
---|
BitingRisk Constant |
BitingRisk Risk_Distribution_Type |
BitingRisk Exponential_Mean |
BitingRisk Gaussian_Mean |
BitingRisk Gaussian_Std_Dev |
BitingRisk Uniform_Max |
BitingRisk Uniform_Min |
CommunityHealthWorkerEventCoordinator Initial_Amount |
CommunityHealthWorkerEventCoordinator Initial_Amount_Distribution_Type |
CommunityHealthWorkerEventCoordinator Initial_Amount_Mean |
CommunityHealthWorkerEventCoordinator Initial_Amount_Std_Dev |
DelayedIntervention Delay_Distribution |
DelayedIntervention Delay_Period |
DelayedIntervention Delay_Period_Mean |
DelayedIntervention Delay_Period_Scale |
DelayedIntervention Delay_Period_Shape |
DelayedIntervention Delay_Period_Std_Dev |
DelayEventCoordinator Delay_Distribution |
DelayEventCoordinator Delay_Period |
DelayEventCoordinator Delay_Period_Mean |
DelayEventCoordinator Delay_Period_StdDev |
HIVDelayedIntervention Delay_Distribution |
HIVDelayedIntervention Delay_Period |
HIVDelayedIntervention Delay_Period_Mean |
HIVDelayedIntervention Delay_Period_Scale |
HIVDelayedIntervention Delay_Period_Shape |
HIVDelayedIntervention Delay_Period_Std_Dev |
HIVMuxer Delay_Distribution |
HIVMuxer Delay_Period |
HIVMuxer Delay_Period_Mean |
HIVMuxer Delay_Period_Scale |
HIVMuxer Delay_Period_Shape |
HIVMuxer Delay_Period_Std_Dev |
MigrateFamily Duration_At_Node_Distribution_Type |
MigrateFamily Duration_At_Node_Exponential_Period |
MigrateFamily Duration_At_Node_Fixed |
MigrateFamily Duration_At_Node_Gausian_Mean |
MigrateFamily Duration_At_Node_Gausian_StdDev |
MigrateFamily Duration_At_Node_Uniform_Max |
MigrateFamily Duration_At_Node_Uniform_Min |
MigrateFamily Duration_Before_Leaving_Distribution_Type |
MigrateFamily Duration_Before_Leaving_Exponential_Period |
MigrateFamily Duration_Before_Leaving_Fixed |
MigrateFamily Duration_Before_Leaving_Gausian_Mean |
MigrateFamily Duration_Before_Leaving_Gausian_StdDev |
MigrateFamily Duration_Before_Leaving_Uniform_Max |
MigrateFamily Duration_Before_Leaving_Uniform_Min |
MigrateIndividuals Duration_At_Node_Distribution_Type |
MigrateIndividuals Duration_At_Node_Exponential_Period |
MigrateIndividuals Duration_At_Node_Fixed |
MigrateIndividuals Duration_At_Node_Gausian_Mean |
MigrateIndividuals Duration_At_Node_Gausian_StdDev |
MigrateIndividuals Duration_Before_Leaving_Distribution_Type |
MigrateIndividuals Duration_Before_Leaving_Exponential_Period |
MigrateIndividuals Duration_Before_Leaving_Fixed |
MigrateIndividuals Duration_Before_Leaving_Gausian_Mean |
MigrateIndividuals Duration_Before_Leaving_Gausian_StdDev |
MigrateIndividuals Duration_Before_Leaving_Uniform_Max |
MigrateIndividuals Duration_Before_Leaving_Uniform_Min |
MigrateIndividuals Duration_At_Node_Uniform_Max |
MigrateIndividuals Duration_At_Node_Uniform_Min |
UsageDependentBednet Expiration_Distribution_Type |
UsageDependentBednet Expiration_Percentage_Period_1 |
UsageDependentBednet Expiration_Period |
UsageDependentBednet Expiration_Period_1 |
UsageDependentBednet Expiration_Period_2 |
UsageDependentBednet Expiration_Period_Mean |
UsageDependentBednet Expiration_Period_Std_Dev |
EMOD v2.18#
The EMOD v2.18 release includes many new features for all supported simulation types. In particular, the TB_SIM simulation type has been deprecated and replaced with TBHIV_SIM, which does not include HIV transmission but adds the ability to model the effect of HIV coinfection on the spread of TB.
New configuration parameters#
For the generic simulation type, the following new configuration parameters are available:
Parameter |
Data type |
Minimum |
Maximum |
Default |
Description |
Example |
---|---|---|---|---|---|---|
Enable_Maternal_Antibodies_Transmission |
boolean |
0 |
1 |
0 |
Controls whether or not mothers pass antibodies to their infants. |
{
"Enable_Maternal_Antibodies_Transmission": 1,
"Maternal_Antibodies_Type": "SIMPLE_WANING",
"Maternal_Antibody_Protection": 0.23,
"Maternal_Antibody_Decay_Rate": 0.03
}
|
Enable_Maternal_Protection |
boolean |
0 |
1 |
0 |
Controls whether or not mothers pass immunity on to their infants. Setting to 1 (true) enables maternal protection as defined by Maternal_Protection_Type. Enable_Birth must be set to 1 (true). |
{
"Enable_Maternal_Protection": 1,
"Maternal_Protection_Type": "LINEAR_FRACTIONAL"
}
|
Enable_Natural_Mortality |
boolean |
0 |
1 |
0 |
Controls whether or not individuals are removed from the simulation due to natural (non-disease) deaths. |
{
"Enable_Natural_Mortality": 1,
"Enable_Vital_Dynamics": 1
}
|
Enable_Skipping |
boolean |
0 |
1 |
0 |
Controls whether or not the simulation uses an optimization that can increase performance by up to 50% in some cases by probablistically exposing individuals rather than exposing every single person. Useful in low-prevalence, high-population scenarios. |
{
"Exposure_Skipping": 1
}
|
Enable_Susceptibility_Scaling |
boolean |
0 |
1 |
0 |
Controls whether or not susceptibility is scaled by time as defined by Susceptibility_Scaling_Type. |
{
"Enable_Susceptibility_Scaling": 1,
"Susceptibility_Scaling_Type": "LOG_LINEAR_FUNCTION_OF_TIME"
}
|
Maternal_Linear_Slope |
float |
0.0001 |
1 |
0.01 |
Slope parameter describing the rate of waning for maternal protection, must be positive. The per-day increase in susceptibility. |
{
"Maternal_Protection_Type": "LINEAR_FRACTIONAL",
"Maternal_Linear_SusZero": 0.45,
"Maternal_Linear_Slope": 0.02
}
|
Maternal_Linear_SusZero |
float |
0 |
1 |
0.2 |
The initial level of maternal protection at age 0, given as susceptibility. A value of 0.0 implies total protection, a value of 1.0 implies no protection. |
{
"Maternal_Protection_Type": "LINEAR_FRACTIONAL",
"Maternal_Linear_SusZero": 0.45,
"Maternal_Linear_Slope": 0.02
}
|
Maternal_Protection_Type |
enum |
NA |
NA |
NONE |
The type of maternal protection afforded to infants. |
{
"Enable_Maternal_Protection": 1,
"Maternal_Protection_Type": "LINEAR_FRACTIONAL"
}
|
Maternal_Sigmoid_HalfMaxAge |
float |
-270 |
3650 |
180 |
The age in days that the level of maternal protection is half of its initial value. |
{
"Maternal_Protection_Type": "SIGMOID_BINARY",
"Maternal_Sigmoid_SteepFac": 30,
"Maternal_Sigmoid_HalfMaxAge": 365,
"Maternal_Sigmoid_SusInit": 0.0002
}
|
Maternal_Sigmoid_SteepFac |
float |
0.1 |
1000 |
30 |
The steepness factor describing the rate of waning for maternal protection, must be positive. Small values imply rapid waning. |
{
"Maternal_Protection_Type": "SIGMOID_BINARY",
"Maternal_Sigmoid_SteepFac": 30,
"Maternal_Sigmoid_HalfMaxAge": 365,
"Maternal_Sigmoid_SusInit": 0.0002
}
|
Maternal_Sigmoid_SusInit |
float |
0 |
1 |
0 |
The initial level of maternal protection at age -INF, given as susceptibility. A value of 0.0 implies total protection, a value of 1.0 implies no protection. |
{
"Maternal_Protection_Type": "SIGMOID_BINARY",
"Maternal_Sigmoid_SteepFac": 30,
"Maternal_Sigmoid_HalfMaxAge": 365,
"Maternal_Sigmoid_SusInit": 0.0002
}
|
Node_Contagion_Decay_Rate |
float |
0 |
1 |
1 |
The fraction of contagion not carried over to the next time step. |
{
"Node_Contagion_Decay_Rate": 0.3
}
|
Susceptibility_Scaling_Rate |
float |
0 |
3.40E+38 |
0 |
The scaling rate for the variation in time of the log-linear susceptibility scaling. Susceptibility_Scaling_Type must be set to LOG_LINEAR_FUNCTION_OF_TIME. |
{
"Susceptibility_Scaling_Type": "LOG_LINEAR_FUNCTION_OF_TIME",
"Susceptibility_Scaling_Rate": 1.58
}
|
Susceptibility_Scaling_Type |
enum |
NA |
NA |
CONSTANT_SUSCEPTIBILITY |
The effect of time on susceptibility. |
{
"Susceptibility_Scaling_Type": "CONSTANT_SUSCEPTIBILITY"
}
|
Susceptibility_Type |
enum |
NA |
NA |
FRACTIONAL |
Controls implementation of an individual’s susceptibility. |
{
"Susceptibility_Type": "FRACTIONAL",
"Enable_Maternal_Protection": 1,
"Maternal_Protection_Type": "LINEAR_FRACTIONAL"
}
|
To view all available configuration parameters, see Configuration parameters.
New campaign parameters#
The following campaign classes are new for the Generic model and can be used in all other models:
IncidenceEventCoordinator (generic)#
The IncidenceEventCoordinator coordinator class distributes interventions based on the number of events counted over a period of time.
Parameter |
Data type |
Minimum |
Maximum |
Default |
Description |
Example |
---|---|---|---|---|---|---|
Action_List |
array of JSON objects |
NA |
NA |
NA |
List (array) of JSON objects, including the values specified in the following parameters: Threshold, Event_Type, Event_To_Broadcast. |
{
"Action_List": [
{
"Event_To_Broadcast": "Action_Event_1",
"Event_Type": "COORDINATOR",
"Threshold": 20
},
{
"Event_To_Broadcast": "Action_Event_2",
"Event_Type": "COORDINATOR",
"Threshold": 30
}
],
"Threshold_Type": "COUNT"
}
|
Count_Events_For_Num_Timesteps |
integer |
1 |
2.15E+00 |
1 |
If set to true (1), then the waning effect values, as specified in the Effect_List list of objects for the WaningEffectCombo classes, are added together. If set to false (0), the waning effect values are multiplied. The resulting waning effect value cannot be greater than 1. |
{
"Incidence_Counter": {
"Count_Events_For_Num_Timesteps": 5,
"Trigger_Condition_List": [
"PropertyChange"
],
"Node_Property_Restrictions": [
{
"Risk": "HIGH"
}
],
"Target_Demographic": "Everyone",
"Demographic_Coverage": 0.6,
"Property_Restrictions_Within_Node": [
{
"Accessibility": "YES"
}
]
}
}
|
Event_To_Broadcast |
string |
NA |
NA |
NA |
The action event to occur when the specified trigger value in the Threshold parameter is met. At least one action must be defined for Event_To_Broadcast. The events contained in the list can be built-in events (see Event list for possible events). |
{
"Threshold_Type": "COUNT",
"Action_List": [
{
"Threshold": 20,
"Event_To_Broadcast": "Action_Event_1"
},
{
"Threshold": 30,
"Event_To_Broadcast": "Action_Event_2"
}
]
}
|
Event_Type |
enum |
NA |
NA |
INDIVIDUAL |
The type of event to be broadcast. Possible values are:
|
{
"Action_List": [
{
"Event_To_Broadcast": "Action_Event_1",
"Event_Type": "COORDINATOR",
"Threshold": 20
},
{
"Event_To_Broadcast": "Action_Event_2",
"Event_Type": "COORDINATOR",
"Threshold": 30
}
],
"Threshold_Type": "COUNT"
}
|
Incidence_Counter |
array of JSON objects |
NA |
NA |
NA |
List of JSON objects for specifying the conditions and parameters that must be met for an incidence to be counted. Some of the values are specified in the following parameters: Count_Events_For_Num_Timesteps, Trigger_Condition_List, Node_Property_Restrictions. |
{
"Incidence_Counter": {
"Count_Events_For_Num_Timesteps": 5,
"Trigger_Condition_List": [
"PropertyChange"
],
"Node_Property_Restrictions": [
{
"Risk": "HIGH"
}
],
"Target_Demographic": "Everyone",
"Demographic_Coverage": 0.6,
"Property_Restrictions_Within_Node": [
{
"Accessibility": "YES"
}
]
}
}
|
Node_Property_Restrictions |
array of JSON objects |
NA |
NA |
NA |
A list of the NodeProperty key:value pairs, as defined in the demographics file, that nodes must have to be targeted by the intervention. See NodeProperties and IndividualProperties parameters for more information. You can specify AND and OR combinations of key:value pairs with this parameter. |
The following example restricts the intervention to nodes that are urban and medium risk or rural and low risk. {
"Node_Property_Restrictions": [
{
"Place": "URBAN",
"Risk": "MED"
},
{
"Place": "RURAL",
"Risk": "LOW"
}
]
}
|
Number_Repetitions |
integer |
-1 |
1000 |
1 |
The number of times an intervention is given, used with Timesteps_Between_Repetitions. |
{
"class": "IncidenceEventCoordinator",
"Number_Repetitions": 3
}
|
Responder |
array of JSON objects |
NA |
NA |
NA |
List of JSON objects for specifying the threshold type, values, and the actions to take when the specified conditions and parameters have been met, as configured in the Incidence_Counter parameter. Some of the values are specified in the following parameters:
|
{
"Responder": {
"Threshold_Type": "COUNT",
"Action_List": [
{
"Threshold": 5,
"Event_To_Broadcast": "Action_Event_1"
},
{
"Threshold": 10,
"Event_To_Broadcast": "Action_Event_2"
}
]
}
}
|
Threshold |
float |
0 |
3.40E+03 |
0 |
The threshold value that triggers the specified action for the Event_To_Broadcast parameter. When you use the Threshold parameter you must also use the Event_To_Broadcast parameter. |
{
"Threshold_Type": "COUNT",
"Action_List": [
{
"Threshold": 20,
"Event_To_Broadcast": "Action_Event_1"
},
{
"Threshold": 30,
"Event_To_Broadcast": "Action_Event_2"
}
]
}
|
Threshold_Type |
enum |
NA |
NA |
COUNT |
Threshold type. Possible values are:
|
{
"Threshold_Type": "COUNT",
"Action_List": [
{
"Threshold": 20,
"Event_To_Broadcast": "Action_Event_1"
},
{
"Threshold": 30,
"Event_To_Broadcast": "Action_Event_2"
}
]
}
|
Timesteps_Between_Repetitions |
integer |
-1 |
1000 |
-1 |
The repetition interval. |
{
"class": "IncidenceEventCoordinator",
"Number_Repetitions": 3,
"Timesteps_Between_Repetitions": 6
}
|
Trigger_Condition_List |
array of strings |
NA |
NA |
NA |
A list of events that will trigger an intervention. |
{
"Trigger_Condition_List": [
"NewClinicalCase",
"NewSevereCase"
]
}
|
MultiNodeInterventionDistributor (generic)#
The MultiNodeInterventionDistributor intervention class distributes multiple node-level interventions when the distributor only allows specifying one intervention.
Parameter |
Data type |
Minimum |
Maximum |
Default |
Description |
Example |
---|---|---|---|---|---|---|
Disqualifying_Properties |
array of strings |
NA |
NA |
[] |
A list of NodeProperty key:value pairs that cause an intervention to be aborted (persistent interventions will stop being distributed to individuals with these values). See NodeProperties and IndividualProperties parameters for more information. Generally used to control the flow of health care access. For example, to prevent the same individual from accessing health care via two different routes at the same time. |
{
"Disqualifying_Properties": [
"InterventionStatus:LostForever"
]
}
|
Intervention_Name |
string |
NA |
NA |
NA |
The optional name used to refer to this intervention as a means to differentiate it from others that use the same class. |
{
"Intervention_Config": {
"class": "MultiNodeInterventionDistributor",
"Intervention_Name": "Country-wide vaccination"
}
}
|
New_Property_Value |
string |
NA |
NA |
NA |
An optional NodeProperty key:value pair that will be assigned when the intervention is distributed. See NodeProperties and IndividualProperties parameters for more information. Generally used to indicate the broad category of health care cascade to which an intervention belongs to prevent individuals from accessing care through multiple pathways. For example, if an individual must already be taking a particular medication to be prescribed a new one. |
{
"New_Property_Value": "InterventionStatus:None"
}
|
Node_Intervention_List |
array of JSON objects |
NA |
NA |
NA |
A list of nested JSON objects for the multi-node-level interventions to be distributed by this intervention. |
{
"Intervention_Config": {
"class": "MultiNodeInterventionDistributor",
"Node_Intervention_List": [
{
"class": "SpaceSpraying",
"Cost_To_Consumer": 1.0,
"Habitat_Target": "ALL_HABITATS",
"Spray_Kill_Target": "SpaceSpray_Indoor",
"Killing_Config": {
"class": "WaningEffectExponential",
"Initial_Effect": 1.0,
"Decay_Time_Constant": 90
},
"Reduction_Config": {
"class": "WaningEffectExponential",
"Initial_Effect": 1.0,
"Decay_Time_Constant": 90
}
},
{
"class": "NodePropertyValueChanger",
"Target_NP_Key_Value": "InterventionStatus:RECENT_SPRAY",
"Daily_Probability": 1.0,
"Maximum_Duration": 0,
"Revert": 90
}
]
}
}
|
WaningEffectCombo (generic)#
The WaningEffectCombo class is used within individual-level interventions and allows for specifiying a list of effects when the intervention only has one WaningEffect defined. These effects can be added or multiplied.
Parameter |
Data type |
Minimum |
Maximum |
Default |
Description |
Example |
---|---|---|---|---|---|---|
Add_Effects |
boolean |
0 |
1 |
0 |
The Add_Effects parameter allows you to combine multiple effects from the waning effect classes. If set to true (1), then the waning effect values from the different waning effect objects are added together. If set to false (0), the waning effect values are multiplied. The resulting waning effect value must be greater than 1. |
{
"class": "WaningEffectCombo",
"Add_Effects": 1,
"Expires_When_All_Expire": 0,
"Effect_List": [
{
"class": "WaningEffectMapLinear",
"Initial_Effect": 1.0,
"Expire_At_Durability_Map_End": 1,
"Durability_Map": {
"Times": [
0.0,
1.0,
2.0
],
"Values": [
0.2,
0.4,
0.6
]
}
},
{
"class": "WaningEffectBox",
"Initial_Effect": 0.5,
"Box_Duration": 5.0
}
]
}
|
Effect_List |
array of JSON objects |
NA |
NA |
NA |
A list of nested JSON parameters to indicate how the intervention efficacy wanes over time. |
{
"class": "WaningEffectCombo",
"Add_Effects": 1,
"Expires_When_All_Expire": 0,
"Effect_List": [
{
"class": "WaningEffectMapLinear",
"Initial_Effect": 1.0,
"Expire_At_Durability_Map_End": 1,
"Durability_Map": {
"Times": [
0.0,
1.0,
2.0
],
"Values": [
0.2,
0.4,
0.6
]
}
},
{
"class": "WaningEffectBox",
"Initial_Effect": 0.5,
"Box_Duration": 5.0
}
]
}
|
Expires_When_All_Expire |
boolean |
0 |
1 |
0 |
If set to true (1), then all of the effects, as specified in the Effect_List parameter, must expire for the efficacy of the intervention to expire. If set to false (0), then the efficacy of the intervention will expire as soon as one of the parameters expires. |
{
"class": "WaningEffectCombo",
"Add_Effects": 1,
"Expires_When_All_Expire": 0,
"Effect_List": [
{
"class": "WaningEffectMapLinear",
"Initial_Effect": 1.0,
"Expire_At_Durability_Map_End": 1,
"Durability_Map": {
"Times": [
0.0,
1.0,
2.0
],
"Values": [
0.2,
0.4,
0.6
]
}
},
{
"class": "WaningEffectBox",
"Initial_Effect": 0.5,
"Box_Duration": 5.0
}
]
}
|
Deprecated demographics parameters#
ImmunityDistributionFlag, ImmunityDistribution1, and ImmunityDistribution2 were renamed to SusceptibilityDistributionFlag, SusceptibilityDistribution1, and SusceptibilityDistribution2. In previous versions of EMOD, the naming was counterintuitive to the functionality. For example, setting a value of 1 for the immunity indicated zero immunity/complete susceptibility. Now the parameters more accurately reflect that you are setting a susceptibility value. The functionality is the same.
Deprecated config parameters#
Immunity_Transmission_Factor, Immunity_Mortality_Factor, and Immunity_Acquisition_Factor were renamed to Post_Infection_Transmission_Multiplier, Post_Infection_Mortality_Multiplier, and Post_Infection_Acquistion_Multiplier. The functionality is the same.
Deprecated campaign parameters#
The TB_SIM simulation type has been deprecated and replaced with TBHIV_SIM, which does not include HIV transmission but adds the ability to model the effect of HIV coinfection on the spread of TB.
The following campaign classes, which have not yet been fully tested with the TBHIV simulation type, have been disabled:
HealthSeekingBehaviorUpdate
HealthSeekingBehaviorUpdateable
AntiTBPropDepDrug
SmearDiagnostic
In previous versions of EMOD, you could set the tendency of individuals to seek out health care using HealthSeekingBehaviorUpdateable and then update the value of the Tendency parameter using HealthSeekingBehaviorUpdate. Now, you use individual properties to update individuals when they receive the SimpleHealthSeekingBehavior intervention, as you would to control the flow of individuals through other intervention classes. For example, you could create an individual property with HSBold and HSBnew values in the demographics file and assign all individuals to HSBold. Then you could distribute the first SimpleHealthSeekingBehavior (with one Tendency value) to all HSBold individuals and use New_Property_Value to assign them to HSBnew after receiving the intervention. The next SimpleHealthSeekingBehavior intervention (with a different Tendency value) could be distributed, setting Disqualifying_Properties to HSBold and, if desired, using New_Property_Value to reassign HSBold to those individuals.
Similarly, AntiTBPropDepDrug was disabled and superseded with TBHIVConfigurableTBDrug, which allows for drug effects based on HIV status and where dependence on IndividualProperties is configured through Property_Restrictions. In addition, AntiTBPropDepDrub can be replaced with AntiTBDrug, also using Property_Restrictions and new property values to target particular individuals with drug interventions for tuberculosis without HIV coinfections.
SmearDiagnostic was disabled and can be replaced with DiagnosticTreatNeg. While SmearDiagnostic would only broadcast when an individual had a positive smear diagnostic, DiagnosticTreatNeg has the added benefit of broadcasting negative and default diagnostic test events.
TB_Drug_Clearance_Rate_HIV and TB_Drug_Clearance_Rate_MDR parameters have been renamed to TB_Drug_Cure_Rate_HIV and TB_Drug_Cure_Rate_MDR.
Error messages#
When attempting to run an intervention using one of the disabled tuberculosis classes, such as AntiTBPropDepDrug, HealthSeekingBehaviorUpdate, HealthSeekingBehaviorUpdateable, and SmearDiagnostic, you will receive an error similar to the following: “00:00:01 [0] [I] [JsonConfigurable] Using the default value ( “Intervention_Name” : “HealthSeekingBehaviorUpdateable” ) for unspecified parameter. 00:00:02 [0] [E] [Eradication] 00:00:02 [0] [E] [Eradication] GeneralConfigurationException: Exception in SimulationEventContext.cpp at 242 in Kernel::SimulationEventContextHost::LoadCampaignFromFile. Array out of bounds”
Note
These campaign classes have been disabled because they have not yet been fully tested with the TBHIV simulation type.
EMOD schema and simulation types#
In the schema for the Simulation_Type parameter the enum values list additional simulation types that are not supported by EMOD.
EMOD currently supports the following simulation types for modeling a variety of diseases:
Generic disease (GENERIC_SIM), which can be used for modeling a variety of diseases such as influenza or measles
Vector-borne diseases (VECTOR_SIM), which can be used for modeling vector-borne diseases such as dengue
Malaria (MALARIA_SIM), which adds features specific to malaria biology and treatment
Sexually transmitted infections (STI_SIM), which adds features for sexual relationship networks
HIV (HIV_SIM), which adds features specific to HIV biology and treatment
For information about building the schema, see Generate a list of all available parameters (a schema).
EMOD v2.13#
The EMOD v2.13 release includes many new features for all supported simulation types.
New configuration parameters#
For the generic simulation type, the following new configuration parameters are available:
Parameter |
Data type |
Minimum |
Maximum |
Default |
Description |
Example |
---|---|---|---|---|---|---|
Custom_Reports_Filename |
string |
NA |
NA |
UNINITIALIZED STRING |
The name of the file containing custom report configuration parameters. Omitting this parameter or setting it to RunAllCustomReports will load all reporters found that are valid for the given simulation type. The file must be in JSON format. |
{
"Custom_Reports_Filename": "custom_reports.json"
}
|
Incubation_Period_Log_Mean |
float |
0 |
3.40E+38 |
6 |
The mean of log normal for the incubation period distribution. Incubation_Period_Distribution must be set to LOG_NORMAL_DURATION. |
{
"Incubation_Period_Distribution": "LOG_NORMAL_DURATION",
"Incubation_Period_Log_Mean": 5.758,
"Incubation_Period_Log_Width": 0.27
}
|
Incubation_Period_Log_Width |
float |
0 |
3.40E+38 |
1 |
The log width of log normal for the incubation period distribution. Incubation_Period_Distribution must be set to LOG_NORMAL_DURATION. |
{
"Incubation_Period_Distribution": "LOG_NORMAL_DURATION",
"Incubation_Period_Log_Mean": 5.758,
"Incubation_Period_Log_Width": 0.27
}
|
Infectivity_Exponential_Baseline |
float |
0 |
1 |
0 |
The scale factor applied to Base_Infectivity at the beginning of a simulation, before the infectivity begins to grow exponentially. Infectivity_Scale_Type must be set to EXPONENTIAL_FUNCTION_OF_TIME. |
{
"Infectivity_Exponential_Baseline": 0.1,
"Infectivity_Exponential_Delay": 90,
"Infectivity_Exponential_Rate": 45,
"Infectivity_Scale_Type": "EXPONENTIAL_FUNCTION_OF_TIME"
}
|
Infectivity_Exponential_Delay |
float |
0 |
3.40E+38 |
0 |
The number of days before infectivity begins to ramp up exponentially. Infectivity_Scale_Type must be set to EXPONENTIAL_FUNCTION_OF_TIME. |
{
"Infectivity_Exponential_Baseline": 0.1,
"Infectivity_Exponential_Delay": 90,
"Infectivity_Exponential_Rate": 45,
"Infectivity_Scale_Type": "EXPONENTIAL_FUNCTION_OF_TIME"
}
|
Infectivity_Exponential_Rate |
float |
0 |
3.40E+38 |
0 |
The daily rate of exponential growth to approach to full infectivity after the delay set by Infectivity_Exponential_Delay has passed. Infectivity_Scale_Type must be set to EXPONENTIAL_FUNCTION_OF_TIME. |
{
"Infectivity_Exponential_Rate": 45
}
|
Memory_Usage_Halting_Threshold_Working_Set_MB |
integer |
0 |
1.00E+06 |
8000 |
The maximum size (in MB) of working set memory before the system throws an exception and halts. |
{
"Memory_Usage_Halting_Threshold_Working_Set_MB": 4000
}
|
Memory_Usage_Warning_Threshold_Working_Set_MB |
integer |
0 |
1.00E+06 |
7000 |
The maximum size (in MB) of working set memory before memory usage statistics are written to the log regardless of log level. |
{
"Memory_Usage_Warning_Threshold_Working_Set_MB": 3500
}
|
Serialization_Time_Steps |
array of integers |
0 |
2.15E+09 |
The list of time steps after which to save the serialized state. 0 (zero) indicates the initial state before simulation, n indicates after the nth time step. By default, no serialized state is saved. |
{
"Serialization_Time_Steps": [
0,
10
]
}
|
|
Serialized_Population_Filenames |
array of strings |
NA |
NA |
NA |
Array of filenames with serialized population data. The number of filenames must match the number of cores used for the simulation. The file must be in .dtk format. |
{
"Serialized_Population_Filenames": [
"state-00010.dtk"
]
}
|
Serialized_Population_Path |
string |
NA |
NA |
. |
The root path for the serialized population files. |
{
"Serialized_Population_Path": "../00_Generic_Version_1_save/output"
}
|
To view all available configuration parameters, see Configuration parameters.
New demographics parameters#
In all simulation types, you can now assign properties like risk or quality of care to nodes using NodeProperties, which are configured much like IndividualProperties. In addition, a new property type is available for both nodes and individuals called InterventionStatus, which is used by the campaign file to distribute interventions based on the other interventions an individual or node has received. This property type was previously available only for individuals in the HIV simulation type and was known as the CascadeState. The relevant campaign parameters are described in the next section.
For more information, see the table below.
Parameter |
Data type |
Minimum |
Maximum |
Default |
Description |
Example |
---|---|---|---|---|---|---|
NodeProperties |
array of objects |
NA |
NA |
NA |
An array that contains parameters that add properties to nodes in a simulation. For example, you can define values for intervention status, risk, and other properties and assign values to different nodes. |
{
"NodeProperties": [{
"Property": "Risk",
"Values": ["HIGH", "MEDIUM", "LOW"],
"Initial_Distribution": [0.1, 0.4, 0.5]
}]
}
|
Property |
enum |
NA |
NA |
NA |
The individual or node property type for which you will assign arbitrary values to create groups. You can then move individuals or nodes into or out of different groups or target interventions to particular groups. Possible values are:
|
{
"Defaults": {
"IndividualProperties": [{
"Property": "Age_Bin",
"Age_Bin_Edges_In_Years": [ 0, 6, 10, 20, -1 ]
}]
}
}
{
"NodeProperties": [{
"Property": "InterventionStatus",
"Values": ["NONE", "RECENT_SPRAY"],
"Initial_Distribution": [1.0, 0.0]
}]
}
|
New campaign parameters#
The addition of NodeProperties in the demographics file also necessitated the addition of Node_Property_Restrictions to control how interventions are distributed based on the property values assigned to each node.
The new campaign parameters Disqualifying_Properties and New_Property_Value were added to every intervention to control how interventions are distributed based on properties assigned to individuals or nodes. Disqualifying_Properties prevents an intervention from being distributed to individuals or nodes with certain property values. New_Property_Value updates the property value after they receive an intervention.
These are generally used with the the property type InterventionStatus to control how interventions are distributed based on the interventions already received. For example, a household may be ineligible for clinical treatment for a length of time if they already received treatment during a drug campaign. This functionality was previously only available for individuals in the HIV simulation type and used parameters previously called Abort_States and Valid_Cascade_States.
The following event coordinators and intervention classes are new for this simulation type.
CommunityHealthWorkerEventCoordinator#
The CommunityHealthWorkerEventCoordinator coordinator class is used to model a health care worker’s ability to distribute interventions to the nodes and individual in their coverage area. This coordinator distributes a limited number of interventions per day, and can create a backlog of individuals or nodes requiring the intervention. For example, individual-level interventions could be distribution of drugs and node-level interventions could be spraying houses with insecticide.
Parameter |
Data type |
Minimum |
Maximum |
Default |
Description |
Example |
---|---|---|---|---|---|---|
Amount_In_Shipment |
integer |
1 |
2147480000.0 |
2147480000.0 |
The number of interventions (such as vaccine doses) that a health worker or clinic receives in a shipment. Interventions can only be distributed if they are in stock; stock is updated every Days_Between_Shipments with the Amount_In_Shipment. |
{
"Amount_In_Shipment": 10
}
|
Days_Between_Shipments |
float |
1 |
3.40282e+38 |
3.40282e+38 |
The number of days to wait before a clinic or health worker receives a new shipment of interventions (such as vaccine doses). Interventions can only be distributed if they are in stock; stock is updated every Days_Between_Shipments with the Amount_In_Shipment. |
{
"Days_Between_Shipments": 30
}
|
Demographic_Coverage |
float |
0 |
1 |
1 |
The fraction of individuals in the target demographic that will receive this intervention. |
{
"Demographic_Coverage": 1
}
|
Duration |
float |
0 |
3.40282e+38 |
3.40282e+38 |
The number of days for an event coordinator to be active before it expires. |
{
"Duration": 65
}
|
Initial_Amount_Constant |
float |
0 |
3.40282E+38 |
-1 |
The initial amount to use for all health workers when Initial_Amount_Distribution is set to CONSTANT_DISTRIBUTION. |
{
"Initial_Amount_Distribution": "CONSTANT_DISTRIBUTION",
"Initial_Amount_Constant": 8
}
|
Initial_Amount_Distribution |
enum |
NA |
NA |
NOT_INITIALIZED |
The distribution type to use for assigning the initial amount of interventions in stock. Each assigned value is a random draw from the distribution. Possible values are:
|
{
"Initial_Amount_Distribution": "DUAL_EXPONENTIAL_DISTRIBUTION",
"Initial_Amount_Mean_1": 4,
"Initial_Amount_Mean_2": 12,
"Initial_Amount_Proportion_1": 0.2
}
|
Initial_Amount_Exponential |
float |
0 |
3.40282E+38 |
-1 |
The mean of the initial amount of intervention in stock when Initial_Amount_Distribution is set to EXPONENTIAL_DISTRIBUTION. |
{
"Initial_Amount_Distribution": "EXPONENTIAL_DISTRIBUTION",
"Initial_Amount_Exponential": 4.25
}
|
Initial_Amount_Gaussian_Mean |
float |
0 |
3.40282E+38 |
-1 |
The mean of the initial amount of intervention in stock when Initial_Amount_Distribution is set to GAUSSIAN_DISTRIBUTION. |
{
"Initial_Amount_Distribution": "GAUSSIAN_DISTRIBUTION",
"Initial_Amount_Gaussian_Mean": 8,
"Initial_Amount_Gaussian_Std_Dev": 1.5
}
|
Initial_Amount_Gaussian_Std_Dev |
float |
1.17549E-38 |
3.40282E+38 |
-1 |
The standard deviation of the initial amount of intervention in stock when Initial_Amount_Distribution is set to GAUSSIAN_DISTRIBUTION. |
{
"Initial_Amount_Distribution": "GAUSSIAN_DISTRIBUTION",
"Initial_Amount_Gaussian_Mean": 8,
"Initial_Amount_Gaussian_Std_Dev": 1.5
}
|
Initial_Amount_Kappa |
float |
1.17549E-38 |
3.40282E+38 |
-1 |
The shape value for the initial amount of intervention in stock when Initial_Amount_Distribution is set to WEIBULL_DISTRIBUTION. |
{
"Initial_Amount_Distribution": "WEIBULL_DISTRIBUTION",
"Initial_Amount_Kappa": 0.9,
"Initial_Amount_Lambda": 1.5
}
|
Initial_Amount_Lambda |
float |
1.17549E-38 |
3.40282E+38 |
-1 |
The scale value for the initial amount of intervention in stock when Initial_Amount_Distribution is set to WEIBULL_DISTRIBUTION. |
{
"Initial_Amount_Distribution": "WEIBULL_DISTRIBUTION",
"Initial_Amount_Kappa": 0.9,
"Initial_Amount_Lambda": 1.5
}
|
Initial_Amount_Log_Normal_Mu |
float |
-3.40282e+38 |
1.70141e+38 |
3.40282E+38 |
The mean of the natural log of the initial amount of intervention in stock when Initial_Amount_Distribution is set to LOG_NORMAL_DISTRIBUTION. |
{
"Initial_Amount_Distribution": "LOG_NORMAL_DISTRIBUTION",
"Initial_Amount_Log_Normal_Mu": 9,
"Initial_Amount_Log_Normal_Sigma": 2
}
|
Initial_Amount_Log_Normal_Sigma |
float |
-3.40282e+38 |
3.40282E+38 |
1 |
The standard deviation of the natural log of the initial amount of intervention in stock when Initial_Amount_Distribution is set to LOG_NORMAL_DISTRIBUTION. |
{
"Initial_Amount_Distribution": "LOG_NORMAL_DISTRIBUTION",
"Initial_Amount_Log_Normal_Mu": 9,
"Initial_Amount_Log_Normal_Sigma": 2
}
|
Initial_Amount_Max |
float |
0 |
3.40282E+38 |
-1 |
The maximum initial amount of intervention in stock when Initial_Amount_Distribution is set to UNIFORM_DISTRIBUTION. |
{
"Initial_Amount_Distribution": "UNIFORM_DISTRIBUTION",
"Initial_Amount_Min": 2,
"Initial_Amount_Max": 7
}
|
Initial_Amount_Mean_1 |
float |
1.17549E-38 |
3.40282E+38 |
-1 |
The mean of the first exponential distribution when Initial_Amount_Distribution is set to DUAL_EXPONENTIAL_DISTRIBUTION. |
{
"Initial_Amount_Distribution": "DUAL_EXPONENTIAL_DISTRIBUTION",
"Initial_Amount_Mean_1": 4,
"Initial_Amount_Mean_2": 12,
"Initial_Amount_Proportion_1": 0.2
}
|
Initial_Amount_Mean_2 |
float |
1.17549E-38 |
3.40282E+38 |
-1 |
The mean of the second exponential distribution when Initial_Amount_Distribution is set to DUAL_EXPONENTIAL_DISTRIBUTION. |
{
"Initial_Amount_Distribution": "DUAL_EXPONENTIAL_DISTRIBUTION",
"Initial_Amount_Mean_1": 4,
"Initial_Amount_Mean_2": 12,
"Initial_Amount_Proportion_1": 0.2
}
|
Initial_Amount_Min |
float |
0 |
3.40282E+38 |
-1 |
The minimum of initial amount of intervention in stock when Initial_Amount_Distribution is set to UNIFORM_DISTRIBUTION. |
{
"Initial_Amount_Distribution": "UNIFORM_DISTRIBUTION",
"Initial_Amount_Min": 2,
"Initial_Amount_Max": 7
}
|
Initial_Amount_Peak_2_Value |
float |
0 |
3.40282E+38 |
-1 |
The initial amount in stock to assign to the remaining health workers when Initial_Amount_Distribution is set to DUAL_CONSTANT_DISTRIBUTION. |
{
"Initial_Amount_Distribution": "DUAL_CONSTANT_DISTRIBUTION",
"Initial_Amount_Proportion_0": 0.25,
"Initial_Amount_Peak_2_Value": 5
}
|
Initial_Amount_Poisson_Mean |
float |
0 |
3.40282E+38 |
-1 |
The mean of the initial amount of intervention in stock when Initial_Amount_Distribution is set to the POISSON_DISTRIBUTION. |
{
"Initial_Amount_Distribution": "POISSON_DISTRIBUTION",
"Initial_Amount_Poisson_Mean": 5
}
|
Initial_Amount_Proportion_0 |
float |
0 |
1 |
-1 |
The proportion of health workers to assign a value of zero stock when Initial_Amount_Distribution is set to DUAL_CONSTANT_DISTRIBUTION. |
{
"Initial_Amount_Distribution": "DUAL_CONSTANT_DISTRIBUTION",
"Initial_Amount_Proportion_0": 0.25,
"Initial_Amount_Peak_2_Value": 5
}
|
Initial_Amount_Proportion_1 |
float |
0 |
1 |
-1 |
The proportion of health workers in the first exponential distribution when Initial_Amount_Distribution is set to DUAL_EXPONENTIAL_DISTRIBUTION. |
{
"Initial_Amount_Distribution": "DUAL_EXPONENTIAL_DISTRIBUTION",
"Initial_Amount_Mean_1": 4,
"Initial_Amount_Mean_2": 12,
"Initial_Amount_Proportion_1": 0.2
}
|
Intervention_Config |
JSON object |
NA |
NA |
NA |
The nested JSON of the actual intervention to be distributed by this event coordinator. |
{
"Intervention_Config": {
"class": "BroadcastEvent",
"Broadcast_Event": "EventFromIntervention"
}
}
|
Max_Distributed_Per_Day |
integer |
1 |
2147480000.0 |
2147480000.0 |
The maximum number of interventions (such as vaccine doses) that can be distributed by health workers or clinics in a given day. |
{
"Max_Distributed_Per_Day": 1
}
|
Max_Stock |
integer |
0 |
2147480000.0 |
2147480000.0 |
The maximum number of interventions (such as vaccine doses) that can be stored by a health worker or clinic. If the amount of interventions in a new shipment and current stock exceeds this value, only the number of interventions specified by this value will be stored. |
{
"Max_Stock": 12
}
|
Node_Property_Restrictions |
array of JSON objects |
NA |
NA |
NA |
A list of the NodeProperty key:value pairs, as defined in the demographics file, that nodes must have to be targeted by the intervention. See NodeProperties and IndividualProperties parameters for more information. You can specify AND and OR combinations of key:value pairs with this parameter. |
The following example restricts the intervention to nodes that are urban and medium risk or rural and low risk. {
"Node_Property_Restrictions": [
{
"Place": "URBAN",
"Risk": "MED"
},
{
"Place": "RURAL",
"Risk": "LOW"
}
]
}
|
Property_Restrictions |
array of JSON objects |
NA |
NA |
NA |
A list of the IndividualProperty key:value pairs, as defined in the demographics file, that individuals must have to be targeted by this intervention. See NodeProperties and IndividualProperties 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. |
{
"Property_Restrictions": [
"Risk:HIGH"
]
}
|
Property_Restrictions_Within_Node |
array of JSON objects |
NA |
NA |
NA |
A list of the IndividualProperty key:value pairs, as defined in the demographics file, that individuals must have to be targeted by this intervention. See NodeProperties and IndividualProperties parameters for more information. This parameter allows you to specify AND and OR combinations of key:value pairs. You may specify individual property restrictions using either this parameter or Property_Restrictions, but not both. |
The following example restricts the intervention to individuals who are urban and high risk or urban and medium risk. {
"Property_Restrictions_Within_Node": [
{
"Risk": "HIGH",
"Geographic": "URBAN"
},
{
"Risk": "MEDIUM",
"Geographic": "URBAN"
}
]
}
|
Target_Age_Min |
float |
0 |
3.40282e+38 |
0 |
The lower end of ages targeted for an intervention, in years. Used when Target_Demographic is set to ExplicitAgeRanges or ExplicitAgeRangesAndGender. |
{
"Target_Age_Max": 20,
"Target_Age_Min": 10,
"Target_Demographic": "ExplicitAgeRanges"
}
|
Target_Demographic |
enum |
NA |
NA |
Everyone |
The target demographic group. Possible values are:
|
{
"Target_Age_Max": 20,
"Target_Age_Min": 10,
"Target_Demographic": "ExplicitAgeRanges"
}
|
Target_Gender |
enum |
NA |
NA |
All |
Specifies the gender restriction for the intervention. Possible values are:
|
{
"Target_Gender": "Male"
}
|
Target_Residents_Only |
boolean |
0 |
1 |
0 |
When set to true (1), the intervention is only distributed to individuals that began the simulation in the node (i.e. those that claim the node as their residence). |
{
"Target_Residents_Only": 1
}
|
Trigger_Condition_List |
array of strings |
NA |
NA |
NA |
The list of events that are of interest to the community health worker (CHW). If one of these events occurs, the individual or node is put into a queue to receive the CHW’s intervention. The CHW processes the queue when the event coordinator is updated. See Event list for possible values. |
{
"Trigger_Condition_List": [
"ListenForEvent"
]
}
|
Waiting_Period |
float |
0 |
3.40282e+38 |
3.40282e+38 |
The number of days a person or node can be in the queue waiting to get the intervention from the community health worker (CHW). If a person or node is in the queue, they will not be re-added to the queue if the event that would add them to the queue occurs. This allows them to maintain their priority, however they could be removed from the queue due to this waiting period. |
{
"Waiting_Period": 15
}
|
ImportPressure#
The ImportPressure intervention class extends the ImportCases outbreak event. Rather than importing a deterministic number of cases on a scheduled day, ImportPressure applies a set of per-day rates of importation of infected individuals, over a corresponding set of durations. ImportPressure inherits from Outbreak; the Antigen and Genome parameters are defined as they are for all Outbreak events.
Parameter |
Data type |
Minimum |
Maximum |
Default |
Description |
Example |
---|---|---|---|---|---|---|
Daily_Import_Pressures |
array of floats |
0 |
3.40282e+38 |
0 |
The rate of per-day importation for each node that the intervention is distributed to. |
{
"Intervention_Config": {
"Antigen": 0,
"Genome": 0,
"Durations": [
100,
100,
100,
100,
100,
100,
100
],
"Daily_Import_Pressures": [
0.1,
5.0,
0.2,
1.0,
2.0,
0.0,
10.0
],
"class": "ImportPressure"
}
}
|
Durations |
array of integers |
0 |
2.14748e+09 |
1 |
The durations over which to apply import pressure. |
{
"Intervention_Config": {
"Antigen": 0,
"Genome": 0,
"Durations": [
100,
100,
100,
100,
100,
100,
100
],
"Daily_Import_Pressures": [
0.1,
5.0,
0.2,
1.0,
2.0,
0.0,
10.0
],
"class": "ImportPressure"
}
}
|
Genome |
integer |
0 |
16777215 |
0 |
The genome ID (Genome) of the outbreak infection. Together with the clade ID (Clade) they are a unitary object representing a strain of infection, which allows for differentiation among infections. Values for Genome may range from -1 to 2Log2_Number_of_Genomes_per_Clade-1 |
Intervention distribution example: {
"Enable_Strain_Tracking": 1,
"Events": [
{
"Event_Coordinator_Config": {
"Demographic_Coverage": 0.001,
"Intervention_Config": {
"Clade": 1,
"Genome": 3,
"IgnoreImmunity": 1,
"class": "OutbreakIndividual"
},
"Target_Demographic": "Everyone",
"class": "StandardInterventionDistributionEventCoordinator"
},
"Event_Name": "OutbreakIndividual",
"Nodeset_Config": {
"class": "NodeSetAll"
},
"Start_Day": 30,
"class": "CampaignEvent"
}
]
}
|
Import_Age |
float |
0 |
43800 |
365 |
The age (in days) of infected import cases. |
{
"Import_Age": 10000
}
|
Incubation_Period_Override |
integer |
-1 |
2147480000.0 |
-1 |
The incubation period, in days, that infected individuals will go through before becoming infectious. This value overrides the incubation period set in the configuration file. Set to -1 to honor the configuration parameter settings. |
{
"Incubation_Period_Override": 0
}
|
Number_Cases_Per_Node |
integer |
0 |
2.14748e+09 |
1 |
The number of new cases of Outbreak to import (per node). Note This will increase the population and there is no control over demographics of these individuals. |
{
"Intervention_Config": {
"Antigen": 0,
"Genome": 0,
"Outbreak_Source": "ImportCases",
"Number_Cases_Per_Node": 10,
"class": "Outbreak"
}
}
|
IndividualImmunityChanger#
The IndividualImmunityChanger intervention class acts essentially as a MultiEffectVaccine, with the exception of how the behavior is implemented. Rather than attaching a persistent vaccine intervention object to an individual’s intervention list (as a campaign-individual-multieffectboostervaccine does), the IndividualImmunityChanger directly alters the immune modifiers of the individual’s susceptibility object and is then immediately disposed of. Any immune waning is not governed by Waning effect classes, as MultiEffectVaccine is, but rather by the immunity waning parameters in the configuration file.
Parameter |
Data type |
Minimum |
Maximum |
Default |
Description |
Example |
---|---|---|---|---|---|---|
Boost_Acquire |
float |
0 |
1 |
0 |
Specifies the boosting effect on acquisition immunity for naive individuals (without natural or vaccine-derived immunity) for a multi-effect booster vaccine. This does not replace current immunity, it builds multiplicatively on top of it. |
{
"Boost_Acquire": 0.7
}
|
Boost_Mortality |
float |
0 |
1 |
0 |
Specifies the boosting effect on mortality immunity for naive individuals (without natural or vaccine-derived immunity) for a multi-effect booster vaccine. This does not replace current immunity, it builds multiplicatively on top of it. |
{
"Boost_Mortality": 1.0
}
|
Boost_Threshold_Acquire |
float |
0 |
1 |
0 |
Specifies how much acquisition immunity is required before the vaccine changes from a prime to a boost. |
{
"Boost_Threshold_Acquire": 0.0
}
|
Boost_Threshold_Mortality |
float |
0 |
1 |
0 |
Specifies how much mortality immunity is required before the vaccine changes from a prime to a boost. |
{
"Boost_Threshold_Mortality": 0.0
}
|
Boost_Threshold_Transmit |
float |
0 |
1 |
0 |
Specifies how much transmission immunity is required before the vaccine changes from a prime to a boost. |
{
"Boost_Threshold_Transmit": 0.0
}
|
Boost_Transmit |
float |
0 |
1 |
0 |
Specifies the boosting effect on transmission immunity for naive individuals (without natural or vaccine-derived immunity) for a multi-effect booster vaccine. This does not replace current immunity, it builds multiplicatively on top of it. |
{
"Boost_Transmit": 0.5
}
|
Cost_To_Consumer |
float |
0 |
999999 |
10 |
The unit cost per vaccine (unamortized). |
{
"Cost_To_Consumer": 10.0
}
|
Prime_Acquire |
float |
0 |
1 |
0 |
Specifies the priming effect on acquisition immunity for naive individuals (without natural or vaccine-derived immunity) for a multi-effect booster vaccine. |
{
"Prime_Acquire": 0.1
}
|
Prime_Mortality |
float |
0 |
1 |
0 |
Specifies the priming effect on mortality immunity for naive individuals (without natural or vaccine-derived immunity) for a multi-effect booster vaccine. |
{
"Prime_Mortality": 0.3
}
|
Prime_Transmit |
float |
0 |
1 |
0 |
Specifies the priming effect on transmission immunity for naive individuals (without natural or vaccine-derived immunity) for a multi-effect booster vaccine. |
{
"Prime_Transmit": 0.2
}
|
MultiEffectBoosterVaccine#
The MultiEffectBoosterVaccine intervention class is derived from MultiEffectVaccine and preserves many of the same parameters. Upon distribution and successful take, the vaccine’s effect in each immunity compartment (acquisition, transmission, and mortality) is determined by the recipient’s immune state. If the recipient’s immunity modifier in the corresponding compartment is above a user-specified threshold, then the vaccine’s initial effect will be equal to the corresponding priming parameter. If the recipient’s immune modifier is below this threshold, then the vaccine’s initial effect will be equal to the corresponding boost parameter. After distribution, the effect wanes, just like a MultiEffectVaccine. The behavior is intended to mimic biological priming and boosting.
Parameter |
Data type |
Minimum |
Maximum |
Default |
Description |
Example |
---|---|---|---|---|---|---|
Acquire_Config |
JSON object |
NA |
NA |
NA |
The configuration for multi-effect vaccine acquisition. Specify how this effect decays over time using one of the Waning effect classes. |
{
"Acquire_Config": {
"Initial_Effect": 0.9,
"Decay_Time_Constant": 2525,
"class": "WaningEffectExponential"
}
}
|
Boost_Acquire |
float |
0 |
1 |
0 |
Specifies the boosting effect on acquisition immunity for naive individuals (without natural or vaccine-derived immunity) for a multi-effect booster vaccine. This does not replace current immunity, it builds multiplicatively on top of it. |
{
"Boost_Acquire": 0.7
}
|
Boost_Mortality |
float |
0 |
1 |
0 |
Specifies the boosting effect on mortality immunity for naive individuals (without natural or vaccine-derived immunity) for a multi-effect booster vaccine. This does not replace current immunity, it builds multiplicatively on top of it. |
{
"Boost_Mortality": 1.0
}
|
Boost_Threshold_Acquire |
float |
0 |
1 |
0 |
Specifies how much acquisition immunity is required before the vaccine changes from a prime to a boost. |
{
"Boost_Threshold_Acquire": 0.0
}
|
Boost_Threshold_Mortality |
float |
0 |
1 |
0 |
Specifies how much mortality immunity is required before the vaccine changes from a prime to a boost. |
{
"Boost_Threshold_Mortality": 0.0
}
|
Boost_Threshold_Transmit |
float |
0 |
1 |
0 |
Specifies how much transmission immunity is required before the vaccine changes from a prime to a boost. |
{
"Boost_Threshold_Transmit": 0.0
}
|
Boost_Transmit |
float |
0 |
1 |
0 |
Specifies the boosting effect on transmission immunity for naive individuals (without natural or vaccine-derived immunity) for a multi-effect booster vaccine. This does not replace current immunity, it builds multiplicatively on top of it. |
{
"Boost_Transmit": 0.5
}
|
Cost_To_Consumer |
float |
0 |
999999 |
10 |
The unit cost per vaccine (unamortized). |
{
"Cost_To_Consumer": 10.0
}
|
Disqualifying_Properties |
array of strings |
NA |
NA |
[] |
A list of IndividualProperty key:value pairs that cause an intervention to be aborted (persistent interventions will stop being distributed to individuals with these values). See NodeProperties and IndividualProperties parameters for more information. Generally used to control the flow of health care access. For example, to prevent the same individual from accessing health care via two different routes at the same time. |
{
"Disqualifying_Properties": [
"InterventionStatus:LostForever"
]
}
|
Dont_Allow_Duplicates |
boolean |
0 |
1 |
0 |
If an individual’s container has an intervention, set to true (1) to prevent them from receiving another copy of the intervention. Supported by all intervention classes. |
{
"Dont_Allow_Duplicates": 0
}
|
Intervention_Name |
string |
NA |
NA |
NA |
The optional name used to refer to this intervention as a means to differentiate it from others that use the same class. |
{
"Intervention_Config": {
"class": "MultiEffectBoosterVaccine",
"Intervention_Name": "Tetanus booster shot"
}
}
|
Mortality_Config |
JSON object |
NA |
NA |
NA |
The configuration for multi-effect vaccine mortality. Specify how this effect decays over time using one of the Waning effect classes. |
{
"Mortality_Config": {
"Initial_Effect": 1.0,
"Decay_Time_Constant": 2525,
"class": "WaningEffectExponential"
}
}
|
New_Property_Value |
string |
NA |
NA |
NA |
An optional IndividualProperty key:value pair that will be assigned when the intervention is distributed. See NodeProperties and IndividualProperties parameters for more information. Generally used to indicate the broad category of health care cascade to which an intervention belongs to prevent individuals from accessing care through multiple pathways. For example, if an individual must already be taking a particular medication to be prescribed a new one. |
{
"New_Property_Value": "InterventionStatus:None"
}
|
Prime_Acquire |
float |
0 |
1 |
0 |
Specifies the priming effect on acquisition immunity for naive individuals (without natural or vaccine-derived immunity) for a multi-effect booster vaccine. |
{
"Prime_Acquire": 0.1
}
|
Prime_Mortality |
float |
0 |
1 |
0 |
Specifies the priming effect on mortality immunity for naive individuals (without natural or vaccine-derived immunity) for a multi-effect booster vaccine. |
{
"Prime_Mortality": 0.3
}
|
Prime_Transmit |
float |
0 |
1 |
0 |
Specifies the priming effect on transmission immunity for naive individuals (without natural or vaccine-derived immunity) for a multi-effect booster vaccine. |
{
"Prime_Transmit": 0.2
}
|
Transmit_Config |
JSON object |
NA |
NA |
NA |
The configuration for multi-effect vaccine transmission. Specify how this effect decays over time using one of the Waning effect classes. |
{
"Transmit_Config": {
"Initial_Effect": 0.6,
"Decay_Time_Constant": 2525,
"class": "WaningEffectExponential"
}
}
|
Vaccine_Take |
float |
0 |
1 |
1 |
The rate at which delivered vaccines will successfully stimulate an immune response and achieve the desired efficacy. For example, if it is set to 0.9, there will be a 90 percent chance that the vaccine will start with the specified efficacy, and a 10 percent chance that it will have no efficacy at all. |
{
"Intervention_Config": {
"class": "SimpleVaccine",
"Cost_To_Consumer": 10,
"Vaccine_Type": "AcquisitionBlocking",
"Vaccine_Take": 1,
"Efficacy_Is_Multiplicative": 0,
"Waning_Config": {
"class": "WaningEffectConstant",
"Initial_Effect": 0.3
}
}
}
|
NodePropertyValueChanger#
The NodePropertyValueChanger intervention class sets a given node property to a new value. You can also define a duration in days before the node property reverts back to its original value, the probability that a node will change its node property to the target value, and the number of days over which nodes will attempt to change their individual properties to the target value. This node-level intervention functions in a similar manner as the individual-level intervention, PropertyValueChanger.
Parameter |
Data type |
Minimum |
Maximum |
Default |
Description |
Example |
---|---|---|---|---|---|---|
Daily_Probability |
float |
0 |
1 |
1 |
The daily probability that a node will move to the Target_Property_Value. |
{
"Intervention_Config": {
"class": "PropertyValueChanger",
"Disqualifying_Properties": [],
"New_Property_Value": "",
"Target_Property_Key": "Risk",
"Target_Property_Value": "LOW",
"Daily_Probability": 1.0,
"Maximum_Duration": 0,
"Revert": 0
}
}
|
Disqualifying_Properties |
array of strings |
NA |
NA |
[] |
A list of NodeProperty key:value pairs that cause an intervention to be aborted (persistent interventions will stop being distributed to nodes with these values). See NodeProperties and IndividualProperties parameters for more information. Generally used to control the flow of health care access. For example, to prevent the same individual from accessing health care via two different routes at the same time. |
{
"Disqualifying_Properties": [
"InterventionStatus:LostForever"
]
}
|
Intervention_Name |
string |
NA |
NA |
NA |
The optional name used to refer to this intervention as a means to differentiate it from others that use the same class. |
{
"Intervention_Name": "Diagnostic_Sample"
}
|
Maximum_Duration |
float |
-1 |
3.40E+38 |
3.40E+38 |
The maximum amount of time nodes have to update the property value. This timing works in conjunction with Daily_Probability. |
{
"Intervention_Config": {
"class": "PropertyValueChanger",
"Disqualifying_Properties": [],
"New_Property_Value": "",
"Target_Property_Key": "Risk",
"Target_Property_Value": "LOW",
"Daily_Probability": 1.0,
"Maximum_Duration": 0,
"Revert": 0
}
}
|
New_Property_Value |
string |
NA |
NA |
NA |
An optional NodeProperty key:value pair that will be assigned when the intervention is distributed. See NodeProperties and IndividualProperties parameters for more information. Generally used to indicate the broad category of health care cascade to which an intervention belongs to prevent individuals from accessing care through multiple pathways. For example, if an individual must already be taking a particular medication to be prescribed a new one. |
{
"New_Property_Value": "InterventionStatus:None"
}
|
Revert |
float |
0 |
10000 |
0 |
The number of days before an individual moves back to their original group. |
{
"Intervention_Config": {
"class": "PropertyValueChanger",
"Disqualifying_Properties": [],
"New_Property_Value": "",
"Target_Property_Key": "Risk",
"Target_Property_Value": "LOW",
"Daily_Probability": 1.0,
"Maximum_Duration": 0,
"Revert": 0
}
}
|
Target_NP_Key_Value |
string |
NA |
NA |
NA |
The NodeProperty key:value pair, as defined in the demographics file, to assign to the node. |
{
"Target_NP_Key_Value": "InterventionStatus:NONE"
}
|
SimpleBoosterVaccine#
The SimpleBoosterVaccine intervention class is derived from SimpleVaccine and preserves many of the same parameters. The behavior is much like SimpleVaccine, except that upon distribution and successful take, the vaccine’s effect is determined by the recipient’s immune state. If the recipient’s immunity modifier in the corresponding channel (acquisition, transmission, or mortality) is above a user-specified threshold, then the vaccine’s initial effect will be equal to the corresponding priming parameter. If the recipient’s immune modifier is below this threshold, then the vaccine’s initial effect will be equal to the corresponding boosting parameter. After distribution, the effect wanes, just like SimpleVaccine. In essence, this intervention provides a SimpleVaccine intervention with one effect to all naive (below- threshold) individuals, and another effect to all primed (above-threshold) individuals; this behavior is intended to mimic biological priming and boosting.
Parameter |
Data type |
Minimum |
Maximum |
Default |
Description |
Example |
---|---|---|---|---|---|---|
Boost_Effect |
float |
0 |
1 |
1 |
Specifies the boosting effect on [acquisition/transmission/mortality] immunity for previously exposed individuals (either natural or vaccine-derived). This does not replace current immunity, it builds multiplicatively on top of it. |
{
"Intervention_Config": {
"Cost_To_Consumer": 10.0,
"Vaccine_Take": 1,
"Vaccine_Type": "MortalityBlocking",
"Prime_Effect": 0.25,
"Boost_Effect": 0.45,
"Boost_Threshold": 0.0,
"Waning_Config": {
"Box_Duration": 10,
"Initial_Effect": 1,
"class": "WaningEffectBox"
},
"class": "SimpleBoosterVaccine"
}
}
|
Boost_Threshold |
float |
0 |
1 |
0 |
Specifies how much immunity is required before the vaccine changes from a priming effect to a boosting effect. |
{
"Intervention_Config": {
"Cost_To_Consumer": 10.0,
"Vaccine_Take": 1,
"Vaccine_Type": "MortalityBlocking",
"Prime_Effect": 0.25,
"Boost_Effect": 0.45,
"Boost_Threshold": 0.0,
"Waning_Config": {
"Box_Duration": 10,
"Initial_Effect": 1,
"class": "WaningEffectBox"
},
"class": "SimpleBoosterVaccine"
}
}
|
Cost_To_Consumer |
float |
0 |
999999 |
10 |
The unit cost per vaccine (unamortized). |
{
"Cost_To_Consumer": 10.0
}
|
Disqualifying_Properties |
array of strings |
NA |
NA |
[] |
A list of IndividualProperty key:value pairs that cause an intervention to be aborted (persistent interventions will stop being distributed to individuals with these values). See NodeProperties and IndividualProperties parameters for more information. Generally used to control the flow of health care access. For example, to prevent the same individual from accessing health care via two different routes at the same time. |
{
"Disqualifying_Properties": [
"InterventionStatus:LostForever"
]
}
|
Dont_Allow_Duplicates |
boolean |
0 |
1 |
0 |
If an individual’s container has an intervention, set to true (1) to prevent them from receiving another copy of the intervention. Supported by all intervention classes. |
{
"Dont_Allow_Duplicates": 0
}
|
Efficacy_Is_Multiplicative |
boolean |
0 |
1 |
1 |
The overall vaccine efficacy when individuals receive more than one vaccine. When set to true (1), the vaccine efficacies are multiplied together; when set to false (0), the efficacies are additive. |
{
"Intervention_Config": {
"class": "SimpleVaccine",
"Cost_To_Consumer": 10,
"Vaccine_Type": "AcquisitionBlocking",
"Vaccine_Take": 1,
"Efficacy_Is_Multiplicative": 0,
"Waning_Config": {
"class": "WaningEffectConstant",
"Initial_Effect": 0.3
}
}
}
|
Intervention_Name |
string |
NA |
NA |
NA |
The optional name used to refer to this intervention as a means to differentiate it from others that use the same class. |
{
"Intervention_Config": {
"class": "SimpleBoosterVaccine",
"Intervention_Name": "Tetanus booster shot"
}
}
|
New_Property_Value |
string |
NA |
NA |
NA |
An optional IndividualProperty key:value pair that will be assigned when the intervention is distributed. See NodeProperties and IndividualProperties parameters for more information. Generally used to indicate the broad category of health care cascade to which an intervention belongs to prevent individuals from accessing care through multiple pathways. For example, if an individual must already be taking a particular medication to be prescribed a new one. |
{
"New_Property_Value": "InterventionStatus:None"
}
|
Prime_Effect |
float |
0 |
1 |
1 |
Specifies the priming effect on [acquisition/transmission/mortality] immunity for naive individuals (without natural or vaccine-derived immunity). |
{
"Intervention_Config": {
"Cost_To_Consumer": 10.0,
"Vaccine_Take": 1,
"Vaccine_Type": "MortalityBlocking",
"Prime_Effect": 0.25,
"Boost_Effect": 0.45,
"Boost_Threshold": 0.0,
"Waning_Config": {
"Box_Duration": 10,
"Initial_Effect": 1,
"class": "WaningEffectBox"
},
"class": "SimpleBoosterVaccine"
}
}
|
Vaccine_Take |
float |
0 |
1 |
1 |
The rate at which delivered vaccines will successfully stimulate an immune response and achieve the desired efficacy. For example, if it is set to 0.9, there will be a 90 percent chance that the vaccine will start with the specified efficacy, and a 10 percent chance that it will have no efficacy at all. |
{
"Intervention_Config": {
"class": "SimpleVaccine",
"Cost_To_Consumer": 10,
"Vaccine_Type": "AcquisitionBlocking",
"Vaccine_Take": 1,
"Efficacy_Is_Multiplicative": 0,
"Waning_Config": {
"class": "WaningEffectConstant",
"Initial_Effect": 0.3
}
}
}
|
Vaccine_Type |
enum |
NA |
NA |
Generic |
The type of vaccine to distribute in a vaccine intervention. Possible values are:
|
{
"Intervention_Config": {
"class": "SimpleVaccine",
"Cost_To_Consumer": 10,
"Vaccine_Type": "AcquisitionBlocking",
"Vaccine_Take": 1,
"Efficacy_Is_Multiplicative": 0,
"Waning_Config": {
"class": "WaningEffectConstant",
"Initial_Effect": 0.3
}
}
}
|
Waning_Config |
JSON object |
NA |
NA |
NA |
The configuration of how the intervention efficacy wanes over time. Specify how this effect decays over time using one of the Waning effect classes. |
{
"Waning_Config": {
"Box_Duration": 3650,
"Initial_Effect": 1,
"class": "WaningEffectBox"
}
}
|