Fork me on GitHub

序列比对(三) 启发式比对之BLAST搜索算法

引言

全局比对和局部比对都是精确比对,在两条序列比对时,使用精确比对是可行的,并且我们也会在较快的时间内得到最佳比对。但是在生物序列分析中,往往会遇到一些序列搜索问题。比如在蛋白质结构预测问题中,需要快速的从模板库中找到查询序列的模板;搜索微生物序列库,确定某段序列或某些序列是属于哪些微生物的。总而言之,我们会遇到生物序列库的搜索问题。
当然,我们也可以使用全局比对或局部比对,使用查询序列与数据库中的每条序列进行比较,从而计算最大的比对得分,最后找到最佳比对。但是这样的搜索随着序列数据库中序列数目的增多,耗时也会增加。最后,我们无法在预计的时间内得到结果。
为了加快搜索速度,启发式比对的算法诞生了。启发式比对,并不会对全部序列都使用精确比对,而会使用一些策略,确定最有可能的一些序列,然后针对这些序列再使用精确比对,这样就极大地缩减了搜索的耗时。

算法介绍

BLAST方法是基于FASTA方法的优化得到的,FASTA方法和BLAST方法类似,也是一种启发式的序列搜索算法。它是通过相同片段的查找,计算得分矩阵找最佳比对的。BLAST是考虑了氨基酸序列的特殊性,所以将相等片段修改为相似片段。所谓相似片段就是根据PAM250等得分矩阵计算的两个序列的得分大于某个值的片段。

(1)找到命中点

首先将查询序列切分成固定长度的片段,如果是氨基酸序列,一般是3-5个氨基酸长度,如果是DNA序列,一般取12个碱基。
切分完成后,为每一个小片段确定相似片段。每一个小片段与所有可能的情况进行计算,得分大于某个值的片段,就是这个小片段的相似片段。
然后,在数据库序列上搜索这些相似片段的位置,这些位置信息就是所谓的命中点。其中,确定相似片段集这步可以提前完成。

(2)延伸命中点

对于包含命中点的数据库序列,我们会进行延伸,延伸得到的打分大于某个阈值时,该片段被成为高得分片段。在延伸中,如果得分下降不超过某个阈值,那么延伸不停止,如果超过了,就终止。

(3)根据得分,将得分排在前面的序列与查询序列进行精确比对,得到搜索结果

以上是最初BLAST的基本算法,思路比较简单,但是效率确实提高了很多。在此之后,BLAST算法也经过了很多的优化,在效率和精度上都有很大的提升。