## ----global options, include = FALSE------------------------------------------ knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) knitr::opts_knit$set(root.dir = tempdir()) ## ----setup-------------------------------------------------------------------- library(gcplyr) library(dplyr) library(ggplot2) library(tidyr) ## ----------------------------------------------------------------------------- ex_dat_mrg <- make_example(vignette = 7, example = 1) # Plot with a log y-axis ggplot(data = dplyr::filter(ex_dat_mrg, noise == "Yes"), aes(x = Time, y = Measurements)) + geom_point() + geom_line(data = dplyr::filter(ex_dat_mrg, noise == "No"), lty = 2, color = "red") + facet_wrap(~Well) + scale_y_continuous(trans = "log10") ## ----------------------------------------------------------------------------- ex_dat_mrg <- mutate(group_by(ex_dat_mrg, Well, Bacteria_strain, Phage, noise), deriv_2 = calc_deriv(x = Time, y = Measurements), derivpercap_2 = calc_deriv(x = Time, y = Measurements, percapita = TRUE, blank = 0)) # Plot derivative ggplot(data = dplyr::filter(ex_dat_mrg, noise == "Yes"), aes(x = Time, y = deriv_2)) + geom_point() + geom_line(data = dplyr::filter(ex_dat_mrg, noise == "No"), lty = 2, color = "red") + facet_wrap(~Well, scales = "free_y") # Plot per-capita derivative ggplot(data = dplyr::filter(ex_dat_mrg, noise == "Yes"), aes(x = Time, y = derivpercap_2)) + geom_point() + geom_line(data = dplyr::filter(ex_dat_mrg, noise == "No"), lty = 2, color = "red") + facet_wrap(~Well, scales = "free_y") ## ----------------------------------------------------------------------------- #Plot density ggplot(data = dplyr::filter(ex_dat_mrg, noise == "Yes"), aes(x = Time, y = Measurements)) + geom_point() + facet_wrap(~Well, scales = "free_y") + scale_y_log10() # Plot per-capita derivative ggplot(data = dplyr::filter(ex_dat_mrg, noise == "Yes"), aes(x = Time, y = derivpercap_2)) + geom_point() + facet_wrap(~Well, scales = "free_y") ## ----------------------------------------------------------------------------- #Plot density ggplot(data = dplyr::filter(ex_dat_mrg, noise == "Yes", Measurements > 0.01), aes(x = Time, y = Measurements)) + geom_point() + facet_wrap(~Well, scales = "free_y") + geom_hline(yintercept = 0.01, lty = 2) + scale_y_log10() # Plot per-capita derivative ggplot(data = dplyr::filter(ex_dat_mrg, noise == "Yes", Measurements > 0.01), aes(x = Time, y = derivpercap_2)) + geom_point() + facet_wrap(~Well, scales = "free_y") ## ----------------------------------------------------------------------------- ex_dat_mrg_sum <- summarize(group_by(ex_dat_mrg, Well, Bacteria_strain, Phage, noise), max_growth_rate = max(derivpercap_2[Measurements > 0.01], na.rm = TRUE)) head(ex_dat_mrg_sum) ## ----------------------------------------------------------------------------- ex_dat_mrg <- mutate(group_by(ex_dat_mrg, Well, Bacteria_strain, Phage, noise), deriv_5 = calc_deriv(x = Time, y = Measurements, window_width_n = 5), derivpercap_5 = calc_deriv(x = Time, y = Measurements, percapita = TRUE, blank = 0, window_width_n = 5), deriv_9 = calc_deriv(x = Time, y = Measurements, window_width_n = 9), derivpercap_9 = calc_deriv(x = Time, y = Measurements, percapita = TRUE, blank = 0, window_width_n = 9)) #Reshape our data for plotting purposes ex_dat_mrg_wide <- pivot_longer(ex_dat_mrg, cols = starts_with("deriv"), names_to = c("deriv", "window_width_n"), names_sep = "_") ex_dat_mrg_wide <- pivot_wider(ex_dat_mrg_wide, names_from = deriv, values_from = value) #Plot derivative ggplot(data = dplyr::filter(ex_dat_mrg_wide, noise == "Yes"), aes(x = Time, y = deriv)) + geom_line(aes(color = window_width_n), linewidth = 0.6) + facet_wrap(~Well, scales = "free_y") + geom_line(data = dplyr::filter(ex_dat_mrg_wide, noise == "No", window_width_n == 2), lty = 2, color = "red") + scale_color_grey(start = 0.8, end = 0) + theme_bw() #Plot per-capita derivative ggplot(data = dplyr::filter(ex_dat_mrg_wide, noise == "Yes"), aes(x = Time, y = derivpercap)) + geom_line(aes(color = window_width_n), linewidth = 0.6, alpha = 0.75) + facet_wrap(~Well, scales = "free_y") + geom_line(data = dplyr::filter(ex_dat_mrg_wide, noise == "No", window_width_n == 5), lty = 2, color = "red") + scale_color_grey(start = 0.8, end = 0) + ylim(NA, 5) + theme_bw() ## ----------------------------------------------------------------------------- ex_dat_mrg <- mutate(group_by(ex_dat_mrg, Well, Bacteria_strain, Phage, noise), movmed_1 = Measurements, movmed_5 = smooth_data(x = Time, y = Measurements, sm_method = "moving-median", window_width_n = 5), movmed_9 = smooth_data(x = Time, y = Measurements, sm_method = "moving-median", window_width_n = 9)) #Reshape our data for plotting purposes ex_dat_mrg_wide <- pivot_longer(ex_dat_mrg, cols = starts_with("movmed"), names_prefix = "movmed_", names_to = "window_width_n") #Plot data ggplot(data = dplyr::filter(ex_dat_mrg_wide, noise == "Yes"), aes(x = Time, y = value)) + geom_line(aes(color = window_width_n), linewidth = 0.6, alpha = 0.75) + facet_wrap(~Well, scales = "free_y") + geom_line(data = dplyr::filter(ex_dat_mrg_wide, noise == "No", window_width_n == 1), lty = 2, color = "red") + scale_color_grey(start = 0.8, end = 0) + scale_y_log10() + ggtitle("moving-median") + theme_bw() ## ----------------------------------------------------------------------------- ex_dat_mrg <- mutate(group_by(ex_dat_mrg, Well, Bacteria_strain, Phage, noise), movavg_1 = Measurements, movavg_5 = smooth_data(x = Time, y = Measurements, sm_method = "moving-average", window_width_n = 5), movavg_9 = smooth_data(x = Time, y = Measurements, sm_method = "moving-average", window_width_n = 9)) #Reshape our data for plotting purposes ex_dat_mrg_wide <- pivot_longer(ex_dat_mrg, cols = starts_with("movavg"), names_prefix = "movavg_", names_to = "window_width_n") #Plot data ggplot(data = dplyr::filter(ex_dat_mrg_wide, noise == "Yes"), aes(x = Time, y = value)) + geom_line(aes(color = window_width_n), linewidth = 0.6, alpha = 0.75) + facet_wrap(~Well, scales = "free_y") + geom_line(data = dplyr::filter(ex_dat_mrg_wide, noise == "No", window_width_n == 1), lty = 2, color = "red") + scale_color_grey(start = 0.8, end = 0) + scale_y_log10() + ggtitle("moving-average") + theme_bw() ## ----------------------------------------------------------------------------- ex_dat_mrg <- mutate(group_by(ex_dat_mrg, Well, Bacteria_strain, Phage, noise), smoothed_no = Measurements, sm_med3 = smooth_data(x = Time, y = Measurements, sm_method = "moving-median", window_width_n = 3), #Note that for the second round, we're using the #first smoothing as the input y smoothed_yes = smooth_data(x = Time, y = sm_med3, sm_method = "moving-average", window_width_n = 3)) #Reshape our data for plotting purposes ex_dat_mrg_wide <- pivot_longer(ex_dat_mrg, cols = starts_with("smoothed"), names_to = "smoothed", names_prefix = "smoothed_") #Plot data ggplot(data = dplyr::filter(ex_dat_mrg_wide, noise == "Yes"), aes(x = Time, y = value, color = smoothed)) + geom_line(linewidth = 0.6, alpha = 0.75) + scale_color_grey(start = 0.8, end = 0) + facet_wrap(~Well, scales = "free_y") + geom_line(data = dplyr::filter(ex_dat_mrg_wide, noise == "No", smoothed == "no"), lty = 2, color = "red") + scale_y_log10() + ggtitle("median then average smoothing") + theme_bw() ## ----------------------------------------------------------------------------- ex_dat_mrg_fortraining <- make_example(vignette = 7, example = 2) training_results <- reframe(group_by(ex_dat_mrg_fortraining, Bacteria_strain, Phage, Well), train_smooth_data(x = Time, y = Measurements, sm_method = "moving-average", tuneLength = 5)) head(training_results) ## ----------------------------------------------------------------------------- ggplot(data = training_results, aes(x = window_width_n, y = RMSE)) + geom_point() ## ----------------------------------------------------------------------------- training_results <- reframe(group_by(ex_dat_mrg_fortraining, Bacteria_strain, Phage, Well), train_smooth_data(x = Time, y = Measurements, sm_method = "moving-average", tuneGrid = list( "window_width_n" = c(1, 3, 5, 9, 13)))) ggplot(data = training_results, aes(x = window_width_n, y = RMSE)) + geom_point() ## ----------------------------------------------------------------------------- # Note here that we're calculating derivatives of the smoothed column generated # in the previous section by combining moving median and moving average smoothing ex_dat_mrg <- mutate(group_by(ex_dat_mrg, Well, Bacteria_strain, Phage, noise), smderiv_0 = calc_deriv(x = Time, y = Measurements), smderivpercap_0 = calc_deriv(x = Time, y = Measurements, percapita = TRUE, blank = 0), smderiv_3 = calc_deriv(x = Time, y = smoothed_yes, window_width_n = 3), smderivpercap_3 = calc_deriv(x = Time, y = smoothed_yes, percapita = TRUE, blank = 0, window_width_n = 3)) #Reshape our data for plotting purposes ex_dat_mrg_wide <- pivot_longer(ex_dat_mrg, cols = starts_with("smderiv"), names_to = c("deriv", "window_width_n"), names_sep = "_") ex_dat_mrg_wide <- pivot_wider(ex_dat_mrg_wide, names_from = deriv, values_from = value) #Plot derivative ggplot(data = dplyr::filter(ex_dat_mrg_wide, noise == "Yes"), aes(x = Time, y = smderiv, color = window_width_n)) + geom_line(linewidth = 0.6, alpha = 0.75) + scale_color_grey(start = 0.8, end = 0) + facet_wrap(~Well, scales = "free_y") + geom_line(data = dplyr::filter(ex_dat_mrg_wide, noise == "No", window_width_n == 0), lty = 2, color = "red") + theme_bw() #Plot per-capita derivative ggplot(data = dplyr::filter(ex_dat_mrg_wide, noise == "Yes"), aes(x = Time, y = smderivpercap, color = window_width_n)) + geom_line(linewidth = 0.6, alpha = 0.75) + scale_color_grey(start = 0.8, end = 0) + facet_wrap(~Well, scales = "free_y") + geom_line(data = dplyr::filter(ex_dat_mrg_wide, noise == "No", window_width_n == 3), lty = 2, color = "red") + ylim(NA, 5) + theme_bw()