官網(wǎng):
https://github.com/eggnogdb/eggnog-mapper
online:
http://eggnog-mapper.embl.de/
其他參考資料:
https://www.cnblogs.com/jessepeng/p/12753721.html
http://www.reibang.com/p/e646c0fa6443
https://blog.csdn.net/woodcorpse/article/details/83144768
http://blog.sciencenet.cn/blog-3334560-1205745.html
使用eggnog-mapper進(jìn)行功能注釋。
eggnog-mapper現(xiàn)在已經(jīng)更新到了V2版本,需要在Python2.7環(huán)境下運(yùn)行搁料,并保證有超過(guò)40G的存儲(chǔ)空間存放數(shù)據(jù)庫(kù)茫船。
## 下載eggnog-mapper V2版本
git clone https://github.com/eggnogdb/eggnog-mapper.git
目前,eggNOG數(shù)據(jù)庫(kù)已經(jīng)更新到了5.0版本衰猛,收集了更為全面的物種和更多的蛋白序列信息,在進(jìn)行注釋前我們需要先把數(shù)據(jù)庫(kù)下載下來(lái)。
## 下載
python ./download_eggnog_data.py
直接使用命令下載數(shù)據(jù)庫(kù)的話速度非常慢愧杯,我們可以使用迅雷或者其他工具下載。
下載地址分別為:
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文件夾下并解壓鞋既。
解壓好之后就可以進(jìn)行功能注釋了力九。
## 功能注釋
python emapper.py -i pep.fa --output out -m diamond --cpu 12
-i:輸入蛋白序列。
--output:輸出文件前綴邑闺。
-m diamond:使用DIAMOND進(jìn)行序列比對(duì)畏邢。
--cpu:使用的線程數(shù)。
使用DIAMOND進(jìn)行比對(duì)的速度非臣爝海快舒萎。30萬(wàn)條序列用12個(gè)線程注釋花了5個(gè)多小時(shí)。
注釋完成后會(huì)輸出兩個(gè)文件蹭沛,emapper.annotations為后綴的文件記錄了注釋結(jié)果臂寝。文件一共有22列:
1\. query_name 輸入的ID
2\. seed eggNOG ortholog 在eggNOG中比對(duì)到的最佳結(jié)果
3\. seed ortholog evalue
4\. seed ortholog score
5\. Predicted taxonomic group
6\. Predicted protein name 預(yù)測(cè)得到的蛋白名
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
大家可以根據(jù)自己的需求提取對(duì)應(yīng)的信息。
參考資料:
https://github.com/eggnogdb/eggnog-mapper/wiki/eggNOG-mapper-v2
http://www.reibang.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數(shù)據(jù)庫(kù)進(jìn)行基因功能注釋
發(fā)表于<time class="entry-date" datetime="2019-04-14T20:39:59+08:00">2019 年 4 月 14 日</time>
</header>
1. EggNOG數(shù)據(jù)庫(kù)簡(jiǎn)介
eggNOG ( Evolutionary Genealogy of Genes: Non-supervised Orthologous Groups) 公共數(shù)據(jù)庫(kù)V5.0版本搜集了5090個(gè)生物(477真核生物摊灭、4445個(gè)代表性細(xì)菌和168古菌)和2502個(gè)病毒的全基因組蛋白序列咆贬。將這些物種分成了379類(taxonomic levels),每類的編號(hào)以NCBI的分類編號(hào)表示帚呼,例如fungi的編號(hào)4751掏缎。對(duì)各個(gè)類別物種的全基因組蛋白序列進(jìn)行同源基因分類,總共得到4.4M個(gè)同源基因類(orthologous groups / OGs)煤杀。對(duì)每個(gè)同源基因類進(jìn)行了多序列比對(duì)眷蜈、系統(tǒng)發(fā)育樹(shù)構(gòu)建、HMM文件構(gòu)建和功能注釋沈自。
eggNOG數(shù)據(jù)庫(kù)是NCBI的COG數(shù)據(jù)庫(kù)的擴(kuò)展酌儒,它收集了更全面的物種和更大量的蛋白序列數(shù)據(jù)。同樣進(jìn)行了同源基因聚類分析和對(duì)每個(gè)同源基因類的描述和功能分類枯途。eggNOG更強(qiáng)大的功能在于:
<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. 對(duì)更全面的物種和更大量蛋白序列進(jìn)行分類忌怎。相比于COG數(shù)據(jù)庫(kù)純?nèi)斯で逸^為準(zhǔn)確的分類籍滴,eggNOG數(shù)據(jù)庫(kù)擴(kuò)大物種和序列數(shù)據(jù)量,采用了非監(jiān)督聚類方法進(jìn)行計(jì)算榴啸。
2. 對(duì)每個(gè)同源基因類進(jìn)行了系統(tǒng)發(fā)育樹(shù)構(gòu)建孽惰、HMM模型構(gòu)建、GO注釋鸥印、KEGG Pathway注釋勋功、SMART/FPAM結(jié)構(gòu)域注釋、CAZyme注釋等辅甥。
3. 提供了本地化軟件和網(wǎng)頁(yè)工具進(jìn)行eggNOG注釋酝润。</pre>
eggNOG數(shù)據(jù)庫(kù)的對(duì)379類物種,每類物種都生成其數(shù)據(jù)庫(kù)文件:
<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文件:收集所有物種的全基因組蛋白序列文件璃弄。一個(gè)總的數(shù)據(jù)庫(kù)文件要销。
1. members文件:記錄OG編號(hào)及對(duì)應(yīng)的蛋白序列登錄號(hào)。編寫程序可以從0號(hào)文件中提取目標(biāo)類的蛋白序列數(shù)據(jù)夏块。
2. annotations文件:記錄OG編號(hào)的描述信息及所屬大類信息疏咐。
3. hmms文件:已經(jīng)構(gòu)建好的hmm數(shù)據(jù)庫(kù)文件。
4. raw_algs文件:多序列比對(duì)文件
5. trimmed_algs文件:截短后的多序列比對(duì)文件
6. tress文件:統(tǒng)發(fā)育樹(shù)文件脐供。
7. stats文件:統(tǒng)計(jì)同源基因類的個(gè)數(shù)浑塞。
</pre>
2. 使用網(wǎng)頁(yè)工具進(jìn)行eggNOG注釋
目前(20190414),eggNOG雖然提供了第5版數(shù)據(jù)信息的下載政己,但是網(wǎng)頁(yè)工具僅提供4.5.1版本的分析酌壕。網(wǎng)頁(yè)工具支持DIAMOND和HMMER兩種算法進(jìn)行eggNOG注釋。雖然HMMER方法一般準(zhǔn)確性更高歇由,但僅支持單次提交不超過(guò)5000條序列的FASTA文件卵牍。
推薦使用網(wǎng)頁(yè)工具進(jìn)行eggNOG注釋,簡(jiǎn)單方便沦泌,結(jié)果認(rèn)可度高糊昙。以下情況推薦使用
官方提供的軟件eggnog-mapper進(jìn)行本地化注釋:
<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)注釋的數(shù)據(jù)量過(guò)大,比如宏基因組數(shù)據(jù)谢谦;
(2)使用更準(zhǔn)確的HMMER算法一次性注釋超過(guò)5000條序列释牺;
(3)想更快地進(jìn)行eggNOG注釋;
(4)網(wǎng)絡(luò)條件較差回挽。</pre>
3. 下載并安裝eggnog-mapper軟件和數(shù)據(jù)庫(kù)文件
安裝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版本的數(shù)據(jù)庫(kù)文件eggnog.db和eggnog_proteins.dmnd没咙,并額外下載指定的HMM數(shù)據(jù)庫(kù)√鳎可以根據(jù)需要選擇指定的數(shù)據(jù)庫(kù)即可镜撩,下載多個(gè)數(shù)據(jù)庫(kù)消耗更大的磁盤空間:比如euk消耗76G磁盤空間、bact消耗26G磁盤空間队塘、arch消耗7G磁盤空間袁梗、viruses消耗468M磁盤空間。
在eggnog-mapper軟件安裝目錄下的data文件夾下存放有數(shù)據(jù)庫(kù)文件:
<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數(shù)據(jù)庫(kù)憔古,用于DIMOND快速序列比對(duì)
eggnog.db 功能注釋數(shù)據(jù)庫(kù)遮怜,用于根據(jù)比對(duì)結(jié)果進(jìn)行功能注釋
hmmdb_levels/ 存放有各個(gè)物種類別的HMM數(shù)據(jù)庫(kù)
OG_fasta/ 存放各個(gè)物種類別的蛋白序列數(shù)據(jù)庫(kù)。
</pre>
4. 使用eggnog-mapper軟件進(jìn)行eggNOG注釋
eggnog-mapper軟件運(yùn)行的原理:(1)程序調(diào)用HMMER算法將query序列比對(duì)到HMM數(shù)據(jù)庫(kù)鸿市,得到匹配上的OGs結(jié)果锯梁。然后將query序列和最優(yōu)OG中的所有蛋白序列進(jìn)行比對(duì),得到最優(yōu)匹配序列(seed ortholog)結(jié)果焰情。(2)也可以選擇DIAMOND算法將query序列比對(duì)到蛋白序列數(shù)據(jù)庫(kù)陌凳,得到比對(duì)結(jié)果,選擇最優(yōu)的比對(duì)結(jié)果作為seed ortholog内舟。(3)基于eggNOG數(shù)據(jù)庫(kù)中的對(duì)應(yīng)OG的系統(tǒng)發(fā)育樹(shù)合敦,根據(jù)seed ortholog能得到詳細(xì)的同源基因進(jìn)化關(guān)系,從而剔除親緣關(guān)系較遠(yuǎn)的直系同源基因验游,甚至可以剔除一對(duì)多的同源基因而僅保留一對(duì)一的直系同源基因充岛,將最準(zhǔn)確的同源基因的功能注釋結(jié)果轉(zhuǎn)移給query序列,從而對(duì)query序列進(jìn)行功能注釋耕蝉。
使用HMMER算法進(jìn)行eggNOG注釋:
使用eggnog-mapper軟件崔梗,推薦使用軟件自帶的HMMER和DIAMOND程序。我使用最新版本的HMMER軟件垒在,出現(xiàn)錯(cuò)誤提示:“truct.error: unpack requires a string argument of length ”并得不到結(jié)果蒜魄。
$ export PATH=/opt/biosoft/eggnog-mapper-1.0.3/bin/:$PATH
由于eggNOG數(shù)據(jù)庫(kù)較大,推薦將數(shù)據(jù)庫(kù)放到內(nèi)存中场躯,以加快程序運(yùn)行速度谈为。需要注意的是euk數(shù)據(jù)比較大,比較費(fèi)內(nèi)存推盛,占用了約100G內(nèi)存左右峦阁。
$ emapper.py -d euk -i proteins.fasta -o eggNOG_hmmer --cpu 80 --usemem --no_file_comments
若有多組數(shù)據(jù)需要進(jìn)行eggNOG注釋,可以分兩步運(yùn)行耘成。先將數(shù)據(jù)庫(kù)放到內(nèi)存中榔昔,再分別對(duì)多組數(shù)據(jù)進(jìn)行運(yùn)算,這樣只讀取一次數(shù)據(jù)庫(kù)到內(nèi)存中節(jié)約運(yùn)算時(shí)間瘪菌。
$ emapper.py -d euk --cpu 80 --servermode
待數(shù)據(jù)庫(kù)加載完畢后撒会,可以在其它終端中執(zhí)行數(shù)據(jù)分析。
$ 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算法 進(jìn)行eggNOG注釋 :
$ python emapper.py -m diamond -i proteins.fasta -o eggNOG_diamond --cpu 80 --no_file_comments
分兩步運(yùn)行DIAMOND比對(duì)和功能注釋师妙。自己手動(dòng)運(yùn)行DIAMOND怔檩,設(shè)置一些性能參數(shù)和嚴(yán)格閾值能更有效率。
$ 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程序常用參數(shù):
<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;">輸入?yún)?shù): -h | --help
打印幫助信息媒吗。
-d | --database <string>
輸入使用的數(shù)據(jù)庫(kù)名稱。一般選擇euk甫何,bact,arch加派。或輸入本地計(jì)算機(jī)上的HMM數(shù)據(jù)庫(kù)路徑娄琉。
-i <string>
輸入query序列FASTA文件。
--translate
添加該參數(shù),認(rèn)為輸入的FASTA文件是核酸序列炼鞠,程序能將核酸序列轉(zhuǎn)換為氨基酸序列后用于比對(duì)和注釋。
--annotate_hits_table <string>
輸入seed ortholog比對(duì)信息霎肯。該文件分四列:queryID、subjectID异旧、evalue和bit score荤崇。輸入該信息倚喂,則不需要使用-i參數(shù)輸入fasta文件了子库,程序直接運(yùn)行最后一步功能注釋宴倍。
--data_dir <string>
輸入eggNOG數(shù)據(jù)庫(kù)文件所在的路徑脖捻。
輸出參數(shù): --output_dir <string> default: ./
設(shè)置輸出文件夾。
-o | --out <string>
設(shè)置輸出文件前綴。
--resume
添加該參數(shù)來(lái)繼續(xù)運(yùn)行程序。
--override
添加該參數(shù)覆蓋已有的結(jié)果文件速侈。
--no_search
不進(jìn)行HMM比對(duì)乾蛤,使用已有的HMM比對(duì)結(jié)果眨层。默認(rèn)情況下,程序使用HMMER算法運(yùn)行分三步:HMM比對(duì)上荡、找seed ortholog和功能注釋酪捡。
--no_refine
不利用HMM的比對(duì)結(jié)果進(jìn)行序列比對(duì)尋找seed ortholog捺疼,而結(jié)束程序媳友,僅僅報(bào)告HMM比對(duì)結(jié)果。
--no_annot
不進(jìn)行功能注釋看靠,僅報(bào)告HMM和seed ortholog的比對(duì)結(jié)果赶促。
--temp_dir <string> default: ./
設(shè)置臨時(shí)文件夾路徑鸥滨。
--no_file_comments
添加該參數(shù),在輸出結(jié)果中不輸出注釋行信息婿滓。推薦添加該參數(shù)老速,程序有BUG容易導(dǎo)致seed_ortholog文件中含有#的注釋行出現(xiàn)在結(jié)果中部,導(dǎo)致程序運(yùn)行失敗凸主。
--keep_mapping_files
添加該參數(shù)橘券,不刪除中間文件中的HMMER或DIAMOND比對(duì)結(jié)果文件。
--report_orthologs
將用于功能注釋的ortholog信息輸出到一個(gè)單獨(dú)的文件中卿吐。
比對(duì)參數(shù):
-m <string> default: hmmer
設(shè)置比對(duì)算法旁舰。可以選擇的值為hmmer和diamond但两。
--hmm_maxhits <int> default: 1
設(shè)置HMMER算法得到的hit結(jié)果數(shù)量鬓梅。
--hmm_evalue <float> default: 0.001
設(shè)置HMMER算法的evalue閾值。
--hmm_score <int> default: 20
設(shè)置HMMER算法的score閾值谨湘。
--hmm_maxseqlen <int> default: 5000
忽略長(zhǎng)度超過(guò)此閾值的query序列。
--hmm_qcov <float> default: disabled
設(shè)置HMMER算法中query序列的最小覆蓋率閾值芥丧。
--dmnd_db <string>
當(dāng)使用DIAMOND算法時(shí)紧阔,設(shè)置DIAMOND數(shù)據(jù)庫(kù)路徑。
--matrix <string> default: BLOSUM62
設(shè)置DIAMOND算法的計(jì)分舉證续担。
--gapopen <int>
設(shè)置DIAMOND算法中打開(kāi)Gap罰分值擅耽。
--gapextend <int>
設(shè)置DIAMOND算法中延長(zhǎng)Gap罰分值。
--seed_ortholog_evalue <float> default: 0.001
進(jìn)行seed ortholog鑒定時(shí)物遇,設(shè)定的evalue閾值乖仇。
--seed_ortholog_score <int> default: 60
進(jìn)行seed ortholog鑒定時(shí),設(shè)定的score閾值询兴。
功能注釋參數(shù): --tax_scope <string>
僅使用指定物種類下的同源基因進(jìn)行功能注釋乃沙。默認(rèn)設(shè)置下是分別對(duì)每條query序列進(jìn)行自動(dòng)調(diào)節(jié)。
--target_orthologs <string>
進(jìn)行功能注釋時(shí)诗舰,設(shè)置選擇什么類型的同源基因進(jìn)行功能注釋警儒。可以選擇的值有:one2one,many2one,one2many,many2many,all眶根。
--go_evidence <string>
設(shè)置使用什么類型的GO terms進(jìn)行功能注釋蜀铲。可以設(shè)置的值有:experimental属百,僅使用源自實(shí)驗(yàn)證據(jù)支持的GO terms记劝;non-electronic,僅使用非電子計(jì)算歸納的Go terms族扰。
性能參數(shù): --cpu <int>
設(shè)置程序使用的CPU線程數(shù)厌丑。
--usemem
添加該參數(shù)钳恕,能將HMM數(shù)據(jù)庫(kù)讀取到內(nèi)存中,增加計(jì)算性能蹄衷。在程序運(yùn)行結(jié)束后忧额,釋放內(nèi)存。
--servermode
添加該參數(shù)愧口,會(huì)自動(dòng)添加--usemem參數(shù)睦番,將HMM數(shù)據(jù)庫(kù)讀取到內(nèi)存中,并一直將HMM數(shù)據(jù)庫(kù)維持到內(nèi)存中耍属,并提供數(shù)據(jù)庫(kù)服務(wù)托嚣,直到強(qiáng)行結(jié)束程序。</pre>