具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明实施例中,通过将测序序列按预设长度短串的碱基值排序,并将contig逐个碱基切割成预设长度的短串,依次根据contig中所切割成的短串的碱基值在排序后的测序序列中查找相应的测序序列,建立映射关系。
图1示出了本发明实施例提供的基因组短序列映射的快速处理方法的实现流程,详述如下:
在步骤S101中,将测序序列按预设长度短串的碱基值排序。
在本发明实施例中,短串长度的选取严格等于在构建de Bruijn图时短串的长度,即上述预设长度为构建de Bruijn图时短串的长度。将测序序列按短串的碱基值排序,可以降低排序的复杂性。按预设长度切割各测序序列的短串,并从小到大按短串的碱基值排序,生成一个短串数组,这个短串数组和各测序序列是一一对应的。其中,所述按预设长度切割各测序序列的短串的步骤可以采用如下方式:在当前被切割的测序序列上滑动截取短串,滑动的步长为1个碱基,截取的窗口为所述预设长度,即构建de Bruiin图时短串的长度。
另外,本步骤中,优选可以建立一个索引数组,用于记录短串数组中短串与contig的对应关系。
在对短串进行排序时,可以使用桶排序方式对短串的碱基值进行排序。其中,每个桶子存放短串上的4个碱基,这样按4个碱基逐步完成排序。另外,在排序中使用另一个前缀数组记录相邻短串间共有前缀的碱基个数,对前缀碱基个数的记录可以在桶排序内部完成。当然,也可以采用其他方法对短串的碱基值进行排序。
在步骤S102中,将contig逐个碱基切割成所述预设长度的短串。
在本发明实施例中,本步骤可采用如下方式:提取contig保存在内存中,在contig上滑动截取短串,滑动的步长为1个碱基,截取的窗口为所述预设长度,即构建de Bruijn图时短串的长度。
由于构建de Bruijn图时短串是唯一的,所以按照构建de Bruijn图时短串的长度将contig逐个碱基切割成的各个短串是唯一的。
在步骤S103中,依次根据contig中所切割成的短串的碱基值在排序后的测序序列中查找相应的测序序列,建立contig与测序序列的映射关系。
上述步骤S103具体包括:
步骤S1.依次取contig切割得到的短串;
步骤S2.在排序后的测序序列中查找短串的碱基值与contig中所取短串的碱基值相等的所有测序序列;
步骤S3.通过查询所述索引数组,在步骤S2查找到的测序序列与contig间建立映射关系。
在本发明实施例中,步骤S3具体包括:利用索引数组保存的短串数组中短串与contig的对应关系,根据步骤S2中查找到的测序序列中的短串在所述索引数组中查询对应的contig,建立短串对应的测序序列与contig之间的映射关系。
在本发明实施例中,步骤S2中采用二分法在短串数组中查找与contig中所取短串的碱基值相等的短串,实现短串间的比较,算法详述如下:
初始化:将起始位置L置为0,结束位置R设为N-1,最小共有前缀数l、最大共有前缀数r都置为0;
步骤1.判断contig中所取短串W是否小于短串数组的短串A[0],如果是返回不匹配的响应,否则进入步骤2;
步骤2.判断contig中所取短串W是否大于短串数组的第N个短串A[N-1],如果是则返回不匹配的响应,否则进入步骤3;
步骤3.判断L+1是否小于结束位置R,如果是则进入步骤4,否则进入步骤8;
步骤4.查找中间位置M取为
碱基判断位置m取最小共有前缀数l和最大共有前缀数r二者中的最小值;其中,m是L和R之间的最大共有前缀数。
步骤5.判断短串W的第m个碱基值Wm是否小于或等于查找中间位置短序的第m个碱基值A[M]m,如果是则进入步骤6,否则进入步骤7;
步骤6.结束位置R向前移动到查找中间位置M,用短串W与短序A[M]的共有前缀数更新最大共有前缀数r,进入步骤3;
步骤7.起始位置L向后移动到查找中间位置M,用短串W与短序A[M]的共有前缀数更新最大共有前缀数l,进入步骤3;
步骤8.将起始位置L赋值为结束位置R。
A[R]即为查找到的短串,结合已经建立的前缀数组,找出A[R]前后碱基值均与其相等的短串。再根据索引数组即可以得到这些短串对应的测序序列,进一步建立得到的这些测序序列与contig的映射。当然,也可以根据其他查询方法在短串数组中查找与contig中所取短串的碱基值相等的短串。
由于在生物学上,互补序列上的映射关系也是构成该contig的序列的正确关系,为了同时得到contig的互补序列与测序序列的映射,作为本发明的一个优选实施例,在步骤S101前进一步包括:根据测序序列得到其互补测序序列的步骤。
此时,步骤S101改为将测序序列和得到的互补测序序列按预设长度短串的碱基值排序;步骤S103改为依次根据contig中所切割成的短串的碱基值在排序后的测序序列及其互补测序序列中查找相应的测序序列和/或互补测序序列,建立映射关系。将测序序列及其互补测序序列按短串的碱基值排序,实现contig与测序序列间的正、反相映射,减少了比较搜索的次数,处理速度加快。
为了同时得到互补contig与测序序列的映射,作为本发明的另一个优选实施例,在上述步骤S102之前进一步根据contig得到其互补contig。此时,步骤S102为将contig和得到的互补contig逐个碱基切割成预设长度的短串,步骤S103为依次根据contig和得到的互补contig中所切割成的短串的碱基值在排序后的测序序列中查找相应的测序序列,建立映射关系。
对比上述通过对contig逐个碱基在排序后的测序序列及其互补测序序列中查找,实现contig与测序序列的正、反相映射的方式,这里通过对contig及其互补contig逐个碱基执行两次切割、查找操作实现。
本发明上面两个优选实施例中所采取的这种正反向截取的方式,虽然使用了更多的内存,但是测序序列查询时,只查询一个方向就可以找出双向的比对结果,速度得到了提高。如果截取单向的话,在查询时需要将测序序列正方向都查询,才能得到结果。
本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以在存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘、光盘等,该程序用来执行如下步骤:
1.将测序序列按预设长度短串的碱基值排序;
2.将contig逐个碱基切割成预设长度的短串;
3.依次根据contig中所切割成的短串的碱基值在排序后的测序序列中查找相应的测序序列,建立映射关系。
图2示出了本发明实施例提供的基因组短序列映射的快速处理系统的结构,为了便于说明仅示出了与本发明实施例相关的部分,该系统可以用于短序列组装中,其中:
排序单元201,用于将测序序列按预设长度短串的碱基值排序,其实现方式可参见上述步骤S101的内容,不再赘述。
切割单元202,用于将contig逐个碱基切割成预设长度的短串,其实现方式可参见上述步骤S102的内容,不再赘述。
映射单元203,依次根据contig中所切割成的短串的碱基值在排序后的测序序列中查找相应的测序序列,建立映射关系。
其中,映射单元203包括:
短串获取模块2031,用于依次取contig切割得到的短串。
查找模块2032,在排序后的测序序列中查找短串的碱基值与短串获取模块2031所取短串的碱基值相等的所有测序序列,其实现方式参见上述步骤S2,不再赘述。
关联模块2033,在查找到的测序序列与contig间建立映射关系,其实现方式参见上述步骤S3,不再赘述。
为了同时得到contig与测序序列的反相映射,作为本发明的一个优选实施例,短序列映射系统还包括:
第一互补计算单元204,根据测序序列得到其互补测序序列。
此时,排序单元201将测序序列和得到的互补测序序列按预设长度短串的碱基值排序,映射单元203依次根据contig中所切割成的短串的碱基值在排序后的测序序列及其互补测序序列中查找相应的测序序列和/或互补测序序列,在查找到的测序序列和/或互补测序序列与所述序列片段重叠群间建立映射关系。即查找相应的测序序列,在查找到的测序序列与所述contig间建立映射关系;或者查找相应的互补测序序列,在查找到的互补测序序列与所述contig间建立映射关系;或者查找相应的测序序列,并查找相应的互补测序序列,查找到的测序序列与所述contig间建立映射关系,并同时在查找到的互补测序序列与所述contig间建立映射关系。
为了同时得到互补contig与测序序列的映射,作为本发明的另一个优选实施例,如图3所示,短序列映射系统还包括:
第二互补计算单元205,根据contig得到其互补contig。
此时,切割单元202将contig和得到的互补contig逐个碱基切割成预设长度的短串,映射单元203依次根据contig和得到的互补contig中所切割成的短串的碱基值在排序后的测序序列中查找相应的测序序列,建立映射关系。
在本发明实施例中,通过将测序序列按预设长度短串的碱基值排序,并将contig逐个碱基切割成预设长度的短串,依次根据contig中所切割成的短串的碱基值在排序后的测序序列中查找相应的测序序列,建立映射关系,实现了用于短序组装中的一种短序列映射方法,处理时间短、效率高。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。