eggNOG 5.0数据库介绍
1. eggNOG简介
最近考虑到所用的一些数据库太旧了,需要更新。在整理的时候发现eggNOG数据库在去年的时候已经做了一次更新eggNOG 5.0: a hierarchical, functionally and phylogenetically annotated orthology resource based on 5090 organisms and 2502 viruses。距离上个版本eggNOG4.5已经过去了3-4年,更新频率相对来说比较慢。但这次更新的内容是翻倍式增加的,以下是4.5和5.0比较。
eggNOG数据库全称是:直系同源蛋白分组比对(evolutionary genealogy of genes: Non-supervised Orthologous Groups)数据库,由EMBL创建维护,是对NCBI的COG数据库进行拓展,提供不同分类水平蛋白的直系同源分组(Orthologous Groups,OG),包括真核、原核及病毒的数据信息。它扩展了COG数据库的分类方法,采用无监督聚类算法在全基因组范围内推导基因功能,更适用于谱系特征基因的分析。
2. eggNOG-Mapper注释原理
常规功能注释方法基于序列相似性寻找直系同源基因,常用blast+blast2go
或InterProscan
来注释,这种方法可能找到旁系同源基因,而eggNOG能区分旁系和直系同源基因,因此开发出eggNOG-mapper
来进行功能注释。eggNOG v5.0
对应的工具是eggNOG-mapper v2
。
注释的过程可分为图下四个过程:
- A. 序列比对:通过HMMER搜索HMMs数据库找到OG,或者通过DIAMOND搜索蛋白数据库(速度更快,更适合宏组学),每条序列的最佳匹配结果以 seed ortholog 形式存放,用于获取其他直系同源基因。
- B. 获取直系同源基因:通过seed ortholog来提取一个或一组精细的直系同源基因。
- C.去除关系较远的直系同源基因:根据bit-score或E-value对结果进行一次过滤,剔除同源性不高的结果。
- D. 功能注释:蛋白序列搜索到的直系同源基因的功能描述就是最终的注释结果,如GO、KEGG、COG等。
3. eggNOG 5.0数据资源
数据库是生物信息的基础,每个生物数据库都有各自的特点(主要是从不同角度说明生物问题),但信息的全面、分类和准确性是数据库的关键。eggNOG 5.0的下载数据在:http://eggnog5.embl.de/download/eggnog_5.0/
其中e5.proteomes.faa为所有的蛋白组序列,e5.viruses.faa为所有的病毒蛋白序列,e5.taxid_info.tsv为Taxid对应的物种名称以及完整的谱系信息,e5.og_annotations.tsv为所有的NOG信息,其第一列为Taxid,第二列为NOG groups,第三列为COG归属,第四列为Function。
除了功能,每个物种都有相应的注释信息http://eggnog5.embl.de/download/eggnog_5.0/per_tax_level/,比如1060(TaxID):
5000余个物种对功能注释来说是比较全面的了,但如果要做物种注释,那是远远不够的。
4. eggNOG-Mapper使用
在eggnog-mapper使用之前应该准备好:python、hmmer、diamond、fasta、注释数据库。
# 下载软件
git clone https://github.com/jhcepas/eggnog-mapper.git
# 下载数据库
cd eggnog-mapper ./download_eggnog_data.py euk #euk真核,bact原核,arch古菌,viruses病毒
#注释
python emapper.py -i test.fa --output ./ -d euk #默认以HMMER搜索
python emapper.py -m diamond -i test.fa --output ./ -d euk #指定搜索数据库类型,可大类、小类
python emapper.py -i test.fa --output ./ -d maNOG #哺乳动物NOG
python emapper.py -i test.fa --output ./ -d maNOG --usemem --cpu 10 #内存和线程
至于eggNOG注释的结果,包括了一些匹配和得分信息,以及GO,KEGG,BiGG,COG,KOG,NOG等功能注释结果。但不建议用它的GO和KEGG结果,因为这两个数据库是生信领域更新最快的,信息最全,eggNOG注释的结果可能会跟不上。可以采纳下它的COG、KOG、NOG的注释信息,因为COG/KOG几乎没有更新了,还停留在2003-2014年:https://www.ncbi.nlm.nih.gov/COG/。
5. NOG、KOG、COG、KEGG、GO区别?
KEGG(Encyclopedia of Genes and Genomes)和GO(Gene Ontology)耳熟能详就不解释了,至少是目前权威公认的两大数据库。
主要是NOG和KOG、COG有点懵。
相同点:三者都是同源分类数据库,即都是OG(Orthologous Groups)。
不同点:
- COG:Clusters of Orthologous Groups of proteins,即同源蛋白簇,是NCBI的一个数据库。根据生物完整基因组的编码蛋白系统进化关系分类构建而成,每一簇COG由直系同源序列构成,从而可以推测该序列的功能,按功能共可以分为二十六类。
- KOG:EuKaryotic Orthologous Groups(为什么不叫EOG?问号脸)。广义上COG分为真核和原核生物两类,原核的一般称为COG数据库,真核的一般称为KOG数据库。
- NOG:Non-supervised Orthologous Groups,注意是非监督,因COG未及时更新,EMBL EggNOG对COG进行了完善,极大拓展了基因组信息,主要是基于HMM分析提供更细致的OG分析。
做了eggNOG,还有必要做COG/KOG吗?做不做都可以,主要看心情,看哪个更能解释你的生物学问题。一般来说,差别不会太大,COG虽然过时,但权威性还在呀。
附:不同功能数据库的层级划分
Ref:
应该是最好的eggnog-mapper功能注释教程
时隔四年,NOG数据库更新啦!
宏基因组功能注释(以COG为例)
https://www.biostars.org/p/286615/
原文地址:https://www.cnblogs.com/jessepeng/p/12753721.html
- Go语言interface的value.(type)使用小技巧-转
- 干货 | Elasticsearch5.X Mapping万能模板
- MySQL 5.7安装部署总结(r10笔记第77天)
- Go语言中Socket通信TCP服务端
- MySQL和Oracle的添加字段的处理差别 (r10笔记第73天)
- MySQL修改数据类型的问题总结(r10笔记第74天)
- 深究|Elasticsearch单字段支持的最大字符数?
- Go语言中Socket通信之Tcp客户端
- Oracle 12c PDB迁移及ORA-00600错误分析和解决(r10笔记第72天)
- 【Go 语言社区】epoll详解
- Oracle 12c数据库升级实战(r10笔记第70天)
- Oracle 12c升级检查问题分析(r10笔记第69天)
- 转--使用Revel(go)开发网站
- GoldenGate数据迁移的问题总结(二)(r10笔记第85天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法