knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
library(diseasystore)
if (rlang::is_installed("withr")) { withr::local_options( "tibble.print_min" = 5, "diseasystore.verbose" = FALSE, "diseasystore.DiseasystoreEcdcRespiratoryViruses.pull" = FALSE ) } else { opts <- options( "tibble.print_min" = 5, "diseasystore.verbose" = FALSE, "diseasystore.DiseasystoreEcdcRespiratoryViruses.pull" = FALSE ) } # We have a "hard" dependency for duckdb to render parts of this vignette suggests_available <- rlang::is_installed("duckdb") 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 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.
# 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 )
# 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, "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 files_missing <- purrr::some( test_file, ~ !checkmate::test_file_exists(file.path(local_conn, .)) ) if (files_missing) { 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.
# We define target_conn as a function that opens a DBIconnection to the DB target_conn <- \() DBI::dbConnect(duckdb::duckdb()) options( "diseasystore.DiseasystoreEcdcRespiratoryViruses.target_conn" = target_conn )
target_conn <- \() DBI::dbConnect(duckdb::duckdb()) 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.
ds <- DiseasystoreEcdcRespiratoryViruses$new()
Once configured such, we can use the feature store directly to get data.
# 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.
# Manually update the repository system2( "git", args = paste( "-C", diseasyoption("source_conn", "DiseasystoreEcdcRespiratoryViruses") ), stdout = TRUE ) # Disable automatic pulls options("diseasystore.DiseasystoreEcdcRespiratoryViruses.pull" = FALSE)
# 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") )
if (exists("ds")) rm(ds) gc() if (!rlang::is_installed("withr")) { options(opts) }
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.