-
Notifications
You must be signed in to change notification settings - Fork 0
04. Disease Interactions
MIGHTI supports structured interactions between health conditions, allowing the presence of one condition to influence the acquisition risk of another. These interactions are defined explicitly and implemented using Starsim's connector architecture.
MIGHTI currently supports susceptibility-based interactions, where the presence of one condition increases the likelihood of acquiring another. Two main types are modeled:
-
HIV → Health Conditions (HCs)
HIV increases susceptibility to several conditions, such as tuberculosis and cervical cancer. These interactions are defined using relative susceptibility (rel_sus) values in the parameter file. -
HC → HC
Examples include:- Obesity increasing the risk of type 2 diabetes
- Depression increasing the risk of alcohol use disorder
These non-HIV interactions are handled via a general-purpose interaction matrix.
HC-HC interactions are specified using a square (
| has_condition | Type2Diabetes | Hypertension | AlcoholUseDisorder |
|---|---|---|---|
| Obesity | 7.37 | 1.87 | |
| MajorDepressiveDisorder | 1.37 | 1.42 | 1.6 |
- The entry
7.37under Type2Diabetes in the Obesity row indicates that obesity increases the risk of type 2 diabetes by a factor of 7.37. - Blank entries imply no specified interaction.
HIV-related susceptibility is often stored separately in the main disease parameter file (e.g., eswatini_parameters.csv) as a rel_sus column. For example, if HIV increases the risk of cardiovascular disease by a factor of 2.1:
condition,rel_sus
CardiovascularDiseases,2.1Interactions are implemented using Starsim's connector system:
-
NCDHIVConnectorhandles susceptibility modifiers for people living with HIV. -
DiseaseInteractionConnectorprocesses all other health condition–to–health condition interactions based on the matrix.
HC-HC interactions are dynamically created as:
interaction_df = pd.read_csv("mighti/data/rel_sus.csv", index_col=0)
connectors = mi.create_connectors(interaction_df)HIV-HC interactions can be passed via:
hiv_risks = df.set_index("condition")["rel_sus"].to_dict()
ncd_hiv_connector = mi.NCDHIVConnector(hiv_risks)
connectors = [ncd_hiv_connector]Add the connectors to your simulation configuration:
sim = ss.Sim(connectors=connectors, ...)