## ----setup, echo=FALSE, messages=FALSE, warnings=FALSE-------------------
suppressPackageStartupMessages({
  library(signatureSearch)
  library(ggplot2)
})

## ----install, eval=FALSE-------------------------------------------------
#  if (!requireNamespace("BiocManager", quietly = TRUE))
#      install.packages("BiocManager")
#  BiocManager::install("signatureSearch")

## ----load, eval=TRUE-----------------------------------------------------
library(signatureSearch)

## ----download_db, eval=FALSE---------------------------------------------
#  library(ExperimentHub); library(rhdf5)
#  eh <- ExperimentHub()
#  cmap <- eh[["EH3223"]]; cmap_expr <- eh[["EH3224"]]
#  lincs <- eh[["EH3226"]]; lincs_expr <- eh[["EH3227"]]
#  h5ls(lincs)

## ----db_sig, eval=TRUE---------------------------------------------------
db_path <- system.file("extdata", "sample_db.h5", package = "signatureSearch")
# Load sample_db as `SummarizedExperiment` object
sample_db <- readHDF5chunk(db_path, colindex=1:100)
# get "vorinostat__SKB__trt_cp" signature drawn from toy database
query_mat <- as.matrix(assay(sample_db[,"vorinostat__SKB__trt_cp"]))
query = as.numeric(query_mat); names(query) = rownames(query_mat)
upset <- head(names(query[order(-query)]), 150)
downset <- tail(names(query[order(-query)]), 150)

## ----gess_cmap, eval=TRUE, warning=FALSE---------------------------------
qsig_cmap <- qSig(query = list(upset=upset, downset=downset), 
                  gess_method="CMAP", refdb=db_path)
cmap <- gess_cmap(qSig=qsig_cmap, chunk_size=5000)
cmap
result(cmap)

## ----gess_lincs, eval=TRUE-----------------------------------------------
qsig_lincs <- qSig(query = list(upset=upset, downset=downset), 
                   gess_method="LINCS", refdb=db_path)
lincs <- gess_lincs(qsig_lincs, sortby="NCS", tau=FALSE)
result(lincs)

## ----gess_gcmap, eval=TRUE-----------------------------------------------
qsig_gcmap <- qSig(query = query_mat, gess_method = "gCMAP", refdb = db_path)
gcmap <- gess_gcmap(qsig_gcmap, higher=1, lower=-1)
result(gcmap)

## ----gess_fisher, eval=TRUE, message=FALSE-------------------------------
qsig_fisher <- qSig(query = query_mat, gess_method = "Fisher", refdb = db_path)
fisher <- gess_fisher(qSig=qsig_fisher, higher=1, lower=-1)
result(fisher)

## ----gess_fisher_set, eval=FALSE, message=FALSE--------------------------
#  qsig_fisher2 <- qSig(query = list(upset=upset, downset=downset),
#                       gess_method = "Fisher", refdb = db_path)
#  fisher2 <- gess_fisher(qSig=qsig_fisher2, higher=1, lower=-1)
#  result(fisher2)

## ----gess_sp, eval=TRUE--------------------------------------------------
qsig_sp <- qSig(query = query_mat, gess_method = "Cor", refdb = db_path)
sp <- gess_cor(qSig=qsig_sp, method="spearman")
result(sp)

## ----gess_spsub, eval=TRUE-----------------------------------------------
# Subset z-scores of 150 up and down gene sets from 
# "vorinostat__SKB__trt_cp" signature.
query_mat_sub <- as.matrix(query_mat[c(upset, downset),])
qsig_spsub <- qSig(query = query_mat_sub, gess_method = "Cor", refdb = db_path)
spsub <- gess_cor(qSig=qsig_spsub, method="spearman")
result(spsub)

## ----gess_vis, eval=FALSE------------------------------------------------
#  vor_qsig_full <- qSig(query = list(upset=upset, downset=downset),
#                     gess_method="LINCS", refdb="lincs")
#  vori_res_full <- gess_lincs(qSig=vor_qsig_full, sortby="NCS", tau=TRUE)
#  vori_tb <- result(vori_res_full)
#  drugs_top10 <- unique(result(lincs)$pert)[1:10]
#  drugs_hdac <- c("panobinostat","mocetinostat","ISOX","scriptaid","entinostat",
#        "belinostat","HDAC3-selective","tubastatin-a","tacedinaline","depudecin")
#  drugs = c(drugs_top10, drugs_hdac)
#  gess_res_vis(vori_tb, drugs = drugs, col = "NCS")

## ----tsea_dup_hyperG_go, eval=TRUE---------------------------------------
drugs <- unique(result(lincs)$pert[1:10])
dup_hyperG_res <- tsea_dup_hyperG(drugs = drugs, universe = "Default", 
                                  type = "GO", ont="MF", pvalueCutoff=0.05, 
                                  pAdjustMethod="BH", qvalueCutoff = 0.1, 
                                  minGSSize = 10, maxGSSize = 500)
dup_hyperG_res

## ----tsea_dup_hyperG_go_result, eval=TRUE--------------------------------
result(dup_hyperG_res)

## ----tsea_dup_hyperG_kegg, eval=TRUE, message=FALSE----------------------
dup_hyperG_k_res <- tsea_dup_hyperG(drugs = drugs, universe = "Default", 
                                    type = "KEGG", pvalueCutoff=0.5, 
                                    pAdjustMethod="BH", qvalueCutoff = 0.5, 
                                    minGSSize = 10, maxGSSize = 500)
result(dup_hyperG_k_res)

## ----tsea_mgsea_go, eval=TRUE, message=FALSE-----------------------------
mgsea_res <- tsea_mGSEA(drugs=drugs, type="GO", ont="MF", exponent=1, 
                        nPerm=1000, pvalueCutoff=1, minGSSize=5)
result(mgsea_res)

## ----tsea_mgsea_kegg, eval=TRUE, message=FALSE---------------------------
mgsea_k_res <- tsea_mGSEA(drugs=drugs, type="KEGG", exponent=1, 
                          nPerm=1000, pvalueCutoff=1, minGSSize=2)
result(mgsea_k_res)

## ----tsea_mabs_go, eval=TRUE, message=FALSE------------------------------
mabs_res <- tsea_mabs(drugs=drugs, type="GO", ont="MF", nPerm=1000, 
                      pvalueCutoff=0.05, minGSSize=5)
result(mabs_res)

## ----tsea_mabs_kegg, eval=TRUE, message=FALSE----------------------------
mabs_k_res <- tsea_mabs(drugs=drugs, type="KEGG", nPerm=1000, 
                        pvalueCutoff=0.2, minGSSize=5)
result(mabs_k_res)

## ----dsea_hyperG_go, eval=TRUE, message=FALSE----------------------------
drugs <- unique(result(lincs)$pert[1:10])
hyperG_res <- dsea_hyperG(drugs=drugs, type="GO", ont="MF")
result(hyperG_res)

## ----dsea_hyperG_kegg, eval=TRUE, message=FALSE--------------------------
hyperG_k_res <- dsea_hyperG(drugs = drugs, type = "KEGG", 
                            pvalueCutoff = 1, qvalueCutoff = 1, 
                            minGSSize = 10, maxGSSize = 2000)
result(hyperG_k_res)

## ----dsea_gsea_go, eval=TRUE---------------------------------------------
dl <- abs(result(lincs)$NCS); names(dl) <- result(lincs)$pert
dl <- dl[dl>0]
dl <- dl[!duplicated(names(dl))]
gsea_res <- dsea_GSEA(drugList=dl, type="GO", ont="MF", exponent=1, nPerm=1000,
                      pvalueCutoff=0.2, minGSSize=5)
result(gsea_res)

## ----dsea_gsea_kegg, eval=TRUE, message=FALSE----------------------------
gsea_k_res <- dsea_GSEA(drugList=dl, type="KEGG", exponent=1, nPerm=1000, 
                        pvalueCutoff=1, minGSSize=5)
result(gsea_k_res)

## ----cmp_enrich, eval=TRUE, fig.width=10.5, fig.height=5.5---------------
table_list = list("dup_hyperG" = result(dup_hyperG_res), 
                  "mGSEA" = result(mgsea_res), 
                  "mabs" = result(mabs_res), 
                  "hyperG" = result(hyperG_res), 
                  "GSEA" = result(gsea_res))
comp_fea_res(table_list, rank_stat="pvalue", Nshow=20)

## ----cmp_enrich_k, eval=TRUE, fig.width=8--------------------------------
table_list = list("dup_hyperG" = result(dup_hyperG_k_res), 
                  "mGSEA" = result(mgsea_k_res), 
                  "mabs" = result(mabs_k_res), 
                  "hyperG" = result(hyperG_k_res), 
                  "GSEA" = result(gsea_k_res))
comp_fea_res(table_list, rank_stat="pvalue", Nshow=20)

## ----dtnet_go_0032041, eval=TRUE-----------------------------------------
dtnetplot(drugs = drugs(dup_hyperG_res), set = "GO:0032041", ont = "MF", 
          desc="NAD-dependent histone deacetylase activity (H3-K14 specific)")

## ----dtnet_go_0051059, eval=TRUE-----------------------------------------
dtnetplot(drugs = drugs(dup_hyperG_res), set = "GO:0051059", ont = "MF", 
          desc="NF-kappaB binding")

## ----dtnet_kegg_05034, eval=TRUE-----------------------------------------
dtnetplot(drugs = drugs(dup_hyperG_k_res), set = "hsa05034", 
          desc="Alcoholism")

## ----dtnet_kegg_04213, eval=TRUE-----------------------------------------
dtnetplot(drugs = drugs, set = "hsa04213", 
          desc="Longevity regulating pathway - multiple species")

## ----gen_toy_db, eval=FALSE----------------------------------------------
#  library(rhdf5)
#  eh <- ExperimentHub::ExperimentHub()
#  lincs <- eh[["EH3226"]]
#  hdacs <- c("vorinostat","trichostatin-a","pyroxamide","HC-toxin","rhamnetin")
#  hdacs_trts <- paste(hdacs, "SKB", "trt_cp", sep="__")
#  all_trts <- drop(h5read(lincs, "colnames"))
#  # Select treatments in SKB cell and not BRD compounds
#  all_trts2 <- all_trts[!grepl("BRD-", all_trts) & grepl("__SKB__", all_trts)]
#  set.seed(11)
#  rand_trts <- sample(setdiff(all_trts2, hdacs_trts), 95)
#  toy_trts <- c(hdacs_trts, rand_trts)
#  toy_db <- round(assay(readHDF5chunk(lincs, colnames=toy_trts)),2)
#  set.seed(11)
#  gene_idx <- sample.int(nrow(toy_db),5000)
#  toy_db2 <- toy_db[gene_idx,]
#  # The sample_db is stored in the current directory of user's R session
#  getwd()
#  createEmptyH5("sample_db.h5", level=9, delete_existing=TRUE)
#  append2H5(toy_db2, "sample_db.h5")
#  h5ls("sample_db.h5")

## ----sessionInfo---------------------------------------------------------
sessionInfo()

