使用eggnog-mapper进行功能注释

官网:
https://github.com/eggnogdb/eggnog-mapper
online:
http://eggnog-mapper.embl.de/
其他参考资料:
https://www.cnblogs.com/jessepeng/p/12753721.html
https://www.jianshu.com/p/e646c0fa6443
https://blog.csdn.net/woodcorpse/article/details/83144768
http://blog.sciencenet.cn/blog-3334560-1205745.html

使用eggnog-mapper进行功能注释。

eggnog-mapper现在已经更新到了V2版本,需要在Python2.7环境下运行,并保证有超过40G的存储空间存放数据库。

## 下载eggnog-mapper V2版本
git clone https://github.com/eggnogdb/eggnog-mapper.git

目前,eggNOG数据库已经更新到了5.0版本,收集了更为全面的物种和更多的蛋白序列信息,在进行注释前我们需要先把数据库下载下来。

## 下载
python ./download_eggnog_data.py

直接使用命令下载数据库的话速度非常慢,我们可以使用迅雷或者其他工具下载。
下载地址分别为:
http://eggnogdb.embl.de/download/emapperdb-5.0.0/eggnog.db.gz

http://eggnogdb.embl.de/download/emapperdb-5.0.0/eggnog_proteins.dmnd.gz

下载好后移至eggnog-mapper安装目录的data文件夹下并解压。

解压好之后就可以进行功能注释了。

## 功能注释
python emapper.py -i pep.fa --output out -m diamond --cpu 12

-i:输入蛋白序列。

--output:输出文件前缀。

-m diamond:使用DIAMOND进行序列比对。

--cpu:使用的线程数。

使用DIAMOND进行比对的速度非常快。30万条序列用12个线程注释花了5个多小时。

注释完成后会输出两个文件,emapper.annotations为后缀的文件记录了注释结果。文件一共有22列:

1\. query_name 输入的ID
2\. seed eggNOG ortholog 在eggNOG中比对到的最佳结果
3\. seed ortholog evalue
4\. seed ortholog score
5\. Predicted taxonomic group
6\. Predicted protein name 预测得到的蛋白名
7\. Gene Ontology terms 注释到的GO terms
8\. EC number
9\. KEGG_ko 注释到的ko
10\. KEGG_Pathway 注释到的通路
11\. KEGG_Module
12\. KEGG_Reaction
13\. KEGG_rclass
14\. BRITE
15\. KEGG_TC
16\. CAZy
17\. BiGG Reaction
18\. tax_scope: eggNOG taxonomic level used for annotation
19\. eggNOG OGs
20\. bestOG (deprecated, use smallest from eggnog OGs)
21\. COG Functional Category
22\. eggNOG free text description

大家可以根据自己的需求提取对应的信息。

参考资料:

https://github.com/eggnogdb/eggnog-mapper/wiki/eggNOG-mapper-v2

https://www.jianshu.com/p/e646c0fa6443

<header class="entry-header" style="display: block; margin: 0px auto; width: 584.266px; color: rgb(55, 55, 55); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 15px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 300; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;">

使用eggNOG数据库进行基因功能注释

发表于<time class="entry-date" datetime="2019-04-14T20:39:59+08:00">2019 年 4 月 14 日</time>

</header>

1. EggNOG数据库简介

eggNOG ( Evolutionary Genealogy of Genes: Non-supervised Orthologous Groups) 公共数据库V5.0版本搜集了5090个生物(477真核生物、4445个代表性细菌和168古菌)和2502个病毒的全基因组蛋白序列。将这些物种分成了379类(taxonomic levels),每类的编号以NCBI的分类编号表示,例如fungi的编号4751。对各个类别物种的全基因组蛋白序列进行同源基因分类,总共得到4.4M个同源基因类(orthologous groups / OGs)。对每个同源基因类进行了多序列比对、系统发育树构建、HMM文件构建和功能注释。

eggNOG数据库是NCBI的COG数据库的扩展,它收集了更全面的物种和更大量的蛋白序列数据。同样进行了同源基因聚类分析和对每个同源基因类的描述和功能分类。eggNOG更强大的功能在于:

<pre class="wp-block-preformatted" style="border: 0px; font: 13px / 1.5 "Courier 10 Pitch", Courier, monospace; margin: 0px 0px 1.625em; outline: 0px; padding: 0.75em 1.625em; vertical-align: baseline; background: rgb(244, 244, 244); overflow: auto;">1. 对更全面的物种和更大量蛋白序列进行分类。相比于COG数据库纯人工且较为准确的分类,eggNOG数据库扩大物种和序列数据量,采用了非监督聚类方法进行计算。
2. 对每个同源基因类进行了系统发育树构建、HMM模型构建、GO注释、KEGG Pathway注释、SMART/FPAM结构域注释、CAZyme注释等。
3. 提供了本地化软件和网页工具进行eggNOG注释。</pre>

eggNOG数据库的对379类物种,每类物种都生成其数据库文件:

<pre class="wp-block-preformatted" style="border: 0px; font: 13px / 1.5 "Courier 10 Pitch", Courier, monospace; margin: 0px 0px 1.625em; outline: 0px; padding: 0.75em 1.625em; vertical-align: baseline; background: rgb(244, 244, 244); overflow: auto;">0. e5.proteomes.faa文件:收集所有物种的全基因组蛋白序列文件。一个总的数据库文件。

1. members文件:记录OG编号及对应的蛋白序列登录号。编写程序可以从0号文件中提取目标类的蛋白序列数据。
2. annotations文件:记录OG编号的描述信息及所属大类信息。
3. hmms文件:已经构建好的hmm数据库文件。

4. raw_algs文件:多序列比对文件
5. trimmed_algs文件:截短后的多序列比对文件
6. tress文件:统发育树文件。
7. stats文件:统计同源基因类的个数。
</pre>

2. 使用网页工具进行eggNOG注释

目前(20190414),eggNOG虽然提供了第5版数据信息的下载,但是网页工具仅提供4.5.1版本的分析。网页工具支持DIAMOND和HMMER两种算法进行eggNOG注释。虽然HMMER方法一般准确性更高,但仅支持单次提交不超过5000条序列的FASTA文件。

推荐使用网页工具进行eggNOG注释,简单方便,结果认可度高。以下情况推荐使用
官方提供的软件eggnog-mapper进行本地化注释:

<pre class="wp-block-preformatted" style="border: 0px; font: 13px / 1.5 "Courier 10 Pitch", Courier, monospace; margin: 0px 0px 1.625em; outline: 0px; padding: 0.75em 1.625em; vertical-align: baseline; background: rgb(244, 244, 244); overflow: auto;">(1)注释的数据量过大,比如宏基因组数据;
(2)使用更准确的HMMER算法一次性注释超过5000条序列;
(3)想更快地进行eggNOG注释;
(4)网络条件较差。</pre>

3. 下载并安装eggnog-mapper软件和数据库文件

安装eggnog-mapper软件:

$ wget https://github.com/eggnogdb/eggnog-mapper/archive/1.0.3.tar.gz -O ~/software/eggnog-mapper-1.0.3.tar.gz
$ tar zxf ~/software/eggnog-mapper-1.0.3.tar.gz -C /opt/biosoft/
$ cd /opt/biosoft/eggnog-mapper-1.0.3
$ python setup.py install
$ echo 'PATH=$PATH:/opt/biosoft/eggnog-mapper-1.0.3' >> ~/.bashrc
$ source ~/.bashrc
$ download_eggnog_data.py euk bact arch viruses
    下载eggNOG v4.5版本的数据库文件eggnog.db和eggnog_proteins.dmnd,并额外下载指定的HMM数据库。可以根据需要选择指定的数据库即可,下载多个数据库消耗更大的磁盘空间:比如euk消耗76G磁盘空间、bact消耗26G磁盘空间、arch消耗7G磁盘空间、viruses消耗468M磁盘空间。

在eggnog-mapper软件安装目录下的data文件夹下存放有数据库文件:

<pre class="wp-block-preformatted" style="border: 0px; font: 13px / 1.5 "Courier 10 Pitch", Courier, monospace; margin: 0px 0px 1.625em; outline: 0px; padding: 0.75em 1.625em; vertical-align: baseline; background: rgb(244, 244, 244); overflow: auto;">eggnog_proteins.dmnd 所有蛋白序列的DIMOND数据库,用于DIMOND快速序列比对
eggnog.db 功能注释数据库,用于根据比对结果进行功能注释
hmmdb_levels/ 存放有各个物种类别的HMM数据库
OG_fasta/ 存放各个物种类别的蛋白序列数据库。
</pre>

4. 使用eggnog-mapper软件进行eggNOG注释

eggnog-mapper软件运行的原理:(1)程序调用HMMER算法将query序列比对到HMM数据库,得到匹配上的OGs结果。然后将query序列和最优OG中的所有蛋白序列进行比对,得到最优匹配序列(seed ortholog)结果。(2)也可以选择DIAMOND算法将query序列比对到蛋白序列数据库,得到比对结果,选择最优的比对结果作为seed ortholog。(3)基于eggNOG数据库中的对应OG的系统发育树,根据seed ortholog能得到详细的同源基因进化关系,从而剔除亲缘关系较远的直系同源基因,甚至可以剔除一对多的同源基因而仅保留一对一的直系同源基因,将最准确的同源基因的功能注释结果转移给query序列,从而对query序列进行功能注释。

使用HMMER算法进行eggNOG注释:

使用eggnog-mapper软件,推荐使用软件自带的HMMER和DIAMOND程序。我使用最新版本的HMMER软件,出现错误提示:“truct.error: unpack requires a string argument of length ”并得不到结果。
$ export PATH=/opt/biosoft/eggnog-mapper-1.0.3/bin/:$PATH

由于eggNOG数据库较大,推荐将数据库放到内存中,以加快程序运行速度。需要注意的是euk数据比较大,比较费内存,占用了约100G内存左右。
$ emapper.py -d euk -i proteins.fasta -o eggNOG_hmmer --cpu 80 --usemem --no_file_comments

若有多组数据需要进行eggNOG注释,可以分两步运行。先将数据库放到内存中,再分别对多组数据进行运算,这样只读取一次数据库到内存中节约运算时间。
$ emapper.py -d euk --cpu 80 --servermode
待数据库加载完毕后,可以在其它终端中执行数据分析。
$ emapper.py -d euk:localhost:51400 -i proteins1.fasta -o eggNOG1 --no_file_comments
$ emapper.py -d euk:localhost:51400 -i proteins2.fasta -o eggNOG2 --no_file_comments

使用DIAMOND算法 进行eggNOG注释 :

$ python emapper.py -m diamond -i proteins.fasta -o eggNOG_diamond --cpu 80 --no_file_comments

分两步运行DIAMOND比对和功能注释。自己手动运行DIAMOND,设置一些性能参数和严格阈值能更有效率。
$ diamond blastp --db /opt/biosoft/eggnog-mapper-1.0.3/data/eggnog_proteins --query proteins.fasta --out eggNOG.tab --outfmt 6 --sensitive --max-target-seqs 20 --evalue 1e-5 --id 30 --block-size 20.0 --tmpdir /dev/shm --index-chunks 1
$ parsing_blast_result.pl -type tab --max-hit-num 1 --db-query proteins.fasta --db-subject /opt/biosoft/eggnog-mapper-1.0.3/eggNOG_Database_5.0/eggnog_proteins.fasta --HSP-num 1 eggNOG.tab | cut -f 1,2,11,12 > eggNOG.emapper.seed_orthologs
$ perl -e '<>; while (<>) { print; }' eggNOG.emapper.seed_orthologs > aa; mv aa eggNOG.emapper.seed_orthologs
$ emapper.py --annotate_hits_table eggNOG.emapper.seed_orthologs -o eggNOG

emapper.py程序常用参数:

<pre class="wp-block-preformatted" style="border: 0px; font: 13px / 1.5 "Courier 10 Pitch", Courier, monospace; margin: 0px 0px 1.625em; outline: 0px; padding: 0.75em 1.625em; vertical-align: baseline; background: rgb(244, 244, 244); overflow: auto;">输入参数: -h | --help
打印帮助信息。
-d | --database <string>
输入使用的数据库名称。一般选择euk,bact,arch。或输入本地计算机上的HMM数据库路径。
-i <string>
输入query序列FASTA文件。
--translate
添加该参数,认为输入的FASTA文件是核酸序列,程序能将核酸序列转换为氨基酸序列后用于比对和注释。
--annotate_hits_table <string>
输入seed ortholog比对信息。该文件分四列:queryID、subjectID、evalue和bit score。输入该信息,则不需要使用-i参数输入fasta文件了,程序直接运行最后一步功能注释。
--data_dir <string>
输入eggNOG数据库文件所在的路径。

输出参数: --output_dir <string> default: ./
设置输出文件夹。
-o | --out <string>
设置输出文件前缀。
--resume
添加该参数来继续运行程序。
--override
添加该参数覆盖已有的结果文件。
--no_search
不进行HMM比对,使用已有的HMM比对结果。默认情况下,程序使用HMMER算法运行分三步:HMM比对、找seed ortholog和功能注释。
--no_refine
不利用HMM的比对结果进行序列比对寻找seed ortholog,而结束程序,仅仅报告HMM比对结果。
--no_annot
不进行功能注释,仅报告HMM和seed ortholog的比对结果。
--temp_dir <string> default: ./
设置临时文件夹路径。
--no_file_comments
添加该参数,在输出结果中不输出注释行信息。推荐添加该参数,程序有BUG容易导致seed_ortholog文件中含有#的注释行出现在结果中部,导致程序运行失败。
--keep_mapping_files
添加该参数,不删除中间文件中的HMMER或DIAMOND比对结果文件。
--report_orthologs
将用于功能注释的ortholog信息输出到一个单独的文件中。

比对参数:
-m <string> default: hmmer
设置比对算法。可以选择的值为hmmer和diamond。
--hmm_maxhits <int> default: 1
设置HMMER算法得到的hit结果数量。
--hmm_evalue <float> default: 0.001
设置HMMER算法的evalue阈值。
--hmm_score <int> default: 20
设置HMMER算法的score阈值。
--hmm_maxseqlen <int> default: 5000
忽略长度超过此阈值的query序列。
--hmm_qcov <float> default: disabled
设置HMMER算法中query序列的最小覆盖率阈值。
--dmnd_db <string>
当使用DIAMOND算法时,设置DIAMOND数据库路径。
--matrix <string> default: BLOSUM62
设置DIAMOND算法的计分举证。
--gapopen <int>
设置DIAMOND算法中打开Gap罚分值。
--gapextend <int>
设置DIAMOND算法中延长Gap罚分值。
--seed_ortholog_evalue <float> default: 0.001
进行seed ortholog鉴定时,设定的evalue阈值。
--seed_ortholog_score <int> default: 60
进行seed ortholog鉴定时,设定的score阈值。

功能注释参数: --tax_scope <string>
仅使用指定物种类下的同源基因进行功能注释。默认设置下是分别对每条query序列进行自动调节。
--target_orthologs <string>
进行功能注释时,设置选择什么类型的同源基因进行功能注释。可以选择的值有:one2one,many2one,one2many,many2many,all。
--go_evidence <string>
设置使用什么类型的GO terms进行功能注释。可以设置的值有:experimental,仅使用源自实验证据支持的GO terms;non-electronic,仅使用非电子计算归纳的Go terms。

性能参数: --cpu <int>
设置程序使用的CPU线程数。
--usemem
添加该参数,能将HMM数据库读取到内存中,增加计算性能。在程序运行结束后,释放内存。
--servermode
添加该参数,会自动添加--usemem参数,将HMM数据库读取到内存中,并一直将HMM数据库维持到内存中,并提供数据库服务,直到强行结束程序。</pre>

5. eggNOG结果解读和分类图绘制

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 193,968评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,682评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,254评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,074评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,964评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,055评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,484评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,170评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,433评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,512评论 2 308
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,296评论 1 325
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,184评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,545评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,150评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,437评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,630评论 2 335

推荐阅读更多精彩内容