準備階段
訓練SNAP模型,需要準備三個文件,分別是參考基因組序列,組裝的轉錄本序列和同源蛋白序列。
對於參考基因組序列,我們要保證N50需要超過預期基因長度的中位數,否則註釋效果不好。不過目前的基因組在三代測序的加持下,基本上都不是問題。
對於同源蛋白, 建議只用UniProt/Sprot的人工檢查過的高質量蛋白序列,而不是盲目參考文獻,使用近源物種的所有蛋白。除非你的近源物種都是模式物種,蛋白序列可靠性高,否則用錯誤的輸入進行訓練,數據越多反而錯的越多。
我們可以在ftp://ftp.uniprot.org/pub/databases/uniprot/current_release/knowledgebase/taxonomic_divisions/選擇合適的uniprot_sprot數據, 然後將其輸出爲fasta格式。以植物爲例
wget ftp://ftp.uniprot.org/pub/databases/uniprot/current_release/knowledgebase/taxonomic_divisions/uniprot_sprot_plants.dat.gz
zcat uniprot_sprot_plants.dat.gz |\
awk '{if (/^ /) {gsub(/ /, ""); print} else if (/^AC/) print ">" $2}' |\
sed 's/;$//'> protein.fa
對於轉錄本,我們通常會測一些轉錄組數據,有三種策略可以得到轉錄本。(這裏暫時不考慮三代全長轉錄本)
- Trinity重頭組裝轉錄本
- 使用STAR + Trinity 獲取轉錄本
- 使用STAR + StringTie + gffread 獲取轉錄本
對於這三種策略,不推薦策略一,因爲在有參考基因組的情況下,策略二不但計算效率高,而且能避免組裝錯誤(多倍體等位基因之間相似度高)。對於策略二和策略三,我會推薦策略三。因爲對於靠的比較近的基因,Trinity很可能會把這兩個基因裝成一個。
並且利用該轉錄本作爲輸入訓練SNAP模型,之後以SNAP模型作爲輸入,將轉錄組和同源蛋白作爲證據而不是直接用作模型,我們再檢查maker的結果, 也會發現使用StringTie進行組裝的結果纔是對的。
因此使用策略二不但計算量大,而且有些情況下還會導致過近的轉錄本錯誤融合,反而影響了最終效果。儘管你可以通過調整參數,或者使用鏈特異性測序的方式來來優化結果,但STAR + StringTie 的組合同樣也可以這樣子做,因此最終我還是推薦策略三。
當然,這是我定性通過IGV瀏覽結果得出的結論,樣本小,結論未必可靠,僅供參考。
訓練階段
假設我們準備的三個文件分別命名爲, genome.fa, protein.fa 和不同組織來源的stringtie組裝後的轉錄本。
接着使用maker -CTL
新建配置文件, 設置如下選項
genome=genome.fa
est=組織1.fa,組織2.fa,組織3.fa
protein=protein.fa
est2genome=1
protein2genome=1
然後使用mpiexec -n 線程數 maker &> run.log
運行程序。
處理結果後,我們新建一個snap目錄訓練模型
mkdir snap && cd snap
gff3_merge -d ../genome.maker.output/genome_master_datastore_index.log
使用makerzff構建輸入文件
maker2zff -c 0.8 -e 0.8 -o 0.8 -x 0.2 genome.all.gff
maker2zff
會根據AED(-x)和QI值進行過濾,其中QI值一共有9項,每一項的含義如下
- Length of the 5' UTR
- Fraction of splice sites confirmed by an EST alignment (
-c
) - Fraction of exons that overlap an EST alignmetn(
-e
) - Fraction of exons that overlap EST or Protein alignments(
-o
) - Fraction of splice site confrimed by a ab-initio prediction(
-a
) - Fraction of exons that overlap a ab-initio prediction(
-t
) - Number of exons in the mRNA
- length of the 3' UTR
- Length of the protein sequence produced by the mRNA (
-l
)
如果QI值第二項爲-1,表示沒有支持該剪切位點的EST證據.
接着構建模型
fathom -categorize 1000 genome.ann genome.dna
fathom -export 1000 -plus uni.ann uni.dna
forge export.ann export.dna
hmm-assembler.pl snap . > ../snap.hmm
修改配置,然後重新運行。MAKER會自動處理衝突的部分,避免重複序列屏蔽等的一些重複計算。
genome=genome.fa
est=Trinity-GG.fasta
protein=protein.fa
snap=snap.hmm
est2genome=0
protein2genome=0
根據輸出結果再一次訓練模型
mkdir snap2 && cd snap2
gff3_merge -d ../genome.maker.output/genome_master_datastore_index.log
fathom -categorize 1000 genome.ann genome.dna
fathom -export 1000 -plus uni.ann uni.dna
forge export.ann export.dna
hmm-assembler.pl snap . > ../snap2.hmm
通常迭代2-3次就夠了,畢竟我們可能還會訓練AUGUSTUS和GeneMark模型,通過比較多個模型來得到最終結果。
關於SNAP軟件細節可以參考使用MAKER進行基因註釋(高級篇之SNAP模型訓練)
推薦閱讀: