一种基因序列比对的方法、系统及相关组件与流程

文档序号:16848200发布日期:2019-02-12 22:30阅读:282来源:国知局
一种基因序列比对的方法、系统及相关组件与流程
本发明涉及计算机技术与生物基因技术交叉学科领域,特别涉及一种基因序列比对的方法、系统、一种电子设备及一种计算机可读存储介质。
背景技术
:基因序列比对的策略通常主要包括seed(种子序列)查找和seed扩展两个阶段。seed查找阶段的主要是在read(待比对序列)上查找一定长度且在参考序列上能够完全精确匹配的子序列,即seed(种子序列)。扩展阶段对查找到的seed在参考序列的种子序列上进行扩展。最后根据在各个种子序列上的打分情况选择最佳的比对结果。现有技术中,为了使seed能够快速地精确匹配到参考序列上,可以对参考序列进行预先索引,在seed查找阶段根据索引值直接获取的seed在参考序列上的位置。参考序列的索引表基本单元为<index,pos>,index的长度可根据索引的策略选择,pos为seed在参考序列上的位置。但是,由于索引表需要在整个参考序列上逐位建立,需要的存储空间十分巨大。因此利用fpga(field-programmablegatearray,即现场可编程门阵列)根据索引值进行对比索引表的访问为随机访问的访问速率较低。因此,如何降低存储参考序列索引值的表的存储空间,提高基因序列比对速率是本领域技术人员目前需要解决的技术问题。技术实现要素:本申请的目的是提供一种基因序列比对的方法、系统、一种电子设备及一种计算机可读存储介质,能够降低存储参考序列索引值的表的存储空间,提高基因序列的索引值比对速率。为解决上述技术问题,本申请提供一种基因序列比对的方法,该方法包括:确定待对比序列和参考序列,并根据所述参考序列确定指针表和候选对比位置表;其中,所述候选对比位置表为描述参考子序列在所述参考序列上的位置信息与所述参考子序列的r位索引值的后m位的对应关系,且所述索引值前r-m位相同的参考子序列的位置信息连续排列的表,所述指针表为描述所述索引值前n位相同、第n+1位至第r-m位不同的参考子序列在所述候选对比位置表中的偏移地址的表;所述参考子序列为按照预设长度对所述参考序列逐位提取得到;从待对比序列中提取预设长度的种子序列,并确定所述种子序列的索引值;根据所述种子序列的索引值查询所述指针表和所述候选对比位置表判断所述参考序列中是否存在所述种子序列对应的位置信息;若是,则将所述种子序列作为待扩展序列,根据所述位置信息以所述参考序列为基准对所述待扩展序列进行扩展操作得到中间序列,并对比所述中间序列与所述待对比序列得到基因序列比对结果。可选的,根据所述参考序列确定指针表和候选对比位置表包括:对所述参考序列逐位提取预设长度的所述参考子序列,记录所述参考子序列的位置信息,并将所述参考子序列转换为索引值;按照预设规则将所述索引值进行字节划分得到第一子索引值、第二子索引值和第三子索引值;其中,所述第一子索引值为所述索引值的前n位,所述第三子索引值为所述索引值的后m位,所述第二子索引值为所述索引值的第n+1位至第r-m位;根据所述第一子索引值和所述第二子索引值构建指针表的行和列;其中,所述指针表的每一行对应不同的第一子索引值,每一列对应不同的第二子索引值,指针表的行数p和列数q满足预设关系;其中,所述预设关系为p=2n,q=2r-m-n;根据所述第三索引值与所述第三索引值对应的参考子序列在参考序列上的位置信息按预设的排序规则构建所述候选对比位置表;根据所述排序规则和所述索引值前r-m位相同,后m位不同的参考子序列的个数构建所述指针表。可选的,根据所述种子序列的索引值查询所述指针表和所述候选对比位置表判断所述参考序列中是否存在所述种子序列对应的位置信息,包括:根据所述种子序列的索引值的前r-m位在所述指针表中查询目标偏移地址;根据所述目标偏移地址查询所述候选对比位置表,判断所述候选对比位置表中是否存在所述种子序列的索引值的后m位;若是,则则判定所述参考序列中存在所述种子序列的位置信息。可选的,所述排序规则为字典排序。可选的,所述参考子序列的索引值为所述参考子序列经哈希处理后对应的哈希值。可选的,若所述哈希值的位数为40,则n为26,m为10。可选的,将所述种子序列作为待扩展序列进行扩展操作得到中间序列,包括:将所述种子序列设置为所述待扩展序列;获取所述待扩展序列的索引值的前预设位数作为扩展模块索引值;根据所述扩展模块索引值查询对应的扩展模块,并将所述待扩展序列输入所述扩展模块中得到所述中间序列。本申请还提供了一种基因序列比对的系统,该系统包括:索引表确定模块,用于确定待对比序列和参考序列,并根据所述参考序列确定指针表和候选对比位置表;其中,所述候选对比位置表为描述参考子序列在所述参考序列上的位置信息与所述参考子序列的r位索引值的后m位的对应关系,且所述索引值前r-m位相同的参考子序列的位置信息连续排列的表,所述指针表为描述所述索引值前n位相同、第n+1位至第r-m位不同的参考子序列在所述候选对比位置表中的偏移地址的表;所述参考子序列为按照预设长度对所述参考序列逐位提取得到;提取模块,用于从待对比序列中提取预设长度的种子序列,并确定所述种子序列的索引值;查询模块,用于根据所述种子序列的索引值查询所述指针表和所述候选对比位置表判断所述参考序列中是否存在所述种子序列对应的位置信息;若是,则启动对比模块的工作流程;所述对比模块,用于将所述种子序列作为待扩展序列进行扩展操作得到中间序列,并对比所述中间序列与所述待对比序列得到基因序列对比结果。本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序执行时实现上述基因序列比对的方法执行的步骤。本申请还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时实现上述基因序列比对的方法执行的步骤。本发明提供了一种基因序列比对的方法,包括确定待对比序列和参考序列,并根据所述参考序列确定指针表和候选对比位置表;其中,所述候选对比位置表为描述参考子序列在所述参考序列上的位置信息与所述参考子序列的r位索引值的后m位的对应关系,且所述索引值前r-m位相同的参考子序列的位置信息连续排列的表,所述指针表为描述所述索引值前n位相同、第n+1位至第r-m位不同的参考子序列在所述候选对比位置表中的偏移地址的表;所述参考子序列为按照预设长度对所述参考序列逐位提取得到;从待对比序列中提取预设长度的种子序列,并确定所述种子序列的索引值;根据所述种子序列的索引值查询所述指针表和所述候选对比位置表判断所述参考序列中是否存在所述种子序列对应的位置信息;若是,则将所述种子序列作为待扩展序列,根据所述位置信息以所述参考序列为基准对所述待扩展序列进行扩展操作得到中间序列,并对比所述中间序列与所述待对比序列得到基因序列比对结果。本发明通过将参考子序列的索引值划分为三段,由索引值的前两段构建指针表,索引值的最后一段和参考子序列在参考序列上的位置构建候选对比位置表,将现有技术中的索引表拆分为指针表和候选对比位置表。由于指针表的行和列分别为索引值的第一段和索引值的第二段,指针表相当于基地址,候选对比位置表相当于偏移地址,因此相对于仅根据索引值和位置信息建立的单表而言,明显的减少了存储索引值占用的存储空间。进一步的,由于采用指针表和候选比对位置表存储索引值节省大量的存储空间,因此可以提高fpga访问指针表和候选比对位置表的效率。本方案能够降低存储参考序列索引值的表的存储空间,提高基因序列比对速率。本申请同时还提供了一种基因序列比对的系统、一种计算机可读存储介质和一种电子设备,具有上述有益效果,在此不再赘述。附图说明为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本申请实施例所提供的一种基因序列比对的方法的流程图;图2为本申请实施例所提供的一种判断参考序列中是否存在所述种子序列对应的位置信息的流程图;图3为本申请实施例所提供的一种对种子序列执行扩展操作的流程图;图4为索引表拆分为指针表和cal表后的结果示意图;图5为本申请实施例所提供的一种基因序列比对的系统的结构示意图。具体实施方式为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。下面请参见图1,图1为本申请实施例所提供的一种基因序列比对的方法的流程图。具体步骤可以包括:s101:确定待对比序列和参考序列,并根据所述参考序列确定指针表和候选对比位置表;其中,所述候选对比位置表为描述参考子序列在所述参考序列上的位置信息与所述参考子序列的r位索引值的后m位的对应关系,且所述索引值前r-m位相同的参考子序列的位置信息连续排列的表,所述指针表为描述所述索引值前n位相同、第n+1位至第r-m位不同的参考子序列在所述候选对比位置表中的偏移地址的表;所述参考子序列为按照预设长度对所述参考序列逐位提取得到;需要说明的是,本实施例是针对基因序列比对而设计的方案,具体应用场景可以为在精准医疗上的应用,即基因诊断。例如,已知人的一段基因是负责心脏病的,用心脏病人的基因与参考基因(健康人的)比对查看,查看心脏的这段基因是否有变异。具体应用场景还可以是进行同源比对,用于看两个物种的相似性,例如人和猩猩。当然,本实施例的具体应用场景还有很多,只要是需要进行两对基因进行比对,即可通过本申请描述的实施例实现。本步骤中提到的待对比序列为需要进行基因对比操作的序列(相当于上一段中提到的心脏病人的基因序列),参考序列是对待对比序列进行基因对比操作是的参考对象(相当于上一段中提到的正常人的基因序列)。待对比序列要与参考序列进行对比,但是由于基因序列是由腺嘌呤a、胞嘧啶c、鸟嘌呤g、胸腺嘧啶t四种碱基排列的序列,无法确定待对比序列与参考序列相对应的基因位置。以上面提到心脏基因对比的为例,人类基因每34纳米长就有10个碱基对,人类所有的基因有30亿个碱基对,数量巨大而这30亿个碱基对又仅由4种碱基构成,需要进行大量的基因对比才能确定待对比序列中具体哪一段序列为心脏病相关的序列,因此需要对参考序列建立索引表,以便根据索引表确定待对比序列需要与参考序列进行对比的一段基因序列。由于参考序列通常为一段很长碱基序列,因此本实施例按照预设长度对所述参考序列逐位提取得到多个参考子序列,例如参考序列中一共有f个碱基对,预设长度为g个碱基对,在对所述参考序列逐位提取后可以得到f-g+1个参考子序列,参考子序列为参考序列的一部分。本实施例默认在进行参考子序列提取时,存在记录每一个参考子序列在参考序列上的位置信息的操作。在理论上,在得到了参考子序列及参考子序列的位置信息后,就可以在待对比序列中逐位提取与参考子序列相同长度的种子序列,将所有种子序列与所有参考子序列进行比对,若一致则说明该种子所在的一段基因与该参考子序列所在的一段基因可能是具有相同作用(例如控制心脏病)的基因。但是,在计算机中无法直接进行碱基序列的比对,此时需要将碱基转化为计算机能够读懂的语言进行对比。在本实施例中将参考子序列和种子序列均转化为索引值,通过两段基因子序列索引值的对比实现两段基因子序列的碱基对的对比。作为一种优选的实施方式,转化为的索引值可以为数字0和1的组合,例如规定a为00,g为01,c为10,t为11,通过一段二进制的代码即可以表示碱基的排列顺序。值得注意的是,本实施例中的种子序列的长度不宜过短也不宜过长,长度过短容易导致基因扩展操作的工作量过重,长度过长容易导致指针表和候选对比位置表所占用的存储空间过大。因此,本步骤中提到的“预设长度”应该综合参考序列的总长度进行灵活设置。本实施例的关键在于根据参考序列建立指针表和候选对比位置表,在得到参考子序列的索引值(默认索引值共r位)后,本实施例将各个参考子序列的索引值分为三部分,分别为:索引值前n位,索引值n+1位至r-m位和索引值后m位。根据索引值后m位与索引值后m位对应的参考子序列在参考序列上的位置信息按预设的排序规则构建所述候选对比位置表,在构建过程中要保证所述索引值后m位对应的参考子序列的索引值前r-m位相同的位置信息连续排列。其中,候选对比位置表中将索引值前r-m位相同的位置信息连续排列的意义在于,使指针表中的指针能够指向所有的具有相同索引值前r-m位的不同的索引值后m位。将索引值前n位和索引值n+1位至r-m位构建为指针表的行和列,在构建过程中要保证指针表的每一行对应不同的索引值前n位,每一列对应不同的索引值n+1位至r-m位。指针表是用于描述索引值前n位相同、第n+1位至第r-m位不同的参考子序列在所述候选对比位置表中的偏移地址的表,相当于指针表按照索引值前n位将所有的索引值分为几个大块,再根据索引值第n+1位至第r-m位的不同将各个大块细分个多个小块,所有索引值的前n位和值第n+1位至第r-m位的组合为基地址,索引值的后m位为偏移地址,指针表记录了各个基地址到偏移地址的对应关系。由于索引值位置信息与的索引值的后m位存在对应关系,确定了基地址和偏移地址后可以确定基地址和偏移地址对应索引值的位置信息。作为一种优选的实施方式,构建指针表和候选对比位置表的具体过程可以为:步骤一:对所述参考序列逐位提取预设长度的所述参考子序列,记录所述参考子序列的位置信息,并将所述参考子序列转换为索引值;步骤二:按照预设规则将所述索引值进行字节划分得到第一子索引值、第二子索引值和第三子索引值;其中,所述第一子索引值为所述索引值的前n位,所述第三子索引值为所述索引值的后m位,所述第二子索引值为所述索引值的第n+1位至第r-m位;步骤三:根据所述第一子索引值和所述第二子索引值构建指针表的行和列;其中,所述指针表的每一行对应不同的第一子索引值,每一列对应不同的第二子索引值,指针表的行数p和列数q满足预设关系;其中,所述预设关系为p=2n,q=2r-m-n;其中,由于第一子索引值由n位二进制数字构成因此,指针表中的行数p=2n,同理可知指针表的列数q=2r-m-n,需要说明的是得到的指针表为p行q列的表,表中允许存在某一行某一列对应的索引值没有与其对应的参考子序列的索引值,但是第一子索引值和第二子索引值的所有组合都应经被指针表所包括。步骤四:根据所述第三索引值与所述第三索引值对应的参考子序列在参考序列上的位置信息按预设的排序规则构建所述候选对比位置表;其中,可以按照字典排序构建所述候选对比位置表。候选对比位置表中的每一个第三子索引值都在指针表中有与其唯一对应的第一子索引值和第二子索引值,指针表中也存在第一子索引值和第二子索引值对应每一项与候选对比位置表中各个第三子索引值的指针。步骤五:根据所述排序规则和所述索引值前r-m位相同,后m位不同的参考子序列的个数填写所述指针表。举例说明上述构建指针表和候选对比位置表的过程:例如,参考序列为cgatgcatgt,由于基因序列遵循碱基互补配对原则此处仅写一条链的碱基,预设长度为4个碱基对,对参考序列逐位提取参考子序列,索引值为二进制代码,规定a为00,g为01,c为10,t为11,cal为位置信息结果如下:参考子序列1cgat,索引值10010011,cal=(1);参考子序列2gatg,索引值01001101,cal=(2);参考子序列3atgc,索引值00110110,cal=(3);参考子序列4tgca,索引值11011000,cal=(4);参考子序列5gcat,索引值01100011,cal=(5);参考子序列6catg,索引值10001101,cal=(6)。参考子序列7atgt,索引值00110111,cal=(7)。若n=3,m=3,可以得到以下两个表,需要说明的是,为了方便理解,表1指针表中出现的(1)、(2)、(3)、(4)、(5)、(6)、(7)代表着表2候选对比位置表与位置信息cal的对应关系。实际上表1指针表中可以填写索引值前r-m位相同,后m位不同的参考子序列的个数,但其中除了指针表表头的各项与候选对比位置表中位置信息的对应关系。实际上表中不存在最左边一列和最上边一行,即不存在表名,此处仅为了方便理解,额外对指针表增加了1行1列。表1指针表addr00011011000001(3)(7)010(2)011(5)100(6)(1)101110(4)111表2候选对比位置表keycal000(4)011(1)011(5)101(2)101(6)110(3)111(7)综上可知,改进后的需要存储6*5+3*7=51个关于索引值的字节,而现有技术中需要存储7*8=56个关于索引值的字节,由上面举出的例子可见本实施例能够起到降低存储参考序列索引值的表的存储空间的作用。进一步的,由于上面的例子仅是对一条参考子序列的索引值的存储,且为了方便表述例子中的碱基对数小于实际操作中的碱基对的数量,因此本实施例可以解决大量的存储空间。需要说明的是,指针表与候选对比位置表之间存在指向关系,即,将索引值的第一段、第二段和第三段联系起来。例如,以本发明采用的24bp(碱基对)seed为例,在只考虑基因的一条链长度为3gbp,且不对seed做hash处理的情况下,通常一个单元的<index,pos>存储空间需12字节,总计需要36gb的存储空间。而本发明的索引表中一个单元的<index,pos>需6字节的存储空间,总计需要18gb的存储空间。指针表额外需要2gb的存储空间。未拆分时:<index,pos>,index48bit占8个字节,pos32bit占4个字节。拆分后:<index,pos>,index10字节,占2个字节,pos32bit占4个字节。总计都需要3g表项:指针表存储空间:2^26*(32bit(piinter)+2^4*14bit)=2^26*32=2gb总共节省36-(18+2)=16gb空间。s102:从待对比序列中提取预设长度的种子序列,并确定所述种子序列的索引值;其中,本步骤中从待对比序列中提取预设长度的种子序列的操作与s101中提到的从参考序列中逐位提取种子序列的操作相同,需要说明的是在本步骤中得到的种子序列与参考子序列的碱基对的对数是相同的,以便在参考序列上找到与种子序列完全精确匹配的子序列。在得到种子序列的索引值后,从指针表和候选对比位置表中找到与种子序列的索引值相同的参考子序列的索引值。可以理解的是,在本步骤中可以得到多个预设长度的种子序列,作为一种优选的实施方式,可以对待对比序列进行逐位提取得到多个种子序列。需要说明的是,本步骤中所确定的种子序列的索引值应为参考子序列的索引值为同一种类的索引值,即若种子序列的碱基对与参考子序列的碱基对完全一致,那么种子序列的索引值与参考子序列的索引值也应该完全相同。s103:根据所述种子序列的索引值查询所述指针表和所述候选对比位置表判断所述参考序列中是否存在所述种子序列对应的位置信息;若是,则进入s104;若否,则结束流程。本步骤的目的在于找到能够与参考子序列完全精确匹配的种子序列,由于参考子序列和种子序列的碱基对都已经转换为索引值,因此只需要进行比较索引值即可。具体的,由于本实施例将参考子序列的索引值通过指针表和候选对比位置表,指针表相当于基地址,候选对比位置表相当于偏移地址。因此,作为一种优选的实施方式,在根据所述种子序列的索引值判断所述参考序列中是否存在所述种子序列对应的位置信息时,可以先对比索引值的前n位和第n+1至第r-m位,再查找指针表中某一项对应的索引值的后m位的是否与种子序列的索引值的后m位是否一致,若一致则说明找到了能够与参考子序列完全精确匹配的种子序列,候选对比位置表中与该索引值后m位对应的位置信息,则是能够与种子序列完全精确匹配的参考子序列在参考序列上的位置。s104:将所述种子序列作为待扩展序列,根据所述位置信息以所述参考序列为基准对所述待扩展序列进行扩展操作得到中间序列,并对比所述中间序列与所述待对比序列得到基因序列比对结果。其中,本步骤建立在已经得到在参考序列上找到与种子序列完全精确匹配的参考子序列的基础上,由于本实施例默认在得到参考子序列时可以得到参考子序列在参考序列上的位置信息,因此可以将能够在指针表和候选比对位置表查找到的种子序列作为待扩展序列,根据该位置信息对待扩展序列进行扩展操作,需要说明的是,在执行扩展操作的过程中是以参考序列为参考标准的,即得到的中间序列的碱基与参考序列的碱基排列顺序一致。本实施例默认存在记录种子序列在待对比序列上位置信息的操作,因此可以将得到的中间序列按照种子序列在待对比序列上位置信息与待对比序列进行对比得到对比结果。举例说明上述操作,例如待对比序列为ccgttcatgt,种子序列为待对比序列的前4位ccgt,参考序列为ccgttcatat,此时找到与待对比序列完全精确匹配的参考子序列为ccgt,对待对比序列ccgt以参考序列为扩展参考标准对待扩展序列进行扩展操作得到中间序列ccgttcatat,将中间序列与所述待对比序列得到基因序列比对结果。本实施例通过将参考子序列的索引值划分为三段,由索引值的前两段构建指针表,索引值的最后一段和参考子序列在参考序列上的位置构建候选对比位置表,将现有技术中的索引表拆分为指针表和候选对比位置表。由于指针表的行和列分别为索引值的第一段和索引值的第二段,指针表相当于基地址,候选对比位置表相当于偏移地址,因此相对于仅根据索引值和位置信息建立的单表而言,明显的减少了存储索引值占用的存储空间。进一步的,由于采用指针表和候选比对位置表存储索引值节省大量的存储空间,因此可以提高fpga访问指针表和候选比对位置表的效率。本实施例能够降低存储参考序列索引值的表的存储空间,提高基因序列比对速率。下面请参见图2,图2为本申请实施例所提供的一种判断参考序列中是否存在所述种子序列对应的位置信息的流程图;具体步骤可以包括:s201:根据所述种子序列的索引值的前r-m位在所述指针表中查询目标偏移地址;s202:根据所述目标偏移地址查询所述候选对比位置表,判断所述候选对比位置表中是否存在所述种子序列的索引值的后m位;若是,则进入s203;若否,则结束流程s203:则判定所述参考序列中存在所述种子序列的位置信息。在s203之后可以将章子序列设置为待扩展序列。下面请参见图3,图3为本申请实施例所提供的一种对种子序列执行扩展操作的流程图;具体步骤可以包括:s301:将所述种子序列设置为所述待扩展序列;s302:获取所述待扩展序列的索引值的前预设位数作为扩展模块索引值;s303:根据所述扩展模块索引值查询对应的扩展模块,并将所述待扩展序列输入所述扩展模块中得到所述中间序列。举例说明以上操作,扩展模块可以采用分块处理,根据索引值的前2bits分别将待扩展序列送入id前两位为00,01,10,11的扩展模块。在扩展模块内,通过一次fpga的burst访问,返回指针表中256bit的一个单元数据。提高了fpga访问ddr的效率。下面通过实际应用中的实施例说明本申请中进行基因序列比对的操作:步骤1:对参考序列逐位选取24bp的碱基序列,送入hash函数,获得索引值index,存储<index,pos>。本发明设计的索引值采用seed经hash处理后的hashkey值,这样设计的优势在于可以使每个hash桶内的cal单元数量分布均匀。同时为减少存储空间采用允许碰撞的hash函数,例如输入为24bp的seed,48bits,输出为40bits。步骤2:对所有<index,pos>,按照index的字典序排列<index,pos>。步骤3:对所有排序后的<index,pos>,以index的前26bits为指针表的addr,index[27-30]为指针表的off,统计该off内的cal数量。统计pointer的cal数量。指针表与cal表的指针关系请见图4,图4为索引表拆分为指针表和cal表后的结果示意图。cal表就是候选对比位置表。其中,指针表包括addr,pointer以及off三部分。addr为用于获取pointer单元内容的索引值。pointer为一个hash桶的基地址,用于对cal表大块单元的寻址。off为一个hash桶内的子块的偏移地址。为了便于取址,off设计为一个累加值,即本子块之前所有子块的cal单元数量,而不是每一个字块内cal的单元数量。pointer+off[n-1]为hash桶内第n子块的地址。一种特殊情况发生在查询子块0时,偏移地址为0,桶内子块的cal单元的数量即为off[0]。cal表包括key和cal两部分。key用于区别同一子块内不同的seed。在cal表中存储key而不是seed,配合指针表一起寻址cal单元,减少了索引表的存储空间。以本实施例采用的24bpseed为例,在只考虑基因的一条链长度为3gbp,且不对seed做hash处理的情况下,通常一个单元的<index,pos>存储空间需12字节,总计需要36gb的存储空间。而本发明的索引表中一个单元的<index,pos>需6字节的存储空间,总计需要18gb的存储空间。指针表额外需要2gb的存储空间。步骤4:对read逐位选取24bp的seed,送入hash函数,获得索引值index,存储<index,pos>。步骤5:获取cal的表单元地址:对该read的所有<index,pos>,以index的前26bits为指针表的addr发地址获取pointer单元数据,以index[27-30]-1为off表单元的地址id。pointer+off[id]为cal的表单元地址。步骤6:获取cal的表单元数量:off[id+1]-off[id]。步骤7:获取cal表单元数据:对该read的所有index,以index[31-39]位key,在由步骤5确定的cal表单元地址为起始地址,及步骤6确定的cal表单元数量内,获取key匹配的cal表单元数据。步骤8:seed筛选:对该read的所有cal表单元数据,根据seed的<index,pos>获取read的子序列,根据cal的表单元<index,pos>获取参考序列的子序列,比对两个子序列,如果相同则获取参考序列的种子序列,否则舍弃该seed。其中,fpga中对ddr随机访问时,访问一个字节的数据与访问burst容许的最大带宽数据需要的时钟周期是一样的。本发明中,fpga一次访问ddr即可获取指针表的一个单元数据(需要存储空间265bits)。本实施例的seed扩展阶段采用分快处理方法,具体来说,设计了4个seed扩展模块分别用来处理索引值前2bits分别为00,01,10,11的seed的扩展。这样设计的优势在于充分利用了fpga一次访问ddr所允许的最大数据带宽。一次ddr访问即可获取指针表的一个单元数据,获取多个具有共同addr前缀的seed的cal单元地址。步骤9:根据index的前2bits不同分别将seed子序列与参考序列的种子序列送入id为00,01,10,11的seed扩展模块,进行扩展。步骤10:根据4个扩展模块对seed扩展的打分确定最终的比对结果。本实际应用中的实施例提出了一种基于索引表的基因序列比对处理方法,通过对索引表的特殊设计,极大减小了参考序列索引表的存储空间,同时提高了fpga访问ddr的效率。通过对seed扩展进行分块处理,具有共同addr前缀的seed在一个seed扩展模块内进行扩展,通过一次fpga的burst访问,返回指针表中256bit的一个单元数据。提高了fpga访问ddr的效率。请参见图5,图5为本申请实施例所提供的一种基因序列比对的系统的结构示意图;该系统可以包括:索引表确定模块,用于确定待对比序列和参考序列,并根据所述参考序列确定指针表和候选对比位置表;其中,所述候选对比位置表为描述参考子序列在所述参考序列上的位置信息与所述参考子序列的r位索引值的后m位的对应关系,且所述索引值前r-m位相同的参考子序列的位置信息连续排列的表,所述指针表为描述所述索引值前n位相同、第n+1位至第r-m位不同的参考子序列在所述候选对比位置表中的偏移地址的表;所述参考子序列为按照预设长度对所述参考序列逐位提取得到;提取模块,用于从待对比序列中提取预设长度的种子序列,并确定所述种子序列的索引值;查询模块,用于根据所述种子序列的索引值查询所述指针表和所述候选对比位置表判断所述参考序列中是否存在所述种子序列对应的位置信息;若是,则启动对比模块的工作流程;所述对比模块,用于将所述种子序列作为待扩展序列进行扩展操作得到中间序列,并对比所述中间序列与所述待对比序列得到基因序列对比结果。进一步的,索引表确定模块100包括:索引值确定单元,用于对所述参考序列逐位提取预设长度的所述参考子序列,记录所述参考子序列的位置信息,并将所述参考子序列转换为索引值;索引值划分单元,用于按照预设规则将所述索引值进行字节划分得到第一子索引值、第二子索引值和第三子索引值;其中,所述第一子索引值为所述索引值的前n位,所述第三子索引值为所述索引值的后m位,所述第二子索引值为所述索引值的第n+1位至第r-m位;指针表构建单元,用于根据所述第一子索引值和所述第二子索引值构建指针表的行和列;其中,所述指针表的每一行对应不同的第一子索引值,每一列对应不同的第二子索引值,指针表的行数p和列数q满足预设关系;其中,所述预设关系为p=2n,q=2r-m-n;候选对比位置表构建单元,用于根据所述第三索引值与所述第三索引值对应的参考子序列在参考序列上的位置信息按预设的排序规则构建所述候选对比位置表;指针表填写单元,用于根据所述排序规则和所述索引值前r-m位相同,后m位不同的参考子序列的个数填写所述指针表。进一步的,查询模块300包括:偏移地址查询单元,用于根据所述种子序列的索引值的前r-m位在所述指针表中查询目标偏移地址;判断单元,用于根据所述目标偏移地址查询所述候选对比位置表,判断所述候选对比位置表中是否存在所述种子序列的索引值的后m位;若是,则则判定所述参考序列中存在所述种子序列的位置信息。进一步的,所述排序规则为字典排序。进一步的,所述参考子序列的索引值为所述参考子序列经哈希处理后对应的哈希值。进一步的,若所述哈希值的位数为40,则n为26,m为10。进一步的,对比模块400包括:扩展模块索引值单元,用于将所述种子序列设置为所述待扩展序列,并获取所述待扩展序列的索引值的前预设位数作为扩展模块索引值;扩展单元,用于根据所述扩展模块索引值查询对应的扩展模块,并将所述待扩展序列输入所述扩展模块中得到所述中间序列。序列比对单元,用于对比所述中间序列与所述待对比序列得到基因序列比对结果。由于系统部分的实施例与方法部分的实施例相互对应,因此系统部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。本实施例通过将参考子序列的索引值划分为三段,由索引值的前两段构建指针表,索引值的最后一段和参考子序列在参考序列上的位置构建候选对比位置表,将现有技术中的索引表拆分为指针表和候选对比位置表。由于指针表的行和列分别为索引值的第一段和索引值的第二段,指针表相当于基地址,候选对比位置表相当于偏移地址,因此相对于仅根据索引值和位置信息建立的单表而言,明显的减少了存储索引值占用的存储空间。进一步的,由于采用指针表和候选比对位置表存储索引值节省大量的存储空间,因此可以提高fpga访问指针表和候选比对位置表的效率。本实施例能够降低存储参考序列索引值的表的存储空间,提高基因序列比对速率。本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1