Quality Control

library(magrittr)

dds.path <- "path_to_dds_file"
dds <- readRDS(dds.path)

# Transform data.
vsd <- DESeq2::vst(dds)

# PCA plot.
p1 <- DESeq2::plotPCA(vsd, intgroup = c("treatment")) + 
                      ggplot2::theme_bw(base_size = 18) + 
                      ggplot2::coord_cartesian() + 
                      ggplot2::scale_color_manual(values = stats::setNames(SCpubr::do_ColorPalette("steelblue", square = TRUE), levels(dds$treatment)))

p1$labels$colour <- "Treatment"
p1$layers[[1]]$aes_params$size <- 8
p1$layers[[1]]$aes_params$alpha <- 0.75
  
p2 <- DESeq2::plotPCA(vsd, intgroup = c("model")) + 
      ggplot2::theme_bw(base_size = 18) + 
      ggplot2::coord_cartesian() + 
      ggplot2::scale_color_manual(values = c("ATRT04" = "#243a76", "ATRT08" = "#096837"))
p2$labels$colour <- "Model"
p2$layers[[1]]$aes_params$size <- 8
p2$layers[[1]]$aes_params$alpha <- 0.75

p3 <- DESeq2::plotPCA(vsd, intgroup = c("replicate")) + 
      ggplot2::theme_bw(base_size = 18) + 
      ggplot2::coord_cartesian() + 
      ggplot2::scale_color_manual(values = stats::setNames(SCpubr::do_ColorPalette("steelblue", opposite = TRUE), levels(dds$replicate)))
p3$labels$colour <- "Replicate"
p3$layers[[1]]$aes_params$size <- 8
p3$layers[[1]]$aes_params$alpha <- 0.5

p.pca <- p1 | p2 | p3


# Sample to sample distance plot.
dist.matrix <- as.matrix(stats::dist(t(SummarizedExperiment::assay(vsd))))

p.dist <- pheatmap::pheatmap(dist.matrix,
                             cutree_rows = 2,
                             cutree_cols = 2,
                             col = colorRampPalette(rev(RColorBrewer::brewer.pal(9, "Blues")))(255),
                             border_color = "white",
                             treeheight_row = 0,
                             treeheight_col = 0, 
                             ) %>% 
          ggplotify::as.ggplot() + 
          ggplot2::coord_fixed()

# Sample correlation plot.
p.cor <- pheatmap::pheatmap(stats::cor(SummarizedExperiment::assay(vsd)),
                            border_color = "white",
                            col = colorRampPalette(rev(RColorBrewer::brewer.pal(11, "RdBu")))(255),
                            cutree_rows = 2,
                            cutree_cols = 2,
                            treeheight_row = 0,
                            treeheight_col = 0) %>% 
         ggplotify::as.ggplot() + 
         ggplot2::coord_fixed()

# MeanSD plot
p.meansd <- vsn::meanSdPlot(SummarizedExperiment::assay(vsd))$gg + 
            ggplot2::scale_fill_gradientn(colors = RColorBrewer::brewer.pal("YlGnBu", n = 9)) +
            ggplot2::theme_bw(base_size = 18) 
p.meansd$layers[[1]]$aes_params$colour <- "black"
p.meansd$layers[[2]]$aes_params$linewidth <- 2

layout <- "AAA
           BCD"
p <- patchwork::wrap_plots(A = p.pca,
                           B = p.dist,
                           C = p.cor,
                           D = p.meansd,
                           design = layout)