context("TURN calculations")
test_that("check calc_TURN", {
l <- calc_TURN(TUR_dat, return_means = TRUE)
national_turn <- l$df
# make sure not creating all NAs--test only applies if test
# dataset doesn't have NAs
expect_equal(sum(is.na(national_turn$Y_prime_3wma)), 0)
# Y_prime means should all be the same
test1 <- national_turn %>%
filter(!InstrumentVersion %in% c("all", "all_adj")) %>%
group_by(InstrumentVersion) %>%
summarize(mean = mean(Y_prime, na.rm = TRUE))
expect_equal(min(test1$mean), max(test1$mean))
means <- l$means
# putting gap in date
state_turn <- calc_TURN(TUR_dat[TUR_dat$date != "2018-01-01", ],
vars(InstrumentVersion, Region),
site_info = get_site_info(rp_raw),
means = means)
# running this because arrange_epidate has built in check for
# consecutive dates
state_turn %>%
group_by(InstrumentVersion, Region) %>%
arrange_epidate()
# really more of a check on arrange_epidate
expect_error(state_turn %>%
filter(lubridate::month(epidate) != 5) %>%
group_by(InstrumentVersion, Region) %>%
arrange_epidate())
# missing dates shouldn't cause problems
test <- TUR_dat %>% filter(!date %in% c(max(date) - (7:25))) %>%
calc_TURN() %>%
filter(Y > 0, is.na(Y_prime_3wma))
expect_equal(nrow(test), 0)
})
# calc_path_TURN -------------------------------------------------------------
test_that("check calc_path_TURN", {
# list of national turn and means by instrument (means should be
# calculated at national level)
national_list <- calc_TURN(TUR_dat, return_means = TRUE)
means <- national_list$means
# national TURN
TURN_national <- national_list$df
# regional (state) TURN
site_info <- get_site_info(rp_raw)
TURN_region <- calc_TURN(TUR_dat,
group_vars = vars(InstrumentVersion, Region),
site_info = site_info,
means = means)
# calculate TURN for each pathogen -- national
path_TURN_national <- calc_path_TURN(df = path_dat,
TURN_df = TURN_national,
means = means)
# calculate TURN for each pathogen -- national
path_TURN_region <- calc_path_TURN(df = path_dat,
TURN_df = TURN_region,
means = means,
group_vars = vars(InstrumentVersion, Region),
site_info = site_info,
run_check = TRUE)
# no co-detections
path_dat_ncd <- pre_process(rp_raw) %>%
calc_count_by_site_inst()
# should run
path_TURN_region_ncd <- calc_path_TURN(df = path_dat_ncd,
TURN_df = TURN_region,
means = means,
group_vars = vars(InstrumentVersion, Region),
site_info = site_info,
run_check = FALSE)
# when no co-detections should throw error
expect_error(calc_path_TURN(df = path_dat_ncd,
TURN_df = TURN_region,
means = means,
group_vars = vars(InstrumentVersion, Region),
site_info = site_info,
run_check = TRUE))
# creating a month when there is data for 'all' but not for specific
# instrument versions
path_dat2 <- path_dat %>%
filter(!(InstrumentVersion %in% c("FA2.0", "Torch") & date > "2018-01-01"),
!(InstrumentVersion =="FA1.5" & date < "2018-02-01"))
expect_error(calc_path_TURN(df = path_dat2,
TURN_df = TURN_region,
means = means,
group_vars = vars(InstrumentVersion, Region),
site_info = site_info))
# shouldn't throw an error
calc_path_TURN(df = path_dat2,
TURN_df = TURN_region,
means = means,
group_vars = vars(InstrumentVersion, Region),
site_info = site_info,
add_path_dates = TRUE)
# expect error b/ some instrument versions removed for some dates for
# path data
expect_error(calc_path_TURN(df = path_dat2,
TURN_df = TURN_region,
means = means,
group_vars = vars(InstrumentVersion, Region),
site_info = site_info,
add_path_dates = TRUE,
run_check = TRUE))
})
# calc_det_rate ----------------------------------------------------------
test_that("check calc_det_rate()", {
############## Generating data ################
national_list <- calc_TURN(TUR_dat, return_means = TRUE)
means <- national_list$means
# national TURN
TURN_national <- national_list$df
# calculate TURN for each pathogen -- national
path_turn_national <- calc_path_TURN(df = path_dat,
TURN_df = TURN_national,
means = means)
# check if percent detections sume to 100
check <- calc_det_rate(path_turn_national) %>%
group_by(epidate) %>%
summarize(total = sum(det_rate))
expect_equal(check$total, rep(100, nrow(check)))
})
# clean_TURN_output ----------------------------------------------------------
test_that("check clean_TURN_output", {
############## Generating data ################
national_list <- calc_TURN(TUR_dat, return_means = TRUE)
means <- national_list$means
# national TURN
TURN_national <- national_list$df
# calculate TURN for each pathogen -- national
path_turn_national <- calc_path_TURN(df = path_dat,
TURN_df = TURN_national,
means = means)
###############################################
##### creating cleaner/simple dataframe #######
clean1 <- clean_TURN_output(TURN_national)
clean2 <- clean_TURN_output(path_turn_national, is_path = TRUE)
expect_equal(clean1$TURN,
TURN_national$Y_prime_3wma[TURN_national$InstrumentVersion == "all_adj"])
expect_equal(clean2$path_TURN,
path_turn_national$path_Y_prime_3wma[path_turn_national$InstrumentVersion == "all_adj"])
})
# calc_n_sites ------------------------------------------------------------
test_that("calc_n_sites", {
all <- calc_n_sites(TUR_dat)
expect_equal(unique(all$n_sites), 7)
expect_error(calc_n_sites(TUR_dat, group_vars = vars(epiweek)))
df <- filter(TUR_dat, !lubridate::month(date) %in% 5:6)
all2 <- calc_n_sites(df)
all3 <- calc_n_sites(df, window = 11)
# b/gap
expect_equal(min(all2$n_sites), 0)
# wider window should bridge gap
expect_equal(min(all3$n_sites), 7)
region_count <- get_site_info(rp_raw) %>%
inner_join(TUR_dat, by = "SiteID") %>%
calc_n_sites(vars(Region)) %>%
pull(n_sites) %>%
unique() %>%
sort()
expect_equal(region_count, c(1, 3))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.