Load the ilmtools package...


In [1]:
include("ilmtools.jl")


Out[1]:
state_animation (generic function with 1 method)

Generate a population with a bivariate uniform spatial distribution (over a 25 by 25 unit area)


In [2]:
pop_db1 = create_pop_db_univariates(625, Uniform(0,25), Uniform(0,25))


Out[2]:
ind_idxy
1115.2492762996319036.237287898208155
2222.126333101420513.1596375181967504
3321.515389359887974.029046181466395
443.68906558677721817.683078244156995
5514.01167219870641622.822713096052738
663.0841643671041037.762118334550966
771.9189434025249644.813487461224036
8820.20754992741068520.323655668353485
9924.84056476714091514.362873161724371
10103.67684209824570814.766380994898165
11117.16823174417287614.978130623813279
12128.98941015055841918.264941635050185
131314.2589432203481812.552486051735409
14141.5895764415174042.9741707284203613
151522.9238000397993355.515374351891028
16169.60511914547122513.245190374302663
171711.00508437368123923.353420127784215
18181.522278215403272124.463625359653875
19198.3359188235952916.191068635936016
202011.7888386733871587.87845411615356
212112.3920413932488422.8160327428218723
22227.67523651725912611.86859635855882
23239.47753459062908423.740570396344594
24247.4602448181246678.504165729974595
25255.46238514413432410.88560791417697
26269.46753396793145212.10478038505437
272715.4896730485290177.736873778647069
282819.137106396378210.07309632599388771
29299.81184978295117111.766520999558727
303015.19946461017683224.653669465794813
&vellip&vellip&vellip&vellip

Generate the initial infection and propagate infection through population (SI model) in discrete time with parameters $\alpha=2$, $\beta=6$, and $\gamma=5$.


In [3]:
evdb = infect_recover_loop(pop_db1, "discrete", "SIR", 2, 6, 5)


Out[3]:
edb(625x4 DataFrame
| Row | ind_id | s | i    | r    |
|-----|--------|---|------|------|
| 1   | 1      | 0 | 12.0 | 15.0 |
| 2   | 2      | 0 | 19.0 | 28.0 |
| 3   | 3      | 0 | 18.0 | 20.0 |
| 4   | 4      | 0 | 10.0 | 12.0 |
| 5   | 5      | 0 | 18.0 | 19.0 |
| 6   | 6      | 0 | 1.0  | 5.0  |
| 7   | 7      | 0 | 9.0  | 10.0 |
| 8   | 8      | 0 | 18.0 | 21.0 |
| 9   | 9      | 0 | NaN  | NaN  |
| 10  | 10     | 0 | 8.0  | 9.0  |
| 11  | 11     | 0 | 9.0  | 10.0 |
⋮
| 614 | 614    | 0 | 14.0 | 35.0 |
| 615 | 615    | 0 | 4.0  | 5.0  |
| 616 | 616    | 0 | 10.0 | 14.0 |
| 617 | 617    | 0 | 14.0 | 15.0 |
| 618 | 618    | 0 | 21.0 | 23.0 |
| 619 | 619    | 0 | 11.0 | 13.0 |
| 620 | 620    | 0 | 12.0 | 13.0 |
| 621 | 621    | 0 | 19.0 | 20.0 |
| 622 | 622    | 0 | NaN  | NaN  |
| 623 | 623    | 0 | 18.0 | 19.0 |
| 624 | 624    | 0 | 17.0 | 21.0 |
| 625 | 625    | 0 | 25.0 | 32.0 |,[1.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0  …  Inf,Inf,Inf,Inf,Inf,Inf,Inf,Inf,Inf,Inf],"discrete")

Visualize infection (susceptible and infected) through time


In [4]:
evseries = state_timeseries(evdb)
plot(evseries, x="time", y="S", Geom.line)


Out[4]:
time -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 -40 -38 -36 -34 -32 -30 -28 -26 -24 -22 -20 -18 -16 -14 -12 -10 -8 -6 -4 -2 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 -50 0 50 100 -40 -35 -30 -25 -20 -15 -10 -5 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 -1000 -800 -600 -400 -200 0 200 400 600 800 1000 1200 1400 1600 1800 -800 -750 -700 -650 -600 -550 -500 -450 -400 -350 -300 -250 -200 -150 -100 -50 0 50 100 150 200 250 300 350 400 450 500 550 600 650 700 750 800 850 900 950 1000 1050 1100 1150 1200 1250 1300 1350 1400 1450 1500 1550 1600 -1000 0 1000 2000 -800 -750 -700 -650 -600 -550 -500 -450 -400 -350 -300 -250 -200 -150 -100 -50 0 50 100 150 200 250 300 350 400 450 500 550 600 650 700 750 800 850 900 950 1000 1050 1100 1150 1200 1250 1300 1350 1400 1450 1500 1550 1600 S

In [5]:
plot(evseries, x="time", y="I", Geom.line)


Out[5]:
time -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 -40 -38 -36 -34 -32 -30 -28 -26 -24 -22 -20 -18 -16 -14 -12 -10 -8 -6 -4 -2 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 -50 0 50 100 -40 -35 -30 -25 -20 -15 -10 -5 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 -300 -250 -200 -150 -100 -50 0 50 100 150 200 250 300 350 400 450 500 550 -250 -240 -230 -220 -210 -200 -190 -180 -170 -160 -150 -140 -130 -120 -110 -100 -90 -80 -70 -60 -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 500 -250 0 250 500 -260 -240 -220 -200 -180 -160 -140 -120 -100 -80 -60 -40 -20 0 20 40 60 80 100 120 140 160 180 200 220 240 260 280 300 320 340 360 380 400 420 440 460 480 500 I

In [6]:
plot(evseries, x="time", y="R", Geom.line)


Out[6]:
time -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 -40 -38 -36 -34 -32 -30 -28 -26 -24 -22 -20 -18 -16 -14 -12 -10 -8 -6 -4 -2 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 -50 0 50 100 -40 -35 -30 -25 -20 -15 -10 -5 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 -1000 -800 -600 -400 -200 0 200 400 600 800 1000 1200 1400 1600 1800 -800 -750 -700 -650 -600 -550 -500 -450 -400 -350 -300 -250 -200 -150 -100 -50 0 50 100 150 200 250 300 350 400 450 500 550 600 650 700 750 800 850 900 950 1000 1050 1100 1150 1200 1250 1300 1350 1400 1450 1500 1550 1600 -1000 0 1000 2000 -800 -750 -700 -650 -600 -550 -500 -450 -400 -350 -300 -250 -200 -150 -100 -50 0 50 100 150 200 250 300 350 400 450 500 550 600 650 700 750 800 850 900 950 1000 1050 1100 1150 1200 1250 1300 1350 1400 1450 1500 1550 1600 R

Spatial plots...


In [7]:
state_animation(1, evdb, pop_db1)


Out[7]:
x -30 -25 -20 -15 -10 -5 0 5 10 15 20 25 30 35 40 45 50 55 -25 -24 -23 -22 -21 -20 -19 -18 -17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 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 45 46 47 48 49 50 -25 0 25 50 -26 -24 -22 -20 -18 -16 -14 -12 -10 -8 -6 -4 -2 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 S I R state -30 -25 -20 -15 -10 -5 0 5 10 15 20 25 30 35 40 45 50 55 -25 -24 -23 -22 -21 -20 -19 -18 -17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 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 45 46 47 48 49 50 -25 0 25 50 -26 -24 -22 -20 -18 -16 -14 -12 -10 -8 -6 -4 -2 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 y