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公众号一起交流 学习~~

相关文章
|
3月前
|
人工智能 监控 中间件
如何用go语言实现类似AOP的功能
本文介绍了如何在 Go 语言中借鉴 Java 的 AOP(面向切面编程)思想,通过 Gin 框架的中间件和函数包装机制实现日志记录、权限校验等横切关注点与业务逻辑的解耦。内容涵盖 AOP 的优点、Go 中的实现方式、Gin 中间件与 AOP 的异同,帮助开发者提升代码模块化与可维护性。
151 0
|
6月前
|
人工智能 数据可视化 编译器
Go interface实现分析
本文深入探讨了Go语言中接口的定义、实现及性能影响。接口作为一种“约定”,包含方法签名集合,无需依赖具体类型即可调用方法,隐藏了内部实现细节。文章分析了接口的两种实现方式(iface和eface)、按值与按指针实现的区别,以及nil接口与普通nil的区别。同时,通过反汇编代码对比了接口动态调用与类型直接调用的性能差异,指出接口调用存在内存逃逸和无法内联的问题。最后总结了接口的优势与局限性,强调在实际开发中需根据场景合理选择是否使用接口。
167 13
|
6月前
|
Go 调度
GO语言函数的内部运行机制分析
以上就是Go语言中函数的内部运行机制的概述,展示了函数在Go语言编程中如何发挥作用,以及Go如何使用简洁高效的设计,使得代码更简单,更有逻辑性,更易于理解和维护。尽管这些内容深入了一些底层的概念,但我希望通过这种方式,将这些理论知识更生动、更形象地带给你,让你在理解的同时找到编程的乐趣。
125 5
|
7月前
|
存储 监控 算法
员工行为监控软件中的 Go 语言哈希表算法:理论、实现与分析
当代企业管理体系中,员工行为监控软件已逐步成为维护企业信息安全、提升工作效能的关键工具。这类软件能够实时记录员工操作行为,为企业管理者提供数据驱动的决策依据。其核心支撑技术在于数据结构与算法的精妙运用。本文聚焦于 Go 语言中的哈希表算法,深入探究其在员工行为监控软件中的应用逻辑与实现机制。
189 14
|
8月前
|
SQL 运维 监控
高效定位 Go 应用问题:Go 可观测性功能深度解析
为进一步赋能用户在复杂场景下快速定位与解决问题,我们结合近期发布的一系列全新功能,精心梳理了一套从接入到问题发现、再到问题排查与精准定位的最佳实践指南。
|
8月前
|
Java 编译器 Go
go的内存逃逸分析
内存逃逸分析是Go编译器在编译期间根据变量的类型和作用域,确定变量分配在堆上还是栈上的过程。如果变量需要分配在堆上,则称作内存逃逸。Go语言有自动内存管理(GC),开发者无需手动释放内存,但编译器需准确分配内存以优化性能。常见的内存逃逸场景包括返回局部变量的指针、使用`interface{}`动态类型、栈空间不足和闭包等。内存逃逸会影响性能,因为操作堆比栈慢,且增加GC压力。合理使用内存逃逸分析工具(如`-gcflags=-m`)有助于编写高效代码。
174 2
|
9月前
|
存储 缓存 监控
企业监控软件中 Go 语言哈希表算法的应用研究与分析
在数字化时代,企业监控软件对企业的稳定运营至关重要。哈希表(散列表)作为高效的数据结构,广泛应用于企业监控中,如设备状态管理、数据分类和缓存机制。Go 语言中的 map 实现了哈希表,能快速处理海量监控数据,确保实时准确反映设备状态,提升系统性能,助力企业实现智能化管理。
192 3
|
11月前
|
开发框架 Go 计算机视觉
纯Go语言开发人脸检测、瞳孔/眼睛定位与面部特征检测插件-助力GoFly快速开发框架
开发纯go插件的原因是因为目前 Go 生态系统中几乎所有现有的人脸检测解决方案都是纯粹绑定到一些 C/C++ 库,如 OpenCV 或 dlib,但通过 cgo 调用 C 程序会引入巨大的延迟,并在性能方面产生显著的权衡。此外,在许多情况下,在各种平台上安装 OpenCV 是很麻烦的。使用纯Go开发的插件不仅在开发时方便,在项目部署和项目维护也能省很多时间精力。
297 5
|
Go API 数据库
Go 语言中常用的 ORM 框架,如 GORM、XORM 和 BeeORM,分析了它们的特点、优势及不足,并从功能特性、性能表现、易用性和社区活跃度等方面进行了比较,旨在帮助开发者根据项目需求选择合适的 ORM 框架。
本文介绍了 Go 语言中常用的 ORM 框架,如 GORM、XORM 和 BeeORM,分析了它们的特点、优势及不足,并从功能特性、性能表现、易用性和社区活跃度等方面进行了比较,旨在帮助开发者根据项目需求选择合适的 ORM 框架。
1109 4
|
中间件 Go API
Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架
本文概述了Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架。
1300 1
下一篇
oss云网关配置