From 86a2b78ab751ad018fe23ac21433746bf9a1220f Mon Sep 17 00:00:00 2001 From: Becky Sweger Date: Wed, 27 Mar 2024 16:19:59 -0400 Subject: [PATCH 1/7] Add sample data script and corresponding .rda files Resolves #4. This changeset generates sample data files using data from the complex-example-forecast-hub. For this first pass, the samples are generated from local files (i.e., a cloned copy of complex-example-forcast-hub). Once complex-example-forecast-hub is fully onboarded to the cloud, we'll pull from there instead. --- DESCRIPTION | 3 ++ data-raw/generate_example_forecast_data.R | 35 ++++++++++++++++++++++ data/forecast_outputs.rda | Bin 0 -> 21069 bytes data/forecast_target_ts.rda | Bin 0 -> 10177 bytes data/forecast_target_values.rda | Bin 0 -> 13250 bytes 5 files changed, 38 insertions(+) create mode 100644 data-raw/generate_example_forecast_data.R create mode 100644 data/forecast_outputs.rda create mode 100644 data/forecast_target_ts.rda create mode 100644 data/forecast_target_values.rda diff --git a/DESCRIPTION b/DESCRIPTION index ba40654..7df53ab 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -15,3 +15,6 @@ Config/testthat/edition: 3 URL: https://github.com/Infectious-Disease-Modeling-Hubs/hubExamples BugReports: https://github.com/Infectious-Disease-Modeling-Hubs/hubExamples/issues Config/Needs/website: Infectious-Disease-Modeling-Hubs/hubStyle +Depends: + R (>= 2.10) +LazyData: true diff --git a/data-raw/generate_example_forecast_data.R b/data-raw/generate_example_forecast_data.R new file mode 100644 index 0000000..4d0d59e --- /dev/null +++ b/data-raw/generate_example_forecast_data.R @@ -0,0 +1,35 @@ +## code to prepare `forecast_outputss` dataset + + +library(distfromq) +library(dplyr) +library(ggplot2) +library(hubData) +library(readr) + +hub_path <- "~/code/example-complex-forecast-hub" +forecast_outputs <- hubData::connect_hub(hub_path) |> + dplyr::collect() + +q_lvls_keep <- c("0.05", "0.1", "0.25", "0.5", "0.75", "0.9", "0.95") +d_keep <- c("2022-11-19", "2022-12-17") +forecast_outputs <- forecast_outputs |> + dplyr::filter( + location %in% c("25", "48"), + (output_type != "quantile" | + (output_type == "quantile" & output_type_id %in% q_lvls_keep) + ), + reference_date %in% d_keep + ) + +target_ts_data_path <- file.path(hub_path, "target-data", "time-series.csv") +forecast_target_ts <- read_csv(target_ts_data_path) |> + as.data.frame() + +target_values_data_path <- file.path(hub_path, "target-data", "target-values.csv") +forecast_target_values <- read_csv(target_values_data_path) |> + as.data.frame() + +usethis::use_data(forecast_outputs, overwrite = TRUE) +usethis::use_data(forecast_target_ts, overwrite = TRUE) +usethis::use_data(forecast_target_values, overwrite = TRUE) diff --git a/data/forecast_outputs.rda b/data/forecast_outputs.rda new file mode 100644 index 0000000000000000000000000000000000000000..5c21cebd5683918c1aba132d3cd0b488f76b482d GIT binary patch literal 21069 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%0D%ALZgeH+_CNe&~8Wq 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Ⓢ8BN4i((*6TcEEqz27XkSd3OS;3QlEatgw-(q9r&i?k{ReBA{$LrJhV^)Dd*}cJi zC!ge9#2

MAxPA4fepF{_$4-^+AeJx<45|NgJq*%J%n5eyeYl=l~v=4Y9sSV{FQ8 z%bXs$d~JZpzdSG?oQ|>)Mv;CGqWWlr`$aXCsUdaJp?e@R-cRdO2eOQixzddGIjdIk zzI_?qlTiT#^{i4H62jS;f)>-k4_9zGk?GS-ZsW4ZY#+r+*PUj;;~GdeKT|df)t^2d z(XL&G%{Qcp9<{kS_qOYdP5MiRnq!@`w4)x_#a{g(fk|N5$ zC>!S`6BIhb$=Fn!Ev;PPHthsMP4nQPobaIQ;%N#q>extp4p^UzN|n_yb0dU^nUhP- zE3>POeQe82OAwq~=X_5j+Bz$j(1wM&2IpW3XsDYoZBZ7g$@#pqc_Gv+H`vIb**n!J z%iNqZI=-hx9nUPD<{2@p$?2){{SlSpo}SRGaW#Iur)r35YmsG{k|!-Y#Iv%p$9)7}G9x}F-IALhg&q>sM6;gm)re@_*{%e@avv@#21EQDL(YPtzUI>J%Y8QC~>@5K&7*+rBLji5&B)xhA6^RZoW-AXTdR z Date: Fri, 29 Mar 2024 11:54:02 -0400 Subject: [PATCH 2/7] Add description of the sample datasets These are descriptions are based on similar ones here: https://github.com/Infectious-Disease-Modeling-Hubs/hubEnsembles/blob/main/R/data.R They will likely require some edits, but this should be a reasonable start. --- R/data.R | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 R/data.R diff --git a/R/data.R b/R/data.R new file mode 100644 index 0000000..38a141f --- /dev/null +++ b/R/data.R @@ -0,0 +1,65 @@ +#' Forecast outputs +#' +#' Example forecast data that represents model outputs from a hub (in this case, forecast data +#' represents three influenza-related targets (wk inc flu hosp, wk flu hops rate category, +#' and wk flu hosp tate) for two reference dates in 2022. +#' +#' @format ## `forecast_outputs` +#' A data frame with 5,424 rows and 9 columns: +#' \describe{ +#' \item{location}{FIPS code identifying a location} +#' \item{reference_date}{the starting point of the forecast in yyyy-mm-dd format} +#' \item{horizon}{number of units ahead being forecasted (weeks, in this case)} +#' \item{target_end_date}{the date of occurrence of the outcome of interest in yyyy-mm-dd format; +#' this can be calculated directly from the `reference_date` and `horizon` +#' as follows: `target_end_date = reference_date + 7*horizon`} +#' \item{target}{a unique identifier for the target} +#' \item{output_type}{the type of representation of the prediction} +#' \item{output_type_id}{more identifying information specific to the output type; +#' output_type_id is not relevant for every kind of output_type (for example, +#' hubs will not expect output_type_id values when the output_type is mean or median} +#' \item{value}{the model’s prediction} +#' \item{model_id}{the name of the model} +#' ... +#' } +#' @source +"forecast_outputs" + +#' Forecast target time series +#' +#' Example time series target data from a hub that predicts influenza-related targets. +#' +#' @format ## `forecast_target_ts` +#' A data frame with 10,255 rows and 3 columns: +#' \describe{ +#' \item{date}{the date of the target observation in yyyy-mm-dd format} +#' \item{location}{FIPS code identifying a location} +#' \item{value}{the value of the target's observations} +#' ... +#' } +#' @source +"forecast_target_ts" + +#' Forecast target values +#' +#' Example target data that represents the source of "truth" that model output data +#' will be scored against. This example represents influenza-related targets. +#' +#' @format ## `forecast_target_values` +#' A data frame with 198,485 rows and 6 columns: +#' \describe{ +#' \item{location}{FIPS code identifying a location} +#' \item{target_end_date}{the target's obversation date in yyyy-mm-dd format; +#' this is used to match on the `target_end_date` field in model output data +#' submitted to the hub} +#' \item{target}{a unique identifier for the target} +#' \item{output_type}{the type of representation of the prediction} +#' \item{output_type_id}{more identifying information specific to the output type; +#' as in the model output data, output_type_id is not relevant for output_type +#' of mean and median; target data that represents quantile output_type will +#' not have an output_type_id.} +#' \item{value}{the value of the target's observations} +#' ... +#' } +#' @source +"forecast_target_values" \ No newline at end of file From 804db1d3ddf26548c94442f279e8eb4526ad0a73 Mon Sep 17 00:00:00 2001 From: Evan Ray Date: Fri, 29 Mar 2024 12:38:54 -0400 Subject: [PATCH 3/7] some updates to documentation --- DESCRIPTION | 2 +- R/data.R | 49 ++++++++++++++----------- man/forecast_data.Rd | 85 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 115 insertions(+), 21 deletions(-) create mode 100644 man/forecast_data.Rd diff --git a/DESCRIPTION b/DESCRIPTION index 7df53ab..be023dc 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -8,7 +8,7 @@ Description: What the package does (one paragraph). License: MIT + file LICENSE Encoding: UTF-8 Roxygen: list(markdown = TRUE) -RoxygenNote: 7.2.3 +RoxygenNote: 7.3.1 Suggests: testthat (>= 3.0.0) Config/testthat/edition: 3 diff --git a/R/data.R b/R/data.R index 38a141f..666e0a1 100644 --- a/R/data.R +++ b/R/data.R @@ -1,65 +1,74 @@ +#' Example forecast hub data +#' +#' The hubExamples package provides three data sets that contain example model output and +#' target data for an example forecast hub: `forecast_outputs`, `forecast_target_ts`, and +#' 'forecast_target_values'. +#' +#' @name forecast_data +#' @source +NULL + #' Forecast outputs #' -#' Example forecast data that represents model outputs from a hub (in this case, forecast data -#' represents three influenza-related targets (wk inc flu hosp, wk flu hops rate category, -#' and wk flu hosp tate) for two reference dates in 2022. +#' `forecast_outputs` contains example forecast data that represents model outputs from a forecast hub +#' with predictions for three influenza-related targets (wk inc flu hosp, wk flu hops rate category, +#' and wk flu hosp rate) for two reference dates in 2022. #' #' @format ## `forecast_outputs` #' A data frame with 5,424 rows and 9 columns: #' \describe{ #' \item{location}{FIPS code identifying a location} #' \item{reference_date}{the starting point of the forecast in yyyy-mm-dd format} -#' \item{horizon}{number of units ahead being forecasted (weeks, in this case)} +#' \item{horizon}{number of time units ahead being forecasted relative to the +#' `reference_date`, in units of weeks} #' \item{target_end_date}{the date of occurrence of the outcome of interest in yyyy-mm-dd format; #' this can be calculated directly from the `reference_date` and `horizon` #' as follows: `target_end_date = reference_date + 7*horizon`} #' \item{target}{a unique identifier for the target} #' \item{output_type}{the type of representation of the prediction} #' \item{output_type_id}{more identifying information specific to the output type; -#' output_type_id is not relevant for every kind of output_type (for example, -#' hubs will not expect output_type_id values when the output_type is mean or median} +#' `output_type_id` is not relevant for every kind of `output_type` (for example, +#' hubs will not expect `output_type_id` values when the `output_type` is mean or median} #' \item{value}{the model’s prediction} #' \item{model_id}{the name of the model} -#' ... #' } -#' @source +#' @rdname forecast_data "forecast_outputs" #' Forecast target time series #' -#' Example time series target data from a hub that predicts influenza-related targets. +#' `forecast_target_ts` contains time series target data from a hub that predicts influenza-related targets. #' #' @format ## `forecast_target_ts` #' A data frame with 10,255 rows and 3 columns: #' \describe{ #' \item{date}{the date of the target observation in yyyy-mm-dd format} #' \item{location}{FIPS code identifying a location} -#' \item{value}{the value of the target's observations} -#' ... +#' \item{value}{a count of hospital admissions in the given `location` +#' in the week ending on the given `date`.} #' } -#' @source +#' @rdname forecast_data "forecast_target_ts" #' Forecast target values #' -#' Example target data that represents the source of "truth" that model output data +#' `forecast_target_values` contains target data that represents the source of "truth" that model output data #' will be scored against. This example represents influenza-related targets. #' #' @format ## `forecast_target_values` #' A data frame with 198,485 rows and 6 columns: #' \describe{ #' \item{location}{FIPS code identifying a location} -#' \item{target_end_date}{the target's obversation date in yyyy-mm-dd format; +#' \item{target_end_date}{the target's observation date in yyyy-mm-dd format; #' this is used to match on the `target_end_date` field in model output data #' submitted to the hub} #' \item{target}{a unique identifier for the target} #' \item{output_type}{the type of representation of the prediction} #' \item{output_type_id}{more identifying information specific to the output type; -#' as in the model output data, output_type_id is not relevant for output_type -#' of mean and median; target data that represents quantile output_type will -#' not have an output_type_id.} -#' \item{value}{the value of the target's observations} -#' ... +#' as in the model output data, `output_type_id` is not relevant for `output_type` +#' of mean and median; target data that represents quantile `output_type` will +#' not have an `output_type_id`.} +#' \item{value}{the observed value of the target} #' } -#' @source +#' @rdname forecast_data "forecast_target_values" \ No newline at end of file diff --git a/man/forecast_data.Rd b/man/forecast_data.Rd new file mode 100644 index 0000000..7aa86b6 --- /dev/null +++ b/man/forecast_data.Rd @@ -0,0 +1,85 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/data.R +\docType{data} +\name{forecast_data} +\alias{forecast_data} +\alias{forecast_outputs} +\alias{forecast_target_ts} +\alias{forecast_target_values} +\title{Example forecast hub data} +\format{ +\subsection{\code{forecast_outputs}}{ + +A data frame with 5,424 rows and 9 columns: +\describe{ +\item{location}{FIPS code identifying a location} +\item{reference_date}{the starting point of the forecast in yyyy-mm-dd format} +\item{horizon}{number of time units ahead being forecasted relative to the +\code{reference_date}, in units of weeks} +\item{target_end_date}{the date of occurrence of the outcome of interest in yyyy-mm-dd format; +this can be calculated directly from the \code{reference_date} and \code{horizon} +as follows: \code{target_end_date = reference_date + 7*horizon}} +\item{target}{a unique identifier for the target} +\item{output_type}{the type of representation of the prediction} +\item{output_type_id}{more identifying information specific to the output type; +\code{output_type_id} is not relevant for every kind of \code{output_type} (for example, +hubs will not expect \code{output_type_id} values when the \code{output_type} is mean or median} +\item{value}{the model’s prediction} +\item{model_id}{the name of the model} +} +} + +\subsection{\code{forecast_target_ts}}{ + +A data frame with 10,255 rows and 3 columns: +\describe{ +\item{date}{the date of the target observation in yyyy-mm-dd format} +\item{location}{FIPS code identifying a location} +\item{value}{a count of hospital admissions in the given \code{location} +in the week ending on the given \code{date}.} +} +} + +\subsection{\code{forecast_target_values}}{ + +A data frame with 198,485 rows and 6 columns: +\describe{ +\item{location}{FIPS code identifying a location} +\item{target_end_date}{the target's observation date in yyyy-mm-dd format; +this is used to match on the \code{target_end_date} field in model output data +submitted to the hub} +\item{target}{a unique identifier for the target} +\item{output_type}{the type of representation of the prediction} +\item{output_type_id}{more identifying information specific to the output type; +as in the model output data, \code{output_type_id} is not relevant for \code{output_type} +of mean and median; target data that represents quantile \code{output_type} will +not have an \code{output_type_id}.} +\item{value}{the observed value of the target} +} +} +} +\source{ +\url{https://github.com/Infectious-Disease-Modeling-Hubs/example-complex-forecast-hub/} +} +\usage{ +forecast_outputs + +forecast_target_ts + +forecast_target_values +} +\description{ +The hubExamples package provides three data sets that contain example model output and +target data for an example forecast hub: \code{forecast_outputs}, \code{forecast_target_ts}, and +'forecast_target_values'. + +\code{forecast_outputs} contains example forecast data that represents model outputs from a forecast hub +with predictions for three influenza-related targets (wk inc flu hosp, wk flu hops rate category, +and wk flu hosp rate) for two reference dates in 2022. + +\code{forecast_target_ts} contains time series target data from a hub that predicts influenza-related targets. + +\code{forecast_target_values} contains target data that represents the source of "truth" that model output data +will be scored against. This example represents influenza-related targets. +} +\keyword{datasets} From 23f3ce8e1d73f25323a1b36c55701df410dbe2b8 Mon Sep 17 00:00:00 2001 From: Becky Sweger Date: Fri, 29 Mar 2024 14:01:38 -0400 Subject: [PATCH 4/7] Add a note about forecast outputs reflecting model outputs from hubData --- R/data.R | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/R/data.R b/R/data.R index 666e0a1..3accb13 100644 --- a/R/data.R +++ b/R/data.R @@ -12,7 +12,9 @@ NULL #' #' `forecast_outputs` contains example forecast data that represents model outputs from a forecast hub #' with predictions for three influenza-related targets (wk inc flu hosp, wk flu hops rate category, -#' and wk flu hosp rate) for two reference dates in 2022. +#' and wk flu hosp rate) for two reference dates in 2022. This dataset reflect forecast outputs as they look +#' when retrieved from a hub via the `hubData` package (which is slightly different than they look +#' when originally submitted by modelers). #' #' @format ## `forecast_outputs` #' A data frame with 5,424 rows and 9 columns: From 6185ceabce67226691aa42f060cc56d8c147724e Mon Sep 17 00:00:00 2001 From: Becky Sweger Date: Fri, 29 Mar 2024 14:11:38 -0400 Subject: [PATCH 5/7] Remove tests directory Rightly or wrongly, we've decided that this repo doesn't need tests. However, the lack of them is causing a CI failure. This commit is to see what happens if we just remove the tests directory. --- tests/testthat.R | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 tests/testthat.R diff --git a/tests/testthat.R b/tests/testthat.R deleted file mode 100644 index 0ecf280..0000000 --- a/tests/testthat.R +++ /dev/null @@ -1,12 +0,0 @@ -# This file is part of the standard setup for testthat. -# It is recommended that you do not modify it. -# -# Where should you do additional test configuration? -# Learn more about the roles of various files in: -# * https://r-pkgs.org/testing-design.html#sec-tests-files-overview -# * https://testthat.r-lib.org/articles/special-files.html - -library(testthat) -library(hubExamples) - -test_check("hubExamples") From 086eddd37bfba3562739f22b62cedbf8dbe9444a Mon Sep 17 00:00:00 2001 From: Becky Sweger Date: Fri, 29 Mar 2024 14:16:55 -0400 Subject: [PATCH 6/7] Appease the lintr --- R/data.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/data.R b/R/data.R index 3accb13..9f19954 100644 --- a/R/data.R +++ b/R/data.R @@ -73,4 +73,4 @@ NULL #' \item{value}{the observed value of the target} #' } #' @rdname forecast_data -"forecast_target_values" \ No newline at end of file +"forecast_target_values" From 21a01476b5b2092aa5d02467c555426db2c71073 Mon Sep 17 00:00:00 2001 From: Becky Sweger Date: Fri, 29 Mar 2024 14:21:38 -0400 Subject: [PATCH 7/7] Remove Netlify preview --- .../workflows/pkgdown-netlify-preview.yaml | 74 ------------------- 1 file changed, 74 deletions(-) delete mode 100644 .github/workflows/pkgdown-netlify-preview.yaml diff --git a/.github/workflows/pkgdown-netlify-preview.yaml b/.github/workflows/pkgdown-netlify-preview.yaml deleted file mode 100644 index 2c51f01..0000000 --- a/.github/workflows/pkgdown-netlify-preview.yaml +++ /dev/null @@ -1,74 +0,0 @@ -# # Workflow derived from https://github.com/r-lib/pkgdown/blob/main/.github/workflows/pkgdown.yaml -# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help -on: - push: - branches: [main, master] - pull_request: - branches: [main, master] - release: - types: [published] - workflow_dispatch: - -name: pkgdown-pr-preview - -jobs: - pkgdown-pr-preview: - if: github.event_name == 'push' || github.event.pull_request.head.repo.fork == false - runs-on: ubuntu-latest - # Only restrict concurrency for non-PR jobs - concurrency: - group: pkgdown-${{ github.event_name != 'pull_request' || github.run_id }} - env: - GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} - NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} - NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} - isPush: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }} - permissions: - contents: write - pull-requests: write - steps: - - uses: actions/checkout@v3 - - - uses: r-lib/actions/setup-tinytex@v2 - - - uses: r-lib/actions/setup-pandoc@v2 - - - uses: r-lib/actions/setup-r@v2 - with: - use-public-rspm: true - - - uses: r-lib/actions/setup-r-dependencies@v2 - with: - extra-packages: any::pkgdown, local::. - needs: website - - - name: Build site - run: pkgdown::build_site_github_pages(new_process = FALSE, install = FALSE) - shell: Rscript {0} - - - name: Deploy production to GitHub pages 🚀 - if: contains(env.isPush, 'true') - uses: JamesIves/github-pages-deploy-action@v4.4.1 - with: - clean: false - branch: gh-pages - folder: docs - - - name: Deploy PR preview to Netlify - if: contains(env.isPush, 'false') - id: netlify-deploy - uses: nwtgck/actions-netlify@v2 - with: - publish-dir: './docs' - production-branch: main - github-token: ${{ secrets.GITHUB_TOKEN }} - deploy-message: - 'Deploy from GHA: ${{ github.event.pull_request.title || github.event.head_commit.message }} (${{ github.sha }})' - enable-pull-request-comment: true - enable-commit-comment: false - enable-commit-status: false - enable-github-deployment: false - overwrites-pull-request-comment: true - fails-without-credentials: true - - timeout-minutes: 1