forked from ama-yash/SimulatorX
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcovid_19_selectors.py
44 lines (31 loc) · 1.18 KB
/
covid_19_selectors.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import random
from selector.selector import infection_rate, recovery_rate
def get_beta(nodeA, nodeB, G, dataframe):
return infection_rate(nodeA, nodeB, G, dataframe)
def get_rec(node, G):
return recovery_rate(node, G)
def infect(a_nodes, G, dataframe):
for n in a_nodes:
neighbors = list(G.neighbors(n))
if len(neighbors) > 0:
for neighbor in neighbors:
if G.nodes[n]["status"] == "S":
if random.uniform(0, 1) < (
get_beta(n, neighbor, G, dataframe) - 0.08
):
G.nodes[n]["status"] = "I"
def sis_recover(a_nodes, G):
for n in a_nodes:
if G.nodes[n]["status"] == "I":
if random.uniform(0, 1) < get_rec(n, G):
G.nodes[n]["status"] = "S"
def si_recover(a_nodes, G):
for n in a_nodes:
if G.nodes[n]["status"] == "I":
if random.uniform(0, 1) < get_rec(n, G):
G.nodes[n]["status"] = "S"
def sir_recover(a_nodes, G):
for n in a_nodes:
if G.nodes[n]["status"] == "I":
if random.uniform(0, 1) < get_rec(n, G):
G.nodes[n]["status"] = "R"