第—个步骤是正向Blast,其过程和常规的Blast—样,由query_l得到subject_l
第二个步骤是反向Blast,将之前正向Blast得到的subject_l作为反向Blast的query,即query_2,再执行Blast程世差卜序,得到subject_2
第三步是筛选,将subject_2排序后,按照query_2进行搜穗分块,然后将对应的query—1的名称和每个query_2块中最佳匹配的subject_2的名称庆历进行比较。如果这个最佳的subject_2和对应的query—1完全一样,便将与这个subject一2对应的query一2纪录,这个query_2便是我们需要的结果。
序列比对是将两个或多个序列排列在一起,标明其相似之处。使用间隔表示未比对上,比对上的相同或相似的符号排列在同一列上。序列比对是生物信息学以及基因组学与进化的基础之一,其基本思想是:在生物学中普遍存在的序列决定结构、结构决定功能的规律,通过将核酸序列或者蛋白质序列的一级结构看成由基本字符构成的字符串,通过序列比对我们可以找到相似的序列并由此发现生物序列中的功能、结构和进化信息。全局比对:全局比对是指将参与比对的两条序列里面的所有字符进行比对。全局比对在全局范围内对两条序列进行比对打分,找出最佳比对,主要被用来寻找关系密切的序列。其可以用来鉴别或证明新序列与已知序列家族的同源性,是进行分子进化分析的重要前提。其代表是Needleman-Wunsch算法。
局部比对:与全局比对不同扰袜,局部比对不必对两个完整的序列进行比对,而是在每个序列中使用某些局部区域片段进行比对。其产生的需求在于、人们发现有的蛋白序列虽然在序列整体上表现出较大的差异性,但是在某些局部区域能独立的发挥相同的功能,序列相当保守。这时候依靠全局比对明显不能得到这些局部相似序列的。其次,在真核生物的基因中,内含子片段表现出了极大变异性,外显子区域却较为保守,这时候全局比对表现出了其局限性,无法找出这些局部相似性序列。其代表是Smith-Waterman局部比对算法。
双重序列比对:双序列比对是指对两条序列M和N进行比对,找到其相似性关系,这种寻找生物序列相似性关系的过程被称为双序列比对。其算法可以主要分成基于全局比对的Needleman-Wunsch算法和基于局部比对的Smith-Waterman局部比对算法
多重序列比对:多序列比对是双序列比对推广,即把两个以上字符序列对齐,逐列比较其字符的异同,使得每一列字符尽可能一致,以发现其共同的结构特征的方法称为多序列比对。多序列比对算法可以分成渐进法和同步法。其可以发现不同的序列之间的相似部分,从而推断它们在结构和功能上的相似关系,主要用于分子进化关系,预测蛋白质的二级结构和三级结构、估计蛋白质折叠类型的总数,基因组序列分析等。
基因组比对:是多序列比对的一种特例,指对基因组范围内的序列信息进行比对的过程。通过对不同亲缘关系物种的基因组序列进行比较,能够鉴定出编码序列、非编码调控序列及给定物种独有的序列。而基因组范围之内的序列比对,可以了解不同物在核苷酸组成、同线性关系和基因顺序方面的异同,进而得到基因分析预测与定位、生物系统发生进化关系等方面的信息。
BLAST:BLAST[1](Basic Local Alignment Search Tool)是在在1990年由Altschul等人提出的双序列局部比对算法,是一套在蛋白质数据库或DNA数据库中进行相似性比较的分析工具。BLAST是一种启发式算法,用于在大型数据库中寻找比对序列,是一种在局部比对基础上的近似比对算法,可以在保持早李罩较高精度的情况下大大减少程序运行的时间。
算法思想描述:
双重序列比对主要分成以Needleman-Wunsch算法为代表的全局比对和以Smith-Waterman局部比对算法为代表的局部比对,BLAST是局部比对的一种推广。多重比对算法可以主要分成动态规划算法、随机算法、迭代法和渐进比对算法。
(1)双重序列比对:
Needleman-Wunsch算法:该算法是基于动态规划思想的全局比对的基本算法,动态规划的比对算法的比对过程可以用一个以序列S为列,T为行的(m+1)×(n+1)的二维矩阵来表示,用
sigma表示置换矩阵。
在计算完矩阵后,从矩阵的右下角单元到左上单元回溯最佳陆闹路径(用箭头表示),根据最佳路径给出两序列的比对结果。其中,斜箭头表示2个残基匹配,水平箭头表示在序列S的相应位置插入一个空位,垂直方向的箭头表示在序列T的相应位置插入一个空位。
Smith-Waterman算法:该算法是一种用来寻找并比较具有局部相似性区域的动态规划算法,这种算法适用于亲缘关系较远、整体上不具有相似性而在一些较小的区域上存在局部相似性的两个序列。该算法的基本思想是:使用迭代方法计算出两个序列的相似分值,存在一个得分矩阵M中,然后根据这个得分矩阵,通过动态规划的方法回溯找到最优的比对序列。与全局比对相比,这种算法的改变是把矩阵单元值为负者一律取为0,这是因为分值为负的比对丧失了比对的生物学意义,因此把得分为负值的子序列丢弃。
BLAST: BLAST算法的基本思想是通过产生数量更少的但质量更好的增强点来提高比对的速度。算法的原理主要分为以下五步:(1)过滤:首先过滤掉低复杂度区域,即含有大量重复的序列;(2)Seeding:将Query序列中每k个字组合成一个表,即将一个序列拆分成多个连续的‘seed words’(通常蛋白质k=3,核酸k=11);(3)比对:列出我们所关心的所有可能的字组,再配合置换矩阵给出高分值的字组并组织成快速搜索树结构或者哈希索引,因此此步骤可以快速搜索出大数据集中的所有匹配序列,找到每个seed words在参考序列中的位置;(4)延伸:当找到seed words的位置后,接下来需要将seed word延伸成长片段,延伸过程中,得分值也在变化,当得分值小于阈值时即停止延伸,最后得到的片段成为高分片段对,HSP(High-scoring segment pair);(5)显著性分析,最后我们使用如下公式计算E值,E值衡量了在随机情况下,数据库存在的比当前匹配分数更好的比对的数目,因此可以用该值作为指标评价HSP比对序列的可信度。
其中,m是数据库长度,n是query的长度,S是HSP分数,其他两个参数是修正系数。
(2)多重序列比对
动态规划算法:其基本思想是将一个二维的动态规划矩阵扩展到三维或者多维,多序列比对的积分是n个序列中两两进行比对所得积分之和。矩阵的维度反映了参与比对的序列数。这种方法对计算资源要求比较高[6]。
随机算法:主要包括遗传算法和模拟退火算法,遗传算法是一类借鉴生物界进化规律演化来的全局意义上的自适应随机搜索方法。当用遗传算法进行生物序列分析时,每一代包含固定数量的个体,这些个体用他们的适应度来评价。变异则模拟了生物进化过程中的偶然残基突变现象。对产生的新一代群体进行重新评价、选择、交叉、变异,如此循环往复,使群体中最优个体的适应度不断提高,直到达到一个阈值,算法结束。模拟退火的基本思想是用一物质系统的退火过程来模拟优化问题的寻优方法,当物质系统达到最小能量状态时,优化问题的目标函数也相应地达到了全局最优解。这两种方法都是对构造好的目标函数进行最优解搜索,但实际比对效果并不好[6,7]。
迭代法:迭代法的代表是Muscle[8], Muscle是一个新的渐进比对和迭代比对的综合算法,主要由两部分构成,第一部分是迭代渐进比对:第一次渐进比对的目的是快速产生一个多序列比对而不强调准确率,以此为基础再对渐进比对进行改良。经过两次渐进比对,形成一个相对准确的多序列比对;第二部分是迭代比对:该过程类似于Prrp算法[9],即通过不断的迭代,逐步优化最终比对结果。其主要特点包括:使用kmer counting进行快速的距离测量,使用一个新的图谱比对打分函数进行渐进比对,使用依赖于数的有限分隔进行细化。
渐进比对算法:该算法以Feng和Doolittle提出的最为经典[10]。渐进比对算法的基本思想是迭代地利用两序列动态规划比对算法,先由两个序列的比对开始,逐渐添加新序列,直到所有序列都加入为止。但是不同的添加顺序会产生不同的比对结果。确定合适的比对顺序是渐进比对算法的一个关键问题。通常,整个序列的比对应该从最相似的两个序列开始,由近至远逐步完成。作为全局多序列比对的渐进比对算法有个基本的前提假设:所有要比对的序列是同源的,即由共同的祖先序列经过一系列的突变积累,并经自然选择遗传下来的,分化越晚的序列之间相似程度就越高。因此,在渐进比对过程中,应该对近期的进化事件比远期的进化事件给予更大的关注。由于同源序列是进化相关的,因此可以按着序列的进化顺序,即沿着系统发育树(指导树)的分支,由近至远将序列或已比对序列按双序列比对算法逐步进行比对,重复这一过程直到所有序列都己添加到这个比对中为止[10]。其三个步骤为:(1)利用双序列比对方法对所有的序列进行两两比对,得到相似性分值;(2)利用相似性矩阵(或距离矩阵)产生辅助导向树;(3)根据导向树进行渐进比对。渐进比对算法是最常用、简单又有效的启发式多序列比对方法,它所需时间较短、所占内存较小,其算法很多,主要有CLUSTAL W, T-Coffee和DiAlign等,其中 CLUSTAL W应用最广泛。
应用:
类型+应用
双重序列对比:判断两个序列的同源性和一致性。(1)全局多序列比对可以鉴别或证明新序列与己有序列家族的同源性帮助预测新蛋白质序列的二级和二级结构,是进行分子进化分析的重要前提。适合序列相似性较高,序列长度近似时的比对;(2)局部比对考虑序列部分区域的相似性。局部多序列比对可以用来刻画蛋白质家族和超家族。适合于未知两个序列相似程度的,可能存在一些片段极其相似而另一些片段相异的序列比对情况。
多重序列比对:多重比对经常用来研究序列间的进化关系,构建进化树;探究序列间的保守性。主要用于分子进化关系,预测蛋白质的二级结构和三级结构、估计蛋白质折叠类型的总数,基因组序列分析等。
基因组比对:通过对不同亲缘关系物种的基因组序列进行比较,能够鉴定出编码序列、非编码调控序列及给定物种独有的序列。而基因组范围之内的序列比对,可以了解不同物在核苷酸组成、同线性关系和基因顺序方面的异同,进而得到基因分析预测与定位、生物系统发生进化关系等方面的信息。
其中,BLAST作为最重要的比对工具,意义特殊,拿出来单独讨论。BLAST可以分成Basic BLAST和 Specialized BLAST, BLAST包括常规的nucleotide blast, Protein blast和Translating blast;Specialize blast可以对特殊生物或特殊研究领域的序列数据库进行检索。
Blast的运行方式是先用目标序列建数据库(这种数据库称为database,里面的每一条序列称为subject),然后用待查序列(query)在database中搜索,每一条query与database中的每一条subject都要进行双序列比对,从而得出全部比对结果。Blast是一个继承的程序包,通过调用不同的比对模块,blast实现了物种可能的序列比对方式:
blastp:蛋白序列与蛋白库做比对。
blastx:核酸序列对蛋白库的比对,先将核酸序列翻译成蛋白序列(根据相位可以翻译成6种可能的蛋白序列),然后再与蛋白库作比对。
blastn:核酸序列对核算库的比对。
tblastn:蛋白序列对核算库的比对,将库中的核酸序列翻译成蛋白序列,然后进行比对。
tblastx:核酸序列对核算库在蛋白级别的比对,将库唤神和待查序列都翻译成蛋白序列,然后对蛋白序列进行比对。
Blast提供了核酸和蛋白序列之间所有可能的比对方式,同时具有较快的比对速度和较高的比对精度,因此在常规双序列比对分析中应用最为广泛,可以毫不夸张的说,blast是做比对基因组学乃至整个生物信息学研究所必须掌握的一种比对工具。
使用:
blast的运行分为两个步骤:第一,建立目标序列的数据库;第二,做blast比对。
1、运行建库程序formatdb:
建库的工程是建立目标序列的索引文件,所以程序是formatdb。程序允许的输入格式是FASTA或者ASN.1格式,通常我们使用的FASTA格式的序列作为输入。用于建库的FAST序列是db.seq, formatdb的基本命令是:
formatdb –i db.seq [-options]
常用参数:
-p (T/F): -p参数的意义是选择建库的类型,“T”表示蛋白库,“F”表示核算库,缺省值为“T”
-o(T/F): -o参数的意义是判断是否分析序列名并建立序列名索引。“T”表示建立序列名索引,“F”表示不建立序列索引。缺省值为“F”。
程序输出:
如果建立的是核算库,输出为db.seq.nhr、db.seq.nin、db.seq.nsq,三个文件,如果选择了“-o T”,还会同时输出db.seq.nsd、db.seq.nsi、db.seq.nni、db.seq.nnd四个文件,一共七个。
蛋白库和核算库的输出类似,相应的输出文件为:db.seq.nhr、db.seq.nin、db.seq.nsq和db.seq.nsd、db.seq.nsi、db.seq.nni、db.seq.nnd七个文件。
除了这个结果,程序还会输出LOG文件(默认为formatdb.log),里面记录了运行时间、版本号、序列数量等信息。
几点需要注意的问题:
1)、建库以后,做blast比对的输入文件就是建库所得的文件db.seq.n**或者db.seq.p**,而不是原始的FASTA序列,也就是说,建库以后,原始序列文件是可以删除的。
2)、如果命令行中选择了“-o T”,并且目标序列中好友gi号重复的序列名时,程序会停止建库并报错。
就是说库文件中不能出现重复的序列(标志是序列号,跟具体的序液链拍列没有关系)。
3)、如果输入序列不符合FASTA格式或者ASN.1格式,程序会自动退出,并报错。
[formatdb] ERROR: Could not open db.
4)、核酸序列可以用于建核算库和蛋白库,但是蛋白序列不能用于建核算库,这个是显然的,密码子的问题哦!
其他参数介绍:
-l : “-l 文件名”用来改变LOG文件的命名
-n : “-n 文件名”可以自定义生成的库文件命名
-a : 输入文件为ASN.1格式
2、运行比对程序blastall:
Blast的主程序是blastall。程序的输入文件闹羡是query序列(- i参数)而和库文件(-d 参数),比对类型的选择(- p参数)和输出文件(- o 参数)由用户指定。其中“-p”参数有5中取值:
-p blastp:蛋白序列与蛋白库做比对。
-p blastx:核酸序列对蛋白库的比对。
-p blastn:核酸序列对核酸库的比对。
-p tblastn:蛋白序列对核酸库的比对。
-p tblastx:核酸序列对核酸库在蛋白级别的比对。
这些元素就构成了 blast 的基本运行命令(以 blastn 为例):
blastall -i query.fa -d database -o blast.out -p blastn
其中如果"-o"参数缺省,则结果输出方式为屏幕输出。
参数:
仅仅运行blast的基本运行命令,得到的结果往往不能清晰准确的表示出有用的信息。最大的问题就是有太多的冗余,很多很短的比对都会出现在输出结果中,导致结果杂乱无章。为了处理杂乱无章的比对结果,满足各种比对需求,blast设置了很多参数来限制比对的范围和输出的形式。一下多数结果以blastn距离,如不做特殊说明,这些参数适合于所有比对方式。
-e 参数
-e(value)参数是用来过滤比对较差的结果的,用“-e”参数指定一个实数,blast会过滤掉期望值大于这个数的比对结果(就是说这个值越小比对结果就越好)。
blastall -i query.fa -d database -o blast.out -p blastn -e 1e-10
通常情况下,对于不同物种之间的比对,期望值设在1e-5左右即可;而对于同源性较高的物种或者同种的比对,可以适度将期望值调的更小来过滤垃圾结果。比对同一物种cDNA和染色体的比对,参数可用1e-10或更高。
-F 参数
-F(T/F)参数是用来屏蔽简单重复和低复杂度序列的。如果选“T”,程序在比对过程中会屏蔽掉query中的简单重复和低复杂度序列;选“F”则不会屏蔽。缺省值为“T”。
比较两个结果,我们看出使用缺省参数的比对结果损失了一部分信息,得到的统计结果也
出现失真,期望值和 identity 都没有反映出真实情况。有时较长的重复序列甚至会导致比对终止。加了"-F F"就保证了比对结果的完整性。通常在大规模、低精度的比对中,往往用缺省参数,这样能避免程序把过多的时间浪费在无意义的简单重复上,提高运行速度;而在小规模、高精度的比对中,需要加上参数"-F F",保证比对的精确度和完整性。
-m 参数:
“-e”参数能够做到筛选适当的比对结果,但是即使如此,blast的输出结果仍然非常庞大并且难以处理。为了精简输出、节省存储空间、实现更多功能并使结果易于处理,blast 提供了参数“-m (integer)”来设定输出格式,可供选择的值为 0~11 之间的整数,缺省为 0。下面就通过实例逐个解析“-m”参数能够实现的输出功能。
-m 8 : 列表格式的比对结果。从做导游割裂的意义一次是:query名/subject名/identify/比对长度/错配数/空位数/query比对起始坐标/query比对终止坐标/subject比对起始坐标/subject比对终止坐标/期望值/比对得分
在 m8 格式中通过 subject 的比对起止位置可以判断出序列的比对方向。判断方法就是:query和subject的起始和终止坐标是否一致增减。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)