Introduction
Simulating hypothetical scenarios is a very useful way to analyse and predict the behaviour of complex phenomena such as the spread of COVID-19 through a network of individuals. An infectious disease outbreak is heavily influenced by factors pertaining to both the disease (like the transmissibility of the disease, or how it is affected by vaccines), and the network on which it spreads (such as the age structure, population density, network contacts, and geography). These factors can be responsible for heterogeneity in the size and severity of outbreaks in different locations that might otherwise appear similar.
For this reason the results from models developed for other countries may not be able to achieve the desirable level of predictive ability. Such models might not account for factors pertinent to India – its unique demographics, the state (or absence) of health care, stratified social structures, and complex ecological gradients. The inputs for such factors must be collated from multiple sources, including imperfect and poorly usable government data, which requires both local knowledge and considerable experience in data analysis and interpretation. The result is a pressing need for an epidemic modelling framework tailored to Indian needs, with potential applications beyond its immediate use for COVID-19 modelling.
Given these design requirements, building and implementing detailed agent-based models is an unsurprisingly daunting task. A useful model should ideally predict impending potential surges in healthcare requirements, allowing for timely resource allocation. It should also allow the modeler to compare the merits and consequences of different non-pharmaceutical interventions at different stages of the epidemic. As a specific example, a useful model might help the modeler untangle how asymptomatic infections play a role in the spread of the disease.
BharatSim has been developed with 3 goals in mind:
Flexibility: Since it is a social simulation framework, a researcher can develop models for a variety of disciplines including epidemiology, economics, climate science.
Scalability: It can keep track of millions of agents in an efficient manner.
Customisation: It has been developed to suit India’s needs, via its support for synthetic population.
BharatSim has been designed keeping these design requirements and challenges of the Indian context in mind. BharatSim’s vision is to build an India scale agent-based framework that would enable modellers from different disciplines – ranging from epidemiology, disaster management, and economics – to advise policy makers and decision makers across institutions.
Synthetic Population
A synthetic population is a simplified individual-level representation of the actual population. This means that while every person is represented individually in it, not all of their attributes are included (for example, hair colour or shoe-size are deemed to be irrelevant for modelling epidemic spread, and are thus ignored, while the presence of comorbidities like diabetes would be included). As such, a synthetic population does not aim to be identical to the actual population, but instead attempts to match its various statistical distributions and correlations, thereby being sufficiently close to the true population to be used in modelling.
In the table below, you can see an example of a section of a synthetic population. Each row represents an individual with a unique ID, as well as certain attributes. These attributes could be related to the individual themselves (like their gender, age, and height and so on), or their network (details pertaining to their homes, workplaces, and possibly schools). Additionally, the population could also contain information regarding the individual’s comorbidities (for example, whether they have diabetes or other preexisting conditions), if this is deemed relevant to the modelling exercise.
Agent_ID |
SexLabel |
Age |
Height |
Weight |
JobLabel |
StateLabel |
District |
AdminUnitName |
AdminUnitLatitude |
AdminUnitLongitude |
HHID |
H_Lat |
H_Lon |
WorkPlaceID |
W_Lat |
W_Lon |
school_id |
school_lat |
school_long |
public_place_id |
public_place_lat |
public_place_long |
essential_worker |
Adherence_to_Intervention |
M_High_BP |
M_Diabetes |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
99802077568 |
Female |
76 |
147.37 |
49.05 |
Construction |
Maharashtra |
Pune |
Mohammadwadi-Kausar Baug |
18.47477 |
73.89257 |
99801684702 |
18.46709 |
73.90603 |
2001000003467 |
18.4679 |
73.89859 |
0 |
3001000000062 |
18.45035 |
73.87068 |
0 |
1 |
0 |
0 |
||
99801380107 |
Male |
37 |
162.03 |
57.94 |
Ag labour |
Maharashtra |
Pune |
Nagpur Chawl-Phule Nagar |
18.55893 |
73.87609 |
99801248473 |
18.55952 |
73.87877 |
2001000006630 |
18.58283 |
73.91661 |
0 |
3001000001044 |
18.52699 |
73.83451 |
1 |
0 |
0 |
0 |
||
99802408169 |
Male |
6 |
111.21 |
23.13 |
Student |
Maharashtra |
Pune |
Kharadi-Chandan Nagar |
18.56355 |
73.93256 |
99800525921 |
18.54846 |
73.94971 |
0 |
2001000002070 |
18.55683 |
73.94757 |
3001000000274 |
18.54904 |
73.9491 |
0 |
1 |
0 |
0 |
||
99800402683 |
Female |
37 |
152.65 |
52.61 |
Ag labour |
Maharashtra |
Pune |
Karve Nagar |
18.49149 |
73.82173 |
99800473441 |
18.48539 |
73.82129 |
2001000006876 |
18.53875 |
73.92594 |
0 |
3001000000650 |
18.48382 |
73.79731 |
1 |
0 |
0 |
0 |
||
99800824202 |
Female |
35 |
150.92 |
52.42 |
Homebound |
Maharashtra |
Pune |
Deccan Gymkhana-Model Colony |
18.51845 |
73.83391 |
99800895513 |
18.52335 |
73.85339 |
0 |
0 |
3001000000236 |
18.54026 |
73.91186 |
0 |
0 |
0 |
0 |
||||
99801178045 |
Female |
50 |
151.51 |
50.1 |
Ag labour |
Maharashtra |
Pune |
Shanivar Peth-Sadashiv Peth |
18.51944 |
73.85194 |
99801142021 |
18.51388 |
73.84935 |
2001000000636 |
18.50785 |
73.84921 |
0 |
3001000001403 |
18.51024 |
73.84731 |
0 |
0.9 |
0 |
0 |
||
99802883562 |
Female |
14 |
139.25 |
37.81 |
Student |
Maharashtra |
Pune |
Viman Nagar-Somnath Nagar |
18.55818 |
73.92165 |
99801268501 |
18.57398 |
73.9285 |
0 |
2001000000159 |
18.52152 |
73.92834 |
3001000000633 |
18.56121 |
73.93799 |
0 |
0.8 |
0 |
0 |
||
99800390824 |
Male |
19 |
157.71 |
50.84 |
Plantation lab |
Maharashtra |
Pune |
Salisbury Park-Maharshi Nagar |
18.49162 |
73.8661 |
99800461238 |
18.49814 |
73.87331 |
2001000011846 |
18.49934 |
73.8511 |
0 |
3001000000528 |
18.46247 |
73.85122 |
0 |
0.4 |
0 |
0 |
||
99800144374 |
Female |
50 |
152.6 |
50.58 |
Homebound |
Maharashtra |
Pune |
Dhanakvadi-Ambegaon Pathar |
18.45878 |
73.84264 |
99800193269 |
18.46661 |
73.8561 |
0 |
0 |
3001000001414 |
18.46532 |
73.89147 |
0 |
0.9 |
0 |
0 |
||||
99800944765 |
Female |
45 |
151.99 |
50.99 |
Homebound |
Maharashtra |
Pune |
Kharadi-Chandan Nagar |
18.56355 |
73.93256 |
99800978186 |
18.54808 |
73.94093 |
0 |
0 |
3001000001402 |
18.5684 |
73.82062 |
0 |
0.9 |
0 |
0 |
All of these attributes are strongly correlated with each other and a good synthetic population will ideally be able reproduce the correlations that occur in the real world. However, this is a monumental task; real world data is complex, and often contains many artifacts that need to be addressed.