CN111370064A - 基于simd的哈希函数的基因序列快速分类方法及系统 - Google Patents
基于simd的哈希函数的基因序列快速分类方法及系统 Download PDFInfo
- Publication number
- CN111370064A CN111370064A CN202010196384.4A CN202010196384A CN111370064A CN 111370064 A CN111370064 A CN 111370064A CN 202010196384 A CN202010196384 A CN 202010196384A CN 111370064 A CN111370064 A CN 111370064A
- Authority
- CN
- China
- Prior art keywords
- hash
- classified
- gene sequence
- sequences
- sequence
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16B—BIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
- G16B30/00—ICT specially adapted for sequence analysis involving nucleotides or amino acids
- G16B30/10—Sequence alignment; Homology search
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16B—BIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
- G16B40/00—ICT specially adapted for biostatistics; ICT specially adapted for bioinformatics-related machine learning or data mining, e.g. knowledge discovery or pattern finding
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Health & Medical Sciences (AREA)
- Spectroscopy & Molecular Physics (AREA)
- General Health & Medical Sciences (AREA)
- Biophysics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Biotechnology (AREA)
- Chemical & Material Sciences (AREA)
- Analytical Chemistry (AREA)
- Proteomics, Peptides & Aminoacids (AREA)
- Bioethics (AREA)
- Databases & Information Systems (AREA)
- Epidemiology (AREA)
- Public Health (AREA)
- Software Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本公开公开了基于SIMD的哈希函数的基因序列快速分类方法及系统,包括:基于单指令多数据流SIMD改进的哈希函数,构建已知基因序列的哈希值列表;基于单指令多数据流SIMD改进的哈希函数,构建待分类序列的哈希列表;基于已构建的已知基因序列的哈希值列表和待分类序列的哈希列表,采用基于统计学的抽样算法,将待分类基因序列的向量与所有已知类型基因序列的哈希值进行相似性比较,当相似性高于设定阈值的时候,判断参与碰撞检测的两条序列的相似性高,从而待分类序列属于相似性最高的已知序列的类别。
Description
技术领域
本公开涉及基因比对技术领域,特别是涉及基于SIMD的哈希函数的基因序列快速分类方法及系统。
背景技术
本部分的陈述仅仅是提到了与本公开相关的背景技术,并不必然构成现有技术。
随着高通量生物基因技术的发展,生物基因的数据库规模越来越大。在基于局部对比算法的搜索工具(BasicLocalAlignmentSearchTool,BLAST)刚刚诞生的时候,公开的基因库数据总量不到5千万条核苷酸序列,而现在,一个单独的基因处理工具一次性可以产生超过1万亿条序列。之前的精确比对算法在复杂度上比较高,计算时间非常长,针对于这种数据规模需要新的基因比对算法。近些年来出现流行很多基于统计学估计的非精确比对算法,对于基因数据的比对转化为对基因序列中长度较小的一系列公共子序列片段(k-mer,长度为k的子字符串)的数目的统计,在这一类算法中,一般会用相应的哈希算法将这些子字符串映射成相应的哈希值,从而对于子字符串的统计、计算等操作转化为对相应的哈希值的操作,而MurmurHash哈希算法是其中较为高效的并且应用较为广泛的一种哈希算法。
在实现本公开的过程中,发明人发现现有技术中存在以下技术问题:
现有的基因序列分类速度慢,不适合当前基因数据库规模的处理。
现有的哈希函数的计算速率较慢,在基因数据规模较大的时候成为最耗时的部分。
发明内容
为了解决现有技术的不足,本公开提供了基于SIMD的哈希函数的基因序列快速比对方法及系统;
第一方面,本公开提供了基于SIMD的哈希函数的基因序列快速分类方法;
基于SIMD的哈希函数的基因序列快速分类方法,包括:
基于单指令多数据流SIMD改进的哈希函数,构建已知基因序列的哈希值列表;
基于单指令多数据流SIMD改进的哈希函数,构建待分类序列的哈希列表;
基于已构建的已知基因序列的哈希值列表和待分类序列的哈希列表,采用基于统计学的抽样算法,将待分类基因序列的向量与所有已知类型基因序列的哈希值进行相似性比较,当相似性高于设定阈值的时候,判断参与碰撞检测的两条序列的相似性高,从而待分类序列属于相似性最高的已知序列的类别。
第二方面,本公开还提供了基于SIMD的哈希函数的基因序列快速分类系统;
基于SIMD的哈希函数的基因序列快速分类系统,包括:
第一构建模块,其被配置为:基于单指令多数据流SIMD改进的哈希函数,构建已知基因序列的哈希值列表;
第二构建模块,其被配置为:基于单指令多数据流SIMD改进的哈希函数,构建待分类序列的哈希列表;
分类模块,其被配置为:基于已构建的已知基因序列的哈希值列表和待分类序列的哈希列表,采用基于统计学的抽样算法,将待分类基因序列的向量与所有已知类型基因序列的哈希值进行相似性比较,当相似性高于设定阈值的时候,判断参与碰撞检测的两条序列的相似性高,从而待分类序列属于相似性最高的已知序列的类别。
第三方面,本公开还提供了一种电子设备,包括存储器和处理器以及存储在存储器上并在处理器上运行的计算机指令,所述计算机指令被处理器运行时,完成第一方面所述方法的步骤。
第四方面,本公开还提供了一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成第一方面所述方法的步骤。
与现有技术相比,本公开的有益效果是:
就整个基因比对系统中最耗时的哈希函数(MurmurHash3函数)部分,达到了4倍的加速比。
本公开的基因序列分类速度快,适合当前基因数据库规模的处理。
本公开的哈希函数的计算速率快,在基因数据规模较大的时候能够节省时间,对于该部分的优化对于整个基因序列处理过程的性能有显著提升。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为现有技术的基因序列串行方法流程图;
图2为本申请实施例一的基因序列向量化方法流程图。
具体实施方式
应该指出,以下详细说明都是示例性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
散列函数(Hash function)又称散列算法,哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值(hash values,hashcodes,hash sums,或hashes)的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表。好的散列函数在输入域中很少出现散列冲突。在散列表和数据处理中,不抑制冲突来区别数据,会使得数据库记录更难找到。
散列函数的性质:所有散列函数都有如下一个基本特性:如果两个散列值是不相同的(根据同一函数),那么这两个散列值的原始输入也是不相同的。这个特性是散列函数具有确定性的结果,具有这种性质的散列函数称为单向散列函数。但另一方面,散列函数的输入和输出不是唯一对应关系的,如果两个散列值相同,两个输入值很可能是相同的,但也可能不同,这种情况称为“散列碰撞(collision)”,这通常是两个不同长度的输入值,刻意计算出相同的输出值。输入一些数据计算出散列值,然后部分改变输入值,一个具有强混淆特性的散列函数会产生一个完全不同的散列值。
MurmurHash是一种非加密型哈希函数,适用于一般的哈希检索操作。由AustinAppleby在2008年发明,并出现了多个变种,都已经发布到了公有领域。与其它流行的哈希函数相比,对于规律性较强的key,MurmurHash的随机分布特征表现更良好。当前的版本是MurmurHash3,基于MurmurHash2改进了一些小瑕疵,使得速度更快,实现了32位(低延时)、128位HashKey,尤其对大块的数据,具有较高的平衡性与低碰撞率。
图1为现有技术的基因序列串行方法流程图,其内容是:输入一个基因序列子片段(kmer),这个kmer本质上是一个基因序列的子字符串,将该kmer中字符分两部分进行处理:前边每满128位(16个字符,每个字符是8bit)进行一系列位运算操作,最后余下的不足128位的数据进行单独的位运算操作。最终,根据不同的需求,将结果整合得到一个128位或者64位或者32位的哈希值。
为了解决上述技术问题,本申请提出以下技术方案:
实施例一,本实施例提供了基于SIMD的哈希函数的基因序列快速分类方法;
如图2所示,基于SIMD的哈希函数的基因序列快速分类方法,包括:
S1:基于单指令多数据流SIMD改进的哈希函数,构建已知基因序列的哈希值列表;
S2:基于单指令多数据流SIMD改进的哈希函数,构建待分类序列的哈希列表;
S3:基于已构建的已知基因序列的哈希值列表和待分类序列的哈希列表,采用基于统计学的抽样算法,将待分类基因序列的向量与所有已知类型基因序列的哈希值进行相似性比较,当相似性高于设定阈值的时候,判断参与碰撞检测的两条序列的相似性高,从而待分类序列属于相似性最高的已知序列的类别。
作为一个或多个实施例,所述S1中,基于单指令多数据流SIMD改进的哈希函数,构建已知基因序列的哈希值列表;具体步骤包括:
S10:获取已知类型的基因序列;
S11:将已知类型的基因序列切分出同等大小的M个子序列kmer,将M个kmer封装进向量,然后进行向量化的转置操作;
S12:将转置操作得到的M个已知类型序列的子序列kmer的向量输入到基于单指令多数据流SIMD改进的哈希函数中,经过一系列的向量化的位运算操作,所述改进的哈希函数输出由当前已知类型基因序列的子序列kmer所对应的一系列哈希值所组成的向量,将计算得到的由哈希值所组成的向量解析成哈希值;
S13:继续滑动窗口获取新的子序列kmer,重复S11和S12的操作,直到已知类型的基因序列中所有的kmer都计算出相应的哈希值;进而构建已知基因序列的哈希值列表。
进一步地,所述将已知类型的基因序列切分出同等大小的M个子序列kmer,是将已知类型的基因序列通过滑动窗口的方式切分出同等大小的M个子序列kmer。
作为一个或多个实施例,S2中,基于单指令多数据流SIMD改进的哈希函数,构建待分类序列的哈希列表;具体步骤包括:
S20:获取待分类的基因序列;
S21:将待分类的基因序列进行切分获取设定长度的子序列片段kmer,将M个待分类基因序列的子序列片段封装进向量,然后进行向量化的转置操作;
S22:将转置操作之后的待分类基因序列子序列的向量输入到基于单指令多数据流SIMD改进的哈希函数中,通过一系列的向量化的位运算操作,得到待分类基因序列子序列片段所对应的哈希值构成的向量;将输出的由哈希值所组成的向量解析成哈希值;
S23:继续滑动窗口获取待分类基因序列的子序列kmer,重复S21和S22,直到待分类的基因序列中所有的kmer都计算出相应的哈希值;进而构建出待分类序列的哈希列表。
进一步地,所述将待分类的基因序列进行切分获取设定长度的子序列片段kmer,是将待分类的基因序列通过滑动窗口的方式进行切分获取设定长度的子序列片段kmer。
进一步的,M的取值为8。
作为一个或多个实施例,所述获取已知类型的基因序列,这里的已知类型例如是细菌类型和真菌类型。
作为一个或多个实施例,所述将每个已知类型的基因序列切分成一系列等长的子序列片段(kmer),切分的原则是:滑动窗口,每次滑动一个字符。
例如:某个基因序列为:AGCTTTAAGG,序列长度为length=10
设定的kmer长度为k=5,则滑动窗口切分出的kmer分别为:
AGCTT,GCTTT,CTTTA,TTTAA,TTAAG,TAAGG
Kmer的数量为length-k+1=10-5+1=6个。
若设定的kmer的长度为k=6,则滑动窗口切分出的kmer分别为:
AGCTTT,GCTTTA,CTTTAA,TTTAAG,TTAAGG
Kmer的数量为length-k+1=10-6+1=5
对于序列可以设定不同的kmer长度(kmer就是序列的一个相对较小的子序列片段,默认长度为21,有些序列长度为2^30),从而切分出的kmer数量也不一样,传入哈希函数的是kmer,而不是整条序列。
作为一个或多个实施例,进行向量化的转置操作,原始哈希函数MurmurHash3的实现中,最基本的位运算的操作单位是64bit,所以,针对输入的M个不同的kmer的相同部分进行的操作是一致的。
例如,在基因序列的处理过程中默认kmer的长度经常设置为k=21,如果输入的8个不同的kmer为kmer1,kmer2,…,kmer8,其中kmer1,kmer2,…,kmer8各自的前64位的运算操作是一致的,所以要将这8个kmer的前64位拼成一个512bit向量,而不是从第一个kmer中拿取第一个,第二个,…,第八个64bit组成一个512bit向量。所以要进行一个转置操作。
作为一个或多个实施例,将转置操作得到的M个已知类型序列的子序列kmer的向量输入到基于单指令多数据流SIMD改进的哈希函数中,经过一系列的向量化的位运算操作,所述改进的哈希函数输出由当前已知类型基因序列的子序列kmer所对应的一系列哈希值所组成的向量;将输出的由哈希值所组成的向量解析成哈希值;具体步骤包括:
S121:将M个存有kmer的向量进行转置,再输入到哈希函数中;
S122:将输入的转置之后的M个向量以128位为一个单位再次进行划分,因为M个kmer是等长的,所以这M个向量能够找到一个统一的二次划分:每个向量每满128位就单独划分出来进行一组向量化的位运算操作;
S123:所有满128位的部分处理完毕,最后剩余的不足128位的部分(即tail部分)进行单独的向量化的位运算操作;
S124:将S122的运算结果和S123的运算结果进行向量化的位运算整合,然后将得到的结果向量通过相应指令解析得到M个序列的哈希值。
作为一个或多个实施例,将待分类基因序列的向量与所有已知类型基因序列的哈希值进行相似性比较,是在已知类型基因序列所构建的哈希值集合和待分类基因序列的哈希值所构成的集合之间的jaccard系数来估计两者之间的相似度和距离。
应理解的,所述哈希函数,是指MurmurHash函数。
MurmurHash计算128-bit哈希值的方法如下:
对于传入的参数指针数组(void*key)和相应的数组长度(int len),哈希值的计算分为两部分:block部分和tail部分。按照每16个字节(128bit)为一个单元(block)进行处理,当数组长度len不能被16整除的时候,会留下一个“尾巴”单元(tail),这个“尾巴”单元需要单独进行处理。最终结果是block和tail两部分共同决定,返回一个128位的数组。然后再根据不同的需要将数组转化为相应的整型数组形式。
针对已有的MurmurHash3算法进行了单指令多数据流(SIMD)的向量化操作,具体实现如下:
MurmurHash3中针对输入数据的基本计算单位是64bit,我们采用avx512的指令,一个向量512bit可以存放8个64bit的数据,所以,我们采用的单指令多数据就是运用相同数目针对512bit向量计算指令等价于一次性计算8个数据。
在实现过程中遇到一些相应的问题:
1.数据的打包。如图1所示,在之前,MurmurHash3的输入数据是单个序列子片段数据,现在算法要求数据的输入是多数据合并的向量格式,基本要求是将八个数据打包成一个向量。但是随之而来的问题是:我们实现SIMD向量化形式的MurmurHash3算法的目的是为了优化加速程序,而这个数据打包的过程就是一个在算法之外的额外开销,而且这个过程相对比较耗时。
2.数据格式重组。算法的计算过程中除去最后尾巴部分都是以64bit为一个基本计算单位,但是之前未经过向量化的MurmurHash3算法处理的单个数据不一定只有64bit(即8Byte)。所以,我们单个512bit的向量所装的8*64bit数据不是一个完整的数据,换句话说,第一个向量所装的8*64bit数据是8个完整的原始数据相应的取各自前64bit组成的。(如图2所示)所以,针对于向量化的载入数据的指令,载入的数据要进行重构向量化。
3.尾部数据处理。正如前边所说的,一般数据的基本处理单位是64bit为一个单位,并且在MurmurHash3的实现中针对前边满128bit的部分和最后剩余的部分的位运算操作是不同的。但是输入数据的大小不一定会被128bit整除,所以在处理到最后的时候,会产生一个“尾巴”,在向量化的实现中剩余的“尾巴”部分也需要特别处理。
4.结果的整合以及格式化输出。相对于原始算法单个数据输入单个输出来讲,向量化的实现中结果存在向量中,在实际的应用中要将数据输出格式与外界相匹配。
针对遇到的这些问题的解决方法:
1.数据的打包和数据重组处理:对于数据的打包和重构格式化我们合并在一起处理,将8个(一个512bit向量中所装的64bit原始数据数量为8)的需要计算哈希值的字符数组载入到相应的8个向量之中,但是我们需要将这八个向量中的每个64bit单位进行单指令多数据流并行计算,所以,我们将这8个向量进行了转置操作,同样这个转置操作也是通过向量化的高效形式实现的。
2.尾部数据的处理。数据尾巴部分的数据是不一定是满的128bit,在原始的代码中采用的是switch case分支判断的操作,在向量化的过程中并没有相对应的指令,我们通过相应的掩码代替了其中的分支判断,从而更有利于向量化操作。
3.对于计算结束之后的结果整合以及格式化输出。在之前的操作之中,对于数据的输入是向量形式的,但是要保证对于最终结果的输出与原始结果保持一致。并且在整个计算过程中操作的数据是原始数据转置之后的结果,所以在计算完成之后,要将结果重新组织,运用与之前向量化相关的向量化指令,将结果转置回去并存储输出。
对于程序的进一步优化:经过以上的操作之后,我们发现在计算过程中的相关向量化指令之间存在着一定的依赖,从而导致流水线依赖,性能并不是很高。所以我们采用了多路展开并行的操作,填充了流水线,从而进一步提升了程序的加速比。
原始串行化版本实现和优化后并行化版本实现如图2所示,(串行版本一次计算一个哈希值,并行版本一次计算8个哈希值。)程序优化结果:通过以上的优化手段,我们取得了相对于原始开源版本有四倍的加速比。
实施例二,本实施例还提供了基于SIMD的哈希函数的基因序列快速分类系统;
基于SIMD的哈希函数的基因序列快速分类系统,包括:
第一构建模块,其被配置为:基于单指令多数据流SIMD改进的哈希函数,构建已知基因序列的哈希值列表;
第二构建模块,其被配置为:基于单指令多数据流SIMD改进的哈希函数,构建待分类序列的哈希列表;
分类模块,其被配置为:基于已构建的已知基因序列的哈希值列表和待分类序列的哈希列表,采用基于统计学的抽样算法,将待分类基因序列的向量与所有已知类型基因序列的哈希值进行相似性比较,当相似性高于设定阈值的时候,判断参与碰撞检测的两条序列的相似性高,从而待分类序列属于相似性最高的已知序列的类别。
实施例三,本实施例还提供了一种电子设备,包括存储器和处理器以及存储在存储器上并在处理器上运行的计算机指令,所述计算机指令被处理器运行时,完成实施例一所述方法的步骤。
实施例四,本实施例还提供了一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成实施例一所述方法的步骤。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.基于SIMD的哈希函数的基因序列快速分类方法,其特征是,包括:
基于单指令多数据流SIMD改进的哈希函数,构建已知基因序列的哈希值列表;
基于单指令多数据流SIMD改进的哈希函数,构建待分类序列的哈希列表;
基于已构建的已知基因序列的哈希值列表和待分类序列的哈希列表,采用基于统计学的抽样算法,将待分类基因序列的向量与所有已知类型基因序列的哈希值进行相似性比较,当相似性高于设定阈值的时候,判断参与碰撞检测的两条序列的相似性高,从而待分类序列属于相似性最高的已知序列的类别。
2.如权利要求1所述的方法,其特征是,基于单指令多数据流SIMD改进的哈希函数,构建已知基因序列的哈希值列表;具体步骤包括:
S10:获取已知类型的基因序列;
S11:将已知类型的基因序列切分出同等大小的M个子序列kmer,将M个kmer封装进向量,然后进行向量化的转置操作;
S12:将转置操作得到的M个已知类型序列的子序列kmer的向量输入到基于单指令多数据流SIMD改进的哈希函数中,经过一系列的向量化的位运算操作,所述改进的哈希函数输出由当前已知类型基因序列的子序列kmer所对应的一系列哈希值所组成的向量;将计算得到的由哈希值所组成的向量解析成哈希值;
S13:继续滑动窗口获取新的子序列kmer,重复S11和S12的操作,直到已知类型的基因序列中所有的kmer都计算出相应的哈希值;进而构建已知基因序列的哈希值列表。
3.如权利要求2所述的方法,其特征是,所述将已知类型的基因序列切分出同等大小的M个子序列kmer,是将已知类型的基因序列通过滑动窗口的方式切分出同等大小的M个子序列kmer。
4.如权利要求1所述的方法,其特征是,基于单指令多数据流SIMD改进的哈希函数,构建待分类序列的哈希列表;具体步骤包括:
S20:获取待分类的基因序列;
S21:将待分类的基因序列进行切分获取设定长度的子序列片段kmer,将M个待分类基因序列的子序列片段封装进向量,然后进行向量化的转置操作;
S22:将转置操作之后的待分类基因序列子序列的向量输入到基于单指令多数据流SIMD改进的哈希函数中,通过一系列的向量化的位运算操作,得到待分类基因序列子序列片段所对应的哈希值构成的向量;将输出的由哈希值所组成的向量解析成哈希值;
S23:继续滑动窗口获取待分类基因序列的子序列kmer,重复S21和S22,直到待分类的基因序列中所有的kmer都计算出相应的哈希值;进而构建出待分类序列的哈希列表。
5.如权利要求4所述的方法,其特征是,所述将待分类的基因序列进行切分获取设定长度的子序列片段kmer,是将待分类的基因序列通过滑动窗口的方式进行切分获取设定长度的子序列片段kmer。
6.如权利要求2所述的方法,其特征是,将转置操作得到的M个已知类型序列的子序列kmer的向量输入到基于单指令多数据流SIMD改进的哈希函数中,经过一系列的向量化的位运算操作,所述改进的哈希函数输出由当前已知类型基因序列的子序列kmer所对应的一系列哈希值所组成的向量;将输出的由哈希值所组成的向量解析成哈希值;具体步骤包括:
S121:将M个存有kmer的向量进行转置,再输入到哈希函数中;
S122:将输入的转置之后的M个向量以128位为一个单位再次进行划分,因为M个kmer是等长的,所以这M个向量能够找到一个统一的二次划分:每个向量每满128位就单独划分出来进行一组向量化的位运算操作;
S123:所有满128位的部分处理完毕,最后剩余的不足128位的部分进行单独的向量化的位运算操作;
S124:将S122的运算结果和S123的运算结果进行向量化位的运算整合,然后将得到的结果向量通过相应指令解析得到M个序列的哈希值。
7.如权利要求1所述的方法,其特征是,将待分类基因序列的向量与所有已知类型基因序列的哈希值进行相似性比较,是在已知类型基因序列所构建的哈希值集合和待分类基因序列的哈希值所构成的集合之间的jaccard系数来估计两者之间的相似度和距离。
8.基于SIMD的哈希函数的基因序列快速分类系统,其特征是,包括:
第一构建模块,其被配置为:基于单指令多数据流SIMD改进的哈希函数,构建已知基因序列的哈希值列表;
第二构建模块,其被配置为:基于单指令多数据流SIMD改进的哈希函数,构建待分类序列的哈希列表;
分类模块,其被配置为:基于已构建的已知基因序列的哈希值列表和待分类序列的哈希列表,采用基于统计学的抽样算法,将待分类基因序列的向量与所有已知类型基因序列的哈希值进行相似性比较,当相似性高于设定阈值的时候,判断参与碰撞检测的两条序列的相似性高,从而待分类序列属于相似性最高的已知序列的类别。
9.一种电子设备,其特征是,包括存储器和处理器以及存储在存储器上并在处理器上运行的计算机指令,所述计算机指令被处理器运行时,完成权利要求1-7任一项方法所述的步骤。
10.一种计算机可读存储介质,其特征是,用于存储计算机指令,所述计算机指令被处理器执行时,完成权利要求1-7任一项方法所述的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010196384.4A CN111370064B (zh) | 2020-03-19 | 2020-03-19 | 基于simd的哈希函数的基因序列快速分类方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010196384.4A CN111370064B (zh) | 2020-03-19 | 2020-03-19 | 基于simd的哈希函数的基因序列快速分类方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111370064A true CN111370064A (zh) | 2020-07-03 |
CN111370064B CN111370064B (zh) | 2023-05-05 |
Family
ID=71211884
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010196384.4A Active CN111370064B (zh) | 2020-03-19 | 2020-03-19 | 基于simd的哈希函数的基因序列快速分类方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111370064B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112259167A (zh) * | 2020-10-22 | 2021-01-22 | 深圳华大基因科技服务有限公司 | 基于高通量测序的病原体分析方法、装置和计算机设备 |
CN113496762A (zh) * | 2021-05-20 | 2021-10-12 | 山东大学 | 一种生物基因序列的概要数据生成方法及系统 |
WO2023274497A1 (en) | 2021-06-28 | 2023-01-05 | Voredos | N-hamming distance search and n-hamming distance search index |
CN116168765A (zh) * | 2023-04-25 | 2023-05-26 | 山东大学 | 基于改进strobemer的基因序列生成方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104239750A (zh) * | 2014-08-25 | 2014-12-24 | 北京百迈客生物科技有限公司 | 基于高通量测序数据的基因组从头组装方法 |
CN106096332A (zh) * | 2016-06-28 | 2016-11-09 | 深圳大学 | 面向存储的dna序列的并行快速匹配方法及其系统 |
WO2017004589A1 (en) * | 2015-07-02 | 2017-01-05 | Edico Genome, Corp. | Bioinformatics systems, apparatuses, and methods executed on an integrated circuit processing platform |
WO2018000174A1 (zh) * | 2016-06-28 | 2018-01-04 | 深圳大学 | 面向存储的dna序列的并行快速匹配方法及其系统 |
CN108141225A (zh) * | 2016-07-14 | 2018-06-08 | 华为技术有限公司 | 使用simd引擎的通用数据压缩 |
-
2020
- 2020-03-19 CN CN202010196384.4A patent/CN111370064B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104239750A (zh) * | 2014-08-25 | 2014-12-24 | 北京百迈客生物科技有限公司 | 基于高通量测序数据的基因组从头组装方法 |
WO2017004589A1 (en) * | 2015-07-02 | 2017-01-05 | Edico Genome, Corp. | Bioinformatics systems, apparatuses, and methods executed on an integrated circuit processing platform |
CN106096332A (zh) * | 2016-06-28 | 2016-11-09 | 深圳大学 | 面向存储的dna序列的并行快速匹配方法及其系统 |
WO2018000174A1 (zh) * | 2016-06-28 | 2018-01-04 | 深圳大学 | 面向存储的dna序列的并行快速匹配方法及其系统 |
CN108141225A (zh) * | 2016-07-14 | 2018-06-08 | 华为技术有限公司 | 使用simd引擎的通用数据压缩 |
Non-Patent Citations (2)
Title |
---|
ZEKUN YIN等: "DGCF:A Distributed Greedy Clustering Framework for Large-scale Genomic Sequences" * |
张庆科等: "基于随机维度划分与学习的粒子群优化算法" * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112259167A (zh) * | 2020-10-22 | 2021-01-22 | 深圳华大基因科技服务有限公司 | 基于高通量测序的病原体分析方法、装置和计算机设备 |
CN112259167B (zh) * | 2020-10-22 | 2022-09-23 | 深圳华大基因科技服务有限公司 | 基于高通量测序的病原体分析方法、装置和计算机设备 |
CN113496762A (zh) * | 2021-05-20 | 2021-10-12 | 山东大学 | 一种生物基因序列的概要数据生成方法及系统 |
CN113496762B (zh) * | 2021-05-20 | 2022-09-27 | 山东大学 | 一种生物基因序列的概要数据生成方法及系统 |
WO2023274497A1 (en) | 2021-06-28 | 2023-01-05 | Voredos | N-hamming distance search and n-hamming distance search index |
CN116168765A (zh) * | 2023-04-25 | 2023-05-26 | 山东大学 | 基于改进strobemer的基因序列生成方法及系统 |
CN116168765B (zh) * | 2023-04-25 | 2023-08-18 | 山东大学 | 基于改进strobemer的基因序列生成方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111370064B (zh) | 2023-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111370064B (zh) | 基于simd的哈希函数的基因序列快速分类方法及系统 | |
Bowe et al. | Succinct de Bruijn graphs | |
US11372929B2 (en) | Sorting an array consisting of a large number of elements | |
CN110569629A (zh) | 二进制代码文件溯源方法 | |
US10628124B2 (en) | Stochastic rounding logic | |
CN111209341B (zh) | 区块链的数据存储方法、装置、设备及介质 | |
Hall-Andersen et al. | Generating graphs packed with paths: Estimation of linear approximations and differentials: Estimation of linear approximations and differentials | |
US20130185319A1 (en) | Compression pattern matching | |
WO2019108963A1 (en) | Accelerated filtering, grouping and aggregation in a database system | |
CN113496762B (zh) | 一种生物基因序列的概要数据生成方法及系统 | |
CN116205244B (zh) | 一种数字信号处理结构 | |
Bisson et al. | A cuda implementation of the pagerank pipeline benchmark | |
CN110708160B (zh) | 基于sm2算法标量乘法编码的抗侧信道攻击方法及系统 | |
Hayfron-Acquah et al. | Improved selection sort algorithm | |
KR101428770B1 (ko) | 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법 | |
CN111357203A (zh) | 用于将大数据变换成较小的表示的系统和方法 | |
JP6096084B2 (ja) | トラヒック走査装置及び方法 | |
CN115088038A (zh) | 基于新上下文的经比对的测序数据中的改进质量值压缩框架 | |
Anderson et al. | An FPGA-based hardware accelerator supporting sensitive sequence homology filtering with profile hidden Markov models | |
Wirawan et al. | High performance protein sequence database scanning on the Cell Broadband Engine | |
Dude et al. | A Fast SIMD-Based Chunking Algorithm. | |
Kim et al. | Dual pattern compression using data-preprocessing for large-scale gpu architectures | |
KR101118594B1 (ko) | 룩업 테이블 공유 장치 및 방법 | |
JP2005242668A (ja) | パターンマッチング装置および方法ならびにプログラム | |
Straszynski et al. | Faster Recovery of Approximate Periods over Edit Distance |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |