一种利用倍增算法改进基于BWT变换的基因序列比对方法,涉及生物信息学领域,首先利用倍增算法直接通过参考长序列计算出后缀数组,然后得到BWT变换所需的数据结构。在空间上不需要再存储BWT矩阵,省去了N*N的二维空间,在时间上也获得较大的提升。对种子序列进行了预处理操作,将种子序列排序后,使相同后缀的聚集在一起,这样方便保存上一个种子序列比对的中间结果,减少了比对次数。找到sa区间后利用BFS宽搜的方法进行搜索,宽搜可以保证最快找到最优的序列得分,不会漏掉最优的sa,然后用堆数据结构进行保存,每次堆顶都会是得分最高分,每次取得分最高项进行下一层搜索,一直到匹配结束就是最优的匹配结果。匹配结束就是最优的匹配结果。匹配结束就是最优的匹配结果。
【技术实现步骤摘要】
一种利用倍增算法改进基于BWT变换的基因序列比对方法
[0001]本专利技术涉及生物信息学领域,具体是涉及一种利用倍增算法改进基于BWT变换的基因序列比对方法。
技术介绍
[0002]序列比对,是生物信息学中一项重要的、关键的、基础的研究内容,是基因拼接组装的第一步,它是一个把测序仪测出的多个read(种子序列)比对到Reference(参考基因组)上的过程。第一代测序技术,获取的数据量不是很多,所以设计一系列基于哈希算法的软件。随着下一代测序技术快速发展,日益增长的海量测序数据给序列比对带来了巨大挑战。
[0003]因此,生物界提出一种利用基于BWT变换(Burrows
‑
Wheeler Transform)算法解决序列比对,可以解决序列占有空间庞大的问题,提高序列比对速度和空间的减少。但是,DNA测序数据爆炸式积累的速度远远大于其被处理的速度,如何进一步提高序列比对速度和空间的减少一直是生物信息学的一个难题。
技术实现思路
[0004]本专利技术的目的在于提出一种利用倍增算法改进基于BWT变换的基因序列比对方法,进一步提高序列比对速度和空间的减少,提升对比精度。
[0005]为了实现上述目的,本专利技术所采用的技术方案为:一种利用倍增算法改进基于BWT变换的基因序列比对方法,其步骤主要为:
[0006]步骤1:利用倍增算法对参考长序列Reference计算出sa后缀数组,sa后缀数组记录N*N的BWT矩阵排序之前的行号,即F列的位置;其中N是参考长序列Reference的长度;
[0007]步骤2:对参考长序列Reference遍历建立C数组,C(a)数组计算在Reference[0,N
‑
2]比字符a小的元素个数,记录字符a的首地址;
[0008]步骤3:利用sa后缀数组和参考长序列Reference计算出L列,即N*N的BWT矩阵排序后最右边的一列;
[0009]步骤4:通过建立好的C数组,得到F列,即N*N的BWT矩阵排序后最左边的一列;
[0010]步骤5:利用步骤3的L列计算OCC数组,OCC(a,i)为a在L数组i+1行之前出现的次数,从而BWT所需要的数据结构建立完成;
[0011]步骤6:使用基数排序和计数排序相结合的方法对reads种子序列从右往左按照字典顺序排序,使得相同后缀的read聚集在一起;
[0012]步骤7:通过比较上下两条read找出相同后缀,从右边起,第一个不相同的碱基就是比对的起始位置,确定read比对的起始位置之后,利用步骤1
‑
5构建的BWT数据结构和BFS宽搜的方法找到sa区间,输出匹配的位置和错配的个数以及运行时间。
[0013]本专利技术利用倍增算法改进基于BWT变换的基因序列比对方法,通过短序列映射到长序列,找出短序列在长序列上最佳的匹配位置。利用了倍增算法,对BWT(Burrows
‑
Wheeler Transform)的预处理阶段进行改进。与传统的BWT中旋转构造矩阵并计算各种数据结构不同的是,改进后的方法直接通过Reference参考长序列计算出后缀数组,并根据后缀数组快速计算出所需的数据结构。不仅可以在空间上不需要再存储BWT矩阵,省去了N*N(N为参考基因序列的长度)的二维空间,并且在时间上也获得较大的提升,因为不需要和原始BWT一样去对基因序列进行旋转、排序等耗时的操作。同时本专利技术也对reads种子序列进行了预处理操作,将reads种子序列排序后,使相同后缀的reads聚集在一起,这样方便保存上一个reads种子序列比对的中间结果(相同后缀),减少了比对次数。
[0014]与现有方法相比,本专利技术的有益效果主要表现在:
[0015](1)通过倍增算法对Reference参考长序列建立后缀数组sa,由于不需要建立传统BWT的N*N(N是Reference的长度)矩阵,节省了空间以及时间复杂度。若按照传统的方式通过建立BWT矩阵,然后再对BWT矩阵排序得到sa后缀数组,时间和空间复杂度太大,因为Reference的长度过于大,要对BWT矩阵的N行序列排序,时间复杂度最好也是O(N*N*logN)。而采用倍增算法直接对Reference的后缀排序得到sa后缀数组的时间复杂度将会是O(N*logN),并且节省了N*N的空间。
[0016](2)找到sa区间后利用BFS宽搜的方法进行搜索,宽搜可以保证最快找到最优的序列得分,不会漏掉最优的sa,然后用堆数据结构进行保存,每次堆顶都会是得分最高分,每次取得分最高项进行下一层搜索,一直到匹配结束就是最优的匹配结果。
[0017](3)将具有相同后缀的reads序列聚集在一起,并保存比对中间结果,减少高速缓存命中率低的访问次数。
[0018](4)通过实验证实,本专利技术利用倍增算法改进基于BWT变换的基因序列比对方法,在Reference参考长序列较大时,通过倍增算法进行预处理,建立sa后缀数组处理时间有着非常大的提升。同时,本专利技术在精确比对的时间以及模糊比对的精度上,相较于现有比对方法软件,也存在一定程度的优势。
附图说明
[0019]图1为本专利技术的算法流程图。
[0020]图2以Reference:”ACAACG$”($为终止字符)为例建立BWT矩阵,每行依次左移一位字符后并对BWT矩阵排序。
[0021]图3为BWT相关的数据结构(以Reference:”ACAACG”为例)。
[0022]图4为reads排序前后对比图。
[0023]图5为以Reference:”ACAACG”,read:”AAC”为例的匹配过程。
具体实施方式
[0024]请参阅图1所示,本专利技术所提出的一种利用倍增算法改进基于BWT变换的基因序列比对方法,其步骤主要为:
[0025]步骤1:利用倍增算法对参考长序列Reference计算出sa后缀数组,sa后缀数组记录N*N的BWT矩阵排序之前的行号,即F列的位置;其中N是参考长序列Reference的长度;
[0026]步骤2:对参考长序列Reference遍历建立C数组,C(a)数组计算在Reference[0,N
‑
2]比字符a小的元素个数,记录字符a的首地址;
[0027]步骤3:利用sa后缀数组和参考长序列Reference计算出L列,即N*N的BWT矩阵排序后最右边的一列;
[0028]步骤4:通过建立好的C数组,得到F列,即N*N的BWT矩阵排序后最左边的一列;
[0029]步骤5:利用步骤3的L列计算OCC数组,OCC(a,i)为a在L数组i+1行之前出现的次数,从而BWT所需要的数据结构建立完成(BWT相关数据结构如图3所示);
[0030]步骤6:使用基数排序和计数排序相结合的方法对reads种子序列从右往左按照字典顺序排序,使得相同后缀的read聚集在一起;
[0031]步骤7:通过比本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种利用倍增算法改进基于BWT变换的基因序列比对方法,其特征在于,比对方法步骤主要为:步骤1:利用倍增算法对参考长序列Reference计算出sa后缀数组,sa后缀数组记录传统构建N*N的BWT矩阵排序之前的行号,即F列的位置;其中N是参考长序列Reference的长度;步骤2:对参考长序列Reference遍历建立C数组,C(a)数组计算在Reference[0,N
‑
2]比字符a小的元素个数,记录字符a的首地址;步骤3:利用sa后缀数组和参考长序列Reference计算出L列,即传统构建N*N的BWT矩阵排序后最右边的一列;步骤4:通过建立好的C数组,得到F列,即传统构建N*N的BWT矩阵排序后最左边的一列;步骤5:利用步骤3的L列计算OCC数组,OCC(a,i)为a在L数组i+1行之前出现的次数,从而BWT所需要的数据结构建立完成;步骤6:使用基数排序和计数排序相结合的方法对reads种子序列从右往左按照字典顺序排序,使得相同后缀的read聚集在一起;步骤7:通过比较上下两条read找出相同后缀,从右边起,第一个不相同的碱基就是比对的起始位置,确定read比对的起始位置之后,利用步骤1
‑
5构建的BWT数据结构和BFS宽搜的方法找到...
【专利技术属性】
技术研发人员:窦岩,胡春玲,邵鸣义,
申请(专利权)人:合肥学院,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。