omics.co.in logo omics.co.in

Functional Genomics

Synthesis Track • Chapter 9 Estimated Study Time: 18 minutes

Learning Objectives

  • Understand Over-Representation Analysis (ORA) based on the hypergeometric distribution and Fisher's exact test.
  • Execute Gene Set Enrichment Analysis (GSEA) on pre-ranked fold-change lists without arbitrary cutoffs.
  • Navigate Gene Ontology (GO) acyclic graphs: Biological Process, Molecular Function, and Cellular Component.
  • Construct and cluster protein-protein interaction networks using STRING and Cytoscape.

1. Translating Gene Lists into Biological Mechanistic Insight

A high-throughput experiment (such as an RNA-seq or GWAS screen) typically outputs a list of hundreds or thousands of statistically significant genes or variants. Interpreting these raw identifiers requires pathway enrichment mining to determine whether specific biological functions or metabolic cascades are coordinated:

  • Over-Representation Analysis (ORA): Uses Fisher's exact test or the hypergeometric test to determine if the overlap between a user's list of significant genes and a predefined pathway is greater than expected by chance. Limitation: Requires an arbitrary p-value/fold-change threshold and treats all significant genes equally.
  • Gene Set Enrichment Analysis (GSEA): Bypasses arbitrary significance cutoffs. All detected genes are ranked from most upregulated to most downregulated. GSEA steps through the ranked list, calculating a Running Enrichment Score (ES) via a weighted Kolmogorov-Smirnov statistic whenever a pathway gene is encountered.

2. clusterProfiler ORA & GSEA Implementation in R

# Functional enrichment workflow in R
library(clusterProfiler)
library(org.Hs.eg.db)
library(enrichplot)

# 1. Over-Representation Analysis (ORA) on significant genes
ego <- enrichGO(gene          = sig_entrez_ids,
                OrgDb         = org.Hs.eg.db,
                ont           = "BP", # Biological Process
                pAdjustMethod = "BH",
                pvalueCutoff  = 0.01,
                qvalueCutoff  = 0.05,
                readable      = TRUE)

dotplot(ego, showCategory = 15, title = "Top Enriched GO Biological Processes")

# 2. Gene Set Enrichment Analysis (GSEA) on ranked fold changes
# ranked_genes: vector of log2FC named with Entrez IDs, sorted decreasing
gse_kegg <- gseKEGG(geneList     = ranked_genes,
                    organism     = 'hsa',
                    pvalueCutoff = 0.05,
                    verbose      = FALSE)

gseaplot2(gse_kegg, geneSetID = 1, title = gse_kegg$Description[1])
← Return to Home Hub Scroll to Top ↑