转录组分析中基因的GO富集分析这步有很多软件可以选择,这次我们来介绍下如何利用Cytoscape软件中的一个简单又好用的Bingo小插件完成富集的工作,Cytoscape其实是一个做网络图的软件,所以使用Bingo的这种方法特别之处就在于富集的结果是可以直接以网络图的形式呈现,类似于下图这种效果,区别于其他的软件大多只生成表的形式。
操作步骤简单分为以下几步:
- Cytoscape下载及Bingo插件的安装
- Bingo内参数的设置
- 基因ID与GO注释的对应文件的准备
- 粘贴你的待富集的基因,Bingo~~~ 完事!
1. Cytoscape下载及安装Bingo
官网:https://cytoscape.org/,现在已经更新到3.8版本了,直接点击Download下载安装即可,过程就不再多介绍,没太大难度。
打开Cytoscape软件,点击选项栏“Apps”-“AppManager”,搜索“BinGO”,点击“Install”,就可以下载了。安装的过程可能会稍微有一点慢,请耐心等待一下。
2.参数设置
OK,安装成功后你再点击Apps下拉框里会看到这个插件吗,我们打开它看下都有哪些参数吧,其实大部分的参数都默认即可,比如significance level 默认0.05,multiple testing correction也默认BH方法,Select ontology file选择你想注释GO数据库的哪个部分,(BP生物进程,MF分子功能,CC细胞成分,或者是All三者一起)。
3. 基因ID与GO注释对应文件的准备
模式物种
在Bingo参数页面中有个最核心的一个参数是Select organism annotation,我们看一下里面内置了有几十种的模式物种,比如拟南芥,牛等等。
对于这种模式物种的操作就十分方便了,不需要准备文件,直接拿你待富集的基因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)
点击Start BinGO,会生成网络图及GO富集分析表俩个结果,同时在你刚设定的位置也会保存相同的表格文件,我们来看下这俩个结果。
GO富集分析文件
我们打开表格主要是这7列的内容,解释下这几列:
GO ID :富集到的GO term
P value/corr p-value 一般参考 corr p-value
x:目标基因中此类基因的个数;
X:目标基因的总个数;
n:基因组中此类基因的个数;
N:基因组基因的总个数
Description: 该GO term的功能描述
富集层级网络图
富集到的GO term按照层级关系列出网络,并按照富集程度(根据p值的大小)上色。
非模式物种
如果想要用BinGO来分析一些非模式物种,需要手工(编程)生成注释文件,文件的输入形式要如下图这样,左边为基因ID,右边为对应的GO ID,中间为“空格+等号+空格”进行分隔,另外GO ID只列出对应的7位数字
另外注意我们一般的注释文件往往是下图这样的,所以我们需要通过一些方式将数据转换,这里提供俩种方法以供参考:
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富集时候会遇到没有反应得到一个空文件,可以重启下软件再试一次。
以上便是利用Cytoscape的BINGO插件进行GO分析的全部流程,大家可以按照上面的步骤实操一下,使用中有问题可以回复我。另外欢迎大家搜索关注BioparaMeta公众号一起交流 学习~~