From d94b6bdc53934dd0054645142c65e652d762b979 Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Mon, 4 Nov 2024 21:51:09 -0800 Subject: [PATCH 01/30] - added test data --- R/example_noise_params_pk.R | 28 +++++++++++++ R/example_typhoid_curves_nostrat.R | 20 +++++++++ R/sees_pop_data_pakistan_100.R | 37 +++++++++++++++++ data-raw/example_noise_params_pk.R | 5 +++ data-raw/sees_pop_data_pakistan_100.R | 23 +++++++++++ data-raw/typhoid_curves_nostrat_100.R | 5 +++ data/example_noise_params_pk.rda | Bin 0 -> 524 bytes data/sees_pop_data_pk_100_nonstandardized.rda | Bin 0 -> 3821 bytes data/sees_pop_data_pk_100_standardized.rda | Bin 0 -> 3829 bytes data/typhoid_curves_nostrat_100.rda | Bin 0 -> 20921 bytes man/example_noise_params_pk.Rd | 39 ++++++++++++++++++ man/sees_pop_data_pk_100_nonstandardized.Rd | 32 ++++++++++++++ man/sees_pop_data_pk_100_standardized.Rd | 32 ++++++++++++++ man/typhoid_curves_nostrat_100.Rd | 33 +++++++++++++++ 14 files changed, 254 insertions(+) create mode 100644 R/example_noise_params_pk.R create mode 100644 R/example_typhoid_curves_nostrat.R create mode 100644 R/sees_pop_data_pakistan_100.R create mode 100644 data-raw/example_noise_params_pk.R create mode 100644 data-raw/sees_pop_data_pakistan_100.R create mode 100644 data-raw/typhoid_curves_nostrat_100.R create mode 100644 data/example_noise_params_pk.rda create mode 100644 data/sees_pop_data_pk_100_nonstandardized.rda create mode 100644 data/sees_pop_data_pk_100_standardized.rda create mode 100644 data/typhoid_curves_nostrat_100.rda create mode 100644 man/example_noise_params_pk.Rd create mode 100644 man/sees_pop_data_pk_100_nonstandardized.Rd create mode 100644 man/sees_pop_data_pk_100_standardized.Rd create mode 100644 man/typhoid_curves_nostrat_100.Rd diff --git a/R/example_noise_params_pk.R b/R/example_noise_params_pk.R new file mode 100644 index 00000000..ac380f40 --- /dev/null +++ b/R/example_noise_params_pk.R @@ -0,0 +1,28 @@ +#' @title Small example of noise parameters for typhoid +#' +#' @description A subset of noise parameter estimates from the SEES study, +#' for examples and testing. +#' +#' @format ## `example_noise_params_pk` +#' A `curve_params` object (from [as_curve_params()]) with 4 rows and 7 columns: +#' \describe{ +#' \item{antigen_iso}{which antigen and isotype are being measured +#' (data is in long format)} +#' \item{Country}{Location for which the noise parameters were estimated} +#' \item{y.low}{Lower limit of detection} +#' \item{eps}{Measurement noise, defined by a CV (coefficient of variation) +#' as the ratio of the standard deviation to the mean for replicates. +#' Note that the CV should ideally be measured across plates +#' rather than within the same plate.} +#' \item{nu}{Biological noise: error from cross-reactivity to other antibodies. +#' It is defined as the 95th percentile of +#' the distribution of antibody responses to the antigen-isotype +#' in a population with no exposure.} +#' \item{y.high}{Upper limit of detection} +#' \item{Lab}{Lab for which noise was estimated.} +#' } +#' @source +"example_noise_params_pk" + + + diff --git a/R/example_typhoid_curves_nostrat.R b/R/example_typhoid_curves_nostrat.R new file mode 100644 index 00000000..62775696 --- /dev/null +++ b/R/example_typhoid_curves_nostrat.R @@ -0,0 +1,20 @@ +#' Small example of antibody response curve parameters for typhoid +#' +#' A subset of data from the SEES study, for examples and testing. +#' +#' @format ## `typhoid_curves_nostrat_100` +#' A `curve_params` object (from [as_curve_params()]) with 500 rows and 7 +#' columns: +#' \describe{ +#' \item{antigen_iso}{which antigen and isotype are being measured +#' (data is in long format)} +#' \item{iter}{MCMC iteration} +#' \item{y0}{Antibody concentration at t = 0 (start of active infection)} +#' \item{y1}{Antibody concentration at t = `t1` (end of active infection)} +#' \item{t1}{Duration of active infection} +#' \item{alpha}{Antibody decay rate coefficient} +#' \item{r}{Antibody decay rate exponent parameter} +#' } +#' @source +"typhoid_curves_nostrat_100" + diff --git a/R/sees_pop_data_pakistan_100.R b/R/sees_pop_data_pakistan_100.R new file mode 100644 index 00000000..93677dae --- /dev/null +++ b/R/sees_pop_data_pakistan_100.R @@ -0,0 +1,37 @@ +#' Small example cross-sectional data set +#' +#' A subset of data from the SEES data, for examples and testing. +#' +#' @format ## `sees_pop_data_pk_100_standardized` +#' A `pop_data` object (from [as_pop_data()]) with 200 rows and 8 columns: +#' \describe{ +#' \item{id}{Observation ID} +#' \item{Country}{Country where the participant was living} +#' \item{cluster}{survey sampling cluster} +#' \item{catchment}{survey catchment area} +#' \item{age}{participant's age when sampled, in years} +#' \item{antigen_iso}{which antigen and isotype are being measured +#' (data is in long format)} +#' \item{value}{concentration of antigen isotype, in ELISA units} +#' } +#' @source +"sees_pop_data_pk_100_standardized" + +#' Small example cross-sectional data set +#' +#' A subset of data from the SEES data, for examples and testing. +#' +#' @format ## `sees_pop_data_pk_100_nonstandardized` +#' A `pop_data` object (from [as_pop_data()]) with 200 rows and 8 columns: +#' \describe{ +#' \item{index_id}{Observation ID} +#' \item{Country}{Country where the participant was living} +#' \item{cluster}{survey sampling cluster} +#' \item{catchment}{survey catchment area} +#' \item{Age}{participant's age when sampled, in years} +#' \item{antigen_iso}{which antigen and isotype are being measured +#' (data is in long format)} +#' \item{result}{concentration of antigen isotype, in ELISA units} +#' } +#' @source +"sees_pop_data_pk_100_nonstandardized" diff --git a/data-raw/example_noise_params_pk.R b/data-raw/example_noise_params_pk.R new file mode 100644 index 00000000..650dfb56 --- /dev/null +++ b/data-raw/example_noise_params_pk.R @@ -0,0 +1,5 @@ +example_noise_params_pk <- + load_noise_params("https://osf.io/download//hqy4v/") %>% + filter(Country == "Pakistan") + +usethis::use_data(example_noise_params_pk, overwrite = TRUE) diff --git a/data-raw/sees_pop_data_pakistan_100.R b/data-raw/sees_pop_data_pakistan_100.R new file mode 100644 index 00000000..b9139d85 --- /dev/null +++ b/data-raw/sees_pop_data_pakistan_100.R @@ -0,0 +1,23 @@ +sees_pop_data_pk_100_standardized <- load_pop_data( + file_path = "https://osf.io/download//n6cp3/", + age = "Age", + value = "result", + id = "index_id", + standardize = TRUE +) %>% + filter(Country == "Pakistan") %>% + slice_head(n = 100, by = antigen_iso) + +usethis::use_data(sees_pop_data_pk_100_standardized, overwrite = TRUE) + +sees_pop_data_pk_100_nonstandardized <- load_pop_data( + file_path = "https://osf.io/download//n6cp3/", + age = "Age", + value = "result", + id = "index_id", + standardize = FALSE +) %>% + filter(Country == "Pakistan") %>% + slice_head(n = 100, by = antigen_iso) + +usethis::use_data(sees_pop_data_pk_100_nonstandardized, overwrite = TRUE) diff --git a/data-raw/typhoid_curves_nostrat_100.R b/data-raw/typhoid_curves_nostrat_100.R new file mode 100644 index 00000000..b51057d2 --- /dev/null +++ b/data-raw/typhoid_curves_nostrat_100.R @@ -0,0 +1,5 @@ +typhoid_curves_nostrat_100 = + load_curve_params("https://osf.io/download/rtw5k/") %>% + dplyr::filter(iter %in% 1:100) + +usethis::use_data(typhoid_curves_nostrat_100, overwrite = TRUE) diff --git a/data/example_noise_params_pk.rda b/data/example_noise_params_pk.rda new file mode 100644 index 0000000000000000000000000000000000000000..685d12f3c18045e40b334db4d3516064d1cd1199 GIT binary patch literal 524 zcmV+n0`vVsT4*^jL0KkKS-7ka_W%J%fB*mgT&w^Em;(RrTgd!Mn|a8q3Q;J4Lu`G9+T8G(Da_BPg6rjlnqq! zDe7$0&?adOk{FDbO${1oGBncyFqoP$88l)v#KH+BH8f9Aq3UD+0000005Sm6KmY&$ zY2pl=LNG^ka*dG007XO)gXt0?JOL|{`>~xkX)Neo4;K~TvF$pFcDvJmqDl=26J_bbn{ zHCrG__DMd%5enDYr)?lXI23@ES^&xfdTK4Cl$jxS)_cycJ(poPeOL`zwL0KOh;lB5 zT(>2h1Qh|!3C*|222cTu;3E#TV>kkgvZx0Erz%^E8^hVBXbGU8qh*o8N;eFgjqsd% zG?Nb?6ymVmWdv7kUEYd6a||)dHhrtZi*v&)Bo9wFR^fELLr_WxNq0eYdZ@>RgF z4S@EBeG~=YXd>lL1=Ms`Y)ULiZlG=p(zEo^U9?hbh$)LkK*%I=h=qZ~2$L`I$i3NW z9D)Sc7@&<%aL5m(G}?Z-=j$|`3P}D#Dg`M3Q3NnTjK{IGA^tK~d*~F5L@FTP O;_gVN3KAC;f*#;R#@&bj literal 0 HcmV?d00001 diff --git a/data/sees_pop_data_pk_100_nonstandardized.rda b/data/sees_pop_data_pk_100_nonstandardized.rda new file mode 100644 index 0000000000000000000000000000000000000000..0d3890a1401bb19d6a6bdc965b7809d08e00f192 GIT binary patch literal 3821 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 literal 0 HcmV?d00001 diff --git a/data/sees_pop_data_pk_100_standardized.rda b/data/sees_pop_data_pk_100_standardized.rda new file mode 100644 index 0000000000000000000000000000000000000000..a164d7ae0701a657da5015312c952115c2752954 GIT binary patch literal 3829 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 literal 0 HcmV?d00001 diff --git a/data/typhoid_curves_nostrat_100.rda b/data/typhoid_curves_nostrat_100.rda new file mode 100644 index 0000000000000000000000000000000000000000..f091aad521f69f18ea5e8d8f1bada815c8820d62 GIT binary patch literal 20921 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 literal 0 HcmV?d00001 diff --git a/man/example_noise_params_pk.Rd b/man/example_noise_params_pk.Rd new file mode 100644 index 00000000..d19565f4 --- /dev/null +++ b/man/example_noise_params_pk.Rd @@ -0,0 +1,39 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/example_noise_params_pk.R +\docType{data} +\name{example_noise_params_pk} +\alias{example_noise_params_pk} +\title{Small example of noise parameters for typhoid} +\format{ +\subsection{\code{example_noise_params_pk}}{ + +A \code{curve_params} object (from \code{\link[=as_curve_params]{as_curve_params()}}) with 4 rows and 7 columns: +\describe{ +\item{antigen_iso}{which antigen and isotype are being measured +(data is in long format)} +\item{Country}{Location for which the noise parameters were estimated} +\item{y.low}{Lower limit of detection} +\item{eps}{Measurement noise, defined by a CV (coefficient of variation) +as the ratio of the standard deviation to the mean for replicates. +Note that the CV should ideally be measured across plates +rather than within the same plate.} +\item{nu}{Biological noise: error from cross-reactivity to other antibodies. +It is defined as the 95th percentile of +the distribution of antibody responses to the antigen-isotype +in a population with no exposure.} +\item{y.high}{Upper limit of detection} +\item{Lab}{Lab for which noise was estimated.} +} +} +} +\source{ +\url{https://osf.io/rtw5k} +} +\usage{ +example_noise_params_pk +} +\description{ +A subset of noise parameter estimates from the SEES study, +for examples and testing. +} +\keyword{datasets} diff --git a/man/sees_pop_data_pk_100_nonstandardized.Rd b/man/sees_pop_data_pk_100_nonstandardized.Rd new file mode 100644 index 00000000..44005dd8 --- /dev/null +++ b/man/sees_pop_data_pk_100_nonstandardized.Rd @@ -0,0 +1,32 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/sees_pop_data_pakistan_100.R +\docType{data} +\name{sees_pop_data_pk_100_nonstandardized} +\alias{sees_pop_data_pk_100_nonstandardized} +\title{Small example cross-sectional data set} +\format{ +\subsection{\code{sees_pop_data_pk_100_nonstandardized}}{ + +A \code{pop_data} object (from \code{\link[=as_pop_data]{as_pop_data()}}) with 200 rows and 8 columns: +\describe{ +\item{index_id}{Observation ID} +\item{Country}{Country where the participant was living} +\item{cluster}{survey sampling cluster} +\item{catchment}{survey catchment area} +\item{Age}{participant's age when sampled, in years} +\item{antigen_iso}{which antigen and isotype are being measured +(data is in long format)} +\item{result}{concentration of antigen isotype, in ELISA units} +} +} +} +\source{ +\url{https://osf.io/n6cp3} +} +\usage{ +sees_pop_data_pk_100_nonstandardized +} +\description{ +A subset of data from the SEES data, for examples and testing. +} +\keyword{datasets} diff --git a/man/sees_pop_data_pk_100_standardized.Rd b/man/sees_pop_data_pk_100_standardized.Rd new file mode 100644 index 00000000..9b31782d --- /dev/null +++ b/man/sees_pop_data_pk_100_standardized.Rd @@ -0,0 +1,32 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/sees_pop_data_pakistan_100.R +\docType{data} +\name{sees_pop_data_pk_100_standardized} +\alias{sees_pop_data_pk_100_standardized} +\title{Small example cross-sectional data set} +\format{ +\subsection{\code{sees_pop_data_pk_100_standardized}}{ + +A \code{pop_data} object (from \code{\link[=as_pop_data]{as_pop_data()}}) with 200 rows and 8 columns: +\describe{ +\item{id}{Observation ID} +\item{Country}{Country where the participant was living} +\item{cluster}{survey sampling cluster} +\item{catchment}{survey catchment area} +\item{age}{participant's age when sampled, in years} +\item{antigen_iso}{which antigen and isotype are being measured +(data is in long format)} +\item{value}{concentration of antigen isotype, in ELISA units} +} +} +} +\source{ +\url{https://osf.io/n6cp3} +} +\usage{ +sees_pop_data_pk_100_standardized +} +\description{ +A subset of data from the SEES data, for examples and testing. +} +\keyword{datasets} diff --git a/man/typhoid_curves_nostrat_100.Rd b/man/typhoid_curves_nostrat_100.Rd new file mode 100644 index 00000000..f333a706 --- /dev/null +++ b/man/typhoid_curves_nostrat_100.Rd @@ -0,0 +1,33 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/example_typhoid_curves_nostrat.R +\docType{data} +\name{typhoid_curves_nostrat_100} +\alias{typhoid_curves_nostrat_100} +\title{Small example of antibody response curve parameters for typhoid} +\format{ +\subsection{\code{typhoid_curves_nostrat_100}}{ + +A \code{curve_params} object (from \code{\link[=as_curve_params]{as_curve_params()}}) with 500 rows and 7 +columns: +\describe{ +\item{antigen_iso}{which antigen and isotype are being measured +(data is in long format)} +\item{iter}{MCMC iteration} +\item{y0}{Antibody concentration at t = 0 (start of active infection)} +\item{y1}{Antibody concentration at t = \code{t1} (end of active infection)} +\item{t1}{Duration of active infection} +\item{alpha}{Antibody decay rate coefficient} +\item{r}{Antibody decay rate exponent parameter} +} +} +} +\source{ +\url{https://osf.io/rtw5k} +} +\usage{ +typhoid_curves_nostrat_100 +} +\description{ +A subset of data from the SEES study, for examples and testing. +} +\keyword{datasets} From d618a7bc4f4669e04f4c0398ab1e857f28d690d3 Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Mon, 4 Nov 2024 21:51:57 -0800 Subject: [PATCH 02/30] Increment version number to 1.2.0.9019 --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index a059428a..4c57a17d 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Type: Package Package: serocalculator Title: Estimating Infection Rates from Serological Data -Version: 1.2.0.9018 +Version: 1.2.0.9019 Authors@R: c( person("Peter", "Teunis", , "p.teunis@emory.edu", role = c("aut", "cph"), comment = "Author of the method and original code."), From 02711b2a3d347c36ac2671978681f9bf592a8a27 Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Mon, 4 Nov 2024 21:52:40 -0800 Subject: [PATCH 03/30] news --- NEWS.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/NEWS.md b/NEWS.md index 87839e24..8d768f2f 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,6 +1,9 @@ # serocalculator (development version) ## New features + +* Added example datasets with documentation for examples and testing (#314) + * Improved error messaging for `autoplot.pop_data()` (#234). * Clarified package installation instructions in scrub typhus vignette (#234). From 66707dc6c3811007ab7a2acbf7729a67e98995d4 Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Mon, 4 Nov 2024 21:56:17 -0800 Subject: [PATCH 04/30] switch to local test data --- tests/testthat/_snaps/est.incidence.md | 2 +- tests/testthat/test-est.incidence.R | 67 ++++---------------------- 2 files changed, 11 insertions(+), 58 deletions(-) diff --git a/tests/testthat/_snaps/est.incidence.md b/tests/testthat/_snaps/est.incidence.md index ec5db903..903a05a6 100644 --- a/tests/testthat/_snaps/est.incidence.md +++ b/tests/testthat/_snaps/est.incidence.md @@ -6,6 +6,6 @@ # A tibble: 1 x 10 est.start incidence.rate SE CI.lwr CI.upr coverage log.lik iterations - 1 0.1 0.133 0.0216 0.0962 0.182 0.95 -261. 4 + 1 0.1 0.166 0.0178 0.135 0.205 0.95 -524. 5 # i 2 more variables: antigen.isos , nlm.convergence.code diff --git a/tests/testthat/test-est.incidence.R b/tests/testthat/test-est.incidence.R index 59f479e8..bd16cbcc 100644 --- a/tests/testthat/test-est.incidence.R +++ b/tests/testthat/test-est.incidence.R @@ -1,79 +1,32 @@ test_that( "est.incidence() produces expected results for typhoid data", { - library(dplyr) - # get pop data - xs_data <- load_pop_data( - file_path = "https://osf.io/download//n6cp3/", - age = "Age", - value = "result", - id = "index_id", - standardize = TRUE - ) %>% - filter(Country == "Pakistan") %>% - slice_head(n = 100) - - # get noise data - noise <- load_noise_params("https://osf.io/download//hqy4v/") %>% - filter(Country == "Pakistan") - - # get curve data - curve <- load_curve_params("https://osf.io/download/rtw5k/") # slice if test is too slow (.by = antigen_iso)) - - # set start - start <- .05 typhoid_results <- est.incidence( - pop_data = xs_data, - curve_param = curve, - noise_param = noise, + pop_data = sees_pop_data_pk_100_standardized, + curve_param = typhoid_curves_nostrat_100, + noise_param = example_noise_params_pk, antigen_isos = c("HlyE_IgG", "HlyE_IgA") ) %>% - summary.seroincidence( - coverage = .95, - start = start - ) + summary(coverage = .95) expect_snapshot(x = typhoid_results) } ) test_that("`est.incidence()` produces expected results", { - curves <- load_curve_params("https://osf.io/download/rtw5k/") - noise <- load_noise_params("https://osf.io/download//hqy4v/") - xs_data_true <- load_pop_data( - file_path = "https://osf.io/download//n6cp3/", - age = "Age", - value = "result", - id = "index_id", - standardize = TRUE - ) %>% - filter(Country == "Pakistan") %>% - slice_head(n = 100) - est_true <- est.incidence( - pop_data = xs_data_true, - curve_params = curves, - noise_params = noise %>% filter(Country == "Pakistan"), + pop_data = sees_pop_data_pk_100_standardized, + curve_param = typhoid_curves_nostrat_100, + noise_param = example_noise_params_pk, antigen_isos = c("HlyE_IgG", "HlyE_IgA") ) - xs_data_false <- load_pop_data( - file_path = "https://osf.io/download//n6cp3/", - age = "Age", - value = "result", - id = "index_id", - standardize = FALSE - ) %>% - filter(Country == "Pakistan") %>% - slice_head(n = 100) - - est_false <- est.incidence( - pop_data = xs_data_false, - curve_params = curves, - noise_params = noise %>% filter(Country == "Pakistan"), + pop_data = sees_pop_data_pk_100_nonstandardized, + curve_param = typhoid_curves_nostrat_100, + noise_param = example_noise_params_pk, antigen_isos = c("HlyE_IgG", "HlyE_IgA") ) From c2cf1d65c6fde9aefd54782a10f9727903af5593 Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Mon, 4 Nov 2024 22:02:24 -0800 Subject: [PATCH 05/30] - added `snapshot_value` test --- tests/testthat/_snaps/est.incidence.md | 10 +++++++++- tests/testthat/test-est.incidence.R | 9 ++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/tests/testthat/_snaps/est.incidence.md b/tests/testthat/_snaps/est.incidence.md index 903a05a6..eefc9349 100644 --- a/tests/testthat/_snaps/est.incidence.md +++ b/tests/testthat/_snaps/est.incidence.md @@ -1,7 +1,7 @@ # est.incidence() produces expected results for typhoid data Code - typhoid_results + summary(typhoid_results) Output # A tibble: 1 x 10 est.start incidence.rate SE CI.lwr CI.upr coverage log.lik iterations @@ -9,3 +9,11 @@ 1 0.1 0.166 0.0178 0.135 0.205 0.95 -524. 5 # i 2 more variables: antigen.isos , nlm.convergence.code +--- + + structure(list(minimum = 523.575044823023, estimate = -1.7955958453869, + gradient = 3.60891331241403e-06, hessian = structure(86.991906300701, dim = c(1L, + 1L)), code = 1L, iterations = 5L), class = c("seroincidence", + "list"), lambda_start = 0.1, antigen_isos = c("HlyE_IgG", "HlyE_IgA" + )) + diff --git a/tests/testthat/test-est.incidence.R b/tests/testthat/test-est.incidence.R index bd16cbcc..966108e1 100644 --- a/tests/testthat/test-est.incidence.R +++ b/tests/testthat/test-est.incidence.R @@ -7,10 +7,13 @@ test_that( curve_param = typhoid_curves_nostrat_100, noise_param = example_noise_params_pk, antigen_isos = c("HlyE_IgG", "HlyE_IgA") - ) %>% - summary(coverage = .95) + ) - expect_snapshot(x = typhoid_results) + expect_snapshot(x = summary(typhoid_results)) + + expect_snapshot_value( + typhoid_results, style = "deparse" + ) } ) From c429c3e2479ae87e8eda8a5f319058b177d4357a Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Mon, 4 Nov 2024 22:05:40 -0800 Subject: [PATCH 06/30] Increment version number to 1.2.0.9020 --- DESCRIPTION | 2 +- NEWS.md | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 4c57a17d..1265ce3a 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Type: Package Package: serocalculator Title: Estimating Infection Rates from Serological Data -Version: 1.2.0.9019 +Version: 1.2.0.9020 Authors@R: c( person("Peter", "Teunis", , "p.teunis@emory.edu", role = c("aut", "cph"), comment = "Author of the method and original code."), diff --git a/NEWS.md b/NEWS.md index 8d768f2f..f587072d 100644 --- a/NEWS.md +++ b/NEWS.md @@ -27,6 +27,8 @@ ## Internal changes +* Added `snapshot_value` test for `est.incidence()` (#315) + * Added online preview builds for PRs that change the `pkgdown` website (#309) * Added `test-autoplot.pop_data` test (#234) From f35ef8306ba72ddbc7f3e64ac878f7dfdb8b4bd8 Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Mon, 4 Nov 2024 22:24:01 -0800 Subject: [PATCH 07/30] update log-likelihood --- tests/testthat/_snaps/log_likelihood.md | 2 +- tests/testthat/test-log_likelihood.R | 30 +++++-------------------- 2 files changed, 6 insertions(+), 26 deletions(-) diff --git a/tests/testthat/_snaps/log_likelihood.md b/tests/testthat/_snaps/log_likelihood.md index 4fd146e4..9c62d488 100644 --- a/tests/testthat/_snaps/log_likelihood.md +++ b/tests/testthat/_snaps/log_likelihood.md @@ -1,4 +1,4 @@ # `log_likelihood()` gives consistent results - -9268.8238 + -533.379886031329 diff --git a/tests/testthat/test-log_likelihood.R b/tests/testthat/test-log_likelihood.R index 0a4e3d72..ee13399e 100644 --- a/tests/testthat/test-log_likelihood.R +++ b/tests/testthat/test-log_likelihood.R @@ -1,34 +1,14 @@ test_that("`log_likelihood()` gives consistent results", { - library(dplyr) - library(tibble) - - # load in longitudinal parameters - dmcmc <- load_curve_params("https://osf.io/download/rtw5k") - - xs_data <- "https://osf.io/download//n6cp3/" %>% - load_pop_data() - - # Load noise params - cond <- tibble( - antigen_iso = c("HlyE_IgG", "HlyE_IgA"), - nu = c(0.5, 0.5), - # Biologic noise (nu) - eps = c(0, 0), - # M noise (eps) - y.low = c(1, 1), - # low cutoff (llod) - y.high = c(5e6, 5e6) - ) # high cutoff (y.high) # Calculate log-likelihood - ll_AG <- log_likelihood( # nolint: object_name_linter - pop_data = xs_data, - curve_params = dmcmc, - noise_params = cond, + ll_ag <- log_likelihood( + pop_data = sees_pop_data_pk_100_standardized, + curve_param = typhoid_curves_nostrat_100, + noise_param = example_noise_params_pk, antigen_isos = c("HlyE_IgG", "HlyE_IgA"), lambda = 0.1 ) - expect_snapshot_value(ll_AG) + expect_snapshot_value(ll_ag, style = "deparse") }) From da45b475c117e34169b5f0485d959b8c58ec38c7 Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Mon, 4 Nov 2024 22:37:05 -0800 Subject: [PATCH 08/30] set tolerance to allow for differences on mac --- tests/testthat/test-est.incidence.R | 49 ++++++++++++++--------------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/tests/testthat/test-est.incidence.R b/tests/testthat/test-est.incidence.R index 966108e1..6d7f75a5 100644 --- a/tests/testthat/test-est.incidence.R +++ b/tests/testthat/test-est.incidence.R @@ -1,37 +1,34 @@ +test_that("est.incidence() produces expected results for typhoid data", { + typhoid_results <- est.incidence( + pop_data = sees_pop_data_pk_100_standardized, + curve_param = typhoid_curves_nostrat_100, + noise_param = example_noise_params_pk, + antigen_isos = c("HlyE_IgG", "HlyE_IgA") + ) + + expect_snapshot(x = summary(typhoid_results)) + + expect_snapshot_value(typhoid_results, style = "deparse", tolerance = 1e-4) +}) + test_that( - "est.incidence() produces expected results for typhoid data", + "`est.incidence()` produces consistent results + regardless of whether data colnames are standardized.", { - - typhoid_results <- est.incidence( + est_true <- est.incidence( pop_data = sees_pop_data_pk_100_standardized, curve_param = typhoid_curves_nostrat_100, noise_param = example_noise_params_pk, antigen_isos = c("HlyE_IgG", "HlyE_IgA") ) - expect_snapshot(x = summary(typhoid_results)) - - expect_snapshot_value( - typhoid_results, style = "deparse" + est_false <- est.incidence( + pop_data = sees_pop_data_pk_100_nonstandardized, + curve_param = typhoid_curves_nostrat_100, + noise_param = example_noise_params_pk, + antigen_isos = c("HlyE_IgG", "HlyE_IgA") ) + + expect_equal(est_true, est_false) } ) - -test_that("`est.incidence()` produces expected results", { - - est_true <- est.incidence( - pop_data = sees_pop_data_pk_100_standardized, - curve_param = typhoid_curves_nostrat_100, - noise_param = example_noise_params_pk, - antigen_isos = c("HlyE_IgG", "HlyE_IgA") - ) - - est_false <- est.incidence( - pop_data = sees_pop_data_pk_100_nonstandardized, - curve_param = typhoid_curves_nostrat_100, - noise_param = example_noise_params_pk, - antigen_isos = c("HlyE_IgG", "HlyE_IgA") - ) - - expect_equal(est_true, est_false) -}) From ef0bb728ec384d2b88a71b9d2a2cb20f2e9a99f9 Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Mon, 4 Nov 2024 22:42:41 -0800 Subject: [PATCH 09/30] linting --- R/example_noise_params_pk.R | 6 ++---- R/example_typhoid_curves_nostrat.R | 1 - R/sees_pop_data_pakistan_100.R | 8 ++++---- data-raw/sees_pop_data_pakistan_100.R | 8 ++++---- data-raw/typhoid_curves_nostrat_100.R | 2 +- ...00_standardized.rda => sees_pop_data_pk_100.rda} | Bin ...dized.rda => sees_pop_data_pk_100_old_names.rda} | Bin 7 files changed, 11 insertions(+), 14 deletions(-) rename data/{sees_pop_data_pk_100_standardized.rda => sees_pop_data_pk_100.rda} (100%) rename data/{sees_pop_data_pk_100_nonstandardized.rda => sees_pop_data_pk_100_old_names.rda} (100%) diff --git a/R/example_noise_params_pk.R b/R/example_noise_params_pk.R index ac380f40..df5c3dc1 100644 --- a/R/example_noise_params_pk.R +++ b/R/example_noise_params_pk.R @@ -14,7 +14,8 @@ #' as the ratio of the standard deviation to the mean for replicates. #' Note that the CV should ideally be measured across plates #' rather than within the same plate.} -#' \item{nu}{Biological noise: error from cross-reactivity to other antibodies. +#' \item{nu}{Biological noise: error from +#' cross-reactivity to other antibodies. #' It is defined as the 95th percentile of #' the distribution of antibody responses to the antigen-isotype #' in a population with no exposure.} @@ -23,6 +24,3 @@ #' } #' @source "example_noise_params_pk" - - - diff --git a/R/example_typhoid_curves_nostrat.R b/R/example_typhoid_curves_nostrat.R index 62775696..3d77103a 100644 --- a/R/example_typhoid_curves_nostrat.R +++ b/R/example_typhoid_curves_nostrat.R @@ -17,4 +17,3 @@ #' } #' @source "typhoid_curves_nostrat_100" - diff --git a/R/sees_pop_data_pakistan_100.R b/R/sees_pop_data_pakistan_100.R index 93677dae..c7e1c6be 100644 --- a/R/sees_pop_data_pakistan_100.R +++ b/R/sees_pop_data_pakistan_100.R @@ -2,7 +2,7 @@ #' #' A subset of data from the SEES data, for examples and testing. #' -#' @format ## `sees_pop_data_pk_100_standardized` +#' @format ## `sees_pop_data_pk_100` #' A `pop_data` object (from [as_pop_data()]) with 200 rows and 8 columns: #' \describe{ #' \item{id}{Observation ID} @@ -15,13 +15,13 @@ #' \item{value}{concentration of antigen isotype, in ELISA units} #' } #' @source -"sees_pop_data_pk_100_standardized" +"sees_pop_data_pk_100" #' Small example cross-sectional data set #' #' A subset of data from the SEES data, for examples and testing. #' -#' @format ## `sees_pop_data_pk_100_nonstandardized` +#' @format ## `sees_pop_data_pk_100_old_names` #' A `pop_data` object (from [as_pop_data()]) with 200 rows and 8 columns: #' \describe{ #' \item{index_id}{Observation ID} @@ -34,4 +34,4 @@ #' \item{result}{concentration of antigen isotype, in ELISA units} #' } #' @source -"sees_pop_data_pk_100_nonstandardized" +"sees_pop_data_pk_100_old_names" diff --git a/data-raw/sees_pop_data_pakistan_100.R b/data-raw/sees_pop_data_pakistan_100.R index b9139d85..9477da4a 100644 --- a/data-raw/sees_pop_data_pakistan_100.R +++ b/data-raw/sees_pop_data_pakistan_100.R @@ -1,4 +1,4 @@ -sees_pop_data_pk_100_standardized <- load_pop_data( +sees_pop_data_pk_100 <- load_pop_data( file_path = "https://osf.io/download//n6cp3/", age = "Age", value = "result", @@ -8,9 +8,9 @@ sees_pop_data_pk_100_standardized <- load_pop_data( filter(Country == "Pakistan") %>% slice_head(n = 100, by = antigen_iso) -usethis::use_data(sees_pop_data_pk_100_standardized, overwrite = TRUE) +usethis::use_data(sees_pop_data_pk_100, overwrite = TRUE) -sees_pop_data_pk_100_nonstandardized <- load_pop_data( +sees_pop_data_pk_100_old_names <- load_pop_data( file_path = "https://osf.io/download//n6cp3/", age = "Age", value = "result", @@ -20,4 +20,4 @@ sees_pop_data_pk_100_nonstandardized <- load_pop_data( filter(Country == "Pakistan") %>% slice_head(n = 100, by = antigen_iso) -usethis::use_data(sees_pop_data_pk_100_nonstandardized, overwrite = TRUE) +usethis::use_data(sees_pop_data_pk_100_old_names, overwrite = TRUE) diff --git a/data-raw/typhoid_curves_nostrat_100.R b/data-raw/typhoid_curves_nostrat_100.R index b51057d2..74e58f47 100644 --- a/data-raw/typhoid_curves_nostrat_100.R +++ b/data-raw/typhoid_curves_nostrat_100.R @@ -1,4 +1,4 @@ -typhoid_curves_nostrat_100 = +typhoid_curves_nostrat_100 <- load_curve_params("https://osf.io/download/rtw5k/") %>% dplyr::filter(iter %in% 1:100) diff --git a/data/sees_pop_data_pk_100_standardized.rda b/data/sees_pop_data_pk_100.rda similarity index 100% rename from data/sees_pop_data_pk_100_standardized.rda rename to data/sees_pop_data_pk_100.rda diff --git a/data/sees_pop_data_pk_100_nonstandardized.rda b/data/sees_pop_data_pk_100_old_names.rda similarity index 100% rename from data/sees_pop_data_pk_100_nonstandardized.rda rename to data/sees_pop_data_pk_100_old_names.rda From 7b7ed6e830384a7b22af26bf4ba7ff104fe470b5 Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Mon, 4 Nov 2024 22:46:34 -0800 Subject: [PATCH 10/30] rewrite rdas --- data/sees_pop_data_pk_100.rda | Bin 3829 -> 3790 bytes data/sees_pop_data_pk_100_old_names.rda | Bin 3821 -> 3809 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/data/sees_pop_data_pk_100.rda b/data/sees_pop_data_pk_100.rda index a164d7ae0701a657da5015312c952115c2752954..0a096d5f93799d1ef89f5d775c420a39ca6e3a59 100644 GIT binary patch literal 3790 zcmah|c{J2-`~H|2)7bZIgu!4C8I7$djF?fDv4&(DLZN7}L^HOm8AD=7!)TB#G9=k1 z(r7GMQp!>(S^A2UzD51!`@X+F-uJKfKKD7#eVymJulst=xgTrqP&2fZm!_+i%9_bN zK-Ton|BMA;KXXfSP7TNT{p<&nSov4(l^2oOA)m|RT>WFi5i|*=cnR7`Fv8Hn^_v}u z7Osrjx>n1G*JfFuwW_uzW~4;D_S2q#>iAykvRB1WKyzzyM; zF(O7p*%@pZI%Ws}00v5?DAPkRB0wnEmQ06Luiy)}f7V>9aGKKmh6CG@l$j(bY0nCY z#~lNBn0NBg{{di20D$ufpzs^Az&-$u2~@6F#sEYNMwt#5!(rfj)m30iLm+ev5D|eo z2-EoJm@y2L7RnRgY35>xd~_T<0&DrQx|S}6;}ncX*@q>YGsabFE$ph4T_RL)*d?}$-tL6y>5Ox6J zr~!iU{73Ld@U=9^Ot5i!y3NFKS}4@vA2%2UXf7NBgz}8Qd1Rg~D0u|{M4-6<0IGj1 z`@R_TC7cPg>kGY&_IsB6=7ABZ10~HxN4gj=YCoL!AZXnfAei?Ta2C_$DRmmUxTjg; zi#b_?4zZRJL~W2-W|br!*`E<+%k&u%78a5r>q_FN_-drHprk>*1SAWOHpEM!`f*fb z&Yeq0D=5lPK-5iX#&9>O8v)@+*-K%Cg zlS3xyTd7bdc{RnJ!xD2U3+({@U5hWjFn_RU&gXy`C@yTWZd0 zoIry#(O~H;_IU+yH!biDs74dKcZz2CNIK{SG13TulGRW{iMj|&pmBj!wMBb7ONw;= z78--$J(-p_a1VT7sbt6kQ9ZpcWS_>x;_F9S7ZsmnKvE0qVb)&8mi6liGQ({LWU^i~ zqFxO+CeEb^N+T<*!a@QD7L|MvMM4O z(GO!IV2EC}x&Y{P|7gP8cK6@w|1I(V2*evu>*W<`lf$h)EtLFrUBfM~({A7+qeTza z#6ifU9gJCC@DI#^Co?lg9(%l$I$L}N6aB1kFeR93uN}la+j88SrAF_^96zN1!^ZkV{XjRBIvF_09N z%)BNaKo&*d)$nSPsz|E6uyC@PB^58Js>WM`3|ul2*Dup|t=ku=(`Ik%tiIP8n6>V`zklvd>^9#Y zZN44hk@i5~q3YtI}>4p0n7pp)0(SFju;CQDqjv-Ay5OdlA_8TibI$Zjz z(8zmnb+c{9Mm3ucX$_dsGQ-Rgz@V^KF{_#cO`KTr=`8fti?FG5nOLjyHGA`KS=k4i z)_i4T@3xW%wumr#OZSaVuuW%Y3aRt$(eLxw<2dXB#_x3q>&^K9RxE&>*Di6oxTI5^ z467VID-4&0jbvunAVRNe(5ti#yRiivs3l{z1h`msjOc}%5ZMop&9+|8((6yO8+;rt z#-#7(P)zlMM>ev1?!LWuvvv32cS2@Y#vloROl&!7#TespoXRH`4u-eBEF3O)hIYVA zI2Zwd+tBQ?@vA=n)^-0P%y}@7?@P<|tMt7Mj|CDn}E;j&-_gIPw_OW4~C^gu&pQ?_R-0 zmH<%n(Z9Nlir39qLQ?S>3G7|d*zXpBAz{q$&(ppar~L>5OXYFA{Lr&m-MC8S`QYW7 z7SFmnn3h2c-V-sC0N~#89+i9Y-*@=%xzBnsbxyor+O*gjdMgM8% zSC5@I?#_!#cY6WBuKn+wD_O=*}a@~(tkV09x$$=GWoj@~e% zuXm9UCShf=^;_vq?h#Q4t0KALOcE8FXB=K14 zW5on0K4mtj#a}3#VaMrL1Ix(UMV&Acf2`oSN8Y#Hmwh_%@Gq-Y--wp&!|t$wbCHlf z{;69MCtu;3uN~@z{*Oy*q_--K$Y5BHx1! zIxxR>-K}wWhcBtDwO70Q>in>0;L908hsh>Z#ldd^F*J30WPqbe0f8256(RI3PuZDdJD(VX7jQ#3t zH39+@YKo`XF+9&aKj{gOaonl)h{e|}?iWDaW#0}&W%B8?6d|l?0_JV9#9cnju0|aZ zy?C~)Rn*3qXHM&Wl-3d#)}t}^^~RyaVEn+@T_P|R*w+hQG8{Ax=KdJ$K5e@XKUg21PTJrI z_XKm7zbT4gWGe`#Y^X{b7fa53q8=^xL7W}>3e$OHZRbXgQ<_!|tTKy%S>HGA8Why` zE#*6T^o_ZMtE-WFwAuYL%X?vbfI2n^hArMWcPIAO&P9v(HdY?>X3zH6%{U);!zb}n zgd+?lL=1p=%C!%MZk_jd<&T!~_7AYtf>~BFZsiL-@yw(h$4V`Ah-j1nmWv${K+4GfZoDDLDS=R+*H-FOE2ZloFImH8{V25 zKLXG}4Jeex%;o((s)?I*o^MXdAQ2dwx1o4DnW?Fe<;%K<7ZNd2*nIgumS zoUV@wG56s0IcZO022d6Ok7`_PLz0B{0k!UOd!^@<9v6Jy%n7f5I2SqLN11T5^V7#VcsNxr%SB)_@(52d_M<}`}Yf3FO18HB1qB| zg-H?0Rfwr%5+r0?v{Z4kl6#$;xWHH?_EmNcJ>M^S%eL`LkJa7%L&w47VF=xiY_8U~ z>?-K-u2+bGWT$mkW@1(HDmVs%Zr#~SScM_>-!7LtDa1rrh$w z;xm`$%8wzx#%2^fy!iC|#A3yI6MFn8ge6zzWfo_%)P5&uoaVPsq^mTiMY$!l52CJ+ z0$3X>Y^1=SQ_vtX1P1RrN{i!W;<5*kA{0=Ot+;2GH7~j zklT*Y`v$?S@MAD{H_9*lY~9@3dE1@G*E^`2?lVjyFPOz;{=Pp4Dht8{cj?dkep+*M zxN90dR;;C0zE@ykDR{jEQ-;5yD#fu=FA6kf&USzdY8IuAVM~>Py(2tqTuF zX*hA#P2k&S_}N!!jK&^3zcqYB!&UUpRHoLK#vcke~LOP-iQi;n#0q-wKMNq+*m GNdE_^FtzCb literal 3829 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 diff --git a/data/sees_pop_data_pk_100_old_names.rda b/data/sees_pop_data_pk_100_old_names.rda index 0d3890a1401bb19d6a6bdc965b7809d08e00f192..6f8eb6b14db0d95c8f3aa84fc8bc571185d5d107 100644 GIT binary patch literal 3809 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 delta 3758 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 z Date: Mon, 4 Nov 2024 22:49:46 -0800 Subject: [PATCH 11/30] document --- man/example_noise_params_pk.Rd | 3 ++- ...ata_pk_100_standardized.Rd => sees_pop_data_pk_100.Rd} | 8 ++++---- ...nstandardized.Rd => sees_pop_data_pk_100_old_names.Rd} | 8 ++++---- 3 files changed, 10 insertions(+), 9 deletions(-) rename man/{sees_pop_data_pk_100_standardized.Rd => sees_pop_data_pk_100.Rd} (82%) rename man/{sees_pop_data_pk_100_nonstandardized.Rd => sees_pop_data_pk_100_old_names.Rd} (81%) diff --git a/man/example_noise_params_pk.Rd b/man/example_noise_params_pk.Rd index d19565f4..f10ef837 100644 --- a/man/example_noise_params_pk.Rd +++ b/man/example_noise_params_pk.Rd @@ -17,7 +17,8 @@ A \code{curve_params} object (from \code{\link[=as_curve_params]{as_curve_params as the ratio of the standard deviation to the mean for replicates. Note that the CV should ideally be measured across plates rather than within the same plate.} -\item{nu}{Biological noise: error from cross-reactivity to other antibodies. +\item{nu}{Biological noise: error from +cross-reactivity to other antibodies. It is defined as the 95th percentile of the distribution of antibody responses to the antigen-isotype in a population with no exposure.} diff --git a/man/sees_pop_data_pk_100_standardized.Rd b/man/sees_pop_data_pk_100.Rd similarity index 82% rename from man/sees_pop_data_pk_100_standardized.Rd rename to man/sees_pop_data_pk_100.Rd index 9b31782d..9019c63f 100644 --- a/man/sees_pop_data_pk_100_standardized.Rd +++ b/man/sees_pop_data_pk_100.Rd @@ -1,11 +1,11 @@ % Generated by roxygen2: do not edit by hand % Please edit documentation in R/sees_pop_data_pakistan_100.R \docType{data} -\name{sees_pop_data_pk_100_standardized} -\alias{sees_pop_data_pk_100_standardized} +\name{sees_pop_data_pk_100} +\alias{sees_pop_data_pk_100} \title{Small example cross-sectional data set} \format{ -\subsection{\code{sees_pop_data_pk_100_standardized}}{ +\subsection{\code{sees_pop_data_pk_100}}{ A \code{pop_data} object (from \code{\link[=as_pop_data]{as_pop_data()}}) with 200 rows and 8 columns: \describe{ @@ -24,7 +24,7 @@ A \code{pop_data} object (from \code{\link[=as_pop_data]{as_pop_data()}}) with 2 \url{https://osf.io/n6cp3} } \usage{ -sees_pop_data_pk_100_standardized +sees_pop_data_pk_100 } \description{ A subset of data from the SEES data, for examples and testing. diff --git a/man/sees_pop_data_pk_100_nonstandardized.Rd b/man/sees_pop_data_pk_100_old_names.Rd similarity index 81% rename from man/sees_pop_data_pk_100_nonstandardized.Rd rename to man/sees_pop_data_pk_100_old_names.Rd index 44005dd8..87360bf4 100644 --- a/man/sees_pop_data_pk_100_nonstandardized.Rd +++ b/man/sees_pop_data_pk_100_old_names.Rd @@ -1,11 +1,11 @@ % Generated by roxygen2: do not edit by hand % Please edit documentation in R/sees_pop_data_pakistan_100.R \docType{data} -\name{sees_pop_data_pk_100_nonstandardized} -\alias{sees_pop_data_pk_100_nonstandardized} +\name{sees_pop_data_pk_100_old_names} +\alias{sees_pop_data_pk_100_old_names} \title{Small example cross-sectional data set} \format{ -\subsection{\code{sees_pop_data_pk_100_nonstandardized}}{ +\subsection{\code{sees_pop_data_pk_100_old_names}}{ A \code{pop_data} object (from \code{\link[=as_pop_data]{as_pop_data()}}) with 200 rows and 8 columns: \describe{ @@ -24,7 +24,7 @@ A \code{pop_data} object (from \code{\link[=as_pop_data]{as_pop_data()}}) with 2 \url{https://osf.io/n6cp3} } \usage{ -sees_pop_data_pk_100_nonstandardized +sees_pop_data_pk_100_old_names } \description{ A subset of data from the SEES data, for examples and testing. From 0798cab4f20794a0cc64fb6ada65688ddd47d432 Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Mon, 4 Nov 2024 22:50:09 -0800 Subject: [PATCH 12/30] document --- man/example_noise_params_pk.Rd | 3 ++- ...ata_pk_100_standardized.Rd => sees_pop_data_pk_100.Rd} | 8 ++++---- ...nstandardized.Rd => sees_pop_data_pk_100_old_names.Rd} | 8 ++++---- 3 files changed, 10 insertions(+), 9 deletions(-) rename man/{sees_pop_data_pk_100_standardized.Rd => sees_pop_data_pk_100.Rd} (82%) rename man/{sees_pop_data_pk_100_nonstandardized.Rd => sees_pop_data_pk_100_old_names.Rd} (81%) diff --git a/man/example_noise_params_pk.Rd b/man/example_noise_params_pk.Rd index d19565f4..f10ef837 100644 --- a/man/example_noise_params_pk.Rd +++ b/man/example_noise_params_pk.Rd @@ -17,7 +17,8 @@ A \code{curve_params} object (from \code{\link[=as_curve_params]{as_curve_params as the ratio of the standard deviation to the mean for replicates. Note that the CV should ideally be measured across plates rather than within the same plate.} -\item{nu}{Biological noise: error from cross-reactivity to other antibodies. +\item{nu}{Biological noise: error from +cross-reactivity to other antibodies. It is defined as the 95th percentile of the distribution of antibody responses to the antigen-isotype in a population with no exposure.} diff --git a/man/sees_pop_data_pk_100_standardized.Rd b/man/sees_pop_data_pk_100.Rd similarity index 82% rename from man/sees_pop_data_pk_100_standardized.Rd rename to man/sees_pop_data_pk_100.Rd index 9b31782d..9019c63f 100644 --- a/man/sees_pop_data_pk_100_standardized.Rd +++ b/man/sees_pop_data_pk_100.Rd @@ -1,11 +1,11 @@ % Generated by roxygen2: do not edit by hand % Please edit documentation in R/sees_pop_data_pakistan_100.R \docType{data} -\name{sees_pop_data_pk_100_standardized} -\alias{sees_pop_data_pk_100_standardized} +\name{sees_pop_data_pk_100} +\alias{sees_pop_data_pk_100} \title{Small example cross-sectional data set} \format{ -\subsection{\code{sees_pop_data_pk_100_standardized}}{ +\subsection{\code{sees_pop_data_pk_100}}{ A \code{pop_data} object (from \code{\link[=as_pop_data]{as_pop_data()}}) with 200 rows and 8 columns: \describe{ @@ -24,7 +24,7 @@ A \code{pop_data} object (from \code{\link[=as_pop_data]{as_pop_data()}}) with 2 \url{https://osf.io/n6cp3} } \usage{ -sees_pop_data_pk_100_standardized +sees_pop_data_pk_100 } \description{ A subset of data from the SEES data, for examples and testing. diff --git a/man/sees_pop_data_pk_100_nonstandardized.Rd b/man/sees_pop_data_pk_100_old_names.Rd similarity index 81% rename from man/sees_pop_data_pk_100_nonstandardized.Rd rename to man/sees_pop_data_pk_100_old_names.Rd index 44005dd8..87360bf4 100644 --- a/man/sees_pop_data_pk_100_nonstandardized.Rd +++ b/man/sees_pop_data_pk_100_old_names.Rd @@ -1,11 +1,11 @@ % Generated by roxygen2: do not edit by hand % Please edit documentation in R/sees_pop_data_pakistan_100.R \docType{data} -\name{sees_pop_data_pk_100_nonstandardized} -\alias{sees_pop_data_pk_100_nonstandardized} +\name{sees_pop_data_pk_100_old_names} +\alias{sees_pop_data_pk_100_old_names} \title{Small example cross-sectional data set} \format{ -\subsection{\code{sees_pop_data_pk_100_nonstandardized}}{ +\subsection{\code{sees_pop_data_pk_100_old_names}}{ A \code{pop_data} object (from \code{\link[=as_pop_data]{as_pop_data()}}) with 200 rows and 8 columns: \describe{ @@ -24,7 +24,7 @@ A \code{pop_data} object (from \code{\link[=as_pop_data]{as_pop_data()}}) with 2 \url{https://osf.io/n6cp3} } \usage{ -sees_pop_data_pk_100_nonstandardized +sees_pop_data_pk_100_old_names } \description{ A subset of data from the SEES data, for examples and testing. From 97f8f35175e7144cf0a30dcbdd03efdc8bd99d7b Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Mon, 4 Nov 2024 23:11:06 -0800 Subject: [PATCH 13/30] update names --- tests/testthat/test-est.incidence.R | 6 +++--- tests/testthat/test-log_likelihood.R | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/testthat/test-est.incidence.R b/tests/testthat/test-est.incidence.R index 6d7f75a5..4467d89c 100644 --- a/tests/testthat/test-est.incidence.R +++ b/tests/testthat/test-est.incidence.R @@ -1,6 +1,6 @@ test_that("est.incidence() produces expected results for typhoid data", { typhoid_results <- est.incidence( - pop_data = sees_pop_data_pk_100_standardized, + pop_data = sees_pop_data_pk_100, curve_param = typhoid_curves_nostrat_100, noise_param = example_noise_params_pk, antigen_isos = c("HlyE_IgG", "HlyE_IgA") @@ -16,14 +16,14 @@ test_that( regardless of whether data colnames are standardized.", { est_true <- est.incidence( - pop_data = sees_pop_data_pk_100_standardized, + pop_data = sees_pop_data_pk_100, curve_param = typhoid_curves_nostrat_100, noise_param = example_noise_params_pk, antigen_isos = c("HlyE_IgG", "HlyE_IgA") ) est_false <- est.incidence( - pop_data = sees_pop_data_pk_100_nonstandardized, + pop_data = sees_pop_data_pk_100_old_names, curve_param = typhoid_curves_nostrat_100, noise_param = example_noise_params_pk, antigen_isos = c("HlyE_IgG", "HlyE_IgA") diff --git a/tests/testthat/test-log_likelihood.R b/tests/testthat/test-log_likelihood.R index ee13399e..0c6cb992 100644 --- a/tests/testthat/test-log_likelihood.R +++ b/tests/testthat/test-log_likelihood.R @@ -2,7 +2,7 @@ test_that("`log_likelihood()` gives consistent results", { # Calculate log-likelihood ll_ag <- log_likelihood( - pop_data = sees_pop_data_pk_100_standardized, + pop_data = sees_pop_data_pk_100, curve_param = typhoid_curves_nostrat_100, noise_param = example_noise_params_pk, antigen_isos = c("HlyE_IgG", "HlyE_IgA"), From 3a1cf6306cf026d316677fa4eff6f5ad68c546ce Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Mon, 4 Nov 2024 23:14:08 -0800 Subject: [PATCH 14/30] don't try to install the package; just lint all changed files. --- .github/workflows/lint-changed-files.yaml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/lint-changed-files.yaml b/.github/workflows/lint-changed-files.yaml index 1d4c2862..ac6d4022 100644 --- a/.github/workflows/lint-changed-files.yaml +++ b/.github/workflows/lint-changed-files.yaml @@ -19,27 +19,23 @@ jobs: - uses: r-lib/actions/setup-r-dependencies@v2 with: - extra-packages: | + packages: | any::gh any::lintr any::purrr - needs: check - name: Add lintr options run: | cat('\noptions(lintr.linter_file = ".lintr")\n', file = "~/.Rprofile", append = TRUE) shell: Rscript {0} - - name: Install package - run: R CMD INSTALL . - - name: Extract and lint files changed by this PR run: | files <- gh::gh("GET https://api.github.com/repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/files") changed_files <- purrr::map_chr(files, "filename") all_files <- list.files(recursive = TRUE) exclusions_list <- as.list(setdiff(all_files, changed_files)) - lintr::lint_package(exclusions = exclusions_list) + lintr::lint_dir(exclusions = exclusions_list) shell: Rscript {0} env: LINTR_ERROR_ON_LINT: true From c1e7009b4cb663e80c0a01a5b05023f35a210734 Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Mon, 4 Nov 2024 23:15:53 -0800 Subject: [PATCH 15/30] Increment version number to 1.2.0.9019 --- DESCRIPTION | 2 +- NEWS.md | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index a059428a..4c57a17d 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Type: Package Package: serocalculator Title: Estimating Infection Rates from Serological Data -Version: 1.2.0.9018 +Version: 1.2.0.9019 Authors@R: c( person("Peter", "Teunis", , "p.teunis@emory.edu", role = c("aut", "cph"), comment = "Author of the method and original code."), diff --git a/NEWS.md b/NEWS.md index 87839e24..df55fcfd 100644 --- a/NEWS.md +++ b/NEWS.md @@ -24,6 +24,8 @@ ## Internal changes +* Sped up `lint-changed-files` GitHub Action (#317) + * Added online preview builds for PRs that change the `pkgdown` website (#309) * Added `test-autoplot.pop_data` test (#234) From c4839792bbaee4405f0d7069c765e16b12e32e0a Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Mon, 4 Nov 2024 23:20:37 -0800 Subject: [PATCH 16/30] Increment version number to 1.2.0.9020 --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 4c57a17d..1265ce3a 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Type: Package Package: serocalculator Title: Estimating Infection Rates from Serological Data -Version: 1.2.0.9019 +Version: 1.2.0.9020 Authors@R: c( person("Peter", "Teunis", , "p.teunis@emory.edu", role = c("aut", "cph"), comment = "Author of the method and original code."), From 23bce03d737339d8a5a7696a2b9414fc4e0af285 Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Tue, 5 Nov 2024 09:30:03 -0800 Subject: [PATCH 17/30] use `lint_package()` --- .github/workflows/lint-changed-files.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-changed-files.yaml b/.github/workflows/lint-changed-files.yaml index ac6d4022..f5a70aae 100644 --- a/.github/workflows/lint-changed-files.yaml +++ b/.github/workflows/lint-changed-files.yaml @@ -35,7 +35,7 @@ jobs: changed_files <- purrr::map_chr(files, "filename") all_files <- list.files(recursive = TRUE) exclusions_list <- as.list(setdiff(all_files, changed_files)) - lintr::lint_dir(exclusions = exclusions_list) + lintr::lint_package(exclusions = exclusions_list) shell: Rscript {0} env: LINTR_ERROR_ON_LINT: true From 645614f250bf23126578acd39116082f742e8642 Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Tue, 5 Nov 2024 10:17:45 -0800 Subject: [PATCH 18/30] Increment version number to 1.2.0.9021 --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 1265ce3a..047faad8 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Type: Package Package: serocalculator Title: Estimating Infection Rates from Serological Data -Version: 1.2.0.9020 +Version: 1.2.0.9021 Authors@R: c( person("Peter", "Teunis", , "p.teunis@emory.edu", role = c("aut", "cph"), comment = "Author of the method and original code."), From 756ba166bd1d15791a5ba7ddf49a08ab8bae6a0f Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Tue, 5 Nov 2024 10:28:31 -0800 Subject: [PATCH 19/30] increase tolerance --- tests/testthat/test-est.incidence.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/testthat/test-est.incidence.R b/tests/testthat/test-est.incidence.R index 4467d89c..c42a073b 100644 --- a/tests/testthat/test-est.incidence.R +++ b/tests/testthat/test-est.incidence.R @@ -8,7 +8,7 @@ test_that("est.incidence() produces expected results for typhoid data", { expect_snapshot(x = summary(typhoid_results)) - expect_snapshot_value(typhoid_results, style = "deparse", tolerance = 1e-4) + expect_snapshot_value(typhoid_results, style = "deparse", tolerance = 1e-3) }) test_that( From df99c6f384f94a167efd5dfc9812d494eef46986 Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Tue, 5 Nov 2024 10:30:59 -0800 Subject: [PATCH 20/30] decrease snapshot tolerance --- tests/testthat/test-est.incidence.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/testthat/test-est.incidence.R b/tests/testthat/test-est.incidence.R index c42a073b..4467d89c 100644 --- a/tests/testthat/test-est.incidence.R +++ b/tests/testthat/test-est.incidence.R @@ -8,7 +8,7 @@ test_that("est.incidence() produces expected results for typhoid data", { expect_snapshot(x = summary(typhoid_results)) - expect_snapshot_value(typhoid_results, style = "deparse", tolerance = 1e-3) + expect_snapshot_value(typhoid_results, style = "deparse", tolerance = 1e-4) }) test_that( From 8cefedf05ec088ec6fd7f26629c97f936bacdce8 Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Tue, 5 Nov 2024 10:41:49 -0800 Subject: [PATCH 21/30] fix --- .github/workflows/lint-changed-files.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-changed-files.yaml b/.github/workflows/lint-changed-files.yaml index ac6d4022..f5a70aae 100644 --- a/.github/workflows/lint-changed-files.yaml +++ b/.github/workflows/lint-changed-files.yaml @@ -35,7 +35,7 @@ jobs: changed_files <- purrr::map_chr(files, "filename") all_files <- list.files(recursive = TRUE) exclusions_list <- as.list(setdiff(all_files, changed_files)) - lintr::lint_dir(exclusions = exclusions_list) + lintr::lint_package(exclusions = exclusions_list) shell: Rscript {0} env: LINTR_ERROR_ON_LINT: true From 897e936488a8c19d9e0854800891fb51857766e6 Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Tue, 5 Nov 2024 22:35:09 -0800 Subject: [PATCH 22/30] do the install --- .github/workflows/lint-changed-files.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/lint-changed-files.yaml b/.github/workflows/lint-changed-files.yaml index f5a70aae..5fbd6b4a 100644 --- a/.github/workflows/lint-changed-files.yaml +++ b/.github/workflows/lint-changed-files.yaml @@ -29,6 +29,9 @@ jobs: cat('\noptions(lintr.linter_file = ".lintr")\n', file = "~/.Rprofile", append = TRUE) shell: Rscript {0} + - name: Install package + run: R CMD INSTALL . + - name: Extract and lint files changed by this PR run: | files <- gh::gh("GET https://api.github.com/repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/files") From 544372db5b6bfeb2fc263bc2009595a48da46943 Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Wed, 6 Nov 2024 12:50:49 -0800 Subject: [PATCH 23/30] test --- DESCRIPTION | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 047faad8..6b8fb677 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -39,7 +39,8 @@ Imports: tidyr, tidyselect, utils, - purrr + purrr, + and Suggests: bookdown, devtag (>= 0.0.0.9000), From 9282e4b2fcbcd0884c3227f011ce2070eb10b2f8 Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Wed, 6 Nov 2024 12:56:10 -0800 Subject: [PATCH 24/30] test 2 --- DESCRIPTION | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 6b8fb677..047faad8 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -39,8 +39,7 @@ Imports: tidyr, tidyselect, utils, - purrr, - and + purrr Suggests: bookdown, devtag (>= 0.0.0.9000), From 81ae5a2572d2377eb32dc3225b9328a334819a1a Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Wed, 6 Nov 2024 13:17:57 -0800 Subject: [PATCH 25/30] test @HEAD --- .github/workflows/lint-changed-files.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-changed-files.yaml b/.github/workflows/lint-changed-files.yaml index 5fbd6b4a..63a1d91b 100644 --- a/.github/workflows/lint-changed-files.yaml +++ b/.github/workflows/lint-changed-files.yaml @@ -17,7 +17,7 @@ jobs: - uses: r-lib/actions/setup-r@v2 - - uses: r-lib/actions/setup-r-dependencies@v2 + - uses: r-lib/actions/setup-r-dependencies@HEAD with: packages: | any::gh From 25e74f42e2fc58038e6a996982610168c7e3b47e Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Wed, 6 Nov 2024 13:20:51 -0800 Subject: [PATCH 26/30] test installing all dependencies with @HEAD --- .github/workflows/lint-changed-files.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/lint-changed-files.yaml b/.github/workflows/lint-changed-files.yaml index 63a1d91b..7a973b61 100644 --- a/.github/workflows/lint-changed-files.yaml +++ b/.github/workflows/lint-changed-files.yaml @@ -19,10 +19,11 @@ jobs: - uses: r-lib/actions/setup-r-dependencies@HEAD with: - packages: | + extra-packages: | any::gh any::lintr any::purrr + needs: check - name: Add lintr options run: | From 293c9e55f657462143250be10719e9c19e43865c Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Wed, 6 Nov 2024 13:40:08 -0800 Subject: [PATCH 27/30] test --- .github/workflows/lint-changed-files.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-changed-files.yaml b/.github/workflows/lint-changed-files.yaml index 7a973b61..6b97510f 100644 --- a/.github/workflows/lint-changed-files.yaml +++ b/.github/workflows/lint-changed-files.yaml @@ -23,7 +23,7 @@ jobs: any::gh any::lintr any::purrr - needs: check + needs: lint - name: Add lintr options run: | From 22a0222cef3ee0777932286ddbe403472a715168 Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Wed, 6 Nov 2024 13:45:54 -0800 Subject: [PATCH 28/30] test whether check slows down --- .github/workflows/R-CMD-check.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index 5001cbfb..f7d07fd3 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -40,7 +40,11 @@ jobs: - uses: r-lib/actions/setup-r-dependencies@v2 with: - extra-packages: any::rcmdcheck + extra-packages: | + any::gh + any::lintr + any::purrr + any::rcmdcheck needs: check - uses: r-lib/actions/check-r-package@v2 From deb4ad47a1f643a9dda58223e0d2a7066dde8365 Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Wed, 6 Nov 2024 13:59:28 -0800 Subject: [PATCH 29/30] try public rpsm --- .github/workflows/lint-changed-files.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/lint-changed-files.yaml b/.github/workflows/lint-changed-files.yaml index 6b97510f..93e1565f 100644 --- a/.github/workflows/lint-changed-files.yaml +++ b/.github/workflows/lint-changed-files.yaml @@ -16,6 +16,8 @@ jobs: - uses: actions/checkout@v4 - uses: r-lib/actions/setup-r@v2 + with: + use-public-rspm: true - uses: r-lib/actions/setup-r-dependencies@HEAD with: From 2614e0b2fae242692b79201ee3c4273e67b55bf6 Mon Sep 17 00:00:00 2001 From: Douglas Ezra Morrison Date: Wed, 6 Nov 2024 14:03:14 -0800 Subject: [PATCH 30/30] revert --- .github/workflows/R-CMD-check.yaml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index f7d07fd3..5001cbfb 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -40,11 +40,7 @@ jobs: - uses: r-lib/actions/setup-r-dependencies@v2 with: - extra-packages: | - any::gh - any::lintr - any::purrr - any::rcmdcheck + extra-packages: any::rcmdcheck needs: check - uses: r-lib/actions/check-r-package@v2