-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprocessWHO.R
50 lines (42 loc) · 1.1 KB
/
processWHO.R
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
suppressPackageStartupMessages({
require(data.table)
require(jsonlite)
})
.args <- if (interactive()) {
c("2020-03-25", "outputs/params", "inputs/latest-WHO.rds", "-par.json")
} else commandArgs(trailingOnly = TRUE)
datelim <- as.Date(.args[1])
SR <- readRDS(.args[2])
tardir <- .args[3]
stem <- tail(.args, 1)
atleastone <- SR[date <= datelim][
measure == "cases",
.(any=sum(value, na.rm = T)),
by=country
][
any > 0, country
]
slice <- SR[
(date <= datelim) & (country %in% atleastone) & (value < 25) & (measure == "cases")
][
order(date),
.(date, detected=c(value[1], diff(value))),
keyby = country
][, .SD[which.max(detected > 0):.N], keyby=country]
# assume all reductions are erroneous
slice[detected < 0, detected := 0]
ctys <- unique(slice$country)
mods <- lapply(ctys, function(cnty) {
subslice <- slice[country == cnty]
list(
locale = cnty,
day0 = subslice[1, date]-1,
initial = rep(0:(dim(subslice)[1]-1), subslice$detected)
)
})
lapply(mods, function(mod) {
write_json(mod,
sprintf("%s/%s%s", tardir, mod$locale, stem),
pretty = TRUE, auto_unbox = TRUE
)
})