應該是最好的eggnog-mapper功能註釋教程

徐洲更發表於2018-12-09

eggnog-mapper實現功能註釋

eggNOG-Mapper介紹

通常功能註釋的思路都是基於序列相似性找直系同源基因,常見的方法就是BLAST+BLAST2GO, 或者是InterProScan。eggNOG-mapper的作者認為這種方法不夠可靠,畢竟你有可能找到的的是旁系同源基因。近期對多個工具的整體評估發現eggNOG(evolutionary genealogy of genes: Non-supervised Orthologous Groups)在區分旁系同源基因和直系同源基因上表現不錯,因此基於eggNOG資料庫開發了eggNOG-mapper工具,用於對新序列進行功能註釋。

eggNOG-mapper的演算法實現如下:

第一步:序列比對。首先,每條蛋白序列用HMMER3在整理的eggNOG資料庫中搜尋。由於每個HMM匹配都和一個功能註釋的eggNOG OG對應,這一步就提供了初步的註釋資訊。之後,每條蛋白序列用phmmer在最佳匹配的HMM對應的一組eggNOG蛋白中進一步搜尋。最後,每條序列的最佳匹配結果以 seed ortholog 形式存放,用於獲取其他直系同源基因。目前eggNOG HMM資料庫中擁有1,911,745個OG,覆蓋了1,678種細菌,115種古細菌,238種真核物種以及352種病毒。除了HMMER3外,還而可用DIAMOND直接對所有的eggNOG蛋白序列進行搜尋,它的速度更快,適合類似於巨集基因組這類大資料集,或者是已有物種和eggNOG所收集的物種比較近。當然伺服器效能強大的話,還是有限選擇HMMER3.

step1: 序列比對

第二步:推測直系同源基因。每個用於檢索的蛋白序列的最佳匹配序列會對應eggNOG的一個蛋白, 這些蛋白基於預分析的eggNOG進化樹資料庫會提取一組更加精細的直系同源基因。這一步還會根據bit-screo或E-value對結果進行一次過來,剔除同源性不高的結果

step2: 推測直系同源基因

第三步:功能註釋。用於搜尋的蛋白序列對應的直系同源基因的功能描述就是最終的註釋結果。比如說GO, KEGG, COG等。

step3: 功能註釋

安裝

安裝本體eggnog-mapper之前,需要先保證伺服器上已經安裝Python3.7(BioPython模組), wget, HMMER3 和/或 DIAMON,此外你還得保證70G的空間用於存放註釋資料庫和FASTA檔案,對於真核生物至少保證90G的伺服器記憶體。
之後從GitHub上將軟體下載到本地

git clone https://github.com/jhcepas/eggnog-mapper.git

之後需要下載所需要的資料庫。eggNOG提供了107個不同物種的HMM資料庫(xxxNOG)以及三個優化資料庫, euk對應真核生物,bact對應細菌, arch對應古細菌(Archeabacteria), 以及一個病毒資料庫(viruses). 這三個優化資料庫包含了屬於該分類內的所有物種的HMM模型。

cd eggnog-mapper
./download_eggnog_data.py euk

此處下載的是真核生物 。下載過程中,它會反覆詢問你是否要下載某一類資料,我一律選擇是。
如果你的伺服器有多個盤,安裝軟體的分割槽不夠大,可以在資料盤中建立資料夾進行軟連結

cd eggnog-mapper
mkdir /data/database/EGGNOG-DB
rmdir data && ln -s /data/database/EGGNOG-DB data

具體用法

eggnog-mapper用起來非常的簡單,你需要提供蛋白序列作為輸入

#假如我們現在都仍在軟體安裝的路徑下
python emapper.py -i test/p53.fa --output p53_maNOG -d euk
python emapper.py -i test/p53.fa --output p53_maNOG -d maNOG
python emapper.py -i test/p53.fa --output p53_maNOG -d maNOG --usemem --cpu 10

eggnog-mapper預設是以HMMER進行序列搜尋,儘管這可以通過-m diamond更改成DIAMOND,但結果中就會缺少一些資訊列。HMM的搜尋引數,有--hmm_maxhits, --hmm_evalue, --hmm_score, --hmm_qcov--Z, 一般用預設就行了。

-d/--database表示搜尋資料庫的型別,既可以是”euk, bact, arch” 三大類的其中一種,也可以是”eggnog-mapper/data/OG_fasta”中的小類,例如”maNOG”表示的就是哺乳動物的NOG。此外也可以是自定義HMM資料庫, -d /path/to/pfam.hmm

如果伺服器記憶體比較大,執行緒比較多,可以用--usemem--cpu 執行緒數提高執行速度。

--output表示輸出檔案的字首,預設輸出在當前資料夾下,--output_dir可以更改為其他檔案路徑。--resume表示任務重啟後可以跳過之前已經完成的部分, 而--override則表示覆蓋原先的輸出結果。

如果你計劃使用同一個資料庫同時對多個物種進行註釋(大部分人都沒有這種需求),那麼你需要以伺服器模式啟動eggnog-mapper,然後就可以同時啟動多個任務,

# 終端1
python emapper.py -d arch --cpu 10 --servermode
# 新建一個終端
python emapper.py -d arch:localhost:51600 -i test/polb.fa -o polb_arch

結果解讀

eggnog-mapper會生成三個檔案,

  • [project_name].emapper.hmm_hits: 記錄每個用於搜尋序列對應的所有的顯著性的eggNOG Orthologous Groups(OG). 所有標記為”-“則表明該序列未找到可能的OG
  • [project_name].emapper.seed_orthologs: 記錄每個用於搜尋序列對的的最佳的OG,也就是[project_name].emapper.hmm_hits裡選擇得分最高的結果。之後會從eggNOG中提取更精細的直系同源關係(orthology relationships)
  • [project_name].emapper.annotations: 該檔案提供了最終的註釋結果。大部分需要的內容都可以通過寫指令碼從從提取,一共有13列。

[project_name].emapper.annotations每一列對應的記錄如下:

  1. query_name: 檢索的基因名或者其他ID
  2. sedd_eggNOG_ortholog: eggNOG中最佳的蛋白匹配
  3. seed_orholog_evalue: 最佳匹配的e-value
  4. seed_ortolog_evalu: 最佳匹配的bit-score
  5. predicted_gene_name: 預測的基因名,特別指的是類似AP2有一定含義的基因名,而不是AT2G17950這類編號
  6. GO_term: 推測的GO的詞條, 未必最新
  7. KEGG_KO: 推測的KEGG KO詞條, 未必最新
  8. BiGG_Reactions: BiGG代謝反應的預測結果
  9. Annotation_tax_scope: 對該序列在分類範圍的註釋
  10. Matching_OGs: 匹配的eggNOG Orthologous Groups
  11. best_OG|evalue|score: 最佳匹配的OG(HMM模式才有)
  12. COG functional categories: 從最佳匹配的OG中推測出的COG功能分類
  13. eggNOG_HMM_model_annotation: 從最佳匹配的OG中推測出eggNOG功能描述

如果打算做富集分析,用命令列的cut/awk提取對應的列,過濾掉其中未註釋的部分就行了。

推薦閱讀


相關文章