Bingo(Cytoscape插件)GO功能富集分析

简介: 转录组分析中基因的GO富集分析这步有很多软件可以选择,这次我们来介绍下如何利用Cytoscape软件中的一个简单又好用的Bingo小插件完成富集的工作,Cytoscape其实是一个做网络图的软件,所以使用Bingo的这种方法特别之处就在于富集的结果是可以直接以网络图的形式呈现,类似于下图这种效果,区别于其他的软件大多只生成表的形式。

转录组分析中基因的GO富集分析这步有很多软件可以选择,这次我们来介绍下如何利用Cytoscape软件中的一个简单又好用的Bingo小插件完成富集的工作,Cytoscape其实是一个做网络图的软件,所以使用Bingo的这种方法特别之处就在于富集的结果是可以直接以网络图的形式呈现,类似于下图这种效果,区别于其他的软件大多只生成表的形式。

bb413754672f3278c2eb0e3256cf769.png

操作步骤简单分为以下几步:

  1. Cytoscape下载及Bingo插件的安装
  2. Bingo内参数的设置
  3. 基因ID与GO注释的对应文件的准备
  4. 粘贴你的待富集的基因,Bingo~~~ 完事!

1. Cytoscape下载及安装Bingo

官网:https://cytoscape.org/,现在已经更新到3.8版本了,直接点击Download下载安装即可,过程就不再多介绍,没太大难度。

4da98e46d3e2a707f0553a5ab981963.png

打开Cytoscape软件,点击选项栏“Apps”-“AppManager”,搜索“BinGO”,点击“Install”,就可以下载了。安装的过程可能会稍微有一点慢,请耐心等待一下。

0eb87930b233a26d049f944f70a6473.png

2.参数设置

OK,安装成功后你再点击Apps下拉框里会看到这个插件吗,我们打开它看下都有哪些参数吧,其实大部分的参数都默认即可,比如significance level 默认0.05,multiple testing correction也默认BH方法,Select ontology file选择你想注释GO数据库的哪个部分,(BP生物进程,MF分子功能,CC细胞成分,或者是All三者一起)。

6ec76a5ec5211b01b21106fe44d9895.png

70255fad389ab8f49ff24f2e569911b.png

3. 基因ID与GO注释对应文件的准备

模式物种

在Bingo参数页面中有个最核心的一个参数是Select organism annotation,我们看一下里面内置了有几十种的模式物种,比如拟南芥,牛等等。

e771d91ba78078201d577a844ea8e81.png

对于这种模式物种的操作就十分方便了,不需要准备文件,直接拿你待富集的基因ID粘贴进去即可。这里我用牛的10个基因举例。Bt.12550,Bt.56181

,Bt.2091,Bt.53864,Bt.9027,Bt.12177,Bt.23666,Bt.12327,Bt.49329,Bt.49986,我们粘贴进去,物种选择牛的拉丁文Bos taurus。

注意:这里的基因ID类型是UNIGENE ID,如果你是其它的ID类型(常见的一般是ENSEMBL ID类型),请提前转换,转换方式推荐Y叔的Clusterprofiler包中bitr函数轻松搞定。代码如下:


gene_id <- bitr(diff_gene$GeneID, fromType = "ENSEMBL", toType = c("ENTREZID", "SYMBOL",'GENENAME','UNIPROT','UNIGENE'), OrgDb = org.Bt.eg.db)

2dbc3077b613a2e90d5de90fc5ae94e.png

界面


点击Start BinGO,会生成网络图及GO富集分析表俩个结果,同时在你刚设定的位置也会保存相同的表格文件,我们来看下这俩个结果。

GO富集分析文件

我们打开表格主要是这7列的内容,解释下这几列:

GO ID :富集到的GO term

P value/corr p-value 一般参考 corr p-value

x:目标基因中此类基因的个数;

X:目标基因的总个数;

n:基因组中此类基因的个数;

N:基因组基因的总个数

Description: 该GO term的功能描述

7f47000129659ead22daf9151730f45.png

富集层级网络图

富集到的GO term按照层级关系列出网络,并按照富集程度(根据p值的大小)上色。

aaf948e6e12f2cb5e01654a899c77dd.png

非模式物种

如果想要用BinGO来分析一些非模式物种,需要手工(编程)生成注释文件,文件的输入形式要如下图这样,左边为基因ID,右边为对应的GO ID,中间为“空格+等号+空格”进行分隔,另外GO ID只列出对应的7位数字

5f1b61c42b52ed665e262f450e52851.png

另外注意我们一般的注释文件往往是下图这样的,所以我们需要通过一些方式将数据转换,这里提供俩种方法以供参考:

c2507afedaf66ddfcdba20fb589d8b6.png

perl语言


cat gene.txt|grep GO|perl -ne 'chomp;@ar=split(/\t/,$_);@ele=split(/\|/,$ar[1]);for($i=0;$i<=$#ele;$i++){print "$ar[0] = $ele[$i]\n"}'

python语言


import re
import sys
final = open(sys.argv[2],'w')
dict = {}
with open(sys.argv[1]) as p: 
    for line in p:
        line = line.strip().split('\t')
        gene = line[0]
        dict[gene] = line[1]
    for key,value in dict.items():  
        pattern = re.compile(r'GO:\d{7}')          
        result = pattern.findall(value)
        for i in result:
           print(f'{key} = {i[3:]}',file= final)
final.close()

最后

得到这个文件之后,步骤就和上述的模式生物的操作一样了,注意参数中的Select organism/annotation 要选择最下面的custom自定义文件,把这个文件选上,然后粘贴你的基因ID就可以富集了!另外点击Layout 可以选择多种网络图的排版方式 ,也可直接拖动这些气泡进行移动, 让你的图表达的内容更加直观明了。有时候Bingo富集时候会遇到没有反应得到一个空文件,可以重启下软件再试一次。

b8293a538bd364d47ff328eed44514e.png

以上便是利用Cytoscape的BINGO插件进行GO分析的全部流程,大家可以按照上面的步骤实操一下,使用中有问题可以回复我。另外欢迎大家搜索关注BioparaMeta公众号一起交流 学习~~

相关文章
|
18天前
|
开发框架 Go 计算机视觉
纯Go语言开发人脸检测、瞳孔/眼睛定位与面部特征检测插件-助力GoFly快速开发框架
开发纯go插件的原因是因为目前 Go 生态系统中几乎所有现有的人脸检测解决方案都是纯粹绑定到一些 C/C++ 库,如 OpenCV 或 dlib,但通过 cgo 调用 C 程序会引入巨大的延迟,并在性能方面产生显著的权衡。此外,在许多情况下,在各种平台上安装 OpenCV 是很麻烦的。使用纯Go开发的插件不仅在开发时方便,在项目部署和项目维护也能省很多时间精力。
|
27天前
|
Go API 数据库
Go 语言中常用的 ORM 框架,如 GORM、XORM 和 BeeORM,分析了它们的特点、优势及不足,并从功能特性、性能表现、易用性和社区活跃度等方面进行了比较,旨在帮助开发者根据项目需求选择合适的 ORM 框架。
本文介绍了 Go 语言中常用的 ORM 框架,如 GORM、XORM 和 BeeORM,分析了它们的特点、优势及不足,并从功能特性、性能表现、易用性和社区活跃度等方面进行了比较,旨在帮助开发者根据项目需求选择合适的 ORM 框架。
74 4
|
27天前
|
中间件 Go API
Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架
本文概述了Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架。
70 1
|
1月前
|
安全 Go 开发者
代码之美:Go语言并发编程的优雅实现与案例分析
【10月更文挑战第28天】Go语言自2009年发布以来,凭借简洁的语法、高效的性能和原生的并发支持,赢得了众多开发者的青睐。本文通过两个案例,分别展示了如何使用goroutine和channel实现并发下载网页和构建并发Web服务器,深入探讨了Go语言并发编程的优雅实现。
37 2
|
2月前
|
算法 Java 编译器
你为什么不应该过度关注go语言的逃逸分析
【10月更文挑战第21天】逃逸分析是 Go 语言编译器的一项功能,用于确定变量的内存分配位置。变量在栈上分配时,函数返回后内存自动回收;在堆上分配时,则需垃圾回收管理。编译器会根据变量的使用情况自动进行逃逸分析。然而,过度关注逃逸分析可能导致开发效率降低、代码复杂度增加,并且对性能的影响相对较小。编译器优化通常比人工干预更准确,因此开发者应更多关注业务逻辑和整体性能优化。
|
2月前
|
算法 安全 Go
Python与Go语言中的哈希算法实现及对比分析
Python与Go语言中的哈希算法实现及对比分析
46 0
|
2月前
|
机器学习/深度学习 自然语言处理 Go
Python与Go在AIGC领域的应用:比较与分析
Python与Go在AIGC领域的应用:比较与分析
61 0
|
4月前
|
编译器 Go
Go中init()执行顺序分析
文章分析了Go语言中`init()`函数的执行顺序和时机,指出全局变量初始化后先于`init()`函数执行,而`init()`函数在`main()`函数之前执行,且包的`init()`函数按包的导入顺序进行初始化。
35 1
|
4月前
|
存储 编译器 Go
Go语言中的逃逸分析
Go语言中的逃逸分析
|
4月前
|
人工智能 Go Windows
如何在30秒内学会使用pprof分析Go
如何在30秒内学会使用pprof分析Go
51 0