-
Notifications
You must be signed in to change notification settings - Fork 1
/
diseasystore-ecdc-respiratory-viruses.Rmd
171 lines (141 loc) · 5.89 KB
/
diseasystore-ecdc-respiratory-viruses.Rmd
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
---
title: "diseasystore: ECDC Respiratory Viruses Weekly"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{diseasystore: ECDC Respiratory Viruses Weekly}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
```
```{r setup}
library(diseasystore)
```
```{r hidden_options, include = FALSE}
if (rlang::is_installed("withr")) {
withr::local_options("tibble.print_min" = 5)
withr::local_options("diseasystore.verbose" = FALSE)
withr::local_options("diseasystore.DiseasystoreEcdcRespiratoryViruses.pull" = FALSE)
} else {
opts <- options(
"tibble.print_min" = 5,
"diseasystore.verbose" = FALSE,
"diseasystore.DiseasystoreEcdcRespiratoryViruses.pull" = FALSE
)
}
# We have a "hard" dependency for RSQLite to render parts of this vignette
suggests_available <- rlang::is_installed("RSQLite")
not_on_cran <- interactive() || identical(Sys.getenv("NOT_CRAN"), "true") || identical(Sys.getenv("CI"), "true")
```
The Respiratory viruses weekly repository contains weekly summaries of the
[erviss](https://www.ecdc.europa.eu/en/publications-data/european-respiratory-virus-surveillance-summary-erviss) data
for Influenza-Like Illness (ILI) and Acute Respiratory Infection (ARI).
This vignette shows how to use (some of) this data through the `diseasystore` package.
First, it is a good idea to clone the repository locally and store that location as an option for the package.
```{r download_data, eval = FALSE}
# First we set the path we want to use as an option
options(
"diseasystore.DiseasystoreEcdcRespiratoryViruses.source_conn" =
file.path("local", "path")
)
# Ensure folder exists
source_conn <- diseasyoption("source_conn", "DiseasystoreEcdcRespiratoryViruses")
if (!dir.exists(source_conn)) {
dir.create(source_conn, recursive = TRUE, showWarnings = FALSE)
}
# Clone the repository
system2(
"git",
args = c(
paste("-C", source_conn),
"clone https://github.com/EU-ECDC/Respiratory_viruses_weekly_data"
),
stdout = TRUE
)
```
```{r download_data_hidden, include = FALSE, eval = not_on_cran}
# In practice, it is best to make a local copy of the data which is stored in the "vignette_data" folder
# This folder can either be in the package folder (preferred, please create the folder) or in the tempdir()
local_conn <- purrr::detect("vignette_data", checkmate::test_directory_exists, .default = tempdir())
if (rlang::is_installed("withr")) {
withr::local_options("diseasystore.DiseasystoreEcdcRespiratoryViruses.source_conn" = local_conn)
withr::local_options("diseasystore.DiseasystoreEcdcRespiratoryViruses.n_max" = 1000)
} else {
opts <- c(opts, options("diseasystore.DiseasystoreEcdcRespiratoryViruses.source_conn" = local_conn,
"diseasystore.DiseasystoreEcdcRespiratoryViruses.n_max" = 1000))
}
# Define the ECDC file to download
test_file <- "data/snapshots/2023-11-24_ILIARIRates.csv"
# Create folder and download file
dir.create(dirname(file.path(local_conn, test_file)), recursive = TRUE, showWarnings = FALSE)
if (!file.exists(file.path(local_conn, test_file))) {
remote_file <- source_conn_github(
diseasyoption("remote_conn", "DiseasystoreEcdcRespiratoryViruses"),
test_file
)
readr::read_csv(remote_file, n_max = 1000, show_col_types = FALSE, progress = FALSE) |>
readr::write_csv(file.path(local_conn, test_file))
}
# Check that the files are available after attempting to download
if (purrr::some(test_file, ~ !checkmate::test_file_exists(file.path(local_conn, .)))) {
data_available <- FALSE
} else {
data_available <- TRUE
}
```
The `diseasystores` require a database to store its features in.
These should be configured before use and can be stored in the packages options.
```{r configure_diseasystore, eval = FALSE}
# We define target_conn as a function that opens a DBIconnection to the DB
target_conn <- \() DBI::dbConnect(RSQLite::SQLite())
options(
"diseasystore.DiseasystoreEcdcRespiratoryViruses.target_conn" = target_conn
)
```
```{r configure_diseasystore_hidden, include = FALSE, eval = not_on_cran && suggests_available && data_available}
target_conn <- \() DBI::dbConnect(RSQLite::SQLite())
if (rlang::is_installed("withr")) {
withr::local_options("diseasystore.DiseasystoreEcdcRespiratoryViruses.target_conn" = target_conn)
} else {
opts <- c(opts, options("diseasystore.DiseasystoreEcdcRespiratoryViruses.target_conn" = target_conn))
}
```
Once the files are downloaded and the target database is configured, we can initialize the `diseasystore` that uses the
ECDC Respiratory Viruses Weekly data.
```{r initializing_diseasystore, eval = not_on_cran && suggests_available && data_available}
ds <- DiseasystoreEcdcRespiratoryViruses$new()
```
Once configured such, we can use the feature store directly to get data.
```{r using_diseasystore_example_1, eval = not_on_cran && suggests_available && data_available}
# We can see all the available features in the feature store
ds$available_features
```
If you have locally cloned the repository, you may consider pulling data from the repository manually and disabling
automatic pulls. Otherwise, the `diseasystore` will check for updates every time you request a feature.
```{r using_diseasystore_example_2, eval = FALSE}
# Manually update the repository
system2(
"git",
args = paste("-C", diseasyoption("source_conn", "DiseasystoreEcdcRespiratoryViruses")),
stdout = TRUE
)
# Disable automatic pulls
options("diseasystore.DiseasystoreEcdcRespiratoryViruses.pull" = FALSE)
```
```{r using_diseasystore_example_3, eval = not_on_cran && suggests_available && data_available}
# And then retrieve a feature from the feature store
ds$get_feature(feature = "iliari_rates",
start_date = as.Date("2023-01-01"),
end_date = as.Date("2023-03-01"))
```
```{r cleanup, include = FALSE}
if (exists("ds")) rm(ds)
gc()
if (!rlang::is_installed("withr")) {
options(opts)
}
```