python实现富集分析(Enrichment Analysis)

目录

一、引言

二、富集分析

2.1 富集分析的概念

2.2 富集分析的原理

2.3 富集分析的作用

2.4 富集分析的步骤

2.5 富集分析的类型

2.5.1 GO term功能富集

2.5.2 KEGG pathway通路富集

2.5.3 MSigDB基因集富集

2.5.4 单基因富集

三、富集分析中涉及的基本概念

3.1 细胞组分

3.2 分子功能

3.3 生物过程

3.4 功能节点

3.5 背景基因

四、python代码

五、总结

5.1 富集

5.2 KEGG数据库


一、引言

        基因组可以算突变率、转录组可以算基因表达水平、表观组可以观察甲基化水平、蛋白质组/代谢组可以看蛋白/代谢物丰度,甚至是宏基因组也可以比较菌群的丰度。最终,在分子水平的出口都是在生物学中心法则的核酸水平,确切的说是在基因水平,但是基因的种类有很多,包括蛋白编码基因(mRNA)、非编码基因(miRNA、lncRNA、snRNA等),理解这些基因所代表的生物学意义的最佳途径就是基因富集分析。

参考网站:一文读懂基因富集分析:从小白到SCI - 知乎 (zhihu.com)

二、富集分析

2.1 富集分析的概念

        一个生物过程(生物学过程)通常是由一组基因共同参与,而不是由单个基因独自完成。如果一个生物学过程在已知的研究中发生异常,则共同发挥功能的基因极可能被选择出来作为一个与这一过程相关的基因集合。

        富集分析(Gene Set Enrichment Analysis, GSEA)通常是分析一组基因在某个功能节点上是否相比于随机水平过于出现(over-presentation)。

        富集分析原理可以由单个基因的简单注释扩展到多个基因集合的成组分析。

2.2 富集分析的原理

        超几何分布时一种离散型概率分布,也许中学就学过最经典的例子:假设一个袋子有10个球,其中红色球6个,白色球4个,那么我一次从袋子中抓取4个,请问这4个球中至少3个是红球的概率是多少?

        富集分析原理就是超几何分布的使用。假设人类背景基因3W个,已知共500个基因参与某一通路,由已知我们有一个自己的含有200个基因的基因群,且这200个基因都来自背景基因,恰巧这200个基因里面有6个参与此通路,那么这6个基因是偶然还是显著富集在此通路上,就需要进一步做相应的显著性检验。

参考网址:python富集分析 - CSDN

        富集分析,本质上是对数据的分布检验,如果分布集中在某个区域,则认为富集。

此外,个人认为富集分析:(一)概述_生信技工的博客-CSDN博客_富集分析对富集分析描述的也十分清晰。

2.3 富集分析的作用

        一组基因直接注释的结果是得到大量的功能节点,这些功能具有概念上的交叠现象,导致分析结果冗余,不利于进一步的精细分析,所以研究人员希望对得到的功能节点加以过滤和筛选,以便获得更有意义的功能信息。目前最常用的方法是基于GO和KEGG的富集分析

        也就是说,富集分析是用来解读一组基因背后所代表的生物学知识,揭示其在细胞内或细胞外扮演了什么样的角色。

2.4 富集分析的步骤

        首先通过多种方法找到大量的感兴趣的基因,例如差异表达基因集、共表达基因模块、蛋白质复合物基因簇等,然后寻找这些感兴趣基因集显著富集的GO节点或者KEGG通路,这有助于进一步深入细致的实验研究。

2.5 富集分析的类型

        依据富集分析过程中基因选择、注释数据库的不同,常用的富集分析可以分为以下四种类型:GO term功能富集、KEGG pathway通路富集、MSigDB基因集富集和单基因富集等等。

2.5.1 GO term功能富集

        基因本体(gene ontology, GO)数据库是GO组织在2000年构建的一个结构化的标准生物学模型,涵盖了细胞组分、分子功能、生物学过程三个方面,是目前应用最广泛的基因注释体系之一。GO的注释体系是一个有向无环图,包含三个分支,注释系统中每一个节点都是基因或蛋白质的一种描述,节点之间保持严格的“父子”关系。因此,一个基因或蛋白质可以从三个层面得到注释。

        本体论通常处理的问题:存在哪些本质,如何将这些本质分组,在层次结构内关联以及如何根据相似性和差异进行细分 。

参考网址:一文极速读懂 Gene Ontology (GO)数据库 - 腾讯云开发者社区-腾讯云 (tencent.com)

2.5.2 KEGG pathway通路富集

        京都基因与基因组百科全书(Kyoto encyclopedia of genes and genomes, KEGG)是系统分析基因功能、基因组信息的数据库,整合了基因组学、生物化学及系统功能组学的信息,有助于研究者把基因及表达信息作为一个整体进行研究。目前KEGG共包含了19个子数据库,富集分析常用在KEGG Pathway通路中。

2.5.3 MSigDB基因集富集

        MSigDB数据库定义了已知的基因集合,包括H和C1-C7八个系列(Collection)。H: hallmark gene sets (效应)特征基因集合,共50组;C1: positional gene sets 位置基因集合,根据染色体位置,共326个;C2: curated gene sets:(专家)共识基因集合,基于通路、文献等,包括KEGG;C3: motif gene sets:模式基因集合,主要包括microRNA和转录因子靶基因两部分;C4: computational gene sets:计算基因集合,通过挖掘癌症相关芯片数据定义的基因集合;C5: GO gene sets:Gene Ontology 基因本体论;C6: oncogenic signatures:癌症特征基因集合,大部分来源于NCBI GEO 未发表芯片数据;C7: immunologic signatures: 免疫相关基因集合。可以从中获取大量的已知基因集合从而进行富集分析。

2.5.4 单基因富集

        单基因富集分析并不是说拿单个基因来进行富集分析,一个基因根本没法进行统计检验。而是基于单个基因来抓取与其相关的基因,然后用这些相关的基因来进行功能富集,有两种方法:差异法和相关法。

(1)差异法:根据给定的一个基因的表达值对样本进行分组,然后计算组间的差异表达基因,进而利用差异基因进行富集分析。

(2)相关法:计算给定的一个基因的表达值与其他基因之间的相关性,将具有显著相关的基因作为一个集合进行富集分析。

参考网站:一文读懂基因富集分析:从小白到SCI - 知乎 (zhihu.com)

三、富集分析中涉及的基本概念

3.1 细胞组分

细胞组分(cellular component):细胞的每个部分和细胞外环境。

3.2 分子功能

分子功能(molecular function):可以描述为分子水平的活性(activity),如催化(catalytic)或结合(binding)活性。

3.3 生物过程

        生物过程(biological process):生物学过程指由一个或多个分子功能有序组合而产生的系列事件。较大的过程或通过多种分子活动完成的“生物程序”。 更加广泛的生物学过程术语的例子是DNA修复或信号转导。 更具体的术语的例子是葡萄糖跨膜转运的嘧啶核苷生物合成过程。

3.4 功能节点

参考网址:Biological Pathways 生物途径(通路)_ysugarr的博客-CSDN博客_生物通路

3.5 背景基因

背景基因集 常常是一个物种的基因组注释基因总和。

一组特定基因集 常常是差异表达基因集(differentially expressed genes, DEGs)。

预先构建好基因注释数据库常用GO或KEGG数据库。

常见的统计学算法包括ORA,FCS,PT,NT四种。

四、python代码

import gseapy as gp
from gseapy.plot import barplot, dotplot
gene_sets = 'KEGG_2016'
gene_list = ['DAB2IP', 'AKT1', 'ARNT', 'FLCN', 'XRCC6', 'BTG1', 'STAT1', 'STAT1']
# 富集
enr = gp.enrichr(gene_list=gene_list,#所需查询gene_list,可以是一个列表,也可为文件(一列,每行一个基因)
                 gene_sets=gene_sets,#gene set library,多个相关的gene set 。如所有GO term组成一个gene set library.
                 organism='Human',#持(human, mouse, yeast, fly, fish, worm), 自定义gene_set 则无影响。
                 description='kegg',#工作运行描述
                 outdir='./data/enrichr',#输出目录
                 top_term=20,
                 cutoff=0.5#pvalue阈值
                 )
dot_png = "KEGG_2016" + "_" + "dot" + ".png"
bar_png = "KEGG_2016" + "_" + "bar" + ".png"
base_path = "./static/images/"
if os.path.exists(base_path+dot_png):
    os.remove(base_path+dot_png)
#dot
# to save your figure, make sure that ``ofname`` is not None
dotplot(enr.results.loc[enr.results["Gene_set"] == "KEGG_2016",], title='KEGG Top20 Pathway', cmap='viridis_r',
        top_term=20, legend="r",
        ofname=base_path+dot_png,
        )
#bar
if os.path.exists(base_path+bar_png):
    os.remove(base_path+bar_png)
barplot(enr.res2d, title='KEGG_2013',top_term=20,ofname=base_path+bar_png,)

气泡图展示如下:

柱状图展示如下:

        气泡图和柱状图的纵坐标代表的是pathway,横坐标代表的是经过矫正之后的p-value值。p-value值表示的是显著性大小。 

(1)gene set, 指一组具有相同特征的基因。如一个GO term 对应的多个基因,一个kegg pathway对应的多个基因。

(2)gene set library,多个相关的gene set 。如所有GO term组成一个gene set library。

(3)enrichment analysis, gene set library 作为注释基因集合,已知的先验知识。对于一个输入基因集合,富集分析通过计算分析哪些注释gene set 显著存在于输入基因集合中。例如:GO 富集分析中,查看哪些GO terms 显著存在于输入基因列表中。

参考网址:[GSEAPY] 在Python里进行基因集富集分析 - 何物昂 - 博客园 (cnblogs.com)

gseapy官方网址:Welcome to GSEAPY’s documentation! — GSEApy 1.0.0 documentation

五、总结

5.1 富集

富集也就是对基因功能进行分类,可以理解为把功能相同或者相近的基因聚集到一条通路上。

5.2 KEGG数据库

        KEGG数据库的特点是,将基因和代谢物(化学信息) 以网络图的形式详细呈现出来,便于读者了解在机体内基因与代谢物的信号传递过程。

参考网址:如何看懂KEGG通路图?_kegg

  • 4
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
你可以使用R语言中的GOplot包来进行富集分析气泡图的绘制。GOplot是一个用于绘制基因本体富集分析结果的R包,可以根据富集分析的结果生成气泡图。 下面是一个使用GOplot包绘制富集分析气泡图的示例代码: 首先,确保已经安装了GOplot包和其他所需的依赖包: ```R install.packages("GOplot") install.packages("ggplot2") install.packages("dplyr") ``` 接下来,加载所需的包: ```R library(GOplot) library(ggplot2) library(dplyr) ``` 然后,准备富集分析结果数据。假设你已经进行了基因本体富集分析,并获得了如下的结果数据: ```R # 示例富集分析结果数据 enrichment_results <- data.frame( GO_term = c("GO:0006954", "GO:0008150", "GO:0003674"), Description = c("Inflammatory response", "Biological process", "Molecular function"), p_value = c(0.001, 0.005, 0.01), gene_count = c(100, 200, 150), query_count = c(500, 500, 500) ) ``` 接下来,使用GOplot包中的`plotGOBubble`函数绘制气泡图: ```R # 绘制气泡图 plotGOBubble( enrichment_results, col = "p_value", size = "gene_count", title = "GO Enrichment Analysis Bubble Plot", x = "Description", y = "GO_term", shading = "p_value", x_text_size = 4, y_text_size = 4, text_color = "black", text_col = "black" ) ``` 这段代码将根据富集分析结果数据绘制出气泡图,气泡的大小表示基因数量,颜色表示显著性水平。 请注意,这只是一个示例代码,你需要根据你自己的富集分析结果数据进行相应的调整。另外,你可能还需要调整气泡图的样式和其他参数,以满足你的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值