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.pklcopenhagen.pklithaca.pklrochester.pklsyracuse.pkl
Results from running the scripts are stored in this directory and include:
NI_SIS_None_NoneWI_SIS_epsilon_greedy_1hopisoWI_SIS_epsilon_greedy_comisoWI_SIS_epsilon_greedy_commitWI_SIS_epsilon_greedy_degisoWI_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.pyscript 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.