#' Summary MSigDB modules results
#'
#' @param obj a DEGContainer
#' @param dir a directory to store results
#' @param prefix a prefix of file names in this step
#' @param top top of hyper or gsea
#'
#' @return
#' @export
#'
#' @examples
#' MSigDBSummary(data_msigdb)
MSigDBSummary <- function(obj, dir = ".", prefix = "5-runMSigDB",top =10) {
## plot
## gse ----
gse_list <- msigdbGSEAresult(obj)
if(length(gse_list) != 0){
tmp <- lapply(msigdbParam(obj)[["category"]], function(j){
cat <- switch (j,
"H" = "HALLMARK",
"C1" = "positional",
"C2" = "curated",
"C3" = "regulatory_target",
"C4" = "computational",
"C5" = "ontology",
"C6" = "oncogenic_signature",
"C7" = "immunologic_signature",
"C8" = "cell_type_signature"
)
tmp <- lapply(seq_along(gse_list), function(i){
y = gse_list[[i]]
x = y[[j]]
dat = x@result
res_name <- glue("{dir}/{prefix}_GSEA_{names(gse_list)[i]}_{j}.csv")
write.csv(dat,file = res_name)
ui_done(glue("{names(gse_list)[i]} {j} GSEA result in csv format is stored in {usethis::ui_path(res_name)}"))
})
plot_list <- lapply(seq_along(gse_list), function(i){
y = gse_list[[i]]
x = y[[j]]
GSEAbar(x,top = top) +
theme(legend.position="none") +
ggtitle(names(gse_list)[i])
})
legend <- cowplot::get_legend(
# create some space to the left of the legend
plot_list[[1]] + ggplot2::theme(legend.position="right",legend.box.margin = ggplot2::margin(0, 0, 0, 12))
)
p <- cowplot::plot_grid(plotlist = plot_list,legend,ncol = 5, rel_widths = c(.4,3,3,3,3))
ggplot2::ggsave(p,filename = glue::glue("{dir}/{prefix}_GSEA_bar_{cat}.pdf"), width = 6400,height = 1200*(top*2/10),units = "px",limitsize = FALSE,device = cairo_pdf)
tmp <- lapply(seq_along(gse_list), function(i){
y = gse_list[[i]]
x = y[[j]]
gseaplots_l <- GSEAplot(x,top =top)
## 保存gse富集趋势图到多页pdf
mod <- names(gse_list)[i]
down_plots_pdf <- glue("{dir}/{prefix}_GSEA_{mod}_{cat}_Down_gseplot.pdf")
pdf(down_plots_pdf,height = 3,width = 4)
invisible(lapply(gseaplots_l[["down_plots"]], print))
dev.off()
ui_done(glue("Enrichplot of GSEA head {top} {mod} {cat} in Down ploted in {ui_path({down_plots_pdf})}"))
up_plots_pdf <- glue("{dir}/{prefix}_GSEA_{mod}_{cat}_Up_gseplot.pdf")
pdf(up_plots_pdf,height = 3,width = 4)
invisible(lapply(gseaplots_l[["up_plots"]], print))
dev.off()
ui_done(glue("Enrichplot of GSEA head {top} {mod} {cat} in Up ploted in {ui_path({up_plots_pdf})}"))
})
})
}
## ----
## hyper ----
hyper_list <- msigdbHyperResult(obj)
index <- c(setdiff(label(obj),label_ns(obj)),"diff")
if (length(hyper_list) != 0) {
tmp <- lapply(index, function(i){
lapply(msigdbParam(obj)[["category"]], function(j){
cat <- switch (j,
"H" = "HALLMARK",
"C1" = "positional",
"C2" = "curated",
"C3" = "regulatory_target",
"C4" = "computational",
"C5" = "ontology",
"C6" = "oncogenic_signature",
"C7" = "immunologic_signature",
"C8" = "cell_type_signature"
)
plot_list <- lapply(seq_along(hyper_list), function(k){
x = hyper_list[[k]]
set <- x[[j]]
eob <- set[[i]]
res_name <- glue("{dir}/{prefix}_Hyper_{names(hyper_list)[k]}_{j}_{i}.csv")
write.csv(eob@result,file = res_name)
ui_done(glue("{names(hyper_list)[k]} {j} {i} Hyper result in csv format is stored in {usethis::ui_path(res_name)}"))
if(!is.null(eob)){
hyperBar(eob,top = top)+ theme(legend.position="none") + ggtitle(names(hyper_list)[j])
}
})
legend <- cowplot::get_legend(
# create some space to the left of the legend
plot_list[[1]] + ggplot2::theme(legend.position="right",legend.box.margin = ggplot2::margin(0, 0, 0, 12))
)
p <- cowplot::plot_grid(plotlist = plot_list,legend,ncol = 5, rel_widths = c(.4,3,3,3,3))
plot_path = glue::glue("{dir}/{prefix}_Hyper_{j}_{i}.pdf")
ggplot2::ggsave(p,filename = plot_path, width = 6400,height = 1200*(top*2/10),units = "px",limitsize = FALSE,device = cairo_pdf)
ui_done(glue("{j} {i} Genes Hyper result is stored in {usethis::ui_path(plot_path)}"))
})
})
}
## ----
## gsva
gsvares_list <- msigdbGSVAresult(obj)[["GSVA_matrix"]]
invisible(lapply(seq_along(gsvares_list), function(x){
pdf_file = glue("{dir}/{prefix}_GSVA_{names(gsvares_list)[x]}.pdf")
ac=data.frame(Groups=groupInfo(obj))
rownames(ac)=sampleNames(obj,filtered = T)
pheatmap::pheatmap(gsvares_list[[x]],
annotation_col = ac,
filename = pdf_file)
ui_done("{names(gsvares_list)[x]} GSVA heatmap is stored in {usethis::ui_path(pdf_file)}")
csv_file = glue("{dir}/{prefix}_GSVA_{names(gsvares_list)[x]}_matrix.csv")
write.csv(gsvares_list[[x]],file = csv_file)
ui_done("{names(gsvares_list)[x]} GSVA matrix is stored in {usethis::ui_path(csv_file)}")
}))
gsvadiff_list <- msigdbGSVAresult(obj)[["GSVA_diff"]]
invisible(lapply(seq_along(gsvadiff_list), function(x){
csv_file = glue("{dir}/{prefix}_GSVA_{names(gsvadiff_list)[x]}_limmaDEG.csv")
write.csv(gsvadiff_list[[x]],file = csv_file)
ui_done("{names(gsvadiff_list)[x]} GSVA analysis by limma is stored in {usethis::ui_path(csv_file)}")
volcano_file = glue("{dir}/{prefix}_GSVA_{names(gsvadiff_list)[x]}_volcano.pdf")
p <- PointVolcano(object = obj,which = "MSigDB",category = names(gsvadiff_list)[x],gene = 5,expend = c(0.4,0.4))
ggsave(p,filename = volcano_file, width = 1600,height = 1600,units = "px",limitsize = FALSE,device = cairo_pdf)
ui_done("Volcano of {names(gsvadiff_list)[x]} GSVA analysis by limma is plot in {usethis::ui_path(volcano_file)}")
}))
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.