本文聚焦于功能富集分析的相关知识,并使用R语言展示了GO和KEGG分析,希望能对你有所帮助🎉
1. 功能富集分析的基础概念
1.1 什么是功能富集分析?
功能富集分析是分析一组基因或蛋白质(通常是差异表达基因)在某些功能集合中的显著富集程度的过程。
目标:揭示这组基因在生物学功能、通路或结构中的潜在模式。
意义:帮助理解基因的生物学背景,推测可能的机制或功能。
1.2 常见功能集合
-
GO(Gene Ontology):
- 用于描述基因产品的属性,分为三类:
- BP(生物学过程):如细胞分裂、凋亡等。
- MF(分子功能):如酶活性、结合活性等。
- CC(细胞组分):如线粒体、核糖体等。
- 用于描述基因产品的属性,分为三类:
-
KEGG(Kyoto Encyclopedia of Genes and Genomes):
描述代谢和信号通路,如糖酵解、p53 通路等。 -
Reactome:
注重代谢、信号转导、基因调控等通路。 -
MSigDB(Molecular Signatures Database):
包含多种基因集合,如特定疾病基因集、药物反应基因集等。
1.3 关键术语
基因列表:目标基因集合(如实验中发现的差异表达基因)。
背景基因集:分析中用作参照的所有基因(如全基因组或检测到的基因)。
富集:目标基因列表在某功能集合中出现的频率高于随机预期。
2. 功能富集分析的类型
过度富集分析(ORA)
原理:使用统计检验(如超几何分布)检测目标基因列表是否在某功能集合中富集。
输入:目标基因列表。
输出:显著富集的功能集合及其统计显著性。
基因集富集分析(GSEA)
原理:不预定义基因列表,而是基于基因表达水平或差异显著性排序,评估整个基因集合的富集情况。
步骤:
- 对基因按某一特征(如表达量)排序。
- 计算功能集合中的基因在排序中的分布偏差(富集分数)。
- 统计显著性(如置换检验)。
输入:排序的基因集合。
输出:显著富集的功能集合及其富集分数。
功能类别评分法(FCS)
原理:为基因列表中的每个功能集合打分,适用于对多个基因集合的评分和对比。
特点:
- 适合处理复杂的大规模数据。
- 计算速度快,但解释性稍弱。
3. 功能富集分析的基本流程
数据准备
- 目标基因列表:来源于实验结果,如差异表达基因、突变基因。
- 背景基因集:根据实验数据或全基因组选择背景基因集。
- 基因注释:确保基因有对应的功能集合注释(如 GO、KEGG)。
选择功能集合
- GO:适合基因功能注释分析。
- KEGG:适合代谢通路或信号通路分析。
- Reactome:适合代谢和信号通路的深入分析。
- MSigDB:适合特定研究背景的基因集合分析。
3.3 选择分析方法
- ORA:适合明确的目标基因列表。
- GSEA:适合排序的基因集合。
- FCS:适合大规模数据的初步筛选。
3.4 显著性检验
- 常用检验方法:
- 超几何检验:
检测目标基因在某功能集合中的富集情况。
适用于 ORA。 - Kolmogorov-Smirnov 检验:
检测排序基因中功能集合的分布偏差。
适用于 GSEA。 - Fisher 精确检验:小样本富集分析时常用。
多重假设检验校正:使用 Bonferroni 校正或 Benjamini-Hochberg 方法控制假发现率(FDR)。
- 超几何检验:
结果可视化与解释
-
可视化方法:
- 富集条形图:显示显著功能集合及其富集程度。
- 气泡图:同时展示功能集合的显著性和基因数量。
- 网络图:展示功能集合之间的关系。
- 热图:显示基因在不同功能集合中的表达水平。
-
结果解读:
- 优先关注显著性最高的功能集合。
- 将 GO 和 KEGG 的分析结果结合起来,获得更全面的生物学背景。
3.5结果展示(R)
这部分也可见R语言学习笔记
GO 富集分析
使用 clusterProfiler
包进行 GO 富集分析(包括 Biological Process、Molecular Function、Cellular Component)。
# 加载 clusterProfiler
library(clusterProfiler)
# 使用 enrichGO 进行 GO 富集分析
go_enrich <- enrichGO(gene = gene_list,
OrgDb = org.Hs.eg.db, # 使用人类基因注释数据库
keyType = "ENTREZID", # 输入基因 ID 的类型
ont = "BP", # 生物过程 (Biological Process)
pAdjustMethod = "BH", # 调整 p 值的方法
pvalueCutoff = 0.05,
qvalueCutoff = 0.2)
# 查看结果
head(go_enrich)
# 可视化 GO 富集结果
library(enrichplot)
barplot(go_enrich, showCategory = 10) # 柱状图
dotplot(go_enrich) # 点图
结果
KEGG 富集分析
使用 clusterProfiler
进行 KEGG 通路富集分析,hsa
是人类的 KEGG Organism Code。
# 运行 KEGG 富集分析
kegg_enrich <- enrichKEGG(gene = gene_list,
organism = "hsa", # 人类的 KEGG 代码
keyType = "kegg", # 输入基因 ID 类型为 KEGG ID
pAdjustMethod = "BH", # 使用 Benjamini-Hochberg 方法调整 p 值
pvalueCutoff = 0.05,
qvalueCutoff = 0.2)
# 查看 KEGG 富集分析结果
head(kegg_enrich)
# 可视化 KEGG 富集结果
dotplot(kegg_enrich) # 点图
4. 实际应用
基因功能注释
目标:通过分析未知基因的功能集合,预测基因的可能功能。
示例:分析一组差异表达基因,发现它们富集在“细胞凋亡”相关的 GO 术语中,提示这些基因可能参与调控细胞死亡。
疾病机制研究
目标:分析与疾病相关的基因集合,探索可能的病理机制。
示例:通过 KEGG 富集分析,发现差异基因显著富集在“癌症通路”中,提示这些基因可能在肿瘤发生中发挥作用。
药物靶点筛选
目标:通过富集分析确定潜在的药物靶点。
示例:使用 Reactome 分析药物处理后基因集合,发现关键基因富集在“Wnt 信号通路”,提示该通路可能是药物作用的主要靶点。
环境与应激反应分析
目标:研究特定环境条件下的基因表达响应。
示例:在高温应激实验中,通过 GO 分析发现“热休克蛋白结合”显著富集,表明这些基因可能在应激响应中发挥重要作用。
本文参考
《生物信息学》 樊笼江主编