```{css, echo=FALSE, eval=TRUE} pre code { white-space: pre !important; overflow-x: scroll !important; word-break: keep-all !important; word-wrap: initial !important; }
```r
options(width=60, max.print=1000)
knitr::opts_chunk$set(
    eval=as.logical(Sys.getenv("KNITR_EVAL", "TRUE")),
    cache=as.logical(Sys.getenv("KNITR_CACHE", "TRUE")), 
    tidy.opts=list(width.cutoff=60), 
    tidy=TRUE,
    eval = FALSE)
# shiny::tagList(rmarkdown::html_dependency_font_awesome())
suppressPackageStartupMessages({ library(systemPipeShiny) library(spsBio) })
cat("<style>") cat(readLines(system.file("app/www/css/sps.css", package = "systemPipeShiny")),sep = "\n") cat("</style>")
knitr::include_graphics(path = "../inst/app/www/img/sps.png")
spsBio is a systemPipeShiny(SPS) plugin that provides additional plotting functions and SPS tabs visualize biological data.
To install SPS:
if (!requireNamespace("BiocManager", quietly=TRUE)) install.packages("BiocManager") BiocManager::install("systemPipeR/systemPipeShiny", build_vignettes=TRUE, dependencies=TRUE) BiocManager::install("systemPipeR/spsBio", build_vignettes=TRUE, dependencies=TRUE)
Before starting with SPS, you need to create a SPS project:
sps_tmp_dir <- tempdir() systemPipeShiny::spsInit(dir_path = sps_tmp_dir, change_wd = FALSE, project_name = "SPSProject") sps_dir <- file.path(sps_tmp_dir, "SPSProject")
Here for building the vignette we are not switching to the app directory and are using a temp directory, in a real case, you shouldn't store you SPS project in a temp directory. Just use the following instead:
systemPipeShiny::spsInit()
Once the project is created, change your working directory to the project if 
you selected change_wd = FALSE in the previous step. Then run:
systemPipeShiny::spsLoadPlugin("spsBio")
systemPipeShiny::spsLoadPlugin("spsBio", app_path = sps_dir)
That should be all you need. In your global.R, specify you want to run this plugin when app starts:
sps_app <- sps( vstabs = "", plugin = "spsBio", server_expr = { msg("Custom expression runs -- Hello World", "GREETING", "green") } )
SPS offers an interactive data visualization framework. spsBio extends this functionality with additional visualization tabs and functions. These tabs are focused on biological data visualization on various results. Users can upload different input data types, and apply various options for preprocessing those datasets. Users can then create downstream analysis plots, as per the type of uploaded data. Some available plotting options include: bar plots of differentially expressed genes, heat maps, dendrogram, principal component analysis (PCA) plots, and multidimensional scaling (MDS) plots. Depending on the nature of the plots, there are also options to adjust the plot such as normalizing the data. Additionally, spsBio provides users with plot templates and plotting functions that they can then customize according to their necessities for visualization.
Table with all exported functions
| Function Name   | Description                                                     |
|-----------------|-----------------------------------------------------------------|
| exploreDSS    | Transform raw read counts using the \code{DESeq2} package       |
| exploreDDSplot| Scatterplot of transformed counts reads                         |
| PCAplot       | Plots PCA from a count matrix                                   |
| MDSplot       | Plots MDS from a count matrix                                   |
| tSNEplot      | Plots   t-Distributed Stochastic Neighbor embedding               |
| GLMplot       | Plots Dimension Reduction with GLMplot                          |
| heatMaplot    | Plots Hierarchical Clustering HeatMap                           |
| MAplot        | MA-Plot from base means and log fold changes                    |
| volcanoplot   | Plots a Volcano Plot from an DEG analyis results                |
| hclustplot    | Plots Hierarchical Clustering Dendrogram                        |
To show the effect of the transformation, in the figure below we plot the first 
sample against the second, first simply using the log2 function, and then 
using the VST and rlog-transformed values. For the log2 approach, we need 
to first estimate size factors to account for sequencing depth, and then specify 
normalized=TRUE. Sequencing depth correction is done automatically for the vst and rlog.
## Targets file targetspath <- system.file("extdata", "targets.txt", package="systemPipeR") targets <- read.delim(targetspath, comment="#") cmp <- systemPipeR::readComp(file=targetspath, format="matrix", delim="-") ## Count table file countMatrixPath <- system.file("extdata", "countDFeByg.xls", package="systemPipeR") countMatrix <- read.delim(countMatrixPath, row.names=1) ## Plot exploreDDSplot(countMatrix, targets, cmp=cmp[[1]], preFilter=NULL, samples=c(3,4)) exploreDDSplot(countMatrix, targets, cmp=cmp[[1]], samples=c("M1A", "M1B"), save = TRUE, filePlot = "transf_deseq2.pdf") ## Plot Correlogram exploreDDSplot(countMatrix, targets, cmp=cmp[[1]], preFilter=NULL, samples=c("M1A", "M1B"), scattermatrix=TRUE)
A dendrogram of the results of hierarchical clustering performed with the hclust 
function can be created with the hclustplot function. The sample-wise Spearman 
correlation coefficients are computed, and then the results are transformed to a 
distance matrix before the hierarchical clustering is performed. The count data
frame can be transformed with the rlog or Variance-stabilizing Transformation 
(vst) methods from the DESeq2 package, or can be done without transformation. 
## Data transformation exploredds <- exploreDDS(countMatrix, targets, cmp=cmp[[1]], preFilter=NULL, transformationMethod="rlog") ## Plot hclustplot(exploredds, method = "spearman") hclustplot(exploredds, method = "spearman", savePlot = TRUE, filePlot = "cor.pdf")
A heatmap of the results of hierarchical clustering performed with the hclust 
function can be created with the heatMaplot function. The sample-wise Spearman 
correlation coefficients are computed before hierarchical clustering. The count 
data frame can be transformed with the rlog or Variance-stabilizing Transformation (vst)
methods from the DESeq2 package, or can be done without transformation. 
exploredds <- exploreDDS(countMatrix, targets, cmp=cmp[[1]], preFilter=NULL, transformationMethod="rlog") heatMaplot(exploredds, clust="samples") heatMaplot(exploredds, clust="samples", plotly = TRUE)
### DEG analysis with `systemPipeR` degseqDF <- systemPipeR::run_DESeq2(countDF = countMatrix, targets = targets, cmp = cmp[[1]], independent = FALSE) DEG_list <- systemPipeR::filterDEGs(degDF = degseqDF, filter = c(Fold = 2, FDR = 10)) ### Plot heatMaplot(exploredds, clust="ind", DEGlist = unique(as.character(unlist(DEG_list[[1]])))) heatMaplot(exploredds, clust="ind", DEGlist = unique(as.character(unlist(DEG_list[[1]]))), plotly = TRUE)
A Principal Component Analysis (PCA) plot can be created using the PCAplot 
function which uses the DESeq2 package. The input data frame can be transformed 
with the rlog or Variance-stabilizing Transformation (vst) methods from the DESeq2 
package, or can be done without transformation. 
## Data transformation exploredds <- exploreDDS(countMatrix, targets, cmp=cmp[[1]], preFilter=NULL, transformationMethod="rlog") ## Plot PCAplot(exploredds, plotly = FALSE) PCAplot(exploredds, plotly = TRUE)
In addition, generalized principal component analysis (GLM-PCA) for dimension 
reduction of non-normally distributed data can be plotted with the GLMplot 
function [@Townes2019]. This option does not offer transformation or normalization of raw data.
## Data transformation exploredds <- exploreDDS(countMatrix, targets, cmp=cmp[[1]], preFilter=NULL, transformationMethod="raw") ## Plot GLMplot(exploredds, plotly = FALSE) GLMplot(exploredds, plotly = FALSE, savePlot = TRUE, filePlot = "GLM.pdf")
A Multidimensional Scaling (MDS) plot can be created using the MDSplot function. 
The input data frame can be transformed with either the rlog or Variance-stabilizing
Transformation (vst) methods from the DESeq2 package. From the input data, 
it computes a spearman correlation-based distance matrix and performs MDS analysis on it.
exploredds <- exploreDDS(countMatrix, targets, cmp=cmp[[1]], preFilter=NULL, transformationMethod="rlog") MDSplot(exploredds, plotly = FALSE)
A Barnes-Hut t-Distributed Stochastic Neighbor Embedding (t-SNE) plot can be created
using the tSNEplot function, which uses the Rtsne package [@Krijthe2015] to 
compute t-SNE values. The function removes duplicates in the input data frame, 
sets a seed for reproducibility, performs an initial PCA step. The function also 
allows for a user-set perplexity value for the computation. 
targetspath <- system.file("extdata", "targets.txt", package="systemPipeR") targets <- read.delim(targetspath, comment="#") cmp <- systemPipeR::readComp(file=targetspath, format="matrix", delim="-") countMatrixPath <- system.file("extdata", "countDFeByg.xls", package="systemPipeR") countMatrix <- read.delim(countMatrixPath, row.names=1) set.seed(42) ## Set a seed if you want reproducible results tSNEplot(countMatrix, targets, perplexity = 5)
An MA plot is an application of a Bland–Altman plot for visual representation of genomic data. The plot visualizes the differences between measurements taken in two samples, by transforming the data onto M (log ratio) and A (mean average) scales, then plotting these values.
exploredds <- exploreDDS(countMatrix, targets, cmp=cmp[[1]], preFilter=NULL, transformationMethod="raw") MAplot(exploredds, plotly = FALSE) MAplot(exploredds, plotly = TRUE)
A volcano plot of DEGs data frame can be plotted using the function volcanoplot. 
Using the resulting data frame from run_edgeR or run_deseq2, the function 
plots a volcano plot using False Discovery Rate and Log Fold Change thresholds for 
the sample comparison specified by the user.
### DEG analysis with `systemPipeR` degseqDF <- systemPipeR::run_DESeq2(countDF = countMatrix, targets = targets, cmp = cmp[[1]], independent = FALSE) DEG_list <- systemPipeR::filterDEGs(degDF = degseqDF, filter = c(Fold = 2, FDR = 10)) ## Plot volcanoplot(degseqDF, comparison = "M12-A12", filter = c(Fold = 2, FDR = 10)) volcanoplot(degseqDF, comparison = "M12-A12", filter = c(Fold = 1, FDR = 20), genes = "ATCG00280")
A barplot for analysis of differentially expressed genes (DEGs) can be plotted using functions deg_edgeR or deg_deseq2. The function deg_edgeR uses the edgeR package [@Robinson2010-uk] to create an edgeR data frame. Alternatively, the function deg_deseq2 uses the DESeq2 package [@Love2014-sh] to create an DESeq2 data frame. Using the filterDEGs function, it filters and plots DEG results for up and down regulated genes in a barplot. 
sessionInfo()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.