生物信息分析必备 | GSEA富集分析一文通透

生物信息分析必备 | GSEA富集分析一文通透

1. 富集分析概述

基因富集分析(Gene Enrichment Analysis)是一种常用的生物信息学方法,用于解释在基因组或基因集合中出现的显著富集的功能或特定特征。这种分析用于高通量基因表达数据的解释,比如基因芯片数据RNA测序数据。其通常包含以下四种功能注释分析:

图1 富集分析

2. 富集分析数据库简介

不管想做哪种富集通路分析,均可去在线网站进行操作,下面列出了常用的富集通路数据库,本文主要介绍R代码实现通路富集分析,详细示例见目录章节 “5. 示例操作”

👉 温馨提示:R代码实操示例请直接下滑到文末 “5. 示例操作” 章节查看。

1. KEGG(Kyoto Encyclopedia of Genes and Genomes)

图2 KEGG

  • 简介:是一个包含生物系统功能和信息的数据库资源,提供了关于基因组、化学物质、代谢途径、疾病和药物等方面的信息。KEGG数据库涵盖了多个生物学领域,包括基因组学、代谢组学、药物发现等,为研究人员提供了丰富的生物信息资源,用于理解生物系统的结构、功能和动态变化。
  • 特点
    • 整合基因组、代谢通路、药物和疾病信息
    • 覆盖几乎所有物种
    • 提供详细的通路图
  • 访问地址:https://www.kegg.jp/

2. GO(Gene Ontology)

图3 GO

  • 简介:是一种用于描述基因功能和基因组学数据的标准化语言和分类体系。它是一个用于注释基因和蛋白质的功能、过程和细胞组件的分类系统。GO 分为三个主要的分类:分子功能(Molecular Function)、生物过程(Biological Process)和细胞组件(Cellular Component)。研究人员可以使用GO标准对基因和蛋白质进行分类和注释,从而更好地理解它们在生物学过程中的作用和相互关系。
  • 三大分类
    • 生物学过程(Biological Process, BP)
    • 分子功能(Molecular Function, MF)
    • 细胞组件(Cellular Component, CC)
  • 访问地址:http://geneontology.org/

3. Reactome(Reactome Pathway Database)

图4 Reactome

  • 简介:Reactome 是一个开源、手工注释、经过同行评议的生物通路数据库。它提供了从小分子代谢到转录调控、信号转导和复杂的细胞过程等多个层面的生物学通路信息。
  • 特点
    • 提供直观的通路可视化工具
    • 包含30多个物种信息
    • 定期更新维护
  • 访问地址:https://reactome.org/

4. DO(Disease Ontology)数据库

图5 DO

  • 简介:Disease Ontology 是一个标准化的疾病本体知识库,旨在提供人类疾病的统一命名和分类体系。它将人类疾病与基因组、变异信息、药物反应等多个生物医学领域关联起来。
  • 特点
    • 标准化疾病术语
    • 疾病表型特征描述
    • 相关医学词汇整合
  • 访问地址:http://www.disease-ontology.org/

3. GSEA的原理

GSEA的核心思想是将所有基因按照表达差异的显著性进行排序,然后检测特定基因集在这个排序中的富集程度。主要步骤包括:

  1. 基因排序:根据差异表达分析的统计量(如logFC或p值)对基因进行排序。
  2. 富集评分(Enrichment Score, ES):计算每个基因集在基因排序中的富集分数。
  3. 统计显著性评估:使用置换检验(Permutation Test)来评估富集分数的显著性。
  4. 多重检验校正:对显著性结果进行FDR校正,减少假阳性。

4. GSEA的分析步骤

  1. 数据准备:整理表达矩阵和分组信息。
  2. 基因集选择:选择合适的基因集(如KEGG、GO、Hallmark等)。
  3. 运行GSEA:使用GSEA工具对数据进行富集分析。
  4. 结果可视化:生成富集曲线、热图等图表。
  5. 生物学解释:对显著富集的通路或功能进行解读。

5. 示例操作

# 加载必要的包
library(ReactomePA)
library(tidyverse)
library(data.table)
library(org.Hs.eg.db)    # 人类基因注释数据库
library(clusterProfiler) # GSEA核心包
library(enrichplot)      # 富集分析可视化包
library(dplyr)

# 读取数据
gene_data <- read.csv("APT_vs_AHa.csv", header = TRUE, row.names = 1)
# 注意:输入文件必须包含log2FoldChange列

# 准备基因列表
gene_list <- data.frame(
  Gene = rownames(gene_data),
  Score = gene_data$log2FoldChange  # 重要:这里使用log2FoldChange作为排序依据
) %>%
  filter(is.finite(Score))  # 过滤掉无穷大值

# 转换基因ID
gene_ids <- mapIds(org.Hs.eg.db,
                   keys = gene_list$Gene,
                   column = "ENTREZID",    # 转换为ENTREZID格式
                   keytype = "SYMBOL",     # 输入为基因符号格式
                   multiVals = "first")    # 对于多个匹配只取第一个

# 合并数据并创建排序的基因列表
gene_list$ENTREZID <- gene_ids
final_list <- gene_list %>%
  filter(!is.na(ENTREZID)) %>%
  arrange(desc(Score))

# 创建命名向量
gene_scores <- final_list$Score
names(gene_scores) <- final_list$ENTREZID

# 执行GSEA分析
# GO分析
go_result <- gseGO(gene_scores, 
                   OrgDb = org.Hs.eg.db,
                   ont = "ALL",           # 可选 "BP", "CC", "MF"
                   minGSSize = 10,        # 最小基因集大小
                   maxGSSize = 500,       # 最大基因集大小
                   pvalueCutoff = 0.05)   # p值阈值

# KEGG分析
kegg_result <- gseKEGG(gene_scores,
                       organism = "hsa",   # 人类的organism代码
                       minGSSize = 10,
                       maxGSSize = 500,
                       pvalueCutoff = 0.05)

# Reactome分析
reactome_result <- gsePathway(gene_scores,
                             organism = "human",
                             minGSSize = 10,
                             maxGSSize = 500,
                             pvalueCutoff = 0.05)

# 保存结果
write.csv(as.data.frame(go_result), "test_analysis_GO.csv", row.names = FALSE)
write.csv(as.data.frame(kegg_result), "test_analysis_KEGG.csv", row.names = FALSE)
write.csv(as.data.frame(reactome_result), "test_analysis_Reactome.csv", row.names = FALSE)

# 绘图
pdf("GSEA_plots.pdf", width = 10, height = 8)  # 可根据需要调整图片大小

# GO富集分析图
dotplot(go_result, showCategory = 20) + ggtitle("GO Enrichment Analysis")

# KEGG通路富集分析图
ridgeplot(kegg_result, showCategory = 15) + ggtitle("KEGG Pathway Enrichment")

# Reactome通路富集分析图
dotplot(reactome_result, showCategory = 20) + ggtitle("Reactome Pathway Enrichment")

dev.off()

6. GSEA结果解读

图6 GO富集结果图

在分析GSEA结果时,我们最需要关注的几列是:
p.adjust(校正后的P值)、NES(标准化富集分数)和Description(功能描述)。这三列能直观地告诉我们哪些通路显著富集,以及富集的方向和强度。

完整的结果文件中,每一列的具体含义如下:

  • Description & ID: GO功能描述及其唯一标识号
  • ONTOLOGY: GO的三大类别(BP生物学过程、CC细胞组分、MF分子功能)
  • enrichmentScore: 富集分数
  • NES: 标准化富集分数,正值表示正向富集,负值表示负向富集
  • pvalue: 原始P值
  • p.adjust: 多重检验校正后的P值,通常<0.05认为显著富集
  • qvalue: FDR校正值
  • setSize: 该通路包含的基因数量
  • leading_edge: 前沿分析结果(tags/list/signal的百分比)
  • core_enrichment: 核心富集基因列表

小贴士:解读时建议先看 p.adjustNES ,找出显著富集的通路,再结合Description了解具体的生物学意义哦!😊

图7 经典GSEA富集分析图

富集分数(Enrichment Score):表示基因集富集程度的量化指标。

指标排名得分(Ranking Metric Score):用于基因排序的统计量。

基因表达变化区域:红色区域表示基因表达上调,蓝色区域表示基因表达下调,反映了基因在不同条件下的表达变化趋势。

基因位置标记(Hit):黑色线条展示基因集中每个基因出现在基因排序列表中的位置,每一根线条代表基因集中的一个分子,可以看出哪些基因在富集评分中贡献最大。

富集曲线(Enrichment Plot):绿色曲线表示ES评分的累积过程,其峰值表示基因集的最大富集程度。峰值为正表示富集通路上调,峰值为负表示富集通路下调。

基因排名指标得分:表示基因与表型的相关程度,零交叉点是从正变为负的位置,帮助区分正/负相关的基因。

7. GSEA在生物医学研究中的应用

  • 疾病机制解析:揭示疾病相关的通路和分子机制。
  • 药物作用机制研究:探索药物治疗的潜在通路。
  • 生物标志物发现:识别与特定疾病状态相关的基因集。

8. 总结

GSEA作为一种强大的基因集富集分析工具,在揭示复杂生物学过程和疾病机制中发挥着重要作用。通过合理选择基因集和工具,可以深入理解基因表达数据背后的生物学含义,为科研工作提供有力支持。

9. 联系方式

好啦,今日分享毕!更多科研干货、绘图技能关注 N今天C了么 不迷路!

### 使用 R 语言进行 GSEA 基因集富集分析 #### 安装和加载必要的包 为了在 R 中执行 GSEA 分析,需要安装并加载 `clusterProfiler` 和其他辅助包。这些包提供了丰富的功能来处理生物信息学数据。 ```r if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager::install(c("clusterProfiler", "org.Hs.eg.db", "DOSE")) library(clusterProfiler) library(org.Hs.eg.db) library(DOSE) ``` #### 准备输入数据 通常情况下,GSEA 需要两组样本的数据作为输入:实验条件下的表达矩阵以及相应的基因注释文件。这里假设已经有一个经过预处理的差异表达基因列表 `deg_list`[^1]。 #### 进行 GSEA 分析 下面展示了如何利用 `clusterProfiler` 包来进行标准的 GSEA 流程: ```r # 设置参数 gsea_param <- list( minSize=15, maxSize=500, nPerm=1000, pvalueCutoff=0.05, verbose=FALSE) # 执行 GSEA 分析 gsea_res <- gseGO(geneList = deg_list, ont="BP", OrgDb='org.Hs.eg.db', keyType='SYMBOL', nperm=1000, pAdjustMethod="BH", orderBy="NES", pvalueCutoff=0.05, qvalueCutoff=0.2, verbose=TRUE, ...) print(head(gsea_res)) # 查看部分结果 ``` 这段代码会基于给定的差异表达基因列表计算每条路径的重要性得分 (NES),并通过多次排列测试评估其显著性水平。 #### 可视化结果 最后可以使用内置函数绘制图形表示 GSEA 的主要发现: ```r # 绘制前四个最显著通路的结果图 paths <- head(enrichResult$ID, 4) gseaplot2(gsea_res, pathway.id = paths, pvalue_table = TRUE) ``` 此命令将会生成一系列图表展示选定通路上下调节情况及其统计意义[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值