楼主: 马晓灿
75 0

转录组分析实战:GO与KEGG富集分析原理及R语言实现 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

小学生

14%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
40 点
帖子
3
精华
0
在线时间
0 小时
注册时间
2018-12-15
最后登录
2018-12-15

楼主
马晓灿 发表于 2025-11-26 11:04:32 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

1. 富集分析基础概述

1.1 富集分析的定义与意义

富集分析(Enrichment Analysis)是生物信息学中的核心分析手段之一,主要用于判断在特定分子集合(如差异表达基因、蛋白质或代谢物)中,某些功能类别或生物学通路是否出现显著聚集现象。该方法广泛应用于转录组、蛋白质组及代谢组等高通量数据分析中,有助于揭示潜在的生物学机制、疾病相关通路以及基因功能注释。

其主要目标在于评估一组选定的生物分子(例如实验中筛选出的差异基因)是否在某个已知的功能集合中非随机地集中出现。举例来说,在研究某种癌症的基因表达谱时,若发现大量差异基因集中于某一信号通路,则通过富集分析可识别该通路是否具有统计学上的显著性,从而提示其可能参与疾病的调控过程。

1.2 常见的富集分析类型

目前主流的富集分析方法包括以下几类:

  • GO富集分析:基于Gene Ontology数据库,从三个维度系统描述基因功能:
    • 分子功能(Molecular Function, MF)——指基因产物在分子层面执行的具体活性,如酶催化或结合能力;
    • 细胞组分(Cellular Component, CC)——表示基因产物在细胞内的定位区域,如线粒体、细胞核等;
    • 生物过程(Biological Process, BP)——反映基因所参与的完整生物学活动,如细胞周期、免疫应答等。
    例如,若一组基因显著富集于GO:0006954(炎症反应),则表明这些基因可能在机体的免疫和炎症调节中发挥重要作用。
  • KEGG富集分析:依托京都基因与基因组百科全书(Kyoto Encyclopedia of Genes and Genomes)数据库,对目标基因集进行通路注释和统计检验,识别其显著关联的代谢或信号传导通路,帮助理解基因在系统层面的功能角色。
  • GSEA富集分析
  • GSVA富集分析

本部分内容将重点介绍GO与KEGG两类富集分析的基本原理及其实际应用。GSEA和GSVA等相关方法将在后续章节中进一步展开说明。

1.3 如何解读富集分析结果

(1)GO富集分析结果解析

在GO富集结果表格中,各字段含义如下:

  • ONTOLOGY:标明该条目所属的GO分类,即BP(生物过程)、MF(分子功能)或CC(细胞组分)。
  • ID:GO通路的唯一编号,用于在数据库中精确检索对应条目,类似于“身份证号”。
  • Description:对该GO条目的简要功能描述,便于快速理解其生物学意义。
  • GeneRatio:表示富集到该通路的基因数与输入总基因数的比例,体现该通路在目标基因集中的覆盖程度。
  • BgRatio:背景基因集中与该通路相关的基因占比,用于对比目标集与全基因组之间的分布差异。
  • Pvalue:原始p值,衡量富集显著性的指标,数值越小表示越显著,通常以<0.05为阈值判断显著性。
  • p.adjust:经过多重假设检验校正后的p值(常用Benjamini-Hochberg法),控制假阳性率,提供更严谨的显著性评估。
  • Qvalue:即q值,用于估计假发现率(FDR),值越低说明富集结果越可靠。
  • geneID:列出所有富集至该通路的基因ID,以斜杠分隔,可用于后续验证或网络构建。
  • Count:实际映射到该通路上的基因数量,反映该通路被激活或影响的程度。

(2)KEGG富集分析结果解读

KEGG分析结果通常包含以下列信息:

  • Category:通路所属的大类划分,如“Metabolism”(代谢)、“Genetic Information Processing”(遗传信息处理)或“Human Diseases”(人类疾病),便于宏观把握功能方向。
  • Subcategory:子分类层级,进一步细化通路归属,例如在“Human Diseases”下可细分为“Neurodegenerative disease”(神经退行性疾病)等。
  • ID:KEGG通路的唯一标识符,可在KEGG官网中直接查询详细通路图谱。
  • Description:对通路功能的文字描述,帮助用户快速了解其生物学背景。
  • GeneRatio:目标基因集中富集于该通路的基因比例,体现该通路在研究集合中的相对重要性。
  • BgRatio:在整个参考基因组中,属于该通路的基因所占比例,作为比较基准。

Pvalue:表示常规的 p 值,用于评估基因富集结果的统计显著性。p 值越低,说明该通路或功能类别的富集越显著。一般认为当 p 值小于 0.05 时,富集具有统计学意义。

p.adjust:为经过多重假设检验校正后的 p 值,常采用 Benjamini-Hochberg 方法进行计算,目的是控制整体的假阳性率。相比原始 p 值,校正后的 p 值在判断显著性时更为严格,能更可靠地反映真实富集情况。

Qvalue:即 q 值,是基于假发现率(False Discovery Rate, FDR)校正后的一种显著性指标,本质上也反映了校正后的显著性水平。q 值越小,表明富集结果中出现假阳性的可能性越低,富集越可信。

geneID:列出的是参与该通路或功能类别富集分析的基因标识符(Gene ID),各基因间以斜杠分隔。这些基因可用于后续的功能验证、网络构建或其他生物信息学分析。

Count:指在当前通路中被富集到的基因数量,直观体现有多少差异表达基因参与到该生物学过程或信号通路中。

2. GO 与 KEGG 富集分析

2.1 GO 富集分析

本部分将基于《转录组基因表达差异分析全流程:以GSE65682为例》一文中获得的差异表达基因结果,开展 GO 功能富集分析。

library(clusterProfiler)
library(org.Hs.eg.db)
导入要富集分析的基因
# 读取基因数据文件,文件中包含基因符号(gene symbols)
gene_data <- read.csv("D:\\Users\\Desktop\\转录组\\DEGhc_Sepsis.csv") ?
# 提取基因符号列,并将其转换为字符向量
gene_vector <- as.character(gene_data[[1]]) ?# 将第一列基因符号列转换为字符向量
将基因符号转换为Entrez ID
# 使用bitr函数将基因符号转换为Entrez ID
# fromType = "SYMBOL" 表示输入的基因标识符是基因符号
# toType = "ENTREZID" 表示目标标识符是Entrez ID
# OrgDb = "org.Hs.eg.db" 指定使用人类基因注释数据库
entrez_ids <- bitr(gene_vector, fromType = "SYMBOL", toType = "ENTREZID", OrgDb = "org.Hs.eg.db")

如下图所示为 entrez_ids 的转换结果,其中第一列为基因符号(symbol),第二列为对应的 ENTREZID 编号。

需要注意的是,在使用 bitr 函数进行基因 ID 转换时,部分基因可能无法匹配到相应的 ENTREZID,这种情况属于正常现象,主要由于数据库注释不完整或基因命名差异所致。

# 使用enrichGO函数进行基因本体(GO)富集分析
# gene = entrez_ids$ENTREZID:指定输入的基因列表,这里使用之前转换得到的Entrez ID
# OrgDb = "org.Hs.eg.db":指定使用人类基因注释数据库
# keyType = "ENTREZID":指定输入基因标识符的类型为Entrez ID
# ont = "ALL":指定分析所有三种GO本体(生物过程BP、细胞组分CC、分子功能MF)
# pAdjustMethod = "BH":指定使用Benjamini-Hochberg方法进行多重比较校正
# qvalueCutoff = 0.05:指定校正后的p值(q值)的阈值为0.05,只有q值小于该阈值的GO项才会被保留
# readable = TRUE:将输出结果中的ENTREZID转换为基因符号(SYMBOL)
go_enrichment <- enrichGO(gene = entrez_ids$ENTREZID, 
OrgDb = "org.Hs.eg.db",
                          keyType = "ENTREZID", 
ont = "ALL",
                          pAdjustMethod = "BH", 
qvalueCutoff = 0.05,
                          readable = TRUE)

# 查看富集分析结果
# 使用print函数和summary方法打印GO富集分析的摘要结果
print(summary(go_enrichment))

# 将富集分析结果保存为CSV文件
# 使用write.csv函数将富集分析结果保存到指定路径的CSV文件中
write.csv(go_enrichment, file = "go_enrichment_results.csv", row.names = FALSE)

# 可视化 GO 富集分析结果
# 使用 dotplot 函数生成 GO 富集分析的点图
p <- dotplot(go_enrichment)  # 生成点图对象

# 生成按本体(ONTOLOGY)分类的点图,并使用 facet_grid 分面显示
dotplot(go_enrichment, split = "ONTOLOGY") + facet_grid(ONTOLOGY ~ ., scale = "free")  

# 使用 barplot 函数生成 GO 富集分析的柱状图
barplot(go_enrichment)

KEGG 富集分析

# 使用 enrichKEGG 函数进行 KEGG 通路富集分析
# gene = entrez_ids$ENTREZID:指定输入的基因列表(Entrez ID)
# organism = "hsa":指定分析的生物物种为人类(hsa)
# keyType = "kegg":指定输入基因标识符的类型为 KEGG ID
# pAdjustMethod = "BH":指定使用 Benjamini-Hochberg 方法进行多重比较校正
# qvalueCutoff = 0.05:指定校正后的 p 值(q 值)的阈值为 0.05
kegg_enrichment <- enrichKEGG(gene = entrez_ids$ENTREZID, 
organism = "hsa",
                              keyType = "kegg", 
pAdjustMethod = "BH", 
qvalueCutoff = 0.05)
# 将输出结果中的ENTREZID转换为基因符号(SYMBOL)
kegg_enrichment=DOSE::setReadable(kegg_enrichment, OrgDb='org.Hs.eg.db',keyType='ENTREZID')
# 查看 KEGG 富集分析结果
print(summary(kegg_enrichment))  

# 将 KEGG 富集分析结果保存为 CSV 文件
write.csv(kegg_enrichment, file = "D:\\Users\\Desktop\\call-task_KEGG_enrichment\\kegg_enrichment_results.csv", row.names = FALSE)

# 可视化 KEGG 富集分析结果
p1 <- dotplot(kegg_enrichment)  
# 使用 barplot 函数生成 KEGG 富集分析的柱状图
barplot(kegg_enrichment)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Egg R语言 Encyclopedia ENCYCLOPEDI Description

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-22 00:44