CN106484865A - 一种基于DNA k‑mer index问题四字链表字典树检索算法 - Google Patents
一种基于DNA k‑mer index问题四字链表字典树检索算法 Download PDFInfo
- Publication number
- CN106484865A CN106484865A CN201610884413.XA CN201610884413A CN106484865A CN 106484865 A CN106484865 A CN 106484865A CN 201610884413 A CN201610884413 A CN 201610884413A CN 106484865 A CN106484865 A CN 106484865A
- Authority
- CN
- China
- Prior art keywords
- dictionary tree
- word
- dna
- chained list
- complexity
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及数据结构和大数据处理领域,尤其涉及一种基于字典树的新型快速搜索算法。本发明首先建立四字字典树模型,以DNA序列的4个碱基作为系统输入;建立字典树终端检索链表,确立终端结束标志,最后不再区分碱基序列并建立查询时反向推算序列号与碱基对号模型;DNA序列索引建立的步骤及其复杂度分析;获取子串位置后在叶子节点处加挂检索链表,存入位置数据;k‑mer短串查询步骤及其复杂度分析;当单词的公共前缀越长时,字典树查询的越快;其复杂度随着k不同而有变化,但基本为一常量,几乎不受到数据量的影响。本发明原始数据采用字母映射,使字典树的子节点个数由26个压缩至4个,节省结点空间。
Description
技术领域
本发明属于数据结构和大数据处理领域,尤其涉及一种基于DNA k-mer index问题四字链表字典树检索算法。
背景技术
目前实施的千人基因组计划、国际单体型图计划和孟德尔遗传疾病计划等项目,利用下一代测序技术产生了海量DNA测序数据,又叫高通量测序数据,使得生物信息学数据呈现爆炸性增长。在生命科学的研究中,人们已经逐渐认识到,不仅需要用物理、化学和生物学方法研究生命的物质基础、能量转换、代谢过程等,还需要用信息科学方法研究生命信息特别是遗传信息的组织、复制、传递、表达及其作用,否则难以理解生命的工作机制,难以揭示生命的奥秘。
DNA是遗传信息的载体,DNA的核苷酸序列上存储着蛋白质的氨基酸序列编码信息,存储着基因表达调控的信息,遗传信息存储在DNA四种字符组成的序列中,生物体生长发育的本质就是遗传信息的传递和表达,因此,可以说DNA序列包含着最基本的生命信息。分子序列数据库目前收集了全世界生物实验室的成千上万的DNA序列,并且还在不断增长。如何在DNA序列分析过程中,设计快速建立索引并进行相应的查找方法,来满足DNA序列分析的基本要求,已成为DNA研究发展的重要因素之一。
利用Hash算法对DNA序列进行检索是一种解决大容量数据表快速检索简单高效的方法,并在进行大量检索操作的领域有着非常重要的作用和地位。但该类方法对较小的k是适用的,当k较大时由于数值太大导致存储量过大、计算速度变慢。本发明基于字典树的新型快速搜索算法,不仅考虑原字典树子节点个数对存储空间的浪费,而且考虑了区分碱基序列加大空间复杂度。利用四字链表字典树方法对原始数据进行预处理映射,并以叶子节点作为k-mer结束标志,在其上加入索引链表来记录其单词位置序号等对原有的字典树进行改进。本发明可以很好地解决k-mer问题中要求的建立索引与查询的任务,降低索引的空间复杂度,提高查询和搜索效率。
发明内容
发明的目的在于提供一种基于DNA k-mer index问题四字链表字典树检索算法。
本发明的目的是这样实现的:
一种基于DNA k-mer index问题四字链表字典树检索算法,包括如下步骤:
(1)首先建立四字字典树模型,以DNA序列的4个碱基作为系统输入;
(2)建立字典树终端检索链表,确立终端结束标志,最后不再区分碱基序列并建立查询时反向推算序列号与碱基对号模型;
(3)DNA序列索引建立的步骤及其复杂度分析;获取子串位置后在叶子节点处加挂检索链表,存入位置数据;
(4)k-mer短串查询步骤及其复杂度分析;当单词的公共前缀越长时,字典树查询的越快;其复杂度随着k不同而有变化,但基本为一常量,几乎不受到数据量的影响。
采用字母映射,使得字典树的子节点个数由26个压缩至4个。
将字典树的叶子节点作为单词的结束标记,在其上加入索引链表记录单词序号。
本发明的有益效果在于:
(1)原始数据采用字母映射,使字典树的子节点个数由26个压缩至4个,节省结点空间。
(2)当所要分析的碱基序列共有100万个,每个碱基序列有100个碱基对时以叶子节点作为k-mer结束标志,在其上加入索引链表记录其单词位置序号,方便查询时结果的返回且降低了查找的复杂度,查询时利用公式反向推算出序列号与碱基对号。
附图说明
图1字母映射示意图;
图2四字链表字典树的数据结构示意图;
图3索引构建算法流程图;
图4索引查询算法流程图;
图5不同取值k下链表储存空间与字典树储存空间变化图像;
图6常见复杂度曲线;
图7不同k值取值下索引建立时间变化曲线;
图8不同k值取值下查询时间变化曲线。
具体实施方式
下面结合附图举例对本发明做更详细地描述:
本方法实现了对传统字典树原始数据的优化,节省了存储空间。同时以叶子节点作为k-mer的结束标志,使其方便查询结果的返回,降低了单词查找的复杂度。
一种基于DNA k-mer index问题四字链表字典树检索算法,包括建立四字检索字典树模型和单词查找两个环节。其特点是:在字典树模型的基础上作进一步的改进,对原始数据进行预处理并以字典树的叶子节点作为单词结束标记。这样处理不但对查询速度没有影响又能节省存储空间、降低空间复杂度。
本发明提出的一种基于DNA k-mer index问题四字链表字典树检索算法具体包括以下几个步骤。
步骤一:首先建立四字字典树模型,以DNA序列的4个碱基作为系统输入。
首先将数据的四个碱基对A、C、G、T分别映射成A、B、C、D如图1所示,同时在程序中将字典树的子节点个数由26个缩小至4个,这样只需4个字母的结点空间就可以把k-mer存入字典树。这样处理对建立索引及查询结果没有任何影响,而且大大节省了空间。
步骤二:建立字典树终端检索链表,确立终端结束标志,最后不再区分碱基序列并建立查询时反向推算序列号与碱基对号模型。
一般DNA序列给出形式为若干个碱基序列,每个碱基序列有包含若干个碱基对,算法结果最终需要返回k-mer的所在位置和对应的序列号两个信息,将碱基对和碱基序列编号分别存入终端列表,查询时即可同时返回。但是由于数据量庞大,序号值也会相应增加,为保存这两个足够大的数据就会造成极大的空间浪费。
若以叶子节点作为k-mer结束标志并在其上加入索引链表来记录其单词位置序号,考虑将所有待查询碱基序列从头到尾连成一串,不再区分碱基序列,并将k-mer单词在序列中的位置序号进行相应的连续化映射,变为在长串中的位置序号。尽管这样开辟储存空间所表示数据的量级不发生很大变化,但仅需开辟一组空间且使查找复杂度为常数级。假定所要分析的碱基序列总共有100万个,每个碱基序列有100个碱基对。建立字典树时仍然按照原有的碱基序列结构建树。查询时可以按照如下公式反向推算出序列号与碱基对号。I=ceil(N/100)+1 L=(N-I×100)其中I代表序列号,N代表在k-mer单词长串中的位置号,L代表k-mer在某一碱基序列中的位置号。
步骤三:DNA序列索引建立的步骤及其复杂度分析。
首先获取数据并进行数据集的预处理,获取k值确定k-mer单词的长度。建立字典树根节点并在数据集中连续截取k个字符作为子串,由根节点开始逐一比较子节点与当前子串的字符。若节点存在该字符对应的子节点,将子节点作为新的节点处理;如不存在则建立新子节点并将子节点作为新节点处理,直至子串遍历结束。再获取子串位置在叶子节点处加挂检索链表存入位置数据。不断循环直至所有k-mer子串全部存入四字字典树。
以c语言标准实现为例,树的所占空间大小为:S=M×20B=4k×20B,M为树的结点个数,一个树的节点大小为20个字节。链表的节点个数等于k-mer的单词个数,即搜索次数:L=N=1000000×(100-k+1)。N为100万个碱基需要搜索的次数。链表数据结构的定义为:
按照普通计算机一个指针变量4个字节,一个int型变量4个字节计算,该结构体大小为8字节。总的空间大小P为:P=L×8B=1000000×(100-k+1)×8。
因此在k比较小的时候,链表所占空间远远大于字典树本身所占的内存大小;在k比较大的时候,字典树的大小是成指数形式增长的,因此字典树的大小会迅速超过链表所占的空间大小。两种数据结构在不同k下所占空间大小趋势图像见图5。其中A曲线线为字典树空间随k变化曲线,B曲线是链表储存空间随k变化曲线。当k<10时,链表储存空间是相对比较大的,当k>10之后,字典树空间呈现指数型增长,远远超过链表储存空间,链表空间呈现缓慢下降的趋势,在k取值比较小的情况下,与树空间相比基本变化不大。
步骤四:单词查询步骤及其复杂度分析。
如图4为索引查询算法流程。遍历指定的k-mer单词,同时从字典树的根节点开始,逐一比较节点值与单词的字符值,找出该单词在字典树中的路径,直至遇到叶子节点。再从终端检索链表中获取该单词在长串中所有的位置序号。按照公式反向解算出序列号与位置号。
图6为各种常见查询时间复杂度的趋势图线。本研究所使用的字典树法省去了冗余的储存,单词的公共前缀越长字典树查询得越快。复杂度为常量k,即复杂度随着k的不同而变化,但基本为一常量,几乎不受到数据量的影响,查询速度极快。
步骤五:实例仿真
按照DNA序列分析的一般要求,使用的测试数据集为100万个碱基序列,每个碱基序列含有100个碱基对,总计有1亿个碱基对存在。按照上述算法,采用具有终端检索链表的四字字典树检索方法分别计算k从1到10变化时的DNA序列索引建立时间和查询时间,变化曲线如图7和图8所示。由图7可看出,建立索引时间最快在8s左右。图8中查询时间随着k值的增大不断减少,当k>7时,查询时间远小于1ms。这充分说明了具有终端检索链表的四字字典树检索方法是一种高效实用的检索算法,可以很好的完成k-mer问题中建立索引和查询任务。
Claims (3)
1.一种基于DNA k-mer index问题四字链表字典树检索算法,其特征在于,包括如下步骤:
(1)首先建立四字字典树模型,以DNA序列的4个碱基作为系统输入;
(2)建立字典树终端检索链表,确立终端结束标志,最后不再区分碱基序列并建立查询时反向推算序列号与碱基对号模型;
(3)DNA序列索引建立的步骤及其复杂度分析;获取子串位置后在叶子节点处加挂检索链表,存入位置数据;
(4)k-mer短串查询步骤及其复杂度分析;当单词的公共前缀越长时,字典树查询的越快;其复杂度随着k不同而有变化,但基本为一常量,几乎不受到数据量的影响。
2.根据权利要求1所述的一种基于DNA k-mer index问题四字链表字典树检索算法,其特征在于:采用字母映射,使得字典树的子节点个数由26个压缩至4个。
3.根据权利要求1所述的一种基于DNA k-mer index问题四字链表字典树检索算法,其特征在于:将字典树的叶子节点作为单词的结束标记,在其上加入索引链表记录单词序号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610884413.XA CN106484865A (zh) | 2016-10-10 | 2016-10-10 | 一种基于DNA k‑mer index问题四字链表字典树检索算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610884413.XA CN106484865A (zh) | 2016-10-10 | 2016-10-10 | 一种基于DNA k‑mer index问题四字链表字典树检索算法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106484865A true CN106484865A (zh) | 2017-03-08 |
Family
ID=58269366
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610884413.XA Pending CN106484865A (zh) | 2016-10-10 | 2016-10-10 | 一种基于DNA k‑mer index问题四字链表字典树检索算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106484865A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109450452A (zh) * | 2018-11-27 | 2019-03-08 | 中国科学院计算技术研究所 | 一种针对基因数据的取样字典树索引的压缩方法和系统 |
CN109949866A (zh) * | 2018-06-22 | 2019-06-28 | 深圳市达仁基因科技有限公司 | 病原体操作组的检测方法、装置、计算机设备和存储介质 |
CN111049746A (zh) * | 2018-10-12 | 2020-04-21 | 华为技术有限公司 | 一种路由表项生成方法、字典树生成方法和装置 |
CN112069286A (zh) * | 2020-08-28 | 2020-12-11 | 喜大(上海)网络科技有限公司 | 字典树参数更新方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102737105A (zh) * | 2012-03-31 | 2012-10-17 | 北京小米科技有限责任公司 | 一种字典树生成方法及搜索方法 |
CN104899476A (zh) * | 2015-06-15 | 2015-09-09 | 中国人民解放军国防科学技术大学 | 一种对多序列bwt索引构建进行并行加速的方法 |
CN105224828A (zh) * | 2015-10-09 | 2016-01-06 | 人和未来生物科技(长沙)有限公司 | 一种基因序列片段快速定位用键值索引数据压缩方法 |
CN105229651A (zh) * | 2013-05-23 | 2016-01-06 | 皇家飞利浦有限公司 | Dna序列的快速并且安全的检索 |
CN105335624A (zh) * | 2015-10-09 | 2016-02-17 | 人和未来生物科技(长沙)有限公司 | 一种基于位图的基因序列片段快速定位方法 |
-
2016
- 2016-10-10 CN CN201610884413.XA patent/CN106484865A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102737105A (zh) * | 2012-03-31 | 2012-10-17 | 北京小米科技有限责任公司 | 一种字典树生成方法及搜索方法 |
CN105229651A (zh) * | 2013-05-23 | 2016-01-06 | 皇家飞利浦有限公司 | Dna序列的快速并且安全的检索 |
CN104899476A (zh) * | 2015-06-15 | 2015-09-09 | 中国人民解放军国防科学技术大学 | 一种对多序列bwt索引构建进行并行加速的方法 |
CN105224828A (zh) * | 2015-10-09 | 2016-01-06 | 人和未来生物科技(长沙)有限公司 | 一种基因序列片段快速定位用键值索引数据压缩方法 |
CN105335624A (zh) * | 2015-10-09 | 2016-02-17 | 人和未来生物科技(长沙)有限公司 | 一种基于位图的基因序列片段快速定位方法 |
Non-Patent Citations (2)
Title |
---|
DNA序列分析: "《CSDN,https:blog.csdn.net/freedom098/article/details/46380837》", 5 June 2015 * |
陈建平: "字符串匹配算法在DNA序列比对中的应用", 《数学建模及其应用》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109949866A (zh) * | 2018-06-22 | 2019-06-28 | 深圳市达仁基因科技有限公司 | 病原体操作组的检测方法、装置、计算机设备和存储介质 |
CN109949866B (zh) * | 2018-06-22 | 2021-02-02 | 深圳市达仁基因科技有限公司 | 病原体操作组的检测方法、装置、计算机设备和存储介质 |
CN111049746A (zh) * | 2018-10-12 | 2020-04-21 | 华为技术有限公司 | 一种路由表项生成方法、字典树生成方法和装置 |
US11627072B2 (en) | 2018-10-12 | 2023-04-11 | Huawei Technologies Co., Ltd. | Routing entry generation method and apparatus and trie generation method and apparatus |
CN109450452A (zh) * | 2018-11-27 | 2019-03-08 | 中国科学院计算技术研究所 | 一种针对基因数据的取样字典树索引的压缩方法和系统 |
CN109450452B (zh) * | 2018-11-27 | 2020-07-10 | 中国科学院计算技术研究所 | 一种针对基因数据的取样字典树索引的压缩方法和系统 |
CN112069286A (zh) * | 2020-08-28 | 2020-12-11 | 喜大(上海)网络科技有限公司 | 字典树参数更新方法、装置、设备及存储介质 |
CN112069286B (zh) * | 2020-08-28 | 2024-01-02 | 喜大(上海)网络科技有限公司 | 字典树参数更新方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10346551B2 (en) | Systems, methods and computer-accessible mediums for utilizing pattern matching in stringomes | |
CN106503223B (zh) | 一种结合位置和关键词信息的在线房源搜索方法及装置 | |
CN106484865A (zh) | 一种基于DNA k‑mer index问题四字链表字典树检索算法 | |
CN109166615B (zh) | 一种随机森林哈希的医学ct图像存储与检索方法 | |
CN106778079A (zh) | 一种基于MapReduce的DNA序列k‑mer频次统计方法 | |
CN105760706B (zh) | 一种二代测序数据的压缩方法 | |
CN101751416A (zh) | 一种对字符串排序和查找的方法 | |
CN107145519B (zh) | 一种基于超图的图像检索与标注方法 | |
Dorohonceanu et al. | Accelerating protein classification using suffix trees. | |
CN104156635B (zh) | 基于公共子序列的基因芯片表达数据的opsm挖掘方法 | |
Chakraborty et al. | Performance comparison for data retrieval from nosql and sql databases: a case study for covid-19 genome sequence dataset | |
CN112086133A (zh) | 一种基于文本隐含信息的药物靶标特征学习方法及装置 | |
Kumar et al. | Efficient read alignment using burrows wheeler transform and wavelet tree | |
Mustafa et al. | Metannot: A succinct data structure for compression of colors in dynamic de Bruijn graphs | |
Xu et al. | Full-text search engine with suffix index for massive heterogeneous data | |
Chang et al. | A hash trie filter method for approximate string matching in genomic databases | |
Bille et al. | Hierarchical relative lempel-ziv compression | |
Aleb et al. | An improved K-means algorithm for DNA sequence clustering | |
Liu et al. | Discovery of deep order-preserving submatrix in DNA microarray data based on sequential pattern mining | |
Wang et al. | Fusang: a framework for phylogenetic tree inference via deep learning | |
Jaber et al. | A framework for decision tree-based method to index data from large protein sequence databases | |
Ferragina et al. | Algorithms in Stringomics (I): Pattern-Matching against “Stringomes” | |
CN110609914B (zh) | 一种基于快速类别更新的在线哈希学习图像检索方法 | |
KR20190139227A (ko) | K-부정합 검색을 위한 필터를 생성하는 시스템 및 방법 | |
Tristão et al. | Relational Text-Type for Biological Sequences |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170308 |