常用序列比对算法总结

1,全局比对算法

1.1 Needleman-Wunsch 算法
尝试找到两个完整的序列 S1 和 S2 之间的最佳比对。如S1=GCCCTAGCG S2=GCGCAATG 如果设定每个匹配字符为1分,每个空格为-2分,每个不匹配为-1分,则下面的比对就是全局最优比对:S1’=GCCCTAGCG S2’=GCGC_AATG,连字符“_”代表空格。在 S2’ 中有五个匹配字符,一个空格(或者反过来说,在 S1’ 中有一个插入项),有三个不匹配字符。这样得到的分数是 (5×1) + (1×-2) + (3×-1) = 0,这是能够实现的最佳结果。

2,局部比对算法

2.1 Smith-Waterman 算法
不必对两个完整的序列进行比对;可以在每个序列中使用某些部分来获得最大得分。使用同样的序列 S1 和 S2,以及同样的得分方案,可以得到以下局部最优比对 S1’’ 和 S2’’:S1=GCCCTAGCG S2=GCGCAATG S1’’=GCG S2’’=GCG,虽然这个局部比对恰好没有不匹配字符或空格,但是一般情况下,局部比对可能存在不匹配字符或空格。这个局部比对的得分是 (3×1) + (0×-2) + (0×-1) = 3。(最佳局部比对的得分要大于或等于最佳全局比对的得分,这是因为全局比对也属于局部比对)

2.2 blast算法
Blast算法是1990年由Altschul等人提出的两序列局部比对算法,采用了一种短片段匹配算法和一种有效的统计模型来找出目的序列和数据库之间的最佳局部比对效果。Blast算法是一种基于局部序列比对的序列比对算法。广泛被使用在蛋白质DNA序列的分析问题中,在其他序列相似性比对中也有应用。传统的基于动态规划的局部性比对性算法采用的是精确的序列比对,虽然有着较好的比较结果,但是对于长度为n和m的两个待比较序列,局部性比对算法的时间复杂度有O(mn),这个时间复杂度对于序列匹配来说代价太大。Blast是一种在局部性比对基本上一种近似比对的算法。它在保持较高精度的情况下可以大大减少程序运行的时间,是大规模序列对比问题一个速度和精确性都可以接受的一个解决方法。它的基本思想是:通过产生数量更少的但质量更好的增强点来提高匹配的精确度。首先采用哈希法对查询序列以碱基的位置为索引建立哈希表,然后将查询序列和数据库中所有序列联配,找出精确匹配的“种子”,以“种子”为中心,使用动态规划法向两边扩展成更长的联配,最后在一定精度范围内选取符合条件的联配按序输出。得分最高的联配序列就是最有比对序列。

其算法过程可简单描述为:

  1. 从两个序列中找出一些长度相等且可以形成无空位完全匹配的子序列,即序列片段对;

  2. 找出两个序列之间所有匹配程度超过一定值的序列片段对;

  3. 将得到的序列片段对根据给定的相似性阂值延伸,得到一定长度的相似性片段,称为高分值片段对。

你可能感兴趣的:(生物信息,算法)