Augustus指南(Trainning部分)
Augustus指南
官方 Tutorial Index
Augustus是一个真核生物基因预测软件,目前有网页服务端和本地版,它基于Hidden-Markov Model(隐马尔科夫链模型HMM)(一个不错的HMM介绍博客)的预测方法,因此需要一个已经研究清楚的物种进行training(学习)之后再对新物种进行prediction(预测),用于trainning的物种应该和需要预测的物种具有较近的亲缘关系
特点:官方介绍
Input:
Trainning:
已知物种序列
核酸序列:fasta格式 ( genome.fa )
蛋白序列:fasta格式 ( proteins.aa )
Prediction
未知基因组序列
核酸序列:fasta格式 ( NewGenome.fa )
Output:
可能用到的其他软件
- Scipio
下载地址中下载Scipio Version 1.4,压缩包中包括perl文件和说明文件 
Scipio是利用蛋白序列标记出基因组结构的软件,提供核酸序列和蛋白序列后,它可以为你解析出基因的结构。它基于BLAT的序列比对功能。scipio可以很好地跨contigs比对。
用途包括:
- 检测序列assembly的正确性
 - 识别外显子区域,可变剪切
 - 用已知物种蛋白序列描述未知物种的基因组结构
 
- Scipio依赖:perl中的YAML module
Ubuntu安装yaml-perl命令: 
sudo apt-get install libyaml-perl
- Scipio依赖:BLAT 下载地址,下载后的文件中有数个可执行文件,请添加进环境变量中,方便Scipio直接调用
 
Blat,全称 The BLAST-Like Alignment Tool,可以称为"类BLAST 比对工具",对于DNA序列,BLAT是用来设计寻找95%及以上相似至少40个碱基的序列。对于蛋白序列,BLAT是用来设计寻找80%及以上相似至少20个氨基酸的序列。速度快,共线性输出结果简单易读。Blat 把相关的呈共线性的比对结果连接成为更大的 比对结果,从中也可以很容易的找到 exons 和 introns。
Trainning Augustus
重要提示:如果是第一次training,按照下面所述的步骤可以正常完成,但是如果效果不佳,官方介绍中有一些小经验,本文没有包含这部分内容
- Augustus基于Hidden-Markov Model(隐马尔科夫链模型)的预测方法,因此需要一个已经研究清楚的物种进行training(学习)之后再对新物种进行prediction(预测),用于trainning的物种应该和需要预测的物种具有较近的亲缘关系或者就是本物种。
 - Trainning的实质是用已知的知识调整模型中的种种参数,因此一般已知的知识必须包含各种可能的情况。具体地说,在预测基因的模型中,用于training的数据就必须拥有是基因的序列以及不是基因的序列(基因间隔区,内含子等)。
 - Trainning的数据会被分为两部分,一部分用于Trainning,另一部分用于检测调整参数后的模型。前者称为training set,后者称为test set。
 
作为用于training Augustus的已知信息,一般可以有以下几种:
- 该物种已经存在的基因结构信息(比如:GenBank中的数据)
 - 该物种ESTs信息加上相对于的基因组信息(可使用PASA)
 - 该物种de novo组装的RNA-seq数据加上对应的基因组数据
 - 该物种已知的蛋白序列和对应的基因组数据
 - 近源物种的基因结构信息
 - 已经Trainning过的模型保存参数集后可以反复使用
 
1. 对于没有直接基因结构的情况,可以使用Scipio制作基因结构文件
如果已经有基因结构信息,且文件格式为Genbank格式的文件(*.gb)可以跳过此步。这种文件包含了:
- 核酸序列
 - CDS编码区域的序列坐标信息
 - UTR信息
 
1.1 Run Scipio
scipio.1.4.pl --blat_output=prot.vs.genome.psl genome.fa proteins.aa > scipio.yaml # takes ~7m
scipio.yaml包含了每个蛋白alignment的细节,可用于下一步提取
- 输入的基因组5M,耗时约7min
 --blat_output=prot.vs.genome.psl的含义就是记录时间。- genome.fa和proteins.aa为fasta格式。
 
1.2 Extract a GFF file,从scipio.yaml中提取GFF (General Feature Format) 基因结构文件
cat scipio.yaml | yaml2gff.1.4.pl > scipio.scipiogff
scipiogff2gff.pl --in=scipio.scipiogff --out=scipio.gff
cat scipio.yaml | yaml2log.1.4.pl > scipio.log     #产生log文件
scipio.gff文件是我们所希望得到的GFF文件,log文件可以帮助检测是否每个蛋白都得到标注。
scipio.gff长这样:
chr2R   Scipio  CDS     900562  900621  1.000   +       0       transcript_id "392"
chr2R   Scipio  CDS     904518  904880  1.000   +       0       transcript_id "392"
chr2R   Scipio  CDS     904940  905131  1.000   +       0       transcript_id "392"
chr2R   Scipio  CDS     905195  905263  1.000   +       0       transcript_id "392"
chr2R   Scipio  CDS     3595076 3596041 1.000   +       0       transcript_id "2517"
...
1.3 可选步骤 可视化基因结构(GBrowse)
GBrowse 下载并配置GBrowse,将GFF文件转化成GBrowse可读的文件。
1.4 将GFF文件转化成Genbank格式的文件
Augustus的etrainning学习软件需要输入Genbank格式的文件,这种文件包含了:
- 核酸序列
 - CDS编码区域的序列坐标信息
 - UTR信息
 
由于大部分的基因结构信息都是GFF或GTF格式,Augustus提供了gff2gbSmallDNA.pl进行格式转化
gff2gbSmallDNA.pl scipio.gff genome.fa 1000 genes.raw.gb
整合gff文件和fasta文件,genes.raw.gb文件中将会有每个基因序列和其1000bp的上下游基因间隔序列。
1.5 去除不适合trainning的基因序列
genes.raw.gb文件已经符合Augustus的要求,但是其中可能包含:
- 可变剪切的基因
 - 缺失启示密码子的基因
 - 缺失终止密码子的基因
 - 非正常的终止密码子(in-frame stop codons)
 
这些序列不适合用于软件的trainning,所以最好去除
etraining --species=generic --stopCodonExcludedFromCDS=true genes.raw.gb 2> train.err
得到问题序列文件train.err
--stopCodonExcludedFromCDS=true选项指将gb文件中的终止密码子视为cds中的一部分,这个选项需要视gb文件的来源而定,非scipio来源的文件可能需要设置为false
train.err长这样:
gene 186 transcr. 1 in sequence chr2R_549753-555284: Initial exon has length < 3!
gene 461 transcr. 1 in sequence chr2R_1034318-1036751: Initial Exon doesn't begin with start codon.
gene 567 transcr. 1 in sequence chr2R_1198437-1201521: Initial Exon doesn't begin with start codon.
gene 4537 transcr. 1 in sequence chr2R_1354359-1361857: Initial Exon doesn't begin with start codon.
gene 4783 transcr. 1 in sequence chr2R_1669860-1673241: Terminal exon doesn't end in stop codon. Variable stopCodonExcludedFromCDS set right?
gene 5161 transcr. 1 in sequence chr2R_2043765-2046183: Single exon gene doesn't begin with atg codon but with ccc
gene 6319 transcr. 1 in sequence chr2R_3734070-3735386: Initial Exon doesn't begin with start codon.
gene 3577 transcr. 1 in sequence chr2R_4767472-4770826: Initial Exon doesn't begin with start codon.
使用下面的命令来筛选掉这些问题序列:
cat train.err | perl -pe 's/.*in sequence (\S+): .*/$1/' > badgenes.lst
filterGenes.pl badgenes.lst genes.raw.gb > genes.gb
grep -c "LOCUS" genes.raw.gb genes.gb
# genes.raw.gb:594    原来序列有594个基因
# genes.gb:586           筛选后还剩586个
badgenes.lst为问题基因序列
genes.gb为没有问题的基因,依然是gb格式
2. 将用于Trainning的基因结构信息分为Trainning set和test set
随机的将genes.gb文件分为两个部分
randomSplit.pl genes.gb 100
该命令会生成genes.gb.test文件,它包含100条序列。
同时会生成genes.gb.trains文件,包含剩下的序列。
- 为了满足test的统计学意义,test set必须足够大(100-200 genes),才能起到检测作用。
 - test set的选择必须满足随机,不能只是选择文件最前面100个或者最后面100个genes
 randomSplit.pl是Augustus中包含的软件
3. 为你的物种产生meta参数文件
- 模型中有两类参数:meta parameters 和 parameters(一般参数)。
 - 前者包括拼接位点模型窗口的大小(the size of the window of the splice site models)、马尔科夫模型顺序(the order of the Markov model)等;
 - 后者则是比如拼接位点模式的分布(the distribution of splice site patterns)、编码区非编码区k-mer概率(the k-mer probabilities of coding and noncoding regions)等。
 - 一般来说meta parameters决定了parameters的算法,而且meta的数量比较少,而parameters则非常多。
 - Training本质是调整模型中的parameters,但是不会改变meta parameters。
 
new_species.pl --species=bug
假设我们的物种叫bug
这条命令会在环境变量AUGUSTUS_CONFIG_PATH指定的位置建立一系列文件和文件夹
就像这样:
creating directory /home/mario/augustus/trunk/config/species/bug/ ...
creating /home/mario/augustus/trunk/config/species/bug/bug_parameters.cfg ...
creating /home/mario/augustus/trunk/config/species/bug/bug_weightmatrix.txt ...
creating /home/mario/augustus/trunk/config/species/bug/bug_metapars.cfg ...
...
bug_parameters.cfg文件包含了meta parameters和parameters,还包括一些对output文件输出的控制选项。
编辑bug_parameters.cfg文件,将stopCodonExcludedFromCDS选项改为ture
4. 第一次Training
4.1 Trainning
这里将进行第一次Training,training所使用的meta parameters是默认值。
etraining --species=bug genes.gb.train
这条命令将会在环境变量AUGUSTUS_CONFIG_PATH指定的位置$AUGUSTUS_CONFIG_PATH/species/bug建立或者更新一些文件,这些文件是exon, intron和intergenic region的parameter文件(training的结果文件)
ls -ort $AUGUSTUS_CONFIG_PATH/species/bug/
展示出与模型相关的各个参数保存文件,
其中:bug_{intron,exon,igenic}.pbl是新生成的文件
4.2 Testing
那么,我们现在就可以使用之前划分出来的test set来检测Trainning的效果
Test set的文件为genes.gb.train
augustus --species=bug genes.gb.test | tee firsttest.out # takes ~1m
- 这条命令对genes.gb.test中的所有核酸序列信息进行了预测,这里不会使用其中的结构信息的。
 - 之后又将预测信息和gb文件给出的结构信息进行了比较,从而评价trainning的模型。
 - 产生文件为firsttest.out*
 
grep -A 22 Evaluation firsttest.out
该命令展示了评价部分,输出这样的表格:
*******      Evaluation of gene prediction     *******
---------------------------------------------\
                 | sensitivity | specificity |
---------------------------------------------|
nucleotide level |       0.975 |        0.89 |
---------------------------------------------/
----------------------------------------------------------------------------------------------------------\
           |  #pred |  #anno |      |    FP = false pos. |    FN = false neg. |             |             |
           | total/ | total/ |   TP |--------------------|--------------------| sensitivity | specificity |
           | unique | unique |      | part | ovlp | wrng | part | ovlp | wrng |             |             |
----------------------------------------------------------------------------------------------------------|
           |        |        |      |                115 |                 76 |             |             |
exon level |    511 |    472 |  396 | ------------------ | ------------------ |       0.839 |       0.775 |
           |    511 |    472 |      |   40 |    5 |   70 |   43 |    3 |   30 |             |             |
----------------------------------------------------------------------------------------------------------/
----------------------------------------------------------------------------\
transcript | #pred | #anno |   TP |   FP |   FN | sensitivity | specificity |
----------------------------------------------------------------------------|
gene level |   118 |   100 |   53 |   65 |   47 |        0.53 |       0.449 |
----------------------------------------------------------------------------/
表格中有三个子表格:
- nucleotide level,sensitivity(预测到的百分率),specificity(其中正确的百分率)
 - exon level, #pred total/unique(预测得到unique外显子总数),#anno total/unique(实际unique外显子总数),TP(正确的预测),FP(假阳性),FN(假阴性)
 - gene level
 - 100个基因中,预测到53个
 - 83.9%的外显子被预测到
 - 77.5%的外显子预测成功
 
5. optimize_augustus.pl的优化
- 脚本optimize_augustus.pl可以通过不断迭代Tranning和Testing的过程,根据模型评价自动修改
 *_parameters.cfg文件中的meta parameters,使meta parameters的取值最优。- 这个脚本的运行会非常费时间,而且最终的效果一般只能提高准确度几个百分点,慎重使用
 - 在本例中Trainning基因组越5M,耗时越1d
 
使用此脚本augustus和etraining命令必须在环境变量中
5.1 自动调整meta parameters
optimize_augustus.pl --species=bug genes.gb.train  # takes ~1d
本句命令最好加上nohup
命令完成后,meta parameters调整完毕。
5.2 retraining Augustus
meta parameters调整好后必须重新Trainning模型,否则没有任何意义。
etraining --species=bug genes.gb.train
同样你可以进行检验
augustus --species=bug genes.test.gb
如果此时你的gene level的sensitivity还是低于20%说明Trainning set不够大,请添加数据。
如果你获得了满意的Trainning结果,请开始prediction吧
Augustus指南(Trainning部分)的更多相关文章
- Augustus 进行基因注释
		
目前的从头预测软件大多是基于HMM(隐马尔科夫链)和贝叶斯理论,通过已有物种的注释信息对软件进行训练,从训练结果中去推断一段基因序列中可能的结构,在这方面做的最好的工具是AUGUSTUS它可以仅使 ...
 - augustus, gene prediction, trainning
		
做基因组注释 先用augustus训练,然后再用maker做基因注释 augustus提供一些训练好的,如果有和你的物种非常接近的,直接用提供的,没有的话再自己训练. 网址: http://bioin ...
 - GlimmerHMM指南
		
GlimmerHMM指南 官方用户手册 GlimmerHMM是一种De novo的新基因预测软件. 新基因发现基于Generalized Hidden Markov Model (GHMM). Gli ...
 - JavaScript权威指南 - 函数
		
函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...
 - UE4新手之编程指南
		
虚幻引擎4为程序员提供了两套工具集,可共同使用来加速开发的工作流程. 新的游戏类.Slate和Canvas用户接口元素以及编辑器功能可以使用C++语言来编写,并且在使用Visual Studio 或 ...
 - JavaScript权威指南 - 对象
		
JavaScript对象可以看作是属性的无序集合,每个属性就是一个键值对,可增可删. JavaScript中的所有事物都是对象:字符串.数字.数组.日期,等等. JavaScript对象除了可以保持自 ...
 - JavaScript权威指南 - 数组
		
JavaScript数组是一种特殊类型的对象. JavaScript数组元素可以为任意类型,最大容纳232-1个元素. JavaScript数组是动态的,有新元素添加时,自动更新length属性. J ...
 - const extern static 终极指南
		
const extern static 终极指南 不管是从事哪种语言的开发工作,const extern static 这三个关键字的用法和原理都是我们必须明白的.本文将对此做出非常详细的讲解. co ...
 - Atitit.研发管理软件公司的软资产列表指南
		
Atitit.研发管理软件公司的软资产列表指南 1. Isv模型下的软资产1 2. 实现层面implet1 3. 规范spec层1 4. 法则定律等val层的总结2 1. Isv模型下的软资产 Sof ...
 
随机推荐
- Redis:学习笔记-01
			
Redis:学习笔记-01 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 1. Redis入门 2.1 ...
 - 使用json-path解析json
			
在我们的日常开发中,有时候需要从一个json字符串中获取一个值,或者从一段json字符串中获取到某些值,如果先使用Gson或Jackson转换成java对象在获取值,有些时候是很麻烦的,那么有没有一种 ...
 - 计算机网络传输层之TCP可靠传输
			
文章转自:https://blog.csdn.net/weixin_43914604/article/details/105524592 学习课程:<2019王道考研计算机网络> 学习目的 ...
 - Docker 安装 MySQL8
			
1. 环境准备 创建挂载数据目录和配置文件 mkdir -p /mnt/mysql/data /etc/mysql/conf touch /etc/mysql/conf/my.cnf 2. 拉取镜像 ...
 - git merge远程合并
			
当某个分支上的开发工作完成后需要将其合入主分支master 但是在提交合并前我们自己最好做一次衍合,目的是检测是否有冲突的风险,如果有应该在本分支先解决冲突然后在提交合并. 否则解决冲突的工作就全部转 ...
 - hdu 5183 Negative and Positive (NP)(STL-集合【HASH】)
			
题意: When given an array (a0,a1,a2,⋯an−1) and an integer K, you are expected to judge whether there i ...
 - cf Inverse the Problem (最小生成树+DFS)
			
题意: N个点.N行N列d[i][j]. d[i][j]:结点i到结点j的距离. 问这N个点是否可能是一棵树.是输出YES,否则输出NO. 思路: 假设这个完全图是由一棵树得来的,则我们对这个完全图求 ...
 - 用STM32定时器中断产生PWM控制步进电机
			
控制步进电机可以使用PWM.定时器中断.延时,这里用的就是定时器中断来让它转动. 一.硬件部分1.使用的硬件板子用的是正点原子的STM32F103 mini板,驱动器是DM420(DM420驱动器资料 ...
 - 谷歌chrome多个相同用户登陆同一个机器多开配置
			
创建快捷方式,目标中填写:路径+参数如下所示即可 参数:--user-data-dir=%LOCALAPPDATA%\Google\Chrome\%SessionName%
 - 基于消息队列 RocketMQ 的大型分布式应用上云最佳实践
			
作者|绍舒 审核&校对:岁月.佳佳 编辑&排版:雯燕 前言 消息队列是分布式互联网架构的重要基础设施,在以下场景都有着重要的应用: 应用解耦 削峰填谷 异步通知 分布式事务 大数据处理 ...