EnrichR

# A wrapper function to perform all functional enrichment analyses.
# Helper function to save non-empty results
save_res <- function(res, fileName = fileName, wb = wb, sheetName = "KEGG") {
  if (nrow(res) > 0) {
    openxlsx::addWorksheet(wb = wb, sheetName = sheetName)
    openxlsx::writeData(wb, res, sheet = sheetName)
    openxlsx::saveWorkbook(wb, fileName, overwrite = TRUE)
  }
}

# A wrapper to save the results
save_enrichr <- function(up.genes = up.genes, dn.genes = NULL, databases = "KEGG_2016", fdr.cutoff = 1, fileNameOut = NULL, wb = NULL) {
  print(paste("Running", databases, "analysis", sep = " "))
  if (is.null(dn.genes)) {
    res.kegg <- enrichGeneList(up.genes, databases = databases, fdr.cutoff = fdr.cutoff)
  } else {
    res.kegg <- enrichFullGeneList(up.genes, dn.genes, databases = databases, fdr.cutoff = fdr.cutoff)
  }

  res.kegg$pval <- formatC(res.kegg$pval, digits = 3, format = "e")
  res.kegg$qval <- formatC(res.kegg$qval, digits = 3, format = "e")
  if (!is.null(fileNameOut)) {
    if (nchar(databases) > 30) databases <- paste0(substr(databases, 1, 20), "_", substr(databases, nchar(databases) - 8, nchar(databases))) # If a database is longer that 30 characters, keep first 20 and last 10 characters
    save_res(res.kegg, fileNameOut, wb = wb, sheetName = databases)
  }
  # Pause for a few seconds
  pause_sec <- round(runif(1, min = 1, max = 10))
  Sys.sleep(pause_sec)
  return(res.kegg)
}

GO_Biological_Process_2015

res.kegg <- save_enrichr(up.genes = up.genes, dn.genes = dn.genes, databases = "GO_Biological_Process_2015", fdr.cutoff = fdr.cutoff, fileNameOut = fileNameOut, wb = wb)
DT::datatable(res.kegg)

GO_Molecular_Function_2015

res.kegg <- save_enrichr(up.genes = up.genes, dn.genes = dn.genes, databases = "GO_Molecular_Function_2015", fdr.cutoff = fdr.cutoff, fileNameOut = fileNameOut, wb = wb)
DT::datatable(res.kegg)

GO_Cellular_Component_2015

res.kegg <- save_enrichr(up.genes = up.genes, dn.genes = dn.genes, databases = "GO_Cellular_Component_2015", fdr.cutoff = fdr.cutoff, fileNameOut = fileNameOut, wb = wb)
DT::datatable(res.kegg)

WikiPathways_2016

res.kegg <- save_enrichr(up.genes = up.genes, dn.genes = dn.genes, databases = "WikiPathways_2016", fdr.cutoff = fdr.cutoff, fileNameOut = fileNameOut, wb = wb)
DT::datatable(res.kegg)

BioCarta_2016

res.kegg <- save_enrichr(up.genes = up.genes, dn.genes = dn.genes, databases = "BioCarta_2016", fdr.cutoff = fdr.cutoff, fileNameOut = fileNameOut, wb = wb)
DT::datatable(res.kegg)

Reactome_2016

res.kegg <- save_enrichr(up.genes = up.genes, dn.genes = dn.genes, databases = "Reactome_2016", fdr.cutoff = fdr.cutoff, fileNameOut = fileNameOut, wb = wb)
DT::datatable(res.kegg)

Panther_2016

res.kegg <- save_enrichr(up.genes = up.genes, dn.genes = dn.genes, databases = "Panther_2016", fdr.cutoff = fdr.cutoff, fileNameOut = fileNameOut, wb = wb)
DT::datatable(res.kegg)

TRANSFAC_and_JASPAR_PWMs

res.kegg <- save_enrichr(up.genes = up.genes, dn.genes = dn.genes, databases = "TRANSFAC_and_JASPAR_PWMs", fdr.cutoff = fdr.cutoff, fileNameOut = fileNameOut, wb = wb)
DT::datatable(res.kegg)

Genome_Browser_PWMs

res.kegg <- save_enrichr(up.genes = up.genes, dn.genes = dn.genes, databases = "Genome_Browser_PWMs", fdr.cutoff = fdr.cutoff, fileNameOut = fileNameOut, wb = wb)
DT::datatable(res.kegg)

ChEA_2016

res.kegg <- save_enrichr(up.genes = up.genes, dn.genes = dn.genes, databases = "ChEA_2016", fdr.cutoff = fdr.cutoff, fileNameOut = fileNameOut, wb = wb)
DT::datatable(res.kegg)

ENCODE_TF_ChIP-seq_2015

res.kegg <- save_enrichr(up.genes = up.genes, dn.genes = dn.genes, databases = "ENCODE_TF_ChIP-seq_2015", fdr.cutoff = fdr.cutoff, fileNameOut = fileNameOut, wb = wb)
DT::datatable(res.kegg)

ENCODE_Histone_Modifications_2015

res.kegg <- save_enrichr(up.genes = up.genes, dn.genes = dn.genes, databases = "ENCODE_Histone_Modifications_2015", fdr.cutoff = fdr.cutoff, fileNameOut = fileNameOut, wb = wb)
DT::datatable(res.kegg)

Epigenomics_Roadmap_HM_ChIP-seq

res.kegg <- save_enrichr(up.genes = up.genes, dn.genes = dn.genes, databases = "Epigenomics_Roadmap_HM_ChIP-seq", fdr.cutoff = fdr.cutoff, fileNameOut = fileNameOut, wb = wb)
DT::datatable(res.kegg)


compbiomed/enrichR documentation built on May 13, 2019, 9:55 p.m.