EPIONCHO-IBM is a stochastic, individual-based model for onchocerciasis transmission. A mathematical description can be found at https://doi.org/10.1371/journal.pntd.0007557.
EPIONCHO IBM is written in R (1) which is freely available for installation on Windows, Mac OS and Linux platforms from https://www.r-project.org. It is also recommended to install R Studio https://www.rstudio.com which provides a helpful user interface for R. EPIONCHO-IBM has been tested on Mac OS and Windows, but should be compatible with Linux and run on any desktop or laptop machine.
When run on laptop machine using Windows, a single run of EPIONCHO-IBM with the activated epilepsy module takes, on average, 78 minutes to complete.
The model package can be downloaded and installed directly from a GitHub repository (https://github.com/mrc-ide/EPIONCHO.IBM). The remotes (2) package must be installed to do this. Installation should take no more than a few seconds on most desktop or laptop machines.
## Downloading GitHub repo mrc-ide/EPIONCHO.IBM@HEAD
## ── R CMD build ─────────────────────────────────────────────────────────────────
##
✔ checking for file 'C:\Users\mad206\AppData\Local\Temp\RtmpGopIGp\remotes80d06b022fe4\mrc-ide-EPIONCHO.IBM-fb6d229/DESCRIPTION'
##
─ preparing 'EPIONCHO.IBM': (360ms)
## checking DESCRIPTION meta-information ...
✔ checking DESCRIPTION meta-information
##
─ checking for LF line-endings in source and make files and shell scripts
##
─ checking for empty or unneeded directories
## ─ building 'EPIONCHO.IBM_0.0.0.9000.tar.gz'
##
Warning in utils::tar(filepath, pkgname, compression = compression, compression_level = 9L, :
Warning in utils::tar(filepath, pkgname, compression = compression, compression_level = 9L, :
## storing paths of more than 100 bytes is not portable:
## 'EPIONCHO.IBM/vignettes/rsconnect/documents/Running_EPIONCHO_IBM.Rmd/rpubs.com/rpubs/Publish Document.dcf'
##
##
## Installing package into 'C:/Users/mad206/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
Before simulating treatment, the model must be simulated to the
endemic equilibrium. It is best to run the model to equilibrium
(run_equilibrium = TRUE, give.treat = 0), save
the output and use this as the starting point for MDA. Note that running
the model to the equilibrium can be slow, taking in excess of 5 minutes
(depending on machine performance). Turning on the epilepsy module
(epilepsy module = YES) outputs each individual’s OAE
status, assigned, when aged between 3 and 15 years, according to an
onset probability derive from [Chesnais et al. 2018]. To run the model
to equilibrium without treating in the same run, use the following
code:
#length of simulation in years
timesteps = 200
#should treatment be given, when and how often
give.treat.in = 0
treat.strt = 1; treat.stp = 16
trt.int = 1
#annual biting rate, which determines infection prevalence (As parameterised to Chesnais et al., 2018)
ABR.in = 41922
output_equilibrium_OAE <- ep.equi.sim(time.its = timesteps,
ABR = ABR.in,
N.in = 400,
treat.int = trt.int,
treat.prob = 0.65,
give.treat = give.treat.in,
treat.start = treat.strt,
treat.stop = treat.stp,
pnc = 0.05,
min.mont.age = 5,
vector.control.strt = NA,
delta.hz.in = 0.186,
delta.hinf.in = 0.003,
c.h.in = 0.005,
gam.dis.in = 0.3,
run_equilibrium = TRUE,
epilepsy_module = "YES",
equilibrium,
print_progress = TRUE)
## [1] "no MDA to be simulated"
## [1] "1 yrs; 0.5 %"
## [1] "2 yrs; 1 %"
## [1] "3 yrs; 1.5 %"
## [1] "4 yrs; 2 %"
## [1] "5 yrs; 2.5 %"
## [1] "6 yrs; 3 %"
## [1] "7 yrs; 3.5 %"
## [1] "8 yrs; 4 %"
## [1] "9 yrs; 4.5 %"
## [1] "10 yrs; 5 %"
## [1] "11 yrs; 5.5 %"
## [1] "12 yrs; 6 %"
## [1] "13 yrs; 6.5 %"
## [1] "14 yrs; 7 %"
## [1] "15 yrs; 7.5 %"
## [1] "16 yrs; 8 %"
## [1] "17 yrs; 8.5 %"
## [1] "18 yrs; 9 %"
## [1] "19 yrs; 9.5 %"
## [1] "20 yrs; 10 %"
## [1] "21 yrs; 10.5 %"
## [1] "22 yrs; 11 %"
## [1] "23 yrs; 11.5 %"
## [1] "24 yrs; 12 %"
## [1] "25 yrs; 12.5 %"
## [1] "26 yrs; 13 %"
## [1] "27 yrs; 13.5 %"
## [1] "28 yrs; 14 %"
## [1] "29 yrs; 14.5 %"
## [1] "30 yrs; 15 %"
## [1] "31 yrs; 15.5 %"
## [1] "32 yrs; 16 %"
## [1] "33 yrs; 16.5 %"
## [1] "34 yrs; 17 %"
## [1] "35 yrs; 17.5 %"
## [1] "36 yrs; 18 %"
## [1] "37 yrs; 18.5 %"
## [1] "38 yrs; 19 %"
## [1] "39 yrs; 19.5 %"
## [1] "40 yrs; 20 %"
## [1] "41 yrs; 20.5 %"
## [1] "42 yrs; 21 %"
## [1] "43 yrs; 21.5 %"
## [1] "44 yrs; 22 %"
## [1] "45 yrs; 22.5 %"
## [1] "46 yrs; 23 %"
## [1] "47 yrs; 23.5 %"
## [1] "48 yrs; 24 %"
## [1] "49 yrs; 24.5 %"
## [1] "50 yrs; 25 %"
## [1] "51 yrs; 25.5 %"
## [1] "52 yrs; 26 %"
## [1] "53 yrs; 26.5 %"
## [1] "54 yrs; 27 %"
## [1] "55 yrs; 27.5 %"
## [1] "56 yrs; 28 %"
## [1] "57 yrs; 28.5 %"
## [1] "58 yrs; 29 %"
## [1] "59 yrs; 29.5 %"
## [1] "60 yrs; 30 %"
## [1] "61 yrs; 30.5 %"
## [1] "62 yrs; 31 %"
## [1] "63 yrs; 31.5 %"
## [1] "64 yrs; 32 %"
## [1] "65 yrs; 32.5 %"
## [1] "66 yrs; 33 %"
## [1] "67 yrs; 33.5 %"
## [1] "68 yrs; 34 %"
## [1] "69 yrs; 34.5 %"
## [1] "70 yrs; 35 %"
## [1] "71 yrs; 35.5 %"
## [1] "72 yrs; 36 %"
## [1] "73 yrs; 36.5 %"
## [1] "74 yrs; 37 %"
## [1] "75 yrs; 37.5 %"
## [1] "76 yrs; 38 %"
## [1] "77 yrs; 38.5 %"
## [1] "78 yrs; 39 %"
## [1] "79 yrs; 39.5 %"
## [1] "80 yrs; 40 %"
## [1] "81 yrs; 40.5 %"
## [1] "82 yrs; 41 %"
## [1] "83 yrs; 41.5 %"
## [1] "84 yrs; 42 %"
## [1] "85 yrs; 42.5 %"
## [1] "86 yrs; 43 %"
## [1] "87 yrs; 43.5 %"
## [1] "88 yrs; 44 %"
## [1] "89 yrs; 44.5 %"
## [1] "90 yrs; 45 %"
## [1] "91 yrs; 45.5 %"
## [1] "92 yrs; 46 %"
## [1] "93 yrs; 46.5 %"
## [1] "94 yrs; 47 %"
## [1] "95 yrs; 47.5 %"
## [1] "96 yrs; 48 %"
## [1] "97 yrs; 48.5 %"
## [1] "98 yrs; 49 %"
## [1] "99 yrs; 49.5 %"
## [1] "100 yrs; 50 %"
## [1] "101 yrs; 50.5 %"
## [1] "102 yrs; 51 %"
## [1] "103 yrs; 51.5 %"
## [1] "104 yrs; 52 %"
## [1] "105 yrs; 52.5 %"
## [1] "106 yrs; 53 %"
## [1] "107 yrs; 53.5 %"
## [1] "108 yrs; 54 %"
## [1] "109 yrs; 54.5 %"
## [1] "110 yrs; 55 %"
## [1] "111 yrs; 55.5 %"
## [1] "112 yrs; 56 %"
## [1] "113 yrs; 56.5 %"
## [1] "114 yrs; 57 %"
## [1] "115 yrs; 57.5 %"
## [1] "116 yrs; 58 %"
## [1] "117 yrs; 58.5 %"
## [1] "118 yrs; 59 %"
## [1] "119 yrs; 59.5 %"
## [1] "120 yrs; 60 %"
## [1] "121 yrs; 60.5 %"
## [1] "122 yrs; 61 %"
## [1] "123 yrs; 61.5 %"
## [1] "124 yrs; 62 %"
## [1] "125 yrs; 62.5 %"
## [1] "126 yrs; 63 %"
## [1] "127 yrs; 63.5 %"
## [1] "128 yrs; 64 %"
## [1] "129 yrs; 64.5 %"
## [1] "130 yrs; 65 %"
## [1] "131 yrs; 65.5 %"
## [1] "132 yrs; 66 %"
## [1] "133 yrs; 66.5 %"
## [1] "134 yrs; 67 %"
## [1] "135 yrs; 67.5 %"
## [1] "136 yrs; 68 %"
## [1] "137 yrs; 68.5 %"
## [1] "138 yrs; 69 %"
## [1] "139 yrs; 69.5 %"
## [1] "140 yrs; 70 %"
## [1] "141 yrs; 70.5 %"
## [1] "142 yrs; 71 %"
## [1] "143 yrs; 71.5 %"
## [1] "144 yrs; 72 %"
## [1] "145 yrs; 72.5 %"
## [1] "146 yrs; 73 %"
## [1] "147 yrs; 73.5 %"
## [1] "148 yrs; 74 %"
## [1] "149 yrs; 74.5 %"
## [1] "150 yrs; 75 %"
## [1] "151 yrs; 75.5 %"
## [1] "152 yrs; 76 %"
## [1] "153 yrs; 76.5 %"
## [1] "154 yrs; 77 %"
## [1] "155 yrs; 77.5 %"
## [1] "156 yrs; 78 %"
## [1] "157 yrs; 78.5 %"
## [1] "158 yrs; 79 %"
## [1] "159 yrs; 79.5 %"
## [1] "160 yrs; 80 %"
## [1] "161 yrs; 80.5 %"
## [1] "162 yrs; 81 %"
## [1] "163 yrs; 81.5 %"
## [1] "164 yrs; 82 %"
## [1] "165 yrs; 82.5 %"
## [1] "166 yrs; 83 %"
## [1] "167 yrs; 83.5 %"
## [1] "168 yrs; 84 %"
## [1] "169 yrs; 84.5 %"
## [1] "170 yrs; 85 %"
## [1] "171 yrs; 85.5 %"
## [1] "172 yrs; 86 %"
## [1] "173 yrs; 86.5 %"
## [1] "174 yrs; 87 %"
## [1] "175 yrs; 87.5 %"
## [1] "176 yrs; 88 %"
## [1] "177 yrs; 88.5 %"
## [1] "178 yrs; 89 %"
## [1] "179 yrs; 89.5 %"
## [1] "180 yrs; 90 %"
## [1] "181 yrs; 90.5 %"
## [1] "182 yrs; 91 %"
## [1] "183 yrs; 91.5 %"
## [1] "184 yrs; 92 %"
## [1] "185 yrs; 92.5 %"
## [1] "186 yrs; 93 %"
## [1] "187 yrs; 93.5 %"
## [1] "188 yrs; 94 %"
## [1] "189 yrs; 94.5 %"
## [1] "190 yrs; 95 %"
## [1] "191 yrs; 95.5 %"
## [1] "192 yrs; 96 %"
## [1] "193 yrs; 96.5 %"
## [1] "194 yrs; 97 %"
## [1] "195 yrs; 97.5 %"
## [1] "196 yrs; 98 %"
## [1] "197 yrs; 98.5 %"
## [1] "198 yrs; 99 %"
## [1] "199 yrs; 99.5 %"
To stop the printing of the time as the model runs, set
print_progress = FALSE. Currently, with
print_progress = TRUE, when the model run reaches each year
in the simulation, the year and % progress will be printed. If
run_equilibrium = TRUE then no input is expected for
equilibrium, which is where a previously simulated endemic
equilibrium can be entered. This will be discussed later in section 3.3.
Above, no MDA is not requested by setting gv.trt = 0. Note
that values must be entered for treatment start, stop and interval (1 is
annual, 0.5 is biannual), e.g
treat.strt = 0; treat.stp = 16; trt.int = 1, even if
gv.trt = 0.
It is also possible to manually change the density-dependent
parameters relating to the establishment of the adult Onchocerca
volvulus (delta.hz.in, delta.hinf.in and
c.h.in) and individual exposure heterogeneity in humans
(gam.dis.in), in the function calling the model (above).
This feature enables the user to modify these parameters to capture the
combinations of exposure heterogeneity parameter values and fitted
density-dependent parameters in Hamley
et al. 2019.
The output from run_EPIONCHO_IBM_with_OAE is a list with 14 elements.
names(output_equilibrium_OAE)
## [1] "mf_prev" "mf_intens"
## [3] "L3" "all_equilibrium_outputs"
## [5] "OAE_prev" "OAE_incidence"
## [7] "OAE_incidence_under_5yrs" "OAE_incidence_5_10yrs"
## [9] "OAE_incidence_10_15yrs" "OAE_incidence_males"
## [11] "OAE_incidence_females" "all_OAE_equilibirum_ouputs"
## [13] "ABR_recorded" "coverage.recorded"
The first three elements contain the temporal dynamics (at 1 day increments) for the microfilarial prevalence (individuals age > 5), the population mean microfilarial intensity (individuals age > 5) and the mean number of L3 larvae in the black fly population. To plot these over time, use:
tme <- seq(1, 200*366-1)/366
plot(tme, output_equilibrium_OAE$mf_prev, type = 'l', xlab = 'time (years)', ylab = 'microfilarial prevalence', ylim = c(0, 1))
plot(tme, output_equilibrium_OAE$mf_intens, type = 'l', xlab = 'time (years)', ylab = 'mean microfilarial intensity')
plot(tme, output_equilibrium_OAE$L3, type = 'l', xlab = 'time (years)', ylab = 'mean L3 in fly population')
The fourth element,"all_equilibrium_outputs" is the
element required to simulate MDA without having to run the model to the
endemic equilibrium.
The fifth through eleventh elements contain the temporal dynamics (at 1 day increments) for the OAE prevalence (all individuals), the OAE incidence (all individuals) with the succeeding elements giving OAE incidence for: individuals aged 5 years and under, aged 5-10 years, aged 10-15 years, all males and all females, respectively. To plot these over time use:
tme2 <- seq(1, 200*366)/366
plot(tme2, output_equilibrium_OAE$OAE_prev, type = 'l', xlab = 'time (years)', ylab = 'OAE prevalence', ylim = c(0, 1))
plot(tme, output_equilibrium_OAE$OAE_incidence, type = 'l', xlab = 'time (years)', ylab = 'OAE incidence', ylim = c(0, 1))
plot(tme, output_equilibrium_OAE$OAE_incidence_under_5yrs, type = 'l', xlab = 'time (years)', ylab = 'OAE incidence - under 5yrs', ylim = c(0, 1))
plot(tme, output_equilibrium_OAE$OAE_incidence_5_10yrs, type = 'l', xlab = 'time (years)', ylab = 'OAE incidence - 5-10yrs', ylim = c(0, 1))
plot(tme, output_equilibrium_OAE$OAE_incidence_10_15yrs, type = 'l', xlab = 'time (years)', ylab = 'OAE incidence - 10-15yrs', ylim = c(0, 1))
plot(tme, output_equilibrium_OAE$OAE_incidence_males, type = 'l', xlab = 'time (years)', ylab = 'OAE incidence - males', ylim = c(0, 1))
plot(tme, output_equilibrium_OAE$OAE_incidence_females, type = 'l', xlab = 'time (years)', ylab = 'OAE incidence -females', ylim = c(0, 1))
The twelfth element, similarly to the fourth, is required to simulate MDA without having to run the model to endemic equilibrium
The thirteenth and fourteenth elements let the user confirmed the ascribed ABR and coverage values used over time.
Assuming you have already run the model and saved the output as described in section 3.1, you can simulate 15 years of annual mass drug administration with ivermectin by running:
timesteps = 200
treat.strt = 1; treat.stp = 151 #if treatment stops in year 151, the last round is at the beginning of year 150
gv.trt = 1
trt.int = 1
output_treat_annual_OAE <- ep.equi.sim(time.its = timesteps,
ABR = ABR.in,
N.in = 400,
treat.timing = NA,
treat.int = trt.int,
treat.prob = 0.65,
give.treat = gv.trt,
treat.start = treat.strt,
treat.stop = treat.stp,
pnc = 0.05,
min.mont.age = 5,
vector.control.strt = NA,
delta.hz.in = 0.186,
delta.hinf.in = 0.003,
c.h.in = 0.005,
gam.dis.in = 0.3,
run_equilibrium = TRUE,
epilepsy_module = "YES",
equilibrium = NA,
print_progress = FALSE)
## [1] "150 MDA rounds to be given"
## [1] "MDA given at"
## [1] "1yrs" "2yrs" "3yrs" "4yrs" "5yrs" "6yrs" "7yrs" "8yrs"
## [9] "9yrs" "10yrs" "11yrs" "12yrs" "13yrs" "14yrs" "15yrs" "16yrs"
## [17] "17yrs" "18yrs" "19yrs" "20yrs" "21yrs" "22yrs" "23yrs" "24yrs"
## [25] "25yrs" "26yrs" "27yrs" "28yrs" "29yrs" "30yrs" "31yrs" "32yrs"
## [33] "33yrs" "34yrs" "35yrs" "36yrs" "37yrs" "38yrs" "39yrs" "40yrs"
## [41] "41yrs" "42yrs" "43yrs" "44yrs" "45yrs" "46yrs" "47yrs" "48yrs"
## [49] "49yrs" "50yrs" "51yrs" "52yrs" "53yrs" "54yrs" "55yrs" "56yrs"
## [57] "57yrs" "58yrs" "59yrs" "60yrs" "61yrs" "62yrs" "63yrs" "64yrs"
## [65] "65yrs" "66yrs" "67yrs" "68yrs" "69yrs" "70yrs" "71yrs" "72yrs"
## [73] "73yrs" "74yrs" "75yrs" "76yrs" "77yrs" "78yrs" "79yrs" "80yrs"
## [81] "81yrs" "82yrs" "83yrs" "84yrs" "85yrs" "86yrs" "87yrs" "88yrs"
## [89] "89yrs" "90yrs" "91yrs" "92yrs" "93yrs" "94yrs" "95yrs" "96yrs"
## [97] "97yrs" "98yrs" "99yrs" "100yrs" "101yrs" "102yrs" "103yrs" "104yrs"
## [105] "105yrs" "106yrs" "107yrs" "108yrs" "109yrs" "110yrs" "111yrs" "112yrs"
## [113] "113yrs" "114yrs" "115yrs" "116yrs" "117yrs" "118yrs" "119yrs" "120yrs"
## [121] "121yrs" "122yrs" "123yrs" "124yrs" "125yrs" "126yrs" "127yrs" "128yrs"
## [129] "129yrs" "130yrs" "131yrs" "132yrs" "133yrs" "134yrs" "135yrs" "136yrs"
## [137] "137yrs" "138yrs" "139yrs" "140yrs" "141yrs" "142yrs" "143yrs" "144yrs"
## [145] "145yrs" "146yrs" "147yrs" "148yrs" "149yrs" "150yrs"
## [1] 367 733 1099 1465 1831 2197 2563 2929 3295 3661 4027 4393
## [13] 4759 5125 5491 5857 6223 6589 6955 7321 7687 8053 8419 8785
## [25] 9151 9517 9883 10249 10615 10981 11347 11713 12079 12445 12811 13177
## [37] 13543 13909 14275 14641 15007 15373 15739 16105 16471 16837 17203 17569
## [49] 17935 18301 18667 19033 19399 19765 20131 20497 20863 21229 21595 21961
## [61] 22327 22693 23059 23425 23791 24157 24523 24889 25255 25621 25987 26353
## [73] 26719 27085 27451 27817 28183 28549 28915 29281 29647 30013 30379 30745
## [85] 31111 31477 31843 32209 32575 32941 33307 33673 34039 34405 34771 35137
## [97] 35503 35869 36235 36601 36967 37333 37699 38065 38431 38797 39163 39529
## [109] 39895 40261 40627 40993 41359 41725 42091 42457 42823 43189 43555 43921
## [121] 44287 44653 45019 45385 45751 46117 46483 46849 47215 47581 47947 48313
## [133] 48679 49045 49411 49777 50143 50509 50875 51241 51607 51973 52339 52705
## [145] 53071 53437 53803 54169 54535 54901
## [1] "Coverage at each round"
## [1] "65%"
## [1] "ABR is"
## [1] "41922 bites person-1 yr-1 at endemic equilibria"
If in the above model run print_progress = FALSE is
called, but gv.trt = 1 is also specified, only the duration
of MDA will be printed (no progress updates). Currently, with
print_progress = TRUE, when the model run reaches each year
in the simulation, the year and % progress will be printed as before.
Note that timesteps is the total number of years for which
the model is run. treat.start and treat.stop
are the years within this duration at which MDA is given.
To visualise the infection dynamics through time during annual MDA, use:
tme <- seq(1, 200*366-1)/366
plot(tme, output_treat_annual_OAE$mf_prev, type = 'l', xlab = 'time', ylab = 'microfilarial prevalence', ylim = c(0, 1))
abline(v = seq(1, 150), col = 'grey', lwd = 0.1)
tme2 <- seq(1, 200*366)/366
plot(tme2, output_treat_annual_OAE$OAE_prev, type = 'l', xlab = 'time', ylab = 'OAE prevalence')
abline(v = seq(1, 150), col = 'grey', lwd = 0.1)
Assuming you have run the model to the endemic equilibrium (as described in secton 3.1), temporal infection trends during biannual MDA can be obtained by running:
timesteps = 200
treat.strt = 1; treat.stp = 76 #if treatment stops in year 76, the last round is at the beginning of year 75
gv.trt = 1
trt.int = 0.5
output_treat_biannual_OAE <- ep.equi.sim(time.its = timesteps,
ABR = ABR.in,
N.in = 400,
treat.timing = NA,
treat.int = trt.int,
treat.prob = 0.65,
give.treat = gv.trt,
treat.start = treat.strt,
treat.stop = treat.stp,
pnc = 0.05,
min.mont.age = 5,
vector.control.strt = NA,
delta.hz.in = 0.186,
delta.hinf.in = 0.003,
c.h.in = 0.005,
gam.dis.in = 0.3,
run_equilibrium = TRUE,
epilepsy_module = "YES",
equilibrium = NA,
print_progress = TRUE)
## [1] "150 MDA rounds to be given"
## [1] "MDA given at"
## [1] "1yrs" "1.5yrs" "2yrs" "2.5yrs" "3yrs" "3.5yrs" "4yrs"
## [8] "4.5yrs" "5yrs" "5.5yrs" "6yrs" "6.5yrs" "7yrs" "7.5yrs"
## [15] "8yrs" "8.5yrs" "9yrs" "9.5yrs" "10yrs" "10.5yrs" "11yrs"
## [22] "11.5yrs" "12yrs" "12.5yrs" "13yrs" "13.5yrs" "14yrs" "14.5yrs"
## [29] "15yrs" "15.5yrs" "16yrs" "16.5yrs" "17yrs" "17.5yrs" "18yrs"
## [36] "18.5yrs" "19yrs" "19.5yrs" "20yrs" "20.5yrs" "21yrs" "21.5yrs"
## [43] "22yrs" "22.5yrs" "23yrs" "23.5yrs" "24yrs" "24.5yrs" "25yrs"
## [50] "25.5yrs" "26yrs" "26.5yrs" "27yrs" "27.5yrs" "28yrs" "28.5yrs"
## [57] "29yrs" "29.5yrs" "30yrs" "30.5yrs" "31yrs" "31.5yrs" "32yrs"
## [64] "32.5yrs" "33yrs" "33.5yrs" "34yrs" "34.5yrs" "35yrs" "35.5yrs"
## [71] "36yrs" "36.5yrs" "37yrs" "37.5yrs" "38yrs" "38.5yrs" "39yrs"
## [78] "39.5yrs" "40yrs" "40.5yrs" "41yrs" "41.5yrs" "42yrs" "42.5yrs"
## [85] "43yrs" "43.5yrs" "44yrs" "44.5yrs" "45yrs" "45.5yrs" "46yrs"
## [92] "46.5yrs" "47yrs" "47.5yrs" "48yrs" "48.5yrs" "49yrs" "49.5yrs"
## [99] "50yrs" "50.5yrs" "51yrs" "51.5yrs" "52yrs" "52.5yrs" "53yrs"
## [106] "53.5yrs" "54yrs" "54.5yrs" "55yrs" "55.5yrs" "56yrs" "56.5yrs"
## [113] "57yrs" "57.5yrs" "58yrs" "58.5yrs" "59yrs" "59.5yrs" "60yrs"
## [120] "60.5yrs" "61yrs" "61.5yrs" "62yrs" "62.5yrs" "63yrs" "63.5yrs"
## [127] "64yrs" "64.5yrs" "65yrs" "65.5yrs" "66yrs" "66.5yrs" "67yrs"
## [134] "67.5yrs" "68yrs" "68.5yrs" "69yrs" "69.5yrs" "70yrs" "70.5yrs"
## [141] "71yrs" "71.5yrs" "72yrs" "72.5yrs" "73yrs" "73.5yrs" "74yrs"
## [148] "74.5yrs" "75yrs" "75.5yrs"
## [1] 367 550 733 916 1099 1282 1465 1648 1831 2014 2197 2380
## [13] 2563 2746 2929 3112 3295 3478 3661 3844 4027 4210 4393 4576
## [25] 4759 4942 5125 5308 5491 5674 5857 6040 6223 6406 6589 6772
## [37] 6955 7138 7321 7504 7687 7870 8053 8236 8419 8602 8785 8968
## [49] 9151 9334 9517 9700 9883 10066 10249 10432 10615 10798 10981 11164
## [61] 11347 11530 11713 11896 12079 12262 12445 12628 12811 12994 13177 13360
## [73] 13543 13726 13909 14092 14275 14458 14641 14824 15007 15190 15373 15556
## [85] 15739 15922 16105 16288 16471 16654 16837 17020 17203 17386 17569 17752
## [97] 17935 18118 18301 18484 18667 18850 19033 19216 19399 19582 19765 19948
## [109] 20131 20314 20497 20680 20863 21046 21229 21412 21595 21778 21961 22144
## [121] 22327 22510 22693 22876 23059 23242 23425 23608 23791 23974 24157 24340
## [133] 24523 24706 24889 25072 25255 25438 25621 25804 25987 26170 26353 26536
## [145] 26719 26902 27085 27268 27451 27634
## [1] "Coverage at each round"
## [1] "65%"
## [1] "ABR is"
## [1] "41922 bites person-1 yr-1 at endemic equilibria"
## [1] "1 yrs; 0.5 %"
## [1] "2 yrs; 1 %"
## [1] "3 yrs; 1.5 %"
## [1] "4 yrs; 2 %"
## [1] "5 yrs; 2.5 %"
## [1] "6 yrs; 3 %"
## [1] "7 yrs; 3.5 %"
## [1] "8 yrs; 4 %"
## [1] "9 yrs; 4.5 %"
## [1] "10 yrs; 5 %"
## [1] "11 yrs; 5.5 %"
## [1] "12 yrs; 6 %"
## [1] "13 yrs; 6.5 %"
## [1] "14 yrs; 7 %"
## [1] "15 yrs; 7.5 %"
## [1] "16 yrs; 8 %"
## [1] "17 yrs; 8.5 %"
## [1] "18 yrs; 9 %"
## [1] "19 yrs; 9.5 %"
## [1] "20 yrs; 10 %"
## [1] "21 yrs; 10.5 %"
## [1] "22 yrs; 11 %"
## [1] "23 yrs; 11.5 %"
## [1] "24 yrs; 12 %"
## [1] "25 yrs; 12.5 %"
## [1] "26 yrs; 13 %"
## [1] "27 yrs; 13.5 %"
## [1] "28 yrs; 14 %"
## [1] "29 yrs; 14.5 %"
## [1] "30 yrs; 15 %"
## [1] "31 yrs; 15.5 %"
## [1] "32 yrs; 16 %"
## [1] "33 yrs; 16.5 %"
## [1] "34 yrs; 17 %"
## [1] "35 yrs; 17.5 %"
## [1] "36 yrs; 18 %"
## [1] "37 yrs; 18.5 %"
## [1] "38 yrs; 19 %"
## [1] "39 yrs; 19.5 %"
## [1] "40 yrs; 20 %"
## [1] "41 yrs; 20.5 %"
## [1] "42 yrs; 21 %"
## [1] "43 yrs; 21.5 %"
## [1] "44 yrs; 22 %"
## [1] "45 yrs; 22.5 %"
## [1] "46 yrs; 23 %"
## [1] "47 yrs; 23.5 %"
## [1] "48 yrs; 24 %"
## [1] "49 yrs; 24.5 %"
## [1] "50 yrs; 25 %"
## [1] "51 yrs; 25.5 %"
## [1] "52 yrs; 26 %"
## [1] "53 yrs; 26.5 %"
## [1] "54 yrs; 27 %"
## [1] "55 yrs; 27.5 %"
## [1] "56 yrs; 28 %"
## [1] "57 yrs; 28.5 %"
## [1] "58 yrs; 29 %"
## [1] "59 yrs; 29.5 %"
## [1] "60 yrs; 30 %"
## [1] "61 yrs; 30.5 %"
## [1] "62 yrs; 31 %"
## [1] "63 yrs; 31.5 %"
## [1] "64 yrs; 32 %"
## [1] "65 yrs; 32.5 %"
## [1] "66 yrs; 33 %"
## [1] "67 yrs; 33.5 %"
## [1] "68 yrs; 34 %"
## [1] "69 yrs; 34.5 %"
## [1] "70 yrs; 35 %"
## [1] "71 yrs; 35.5 %"
## [1] "72 yrs; 36 %"
## [1] "73 yrs; 36.5 %"
## [1] "74 yrs; 37 %"
## [1] "75 yrs; 37.5 %"
## [1] "76 yrs; 38 %"
## [1] "77 yrs; 38.5 %"
## [1] "78 yrs; 39 %"
## [1] "79 yrs; 39.5 %"
## [1] "80 yrs; 40 %"
## [1] "81 yrs; 40.5 %"
## [1] "82 yrs; 41 %"
## [1] "83 yrs; 41.5 %"
## [1] "84 yrs; 42 %"
## [1] "85 yrs; 42.5 %"
## [1] "86 yrs; 43 %"
## [1] "87 yrs; 43.5 %"
## [1] "88 yrs; 44 %"
## [1] "89 yrs; 44.5 %"
## [1] "90 yrs; 45 %"
## [1] "91 yrs; 45.5 %"
## [1] "92 yrs; 46 %"
## [1] "93 yrs; 46.5 %"
## [1] "94 yrs; 47 %"
## [1] "95 yrs; 47.5 %"
## [1] "96 yrs; 48 %"
## [1] "97 yrs; 48.5 %"
## [1] "98 yrs; 49 %"
## [1] "99 yrs; 49.5 %"
## [1] "100 yrs; 50 %"
## [1] "101 yrs; 50.5 %"
## [1] "102 yrs; 51 %"
## [1] "103 yrs; 51.5 %"
## [1] "104 yrs; 52 %"
## [1] "105 yrs; 52.5 %"
## [1] "106 yrs; 53 %"
## [1] "107 yrs; 53.5 %"
## [1] "108 yrs; 54 %"
## [1] "109 yrs; 54.5 %"
## [1] "110 yrs; 55 %"
## [1] "111 yrs; 55.5 %"
## [1] "112 yrs; 56 %"
## [1] "113 yrs; 56.5 %"
## [1] "114 yrs; 57 %"
## [1] "115 yrs; 57.5 %"
## [1] "116 yrs; 58 %"
## [1] "117 yrs; 58.5 %"
## [1] "118 yrs; 59 %"
## [1] "119 yrs; 59.5 %"
## [1] "120 yrs; 60 %"
## [1] "121 yrs; 60.5 %"
## [1] "122 yrs; 61 %"
## [1] "123 yrs; 61.5 %"
## [1] "124 yrs; 62 %"
## [1] "125 yrs; 62.5 %"
## [1] "126 yrs; 63 %"
## [1] "127 yrs; 63.5 %"
## [1] "128 yrs; 64 %"
## [1] "129 yrs; 64.5 %"
## [1] "130 yrs; 65 %"
## [1] "131 yrs; 65.5 %"
## [1] "132 yrs; 66 %"
## [1] "133 yrs; 66.5 %"
## [1] "134 yrs; 67 %"
## [1] "135 yrs; 67.5 %"
## [1] "136 yrs; 68 %"
## [1] "137 yrs; 68.5 %"
## [1] "138 yrs; 69 %"
## [1] "139 yrs; 69.5 %"
## [1] "140 yrs; 70 %"
## [1] "141 yrs; 70.5 %"
## [1] "142 yrs; 71 %"
## [1] "143 yrs; 71.5 %"
## [1] "144 yrs; 72 %"
## [1] "145 yrs; 72.5 %"
## [1] "146 yrs; 73 %"
## [1] "147 yrs; 73.5 %"
## [1] "148 yrs; 74 %"
## [1] "149 yrs; 74.5 %"
## [1] "150 yrs; 75 %"
## [1] "151 yrs; 75.5 %"
## [1] "152 yrs; 76 %"
## [1] "153 yrs; 76.5 %"
## [1] "154 yrs; 77 %"
## [1] "155 yrs; 77.5 %"
## [1] "156 yrs; 78 %"
## [1] "157 yrs; 78.5 %"
## [1] "158 yrs; 79 %"
## [1] "159 yrs; 79.5 %"
## [1] "160 yrs; 80 %"
## [1] "161 yrs; 80.5 %"
## [1] "162 yrs; 81 %"
## [1] "163 yrs; 81.5 %"
## [1] "164 yrs; 82 %"
## [1] "165 yrs; 82.5 %"
## [1] "166 yrs; 83 %"
## [1] "167 yrs; 83.5 %"
## [1] "168 yrs; 84 %"
## [1] "169 yrs; 84.5 %"
## [1] "170 yrs; 85 %"
## [1] "171 yrs; 85.5 %"
## [1] "172 yrs; 86 %"
## [1] "173 yrs; 86.5 %"
## [1] "174 yrs; 87 %"
## [1] "175 yrs; 87.5 %"
## [1] "176 yrs; 88 %"
## [1] "177 yrs; 88.5 %"
## [1] "178 yrs; 89 %"
## [1] "179 yrs; 89.5 %"
## [1] "180 yrs; 90 %"
## [1] "181 yrs; 90.5 %"
## [1] "182 yrs; 91 %"
## [1] "183 yrs; 91.5 %"
## [1] "184 yrs; 92 %"
## [1] "185 yrs; 92.5 %"
## [1] "186 yrs; 93 %"
## [1] "187 yrs; 93.5 %"
## [1] "188 yrs; 94 %"
## [1] "189 yrs; 94.5 %"
## [1] "190 yrs; 95 %"
## [1] "191 yrs; 95.5 %"
## [1] "192 yrs; 96 %"
## [1] "193 yrs; 96.5 %"
## [1] "194 yrs; 97 %"
## [1] "195 yrs; 97.5 %"
## [1] "196 yrs; 98 %"
## [1] "197 yrs; 98.5 %"
## [1] "198 yrs; 99 %"
## [1] "199 yrs; 99.5 %"
Note than above trt.int = 0.5 (rather than
trt.int = 1) to request biannual MDA. The output can be
visualised using:
tme <- seq(1, 200*366-1)/366
plot(tme, output_treat_biannual_OAE$mf_prev, type = 'l', xlab = 'time', ylab = 'microfilarial prevalence', ylim = c(0, 1))
abline(v = seq(1, 75, 0.5), col = 'grey', lwd = 0.1)
tme2 <- seq(1, 200*366)/366
plot(tme2, output_treat_biannual_OAE$OAE_prev, type = 'l', xlab = 'time', ylab = 'OAE prevalence')
abline(v = seq(1, 75, 0.5), col = 'grey', lwd = 0.1)
The population level coverage is a proportion and is entered via
treat.prob. Note that because children <5 do not receive
treatment, coverage of 1 cannot be achieved. Additionally, there is the
option to set the proportion of individuals who never take treatment
(pnc = 0.05).
R Core Team. R: A language and environment for statistical computing. (R Foundation for Statistical Computing, 2018).
Csárdi, G. RCurl: Package ‘remotes’: R Package Installation from Remote Repositories, Including ‘GitHub’. (2022). https://cran.r-project.org/web/packages/remotes/