## ---- echo = FALSE---------------------------------------------------------
knitr::opts_chunk$set(
  eval=FALSE
)

## --------------------------------------------------------------------------
#  if(!"rWikiPathways" %in% installed.packages()){
#      if (!requireNamespace("BiocManager", quietly = TRUE))
#          install.packages("BiocManager")
#      BiocManager::install("rWikiPathways", update = FALSE)
#  }
#  library(rWikiPathways)

## --------------------------------------------------------------------------
#  load.libs <- c(
#    "DOSE",
#    "GO.db",
#    "GSEABase",
#    "org.Hs.eg.db",
#    "clusterProfiler",
#    "dplyr",
#    "tidyr",
#    "ggplot2",
#    "stringr",
#    "RColorBrewer",
#    "rWikiPathways",
#    "RCy3")
#  options(install.packages.check.source = "no")
#  options(install.packages.compile.from.source = "never")
#  if (!require("pacman")) install.packages("pacman"); library(pacman)
#  p_load(load.libs, update = TRUE, character.only = TRUE)
#  status <- sapply(load.libs,require,character.only = TRUE)
#  if(all(status)){
#      print("SUCCESS: You have successfully installed and loaded all required libraries.")
#  } else{
#      cat("ERROR: One or more libraries failed to install correctly. Check the following list for FALSE cases and try again...\n\n")
#      status
#  }

## --------------------------------------------------------------------------
#  cytoscapePing()  #this will tell you if you're able to successfully connect to Cytoscape or not

## --------------------------------------------------------------------------
#  lung.expr <- read.csv(system.file("extdata","data-lung-cancer.csv", package="rWikiPathways"),stringsAsFactors = F)
#  nrow(lung.expr)
#  head(lung.expr)

## --------------------------------------------------------------------------
#  up.genes <- lung.expr[lung.expr$log2FC > 1 & lung.expr$adj.P.Value < 0.05, 1]
#  dn.genes <- lung.expr[lung.expr$log2FC < -1 & lung.expr$adj.P.Value < 0.05, 1]
#  bkgd.genes <- lung.expr[,1]

## --------------------------------------------------------------------------
#  up.genes.entrez <- clusterProfiler::bitr(up.genes,fromType = "ENSEMBL",toType = "ENTREZID",OrgDb = org.Hs.eg.db)
#  cat("\n\nWhich column contains my new Entrez IDs?\n")
#  head(up.genes.entrez)

## --------------------------------------------------------------------------
#  keytypes(org.Hs.eg.db)

## --------------------------------------------------------------------------
#  dn.genes.entrez <- bitr(dn.genes,fromType = "ENSEMBL",toType = "ENTREZID",OrgDb = org.Hs.eg.db)
#  bkgd.genes.entrez <- bitr(bkgd.genes,fromType = "ENSEMBL",toType = "ENTREZID",OrgDb = org.Hs.eg.db)

## --------------------------------------------------------------------------
#  egobp <- clusterProfiler::enrichGO(
#          gene     = up.genes.entrez[[2]],
#          universe = bkgd.genes.entrez[[2]],
#          OrgDb    = org.Hs.eg.db,
#          ont      = "BP",
#          pAdjustMethod = "fdr",
#          pvalueCutoff = 0.05, #p.adjust cutoff (https://github.com/GuangchuangYu/clusterProfiler/issues/104)
#          readable = TRUE)
#  
#  head(egobp,10)

## --------------------------------------------------------------------------
#  barplot(egobp, showCategory = 20)
#  dotplot(egobp, showCategory = 20)
#  emapplot(egobp, showCategory = 20)
#  goplot(egobp)

## --------------------------------------------------------------------------
#  ggplot(egobp[1:20], aes(x=reorder(Description, -pvalue), y=Count, fill=-p.adjust)) +
#      geom_bar(stat = "identity") +
#      coord_flip() +
#      scale_fill_continuous(low="blue", high="red") +
#      labs(x = "", y = "", fill = "p.adjust") +
#      theme(axis.text=element_text(size=11))

## --------------------------------------------------------------------------
#  wp.hs.gmt <- rWikiPathways::downloadPathwayArchive(organism="Homo sapiens", format = "gmt")
#  
#  # supported organisms (and case-dependent spelling)...
#  listOrganisms()

## --------------------------------------------------------------------------
#  wp2gene <- clusterProfiler::read.gmt(wp.hs.gmt)
#  wp2gene <- wp2gene %>% tidyr::separate(ont, c("name","version","wpid","org"), "%")
#  wpid2gene <- wp2gene %>% dplyr::select(wpid,gene) #TERM2GENE
#  wpid2name <- wp2gene %>% dplyr::select(wpid,name) #TERM2NAME
#  wpid2gene
#  wpid2name

## --------------------------------------------------------------------------
#  ewp.up <- clusterProfiler::enricher(
#          up.genes.entrez[[2]],
#          universe = bkgd.genes.entrez[[2]],
#          pAdjustMethod = "fdr",
#          pvalueCutoff = 0.1, #p.adjust cutoff; relaxed for demo purposes
#          TERM2GENE = wpid2gene,
#          TERM2NAME = wpid2name)
#  
#  head(ewp.up)

## --------------------------------------------------------------------------
#  ewp.up <- DOSE::setReadable(ewp.up, org.Hs.eg.db, keytype = "ENTREZID")
#  head(ewp.up)

## --------------------------------------------------------------------------
#  barplot(ewp.up, showCategory = 20)
#  dotplot(ewp.up, showCategory = 20)
#  emapplot(ewp.up, showCategory = 20)

## --------------------------------------------------------------------------
#  ewp.dn <- enricher(
#    dn.genes.entrez[[2]],
#    #universe = bkgd.genes[[2]],  #hint: comment out to get any results for demo
#    pAdjustMethod = "fdr",
#    pvalueCutoff = 0.1, #p.adjust cutoff; relaxed for demo purposes
#    TERM2GENE = wpid2gene,
#    TERM2NAME = wpid2name)
#  
#   ewp.dn <- setReadable(ewp.dn, org.Hs.eg.db, keytype = "ENTREZID")
#   head(ewp.dn)
#   dotplot(ewp.dn, showCategory = 20)

## --------------------------------------------------------------------------
#  findPathwayNamesByText("lung cancer")

## --------------------------------------------------------------------------
#  lc.pathways <- findPathwaysByText('"lung cancer"')  #quotes inside query to require both terms
#  human.filter <- lapply(lc.pathways, function(x) x$species == "Homo sapiens")
#  human.lc.pathways <- lc.pathways[unlist(human.filter)] # just the human lung cancer pathways
#  sapply(human.lc.pathways, function(x) x$name) # display the pathway titles

## --------------------------------------------------------------------------
#  lc.wpids <- sapply(human.lc.pathways, function(x) x$id)
#  lc.wpids

## --------------------------------------------------------------------------
#  ewp.up.wpids <- ewp.up$ID
#  ewp.up.wpids

## --------------------------------------------------------------------------
#  url <- getPathwayInfo("WP179")[2]
#  browseURL(url)

## --------------------------------------------------------------------------
#  cytoscapePing()

## --------------------------------------------------------------------------
#  RCy3::commandsRun('wikipathways import-as-pathway id=WP179')

## --------------------------------------------------------------------------
#  toggleGraphicsDetails()

## --------------------------------------------------------------------------
#  loadTableData(lung.expr, data.key.column = "GeneID", table.key.column = "Ensembl")

## --------------------------------------------------------------------------
#  min.lung.expr = min(lung.expr["log2FC"],na.rm=TRUE)
#  max.lung.expr = max(lung.expr["log2FC"],na.rm=TRUE)
#  abs.lung.expr = max(abs(min.lung.expr),max.lung.expr)
#  data.values = c(-abs.lung.expr,0,abs.lung.expr)

## --------------------------------------------------------------------------
#  display.brewer.all(length(data.values), colorblindFriendly=TRUE, type="div") # div,qual,seq,all
#  node.colors <- c(rev(brewer.pal(length(data.values), "RdBu")))

## --------------------------------------------------------------------------
#  setNodeColorMapping("log2FC", data.values, node.colors, default.color = "#FFFFFF", style.name = "WikiPathways")

## --------------------------------------------------------------------------
#  data.values<-c(-5,0,5)
#  setNodeColorMapping("log2FC", data.values, node.colors, default.color = "#FFFFFF", style.name = "WikiPathways")

## --------------------------------------------------------------------------
#  lapply(ewp.up.wpids, function (x) {
#      commandsRun(paste0('wikipathways import-as-pathway id=',x))
#      loadTableData(lung.expr, data.key.column = "GeneID", table.key.column = "Ensembl")
#      toggleGraphicsDetails()
#      })

## --------------------------------------------------------------------------
#  commandsRun('wikipathways import-as-network id=WP179')
#  loadTableData(lung.expr, data.key.column = "GeneID", table.key.column = "Ensembl")
#  setNodeColorMapping("log2FC", data.values, node.colors, default.color = "#FFFFFF", style.name = "WikiPathways-As-Network")

## --------------------------------------------------------------------------
#  unzip(system.file("extdata","drugbank-5.1.0.xgmml.zip", package="rWikiPathways"), exdir = getwd())
#  drugbank <- file.path(getwd(), "drugbank-5.1.0.xgmml")

## --------------------------------------------------------------------------
#  commandsRun(paste0('cytargetlinker extend idAttribute="Ensembl" linkSetFiles="', drugbank, '"') )
#  commandsRun('cytargetlinker applyLayout network="current"')

## --------------------------------------------------------------------------
#  my.drugs <- selectNodes("drug", by.col = "CTL.Type", preserve = FALSE)$nodes #easy way to collect node SUIDs by column value
#  clearSelection()
#  setNodeColorBypass(my.drugs, "#DD99FF")
#  setNodeShapeBypass(my.drugs, "hexagon")
#  
#  drug.labels <- getTableColumns(columns=c("SUID","CTL.label"))
#  drug.labels <- na.omit(drug.labels)
#  mapply(function(x,y) setNodeLabelBypass(x,y), drug.labels$SUID, drug.labels$CTL.label)

## --------------------------------------------------------------------------
#  save(ewp.up, file = "lung_cancer_ewp_up.Rdata")
#  save(ewp.dn, file = "lung_cancer_ewp_down.Rdata")

## --------------------------------------------------------------------------
#  full.path=paste(getwd(),'tutorial_session',sep='/')
#  saveSession(filename=full.path) #.cys

## --------------------------------------------------------------------------
#  full.path=paste(getwd(),'tutorial_image2',sep='/')
#  exportImage(filename=full.path, type='PDF') #.pdf
#  exportImage(filename=full.path, type='PNG', zoom=200) #.png; use zoom or width args to increase size/resolution
#  ?exportImage

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