## ----setup, include = FALSE-----------------------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  error = FALSE,
  warning = FALSE,
  eval = TRUE,
  message = FALSE,
  fig.width = 8
)
options(width = 100)

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

## ----loadlib--------------------------------------------------------------------------------------
library("GeDi")

## ----launchapp, eval=FALSE------------------------------------------------------------------------
#  GeDi()

## ----launchappwithData, eval=FALSE----------------------------------------------------------------
#  GeDi(
#    genesets = geneset_df,
#    ppi = ppi_df,
#    distance_scores = distance_scores_df
#  )

## ----examplerun, eval=FALSE-----------------------------------------------------------------------
#  GeDi()

## ----create_dds-----------------------------------------------------------------------------------
# Load required libraries
library("macrophage")
library("DESeq2")

# Load the example dataset "gse" from the "macrophage" package
data("gse", package = "macrophage")

# Create a DESeqDataSet object using the "gse" dataset and define the 
# experimental design.
# We use the condition as part of the experimental design, because we are 
# interested in the differentially expressed genes between treatments. We also 
# add the line to the design to account for the inherent differences between 
# the donors.
dds_macrophage <- DESeqDataSet(gse, design = ~ line + condition)

# Change the row names of the DESeqDataSet object to Ensembl IDs
rownames(dds_macrophage) <- gsub("\\..*", "", rownames(dds_macrophage))

# Have a look at the resulting DESeqDataSet object
dds_macrophage

## ----create_resde1--------------------------------------------------------------------------------
# Filter genes based on read counts
# Calculate the number of genes with at least 10 counts in at least 6 samples
keep <- rowSums(counts(dds_macrophage) >= 10) >= 6

# Subset the DESeqDataSet object to keep only the selected genes
dds_macrophage <- dds_macrophage[keep, ]

# Have a look at the resulting DESeqDataSet object
dds_macrophage

## ----create_resde2--------------------------------------------------------------------------------
# Perform differential expression analysis using DESeq2
dds_macrophage <- DESeq(dds_macrophage)

# Extract differentially expressed genes
# Perform contrast analysis comparing "IFNg" condition to "naive" condition
# Set a log2 fold change threshold of 1 and a significance level (alpha) of 0.05
res_macrophage_IFNg_vs_naive <- results(dds_macrophage,
  contrast = c("condition", "IFNg", "naive"),
  lfcThreshold = 1, alpha = 0.05
)

# Add gene symbols to the results in a column "SYMBOL"
res_macrophage_IFNg_vs_naive$SYMBOL <- rowData(dds_macrophage)$SYMBOL

## ----create_resenrich1, eval=TRUE-----------------------------------------------------------------
# Load required packages for analysis
library("pcaExplorer")
library("GeneTonic")
library("AnnotationDbi")

# Extract gene symbols from the DESeq2 results object where FDR is below 0.05
# The function deseqresult2df is used to convert the DESeq2 results to a 
# dataframe format
# FDR is set to 0.05 to filter significant results
de_symbols_IFNg_vs_naive <- deseqresult2df(res_macrophage_IFNg_vs_naive,
                                           FDR = 0.05)$SYMBOL

# Extract gene symbols for background using the DESeq2 results object
# Filter genes that have nonzero counts
bg_ids <- rowData(dds_macrophage)$SYMBOL[rowSums(counts(dds_macrophage)) > 0]

## ----create_resenrich2, eval=TRUE-----------------------------------------------------------------
# Load required package for analysis
library("topGO")

# Perform Gene Ontology enrichment analysis using the topGOtable function from 
# the "pcaExplorer" package
macrophage_topGO_example <-
  pcaExplorer::topGOtable(de_symbols_IFNg_vs_naive,
    bg_ids,
    ontology = "BP",
    mapping = "org.Hs.eg.db",
    geneID = "symbol",
    topTablerows = 500
  )

## ----renamecolumns, eval=TRUE---------------------------------------------------------------------
# Rename columns in the macrophage_topGO_example dataframe
# Change the column name "GO.ID" to "Genesets"
names(macrophage_topGO_example)[names(macrophage_topGO_example) == "GO.ID"] <- "Genesets"

# Change the column name "genes" to "Genes"
names(macrophage_topGO_example)[names(macrophage_topGO_example) == "genes"] <- "Genes"

## ----dryrun, eval=FALSE---------------------------------------------------------------------------
#  GeDi()
#  
#  GeDi(genesets = macrophage_topGO_example)

## ----welcome-page2, fig.align = "center", fig.cap = "The Welcome panel of GeDi", echo = FALSE-----
knitr::include_graphics("Welcome_page.png")

## ----data-input-step1, fig.align = "center", fig.cap = "The Data input panel - Step 1", echo = FALSE----
knitr::include_graphics("Data_Input_panel_Step1.png")

## ----optional-filtering, fig.align = "center", fig.cap = "Optional Filtering Step", echo = FALSE----
knitr::include_graphics("Optional_Filtering.png")

## ----species-selection, fig.align = "center", fig.cap = "Species Selection", echo = FALSE---------
knitr::include_graphics("Species_Selection.png")

## ----download-ppi, fig.align = "center", fig.cap = "Downloading the PPI", echo = FALSE------------
knitr::include_graphics("Downloading_PPI.png")

## ----distance-score, fig.align = "center", fig.cap = "The Distance Score panel", echo = FALSE-----
knitr::include_graphics("Distance_Score_panel.png")

## ----clustering-graph, fig.align = "center", fig.cap = "The Clustering Graph panel", echo = FALSE----
knitr::include_graphics("Clustering_Graph_Panel.png")

## ----report-panel, fig.align = "center", fig.cap = "The Report panel", echo = FALSE---------------
knitr::include_graphics("Report_panel.png")

## ----withbiomart, eval = FALSE--------------------------------------------------------------------
#  # Load the "biomaRt" package to access the BioMart database
#  library("biomaRt")
#  
#  # Set up a connection to the ENSEMBL BioMart database for human genes
#  mart <-
#    useMart(biomart = "ENSEMBL_MART_ENSEMBL", dataset = "hsapiens_gene_ensembl")
#  
#  # Retrieve gene annotations using the BioMart database
#  anns <- getBM(
#    attributes = c(
#      "ensembl_gene_id",
#      "external_gene_name",
#      "entrezgene_id",
#      "description"
#    ),
#    filters = "ensembl_gene_id",
#    values = rownames(dds_macrophage),
#    mart = mart
#  )
#  
#  # Match the retrieved annotations to the genes in dds_macrophage
#  anns <- anns[match(rownames(dds_macrophage), anns[, 1]), ]

## ----enrichKegg, eval = FALSE---------------------------------------------------------------------
#  # Load the "clusterProfiler" package for functional enrichment analysis
#  library("clusterProfiler")
#  
#  # Retrieve Entrez gene IDs from the annotations data frame based on matching
#  # Ensembl gene IDs from the DE results
#  genes <- anns$entrezgene_id[match(rownames(res_macrophage_IFNg_vs_naive),
#                                    anns$ensembl_gene_id)]
#  
#  # Perform KEGG pathway enrichment analysis using the retrieved gene IDs
#  res_enrich <- enrichKEGG(genes,
#    organism = "hsa",
#    pvalueCutoff = 0.05
#  )

## ----GeDi_Kegg, eval = FALSE----------------------------------------------------------------------
#  # Load the "macrophage_KEGG_example" dataset from the "GeDi" package
#  data("macrophage_KEGG_example", package = "GeDi")
#  
#  # Start the GeDi app with the loaded data
#  # The "genesets" parameter is set to the loaded "macrophage_KEGG_example"
#  # dataset
#  GeDi(genesets = macrophage_KEGG_example)

## ----enrichReactome, eval = FALSE-----------------------------------------------------------------
#  # Load the "ReactomePA" package for pathway enrichment analysis
#  library("ReactomePA")
#  
#  # Perform pathway enrichment analysis using the "enrichPathway" function
#  reactome <- enrichPathway(genes,
#    organism = "human",
#    pvalueCutoff = 0.05,
#    readable = TRUE
#  )

## ----GeDi_Reactome, eval = FALSE------------------------------------------------------------------
#  # Load the "macrophage_Reactome_example" dataset from the "GeDi" package
#  data("macrophage_Reactome_example", package = "GeDi")
#  
#  # Start the GeDi app with the loaded data
#  # The "genesets" parameter is set to the loaded "macrophage_Reactome_example"
#  # dataset
#  GeDi(genesets = macrophage_Reactome_example)

## ----sessioninfo----------------------------------------------------------------------------------
utils::sessionInfo()