序列比对是生物信息学研究中一种常见且经典的手段。经过多年的发展,序列比对也诞生了很多种方法,这篇文章选择讨论的是两种比较常见的序列比对方法,选择哪种比对方法也是科研中容易踩坑的一个点。
BLAST
BLAST(Basic Local Alignment Search Tool )算法是1990年由Altschul等人提出的两序列局部比对算法,采用了一种短片段匹配算法和一种有效的统计模型来找出目的序列和数据库之间的最佳局部比对效果。
它的基本思想是:通过产生数量更少的但质量更好的增强点来提高匹配的精确度。首先采用哈希法对查询序列以碱基的位置为索引建立哈希表,然后将查询序列和数据库中所有序列联配,找出精确匹配的“种子”,以“种子”为中心,使用动态规划法向两边扩展成更长的联配,最后在一定精度范围内选取符合条件的联配按序输出。得分最高的联配序列就是最有比对序列。
其算法过程可简单描述为:
从两个序列中找出一些长度相等且可以形成无空位完全匹配的子序列,即序列片段对;
找出两个序列之间所有匹配程度超过一定值的序列片段对;
将得到的序列片段对根据给定的相似性阂值延伸,得到一定长度的相似性片段,称为高分值片段对。
将Query序列中每k个字的组合做成一个表,以k=3为例(DNA序列中,我们则常以k=11为例),我们"依序"将Query序列中每3个字的组合视为一个字组,并将这些字组列在一张字组表上,直到Query序列中最后一个字也被收入进表上为止