記錄下braker2的使用要點,以備忘記。
流程使用
braker2有很多流程,根據你的數據:組裝的基因組、轉錄組、蛋白(同源,包括近緣或遠緣)選擇不同流程,官網有說明:
https://github.com/Gaius-Augustus/BRAKER
現在的動植物組裝,大多數都含有以上三類數據吧,因此可選擇如下流程,用公共數據庫OrthoDB中的直系同源蛋白,根據自己的物種選擇,有動物植物微生物等,如我選擇植物就有300多萬條序列。
作者指出,braker2並非證據越多越好,該流程還是不夠穩定(尤其是對中小基因組)。
整個流程你可以分步,即分別預測轉錄組和蛋白數據,得到hints,再使用braker進行最終整合和預測。或者只對轉錄組或者蛋白數據進行預測。比如我先用ProtHint單獨對OrthoDB進行預測,這樣處理是很快的,三百多萬條序列3-4小時即可跑完。最后得到的是prothint_augustus.gff
可用於后續輸入文件。
cat Rawdata/* >proteins.fasta
/ProtHint-2.6.0/bin/prothint.py genome.fa proteins.fasta --workdir test --threads 40
可參考:
https://github.com/gatech-genemark/ProtHint/tree/master/example
braker流程為:
braker.pl --cores 48 --species=test_orthodb-2 \
--genome=genome.softmasked.fa \
--softmasking
--bam=A.bam,B.bam \
--hints=prothint_augustus.gff \
--etpmode \
--gff3
作者建議用--softmasking 基因組
也可以將所有數據放到腳本中,一步到位。速度也還可以,調用了spaln和diamond等(運行時如果沒找到相關軟件路徑,需要你export PATH臨時指定一下),如:
export GENEMARK_PATH=/path/gmes_linux_64
export PATH=/path/gmes_linux_64/ProtHint/bin:/path/GUSHR:$PATH
braker.pl --cores 48 --species=test_orthodb-2 \
--genome=genome.softmasked.fa \
--softmasking
--bam=A.bam,B.bam \
--prot_seq=proteins.fa \
--gff3
建議還是看官網吧,我描述的比較片面
另一個可能更實用的流程是:
可用genomeThreader預測近緣物種同源蛋白。速度會比較慢,不建議用exonerate,巨慢無比。
braker.pl --cores 48 --species=homodb \
--genome=genome.softmasked.fa \
--softmasking
--bam=A.bam,B.bam \
--prot_seq=proteins.fa \
--prg=gth \
--gff3
另外如果你想要預測UTR,braker得到的gtf/gff文件默認是沒有這類信息的。則需要調用GUSHR,參數中添加--addUTR=on
。最終得到的gushr.gtf即是包含了UTR的結果文件。
問題
braker還不是很成熟,運行過程中可能遇到各種問題。
這是官網的一些建議:
- 使用高質量基因組。組裝很碎的基因組不僅耗時,還影響准確性
- 染色體或scaffold名稱不宜過長且不含
%&!*(){})
等特殊字符。 - 使用軟屏蔽基因組好於硬屏蔽基因組。
- 檢查物種是否具有進化分支特征。
- 檢查基因預測結果,如UCSC瀏覽器。
我個人的一些記錄:
- 預測結果文件braker.gtf中,轉錄本和基因ID,前面可能會自動加上
file_1_file_1_
,如g4417.t1
變為file_1_file_1_g4417.t1
,導致生成的gff(或者你用其他軟件,如augustus轉換腳本gtf2gff.pl,實際上你在參數中指定--gff3,流程調用的也是agustus/gtf2gff.pl)轉化得到的gff3文件中沒有基因特征。所以,如果你用的結果是braker.gtf,含有這個問題,必須人為去掉。augustus.hints.*
則是正常,目前沒發現這個問題。
- 第二個比較關心的問題是,braker流程出來一堆結果,我到底該用哪個?雖然官網有一些解釋,但總有些不能理解。
幾個比較關鍵的結果: augustus.hints.* 是AUGUSTUS最終蛋白hints結果。
而braker.gtf/gff3是 AUGUSTUS和GeneMark-EP+預測(braker流程中的蛋白預測)的並集,因此該結果是高敏感性低特異性(更多基因被預測以及更多假陽性)。
總體來說,二者結果是相近的,如果側重於敏感性,則用braker.gtf結果。否則用augustus。(個人建議還是用augustus的結果,相當於二次預測)
- 另外,在gtf2gff.pl轉換中,還可能會遇到
[gtf2gff.pl: transcript jg1.t1 has conflicting gene parents: and jg1](https://github.com/Gaius-Augustus/Augustus/issues/39)
類似錯誤。作者雖然寫了一個臨時腳本https://github.com/Gaius-Augustus/Augustus/blob/master/scripts/fix_joingenes_gtf.pl 來解決這個問題,但並未解決我的問題。
總之,braker2流程雖然使用簡單(相對於evm,maker等),但它的結果還是差異很大的,預測的基因數目普遍較多。文章引用率還不是太高,使用需要謹慎。
僅嘗試使用體驗,后續待補充。