ComMit is a dynamic community-based mitigation strategy for early stages of pandemics where epidemiological knowledge of the disease is limited and no vaccination is available. The strategy is featured by the following characteristics:
- It is agnostic to the dynamics of the spread.
- It does not require prior knowledge of the contact network.
- It works within a limited budget.
- It enforces bursts of short-term restriction on small communities instead of long-term isolation of healthy individuals.
ComMit relies on updated data from test-trace reports and its strategy evolves over time. It has been tested on several real-world social networks and results show that, within a small budget, ComMit can reduce the peak of infection by 73% and shorten the duration of infection by 90% even for spreads that would reach a steady state of non-zero infections otherwise (e.g., SIS contagion model).
This repository contains the Python implementation for ComMit and the scripts for reproducing our experiments.
This repository is organized into three main directories:
src
: Contains the source code of the project.data
: Contains the data files used in the project.result
: Contains the result files generated by the project.
The repository is written in Python.
config.py
: Contains configuration details for the project.contagion_model.py
: Defines the contagion models used in the project.mitigation_strategy.py
: Defines the mitigation strategy proposed in the paper.run.py
: Main script to run the project.run_NI.py
,run_WI.py
,run_WT.py
: Variants of the main script tailored to different scenarios.test_strategy.py
: Script to test the mitigation strategy.utils.py
: Contains utility functions used across the project.
Data files are stored in pickled format and include:
albany.pkl
copenhagen.pkl
ithaca.pkl
rochester.pkl
syracuse.pkl
Results from running the scripts are stored in this directory and include:
NI_SIS_None_None
WI_SIS_epsilon_greedy_1hopiso
WI_SIS_epsilon_greedy_comiso
WI_SIS_epsilon_greedy_commit
WI_SIS_epsilon_greedy_degiso
WI_SIS_epsilon_greedy_random
To get started with running the scripts, you would need to:
- Clone the repository.
- Ensure you have the necessary Python packages installed (i.e., numpy, matplotlib, and networkx).
- Run the
run.py
script for a full project execution. For more tailored scenarios, use the appropriate run variant script.
Please refer to the comments in the individual scripts for a detailed understanding of their workings.
This project is licensed under the terms of the MIT license.