title: "r params$doc_title
"
author: "r params$doc_author
"
date: "r params$doc_date
"
library(pavian) library(shiny) library(DT) knitr::opts_chunk$set(echo = FALSE) options(DT.options = list(pageLength = 15, saveState = TRUE, searchHighlight = TRUE, scrollX = TRUE, colReorder = TRUE, #deferRender = FALSE, #scrollY = 400, #scroller = TRUE, #dom = 'Bfrtip', selection = 'single', dom = 'Bfrtip', class = "stripe hover row-border compact", lengthMenu = list(c(15, 25, 50, 100), c('15', '25', '50', '100')), search = list(regex = TRUE, caseInsensitive = TRUE))) set_name <- params$set_name
if (isTRUE(params$all_data_loaded)) { sample_data <- params$sample_data reports <- params$reports } else { sample_directory <- system.file("shinyapp","example-data","brain-biopsies",package="pavian") sample_data <- pavian::read_sample_data(sample_directory) reports <- pavian::read_reports(sample_data$ReportFilePath, sample_data$Name) } samples_summary <- pavian::summarize_reports(reports) samples_summary$Name <- rownames(samples_summary) extra_cols <- c("Name") samples_summary <- samples_summary[,c(extra_cols, setdiff(colnames(samples_summary),extra_cols))] colnames(samples_summary) <- pavian:::beautify_string(colnames(samples_summary)) start_color_bar_at <- 3 samples_summary_percent <- samples_summary samples_summary_percent[, start_color_bar_at:ncol(samples_summary)] <- 100 * signif(sweep(samples_summary[, start_color_bar_at:ncol(samples_summary)], 1, samples_summary[, 2], `/`), 4) tabsetPanel( tabPanel("Classification summary", DT::datatable(samples_summary_percent, rownames = FALSE, class = "stripe hover row-border compact", extensions = 'Buttons', options = list( dom = 'Bfrtip', buttons = pavian:::common_buttons(set_name))) %>% pavian:::formatSummaryDT(display_percent = TRUE) ), tabPanel("Raw read numbers", DT::datatable(samples_summary, rownames = FALSE, class = "stripe hover row-border compact", extensions = 'Buttons', options = list( dom = 'Bfrtip', buttons = pavian:::common_buttons(set_name))) %>% pavian:::formatSummaryDT(display_percent = FALSE) ), tabPanel("Sample information", DT::datatable(sample_data, class = "stripe hover row-border compact nowrap", extensions = 'Buttons', options = list( dom = 'Bfrtip', buttons = pavian:::common_buttons(set_name)))) )
## Classificationas across samples merged_reports <- pavian::merge_reports2(reports, col_names = sample_data$Name) taxonReads <- merged_reports$taxonReads cladeReads <- merged_reports$cladeReads tax_data <- merged_reports[["tax_data"]] numericCols <- c("taxonReads","cladeReads", "taxonReads %","cladeReads %","taxonReads z-score","cladeReads z-score") numericCols <- c("taxonReads","cladeReads") stat_columns <- c("Mean", "Median", "Max", "Min", "Sd", "Maximum absolute deviation", "Max Z-score") stat_columns <- c("Mean") shown_rows <- seq_len(nrow(tax_data)) sel_bacteria = grepl("d_Bacteria",tax_data[,"taxLineage"]) & tax_data[,"taxRank"] == 'S' sel_viruses = grepl("d_Viruses",tax_data[,"taxLineage"]) & tax_data[,"taxRank"] == 'S' sel_fungi = grepl("k_Fungi",tax_data[,"taxLineage"]) & tax_data[,"taxRank"] == 'S' sel_euk = grepl("d_Eukaryota",tax_data[,"taxLineage"]) & tax_data[,"taxRank"] == 'S' sel_protists = grepl("d_Eukaryota",tax_data[,"taxLineage"]) & !sel_fungi &!grepl("p_Chordata",tax_data[,"taxLineage"]) & tax_data[,"taxRank"] == 'S' my_df <- data.frame(Name=tax_data$name,Max=apply(cladeReads,1,max,na.rm=TRUE),cladeReads,Lineage=pavian:::beautify_taxLineage(tax_data$taxLineage), stringsAsFactors = FALSE) my_dt <- function(sel) { selw <- which(sel) max_order <- order(my_df[sel,"Max"], decreasing = TRUE) if (sum(sel) > 100) { selw <- selw[max_order[1:100]] h = sprintf("Showing %s of %s species.", 100, sum(sel)) } else { selw <- selw[max_order] h = "" } shiny::tagList( shiny::HTML(h), DT::datatable(my_df[selw,,drop=F],height = "600px", rownames = FALSE, class = "stripe hover row-border compact nowrap", extensions = 'Buttons', options = list( dom = 'Bfrtip', buttons = pavian:::common_buttons(set_name), scrollX = TRUE)) ) } tabsetPanel( tabPanel("Bacteria", my_dt(sel_bacteria)), tabPanel("Viruses", my_dt(sel_viruses)), tabPanel("Eukaryotes", my_dt(sel_euk)), tabPanel("Eukaryotes/Fungi", my_dt(sel_fungi)), tabPanel("Eukaryotes/Protists", my_dt(sel_protists)) ) #,tabPanel("Clade percentage", # DT::datatable(data.frame(tax_data[,1:3],100*signif(sweep(cladeReads,2,colSums(cladeReads[1:2,],na.rm=T),"/"),4),tax_data[4]), # class = "stripe hover row-border compact nowrap", # extensions = 'Buttons', # options = list( dom = 'Bfrtip', buttons = pavian:::common_buttons(set_name), scrollX = TRUE))) #)
tax_taxRanks <- c("D","K","P","C","O","F","G","S") do.call(tabsetPanel,lapply(names(reports), function(n) { my_report <- reports[[n]] tabPanel(n, DT::datatable(my_report, class = "stripe hover row-border compact nowrap", extensions = 'Buttons', options = list( dom = 'Bfrtip', buttons = pavian:::common_buttons(set_name))) ) }))
###############SANKEYS if (isTRUE(params$include_sankey)) { tax_taxRanks <- c("D","K","P","C","O","F","G","S") all_names <- sub("^._","",sort(unique(unlist(sapply(reports,function(x) x$name[x$taxRank != "-"]))))) colourScale <- sankeyD3::JS(sprintf("d3.scaleOrdinal().range(d3.schemeCategory20b).domain([%s])", paste0('"',c(all_names,"other"),'"',collapse=","))) # library(bsplus) # ac <- bsplus::bs_accordion_sidebar("sankey") # for (n in names(reports)) { # my_report <- reports[[n]] # my_report2 <- filter_taxon(my_report, "Chordata") # my_report2 <- filter_taxon(my_report2, "synthetic construct") # # ac <- ac %>% bs_append(title_side=n,content_side="",content_main=pavian:::build_sankey_network(my_report2, nodePadding=13, xScalingFactor=.9, nodeStrokeWidth=0, zoom = FALSE, colourScale = colourScale) ) # } # #library(D3partitionR) if (length(params$filter_tax) != 0 && isTRUE(is.na(params$filter_tax))) { filt <- c("Chordata", "other sequences") } else { filt <- params$filter_taxa } htmltools::tagList( h1("Sankey visualization"), HTML(sprintf("<script>sankey_colorscale = %s</script>", colourScale)), lapply(names(reports), function(n) { # n="PT1" my_report <- reports[[n]] for (f in filt) my_report <- filter_taxon(my_report, f) # for D3partitionR # my_report2 <- my_report2[my_report2$cladeReads > 0 & my_report2$taxonReads > 0 & grepl("^._root",my_report2$taxLineage), ] #path_in <- lapply(strsplit(gsub("._","",my_report2$taxLineage),"|",fixed=T), as.list) #value_in <- my_report2$taxonReads #D3partitionR(data=list(path=path_in,value=value_in), title=list(text=n), trail=TRUE) htmltools::tagList( # br(), h2(n), # tabsetPanel( # tabPanel("Sankey visualization", pavian:::build_sankey_network(my_report, nodePadding=13, xScalingFactor=.9, nodeStrokeWidth=0, zoom = FALSE, colourScale = "sankey_colorscale", LinkGroup = "source_name") # )#, #tabPanel("All data", # DT::datatable(my_report, # class = "stripe hover row-border compact nowrap", # extensions = 'Buttons', # options = list( dom = 'Bfrtip', buttons = pavian:::common_buttons(set_name)))) # ) ) })) }
This file was generated with the Pavian R package version r utils::packageVersion('pavian')
on r date()
. Please cite Pavian if you use it in your research.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.