使用MAKER进行基因注释(高级篇之SNAP模型训练)

训练 ab initio 基因预测工具(以SNAP为例)

对于一个新的物种而言,你大概率是没有一个高质量的基因模型去进行基因预测。但是我们可以利用EST序列(少部分物种估计有)、二代测序数据、同源物种蛋白序列,先直接用Maker做基因注释,尽管得到的模型可能不是特别的完美,但可以作为输入反复迭代运行Maker,从而提高最终的表现。

这次使用的是下载的练习数据集(见附录)

cd ~/maker_tutorial/example_02_abinitio

同样,让我们先构建配置文件,并修改如下配置

maker -CTL
vim maker_opts.ctl
# modify the following line
genome=pyu_contig.fasta
est=pyu_est.fasta
protein=sp_protein.fasta
est2genome=1
protein2genome=1

这里的"est2genome"和"protein2genome"表示直接从EST序列和同源但序列中推测基因结构,当然这肯定不靠谱。不过没有关系,我们的目标是将其作为输入用于训练而已。

运行预测程序,大约需要20分钟

~/opt/biosoft/maker/bin/maker &> maker.log &

那么下一步就是收集所有的GFF文件,整理成SNAP所需的ZFF格式

mkdir snap
cd snap
~/opt/biosoft/maker/bin/gff3_merge -d ../pyu_contig1.maker.output/pyu_contig1_master_datastore_index.log
~/opt/biosoft/maker/bin/maker2zff pyu_contig1.all.gff

于是我们就会在snap文件下得到"genome.ann"和"genome.dna". 在这两个文件的基础上,我们就可以参考SNAP的文档开始训练

可以先用fathom genome.ann genome.dna -gene-stats了解基因的一些信息,比如说这里的测试数据集就有153个基因,几乎平均的分布在正负链上。

1 sequences
0.525725 avg GC fraction (min=0.525725 max=0.525725)
153 genes (plus=79 minus=74)
5 (0.032680) single-exon
148 (0.967320) multi-exon
130.782104 mean exon (min=3 max=704)
87.851593 mean intron (min=61 max=384)

此外还可以用fathom genome.ann genome.dna -validate检查下是否有明显的错误,这里的153个基因有106个warning,警告类型粗略看了一眼基本都是CDS不完整。

后续就可以开始参数预测。步骤是,先用fathom genome.ann genome.dna -categorize 1000将序列分类,这里的1000表示基因两侧会额外有1000bp的序列。该参数推荐使用基因一半的长度,如果基因比较稠密则要调低。这一步会生成如下文件:

  • alt.ann, alt.dna (genes with alternative splicing)
  • err.ann, err.dna (genes that have errors)
  • olp.ann, olp.dna (genes that overlap other genes)
  • wrn.ann, wrn.dna (genes with warnings)
  • uni.ann, uni.dna (single gene per sequence)

这里只用最后一类基因,也就是每个序列上只有一个基因。用fathom uni.ann uni.dna -export 1000 -plus只输出unigene中正链基因,这一步同样会生成四个文件

  • export.aa 每个基因的蛋白序列
  • export.ann 正链的基因结构
  • export.dna 正链的DNA
  • export.tx 每个基因的转录本

接着让forge负责预测参数, 由于输出会很多,所以建议创建个文件夹

mkdir params
cd params
forge ../export.ann ../export.dna
cd ..

最后是hmm-assembler.pl构建HMM,即基因模型文件, hmm-assembler pyu params > pyu1.hmm

完成SNAP的模型构建后,修改"maker_opts.ctl"用以增加该文件,并不再用est和protein直接推测基因结构。

snaphmm=pyu1.hmm
est2genome=0
protein2genome=0

再一次运行maker

~/opt/biosoft/maker/bin/maker &> maker.log &

这次结果会比上一次有很明显的提升,你可以重复上面的代码从而进一步提高SNAP的模型。

你可能感兴趣的:(使用MAKER进行基因注释(高级篇之SNAP模型训练))