require(dplyr)
require(tidyr)
require(knitr)
require(ggplot2)
require(kableExtra)
knitr::opts_chunk$set(echo = FALSE, cache = FALSE, warning = FALSE, 
                      message = TRUE, result = 'asis', 
                      fig.width = 8, fig.height = 6)

Data Preparation

Filtering Samples

Parameters selected:

sample_select_prompt_out <- switch(params$sample_select_prompt, 
                                   all = "Use all samples",
                                   include = "Include selected samples",
                                   exclude = "Exclude selected samples")

if(params$sample_select_prompt == 'all') {
  sample_select_out <- 'Not applicable'
} else {
  sample_select_out <- paste0(' ', params$sample_select, collapse="\n")
}

Samples included in analysis:

kable(params$met1) %>%
  kable_styling("striped", full_width = TRUE) %>% 
  scroll_box(width="100%", height="500px")

Aggregating Features

Parameters selected:

Aggregated Features

Aggregated Taxonomy Table

kable(params$aggregated_tax) %>%
  kable_styling("striped", full_width = TRUE) %>% 
  scroll_box(width="100%", height="500px")

Aggregated Count table

kable(params$aggregated_count) %>%
  kable_styling("striped", full_width = TRUE) %>% 
  scroll_box(width="100%", height="500px")

Filtering Features

Parameters selected:

# features to exclude from analysis
asv_select_prompt_out <- switch(params$asv_select_prompt,
                                all = 'Use all features',
                                some = 'Filter features')
# Filter features by
if(params$asv_select_prompt == 'some') {
  asv_filter_options_out <- switch(params$asv_filter_options,
                                   asv_by_count = 'read count',
                                   asv_by_select = 'selection')
} else {
  asv_filter_options_out <- 'Not applicable'
}

if(params$asv_select_prompt == 'some' & params$asv_filter_options == 'asv_by_count') {
  # Set filter cut-off by
  cutoff_method_out <- switch(
    params$cutoff_method,
    abs_count = 'Read count',
    percent_sample = 'Percent of total read count of each sample',
    percent_total = 'Percent of total read count of dataset'
  )

  # Read count cut-off
  asv_cutoff_out <- params$asv_cutoff

  # Feature prevalence
  prevalence_out <- params$prevalence

  # filter message
  asv_cutoff_msg_out <- params$asv_cutoff_msg
} else {
  cutoff_method_out <- 'Not applicable'
  asv_cutoff_out <- 'Not applicable'
  prevalence_out <- 'Not applicable'
  asv_cutoff_msg_out <- 'Features not filtered by read count'

}

r if(params$asv_select_prompt == 'some' & params$asv_filter_options == 'asv_by_count') { paste("* Filter features by:", asv_filter_options_out, sep=" ") paste("* Set filter cut-off by:", cutoff_method_out, sep=" ") paste("* Read count cut-off:", asv_cutoff_out, sep=" ") paste("* Feature prevalence (# of samples):", prevalence_out, sep=" ") "\n" asv_cutoff_msg_out }

params$prev_agg_plot
params$prev_read_plot

r if(params$asv_select_prompt == 'some' & params$asv_filter_options == 'asv_by_select') { paste("* Filter features by: ", asv_filter_options_out, sep=" ") "* Features selected to be excluded:" }

out <- params$tax1 %>% 
  filter(featureID %in% params$asv_remove) %>% 
  relocate(sequence, .after=last_col())
kable(out) %>%
  kable_styling("striped", full_width = TRUE) %>% 
  scroll_box(width="100%", height="500px")

r if(length(params$empty_sample) > 0) { sprintf("%s samples contained 0 reads after ASV filtering. The following samples have been removed:\n%s", length(params$empty_sample), paste(params$empty_sample, collapse="\n")) }

r if(length(params$empty_asv) > 0) { sprintf("%s asvs contained 0 reads in all samples after ASV filtering. The following asvs have been removed:\n%s", length(params$empty_asv), paste(params$empty_asv, collapse="\n")) }

Features included in analysis:

out <- params$tax2 %>% 
  relocate(sequence, .after=last_col())

kable(out) %>%
  kable_styling("striped", full_width = TRUE) %>% 
  scroll_box(width="100%", height="500px")

Microbiome Profiles

bar_y_out <- switch(params$bar_y,
                    rel_abund = 'Relative abundance',
                    cnt_abund = 'Read count')

Observing r bar_y_out based on r params$bar_x. Abundance values aggregated at r params$aggregate_by level. The mean relative abundance is shown when selected group variable contains multiple samples.

kable(params$bar_table, caption=sprintf("%s level microbiome profile", params$aggregate_by)) %>%
  kable_styling("striped", full_width = TRUE) %>% 
  scroll_box(width="100%", height="500px")
params$p_bar +
  theme(legend.position = 'bottom')

Profile Sparsity

It is a good idea to check the zero content of microbiome data. The proportion of zeros in the data set is an indication of whether features are prevalent throughout samples (low sparsity) or are rarely observed in the dataset (high sparsity).

Histogram of the zero content of samples

params$p_zero

Presence/Absence heatmap

Count data converted into binary, where 0 = absent and 1 = present can be shown as a heatmap. Samples and features are clustered based on Jaccard distance, and complete linkage.

params$binary_hmap


schyen/OCMSExplorer documentation built on Feb. 15, 2023, 4:39 p.m.