Skip to content

Commit b864f5b

Browse files
committed
Zhong updated
Changed from 3 to 7 steps for the recovered state.
1 parent 8efa714 commit b864f5b

File tree

5 files changed

+63
-57
lines changed

5 files changed

+63
-57
lines changed

epidemic_zhong_et_al/generator/model_generator.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
i = 1
1818
states = ["sus_0"]
1919
neighbors = ["(1,0)", "(0,-1)", "(0,1)", "(-1,0)"]
20+
steps_per_state = list(map(str, [args.incubation_steps, args.infected_steps, args.latent_steps, args.recovered_steps]))
2021

2122
while i <= args.incubation_steps:
2223
states.append("inc_%d" % i)
@@ -42,7 +43,7 @@
4243
content = f.read()
4344

4445
content = content.replace("[[internal_vars]]", " ".join(["i_%s" % s for s in states]))
45-
content = content.replace("[[internal_vars_values]]", " ".join(["1.0"] + ["0.0"] * (len(states)-1)))
46+
content = content.replace("[[internal_vars_values]]", " ".join(steps_per_state + ["1.0"] + ["0.0"] * (len(states)-1)))
4647
update_ports_str = " ".join(["~%s := $i_%s;" % (s, s) for s in states])
4748
content = content.replace("[[initial_ports_set_up]]", update_ports_str)
4849
content = content.replace("[[update_ports_step]]", update_ports_str)

epidemic_zhong_et_al/generator/template_sirs_zhong_ma

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ initialvalue : -1
1717
localtransition : sirs-zhong-rule
1818

1919
statevariables: population area p connection contact_rate cured_rate t_i t_p t_l t_r [[internal_vars]]
20-
statevalues: 100 1 100 1 0.2 0.0 2 2 2 3 [[internal_vars_values]]
20+
statevalues: 100 1 100 1 0.2 0.0 [[internal_vars_values]]
2121
initialvariablesvalue: sirs_zhong.var
2222

2323
neighborports : initial pop [[ports]]

epidemic_zhong_et_al/sirs_zhong.ma

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,28 +9,31 @@ height : 50
99
delay : transport
1010
defaultDelayTime : 1
1111
border : wrapped
12-
neighbors : area(-1,0)
12+
neighbors : area(-1,0)
1313
neighbors : area(0,-1) area(0,0) area(0,1)
14-
neighbors : area(1,0)
14+
neighbors : area(1,0)
1515
initialvalue : -1
1616

17-
1817
localtransition : sirs-zhong-rule
1918

20-
statevariables: population area p connection contact_rate cured_rate t_i t_p t_l t_r i_sus_0 i_inc_1 i_inc_2 i_inf_3 i_inf_4 i_lat_5 i_lat_6 i_rec_7 i_rec_8 i_rec_9
21-
statevalues: 100 1 100 1 0.2 0.0 2 2 2 3 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
19+
statevariables: population area p connection contact_rate cured_rate t_i t_p t_l t_r i_sus_0 i_inc_1 i_inc_2 i_inf_3 i_inf_4 i_lat_5 i_lat_6 i_rec_7 i_rec_8 i_rec_9 i_rec_10 i_rec_11 i_rec_12 i_rec_13
20+
statevalues: 100 1 100 1 0.2 0.0 2 2 2 7 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
2221
initialvariablesvalue: sirs_zhong.var
2322

24-
neighborports : initial sus_0 inc_1 inc_2 inf_3 inf_4 lat_5 lat_6 rec_7 rec_8 rec_9 pop
23+
neighborports : initial pop sus_0 inc_1 inc_2 inf_3 inf_4 lat_5 lat_6 rec_7 rec_8 rec_9 rec_10 rec_11 rec_12 rec_13
2524

2625
[sirs-zhong-rule]
27-
rule : {~initial := 0; ~pop := $population; ~sus_0 := $i_sus_0; ~inc_1 := $i_inc_1; ~inc_2 := $i_inc_2; ~inf_3 := $i_inf_3; ~inf_4 := $i_inf_4; ~lat_5 := $i_lat_5; ~lat_6 := $i_lat_6; ~rec_7 := $i_rec_7; ~rec_8 := $i_rec_8; ~rec_9 := $i_rec_9;}
26+
rule : {~initial := 0; ~pop := $population; ~sus_0 := $i_sus_0; ~inc_1 := $i_inc_1; ~inc_2 := $i_inc_2; ~inf_3 := $i_inf_3; ~inf_4 := $i_inf_4; ~lat_5 := $i_lat_5; ~lat_6 := $i_lat_6; ~rec_7 := $i_rec_7; ~rec_8 := $i_rec_8; ~rec_9 := $i_rec_9; ~rec_10 := $i_rec_10; ~rec_11 := $i_rec_11; ~rec_12 := $i_rec_12; ~rec_13 := $i_rec_13;}
2827
1 {(0,0)~initial = -1}
2928

3029
rule : {
31-
~pop := $population; ~sus_0 := $i_sus_0; ~inc_1 := $i_inc_1; ~inc_2 := $i_inc_2; ~inf_3 := $i_inf_3; ~inf_4 := $i_inf_4; ~lat_5 := $i_lat_5; ~lat_6 := $i_lat_6; ~rec_7 := $i_rec_7; ~rec_8 := $i_rec_8; ~rec_9 := $i_rec_9;
30+
~pop := $population; ~sus_0 := $i_sus_0; ~inc_1 := $i_inc_1; ~inc_2 := $i_inc_2; ~inf_3 := $i_inf_3; ~inf_4 := $i_inf_4; ~lat_5 := $i_lat_5; ~lat_6 := $i_lat_6; ~rec_7 := $i_rec_7; ~rec_8 := $i_rec_8; ~rec_9 := $i_rec_9; ~rec_10 := $i_rec_10; ~rec_11 := $i_rec_11; ~rec_12 := $i_rec_12; ~rec_13 := $i_rec_13;
3231
}
3332
{
33+
$i_rec_13 := $i_rec_12;
34+
$i_rec_12 := $i_rec_11;
35+
$i_rec_11 := $i_rec_10;
36+
$i_rec_10 := $i_rec_9;
3437
$i_rec_9 := $i_rec_8;
3538
$i_rec_8 := $i_rec_7;
3639
$i_rec_7 := $i_lat_6 + #macro(local_cured);
@@ -42,7 +45,8 @@ $i_inf_3 := round(min((1 - $cured_rate) * $i_inc_2, 1)*100)/100;
4245
$i_inc_2 := round(min((1 - $cured_rate) * $i_inc_1, 1)*100)/100;
4346
$i_inc_1 := #macro(internal_infected) + #macro(external_infected);
4447

45-
$i_sus_0 := 1 - $i_inc_1 - $i_inc_2 - $i_inf_3 - $i_inf_4 - $i_lat_5 - $i_lat_6 - $i_rec_7 - $i_rec_8 - $i_rec_9;
48+
$i_sus_0 := 1 - $i_inc_1 - $i_inc_2 - $i_inf_3 - $i_inf_4 - $i_lat_5 - $i_lat_6 - $i_rec_7 - $i_rec_8 - $i_rec_9 - $i_rec_10 - $i_rec_11 - $i_rec_12 - $i_rec_13;
49+
4650
}
4751
1 { (0,0)~initial != -1 }
4852

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
(25,25) = 100 1 100 1 0.2 0.0 2 2 2 3 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
1+
(25,25) = 100 1 100 1 0.2 0.0 2 2 2 7 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
Lines changed: 46 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,47 @@
1-
2-
#BeginMacro(local_cured)
3-
(( round(min($cured_rate * $i_lat_5, 1)*100) +
4-
round(min($cured_rate * $i_inf_4, 1)*100) +
5-
round(min($cured_rate * $i_inf_3, 1)*100) +
6-
round(min($cured_rate * $i_inc_2, 1)*100) +
7-
round(min($cured_rate * $i_inc_1, 1)*100) ) / 100 )
8-
#EndMacro
9-
10-
#BeginMacro(internal_infected)
11-
( round(min(($contact_rate *
12-
(($i_sus_0 * $population) / $area) *
13-
$i_sus_0 *
14-
($i_lat_6 + $i_lat_5 + $i_inf_4 + $i_inf_3 + $i_inc_2 + $i_inc_1)
15-
) / $p, 1) * 100) / 100 )
16-
#EndMacro
17-
18-
#BeginMacro(external_infected)
19-
( round(min(( $connection *
20-
$contact_rate *
21-
(($i_sus_0 * $population) / $area) *
22-
$i_sus_0 *
23-
((1,0)~lat_6 + (1,0)~lat_5 + (1,0)~inf_4 + (1,0)~inf_3 + (1,0)~inc_2 + (1,0)~inc_1)
24-
) / $p, 1)*100) / 100 )
25-
+
26-
( round(min(( $connection *
27-
$contact_rate *
28-
(($i_sus_0 * $population) / $area) *
29-
$i_sus_0 *
30-
((0,-1)~lat_6 + (0,-1)~lat_5 + (0,-1)~inf_4 + (0,-1)~inf_3 + (0,-1)~inc_2 + (0,-1)~inc_1)
31-
) / $p, 1)*100) / 100 )
32-
+
33-
( round(min(( $connection *
34-
$contact_rate *
35-
(($i_sus_0 * $population) / $area) *
36-
$i_sus_0 *
37-
((0,1)~lat_6 + (0,1)~lat_5 + (0,1)~inf_4 + (0,1)~inf_3 + (0,1)~inc_2 + (0,1)~inc_1)
38-
) / $p, 1)*100) / 100 )
39-
+
40-
( round(min(( $connection *
41-
$contact_rate *
42-
(($i_sus_0 * $population) / $area) *
43-
$i_sus_0 *
44-
((-1,0)~lat_6 + (-1,0)~lat_5 + (-1,0)~inf_4 + (-1,0)~inf_3 + (-1,0)~inc_2 + (-1,0)~inc_1)
45-
) / $p, 1)*100) / 100 )
1+
2+
#BeginMacro(local_cured)
3+
(( round(min($cured_rate * $i_lat_5, 1)*100) +
4+
round(min($cured_rate * $i_inf_4, 1)*100) +
5+
round(min($cured_rate * $i_inf_3, 1)*100) +
6+
round(min($cured_rate * $i_inc_2, 1)*100) +
7+
round(min($cured_rate * $i_inc_1, 1)*100) ) / 100 )
8+
#EndMacro
9+
10+
#BeginMacro(internal_infected)
11+
( round(min(($contact_rate *
12+
(($i_sus_0 * $population) / $area) *
13+
$i_sus_0 *
14+
($i_lat_6 + $i_lat_5 + $i_inf_4 + $i_inf_3 + $i_inc_2 + $i_inc_1)
15+
) / $p, 1) * 100) / 100 )
16+
#EndMacro
17+
18+
#BeginMacro(external_infected)
19+
( round(min(( $connection *
20+
$contact_rate *
21+
(($i_sus_0 * $population) / $area) *
22+
$i_sus_0 *
23+
((1,0)~lat_6 + (1,0)~lat_5 + (1,0)~inf_4 + (1,0)~inf_3 + (1,0)~inc_2 + (1,0)~inc_1)
24+
) / $p, 1)*100) / 100 )
25+
+
26+
( round(min(( $connection *
27+
$contact_rate *
28+
(($i_sus_0 * $population) / $area) *
29+
$i_sus_0 *
30+
((0,-1)~lat_6 + (0,-1)~lat_5 + (0,-1)~inf_4 + (0,-1)~inf_3 + (0,-1)~inc_2 + (0,-1)~inc_1)
31+
) / $p, 1)*100) / 100 )
32+
+
33+
( round(min(( $connection *
34+
$contact_rate *
35+
(($i_sus_0 * $population) / $area) *
36+
$i_sus_0 *
37+
((0,1)~lat_6 + (0,1)~lat_5 + (0,1)~inf_4 + (0,1)~inf_3 + (0,1)~inc_2 + (0,1)~inc_1)
38+
) / $p, 1)*100) / 100 )
39+
+
40+
( round(min(( $connection *
41+
$contact_rate *
42+
(($i_sus_0 * $population) / $area) *
43+
$i_sus_0 *
44+
((-1,0)~lat_6 + (-1,0)~lat_5 + (-1,0)~inf_4 + (-1,0)~inf_3 + (-1,0)~inc_2 + (-1,0)~inc_1)
45+
) / $p, 1)*100) / 100 )
46+
4647
#EndMacro

0 commit comments

Comments
 (0)