news 2026/4/16 10:44:24

转录组分析实战:GO与KEGG富集分析原理及R语言实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
转录组分析实战:GO与KEGG富集分析原理及R语言实现

. 富集分析基础知识

1.1 什么是富集分析?为什么要做富集分析?

富集分析(Enrichment Analysis)是生物信息学中一种重要的分析方法,主要用于识别在特定生物样本(如基因集、代谢物集或其他分子集合)中是否存在某种功能类别或通路的显著性聚集现象。该方法广泛应用于基因表达分析、蛋白质组学、代谢组学等领域,有助于解析复杂的生物学过程、疾病发生机制以及基因功能注释等问题。

富集分析的核心目的是评估一组预先定义的生物分子(如差异表达基因)是否在某个功能集或通路中显著聚集。例如,在分析某种疾病状态下的转录组数据时,富集分析能够揭示哪些生物学通路或功能模块在差异表达基因中显著富集,从而提示其潜在生物学意义或与疾病相关的调控机制。

1.2 富集分析有几种类型?

目前常用的富集分析方法主要包括以下几种:

(1)GO富集分析

GO(Gene Ontology)富集分析从三个维度系统描述基因的潜在功能,分别为:

分子功能(Molecular Function, MF):描述基因在分子层面的活性,如结合活性或催化作用;

细胞组分(Cellular Component, CC):反映基因产物在细胞中的定位;

生物过程(Biological Process, BP):揭示基因参与的生物学过程或通路。

例如,若差异基因显著富集于GO:0006954(炎症反应,Inflammatory Response),则提示所研究基因可能参与机体免疫与炎症相关的生物学过程。

(2)KEGG富集分析

KEGG(Kyoto Encyclopedia of Genes and Genomes)是一个系统性地整合基因功能及通路信息的数据库。KEGG富集分析基于该数据库,对目标基因集中所涉及的主要代谢通路、信号转导途径等进行注释和统计评估,从而识别出显著影响的生物学通路。

(3)GSEA富集分析

(4)GSVA富集分析

在本节中,我们将重点介绍GO富集分析与KEGG富集分析的基本原理与应用。GSEA和GSVA等方法将在后续分析点中详细展开。

1.3 富集分析结果解读

(1)GO富集分析结果:

图片11

ONTOLOGY:指示该通路所属的GO类别,即生物过程(Biological Process, BP)、分子功能(Molecular Function, MF)还是细胞组分(Cellular Component, CC)。

ID:GO通路的唯一标识符,用于在GO数据库中唯一地标识一个通路,类似于“身份证号码”。

Description:对通路的简单描述,通常通过这一列可以快速了解该通路的主要功能和作用。

GeneRatio:富集到该通路上的基因数量与所有输入到富集分析中的基因数量的比值。它反映了在特定基因集合中,与该通路相关的基因所占的比例。

BgRatio:在整个背景数据集(通常是整个基因组或某个参考数据集)中,与该通路相关的基因数量与背景数据集中所有基因数量的比值。它反映了在整个基因组中,与该通路相关的基因所占的比例。

Pvalue:常规p值,用于衡量富集的显著性。p值越小,富集越显著。通常p值<0.05被认为是显著的。

p.adjust:校正后的p值,通常使用Benjamini-Hochberg方法进行多重比较校正,以控制假阳性率。校正后的p值更严格地衡量富集的显著性。

Qvalue:q值,表示校正后的p值,用于控制假发现率(False Discovery Rate, FDR)。q值越小,富集越显著。

geneID:富集到该通路上的基因ID列表,以斜杠分隔。这些基因ID可以用于进一步的分析和验证。

Count:富集到该通路上的基因数目,表示有多少个基因参与了该通路。(2)KEGG富集分析结果

图片12

Category:通路所属的大类,例如“Human Diseases”(人类疾病)、“Metabolism”(代谢)等,用于对通路进行宏观分类。

Subcategory:通路所属的子类别,进一步细化通路的分类,例如在“Human Diseases”下有“Neurodegenerative disease”(神经退行性疾病)等。

ID:KEGG 通路的唯一标识符,用于在 KEGG 数据库中唯一地标识一个通路,类似于“身份证号码”。

Description:对通路的简单描述,通常通过这一列可以快速了解该通路的主要功能和作用。

GeneRatio:富集到该通路上的基因数量与所有输入到富集分析中的基因数量的比值。它反映了在特定基因集合中,与该通路相关的基因所占的比例。

BgRatio:在整个背景数据集(通常是整个基因组或某个参考数据集)中,与该通路相关的基因数量与背景数据集中所有基因数量的比值。它反映了在整个基因组中,与该通路相关的基因所占的比例。

Pvalue:常规 p 值,用于衡量富集的显著性。p 值越小,富集越显著。通常 p 值 < 0.05 被认为是显著的。

p.adjust:校正后的 p 值,通常使用 Benjamini-Hochberg 方法进行多重比较校正,以控制假阳性率。校正后的 p 值更严格地衡量富集的显著性。

Qvalue:q 值,表示校正后的 p 值,用于控制假发现率(False Discovery Rate, FDR)。q 值越小,富集越显著。

geneID:富集到该通路上的基因 ID 列表,以斜杠分隔。这些基因 ID 可以用于进一步的分析和验证。

Count:富集到该通路上的基因数目,表示有多少个基因参与了该通路。

2. GO+KEGG富集分析

2.1. GO富集分析

我们将使用《转录组基因表达差异分析全流程:以GSE65682为例》一文中得到的差异分析结果进行演示。

复制代码

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做转换的时候,很有可能会出现基因没有对应的ENTREZID编号,这是一个正常现象

图片13

执行GO富集分析

复制代码

# 使用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)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 7:12:51

22、深入了解Samba密码管理与连接状态工具

深入了解Samba密码管理与连接状态工具 1. Samba简介 Samba是一个用于在Linux和Windows系统之间实现文件和打印机共享的开源软件套件。它由Andrew Tridgell创建,现在由Samba团队以类似Linux内核开发的开源方式进行维护和发展。相关的原始手册页由Karl Auer编写,后经Jeremy A…

作者头像 李华
网站建设 2026/4/16 8:41:12

13、UNIX和Linux基础:算术运算、决策与循环

UNIX和Linux基础:算术运算、决策与循环 1. 算术运算基础 在UNIX和Linux系统中,虽然shell本身具备一些基本的算术运算能力,但它并非专门为复杂计算设计,不像大多数高级编程语言。为满足shell编程者进行非简单算术运算的需求,引入了 bc (“基本计算器”)这一实用工具。…

作者头像 李华
网站建设 2026/4/16 8:49:11

22、Awk 实用指南:从基础到高级应用

Awk 实用指南:从基础到高级应用 1. 处理格式异常的文件行 在处理文件时,可能会遇到文件中某些行的字段数量不符合预期的情况。例如,在 vegetables 文件中,如果部分数据录入错误,可能会出现字段数少于或多于三个的行,而之前的 Awk 脚本无法正确处理这些行。 为了解决…

作者头像 李华
网站建设 2026/4/16 8:46:35

同样做黑五,他凭效率赚翻倍?新常态玩法揭秘

一年一度的黑色星期五购物节&#xff0c;意义已经超越单日销量的数字狂欢&#xff0c;2025年的黑五&#xff0c;成为一面映照全球电商格局转型的镜子&#xff0c;它标志着行业从追求短期爆发的“冲动博弈”&#xff0c;全面转向一场考验长期布局、精细运营与多平台协同的“效率…

作者头像 李华
网站建设 2026/4/16 8:45:19

汇编语言全接触-29.Win32调试API二

我们继续Win32调试API的话题。在本章中&#xff0c;我们将要学习如何修改被调试程序。下载 the example 理论:在前面一章中&#xff0c;我们学会了如何装载被调试的进程以及如何处理进程中发生的事件。为了有实际用途&#xff0c;我们的程序应具有修改被调试程序的能力。有好几…

作者头像 李华
网站建设 2026/4/16 8:45:15

大模型进阶之路:RAG与DeepSeek技术融合与最佳实践(建议收藏)

简介 本文分析了RAG与DeepSeek的结合效果&#xff0c;通过法律领域实验发现&#xff1a;DeepSeek在推理生成阶段表现优异&#xff0c;但不适合检索任务&#xff0c;应与专业嵌入模型(如Qwen2)分工协作。这种组合在需要强推理和高可追溯性的场景(如法律咨询)有潜力&#xff0c;关…

作者头像 李华