用 eggnog-mapper 进行功能注释
eggnog-mapper
是一种用于对未知序列进行快速功能注释的工具。它使用 eggNOG 数据库中预先计算好的直系同源基因组和系统发育树,根据其进化关系推断他们的功能信息。eggnog-mapper
一般用于注释新的基因组,转录组亦或是宏基因组数据。
使用直系同源预测功能注释的方法比传统的序列相似性搜索(即 BLAST 搜索)具有更高的精度,因为它会避免从旁系同源进行注释。
eggnog-mapper
的Github 地址:https://github.com/eggnogdb/eggnog-mapper
eggnog-mapper
的网页界面版本请访问:http://eggnog-mapper.embl.de
Fast genome-wide functional annotation through orthology assignment by eggNOG-mapper. Mol Biol Evol (2017). https://doi.org/10.1093/molbev/msx148
eggNOG-mapper v2
•注释数据库已更新至 eggNOG v5.0。包括 5090 个代表性基因组(4445 个细菌,168 个古细菌和 477 个真核生物)以及 2502 个病毒。
eggNOG 5.0: a hierarchical, functionally and phylogenetically annotated orthology resource based on 5090 organisms and 2502 viruses. Nucleic Acids Res (2019). https://doi.org/10.1093/nar/gky1085
•在该版本中 HMMer 搜索模式已被弃用。因为在测试中,DIAMOND 模式运行效率更高,并可获得相似甚至更好的结果。•更新了功能注释数据(例如 KEGG,GeneOntology)•输出文件中新添加的列:
1. query_name2. seed eggNOG ortholog3. seed ortholog evalue4. seed ortholog score5. Predicted taxonomic group6. Predicted protein name7. Gene Ontology terms 8. EC number9. KEGG_ko10. KEGG_Pathway11. KEGG_Module12. KEGG_Reaction13. KEGG_rclass14. BRITE15. KEGG_TC16. CAZy 17. BiGG Reaction18. tax_scope: eggNOG taxonomic level used for annotation19. eggNOG OGs 20. bestOG (deprecated, use smallest from eggnog OGs)21. COG Functional Category22. eggNOG free text description
软件安装
•需要 Python 2.7 环境和 BioPython 包(注:v2.0.1[1] 开始的版本已基于 Python 3 重写)•需要至少 50GB 硬盘空间
软件下载
git clone https://github.com/jhcepas/eggnog-mapper.git
下载数据库
python download_eggnog_data.py
该脚本会自动下载并解压数据库至脚本路径的 ./data
目录下。
基本使用方法
只需输入包含需要查询序列的 fasta
文件即可进行注释:
python emapper.py -i test/p53.fa --output p53_maNOG -m diamond
注释数据量较大的基因组和宏基因组数据集
eggnog-mapper
的工作流程分为两个阶段: 1) 寻找直系同源序列; 2) 扩展注释。第一阶段主要消耗 CPU 算力,而第二阶段则主要考验磁盘读写能力。因此,我们可以根据这两个步骤的特性进行优化。
第一阶段: 同源性搜索
1) 对于较大的 fasta
文件,我们可以先将其拆分,方便我们进行并行运算,充分利用集群算力。这里直接使用 Linux 自带的 split
命令进行拆分。
split -l 2000000 -a 3 -d input_file.faa input_file.chunk_
•-l
选项根据文件的行数来分割文件•-a
指定输出文件的后缀长度•-d
使用数字作为后缀
2) 使用 diamond
模式进行同源性搜索。这一步我们需要使用 --no_annot
参数暂时跳过注释阶段。用下面的代码批量生成集群运行命令,然后进行批量运行。
# 批量生成运行命令,方便提交至集群for f in *.chunk_*; doecho ./emapper.py -m diamond --no_annot --no_file_comments --cpu 16 -i $f -o $f; done
第二阶段: 功能注释
在注释阶段我们需要检索 data/eggnog.db
数据库。该文件是一个 sqlite3
数据库,因此我们建议将该文件放在速度最快的磁盘中。例如,存储在 SSD 磁盘中,如果内存足够大也可以直接放在 /dev/shm
(基于内存的文件系统)下。
3) 合并上一步生成的 chunk_*.emapper.seed_orthologs
文件。
cat *.chunk_*.emapper.seed_orthologs > input_file.emapper.seed_orthologs
4) 进行注释。
emapper.py --annotate_hits_table input.emapper.seed_orthologs --no_file_comments -o output_file --cpu 10
一般来说,如果把数据库放在 /dev/shm
下,调用 10 核进行运算,每秒可以注释 300-400 个蛋白。
引用链接
[1]
https://github.com/eggnogdb/eggnog-mapper/tags
[2]
https://github.com/eggnogdb/eggnog-mapper/wiki/eggNOG-mapper-v2
- 【Java学习笔记之十七】Java中普通代码块,构造代码块,静态代码块区别及代码示例分析
- 【机器学习笔记之六】Bagging 简述
- 洛谷 P1553 数字反转(升级版)【字符串+STL stack】
- C# 实现发送手机短信
- 软件测试人员必须掌握的Linux基本命令
- 【机器学习笔记之五】用ARIMA模型做需求预测用ARIMA模型做需求预测
- Capturing Packets in Linux at a Speed of Millions of PPS
- 【机器学习笔记之四】Adaboost 算法
- 【Java学习笔记之十九】super在Java继承中的用法小结
- 【Java学习笔记之二十一】抽象类在Java继承中的用法小结
- 【Java学习笔记之二十】final关键字在Java继承中的用法小结
- 基于Windows下python环境变量配置
- 【机器学习笔记之七】PCA 的数学原理和可视化效果
- 2017"百度之星"程序设计大赛 - 复赛1005&&HDU 6148 Valley Numer【数位dp】
- 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 数组属性和方法
- Envoy 代理中的请求的生命周期
- Xilinx 7系列时钟结构
- 模拟入栈操作
- 古董键盘
- 标准字符设备驱动模板
- 这就是你日日夜夜想要的docker!!!---------三分钟带你玩转docker命令
- PLL/DLL/DCM/MMCM
- 常见编程模式之就地反转链表
- 这就是你日日夜夜想要的docker!!!---------Docker常规操作--端口映射、数据卷管理 以及容器互联
- redis学习(十八)
- Elasticsearch基础知识补齐
- 踩坑记 | 多aar下修改常量的一个小坑
- 学习mockjs
- CentOS7增加Swap分区大小
- vue可视化图表 基于Echarts封装好的v-charts简介