CN105335624B - 一种基于位图的基因序列片段快速定位方法 - Google Patents
一种基于位图的基因序列片段快速定位方法 Download PDFInfo
- Publication number
- CN105335624B CN105335624B CN201510648621.5A CN201510648621A CN105335624B CN 105335624 B CN105335624 B CN 105335624B CN 201510648621 A CN201510648621 A CN 201510648621A CN 105335624 B CN105335624 B CN 105335624B
- Authority
- CN
- China
- Prior art keywords
- gene order
- bitmap
- key
- fragment
- value
- 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.)
- Active
Links
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
- G16B20/00—ICT specially adapted for functional genomics or proteomics, e.g. genotype-phenotype associations
Landscapes
- Bioinformatics & Cheminformatics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Proteomics, Peptides & Aminoacids (AREA)
- Biotechnology (AREA)
- Biophysics (AREA)
- Genetics & Genomics (AREA)
- Molecular Biology (AREA)
- Chemical & Material Sciences (AREA)
- Bioinformatics & Computational Biology (AREA)
- Analytical Chemistry (AREA)
- Evolutionary Biology (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Spectroscopy & Molecular Physics (AREA)
- Theoretical Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于位图的基因序列片段快速定位方法,步骤包括:构造位图,将基因参考链中各基因序列片段按位循环偏移生成多个基因序列片段向量,映射到位图中的唯一数据位并由0置1,统计同行所在列之前出现1的次数t,将键值对存放在数据库中以该数据位的行号R对应的哈希桶的第t个位置;如果所有数据位全已被置1,则加入冲突集合中;将待定位基因序列片段按位循环偏移生成多个基因序列片段向量并映射到位图中的唯一数据位进行定位哈希数据表。本发明既能够快速滤除不命中的查询数据,又能够给出哈希桶内较为精确地数据位置、大大加速哈希分桶方式组织数据查询过程,具有空间效率高、定位速度快、定位精确的优点。
Description
技术领域
本发明涉及基因测序技术,具体涉及一种基于位图的基因序列片段快速定位方法。
背景技术
基因片段定位技术是当前高通量基因测序的基础。通过对高通量测序,可以产生大量基因序列片段,实际实验发现,其中大部分基因序列片段在较长参考基因序列中能够找到精确的完全匹配。参考基因序列可以看作是由A、C、G、T4个字母组成的一个连续的字符串,其长度通常能够远超过109个字符,从这样长的参考基因序列中的每一个字符开始,截取n个字符作为Key-Value数据库中的Key,其所在参考链上的位置及其它附带信息作为Value,可以组织成一个庞大的Key-Value数据库。
通常来说,Key-Value存储与查询采用哈希并分桶的方式是效率较高的。但在一个109个字符以上的Key-Value对中进行存储与查询,其操作的计算量仍旧非常巨大,尤其若查询的Key根本不在Key-Value数据库中时,Key-Value数据库为此需要查询遍历对应桶内的所有元素,其操作完成时间被最大化,导致大量计算与查询浪费。若能在查询前,通过简单计算,快速地判定一个待查询Key一定不在数据库中,并能给出对应桶内的较为精确地数据位置,则可以大大降低不必要的桶内遍历查询操作。
Bloom Filter(布隆过滤器)技术则用于通过简单计算,快速地判定一个待查询Key一定不在数据库中。Bloom Filter技术是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter通过极少的错误换取了存储空间的极大节省。Bloom Filter使用k个相互独立的哈希函数(哈希Function),它们分别将集合中的每个元素映射到{1,…,m}的范围中。对任意一个元素x,第i个哈希函数映射的位置hi(x)就会被置为1(1≤i≤k)。在判断y是否属于这个集合时,我们对y应用k次哈希函数,如果所有hi(y)的位置都是1(1≤i≤k),那么我们就认为y是集合中的元素,否则就认为y不是集合中的元素。综上可知,Bloom Filter的设计的目的主要是面向绝大部分查询数据都不命中数据库中数据的情形,其缺点是:它经过k个复杂哈希函数的运算,只能给出一个简单的“可能在”或者“一定不在”的结果,实际查询过程中,若绝大多数数据可以命中集合,那么Bloom Filter的计算可能反而成为负担。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种既能够快速滤除不命中的查询数据,又能够给出哈希桶内较为精确地数据位置、大大加速哈希分桶方式组织数据查询过程,空间效率高、定位速度快、定位精确的基于位图的基因序列片段快速定位方法。
为了解决上述技术问题,本发明采用的技术方案为:
一种基于位图的基因序列片段快速定位方法,步骤包括:
1)构造用于存储基因序列片段信息的位图,位图的每一个数据位被初始化为0;
2)将基因参考链中各基因序列片段按位循环偏移生成多个基因序列片段向量,将基因序列片段向量采用哈希函数映射到位图中的唯一数据位并将数据位由0置1,统计数据位所在行R从第0列开始到数据位所在列之间所有数据位的出现1的次数t,将基因序列片段向量及其附带信息构成的键值对<Keyt,Valuet>存放在数据库中以该数据位的行号R对应的哈希桶的第t个位置;如果某个基因序列片段的多个基因序列片段向量的所有数据位全已被置1,则将该基因序列片段加入冲突集合ConflictSet中;
3)需要进行基因序列片段定位时,将待定位基因序列片段按位循环偏移生成多个基因序列片段向量,将基因序列片段向量采用哈希函数映射到位图中的唯一数据位,如果数据位为1则统计数据位所在行R从第0列开始到数据位所在列之间所有数据位的出现1的次数t,从数据库中取出行号R对应的哈希桶的第t个位置存放的键值对<Keyt,Valuet>,如果键值对<Keyt,Valuet>的键Keyt和待定位基因序列片段相同,则返回键值对<Keyt,Valuet>的值Valuet,如果所有基因序列片段向量的数据位为0,则在冲突集合ConflictSet中查找当前基因序列片段的键值对<Keyt,Valuet>,如果查找成功则返回键值对<Keyt,Valuet>的值Valuet,否则判定当前基因序列片段一定不在基因参考链中。
优选地,所述步骤2)的详细步骤包括:
2.1)从基因参考链中取出一个基因序列片段作为当前基因序列片段;
2.2)将当前基因序列片段按位循环偏移生成多个基因序列片段向量,取出一个基因序列片段向量作为当前基因序列片段向量;
2.3)通过哈希函数映射将当前基因序列片段向量的第一区间内的数据映射至位图行范围内的整数空间,将哈希函数映射的结果为当前基因序列片段向量的行号;根据当前基因序列片段向量的第二区间内的数据计算当前基因序列片段向量的列号;
2.4)读取当前基因序列片段向量的行号、列号在位图中对应的数据位,如果该数据位的值为0则将数据位置1;否则,判定当前基因序列片段向量无法索引到0;
2.5)判断当前基因序列片段的所有基因序列片段向量是否已经处理完毕,如果尚未处理完毕,则选择下一个基因序列片段向量作为当前基因序列片段向量,跳转执行步骤2.3);如果已经处理完毕,则判断当前基因序列片段的所有当前基因序列片段向量是否均无法索引到0,如果是均无法索引到0,则将当前基因序列片段的键值对<Keyt,Valuet>加入冲突集合ConflictSet中;
2.6)判断基因参考链是否已经处理完毕,如果尚未处理完毕,则跳转执行步骤2.1);否则,扫描位图,针对位图中每一个被置1的数据位,统计位图中数据位所在行R从第0列开始到数据位所在列之间所有数据位的出现1的次数t,将该数据位唯一对应的基因序列片段向量及其附带信息构成的键值对<Keyt,Valuet>存放在数据库中以该数据位的行号R对应的哈希桶的第t个位置,在位图全部扫描完毕后,位图与键值对数据库构建完毕。
优选地,所述步骤3)的详细步骤包括:
3.1)需要进行基因序列片段定位时,将待定位基因序列片段按位循环偏移生成多个基因序列片段向量;
3.2)取出一个基因序列片段向量作为当前基因序列片段向量;
3.3)通过哈希函数映射将当前基因序列片段向量的第一区间内的数据映射至位图行范围的整数空间,将哈希函数映射的结果为当前基因序列片段向量的行号;根据当前基因序列片段向量的第二区间内的数据计算当前基因序列片段向量的列号;
3.4)读取当前基因序列片段向量的行号、列号在位图中对应的数据位,如果该数据位的值为0,则判断定位失败;如果该数据位的值为1,则统计位图中数据位所在行R从第0列开始到数据位所在列之间所有数据位的出现1的次数t,在数据库中以该数据位的行号R对应的哈希桶的第t个位置读出键值对<Keyt,Valuet>,判断键值对<Keyt,Valuet>的键Keyt和待定位基因序列片段是否相同,如果相同则返回键值对<Keyt,Valuet>的值Valuet,如果和待定位基因序列片段不同,则跳转执行下一步;
3.5)判断是否所有基因序列片段向量已经处理完毕,如果尚未处理完毕,则跳转执行步骤3.2);如果已经处理完毕,则判定是否所有基因序列片段向量均为定位失败,在冲突集合ConflictSet中查找当前基因序列片段的键值对<Keyt,Valuet>,如果查找成功则返回键值对<Keyt,Valuet>的值Valuet,否则判定当前基因序列片段一定不在基因参考链中。
优选地,所述步骤2.2)的详细步骤包括:将当前基因序列片段重新编码为长度为2L位的序列原始比特向量,其中L为当前基因序列片段的长度,将所述序列原始比特向量按照指定的步长分别进行n次循环偏移,得到n个新的基因序列片段向量;所述步骤3.1)中将待定位基因序列片段按位循环偏移生成多个基因序列片段向量的详细步骤包括:将待定位基因序列片段重新编码为长度为2L位的序列原始比特向量,其中L为当前基因序列片段的长度,将所述序列原始比特向量按照指定的步长分别进行n次循环偏移,得到n个新的基因序列片段向量。
优选地,所述步骤2.3)和3.3)中的第一区间具体是指当前基因序列片段向量前端的第一指定数量位,所述第一指定数量位为2*(L-4)位,其中L为当前基因序列片段的长度。
优选地,所述步骤2.3)和3.3)中的第二区间具体是指当前基因序列片段向量后端的第二指定数量位,所述步骤2.3)和3.3)中具体是指根据Ci*4+i计算当前基因序列片段向量的列号,其中Ci为当前基因序列片段向量后端的第二指定数量位,i为当前基因序列片段向量的循环偏移次数。
优选地,所述第二指定数量位为8位。
优选地,所述循环偏移具体是指循环左移。
优选地,所述步骤1)中构造用于存储基因序列片段信息的位图时,位图为2RS行、预设列的位图,且行数中的指数RS的计算表达式如式(1)所示;
RS=「log2(n/(fp*CS))] (1)
式(1)中,RS为位图的行数中的指数,n为基因参考链的长度,fp为预设的位图空闲率,CS为位图的预设列数。
优选地,所述位图的预设列数CS为1024。
本发明基于位图的基因序列片段快速定位方法具有下述优点:本发明通过构造用于存储基因序列片段信息的位图,将基因参考链中各基因序列片段按位循环偏移生成多个基因序列片段向量映射到位图存放在数据库中以该数据位的行号R对应的哈希桶的第t个位置或者加入冲突集合ConflictSet中;需要进行基因序列片段定位时,将待定位基因序列片段按位循环偏移生成多个基因序列片段向量,将基因序列片段向量采用哈希函数映射到位图中的唯一数据位,从而进行定位判定,既能够快速滤除不命中的查询数据,又能够给出哈希桶内较为精确地数据位置、大大加速哈希分桶方式组织数据查询过程,具有空间效率高、定位速度快、定位精确的优点。
附图说明
图1为本发明实施例方法的基本流程示意图。
图2为本发明实施例方法步骤2)的原理示意图。
图3为本发明实施例方法步骤3)的原理示意图。
具体实施方式
如图1所示,本实施例基于位图的基因序列片段快速定位方法的步骤包括:
1)构造用于存储基因序列片段信息的位图,位图的每一个数据位被初始化为0;
2)将基因参考链中各基因序列片段按位循环偏移生成多个基因序列片段向量,将基因序列片段向量采用哈希函数映射到位图中的唯一数据位并将数据位由0置1,统计数据位所在行R从第0列开始到数据位所在列之间所有数据位的出现1的次数t,将基因序列片段向量及其附带信息构成的键值对<Keyt,Valuet>存放在数据库中以该数据位的行号R对应的哈希桶的第t个位置;如果某个基因序列片段的多个基因序列片段向量的所有数据位全已被置1,则将该基因序列片段加入冲突集合ConflictSet中;
3)需要进行基因序列片段定位时,将待定位基因序列片段按位循环偏移生成多个基因序列片段向量,将基因序列片段向量采用哈希函数映射到位图中的唯一数据位,如果数据位为1则统计数据位所在行R从第0列开始到数据位所在列之间所有数据位的出现1的次数t,从数据库中取出行号R对应的哈希桶的第t个位置存放的键值对<Keyt,Valuet>,如果键值对<Keyt,Valuet>的键Keyt和待定位基因序列片段相同,则返回键值对<Keyt,Valuet>的值Valuet,如果所有基因序列片段向量的数据位为0,则在冲突集合ConflictSet中查找当前基因序列片段的键值对<Keyt,Valuet>,如果查找成功则返回键值对<Keyt,Valuet>的值Valuet,否则判定当前基因序列片段一定不在基因参考链中。
本实施例中,步骤1)中构造用于存储基因序列片段信息的位图时,位图为2RS行、预设列的位图,且行数中的指数RS的计算表达式如式(1)所示;
RS=「log2(n/(fp*CS))] (1)
式(1)中,RS为位图的行数中的指数,n为基因参考链的长度,fp为预设的位图空闲率,CS为位图的预设列数。本实施例中,位图的预设列数CS为1024,因此位图可表示为Bitmap[2RS][1024]。位图空闲率fp是位图中为1的位数除以位图中得比特总数,位图空闲率fp越低,在制作位图过程中的冲突概率越低(冲突指,一个预插入的Key经计算得到的位图行列号对应的位图数据位已经为1,表示有冲突),但该值越低,位图所占空间越大,通常位图空闲率fp可取值是5%。
本实施例中,所述步骤2)的详细步骤包括:
2.1)从基因参考链中取出一个基因序列片段作为当前基因序列片段;如图2所示,本实施例中从基因参考链中取出一个基因序列片段AGTAC……AGTAC作为当前基因序列片段,来对在位图中插入当前基因序列片段的过程进行说明;
2.2)将当前基因序列片段按位循环偏移生成多个基因序列片段向量,取出一个基因序列片段向量作为当前基因序列片段向量;
2.3)通过哈希函数映射将当前基因序列片段向量的第一区间内的数据映射至位图行范围内的整数空间,将哈希函数映射的结果为当前基因序列片段向量的行号;根据当前基因序列片段向量的第二区间内的数据计算当前基因序列片段向量的列号;
2.4)读取当前基因序列片段向量的行号、列号在位图中对应的数据位,如果该数据位的值为0则将数据位置1;否则,判定当前基因序列片段向量无法索引到0;
2.5)判断当前基因序列片段的所有基因序列片段向量是否已经处理完毕,如果尚未处理完毕,则选择下一个基因序列片段向量作为当前基因序列片段向量,跳转执行步骤2.3);如果已经处理完毕,则判断当前基因序列片段的所有当前基因序列片段向量是否均无法索引到0,如果是均无法索引到0,则将当前基因序列片段的键值对<Keyt,Valuet>加入冲突集合ConflictSet中;
2.6)判断基因参考链是否已经处理完毕,如果尚未处理完毕,则跳转执行步骤2.1);否则,扫描位图,针对位图中每一个被置1的数据位,统计位图中数据位所在行R从第0列开始到数据位所在列之间所有数据位的出现1的次数t,将该数据位唯一对应的基因序列片段向量及其附带信息构成的键值对<Keyt,Valuet>存放在数据库中以该数据位的行号R对应的哈希桶的第t个位置,在位图全部扫描完毕后,位图与键值对数据库构建完毕。
本实施例中,所述步骤3)的详细步骤包括:
3.1)需要进行基因序列片段定位时,将待定位基因序列片段按位循环偏移生成多个基因序列片段向量;
3.2)取出一个基因序列片段向量作为当前基因序列片段向量;
3.3)通过哈希函数映射将当前基因序列片段向量的第一区间内的数据映射至位图行范围的整数空间,将哈希函数映射的结果为当前基因序列片段向量的行号;根据当前基因序列片段向量的第二区间内的数据计算当前基因序列片段向量的列号;
3.4)读取当前基因序列片段向量的行号、列号在位图中对应的数据位,如果该数据位的值为0,则判断定位失败;如果该数据位的值为1,则统计位图中数据位所在行R从第0列开始到数据位所在列之间所有数据位的出现1的次数t,在数据库中以该数据位的行号R对应的哈希桶的第t个位置读出键值对<Keyt,Valuet>,判断键值对<Keyt,Valuet>的键Keyt和待定位基因序列片段是否相同,如果相同则返回键值对<Keyt,Valuet>的值Valuet,如果和待定位基因序列片段不同,则跳转执行下一步;
3.5)判断是否所有基因序列片段向量已经处理完毕,如果尚未处理完毕,则跳转执行步骤3.2);如果已经处理完毕,则判定是否所有基因序列片段向量均为定位失败,在冲突集合ConflictSet中查找当前基因序列片段的键值对<Keyt,Valuet>,如果查找成功则返回键值对<Keyt,Valuet>的值Valuet,否则判定当前基因序列片段一定不在基因参考链中。由此可见,本实施例中若待定位基因序列片段不在数据库的哈希表中时,有(1-fp)的概率可以通过位图直接排除其存在可能;若有可能存在,则位图可以直接给出不超过4组可能的定位坐标,使其数据库的哈希桶中迅速定位。
本实施例中,所述步骤2.2)的详细步骤包括:将当前基因序列片段重新编码为长度为2L位的序列原始比特向量,其中L为当前基因序列片段的长度,将所述序列原始比特向量按照指定的步长(本实施例中具体为2)分别进行n次循环偏移,得到n个新的基因序列片段向量;所述步骤3.1)中将待定位基因序列片段按位循环偏移生成多个基因序列片段向量的详细步骤包括:将待定位基因序列片段重新编码为长度为2L位的序列原始比特向量,其中L为当前基因序列片段的长度,将所述序列原始比特向量按照指定的步长分别进行n次循环偏移,得到n个新的基因序列片段向量。本实施例中,A、C、G、T四种符号可以分别由2bits数据编码替换,形成一个基因序列片段向量,使得所有基因序列片段向量的长度等于2L,其中L为当前基因序列片段的长度;进行循环偏移时,分别循环左移0、2、4、6位,形成4个新的基因序列片段向量V0,V1,V2和V3,如图2所示。
本实施例中,所述步骤2.3)和3.3)中的第一区间具体是指当前基因序列片段向量前端的第一指定数量位。本实施例中,所述第一指定数量位为2*(L-4)位,其中L为当前基因序列片段的长度。毫无疑问,还可根据需要采用其他的第一区域来生成坐标行号,其原理与本实施例完全相同,只是不同取值方式会导致其冲突率可能存在区别,故在此不再赘述。
本实施例中,所述步骤2.3)和3.3)中的第二区间具体是指当前基因序列片段向量后端的第二指定数量位,所述步骤2.3)和3.3)中具体是指根据Ci*4+i计算当前基因序列片段向量的列号,其中Ci为当前基因序列片段向量后端的第二指定数量位,i为当前基因序列片段向量的循环偏移次数。本实施例中,所述第二指定数量位为8位。毫无疑问,还可根据需要采用其他的第二区域、其他的坐标列号映射计算方式来生成坐标列号,其原理与本实施例完全相同,只是不同取值方式会导致其冲突率可能存在区别,故在此不再赘述。
本实施例中,所述循环偏移具体是指循环左移。毫无疑问,本领域技术人员也可以根据需要采用循环右移的方式,其原理与本实施例相同,故在此不再赘述。
如图2所示,针对基因序列片段向量V0、V1、V2和V3,每个向量的前2*(L-4)位数据,使用哈希函数将其映射至[0,2RS]范围的整数空间,令它们哈希映射后的整数是R0、R1、R2和R3;同时,令每个向量的末8位数据分别是C0、C1、C 2和C 3。根据Ci*4+i,则由位图坐标<R0,C0*4+0>,<R1,C1*4+1>,<R2,C2*4+2>和<R3,C3*4+3>。基于上述坐标,逐个在位图中进行索引,若索引得到的位是1,那么则继续用下一个坐标索引。若第i个坐标(i依次是0、1、2或3)<Ri,Ci*4+i>是首次位图索引得到0的坐标,则将该坐标对应的位,置为1。不再继续索引下一个坐标,转步骤2。若4个坐标所对应的位图中的数据位均已经为1,视这种情况为“冲突”,将这样的基因序列片段成为冲突片段,记录进冲突集合ConflictSet中。若哈希函数分布均匀,那么,产生冲突的概率应远低于fp/4,因此,对于冲突集合ConflictSet可以采用一般地集合存储结构。参见图2,位图中的坐标(0xaaaaa,C1)数据位的值为1、坐标(0xbbbbb,C2)数据位的值为1、坐标(0xccccc,C3)数据位的值为0,而基因序列片段向量V0、V1、V2分别定位到该坐标(0xaaaaa,C1)、坐标(0xbbbbb,C2)、坐标(0xccccc,C3),由于基因序列片段向量V0、V1对应数据位的值为1,V2对应数据位的值为0,则可知当前基因序列片段AGTAC……AGTAC并未发生“冲突”。通过以上步骤构建得到的位图,数据库除冲突集合ConflictSet中的Key以外的每一个Key,实际一一对应于位图中的1个具体数据位。对于一个数据库中存储的除冲突集合ConflictSet外的任意一个Key,若其对应于位图第R行、第C列,可以将R作为该Key在数据库的哈希表中所对应的桶号,而位图第R行中,令t是从第0列到第C-1列中位为1的总列数。这样,可以要求该键值对<Key,Value>对应存储进哈希表的对应桶中序号为i的位置,以位图为基础,按上面这种方式编排数据在桶中的位置,哈希表中每个桶不会出现浪费存储空间的空白位置,并且,可以根据位图中该位的行列号,迅速定位该Key在数据库中得位置。
如图3所示,以基因序列片段AGTAC……AGTAC作为待定位基因序列片段,来对本实施例在位图中快速定位当前基因序列片段的过程进行说明。将待定位基因序列片段按位循环偏移生成多个基因序列片段向量;根据坐标<0xccccc,4>,命中位图中的第0xccccc行的1024位向量中的第4位,计算该比特向量行的第4位之前,有2个“1”,即t=2,因此在哈希表中取出桶号为0xccccc的桶中序号为2的键值对<Keyt,Valuet>,如果键值对<Keyt,Valuet>的键Keyt和待定位基因序列片段相同,如果相同则返回键值对<Keyt,Valuet>的值Valuet。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种基于位图的基因序列片段快速定位方法,其特征在于步骤包括:
1)构造用于存储基因序列片段信息的位图,位图的每一个数据位被初始化为0;
2)将基因参考链中各基因序列片段按位循环偏移生成多个基因序列片段向量,将基因序列片段向量采用哈希函数映射到位图中的唯一数据位并将数据位由0置1,统计数据位所在行R从第0列开始到数据位所在列之间所有数据位的出现1的次数t,将基因序列片段向量及其附带信息构成的键值对<Keyt,Valuet>存放在数据库中以该数据位的行号R对应的哈希桶的第t个位置;如果某个基因序列片段的多个基因序列片段向量的所有数据位全已被置1,则将该基因序列片段加入冲突集合ConflictSet中;
3)需要进行基因序列片段定位时,将待定位基因序列片段按位循环偏移生成多个基因序列片段向量,将基因序列片段向量采用哈希函数映射到位图中的唯一数据位,如果数据位为1则统计数据位所在行R从第0列开始到数据位所在列之间所有数据位的出现1的次数t,从数据库中取出行号R对应的哈希桶的第t个位置存放的键值对<Keyt,Valuet>,如果键值对<Keyt,Valuet>的键Keyt和待定位基因序列片段相同,则返回键值对<Keyt,Valuet>的值Valuet,如果所有基因序列片段向量的数据位为0,则在冲突集合ConflictSet中查找当前基因序列片段的键值对<Keyt,Valuet>,如果查找成功则返回键值对<Keyt,Valuet>的值Valuet,否则判定当前基因序列片段一定不在基因参考链中。
2.根据权利要求1所述的基于位图的基因序列片段快速定位方法,其特征在于,所述步骤2)的详细步骤包括:
2.1)从基因参考链中取出一个基因序列片段作为当前基因序列片段;
2.2)将当前基因序列片段按位循环偏移生成多个基因序列片段向量,取出一个基因序列片段向量作为当前基因序列片段向量;
2.3)通过哈希函数映射将当前基因序列片段向量的第一区间内的数据映射至位图行范围内的整数空间,将哈希函数映射的结果为当前基因序列片段向量的行号;根据当前基因序列片段向量的第二区间内的数据计算当前基因序列片段向量的列号;
2.4)读取当前基因序列片段向量的行号、列号在位图中对应的数据位,如果该数据位的值为0则将数据位置1;否则,判定当前基因序列片段向量无法索引到0;
2.5)判断当前基因序列片段的所有基因序列片段向量是否已经处理完毕,如果尚未处理完毕,则选择下一个基因序列片段向量作为当前基因序列片段向量,跳转执行步骤2.3);如果已经处理完毕,则判断当前基因序列片段的所有当前基因序列片段向量是否均无法索引到0,如果是均无法索引到0,则将当前基因序列片段的键值对<Keyt,Valuet>加入冲突集合ConflictSet中;
2.6)判断基因参考链是否已经处理完毕,如果尚未处理完毕,则跳转执行步骤2.1);否则,扫描位图,针对位图中每一个被置1的数据位,统计位图中数据位所在行R从第0列开始到数据位所在列之间所有数据位的出现1的次数t,将该数据位唯一对应的基因序列片段向量及其附带信息构成的键值对<Keyt,Valuet>存放在数据库中以该数据位的行号R对应的哈希桶的第t个位置,在位图全部扫描完毕后,位图与键值对数据库构建完毕。
3.根据权利要求2所述的基于位图的基因序列片段快速定位方法,其特征在于,所述步骤3)的详细步骤包括:
3.1)需要进行基因序列片段定位时,将待定位基因序列片段按位循环偏移生成多个基因序列片段向量;
3.2)取出一个基因序列片段向量作为当前基因序列片段向量;
3.3)通过哈希函数映射将当前基因序列片段向量的第一区间内的数据映射至位图行范围的整数空间,将哈希函数映射的结果为当前基因序列片段向量的行号;根据当前基因序列片段向量的第二区间内的数据计算当前基因序列片段向量的列号;
3.4)读取当前基因序列片段向量的行号、列号在位图中对应的数据位,如果该数据位的值为0,则判断定位失败;如果该数据位的值为1,则统计位图中数据位所在行R从第0列开始到数据位所在列之间所有数据位的出现1的次数t,在数据库中以该数据位的行号R对应的哈希桶的第t个位置读出键值对<Keyt,Valuet>,判断键值对<Keyt,Valuet>的键Keyt和待定位基因序列片段是否相同,如果相同则返回键值对<Keyt,Valuet>的值Valuet,如果和待定位基因序列片段不同,则跳转执行下一步;
3.5)判断是否所有基因序列片段向量已经处理完毕,如果尚未处理完毕,则跳转执行步骤3.2);如果已经处理完毕,则判定是否所有基因序列片段向量均为定位失败,在冲突集合ConflictSet中查找当前基因序列片段的键值对<Keyt,Valuet>,如果查找成功则返回键值对<Keyt,Valuet>的值Valuet,否则判定当前基因序列片段一定不在基因参考链中。
4.根据权利要求3所述的基于位图的基因序列片段快速定位方法,其特征在于,所述步骤2.2)的详细步骤包括:将当前基因序列片段重新编码为长度为2L位的序列原始比特向量,其中L为当前基因序列片段的长度,将所述序列原始比特向量按照指定的步长分别进行n次循环偏移,得到n个新的基因序列片段向量;所述步骤3.1)中将待定位基因序列片段按位循环偏移生成多个基因序列片段向量的详细步骤包括:将待定位基因序列片段重新编码为长度为2L位的序列原始比特向量,其中L为当前基因序列片段的长度,将所述序列原始比特向量按照指定的步长分别进行n次循环偏移,得到n个新的基因序列片段向量。
5.根据权利要求4所述的基于位图的基因序列片段快速定位方法,其特征在于,所述步骤2.3)和3.3)中的第一区间具体是指当前基因序列片段向量前端的第一指定数量位,所述第一指定数量位为2*(L-4)位,其中L为当前基因序列片段的长度。
6.根据权利要求5所述的基于位图的基因序列片段快速定位方法,其特征在于,所述步骤2.3)和3.3)中的第二区间具体是指当前基因序列片段向量后端的第二指定数量位,所述步骤2.3)和3.3)中具体是指根据Ci*4+i计算当前基因序列片段向量的列号,其中Ci为当前基因序列片段向量后端的第二指定数量位,i为当前基因序列片段向量的循环偏移次数。
7.根据权利要求6所述的基于位图的基因序列片段快速定位方法,其特征在于,所述第二指定数量位为8位。
8.根据权利要求7所述的基于位图的基因序列片段快速定位方法,其特征在于,所述循环偏移具体是指循环左移。
9.根据权利要求1~8中任意一项所述的基于位图的基因序列片段快速定位方法,其特征在于,所述步骤1)中构造用于存储基因序列片段信息的位图时,位图为2RS行、预设列的位图,且行数中的指数RS的计算表达式如式(1)所示;
式(1)中,RS为位图的行数中的指数,n为基因参考链的长度,fp为预设的位图空闲率,CS为位图的预设列数。
10.根据权利要求9所述的基于位图的基因序列片段快速定位方法,其特征在于,所述位图的预设列数CS为1024。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510648621.5A CN105335624B (zh) | 2015-10-09 | 2015-10-09 | 一种基于位图的基因序列片段快速定位方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510648621.5A CN105335624B (zh) | 2015-10-09 | 2015-10-09 | 一种基于位图的基因序列片段快速定位方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105335624A CN105335624A (zh) | 2016-02-17 |
CN105335624B true CN105335624B (zh) | 2017-11-14 |
Family
ID=55286144
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510648621.5A Active CN105335624B (zh) | 2015-10-09 | 2015-10-09 | 一种基于位图的基因序列片段快速定位方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105335624B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106484865A (zh) * | 2016-10-10 | 2017-03-08 | 哈尔滨工程大学 | 一种基于DNA k‑mer index问题四字链表字典树检索算法 |
CN109658985B (zh) * | 2018-12-25 | 2020-07-17 | 人和未来生物科技(长沙)有限公司 | 一种基因参考序列的去冗余优化方法及系统 |
CN111063394B (zh) * | 2019-12-13 | 2023-07-11 | 人和未来生物科技(长沙)有限公司 | 基于基因序列的物种快速查找及建库方法、系统和介质 |
CN111402959A (zh) * | 2020-03-13 | 2020-07-10 | 苏州浪潮智能科技有限公司 | 一种序列比对的方法、系统、设备及可读存储介质 |
CN116665772B (zh) * | 2023-05-30 | 2024-02-13 | 之江实验室 | 一种基于内存计算的基因组图分析方法、装置和介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102086473A (zh) * | 2010-05-12 | 2011-06-08 | 天津市泌尿外科研究所 | 人类多基因疾病关键基因的无向网络筛选方法 |
CN102521528A (zh) * | 2011-12-05 | 2012-06-27 | 中国科学院计算机网络信息中心 | 一种基因序列数据的筛选方法 |
CN103065067A (zh) * | 2012-12-26 | 2013-04-24 | 深圳先进技术研究院 | 短序列组装中序列片段的过滤方法及系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030143604A1 (en) * | 2001-11-30 | 2003-07-31 | Storhoff James J. | Real-time monitoring of PCR amplification using nanoparticle probes |
US20080133474A1 (en) * | 2006-11-30 | 2008-06-05 | Yahoo! Inc. | Bioinformatics computation using a maprreduce-configured computing system |
WO2010033777A2 (en) * | 2008-09-19 | 2010-03-25 | University Of Pittsburgh-Of The Commonwealth System Of Higher Education | Discovery of t -homology in a set of sequences and production of lists of t-homologous sequences with predefined properties |
-
2015
- 2015-10-09 CN CN201510648621.5A patent/CN105335624B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102086473A (zh) * | 2010-05-12 | 2011-06-08 | 天津市泌尿外科研究所 | 人类多基因疾病关键基因的无向网络筛选方法 |
CN102521528A (zh) * | 2011-12-05 | 2012-06-27 | 中国科学院计算机网络信息中心 | 一种基因序列数据的筛选方法 |
CN103065067A (zh) * | 2012-12-26 | 2013-04-24 | 深圳先进技术研究院 | 短序列组装中序列片段的过滤方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105335624A (zh) | 2016-02-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105335624B (zh) | 一种基于位图的基因序列片段快速定位方法 | |
Liu et al. | NET–a system for extracting web data from flat and nested data records | |
Karp et al. | Rapid identification of repeated patterns in strings, trees and arrays | |
EP3308303B1 (en) | Mechanisms for merging index structures in molap while preserving query consistency | |
CN103631928A (zh) | 一种基于局部敏感哈希的聚类索引方法及系统 | |
CA3183416A1 (en) | Programs and functions in dna-based data storage | |
Giannakouris et al. | MuSQLE: Distributed SQL query execution over multiple engine environments | |
Bille et al. | Deterministic indexing for packed strings | |
CN115641911B (zh) | 一种针对序列间重叠检测的方法 | |
Sakr et al. | Efficient relational techniques for processing graph queries | |
Flick et al. | Parallel construction of suffix trees and the all-nearest-smaller-values problem | |
Pagh et al. | Scalable computation of acyclic joins | |
Mishra et al. | A genetic algorithm based approach for the optimization of multiple sequence alignment | |
Du et al. | A new projection-based K-means initialization algorithm | |
Broutin et al. | A limit process for partial match queries in random quadtrees and 2-d trees | |
CN110083603B (zh) | 一种基于邻接表实现节点路径的查询方法及系统 | |
Nekrich | Searching in dynamic catalogs on a tree | |
Rheinländer et al. | Scalable sequence similarity search and join in main memory on multi-cores | |
Darvish | Utilizing alignment-free methods to enable quantitative gene expression analysis of large collections of sequencing data | |
Patil et al. | Approximate string matching by position restricted alignment | |
Zhao et al. | Improving performance of graph similarity joins using selected substructures | |
Milo et al. | RNA tree comparisons via unrooted unordered alignments | |
Cai | Approximate sequence alignment | |
Mustafa et al. | Label-guided seed-chain-extend alignment on annotated De Bruijn graphs | |
Kerkad et al. | Database technology: A world of interaction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |