What’s new¶
This topic describes new functionality and breaking changes for recently released versions of Epidemiological MODeling software (EMOD).
Contents
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 malaria simulation type, the following new configuration parameters are available:
Parameter |
Data type |
Minimum |
Maximum |
Default |
Description |
Example |
---|---|---|---|---|---|---|
Genome_Markers |
array of strings |
NA |
NA |
NA |
A list of the names (strings) of genome marker(s) that represent the genetic components in a strain of an infection. |
{
"Genome_Markers": [
"D6",
"W2"
]
}
|
Resistance |
JSON object |
NA |
NA |
NA |
Specifies the drug resistance multiplier. |
{
"parameters": {
"Genome_Markers": [
"A",
"B"
],
"Malaria_Drug_Params": {
"Artemether_Lumefantrine": {
"Bodyweight_Exponent": 0,
"Drug_Cmax": 1000,
"Drug_Decay_T1": 1,
"Drug_Decay_T2": 1,
"Drug_Dose_Interval": 1,
"Drug_Fulltreatment_Doses": 3,
"Drug_Gametocyte02_Killrate": 2.3,
"Drug_Gametocyte34_Killrate": 2.3,
"Drug_GametocyteM_Killrate": 0,
"Drug_Hepatocyte_Killrate": 0,
"Drug_PKPD_C50": 100,
"Drug_Vd": 10,
"Max_Drug_IRBC_Kill": 3.45
"Resistance": {
"A": {
"Max_IRBC_Kill_Modifier": 0.05,
"PKPD_C50_Modifier": 1.0
},
"B": {
"Max_IRBC_Kill_Modifier": 0.25,
"PKPD_C50_Modifier": 1.0
}
}
}
}
}
}
|
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_To_Broadcast. |
{
"Threshold_Type" : "COUNT",
"Action_List" :
[
{
"Threshold" : 20,
"Event_To_Broadcast" : "Action_Event_1"
},
{
"Threshold" : 30,
"Event_To_Broadcast" : "Action_Event_2"
}
]
}
|
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"
}
]
}
|
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 the threshold type and 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: ** Threshold_Type ** ** Action_List ** ** Threshold ** ** Event_To_Broadcast ** |
{
"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: * COUNT, * PERCENTAGE. |
{
"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 |
string |
NA |
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"
]
}
|
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"
}
|
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"
}
|
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 |
NA |
NA |
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 |
NA |
NA |
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
}
]
}
|
The following campaign classes are new for the Malaria model:
AdherentDrug (malaria)¶
The AdherentDrug class extends AntiMalarialDrug class and allows for incorporating different patterns of adherence to taking the drug.
Parameter |
Data type |
Minimum |
Maximum |
Default |
Description |
Example |
---|---|---|---|---|---|---|
Adherence_Config |
array of JSON objects |
NA |
NA |
NA |
A list of nested JSON objects for the interventions to be distributed by this event coordinator. |
{
"Adherence_Config" : {
"class": "WaningEffectMapCount",
"Initial_Effect" : 1.0,
"Durability_Map" :
{
"Times" : [ 1.0, 2.0, 3.0, 4.0 ],
"Values" : [ 0.1, 0.1, 0.1, 0.1 ]
}
}
}
|
Cost_To_Consumer |
float |
0 |
99999 |
1 |
The unit cost per drug (unamortized). |
{
"Cost_To_Consumer": 10
}
|
Disqualifying_Properties |
string |
NA |
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 |
NA |
NA |
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
}
|
Dosing_Type |
enum |
NA |
NA |
SingleDose |
The type of anti-malarial dosing to distribute in a drug intervention. Possible values are:
|
{
"Intervention_Config": {
"Cost_To_Consumer": 3.75,
"Dosing_Type": "FullTreatmentWhenSymptom",
"Drug_Type": "Chloroquine",
"class": "AntimalarialDrug"
}
}
|
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"
}
|
Max_Dose_Consideration_Duration |
float |
1.0/24.0 (1hr) |
3.40E+03 |
3.40E+03 |
The maximum number of days that an individual will consider taking the doses of the drug. |
{
"class": "AdherentDrug",
"Cost_To_Consumer": 1,
"Drug_Type": "TestDrug",
"Dosing_Type": "FullTreatmentCourse",
"Adherence_Config" : {
"class": "WaningEffectMapCount",
"Initial_Effect" : 1.0,
"Durability_Map" : {
"Times" : [ 1.0, 2.0, 3.0 ],
"Values" : [ 1.0, 0.0, 1.0 ]
}
},
"Non_Adherence_Options" : [ "NEXT_DOSAGE_TIME" ],
"Non_Adherence_Distribution" : [ 1.0 ],
"Max_Dose_Consideration_Duration" : 4,
"Took_Dose_Event" : "NewClinicalCase"
}
|
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"
}
|
Non_Adherence_Distribution |
array of floats |
0 |
1 |
0 |
The non adherence probability value(s) assigned to the corresponding options in Non_Adherence_Options. The sum of non adherence distribution values must equal a total of 1. |
{
"Non_Adherence_Distribution": [0.7, 0.3]
}
|
Non_Adherence_Options |
array of strings |
NA |
NA |
NEXT_UPDATE |
Defines the action the person takes if they do not take a particular dose, are not adherent. |
{
"AD_Non_Adherence_Options": [
"NEXT_DOSAGE_TIME",
"NEXT_UPDATE"
]
}
|
Took_Dose_Event |
string |
NA |
NA |
NoTrigger |
The event that triggers the drug intervention campaign. The events contained in the list can be built-in events (see Event list for possible events). |
{
"class": "AdherentDrug",
"Cost_To_Consumer": 1,
"Drug_Type": "TestDrug",
"Dosing_Type": "FullTreatmentCourse",
"Adherence_Config" : {
"class": "WaningEffectMapCount",
"Initial_Effect" : 1.0,
"Durability_Map" : {
"Times" : [ 1.0, 2.0, 3.0 ],
"Values" : [ 1.0, 0.0, 1.0 ]
}
},
"Non_Adherence_Options" : [ "NEXT_DOSAGE_TIME" ],
"Non_Adherence_Distribution" : [ 1.0 ],
"Max_Dose_Consideration_Duration" : 4,
"Took_Dose_Event" : "NewClinicalCase"
}
|
BitingRisk (malaria, vector)¶
The BitingRisk class is used with individual-level interventions and allows for adjusting the relative risk of being bitten by a vector.
Parameter |
Data type |
Minimum |
Maximum |
Default |
Description |
Example |
---|---|---|---|---|---|---|
Constant |
float |
0 |
3.40E+03 |
6 |
When Risk_Distribution_Type is set to FIXED_DURATION, this will specify the time delay (in number of days). |
{
"Intervention_Config": {
"class": "BitingRisk",
"Risk_Distribution_Type" : "FIXED_DURATION",
"Constant" : 0.1
}
}
|
Disqualifying_Properties |
string |
NA |
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 |
NA |
NA |
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
}
|
Exponential_Mean |
float |
0 |
3.40E+03 |
6 |
When Risk_Distribution_Type is set to EXPONENTIAL_DURATION, the Exponential_Mean parameter represents the exponential rate that describes the distribution of the time delay (in units of 1/days). |
{
"Risk_Distribution_Type": "EXPONENTIAL_DURATION",
"Exponential_Mean": 10
}
|
Gaussian_Mean |
float |
0 |
3.40E+03 |
6 |
When Risk_Distribution_Type is set to GAUSSIAN_DURATION, the Gaussian_Mean parameter defines the mean deviation of the Gaussian distribution for the active period. Negative values are truncated at zero. |
{
"Risk_Distribution_Type": "GAUSSIAN_DURATION",
"Gaussian_Mean": 25,
"Gaussian_Std_Dev": 5
}
|
Gaussian_Std_Dev |
float |
0 |
3.40E+03 |
1 |
When Risk_Distribution_Type is set to GAUSSIAN_DURATION, the Gaussian_Std_Dev parameter defines the standard deviation of the Gaussian distribution for the active period. Negative values are truncated at zero. |
{
"Risk_Distribution_Type": "GAUSSIAN_DURATION",
"Gaussian_Mean": 25,
"Gaussian_Std_Dev": 5
}
|
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"
}
|
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"
}
|
Risk_Distribution_Type |
enum |
NA |
NA |
NOT_INITIALIZED |
The distribution of the time delay from when the biting risk intervention is distributed to when the individual actually receives the intervention. Possible values are:
|
{
"Risk_Distribution_Type": "GAUSSIAN_DURATION",
"Gaussian_Mean": 25,
"Gaussian_Std_Dev": 5
}
|
Uniform_Max |
float |
0 |
3.40E+03 |
1 |
The maximum time delay (in number of days) when Risk_Distribution_Type is set to UNIFORM_DURATION. |
{
"BR_Risk_Distribution_Type": "UNIFORM_DURATION",
"BR_Uniform_Min": 1,
"BR_Uniform_Max": 30
}
|
Uniform_Min |
float |
0 |
3.40E+03 |
0 |
The minimum time delay (in number of days) when Risk_Distribution_Type is set to UNIFORM_DURATION. |
{
"BR_Risk_Distribution_Type": "UNIFORM_DURATION",
"BR_Uniform_Min": 1,
"BR_Uniform_Max": 30
}
|
OutbreakIndividualMalaria (malaria)¶
The OutbreakIndividualMalaria class extends OutbreakIndividual class and allows for specifying a specific strain of infection.
Parameter |
Data type |
Minimum |
Maximum |
Default |
Description |
Example |
---|---|---|---|---|---|---|
Antigen |
integer |
0 |
10 |
0 |
The antigenic ID of the outbreak infection. |
{
"Intervention_Config": {
"Antigen": 0,
"Genome": 0,
"Outbreak_Source": "PrevalenceIncrease",
"class": "OutbreakIndividual"
}
}
|
Create_Random_Genome |
boolean |
NA |
NA |
0 |
If set to true (1), then a random genome is created for the infection and the Genome_Markers parameter is not used. If set to false (0), then you must define the Genome_Markers parameter which allows you to then specify genetic components in a strain of infection. |
{
"OIM_Create_Random_Genome": 1
}
|
Genome_Markers |
array of strings |
NA |
NA |
NA |
A list of the names of genome marker(s) that represent the genetic components in a strain of an infection. |
{
"Intervention_Config": {
"class": "OutbreakIndividualMalaria",
"Antigen": 0,
"Genome_Markers": [ "D6", "W2" ]
}
}
|
Ignore_Immunity |
boolean |
NA |
NA |
1 |
Individuals will be force-infected (with a specific strain) regardless of actual immunity level when set to true (1). |
{
"Intervention_Config": {
"Antigen": 0,
"Genome": 0,
"class": "OutbreakIndividual",
"Ignore_Immunity": 0
}
}
|
Incubation_Period_Override |
integer |
-1 |
2.15E+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
}
|
The following campaign class is new for the TBHIV model:
TBHIVConfigurableTBdrug (tuberculosis)¶
The TBHIVConfigurableTBdrug class is an individual level intervention for TB treatment. The intervention applies TB drug effects to the progression, associated mortality, transmission and acquisition of TB infections in HIV positive and negative individuals.
Parameter |
Data type |
Minimum |
Maximum |
Default |
Description |
Example |
---|---|---|---|---|---|---|
Active_Multiplier |
array of floats |
0 |
1 |
1 |
Multiplier of clearance/inactivation if active TB on drug treatment. Relapse, mortality, and resistance apply only to active. |
{
"Active_Multiplier": 1
}
|
Cost_To_Consumer |
float |
0 |
99999 |
1 |
The unit cost per drug (unamortized). |
{
"Cost_To_Consumer": 10
}
|
Disqualifying_Properties |
string |
NA |
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 |
NA |
NA |
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
}
|
Dose_Interval |
float |
0 |
99999 |
1 |
The interval between doses, in days. |
{
"Dose_Interval": 1
}
|
Drug_Cmax |
float |
0 |
10000 |
1 |
The maximum drug concentration that can be used, and is in the same units as Drug_PKPD_C50. Since drug concentrations and C50 values are often specified with different unit systems, these two parameters have been designed to be flexible provided that the units are the same for each. This parameter is used when Durability_Profile is set to CONCENTRATION_VERSUS_TIME. |
{
"Durability_Profile": "CONCENTRATION_VERSUS_TIME",
"Drug_Cmax": 200,
"Drug_PKPD_C50": 6,
"Drug_Vd": 1
}
|
Drug_PKPD_C50 |
float |
0 |
10000 |
1 |
The concentration at which drug killing rates are half of the maximum. Must use the same units as Drug_Cmax. This parameter is used when Durability_Profile is set to CONCENTRATION_VERSUS_TIME. |
{
"Durability_Profile": "CONCENTRATION_VERSUS_TIME",
"Drug_Cmax": 200,
"Drug_PKPD_C50": 6,
"Drug_Vd": 1
}
|
Drug_Vd |
float |
0 |
10000 |
1 |
The volume of drug distribution. This value is the ratio of the volume of the second compartment to the volume of the first compartment in a two-compartment model, and is dimensionless. This parameter is used when Durability_Profile is set to CONCENTRATION_VERSUS_TIME. |
{
"Durability_Profile": "CONCENTRATION_VERSUS_TIME",
"Drug_Cmax": 200,
"Drug_PKPD_C50": 6,
"Drug_Vd": 1
}
|
Durability_Profile |
enum |
NA |
NA |
FIXED_DURATION_CONSTANT_EFFECT |
The profile of durability decay. Possible values are:
|
{
"Durability_Profile": "CONCENTRATION_VERSUS_TIME",
"Drug_Cmax": 200,
"Drug_PKPD_C50": 6,
"Drug_Vd": 1
}
|
Fraction_Defaulters |
float |
0 |
1 |
0 |
The fraction of individuals who will not finish their drug treatment. |
{
"Fraction_Defaulters": 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_Name":"Diagnostic_Sample"
}
|
Latency_Multiplier |
array of floats |
0 |
1 |
1 |
Multiplier of clearance/inactivation if latent TB on drug treatment for the TB drug cure rate parameters (TB_Drug_Cure_Rate, TB_Drug_Cure_Rate_MDR, TB_Drug_Cure_Rate_HIV ) and the TB drug inactivation rate parameters (TB_Drug_Inactivation_Rate, TB_Drug_Inactivation_Rate_MDR, TB_Drug_Inactivation_Rate_HIV). |
{
"Latency_Multiplier": 1
}
|
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"
}
|
Primary_Decay_Time_Constant |
float |
0 |
1.00E+00 |
0 |
The primary decay time constant (in days) of the decay profile. |
{
"Primary_Decay_Time_Constant": 180
}
|
Remaining_Doses |
integer |
0 |
999999 |
0 |
The remaining doses in an intervention; enter a negative number for unlimited doses. |
{
"Remaining_Doses": 1
}
|
Secondary_Decay_Time_Constant |
float |
0 |
999999 |
1 |
The secondary decay time constant of the durability profile. This parameter is used when Durability_Profile is set to CONCENTRATION_VERSUS_TIME. |
{
"Durability_Profile": "CONCENTRATION_VERSUS_TIME",
"Secondary_Decay_Time_Constant": 730
}
|
TB_Reduced_Acquire |
array of floats |
0 |
1 |
0 |
Proportion reduction in acquisition of new TB infection under drug treatment. Only relevant when TB_Enable_Exogenous is enabled to allow exogenous re-infection. |
{
"TBHIV_Drug_Params": {
"ACFDOTS": {
"TB_Drug_Cure_Rate": 0.25,
"TB_Drug_Inactivation_Rate": 1e-09,
"TB_Drug_Inactivation_Rate_HIV": 1e-09,
"TB_Drug_Inactivation_Rate_MDR": 1e-09,
"TB_Drug_Mortality_Rate": 1e-09,
"TB_Drug_Mortality_Rate_HIV": 1e-09,
"TB_Drug_Mortality_Rate_MDR": 1e-09,
"TB_Drug_Primary_Decay_Time_Constant": 179,
"TB_Drug_Relapse_Rate": 1e-09,
"TB_Drug_Relapse_Rate_HIV": 1e-09,
"TB_Drug_Relapse_Rate_MDR": 1e-09,
"TB_Drug_Resistance_Rate": 1e-09,
"TB_Drug_Resistance_Rate_HIV": 1e-09,
"TB_Reduced_Acquire": 1,
"TB_Reduced_Transmit": 1,
"TB_Drug_Cure_Rate_HIV": 0,
"TB_Drug_Cure_Rate_MDR": 0
}
}
}
|
TB_Reduced_Transmit |
array of floats |
0 |
1 |
0 |
Proportion reduction in TB transmission under drug treatment. The value scales the Base_Infectivity parameter. |
{
"TBHIV_Drug_Params": {
"ACFDOTS": {
"TB_Drug_Cure_Rate": 0.25,
"TB_Drug_Inactivation_Rate": 1e-09,
"TB_Drug_Inactivation_Rate_HIV": 1e-09,
"TB_Drug_Inactivation_Rate_MDR": 1e-09,
"TB_Drug_Mortality_Rate": 1e-09,
"TB_Drug_Mortality_Rate_HIV": 1e-09,
"TB_Drug_Mortality_Rate_MDR": 1e-09,
"TB_Drug_Primary_Decay_Time_Constant": 179,
"TB_Drug_Relapse_Rate": 1e-09,
"TB_Drug_Relapse_Rate_HIV": 1e-09,
"TB_Drug_Relapse_Rate_MDR": 1e-09,
"TB_Drug_Resistance_Rate": 1e-09,
"TB_Drug_Resistance_Rate_HIV": 1e-09,
"TB_Reduced_Acquire": 1,
"TB_Reduced_Transmit": 1,
"TB_Drug_Cure_Rate_HIV": 0,
"TB_Drug_Cure_Rate_MDR": 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 supports the following simulation types for modeling a variety of diseases:
Generic disease (GENERIC_SIM)
Vector-borne diseases (VECTOR_SIM)
Malaria (MALARIA_SIM)
Tuberculosis with HIV coinfection (TBHIV_SIM)
Sexually transmitted infections (STI_SIM)
HIV (HIV_SIM)
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 malaria 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"
}
|
Cycle_Arrhenius_1 |
float |
0 |
1.00E+15 |
4.09E+10 |
The Arrhenius equation, \(a_1^{-a_2/T}\), with T in degrees Kelvin, parameterizes the mosquito feeding cycle rate. This duration is a decreasing function of temperature. The variable a1 is a temperature-independent scale factor on feeding rate. Temperature_Dependent_Feeding_Cycle must be set to ARRHENIUS_DEPENDENCE. |
{
"Temperature_Dependent_Feeding_Cycle": "ARRHENIUS_DEPENDENCE",
"Vector_Species_Params": {
"arabiensis": {
"Cycle_Arrhenius_1": 99,
"Cycle_Arrhenius_2": 88
}
}
}
|
Cycle_Arrhenius_2 |
float |
0 |
1.00E+15 |
7740 |
The Arrhenius equation, \(a_1^{-a_2/T}\), with T in degrees Kelvin, parameterizes the mosquito feeding cycle rate. This duration is a decreasing function of temperature. The variable a2 is a temperature-independent scale factor on feeding rate. Temperature_Dependent_Feeding_Cycle must be set to ARRHENIUS_DEPENDENCE. |
{
"Temperature_Dependent_Feeding_Cycle": "ARRHENIUS_DEPENDENCE",
"Vector_Species_Params": {
"arabiensis": {
"Cycle_Arrhenius_1": 99,
"Cycle_Arrhenius_2": 88
}
}
}
|
Cycle_Arrhenius_Reduction_Factor |
float |
0 |
1 |
1 |
The scale factor applied to cycle duration (from oviposition to oviposition) to reduce the duration when primary follicles are at stage II rather than I in the case of newly emerged females. Temperature_Dependent_Feeding_Cycle must be set to ARRHENIUS_DEPENDENCE. |
{
"Temperature_Dependent_Feeding_Cycle": "ARRHENIUS_DEPENDENCE",
"Vector_Species_Params": {
"funestus": {
"Cycle_Arrhenius_Reduction_Factor": 0.44
}
}
}
|
Drought_Egg_Hatch_Delay |
float |
0 |
1 |
0.33 |
Proportion of regular egg hatching that still occurs when habitat dries up. Enable_Drought_Egg_Hatch_Delay must be set to 1. |
{
"Enable_Drought_Egg_Hatch_Delay": 1,
"Drought_Egg_Hatch_Delay": 0.33
}
|
Egg_Arrhenius1 |
float |
0 |
1.00E+10 |
6.16E+07 |
The Arrhenius equation, math:a_1^{-a_2/T}, with T in degrees Kelvin, parameterizes the daily rate of mosquito egg hatching. This duration is a decreasing function of temperature. The variable a1 is a temperature-independent scale factor on hatching rate. Enable_Temperature_Dependent_Egg_Hatching must be set to 1. |
{
"Enable_Temperature_Dependent_Egg_Hatching": 1,
"Egg_Arrhenius1": 61599956,
"Egg_Arrhenius2": 5754
}
|
Egg_Arrhenius2 |
float |
0 |
1.00E+10 |
5754.03 |
The Arrhenius equation, \(a_1^{-a_2/T}\), with T in degrees Kelvin, parameterizes the daily rate of mosquito egg hatching. This duration is a decreasing function of temperature. The variable a2 is a temperature-dependent scale factor on hatching rate. Enable_Temperature_Dependent_Egg_Hatching must be set to 1. |
{
"Enable_Temperature_Dependent_Egg_Hatching": 1,
"Egg_Arrhenius1": 61599956,
"Egg_Arrhenius2": 5754
}
|
Egg_Hatch_Density_Dependence |
enum |
NA |
NA |
NO_DENSITY_DEPENDENCE |
The effect of larval density on egg hatching rate. Possible values are:
|
{
"Egg_Hatch_Density_Dependence": "NO_DENSITY_DEPENDENCE"
}
|
Enable_Drought_Egg_Hatch_Delay |
boolean |
0 |
1 |
0 |
Controls whether or not eggs hatch at delayed rates, set by Drought_Egg_Hatch_Delay, when the habitat dries up completely. |
{
"Enable_Drought_Egg_Hatch_Delay": 1,
"Drought_Egg_Hatch_Delay": 0.33
}
|
Enable_Egg_Mortality |
boolean |
0 |
1 |
0 |
Controls whether or not to include a daily mortality rate on the egg population, which is independent of climatic factors. |
{
"Enable_Egg_Mortality": 1,
}
|
Enable_Temperature_Dependent_Egg_Hatching |
boolean |
0 |
1 |
0 |
Controls whether or not temperature has an effect on egg hatching, defined by Egg_Arrhenius_1 and Egg_Arrhenius_2. |
{
"Enable_Temperature_Dependent_Egg_Hatching": 1,
"Egg_Arrhenius1": 61599956.864,
"Egg_Arrhenius2": 5754.033
}
|
Enable_Vector_Aging |
boolean |
0 |
1 |
0 |
Controls whether or not vectors undergo senescence as they age. |
{
"Enable_Vector_Aging": 1
}
|
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
}
|
Nighttime_Feeding_Fraction |
float |
0 |
1 |
1 |
The fraction of feeds on humans (for a specific mosquito species) that occur during the nighttime. Thus the fraction of feeds on humans that occur during the day equals 1 - (value of this parameter). |
{
"Vector_Species_Params": {
"arabiensis": {
"Acquire_Modifier": 0.2,
"Adult_Life_Expectancy": 10,
"Anthropophily": 0.95,
"Aquatic_Arrhenius_1": 84200000000,
"Aquatic_Arrhenius_2": 8328,
"Aquatic_Mortality_Rate": 0.1,
"Cycle_Arrhenius_1": 0,
"Cycle_Arrhenius_2": 0,
"Cycle_Arrhenius_Reduction_Factor": 0,
"Days_Between_Feeds": 3,
"Egg_Batch_Size": 100,
"Immature_Duration": 4,
"Indoor_Feeding_Fraction": 0.5,
"Infected_Arrhenius_1": 117000000000,
"Infected_Arrhenius_2": 8336,
"Infected_Egg_Batch_Factor": 0.8,
"Infectious_Human_Feed_Mortality_Factor": 1.5,
"Larval_Habitat_Types": {
"TEMPORARY_RAINFALL": 11250000000
},
"Nighttime_Feeding_Fraction": 1,
"Transmission_Rate": 0.5
}
}
}
|
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"
}
|
Temperature_Dependent_Feeding_Cycle |
enum |
NA |
NA |
NO_TEMPERATURE_DEPENDENCE |
The effect of temperature on the duration between blood feeds. Possible values are:
|
{
"Temperature_Dependent_Feeding_Cycle": "BOUNDED_DEPENDENCE"
}
|
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 |
2.15E+0 |
2.15E+09 |
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.40E+3 |
3.40E+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.40E+3 |
3.40E+38 |
The number of days for an event coordinator to be active before it expires. |
{
"Duration": 65
}
|
Initial_Amount |
float |
0 |
3.40E+3 |
6 |
The initial amount of stock 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. |
{
"Initial_Amount": 10
}
|
Initial_Amount_Distribution_Type |
enum |
NA |
NA |
NOT_INITIALIZED |
The distribution type to set when initializing Initial_Amount. Possible values are:
|
{
"Initial_Amount_Distribution_Type": "FIXED_DURATION"
}
|
Initial_Amount_Max |
float |
0 |
3.40E+3 |
0 |
The maximum amount of initial stock when Initial_Amount_Distribution_Type is set to UNIFORM_DISTRIBUTION. |
{
"Initial_Amount_Distribution_Type": "UNIFORM_DURATION",
"Initial_Amount_Min": 5,
"Initial_Amount_Max": 10
}
|
Initial_Amount_Mean |
float |
0 |
3.40E+3 |
6 |
The average amount of initial stock when Initial_Amount_Distribution_Type is set to GAUSSIAN_DISTRIBUTION. |
{
"Initial_Amount_Distribution_Type": "GAUSSIAN_DISTRIBUTION",
"Initial_Amount_Std_Dev": 1,
"Initial_Amount_Mean": 5
}
|
Initial_Amount_Min |
float |
0 |
3.40E+3 |
0 |
The minimum amount of initial stock when Initial_Amount_Distribution_Type is set to UNIFORM_DISTRIBUTION. |
{
"Initial_Amount_Distribution_Type": "UNIFORM_DURATION",
"Initial_Amount_Min": 5,
"Initial_Amount_Max": 10
}
|
Initial_Amount_Std_Dev |
float |
0 |
3.40E+3 |
1 |
The standard deviation for the amount of initial stock when Initial_Amount_Distribution_Type is set to GAUSSIAN_DISTRIBUTION. |
{
"Initial_Amount_Distribution_Type": "GAUSSIAN_DISTRIBUTION",
"Initial_Amount_Std_Dev": 1,
"Initial_Amount_Mean": 5
}
|
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 |
2.15E+0 |
2.15E+09 |
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 |
2.15E+0 |
2.15E+09 |
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. 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"
}
]
}
|
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. 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.40E+3 |
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 |
NA |
NA |
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 |
NoTrigger |
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.40E+3 |
3.40E+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 |
---|---|---|---|---|---|---|
Antigen |
integer |
0 |
10 |
0 |
The antigenic ID of the outbreak infection. |
{
"Intervention_Config": {
"Antigen": 0,
"Genome": 0,
"Outbreak_Source": "PrevalenceIncrease",
"class": "OutbreakIndividual"
}
}
|
Daily_Import_Pressures |
array of floats |
0 |
3.40E+3 |
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.15E+0 |
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 |
-2.15E+0 |
2.15E+0 |
0 |
The genetic ID of the outbreak infection. |
{
"Intervention_Config": {
"Antigen": 0,
"Genome": 0,
"Outbreak_Source": "PrevalenceIncrease",
"class": "OutbreakIndividual",
"Incubation_Period_Override": 0
}
}
|
Import_Age |
float |
0 |
43800 |
365 |
The age (in days) of infected import cases. |
{
"Import_Age": 10000
}
|
Incubation_Period_Override |
integer |
-1 |
2.15E+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.15E+0 |
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 |
string |
NA |
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 |
NA |
NA |
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_Name":"Diagnostic_Sample"
}
|
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 probability that an individual 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 |
string |
NA |
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"
]
}
|
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+3 |
3.40E+38 |
The maximum amount of time individuals have to move to a new group. 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 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"
}
|
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 |
string |
NA |
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 |
NA |
NA |
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 |
NA |
NA |
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_Name":"Diagnostic_Sample"
}
|
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"
}
}
|
UsageDependentBednet (malaria)¶
The UsageDependentBednet intervention class is similar to SimpleBednet, as it distributes insecticide-treated nets to individuals in the simulation. However, bednet ownership and bednet usage are distinct in this intervention. As in SimpleBednet, net ownership is configured through the demographic coverage, and the blocking and killing rates of mosquitoes are time-dependent. Use of bednets is age-dependent and can vary seasonally. Once a net has been distributed to someone, the net usage is determined by the product of the seasonal and age-dependent usage probabilities until the net-retention counter runs out, and the net is discarded.
Parameter
Data type
Minimum
Maximum
Default
Description
Example
Blocking_Config
JSON object
NA
NA
NA
Configures the rate of blocking for indoor mosquito feeds on individuals with an ITN. Specify how this effect decays over time using one of the Waning effect classes.
{ "Blocking_Config": { "Box_Duration": 3650, "Initial_Effect": 0, "class": "WaningEffectBox" } }Cost_To_Consumer
float
0
999999
3.75
The unit cost per bednet (unamortized)
{ "Cost_To_Consumer": 4.5 }Discard_Event
enum
NA
NA
NoTrigger
The event that is broadcast when an individual discards their bed net, either by replacing an existing net or due to the expiration timer. See Event list for possible values.
{ "Received_Event": "Bednet_Got_New_One", "Using_Event": "Bednet_Using", "Discard_Event": "Bednet_Discarded", "Expiration_Distribution_Type": "FIXED_DURATION", "Expiration_Period": 50 }Disqualifying_Properties
string
NA
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
NA
NA
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 }Expiration_Distribution_Type
enum
NA
NA
NOT_INITIALIZED
The type of distribution to use when calculating the time to discard a bed net. Possible values are:
- NOT_INITIALIZED
No distribution set.
- FIXED_DURATION
A constant duration.
- UNIFORM_DURATION
A uniform random draw for the duration.
- GAUSSIAN_DURATION
Duration of the active period is defined by the mean and standard deviation of the Gaussian distribution. Negative values are truncated at zero.
- EXPONENTIAL_DURATION
The active period is the mean of the exponential random draw.
- POISSON_DURATION
The active period is the mean of the random Poisson draw.
- LOG_NORMAL_DURATION
The active period is a log normal distribution defined by a mean and log width.
- BIMODAL_DURATION
The distribution is bimodal, the duration is a fraction of the active period for a specified period of time and equal to the active period otherwise.
- PIECEWISE_CONSTANT
The distribution is specified with a list of years and a matching list of values. The duration at a given year is that specified for the nearest previous year.
- PIECEWISE_LINEAR
The distribution is specified with a list of years and matching list of values. The duration at a given year is a linear interpolation of the specified values.
- WEIBULL_DURATION
The duration is a Weibull distribution with a given scale and shape.
- DUAL_TIMESCALE_DURATION
The duration is two exponential distributions with given means.
{ "Received_Event": "Bednet_Got_New_One", "Using_Event": "Bednet_Using", "Discard_Event": "Bednet_Discarded", "Expiration_Distribution_Type": "FIXED_DURATION", "Expiration_Period": 50 }Expiration_Percentage_Period_1
float
0
1
0.5
The percentage of draws where the first time-scale is used. Expiration_Distribution_Type must be set to DUAL_TIMESCALE_DURATION.
{ "Expiration_Distribution_Type": "DUAL_TIMESCALE_DURATION", "Expiration_Period_1": 150, "Expiration_Period_2": 50, "Expiration_Percentage_Period_1": 0.9 }Expiration_Period
float
0
3.40E+3
6.00E+00
The distribution period for when a bed net expires. Expiration_Distribution_Type must be set to FIXED_DURATION or EXPONENTIAL_DURATION.
{ "Expiration_Distribution_Type": "FIXED_DURATION", "Expiration_Period": 50 }Expiration_Period_1
float
0
3.40E+3
6
The decay length of the first time-scale, when Expiration_Distribution_Type is set to DUAL_TIMESCALE_DURATION.
{ "Expiration_Distribution_Type": "DUAL_TIMESCALE_DURATION", "Expiration_Period_1": 150, "Expiration_Period_2": 50, "Expiration_Percentage_Period_1": 0.9 }Expiration_Period_2
float
0
3.40E+3
6
The decay length of the second time-scale, when Expiration_Distribution_Type is set to DUAL_TIMESCALE_DURATION.
{ "Expiration_Distribution_Type": "DUAL_TIMESCALE_DURATION", "Expiration_Period_1": 150, "Expiration_Period_2": 50, "Expiration_Percentage_Period_1": 0.9 }Expiration_Period_Max
float
0
3.40E+3
0
The maximum duration of use for a bed net when Expiration_Distribution_Type is set to UNIFORM_DURATION.
{ "Expiration_Distribution_Type": "UNIFORM_DURATION", "Expiration_Period_Max": 50, "Expiration_Period_Min": 20 }Expiration_Period_Mean
float
0
3.40E+3
6
The mean of the duration of use for a bed net when Expiration_Distribution_Type is set to GAUSSIAN_DURATION.
{ "Expiration_Distribution_Type": "GAUSSIAN_DURATION", "Expiration_Period_Mean": 10, "Expiration_Period_Std_Dev": 1 }Expiration_Period_Min
float
0
3.40E+3
0
The minimum duration of use for a bed net when Expiration_Distribution_Type is set to UNIFORM_DURATION.
{ "Expiration_Distribution_Type": "UNIFORM_DURATION", "Expiration_Period_Max": 50, "Expiration_Period_Min": 20 }Expiration_Period_Std_Dev
float
0
3.40E+3
1
The standard deviation for the duration of use for a bed net when Expiration_Distribution_Type is set to GAUSSIAN_DURATION.
{ "Expiration_Distribution_Type": "GAUSSIAN_DURATION", "Expiration_Period_Mean": 10, "Expiration_Period_Std_Dev": 1 }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" }Killing_Config
JSON object
NA
NA
NA
The configuration of the rate at which mosquitoes die, conditional on a successfully blocked feed. Specify how this effect decays over time using one of the Waning effect classes.
{ "Killing_Config": { "Box_Duration": 3650, "Initial_Effect": 0.53429, "class": "WaningEffectBox" } }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" }Received_Event
enum
NA
NA
NoTrigger
This parameter broadcasts when a new net is received, either the first net or a replacement net. See Event list for possible values.
{ "Received_Event": "Bednet_Got_New_One", "Using_Event": "Bednet_Using", "Discard_Event": "Bednet_Discarded" }Usage_Config_List
array of JSON objects
NA
NA
NA
The list of WaningEffects whose effects are multiplied together to get the usage effect. Specify how this effect decays over time using one of the Waning effect classes.
{ "Usage_Config_List": [{ "class": "WaningEffectConstant", "Initial_Effect": 1.0 }] }Using_Event
enum
NA
NA
NoTrigger
This parameter broadcasts each time step in which a bed net is used. See Event list for possible values.
{ "Received_Event": "Bednet_Got_New_One", "Using_Event": "Bednet_Using", "Discard_Event": "Bednet_Discarded" }
EMOD v2.10¶
The EMOD v2.10 release includes new and updated malaria configuration, demographic, and intervention parameters. With this release, EMOD now uses Visual Studio 2015, Boost 1.61.0, and SCons 2.5.0.
EMOD software upgrades¶
- Microsoft Visual Studio
EMOD now uses Visual Studio 2015, and Visual Studio 2012 is no longer supported. The Visual Studio solution file in the EMOD source, EradicationKernel, has been updated for Visual Studio 2015. If you have custom reporter EMODules (DLLS) that were built using Visual Studio 2012, you will need to rebuild them with Visual Studio 2015; otherwise, your simulation will crash when it attempts to load the DLLs built by Visual Studio 2012.
- Boost
EMOD now supports using Boost 1.61.0. If you continue to use Boost 1.51.0, you will get the following warning, “Unknown compiler version - please run the configure tests and report the results.”
- Environment variables
To make it easier to use Boost and Python with Visual Studio, IDM paths have been created. These two paths, IDM_BOOST_PATH and IDM_PYTHON_PATH, need to be added to your environment variables by using either the setx command from a command line or the Windows System Properties panel.
- SCons
EMOD was tested using SCons 2.5.0, as it supports Visual Studio 2015. If you do not add the new IDM environment variables for Boost and Python, you will need to modify the Boost and Python paths in the SConstruct file in the EMOD root directory.
- Python
EMOD was tested with Python 2.7.11 and 2.7.12. If you are building the EMOD executable (Eradication.exe) and have an earlier version of Python (for example, 2.7.2), you will see the following warning message on some files, “c:python27includepymath.h(22): warning C4273: ‘round’: inconsistent dll linkage.” Upgrade to Python 2.7.11 or 2.7.12 to get rid of the warning message.
For more information, see EMOD source code installation.
Malaria model¶
Several habitat parameters in the malaria model have been upgraded, creating more flexibility in the model and enabling the user to have more control over habitat customization. These changes allow the model to more accurately capture real-world habitat availability and how it affects different mosquito species.
- LINEAR_SPLINE habitat type
This new option under Larval_Habitat_Types increases model customization by allowing the user to specify an arbitrary functional form (derived from data) for larval habitat availability throughout the year, instead of relying on climatological parameters such as rainfall or temperature. For more information, see Larval habitat parameters.
- LarvalHabitatMultiplier by species
This new feature in demographics allows larval habitat availability to be modified independently for each species sharing a particular habitat type. Prior versions of EMOD applied the same modifier to all species within a shared habitat; this upgrade enables you to apply modifiers to individual species within a habitat. For more information, see NodeAttributes parameters.
- ScaleLarvalHabitat by species
This new intervention enables species-specific effects of habitat interventions within shared habitat types, such that habitat availability is modified on a per-species level.
- Breaking changes
PIECEWISE_MONTHLY has been changed to LINEAR_SPLINE.