Skip to content

Commit 9c66116

Browse files
committed
SIRS model updated
1 parent ba2a406 commit 9c66116

File tree

8 files changed

+149
-238
lines changed

8 files changed

+149
-238
lines changed

epidemic_sirs/README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Susceptible-Infected-Recovered Disease Spread Model
2+
3+
Bidimensional grid adaptation of the Geo-Entity Cellular Automata presented by [Zhong et al.](https://link.springer.com/article/10.1007/s11430-009-0044-9).
4+
However, rules have been re-interpreted by [Kevin Henares](mailto:[email protected]).
5+
6+
7+
## How to run the model:
8+
9+
For running the model with von Neumann neighborhood, in the linux terminal, type:
10+
```shell
11+
> ../cd++ -m"sirs_zhong.ma" -l"results_zhong/sirs_zhong.log"
12+
```
13+

epidemic_sirs/generator/model_generator.py

Lines changed: 0 additions & 148 deletions
This file was deleted.

epidemic_sirs/generator/template_sirs_zhong_ma

Lines changed: 0 additions & 44 deletions
This file was deleted.

epidemic_sirs/generator/template_sirs_zhong_macros

Lines changed: 0 additions & 12 deletions
This file was deleted.

epidemic_sirs/sirs_zhong.ma

100644100755
Lines changed: 34 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -16,45 +16,51 @@ initialvalue : -1
1616

1717
localtransition : sirs-zhong-rule
1818

19-
statevariables: population connection movement t_i t_r i_sus_0 i_inf_1 i_inf_2 i_inf_3 i_inf_4 i_inf_5 i_inf_6 i_rec_7 i_rec_8 i_rec_9 i_rec_10 i_rec_11 i_rec_12 i_rec_13 i_rec_14 i_rec_15 i_rec_16 i_rec_17 i_rec_18 i_rec_19 i_rec_20 i_rec_21 i_rec_22 v_1 v_2 v_3 v_4 v_5 v_6 cr_1 cr_2 cr_3 cr_4 cr_5
20-
statevalues: 100 1 0.6 6 16 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 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.15 0.15 0.15 0.15 0.15 0.15 0.07 0.07 0.07 0.07 0.07
19+
statevariables: population connection movement cured_rate t_i t_r i_sus_0 i_inf_1 i_inf_2 i_inf_3 i_inf_4 i_inf_5 i_inf_6 i_inf_7 i_inf_8 i_inf_9 i_inf_10 i_inf_11 i_inf_12 i_inf_13 i_inf_14 i_inf_15 i_inf_16 i_inf_17 i_inf_18 i_inf_19 i_inf_20 i_inf_21 i_inf_22 i_rec_23 i_rec_24 i_rec_25 i_rec_26 i_rec_27 i_rec_28 v_1 v_2 v_3 v_4 v_5 v_6 v_7 v_8 v_9 v_10 v_11 v_12 v_13 v_14 v_15 v_16 v_17 v_18 v_19 v_20 v_21 v_22
20+
statevalues: 100 1 0.6 0.07 22 6 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 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.0 0.0 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01
2121
initialvariablesvalue: sirs_zhong.var
2222

23-
neighborports : initial pop sus_0 inf_1 inf_2 inf_3 inf_4 inf_5 inf_6 rec_7 rec_8 rec_9 rec_10 rec_11 rec_12 rec_13 rec_14 rec_15 rec_16 rec_17 rec_18 rec_19 rec_20 rec_21 rec_22
23+
neighborports : initial pop sus_0 inf_1 inf_2 inf_3 inf_4 inf_5 inf_6 inf_7 inf_8 inf_9 inf_10 inf_11 inf_12 inf_13 inf_14 inf_15 inf_16 inf_17 inf_18 inf_19 inf_20 inf_21 inf_22 rec_23 rec_24 rec_25 rec_26 rec_27 rec_28
2424

2525
[sirs-zhong-rule]
26-
rule : {~initial := 0; ~pop := $population; ~sus_0 := $i_sus_0; ~inf_1 := $i_inf_1; ~inf_2 := $i_inf_2; ~inf_3 := $i_inf_3; ~inf_4 := $i_inf_4; ~inf_5 := $i_inf_5; ~inf_6 := $i_inf_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; ~rec_14 := $i_rec_14; ~rec_15 := $i_rec_15; ~rec_16 := $i_rec_16; ~rec_17 := $i_rec_17; ~rec_18 := $i_rec_18; ~rec_19 := $i_rec_19; ~rec_20 := $i_rec_20; ~rec_21 := $i_rec_21; ~rec_22 := $i_rec_22;}
26+
rule : {~initial := 0; ~pop := $population; ~sus_0 := $i_sus_0; ~inf_1 := $i_inf_1; ~inf_2 := $i_inf_2; ~inf_3 := $i_inf_3; ~inf_4 := $i_inf_4; ~inf_5 := $i_inf_5; ~inf_6 := $i_inf_6; ~inf_7 := $i_inf_7; ~inf_8 := $i_inf_8; ~inf_9 := $i_inf_9; ~inf_10 := $i_inf_10; ~inf_11 := $i_inf_11; ~inf_12 := $i_inf_12; ~inf_13 := $i_inf_13; ~inf_14 := $i_inf_14; ~inf_15 := $i_inf_15; ~inf_16 := $i_inf_16; ~inf_17 := $i_inf_17; ~inf_18 := $i_inf_18; ~inf_19 := $i_inf_19; ~inf_20 := $i_inf_20; ~inf_21 := $i_inf_21; ~inf_22 := $i_inf_22; ~rec_23 := $i_rec_23; ~rec_24 := $i_rec_24; ~rec_25 := $i_rec_25; ~rec_26 := $i_rec_26; ~rec_27 := $i_rec_27; ~rec_28 := $i_rec_28;}
2727
1 {(0,0)~initial = -1}
2828

2929
rule : {
30-
~pop := $population; ~sus_0 := $i_sus_0; ~inf_1 := $i_inf_1; ~inf_2 := $i_inf_2; ~inf_3 := $i_inf_3; ~inf_4 := $i_inf_4; ~inf_5 := $i_inf_5; ~inf_6 := $i_inf_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; ~rec_14 := $i_rec_14; ~rec_15 := $i_rec_15; ~rec_16 := $i_rec_16; ~rec_17 := $i_rec_17; ~rec_18 := $i_rec_18; ~rec_19 := $i_rec_19; ~rec_20 := $i_rec_20; ~rec_21 := $i_rec_21; ~rec_22 := $i_rec_22;
30+
~pop := $population; ~sus_0 := $i_sus_0; ~inf_1 := $i_inf_1; ~inf_2 := $i_inf_2; ~inf_3 := $i_inf_3; ~inf_4 := $i_inf_4; ~inf_5 := $i_inf_5; ~inf_6 := $i_inf_6; ~inf_7 := $i_inf_7; ~inf_8 := $i_inf_8; ~inf_9 := $i_inf_9; ~inf_10 := $i_inf_10; ~inf_11 := $i_inf_11; ~inf_12 := $i_inf_12; ~inf_13 := $i_inf_13; ~inf_14 := $i_inf_14; ~inf_15 := $i_inf_15; ~inf_16 := $i_inf_16; ~inf_17 := $i_inf_17; ~inf_18 := $i_inf_18; ~inf_19 := $i_inf_19; ~inf_20 := $i_inf_20; ~inf_21 := $i_inf_21; ~inf_22 := $i_inf_22; ~rec_23 := $i_rec_23; ~rec_24 := $i_rec_24; ~rec_25 := $i_rec_25; ~rec_26 := $i_rec_26; ~rec_27 := $i_rec_27; ~rec_28 := $i_rec_28;
3131
}
3232
{
33-
$i_rec_22 := $i_rec_21;
34-
$i_rec_21 := $i_rec_20;
35-
$i_rec_20 := $i_rec_19;
36-
$i_rec_19 := $i_rec_18;
37-
$i_rec_18 := $i_rec_17;
38-
$i_rec_17 := $i_rec_16;
39-
$i_rec_16 := $i_rec_15;
40-
$i_rec_15 := $i_rec_14;
41-
$i_rec_14 := $i_rec_13;
42-
$i_rec_13 := $i_rec_12;
43-
$i_rec_12 := $i_rec_11;
44-
$i_rec_11 := $i_rec_10;
45-
$i_rec_10 := $i_rec_9;
46-
$i_rec_9 := $i_rec_8;
47-
$i_rec_8 := $i_rec_7;
48-
$i_rec_7 := $i_inf_6 + #macro(local_cured);
49-
50-
$i_inf_6 := round(min((1 - $cr_5) * $i_inf_5, 1)*100)/100;
51-
$i_inf_5 := round(min((1 - $cr_4) * $i_inf_4, 1)*100)/100;
52-
$i_inf_4 := round(min((1 - $cr_3) * $i_inf_3, 1)*100)/100;
53-
$i_inf_3 := round(min((1 - $cr_2) * $i_inf_2, 1)*100)/100;
54-
$i_inf_2 := round(min((1 - $cr_1) * $i_inf_1, 1)*100)/100;
33+
$i_rec_28 := $i_rec_27;
34+
$i_rec_27 := $i_rec_26;
35+
$i_rec_26 := $i_rec_25;
36+
$i_rec_25 := $i_rec_24;
37+
$i_rec_24 := $i_rec_23;
38+
$i_rec_23 := $i_inf_22 + #macro(local_cured);
39+
40+
$i_inf_22 := round(min((1 - $cured_rate) * $i_inf_21, 1)*100)/100;
41+
$i_inf_21 := round(min((1 - $cured_rate) * $i_inf_20, 1)*100)/100;
42+
$i_inf_20 := round(min((1 - $cured_rate) * $i_inf_19, 1)*100)/100;
43+
$i_inf_19 := round(min((1 - $cured_rate) * $i_inf_18, 1)*100)/100;
44+
$i_inf_18 := round(min((1 - $cured_rate) * $i_inf_17, 1)*100)/100;
45+
$i_inf_17 := round(min((1 - $cured_rate) * $i_inf_16, 1)*100)/100;
46+
$i_inf_16 := round(min((1 - $cured_rate) * $i_inf_15, 1)*100)/100;
47+
$i_inf_15 := round(min((1 - $cured_rate) * $i_inf_14, 1)*100)/100;
48+
$i_inf_14 := round(min((1 - $cured_rate) * $i_inf_13, 1)*100)/100;
49+
$i_inf_13 := round(min((1 - $cured_rate) * $i_inf_12, 1)*100)/100;
50+
$i_inf_12 := round(min((1 - $cured_rate) * $i_inf_11, 1)*100)/100;
51+
$i_inf_11 := round(min((1 - $cured_rate) * $i_inf_10, 1)*100)/100;
52+
$i_inf_10 := round(min((1 - $cured_rate) * $i_inf_9, 1)*100)/100;
53+
$i_inf_9 := round(min((1 - $cured_rate) * $i_inf_8, 1)*100)/100;
54+
$i_inf_8 := round(min((1 - $cured_rate) * $i_inf_7, 1)*100)/100;
55+
$i_inf_7 := round(min((1 - $cured_rate) * $i_inf_6, 1)*100)/100;
56+
$i_inf_6 := round(min((1 - $cured_rate) * $i_inf_5, 1)*100)/100;
57+
$i_inf_5 := round(min((1 - $cured_rate) * $i_inf_4, 1)*100)/100;
58+
$i_inf_4 := round(min((1 - $cured_rate) * $i_inf_3, 1)*100)/100;
59+
$i_inf_3 := round(min((1 - $cured_rate) * $i_inf_2, 1)*100)/100;
60+
$i_inf_2 := round(min((1 - $cured_rate) * $i_inf_1, 1)*100)/100;
5561
$i_inf_1 := #macro(internal_infected) + #macro(external_infected);
5662

57-
$i_sus_0 := 1 - $i_inf_1 - $i_inf_2 - $i_inf_3 - $i_inf_4 - $i_inf_5 - $i_inf_6 - $i_rec_7 - $i_rec_8 - $i_rec_9 - $i_rec_10 - $i_rec_11 - $i_rec_12 - $i_rec_13 - $i_rec_14 - $i_rec_15 - $i_rec_16 - $i_rec_17 - $i_rec_18 - $i_rec_19 - $i_rec_20 - $i_rec_21 - $i_rec_22;
63+
$i_sus_0 := 1 - $i_inf_1 - $i_inf_2 - $i_inf_3 - $i_inf_4 - $i_inf_5 - $i_inf_6 - $i_inf_7 - $i_inf_8 - $i_inf_9 - $i_inf_10 - $i_inf_11 - $i_inf_12 - $i_inf_13 - $i_inf_14 - $i_inf_15 - $i_inf_16 - $i_inf_17 - $i_inf_18 - $i_inf_19 - $i_inf_20 - $i_inf_21 - $i_inf_22 - $i_rec_23 - $i_rec_24 - $i_rec_25 - $i_rec_26 - $i_rec_27 - $i_rec_28;
5864

5965
}
6066
1 { (0,0)~initial != -1 }

epidemic_sirs/sirs_zhong.pal

100644100755
File mode changed.

epidemic_sirs/sirs_zhong.var

100644100755
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
(25,25) = 100 1 0.6 6 16 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 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.15 0.15 0.15 0.15 0.15 0.15 0.07 0.07 0.07 0.07 0.07
1+
(25,25) = 100 1 0.6 0.07 22 6 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 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.0 0.0 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01

0 commit comments

Comments
 (0)