本申请涉及基因分析领域,尤其涉及一种快速比对基因数据的方法和比对系统。
背景技术
基因的研究也对人类的重大进步有着深远的影响,基因数据比对也是生物信息学的基本组成和重要基础,基因比对的基本方法是将两个或多个序列排列在一起,标明其相似之处。序列中可以插入间隔,对应的相同或相似的符号排列在同一列上。碱基对可看成是组成dna的基本单位,碱基对是一对相互匹配,根据一定的匹配规则被氢键连接起来的碱基,而组成碱基对的碱基包括a腺嘌呤,t胸腺嘧啶,c胞嘧啶,g鸟嘌呤,匹配规则是a—t,g—c。
基因数据对比是基因数据分析过程中耗时最长的步骤之一,该过程的性能直接影响基因测序技术可用性。目前广泛采用的基因数据分析流程是(thegenomeanalysistoolkit,gatk)流程,基因数据比对是其第一步,基因数据比对过程多采用bwamem算法实现基因数据到参考基因序列的映射。
但该算法是以节省内存为目的进行设计的,算法结构较为复杂,主要是通过串行的方法比对基因,导致基因比对过程耗费资源过大、耗费时间过长,比对效率低下成为了整个基因数据分析过程的性能瓶颈。
技术实现要素:
本申请实施例提供了一种快速比对基因数据的方法、主机、现场可编程门阵列(field-programmablegatearray,fpga)和比对系统。
有鉴于此,本发明第一方面提供了一种快速比对基因数据的方法,包括:
所述fpga从缓存中读取待比对基因和参考基因,所述待比对基因长度为l;
所述fpga根据所述待比对基因和预设算法从所述参考基因中确定多个目标种子,所述目标种子为与所述待比对基因匹配的一定长度的基因序列;
所述fpga从所述多个目标种子选取相似度最高的种子作为最优种子;
所述fpga根据所述最优种子在所述参考序列中的位置截取预设长度的基因序列得到估计序列,所述估计序列的长度大于或等于所述最优种子的长度;
所述fpga将所述最优种子和所述估计序列通过计算最短编辑距离对所述最优种子进行评分,所述评分用于指示所述最优种子的准确性和真实性;
所述fpga根据所述最优种子的评分输出最优的比对结果。
结合本申请实施例第一方面,在本申请实施例第一方面的第一种实施方式中,所述根据所述待比对基因和预设算法从所述参考基因中确定多个目标种子,包括:
根据所述待比对基因的碱基从所述参考基因中确定第一位置,所述第一位置为所述待比对基因与所述参考基因不一致的位置;
根据所述待比对基因和所述第一位置从参考基因中确定目标种子。
结合本申请实施例第一方面至第一方面的第一种实施方式,在本申请实施例第一方面的第二种实施方式中,所述预设算法包括:
伯罗斯惠勒变换bwt算法和哈希算法。
结合本申请实施例第一方面的第二种实施方式中的任一实施方式,在本申请实施例第一方面的第三种实施方式中,所述方法还包括:
根据所述待比对基因的不同位置得到多个最优种子;
根据所述多个最优种子按照预设规则进行整合,所述预设规则为将相同相似度的最优种子进行取舍,对交叉的最优种子进行合并。
结合本申请实施例第一方面的第三种实施方式,在本申请实施例第一方面的第四种实施方式中,所述根据所述待比对基因的不同位置得到多个最优种子之后,所述方法还包括:
预设一定长度为删除标准;
若所述最优种子的长度小于或等于所述删除标准,则删除对应的最优种子。
结合本申请实施例第一方面的第一种实施方式至第一方面的第四种实施方式中的任意一种,在本申请实施例第一方面的第五种实施方式中,所述方法还包括:
对缓存中的所有待比对基因进行处理得到多个最优比对结果;
将所述多个最优的比对结果发送至主机进行处理。
本发明第二方面提供了一种快速比对基因数据的方法,包括:
主机获取待比对基因和参考基因;
主机将所述待比对基因和参考基因发送至fpga的缓存中,所述缓存位于fpga的ddr中;
主机接收fpga发送的比对结果,所述比对结果是fpga根据所述待比对基因和参考基因利用预设的基因比对算法得到的;
主机对所述比对结果进行处理。
结合本申请实施例第二方面,在本申请实施例第二方面的第一种实施方式中,所述获取待比对基因和参考基因之前,所述方法还包括:
主机与所述fpga建立通信连接。
结合本申请实施例第二方面的第一种实施方式,在本申请实施例第二方面的第二种实施方式中:
所述主机获取待比对基因和参考基因之后,所述方法还包括:
对所述待比对基因和所述参考基因进行预处理;
将所述待比对基因和所述参考基因发送到所述缓存中。
结合本申请实施例第二方面至第二方面的第二种实施方式中的任一实施方式,在本申请实施例第二方面的第三种实施方式中,所述方法还包括:
发送启动指令给fpga,所述启动指令用于触发所述fpga启动所述基因比对算法。
本发明第三方面提供了一种fpga,包括:
读取模块,用于从缓存中读取待比对基因和参考基因,所述待比对基因长度为l;
确定模块,用于根据所述待比对基因和预设算法从所述参考基因中确定多个目标种子,所述目标种子为与所述待比对基因匹配的一定长度的基因序列;
选取模块,用于从所述多个目标种子选取相似度最高的种子作为最优种子;
截取模块,用于根据所述最优种子在所述参考序列中的位置截取预设长度的基因序列得到估计序列,所述估计序列的长度大于或等于所述最优种子的长度;
评分模块,用于将所述最优种子和所述估计序列通过计算最短编辑距离对所述最优种子进行评分,所述评分用于指示所述最优种子的准确性和真实性;
输出模块,用于根据所述最优种子的评分输出最优的比对结果。
本发明第四方面提供了一种主机,包括:
获取模块,用于获取待比对基因和参考基因;
发送模块,用于将所述待比对基因和参考基因发送至fpga的缓存中,所述缓存位于fpga的ddr中;
接收模块,用于接收fpga发送的比对结果,所述比对结果是fpga根据所述待比对基因和参考基因利用预设的基因比对算法得到的;
处理模块,用于主机对所述比对结果进行处理。
本申请第五方面提供了一种比对系统,所述比对系统包括主机和现场可编程门阵列fpga,所述方法包括:
所述主机通过pci-e接口与实施fpga建立连接;
所述主机通过pci-e接口发送待比对基因和参考基因至fpga的缓存中;
fpga根据所述待比对基因和参考基因采用基因比对算法得到最优结果;
所述fpga将所述最优结果发送至主机进行分析处理。
本申请第六方面提供一种计算机程序产品,当其在计算机上运行时,使得计算机可以执行上述任一方面的方法。
本申请第七方面提供一种计算机存储介质,用于储存为上述方法所用的计算机软件指令,当其在计算机上运行时,使得计算机可以执行上述中任一方面的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请实施例提供了一种快速比对基因数据的方法,通过挖掘比对过程中的并行性和流水过程,将主机与fpga结合使用,主机负责对待比对基因和参考基因进行预处理,采用fpga硬件平台执行基因数据比对算法核心模块,能够通过并行流水的优化方式提高算法并行度,从而改善算法执行时的吞吐率性能,提高基因比对的效率,合理地对得到的种子进行整合能够减少计算资源,从各个方面的优化可达到对基因比对过程加速的效果。
附图说明
图1为本申请实施例中实现快速比对基因数据方法的整体框架图;
图2为本申请实施例中快速比对基因数据方法的实施例示意图;
图3为本申请实施例中快速比对基因数据方法的另一实施例示意图;
图4为本申请实施例中fpga的模块示意图;
图5为本申请实施例中主机的模块示意图;
图6为本申请实施例中比对系统的结构示意图。
具体实施方式
本申请实施例提供了一种快速比对基因数据的方法,通过挖掘比对过程中的并行性和流水过程,将主机与fpga结合使用,主机负责对待比对基因和参考基因进行预处理,采用fpga硬件平台执行基因数据比对算法核心模块,能够通过并行流水的优化方式提高算法并行度,从而改善算法执行时的吞吐率性能,提高基因比对的效率,合理地对得到的种子进行整合能够减少计算资源,从各个方面的优化可达到对基因比对过程加速的效果。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
基因支持着生命的基本构造和性能。储存着生命的种族、血型、孕育、生长、凋亡等过程的全部信息。环境和遗传的互相依赖,演绎着生命的繁衍、细胞分裂和蛋白质合成等重要生理过程。生物体的生、长、衰、病、老、死等一切生命现象都与基因有关。它也是决定生命健康的内在因素,因此面向快速比对基因算法的研究显得尤为重要。
严格地说,碱基对是一对相互匹配,根据一定的匹配规则被氢键连接起来的碱基,而组成碱基对的碱基包括a腺嘌呤,t胸腺嘧啶,c胞嘧啶,g鸟嘌呤,匹配规则是a—t,g—c,它常被用来衡量dna和rna的长度。
本申请实施例提供了一种快速比对基因数据的方法,实现该方法的整体框架如图1所示:
首先,本申请实施例中的快速比对基因数据的方法采用fpga设计开发语言完成面向fpga平台的kernel描述程序,采用软件设计语言完成通用中央处理器(centralprocessingunit,cpu)的主程序开发。然后采用sdk工具对kernel程序进行编译和布线,生成可在fpga上部署的二进制比特流文件。另一方面,在主机侧采用通用的软件编译器对主机端程序进行编译,生成可在通用处理器cpu上执行的文件,然后通过pci-e通道将fpga的二进制比特流加载到fpga上,完成fpga加速引擎部分的部署。最后,在通用处理器cpu上运行主机端程序,调用fpga上部署的硬件电路对基因数据比对核心算法进行加速。其中,cpu与fpga之间采用pci-e通道连接,进行数据通信,采用fpga板卡上的ddr内存作为数据缓存区。
本申请实施例提供的一种快速比对基因数据的方法流程图如图2所示,该方法应用于比对系统中,所述比对系统包括主机和现场可编程门阵列fpga,所述方法包括:
101、所述fpga从缓存中读取待比对基因和参考基因,所述待比对基因长度为l;
本申请实施例中fpga缓存中的待比对基因和参考基因由主机获取并发送至此,首先,fpga从缓存中取出一条待比对基因,假设长度为l,接下来将该待比对基因和参考基因进行比对得到比对结果。
102、根据所述待比对基因和预设算法从所述参考基因中确定多个目标种子,所述目标种子为参考基因中与所述待比对基因匹配的具有一定长度的基因序列;
预设算法可以为伯罗斯惠勒变换(burrows-wheelertransform,bwt)算法和哈希算法。
可将待比对基因进行相邻移位得到多个基因序列,多个基因序列中存在有重合的碱基对,也可采用哈希算法寻找待比对基因在参考基因中的起始位置,从起始位置开始比对,从而在参考基因上确定相应匹配的基因序列,即目标种子。
103、从所述多个目标种子选取相似度最高的种子作为最优种子;
根据待比对基因从参考基因中匹配出多个目标种子,每个目标种子的长度可能不一致,从中确定长度最长的目标种子为最优种子,长度最长说明与待比对基因中相似的碱基对越多,即相似度越高。
104、根据所述最优种子在所述参考序列中的位置截取预设长度的基因序列得到估计序列,所述估计序列的长度大于或等于所述最优种子的长度;
步骤104确定出的最优种子的长度是与待比对基因进行匹配得到的较为准确的最优种子,具有一定长度的碱基对,本申请实施例需要对该长度的碱基对进行扩充,具体方法可以是确定最优种子在参考基因序列的位置之后,截取在该位置的前后n个碱基对形成一个基因序列作为估计序列,n可根据实际情况按需要进行设置。
105、根据所述最优种子和所述估计序列计算最短编辑距离以对所述最优种子进行评分,所述评分用于指示所述最优种子的准确性和真实性;
106、根据所述最优种子的评分输出最优的比对结果。
本申请实施例中打分机制可以是分值与最短编辑距离成反比,也可以是两者成正比,具体取决于代码的设定,若是分值与最短距离成正比,分值越小则说明最短距离越小,即相似度越高,反之,若分值与最短编辑距离成反比,分值越高,说明最短编辑距离越小,即相似度越高。
将相似度最高的最优种子与参考因比对的结果作为最优的比对结果。
本申请实施例中是以一个待比对基因为例进行说明基因比对过程的具体算法,实际上需要将缓存中的每个待比对基因都进行上述过程,得到对应的结果并返回至主机。
本申请实施例利用fpga执行基因数据比对算法,首先找出与待比对基因相匹配的多个目标种子,并根据匹配长度确定相似度最高的为最优种子,又通过扩充最优种子可得到多个最优种子以及相应的评分,再根据评分进行优选,具备一套合理且完善的筛选种子的方法,经过该套方法筛选出的种子准确性及可信度较高。
可选的,在上述实施例的基础上,本申请提供的快速比对基因数据的方法的第一个可选实施例中,所述根据所述待比对基因和预设算法从所述考基因中确定多个目标种子,包括:
根据所述待比对基因的碱基比对从所述参考基因中确定第一位置,所述第一位置为所述待比对基因与所述参考基因不一致的碱基对的位置;
从所述第一位置进行截取得到的基因序列为目标种子。
本申请首先根据哈希算法大概确定开始比对时参考基因的起始位置,然后对待比对基因在参考基因中进行匹配,假设待比对基因的碱基对个数为100,从参考基因的开始位置进行比对,当比对到第20个碱基对时,发现碱基对不一致,则第20个碱基对的位置则为本申请中的第一位置,开始位置与第一位置之间的基因序列则为目标种子。
可选的,在上述实施例的基础上,本申请提供的快速比对基因数据的方法的第二个可选实施例中,所述预设算法包括:
伯罗斯惠勒变换bwt算法和哈希算法。
本申请实施例中具体用来比对基因数据的算法可以是bwt算法和哈希算法,这两种算法有助于减少计算量,降低计算资源,从而可以提升比对效率。
可选的,在上述实施例的基础上,本申请提供的快速比对基因数据的方法的第三个可选实施例中,所述方法还包括:
根据所述待比对基因的不同位置得到多个最优种子;
根据所述多个最优种子按照预设规则进行整合,所述预设规则为将相同相似度的最优种子进行取舍,对交叉的最优种子进行合并;
具体的,假设首先对第一比对基因进行匹配得到第一最优种子,对种子往左或往右进行一个碱基对的移位得到第二比对基因,再根据第二比对基因进行匹配得到第二最优种子,如果第一最优种子和第二最优种子相似度相同,则取两个最优种子中的任意一个。
本申请实施提供的整合规则有助于减少最优种子数量,提高计算效率,继而提高整个基因比对过程的效率。
可选的,在上述实施例的基础上,本申请提供的快速比对基因数据的方法的第四个可选实施例中,所述方法还包括:所述方法还包括:
预设一定长度为删除标准;
若所述最优种子的长度小于或等于所述删除标准,则删除对应的最优种子。
本申请中可提前预设好删除标准,该删除标准用于筛选出长度较短的最优种子,然后将其删除,此种方式减轻了cpu的工作量,避免了不必要的误差导致计算量增加的问题。
可选的,在上述实施例的基础上,本申请提供的快速比对基因数据的方法的第五个可选实施例中,所述方法还包括:
对缓存中的所有待比对基因进行处理得到多个最优比对结果;
将所述多个最优的比对结果发送至主机进行处理。
需要将缓存中的每个待比对基因都进行上述过程,得到对应的结果并返回至主机。
本申请实施例提供的关于快速比对基因数据方法的第二个实施例如图3所示:
201、主机获取待比对基因和参考基因;
202、主机将所述待比对基因和参考基因发送至fpga的缓存中,所述缓存位于fpga的ddr中;
在此之前,主机与fpga通过pci-e接口进行通信连接,然后在接收到待比对基因和参考基因时将这些数据通过pci-e接口发送至fpga的缓存中。
203、主机接收fpga发送的比对结果,所述比对结果是fpga根据所述待比对基因和参考基因利用预设的基因比对算法得到的;
通过fpga的基因比对算法得到的最优结果将会被发送至主机进行分析处理。
204、主机对所述比对结果进行处理。
本申请实施例中在主机的通用处理器cpu上运行程序,调用fpga上部署的硬件电路对基因数据比对核心算法进行加速。通过主机和fpga相互配合实现本申请实施例中的快速基因比对的方法,能够显著提高比对吞吐性能,降低cpu占用率。
可选的,在上述实施例的基础上,本申请提供的快速比对基因数据的方法的第一个可选实施例中,所述获取待比对基因和参考基因之前,所述方法还包括:
主机与所述fpga建立通信连接。
本申请实施例中在通用处理器cpu上运行主机端程序,调用fpga上部署的硬件电路对基因数据比对核心算法进行加速。
可选的,在上述实施例的基础上,本申请提供的快速比对基因数据的方法的第二个可选实施例中,所述主机获取待比对基因和参考基因之后,所述方法还包括:
对所述待比对基因和所述参考基因进行预处理;
将所述待比对基因和所述参考基因发送到所述缓存中。
本申请实施例中的主机主要负责数据的输入、输出、数据预处理和任务调度,例如获取待比对基因和参考基因,并对这些数据进行简单的预处理。
对数据进行简单的预处理有助于提高数据的处理效率,并过滤掉一些无用的数据,帮助减少主机和fpga的负荷能力。
可选的,在上述实施例的基础上,本申请提供的快速比对基因数据的方法的第三个可选实施例中,
发送启动指令给fpga,所述启动指令用于触发所述fpga启动所述基因比对算法。
本申请实施例提供的fpga的模块结构示意图如图4所示,fpga30具体包括:
读取模块301,用于从缓存中读取待比对基因和参考基因,所述待比对基因长度为l;
确定模块302,用于根据所述待比对基因和预设算法从所述参考基因中确定多个目标种子,所述目标种子为与所述待比对基因匹配的一定长度的基因序列;
选取模块303,用于从所述多个目标种子选取相似度最高的种子作为最优种子;
截取模块304,用于根据所述最优种子在所述参考序列中的位置截取预设长度的基因序列得到估计序列,所述估计序列的长度大于或等于所述最优种子的长度;
评分模块305,用于将所述最优种子和所述估计序列通过计算最短编辑距离对所述最优种子进行评分,所述评分用于指示所述最优种子的准确性和真实性;
输出模块306,用于根据所述最优种子的评分输出最优的比对结果。
本申请实施例提供的主机的模块结构示意图如图5所示,主机40具体包括:
获取模块401,用于获取待比对基因和参考基因;
发送模块402,用于将所述待比对基因和参考基因发送至fpga的缓存中,所述缓存位于fpga的ddr中;
接收模块403,用于接收fpga发送的比对结果,所述比对结果是fpga根据所述待比对基因和参考基因利用预设的基因比对算法得到的;
处理模块404,用于主机对所述比对结果进行处理。
本申请实施例提供的比对系统的框架图如图6所示:
比对系统主要分为主机端和fpga端两部分。其中主机端主要负责数的输入、输出、预处理和任务调度。fpga端负责核心算法的加速运行,主要分为三个功能模块:种子搜索,种子过滤,种子扩充。
种子搜索:内部分为两个功能部分,分别为比对位置计算和生成比对种子两个功能。鉴于访存延迟和加速性能的要求,采用多路并行流水的方式执行,隐藏访存延迟,增加并行度。
种子过滤:对种子搜索过程产生的种子信息进行过滤,筛选掉不符合要求的种子信息。降低后续处理过程的计算量;
种子扩充:包括打分矩阵的计算和扩充结果生成两部分。其中打分矩阵的计算即种子与匹配位置按最优匹配打分结果扩充覆盖到整个read。扩充结果生成即按照打分过程生成对应格式的比对结果;
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。