用 eggnog-mapper 进行功能注释

时间:2022-07-24
本文章向大家介绍用 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