比对算法总结(一)——基于哈希表结构的比对算法

以前对比对算法不太了解,比对算法总结 这个系列会分几篇文章对比对算法进行介绍,本篇主要介绍最原始的基于哈希表结构的比对算法。

1 比对算法简介

目前短序列比对软件通常采用多重步骤的策略精确定位序列。首先,通过为短序列数据集或者参考基因组序列构建索引数据结构,提高搜索短序列最佳匹配位点的计算速度。其次,通过经典比对算法(Smith-Waterman算法和Needleman-Wunsch算法)缓慢精确的比对定位。目前的比对软件主要在第一步——构建索引数据结构上分为两类:(1)基于哈希表(Hash-table)数据结构的比对算法,一般通过创建参考基因组序列或者短序列数据集的哈希表数据结构实现比对定位。(2)基于Burrows Wheeler transforma(BWT)索引数据结构的比对算法,主要通过Burrows Wheeler transform 算法创建参考基因组序列的特殊的索引结构,有效实现低内存占用且高速搜索的比对定位过程。

短序列比对软件算法逻辑:
(1)短序列数据集Q,参考基因组序列R
(2)d() 为距离函数,距离函数的阈值为k
(3)查找短序列数据集Q内每条短序列q在参考基因组序列R上所有匹配的子序列m,输出满足d(q,m) <= k 要求的子序列称为匹配(matches)
(4)短序列比对软件主要的目的是考虑测序误差和结构变异的前提下,找到每条短序列q在参考基因组序列R中真正的来源位点。需要注意的是,由于测序误差和变异因素的存在,短序列与参考基因组序列的匹配结果往往只能是近似匹配,因此通常采用距离函数反映匹配程度。

2 基于哈希表(Hash-table)数据结构的比对算法

这类算法通过创建参考基因组序列或者短序列数据集的哈希表数据结构实现比对定位。其算法核心思想是采用种子序列定位及延伸算法(seed and extend algorithm)。根据建立哈希表的是短序列还是参考基因组,该算法可以分为两种情况:第一种是为短序列构建哈希表数据结构,通过扫描参考基因组序列,查找短序列与参考基因组序列完全匹配的子序列(seeds)位点,该位点为短序列在参考基因组中可能的候选匹配位点;第二种是为参考基因组构建哈希表数据结构,通过扫描短序列数据集,查找短序列在参考基因组中可能的匹配候选位点。基于哈希表索引数据结构的比对算法也可细分为 连续种子序列(contiguous seed)策略和间隔种子序列(spaced sedd)策略

2.1 连续种子序列策略

如下图所示,连续种子序列策略是将短序列分成k-mer长的子序列,通过查询基因组k-mer长的子序列构成的哈希表数据结构进行匹配,如果短序列的所有子序列按照正确顺序彼此毗邻且与基因组子序列完全匹配,短序列可以定位到参考基因组上。

image.png

但是,连续种子序列一般不能考虑错配的问题,如果短序列上有变异碱基和测序错误就不能定位到具体的基因组。为了解决这个问题,连续种子序列策略通常会搭配 鸽洞原理(pigeonhole principle)、q-gram过滤算法 改善基于哈希表数据结构的比对算法。

鸽洞原理(pigeonhole principle)改善哈希表数据结构主要是将短序列分割成长度相等的多个子序列(子序列之间没有重复)。如果短序列与参考基因组完全匹配,那么所有子序列也能与参考基因组子序列完全匹配。当短序列中含有SNP时,错配一定位于短序列的其中一条子序列,但是其他子序列是能与参考基因组子序列完全匹配的。这样就可以完全匹配的种子序列位点为锚点,紧邻锚点的区域通过经典比对算法精确比对剩余未完全匹配的子序列(可能存在的错配子序列),找到短序列最终的匹配位点。

q-gram过滤算法是鸽洞原理的延伸,其不同点在于:短序列被分割成了k-mer长的重叠子序列而非不重叠子序列。如果短序列中有足够多的k-mer子序列定位到一个较小的区域,再对该选位点进行精确比对。

2.2 间隔种子序列策略

种子序列定位及延伸算法最主要的缺点是随着错配数目的增加,需要将短序列分割成更短的子序列,更短的子序列意味着与参考基因组中更多的区域相匹配,种子定位算法复杂度显著增加。因此基于哈希表数据结构的比对算法,无法解决多错配短序列比对效率的问题。在此基础上,又提出了间隔种子序列的策略。间隔种子序列即碱基不连续匹配的种子序列,种子序列的查找过程中允许错配位点“X”的存在,例如间隔种子序列为ACGXACG可以与ACGAACG,ACGCACG序列匹配。间隔种子序列策略增加了比对计算时间的复杂度,但是该方法可以有效增加比对算法的灵敏度。下表是基于哈希表数据结构的软件汇总。

image.png

3 参考文献

[1]尚婧. 下一代测序短序列比对软件算法比较及评价[D]. 苏州大学.

你可能感兴趣的:(比对算法总结(一)——基于哈希表结构的比对算法)