CN112749247B - 文本信息存储和读取方法及其装置 - Google Patents
文本信息存储和读取方法及其装置 Download PDFInfo
- Publication number
- CN112749247B CN112749247B CN201911051841.4A CN201911051841A CN112749247B CN 112749247 B CN112749247 B CN 112749247B CN 201911051841 A CN201911051841 A CN 201911051841A CN 112749247 B CN112749247 B CN 112749247B
- Authority
- CN
- China
- Prior art keywords
- text
- text information
- tree
- trigeminal
- unit
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/322—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/3332—Query translation
- G06F16/3335—Syntactic pre-processing, e.g. stopword elimination, stemming
-
- 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
- G16B50/00—ICT programming tools or database systems specially adapted for bioinformatics
-
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Software Systems (AREA)
- Biophysics (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Biotechnology (AREA)
- Evolutionary Biology (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Spectroscopy & Molecular Physics (AREA)
- Computational Linguistics (AREA)
- Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
- Document Processing Apparatus (AREA)
Abstract
本申请公开了一种文本信息存储和读取方法及其装置,该方法和装置基于待存储的文本信息中的文本单元的出现频率,利用碱基字符A、G和T对文本单元直接进行三叉哈夫曼编码,将所述文本信息转换为由碱基字符A、G和T构成的编码序列,并用字符C替换所述编码序列中与前一个字符重复的字符,得到由A、G、T、C四种碱基表示的第一DNA序列;将所述第一DNA序列切分为多个数据片段,并为每个数据片段分别添加索引片段、纠错片段和用于扩增的正反向引物,得到多个第二DNA序列;合成所述多个第二DNA序列并储存。本申请的方法和装置提高了文本信息的存储编码效率,具有较好的灵活性和可靠性。
Description
技术领域
本申请涉及信息存储技术领域,具体涉及一种利用DNA序列进行文本信息存储和读取的方法及其装置。
背景技术
随着数字化信息的广泛应用和大数据科学的急速发展,人们每天产生的信息数据呈指数型增长,现有的传统存储介质逐渐不能满足使用需求。DNA分子作为一种新型的存储介质,由于具有存储密度高,保存时间长,维护成本低等优势,近年来受到广泛关注。DNA由四种脱氧核糖核苷酸的碱基——腺嘌呤(A)、胸腺嘧啶(T)、胞嘧啶(C)和鸟嘌呤(G)组成。DNA是生物体遗传物质的储存元件,其空间结构极为致密。作为存储介质,1克DNA可储存高达上千TB的数据,且具有稳定性极强和占用体积小等优点。
DNA编码技术是DNA存储中的关键技术。目前为止,DNA编码方法的研究主要集中于通用的比特-碱基编码法,这种编码方法是将待存储的文本文件转换为二进制数据,再为二进制数据设计比特到碱基的编解码方法。随着DNA存储相关领域的发展,数据的体量、复杂度和多样性都在飞速增加,这种通用的比特-碱基编码法难以满足人们针对不同类型的数据的精细化、个性化的存储需求。
申请公布号CN109943560A的发明专利申请公开了一种基于DNA载体的汉字信息存储方法。该方法将汉字信息直接编码为DNA碱基序列,具体而言,其使用4位碱基对待存储的文本文字进行直接编码;利用编码信息对相应文本进行转码;然后在核苷酸片段两侧添加引物,进行DNA序列合成和存储。
本申请的发明人发现,这种现有的存储方案将编码的碱基位数限制为4bp(碱基对),这个长度限制了待编码文件的大小,不符合实际应用的场景。并且,该方案直接在4个碱基的组合中选取合适的碱基序列,极大地浪费了编码空间,降低了编码效率。此外,现有的存储方案在DNA存储中欠缺数据可靠性的考虑。
发明内容
本申请实施例提供一种文本信息存储和读取方法及其装置,用于解决现有技术中利用DNA存储文本信息存在的灵活性差、编码效率低、可靠性不高的问题。
第一方面,本申请实施例提出一种文本信息存储方法,包括以下步骤:
对待存储的文本信息进行分词处理,得到多个文本单元;
基于所述文本单元在所述文本信息中的出现频率,利用第一字符A、G和T对所述文本单元进行三叉哈夫曼编码,得到所述文本单元的编码表;
基于所述编码表,将所述文本信息转换为由第一字符构成的编码序列,并用第二字符C替换所述编码序列中与前一个字符重复的字符,得到由A、G、T、C四种碱基表示的第一DNA序列;
将所述第一DNA序列切分为多个数据片段,在每个数据片段的前端添加索引片段,在每个数据片段的后端添加纠错片段,得到多个DNA片段;
在每个DNA片段的两端添加用于扩增的正反向引物,得到多个第二DNA序列;
合成所述多个第二DNA序列并储存。
在一些实施方式中,所述基于所述文本单元在所述文本信息中的出现频率,利用第一字符A、G和T对所述文本单元进行三叉哈夫曼编码,得到所述文本单元的编码表包括:
统计每个文本单元在所述文本信息中的出现频率;
以每个文本单元作为结点,以每个文本单元的出现频率作为该结点的权值,构建三叉哈夫曼树;
将所述三叉哈夫曼树的每条边用所述第一字符表示,得到每个文本单元对应的由所述第一字符的序列表示的哈夫曼编码。
在一些实施方式中,所述以每个文本单元作为结点,以每个文本单元的出现频率作为该结点的权值,构建三叉哈夫曼树包括:
步骤一,以所述文本单元的结点分别作为三叉树的根结点,构建三叉树集合,其中所述三叉树集合中的每个三叉树只有一个具有权值的根结点,子树为空;
步骤二,从所述三叉树集合中选择三个根结点权值最小的三叉树构造一个新的三叉树,其中所述新的三叉树的根结点的权值为所述三个根结点权值最小的三叉树的根结点权值的累加值;
步骤三,从所述三叉树集合删除所述三个根结点权值最小的三叉树,并将所述新的三叉树放入所述三叉树集合;
步骤四,重复执行所述步骤二和三,直到所述三叉树集合只含有一个树为止。
在一些实施方式中,如果所述文本单元的结点个数不满足所述三叉哈夫曼树的构建,则添加1个冗余结点,并赋予其权值为0。
在一些实施方式中,所述多个文本单元包括由汉字字符组成的文本单元,和/或由非汉字字符组成的文本单元。
在一些实施方式中,所述对待存储的文本信息进行分词处理包括将待存储的文本信息按照参考词库进行分词。
在一些实施方式中,所述对待存储的文本信息进行分词处理包括对待存储的文本信息进行单字切分。
在一些实施方式中,所述索引片段满足重复碱基不大于2个且GC浓度小于50%。
在一些实施方式中,该方法还包括:将所述索引片段和数据片段转换成二进制数据,计算所述二进制数据的纠错码,并将所述纠错码转换成碱基序列,作为所述纠错片段。
在一些实施方式中,所述纠错码包括RS纠错码或海明纠错码。
第二方面,本申请实施例提出一种文本信息读取方法,包括以下步骤:
对储存的多个第二DNA序列进行测序,得到多个DNA片段;
根据所述多个DNA片段中的纠错片段进行校准,得到所述多个DNA片段中的索引片段和数据片段;
根据所述索引片段表示的索引位置,对所述数据片段进行排序组合,得到第一DNA序列;
将所述第一DNA序列中字符C替换为其前一个碱基字符,得到编码序列;
根据所述编码表解码所述编码序列,得到所述文本信息。
第三方面,本申请实施例提出一种文本信息存储装置,包括:
文本处理单元,用于对待存储的文本信息进行分词处理,得到多个文本单元;
编码单元,用于基于所述文本单元在所述文本信息中的出现频率,利用第一字符A、G和T对所述文本单元进行三叉哈夫曼编码,得到所述文本单元的编码表;
文本转换单元,用于基于所述编码表,将所述文本信息转换为由第一字符构成的编码序列,并用第二字符C替换所述编码序列中与前一个字符重复的字符,得到由A、G、T、C四种碱基表示的第一DNA序列;
DNA序列处理单元,用于将所述第一DNA序列切分为多个数据片段,在每个数据片段的前端添加索引片段,在每个数据片段的后端添加纠错片段,得到多个DNA片段;在每个DNA片段的两端添加用于扩增的正反向引物,得到多个第二DNA序列;
DNA合成储存单元,用于合成所述多个第二DNA序列并储存。
在一些实施方式中,所述编码单元包括:
统计模块,用于统计每个文本单元在所述文本信息中的出现频率;
哈夫曼树构建模块,用于以每个文本单元作为结点,以每个文本单元的出现频率作为该结点的权值,构建三叉哈夫曼树;
哈夫曼编码模块,用于将所述三叉哈夫曼树的每条边用所述第一字符表示,得到每个文本单元对应的由所述第一字符的序列表示的哈夫曼编码。
在一些实施方式中,所述哈夫曼树构建模块用于执行如下步骤来构建三叉哈夫曼树:
步骤一,以所述文本单元的结点分别作为三叉树的根结点,构建三叉树集合,其中所述三叉树集合中的每个三叉树只有一个具有权值的根结点,子树为空;
步骤二,从所述三叉树集合中选择三个根结点权值最小的三叉树构造一个新的三叉树,其中所述新的三叉树的根结点的权值为所述三个根结点权值最小的三叉树的根结点权值的累加值;
步骤三,从所述三叉树集合删除所述三个根结点权值最小的三叉树,并将所述新的三叉树放入所述三叉树集合;
步骤四,重复执行所述步骤二和三,直到所述三叉树集合只含有一个树为止。
在一些实施方式中,所述哈夫曼树构建模块还用于如果所述文本单元的结点个数不满足所述三叉哈夫曼树的构建,则添加1个冗余结点,并赋予其权值为0。
在一些实施方式中,所述多个文本单元包括由汉字字符组成的文本单元,和/或由非汉字字符组成的文本单元。
在一些实施方式中,所述文本处理单元对待存储的文本信息进行分词处理包括将待存储的文本信息按照参考词库进行分词。
在一些实施方式中,所述文本处理单元对待存储的文本信息进行分词处理包括对待存储的文本信息进行单字切分。
在一些实施方式中,所述索引片段满足重复碱基不大于2个且GC浓度小于50%。
在一些实施方式中,所述DNA序列处理单元还用于将所述索引片段和数据片段转换成二进制数据,计算所述二进制数据的纠错码,并将所述纠错码转换成碱基序列,作为所述纠错片段。
在一些实施方式中,所述纠错码包括RS纠错码或海明纠错码。
第四方面,本申请实施例提出一种文本信息读取装置,包括:
DNA测序单元,用于对储存的多个第二DNA序列进行测序,得到多个DNA片段;
片段校准单元,用于根据所述多个DNA片段中的纠错片段进行校准,得到所述多个DNA片段中的索引片段和数据片段;
片段组合单元,用于根据所述索引片段表示的索引位置,对所述数据片段进行排序组合,得到第一DNA序列;
序列还原单元,用于将所述第一DNA序列中字符C替换为其前一个碱基字符,得到编码序列;
解码单元,用于根据编码表解码所述编码序列,得到所述文本信息。
相比现有技术,本申请实施例具有以下至少一项有益效果:1)本申请实施例采用改进的三叉哈夫曼编码直接对待存储的文本信息进行DNA序列编码,具有较大的压缩效率,提高了编码效率;2)本申请实施例对文本信息的长度没有限制,能够适应不同场景下的文本储存需求,具有较好的灵活性;3)本申请实施例编码后的DNA序列中无重复碱基,同时待合成的DNA序列前后端分别添加索引片段和纠错片段,提高了DNA存储和读取的可靠性。
附图说明
通过以下详细的描述并结合附图将更充分地理解本申请,其中相似的元件以相似的方式编号,其中:
图1是根据本申请实施例的文本信息存储方法的流程示意图;
图2是根据本申请实施例的三叉哈夫曼编码的流程示意图;
图3是本申请实施例中三叉哈夫曼编码的原理示例图;
图4是根据本申请实施例的文本信息读取方法的流程示意图;
图5是根据本申请实施例的文本信息存储装置的结构示意图;
图6是根据本申请实施例的编码单元的结构示意图;
图7是根据本申请实施例的文本信息读取装置的结构示意图。
具体实施方式
下面通过实施例,并结合附图,对本申请的技术方案进行清楚、完整地说明,但是本申请不限于以下所描述的实施例。基于以下实施例,本领域普通技术人员在没有创造性劳动的前提下所获得的所有其它实施例,都属于本申请保护的范围。为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。
需要说明的是,本申请中诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件或其组合的存在,并不排除一个或多个其它特征、数字、步骤、行为、部件或其组合存在或被添加的可能性。此外,术语"第一"、"第二"仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量,限定有"第一"、"第二″的特征可以明示或者隐含地包括一个或者更多个该特征。除非另有说明,本申请中"多个"的含义是指两个或两个以上。
如前所述,现有的利用DNA存储文本信息的技术方案存在灵活性差、编码效率低和可靠性不高的问题,无法满足日益增长的对不同类型的文本数据的存储需求。本申请通过深度挖掘文本字符的数据特性,将哈夫曼编码技术应用到DNA存储编码中,提出了一种更加灵活、编码更加高效、存储更为可靠的文本信息存储和读取方法及其装置。
哈夫曼编码(Huffman Coding)是一种可变字长编码,该编码方法依据字符出现的概率或频率来构造平均长度最短的码字,可以最大化节省字符编码的存储空间。传统的哈夫曼编码是通过构建二叉树来进行编码,二叉树的左分支表示编码0,右分支表示编码1,且字符只在二叉树的叶子结点上,每个叶子结点上的字符的哈夫曼编码即为从二叉树的根结点到其叶子结点的路径上的编码序列。
图1是根据本申请实施例的文本信息存储方法的流程示意图。如图1所示,本申请实施例的文本信息存储方法,包括以下步骤:
步骤S110,对待存储的文本信息进行分词处理,得到多个文本单元;
步骤S120,基于所述文本单元在所述文本信息中的出现频率,利用第一字符A、G和T对所述文本单元进行三叉哈夫曼编码,得到所述文本单元的编码表;
步骤S130,基于所述编码表,将所述文本信息转换为由第一字符构成的编码序列,并用第二字符C替换所述编码序列中与前一个字符重复的字符,得到由A、G、T、C四种碱基表示的第一DNA序列;
步骤S140,将所述第一DNA序列切分为多个数据片段,在每个数据片段的前端添加索引片段,在每个数据片段的后端添加纠错片段,得到多个DNA片段;
步骤S150,在每个DNA片段的两端添加用于扩增的正反向引物,得到多个第二DNA序列;
步骤S160,合成所述多个第二DNA序列并储存。
本申请实施例的文本信息存储方法采用三叉哈夫曼编码将待存储的文本信息中的文本单元直接编码为DNA碱基序列,该三叉哈夫曼编码基于文本单元在文本信息中的出现频率,具有较大的压缩效率,提高了编码效率。其次,本实施例所述方法对文本信息的长度没有限制,能够适应不同场景下的文本储存需求,具有较好的灵活性。此外,经过三叉哈夫曼编码所转换的编码序列中由碱基字符C替换了重复字符,使得编码后的DNA序列中无重复碱基,避免了给DNA序列合成和测序带来不必要的障碍。同时,待合成的DNA序列前后端分别添加索引片段和纠错片段,进一步提高了DNA存储和读取的可靠性。
在一些实施方案中,所述文本信息是汉语的文本信息。所述文本信息也可以是其它语言的文本信息,包括但不限于英语、西班牙语、日语、韩语、法语、德语等。在一些实施方式中,步骤S110中,所述多个文本单元包括由汉字字符组成的文本单元和/或由非汉字字符组成的文本单元。其中,由汉字字符组成的文本单元包括中文字或词,由非汉字字符组成的文本单元包括但不限于除中文字词以外的文字字词,以及标点符号、数字、字母等。
在一些实施方式中,步骤S110中,所述对待存储的文本信息进行分词处理可以包括将待存储的文本信息按照参考词库进行分词。按照参考词库进行分词就是用已经建立好的字词的集合按某种匹配算法去匹配文本目标,当遇上集合中已经存在的字词时,就将之切分出来。对中文的词库分词而言,采用的匹配算法可以包括正向最大匹配算法、逆向最大匹配算法、双向最大匹配算法等,这些属于现有技术,在此不再赘述。
作为一种示例,当待存储的文本信息包含由汉字字符组成的文本单元时,作为分词的参考词库可以选用《汉字键盘输入用通用词语集》GB/T15732-1995,按照该标准词库对待存储的文本进行分词处理。
在一些实施方式中,步骤S110中,所述对待存储的文本信息进行分词处理还可以包括对待存储的文本信息进行单字切分。单字切分就是对处理的文本信息按照单个汉字字符或单个非汉字字符进行切分。
在实际应用中,对待存储的文本按照参考词库进行分词和进行单字切分所导致的字词的出现频率可能各不相同,相应地,对分词后的文本单元进行哈夫曼编码的效率也可能存在不同。因此,在一些实施方式中,可以选择二者中编码效率更高的方式。
应理解,本申请实施例中,步骤S110对待存储的文本信息进行分词处理还可以适用其它的分词策略,例如对于中文分词,还可以包括基于统计的分词、基于规则的分词等。基于统计的分词的基本思想是基于相邻字词出现的概率或频率来进行切词。基于规则的分词的基本思想是语义分析和句法分析,利用句法信息和语义信息对文本进行分词。
在一些实施方式中,如图2所示,步骤S120进一步包括:
步骤S210,统计每个文本单元在所述文本信息中的出现频率;
步骤S220,以每个文本单元作为结点,以每个文本单元的出现频率作为该结点的权值,构建三叉哈夫曼树;
步骤S230,将所述三叉哈夫曼树的每条边分别用第一字符A、G和T表示,得到每个文本单元对应的由所述第一字符的序列表示的哈夫曼编码。
其中,步骤S220构建三叉哈夫曼树的过程包括:
步骤一,以每个文本单元的结点分别作为三叉树的根结点,构建三叉树集合,其中所述三叉树集合中的每个三叉树只有一个具有权值的根结点,子树为空。
假设文本单元的数量为n,n为大于1的整数,每个文本单元的出现频率为结点的权值ωi,则可以构成n个三叉树的集合F={T1,T2,T3,...,Tn}。
步骤二,从所述三叉树集合F中选择三个根结点权值最小的三叉树构造一个新的三叉树,其中所述新的三叉树的根结点的权值为所述三个根结点权值最小的三叉树的根结点权值的累加值。
步骤三,从所述三叉树集合F中删除步骤二中选择的三个根结点权值最小的三叉树,并将构造的新的三叉树放入所述三叉树集合F。
步骤四,重复执行所述步骤二和三,直到所述三叉树集合只含有一个树为止。至此,该三叉树集合中的唯一的一个三叉树即为该第一字符集合构建的三叉哈夫曼树。
上述构建三叉哈夫曼树的过程中,由于构建三叉哈夫曼树的结点的个数n要满足(n-1)mod2=0,当n不满足所述条件时,为了保证三叉哈夫曼树的构建,则可以在第一字符的结点之外额外添加1个冗余结点,并赋予其权值为0。
在上述建立三叉哈夫曼树之后,步骤S230对该三叉哈夫曼树的每条边分别用碱基字符A、G和T表示,从而对于每个文本单元,可以得到从该三叉哈夫曼树的根结点到该文本单元结点的路径上的碱基字符序列,即为每个文本单元对应的哈夫曼编码。文本单元和对应的哈夫曼编码的集合就构成了待存储的文本的字符编码表。应理解,该三叉哈夫曼树的每条边所表示的碱基字符A、G和T可以基于预定的顺序确定,作为一种示例性的实施方式,可以针对该树中结点的左、中、右三个分支,从左到右依次表示碱基字符A、G和T。在其它实施方式中,也可以采用其它的碱基字符的分配顺序。
图3以中文语句“利用哈夫曼编码法编码汉字”的文本信息为例给出了本申请实施例的哈夫曼编码过程的示例。如图3所示,根据《汉字键盘输入用通用词语集》GB/T15732-1995的词库对该示例文本进行分词处理,得到分词后的文本单元集合“利用、哈夫曼、编码、法、编码、汉字”。
按照上述字或词在文本中第一次出现的顺序依次编号i(i=1,2,3,4,5),统计上述字或词出现的频率,其中“利用”(i=1)的出现频率为1次,“哈夫曼”(i=2)的出现频率为1次,“编码”(i=3)的出现频率为2次,“法”(i=4)的出现频率为1次,“汉字”(i=5)的出现频率为1次。
如图3所示,初始构建的三叉树集合中的结点个数为5,这些结点的权值设置为当前字或词的出现频率,初始结点个数满足构建三叉哈夫曼树的条件。首先,从该三叉树集合中选择三个权值最小的结点(i=1,i=2,i=4)构建一个新的三叉树,该新的三叉树的根结点的权值为该3个结点的权值之和3。随后,将该新的三叉树加入三叉树集合,并从三叉树集合中删除i=1,i=2,i=4的三个结点。如此,该三叉树集合中仅剩余i=3,i=5的两个结点(两个仅有根结点、子树为空的三叉树,根结点的权值分别为2和1)和新加入的根结点权值为3的三叉树,再基于剩余的三个三叉树的根结点构建一个新的三叉树,即为最终的三叉哈夫曼树,该最终的三叉哈夫曼树的根结点权值为该三个三叉树的根结点权值之和。
在生成最终的三叉哈夫曼树之后,针对该树中结点的左、中、右三个分支,从左到右依次表示碱基字符A、G、T。从而,可以得到上述五个字或词对应的结点的哈夫曼编码,上述字或词的哈夫曼编码表如下表所示。
利用 | 哈夫曼 | 编码 | 法 | 汉字 |
AA | AG | G | AT | T |
如此,就可以根据上述编码表编码上述示例的文本信息,即“利用哈夫曼编码法编码汉字”的文本可以编码成‘AAAGGATGT’的序列,用碱基字符‘C’替换与前一个字符重复的字符之后,序列就变成‘ACAGCATGT’的9碱基序列。由此可见,采用本申请实施例的改进的直接映射哈夫曼编码法,极大地降低了编码长度,提高了编码效率。
当需要存储的文本数据量规模较大时,编码得到的结果可能有几百或者上千、上万个碱基对,由于DNA合成技术的限制,需要切分成短片段再进行合成,因此,上述步骤S130中,需要将步骤S120中生成的第一DNA序列切分为多个数据片段。在一些实施方式中,可以以120bp的长度对编码得到的第一DNA序列进行分段。
为了标识各数据片段在整个文本信息中的位置,步骤S130中,本申请实施例在每个数据片段的前端添加索引片段。在一些实施方式中,为每个数据片段的头部添加16bp的索引片段。索引片段用1个碱基表示2位比特,即{00,01,10,11}分别用{A,G,C,T}表示,最多可表示4^16个片段,远大于通常文件大小的需求。但是,简单的索引顺序表示可能会使DNA编码序列出现大量的重复序列,例如从0号片段到4^6号片段都是以连续的6个A开头的序列。为解决这个问题,在优选的实施方式中,在选择索引片段时,先产生一个最小的序列中重复碱基不大于2个且GC浓度小于50%的序列,再依次往上累加寻找满足该要求的序列,直到覆盖所有的数据片段为止。
为了提高DNA序列存储的可靠性,步骤S130中,本申请实施例在每个数据片段的后端添加纠错片段。纠错片段的作用类似于计算机中的纠错码,纠错码是对原始数据计算得到检验数据,根据这些冗余的校验数据,可以保证原始数据的可恢复性。由于计算机中主流的纠错码几乎都是为二进制数据设计的,为了得到编码序列对应的纠错码,在一些实施方式中,可以将添加了索引片段的数据片段先转换成二进制数据,然后计算该二进制数据的纠错码,并将该纠错码转换成碱基序列,以作为所述数据片段尾部的纠错片段。在一些实施方式中,可以在每个数据片段的尾部添加16bp的纠错片段。作为示例性的描述,可以将包含索引片段和数据片段的序列中碱基{A,G,C,T}对应于{00,01,10,11}转换为二进制数据,随后基于该二进制数据来计算纠错码,最后再反向转换成碱基序列,作为纠错片段添加到数据片段的尾部。
在一些实施方式中,本申请实施例中采用的纠错码可以包括RS纠错码。RS(Reed-Solomon)码是一种非二进制的线性分组循环码,其具有很强的纠错能力,既能纠正随机错误,也能纠正突发错误,并且编码简单、译码也较易实现。
在一些实施方式中,本申请实施例中采用的纠错码还可以包括海明码(HammingCode,又叫汉明码)。海明码是一种多重奇偶校验码,其实现原理是有效信息位中加入几个校验位来形成海明码,并把海明码的每个二进制位分配到几个奇偶校验组中。当某一位出错后,就会引起相关的几个校验位的值发生变化,不但可以发现错误,还可以找到错误的位置。
应理解,本申请实施例中采用的纠错码并不仅限于上述两种,其它任何能够实现类似纠错效果的纠错码算法均可以适用。
步骤S150中,本申请实施例还需要在添加了索引片段和纠错片段的DNA片段的两端添加用于扩增的正向和反向引物,组装为待合成DNA序列。引物是指在核苷酸聚合作用起始时,刺激合成的一种具有特定核苷酸序列的大分子,与反应物以共价键形式连接。引物通常是人工合成的两段寡核苷酸序列,一个引物与靶区域一端的一条DNA模板链互补,另一个引物与靶区域另一端的另一条DNA模板链互补,其功能是作为核苷酸聚合作用的起始点。在一个实施方式中,扩增核酸的方法可包括聚合酶链式反应(PCR)。聚合酶链式反应(PCR)是一种用于放大扩增特定的DNA片段的分子生物学技术,它可看作是生物体外的特殊DNA复制。
在一些实施方式中,本申请为待存储的文本信息设计PCR扩增时需要的正反向引物,分别添加于DNA片段的首尾两端的正向和反向引物各自包括20bp。
步骤S160中,对步骤S150得到的多个第二DNA序列,进行DNA合成并储存。其中,将合成的DNA序列进行储存的方式可以包括在生物体内或者体外进行保存,例如可以将合成的DNA序列以质粒形式储存在细胞中,或将DNA序列整合到细胞基因组中。
用于储存该DNA序列的细胞可以是微生物细胞,例如细菌例如大肠杆菌细胞或真菌细胞例如酵母细胞,也可以是任何适合的其它细胞或细胞系,例如昆虫细胞或哺乳动物细胞或细胞系。DNA序列可以通过任何适当的方式被导入到细胞中进行储存,例如将DNA序列克隆到真核表达载体上,然后直接转化进酵母细胞中进行传代储存,或是将DNA序列直接整合进酵母基因组中进行储存。
作为将DNA序列整合到细胞基因组中的操作实例,可以按以下步骤进行:合成多个第二DNA序列,所合成的每条DNA序列两端均带有与质粒对应的酶切位点,然后将每条DNA序列和质粒酶切并进行连接,每个质粒中插入一条DNA序列,将连接好的质粒转入大肠杆菌进行扩增,提取扩增的质粒并通过酶切检测,将检测无误的质粒进行酶切,获得目的片段后两端连接上同源序列,使两端连接有同源序列的目的片段与酵母细胞进行同源重组,使目的片段整合到酵母细胞基因组中。酵母细胞随后被传代培养。其中可以将包含每一条DNA序列的片段混合后一起与酵母细胞进行同源重组。
本领域技术人员知道,上述步骤仅仅是举例说明,可以通过其它方法将DNA序列导入到细胞中。用于储存DNA序列的细胞也不限于酵母细胞。适合的将DNA序列导入到细胞中的方法和适合的用于储存DNA序列的细胞是本领域技术人员公知的。
图4是根据本申请实施例的文本信息读取方法的流程示意图。本申请的文本信息读取方法包括以下步骤:
步骤S310,对储存的多个第二DNA序列进行测序,得到多个DNA片段;
步骤S320,根据所述多个DNA片段中的纠错片段进行校准,得到所述多个DNA片段中的索引片段和数据片段;
步骤S330,根据所述索引片段表示的索引位置,对所述数据片段进行排序组合,得到第一DNA序列;
步骤S340,将所述第一DNA序列中字符C替换为其前一个碱基字符,得到编码序列;
步骤S350,根据编码表解码所述编码序列,得到所述文本信息。
对储存的多个第二DNA序列进行测序之前,可以先提取储存的DNA序列,例如从细胞中提取所述多个第二DNA序列。储存在细胞中的DNA序列可以通过任何适当的方式被提取出来,例如直接提取酵母中的质粒后转化进大肠杆菌中进行扩增,再次提取质粒进行测序,或是直接提取酵母基因组后进行PCR扩增,对目的片段进行测序。
对DNA序列进行测序可以使用任何可用的测序技术,例如Sanger测序、第二代测序技术、和/或纳米孔测序等。
本实施例的文本信息读取方法是针对本申请的文本信息存储方法的反向过程。还是以前述示例性文本“利用哈夫曼编码法编码汉字”为例,首先,通过引物扩增、测序得到连续的编码序列ACAGCATGT’后,将字符‘C’替换回原碱基字符,原碱基字符为该字符C的前一个碱基字符,从而得到编码序列‘AAAGGATGT’。随后,依次扫描该编码序列,通过前缀匹配法匹配编码表上的字符来依次还原文本信息。先在编码表中查找第一个字符‘A’,该字符‘A’不在编码表,则查找第一个和第二个字符组成的串‘AA’在编码表中,对应于词“利用”。接着,第三个字符‘A’也不在编码表,第三个和第四个字符组成的串‘AG’在编码表中,对应于词“哈夫曼”。同理,直到所有的字符或者串解码完成,就可以得到原文本信息“利用哈夫曼编码法编码汉字”。
以下是针对包含《三字经》的前120个字和标点符号的文本采用本申请实施例的编码方法的示例。本示例中,由于《三字经》都是独立的字,很少有词,对该文本的分词处理采用单字切分,直接按单个汉字字符或单个非汉字字符进行编码。
1)待存储的文本内容如下:
人之初,性本善。性相近,习相远。
苟不教,性乃迁。教之道,贵以专。
昔孟母,择邻处。子不学,断机杼。
窦燕山,有义方。教五子,名俱扬。
养不教,父之过。教不严,师之惰。
子不学,非所宜。幼不学,老何为。
玉不琢,不成器。人不学,不知义。
为人子,方少时。亲师友,习礼仪。
香九龄,能温席。孝于亲,所当执。
融四岁,能让梨。弟于长,宜先知。
2)生成的哈夫曼编码表如下:
道 | AAAA | 迁 | AAAG | 乃 | AAAT | 专 | AAGA | 以 | AAGG | 贵 | AAGT | 母 | AATA | 山 | TGTTA |
孟 | AATG | 昔 | AATT | 不 | AG | 学 | ATA | 子 | ATG | 之 | ATT | 初 | GAAA | 燕 | TGTTG |
于 | GAAG | 能 | GAAT | 教 | GAG | 方 | GATA | 义 | GATG | 习 | GATT | 宜 | GGAA | 窦 | TGTTT |
所 | GGAG | 师 | GGAT | 亲 | GGGA | 知 | GGGG | 为 | GGGT | 相 | GGTA | 近 | GGTGA | 性 | TTAG |
善 | GGTGG | 本 | GGTGT | 苟 | GGTTA | \n | GGTTG | 远 | GGTTT | 。 | GT | , | TA | 先 | TTAAA |
幼 | TGAAA | 非 | 'TG | 养 | TGGGA | 扬 | TGGGG | 俱 | TGGGT | 严 | TGGTA | 过 | TGGTG | 长 | TTAAG |
父 | TGGTT | 处 | TGTAA | 邻 | TGTAG | 择 | TGTAT | 杼 | TGTGA | 机 | TGTGG | 断 | TGTGT | 弟 | TTAAT |
人 | TTAT | 当 | TTGAA | 孝 | TTGAG | 席 | TTGAT | 四 | TTGGA | 融 | TTGGG | 执 | TTGGT | 梨 | TTGTA |
让 | TTGTG | 岁 | TTGTT | 友 | TTTAA | 时 | TTTAG | 少 | TTTAT | 香 | TTTGA | 仪 | TTTGG | 礼 | TTTGT |
温 | TTTTA | 龄 | TTTTG | 九 | TTTTT |
3)根据编码表,得到编码序列如下:
TTATATTGAAATATTAGGGTGTGGTGGGTTTAGGGTAGGTGATAGATTGGTAGGTTTGTGGTTGGGTTAAGGAGTATTAGAAATAAAGGTGAGATTAAAATAAAGTAAGGAAGAGTGGTTGAATTAATGAATATATGTATTGTAGTGTAAGTATGAGATATATGTGTTGTGGTGTGAGTGGTTGTGTTTTGTTGTGTTATATGGATGATGGATAGTGAGTGGAGATGTATGGAATGGGTTGGGGGTGGTTGTGGGAAGGAGTATGGTTATTTGGTGGTGAGAGTGGTATAGGATATTTGAATGTGGTTGATGAGATATATGAAGGGAGGGAAGTTGAAAAGATATATGAGTTGAGGGGGTGTGGTTGTGAGAAGTGATTTAAGTGATGTGATAGTTTATAGATATAAGGGGGGATGGTGGTTGGGGTTTATATGTAGATATTTATTTTAGGTGGGAGGATTTTAATAGATTTTTGTTTTGGGTGGTTGTTTGATTTTTTTTTGTAGAATTTTTATTGATGTTTGAGGAAGGGGATAGGAGTTGAATTGGTGTGGTTGTTGGGTTGGATTGTTTAGAATTTGTGTTGTAGTTTAATGAAGTTAAGTAGGAATTAAAGGGGGT
4)用C替换重复字符后的编码序列如下:
TCATATCGACATATCAGCGTGTGCTGCGTCTAGCGTAGCTGATAGATCGCTAGCTCTGTGCTCGCGTCACGCAGTATCAGACATACAGCTGAGATCACACTACAGTACGCACGAGTGCTCGACTCACTGACTATATGTATCGTAGTGTACGTATGAGATATATGTGTCGTGCTGTGAGTGCTCGTGTCTCGTCGTGTCATATGCATGATGCATAGTGAGTGCAGATGTATGCACTGCGTCGCGCGTGCTCGTGCGACGCAGTATGCTCATCTGCTGCTGAGAGTGCTATAGCATATCTGACTGTGCTCGATGAGATATATGACGCGAGCGACGTCGACACGATATATGAGTCGAGCGCGTGTGCTCGTGAGACGTGATCTACGTGATGTGATAGTCTATAGATATACGCGCGCATGCTGCTCGCGCTCTATATGTAGATATCTATCTCAGCTGCGAGCATCTCACTAGATCTCTGTCTCGCGTGCTCGTCTGATCTCTCTCTGTAGACTCTCTATCGATGTCTGAGCACGCGCATAGCAGTCGACTCGCTGTGCTCGTCGCGTCGCATCGTCTAGACTCTGTGTCGTAGTCTACTGACGTCACGTAGCACTCACAGCGCGT
5)最后将该编码序列按照120bp划分成多个数据片段,分别添加索引片段、纠错片段和正反向引物,然后进行DNA合成和储存。
本申请实施例的利用DNA序列的文本信息存储方法采用的改进的哈夫曼编码对文本字符进行编码,具有极大的压缩效率。以上述示例的汉字文本“利用哈夫曼编码法编码汉字”为例,12字编码后的基序列长度为9bp,而现有技术中的比特碱基编码法仅在将文本信息转换为二进制数据的步骤中就至少需要12*16=192比特,很难将编码压缩到9bp,且采用背景技术中已有的4位碱基直接编码以上文本数据,则至少需要12*4=48个碱基。因此,本申请实施例能够显著提高了包括汉字字符在内的文本字符的编码效率。
此外,背景技术中已有的汉字直接编码方法采用4位碱基编码汉字,这种设定导致待编码的文件中最多只能包含4^4=256种汉字,这远远不能满足汉字文本信息的实际存储需求。而本申请实施例使用的三叉哈夫曼编码,编码灵活,对编码文件的长度没有限制,具有较好的灵活性,能够适应不同场景下的文本储存需求。
再者,本申请实施例对待存储的文本信息进行编码的编码结果序列中无重复的碱基序列,避免了给DNA合成和测序读取时带来不必要的障碍,保证了DNA存储和测序的过程可靠;并且在DNA有效载荷片段的两端添加索引序列和纠错序列,进一步保证了DNA存储和测序过程中数据的高可靠性。
图5是根据本申请实施例的文本信息存储装置的结构示意图。如图5所示,本申请实施例的文本信息存储装置,包括以下单元模块:
文本处理单元510,用于对待存储的文本信息进行分词处理,得到多个文本单元;
编码单元520,用于基于所述文本单元在所述文本信息中的出现频率,利用第一字符A、G和T对所述文本单元进行三叉哈夫曼编码,得到所述文本单元的编码表;
文本转换单元530,用于基于所述编码表,将所述文本信息转换为由第一字符构成的编码序列,并用第二字符C替换所述编码序列中与前一个字符重复的字符,得到由A、G、T、C四种碱基表示的第一DNA序列;
DNA序列处理单元540,用于将所述第一DNA序列切分为多个数据片段,在每个数据片段的前端添加索引片段,在每个数据片段的后端添加纠错片段,得到多个DNA片段;在每个DNA片段的两端添加用于扩增的正反向引物,得到多个第二DNA序列;
DNA合成储存单元550,用于合成所述多个第二DNA序列并储存。
在一些实施方式中,如图6所示,所述编码单元520包括:
统计模块610,用于统计每个文本单元在所述文本信息中的出现频率;
哈夫曼树构建模块620,用于以每个文本单元作为结点,以每个文本单元的出现频率作为该结点的权值,构建三叉哈夫曼树;
哈夫曼编码模块630,用于将所述三叉哈夫曼树的每条边用所述第一字符表示,得到每个文本单元对应的由所述第一字符的序列表示的哈夫曼编码。
其中,所述哈夫曼树构建模块620用于执行如下步骤来构建三叉哈夫曼树:
步骤一,以所述文本单元的结点分别作为三叉树的根结点,构建三叉树集合,其中所述三叉树集合中的每个三叉树只有一个具有权值的根结点,子树为空;
步骤二,从所述三叉树集合中选择三个根结点权值最小的三叉树构造一个新的三叉树,其中所述新的三叉树的根结点的权值为所述三个根结点权值最小的三叉树的根结点权值的累加值;
步骤三,从所述三叉树集合删除所述三个根结点权值最小的三叉树,并将所述新的三叉树放入所述三叉树集合;
步骤四,重复执行所述步骤二和三,直到所述三叉树集合只含有一个树为止。
在一些实施方式中,所述哈夫曼树构建模块620还用于如果所述文本单元的结点个数不满足所述三叉哈夫曼树的构建,则添加1个冗余结点,并赋予其权值为0。
在一些实施方式中,所述多个文本单元510包括由汉字字符组成的文本单元,和/或由非汉字字符组成的文本单元。
在一些实施方式中,所述文本处理单元510对待存储的文本信息进行分词处理包括将待存储的文本信息按照参考词库进行分词。
在一些实施方式中,所述文本处理单元510对待存储的文本信息进行分词处理包括对待存储的文本信息进行单字切分。
在一些实施方式中,所述索引片段满足重复碱基不大于2个且GC浓度小于50%。
在一些实施方式中,所述DNA序列处理单元540还用于将所述索引片段和数据片段转换成二进制数据,计算所述二进制数据的纠错码,并将所述纠错码转换成碱基序列,作为所述纠错片段。
在一些实施方式中,所述纠错码包括RS纠错码或海明纠错码。
图7是根据本申请实施例的文本信息读取装置的结构示意图。如图7所示,本申请实施例的文本信息读取装置,包括以下单元模块:
DNA测序单元710,用于对储存的多个第二DNA序列进行测序,得到多个DNA片段;
片段校准单元720,用于根据所述多个DNA片段中的纠错片段进行校准,得到所述多个DNA片段中的索引片段和数据片段;
片段组合单元730,用于根据所述索引片段表示的索引位置,对所述数据片段进行排序组合,得到第一DNA序列;
序列还原单元740,用于将所述第一DNA序列中字符C替换为其前一个碱基字符,得到编码序列;
解码单元750,用于根据编码表解码所述编码序列,得到所述文本信息。
本实施例的文本信息读取装置是针对本申请的文本信息存储装置而提出,涉及的相同术语的含义解释与前述实施例相同,在此不再赘述。
本申请实施例中所涉及到的步骤、单元或模块可以通过软件、硬件或其结合的方式实现。所描述的步骤、单元或模块至少部分可以实施在计算设备中,其中单元或模块的名称并不构成对该单元或模块本身的限定。该计算设备通常包括执行程序的处理器,以及用于存储程序的存储器,其中所述程序加载到处理器中运行时可以实现本申请所描述的方法中至少部分的步骤。
本申请实施例描述的方法至少部分可以被实现为计算机软件程序。例如,本申请实施例可以包括一种计算机程序产品,其包括存储有一个或一个以上计算机程序的可读存储介质,所述计算机程序包含用于执行本申请所述描述的方法中至少部分步骤的程序代码。另一方面,本申请实施例也可以包括一种计算机可读存储介质,该计算机可读存储介质存储有一个或一个以上的程序,所述一个或一个以上的程序被一个或一个以上的处理器执行时,可以实现本申请所描述的方法中至少部分的步骤。
本申请的实施方式并不限于上述实施例所述,在不偏离本申请的精神和范围的情况下,本领域普通技术人员可以在形式和细节上对本申请做出各种改变和改进,这些均被认为落入了本申请的保护范围。
Claims (16)
1.一种文本信息存储方法,包括以下步骤:
对待存储的文本信息进行分词处理,得到多个文本单元;
基于所述文本单元在所述文本信息中的出现频率,利用第一字符A、G和T对所述文本单元进行三叉哈夫曼编码,得到所述文本单元的编码表;
基于所述编码表,将所述文本信息转换为由第一字符构成的编码序列,并用第二字符C替换所述编码序列中与前一个字符重复的字符,得到由A、G、T、C四种碱基表示的第一DNA序列;
将所述第一DNA序列切分为多个数据片段,在每个数据片段的前端添加索引片段,在每个数据片段的后端添加纠错片段,得到多个DNA片段;
在每个DNA片段的两端添加用于扩增的正反向引物,得到多个第二DNA序列;
合成所述多个第二DNA序列并储存,
其特征在于,
所述基于所述文本单元在所述文本信息中的出现频率,利用第一字符A、G和T对所述文本单元进行三叉哈夫曼编码,得到所述文本单元的编码表包括:
统计每个文本单元在所述文本信息中的出现频率;
以每个文本单元作为结点,以每个文本单元的出现频率作为该结点的权值,构建三叉哈夫曼树;
将所述三叉哈夫曼树的每条边用所述第一字符表示,得到每个文本单元对应的由所述第一字符的序列表示的哈夫曼编码,
所述以每个文本单元作为结点,以每个文本单元的出现频率作为结点的权值,构建三叉哈夫曼树包括:
步骤一,以所述文本单元的结点分别作为三叉树的根结点,构建三叉树集合,其中所述三叉树集合中的每个三叉树只有一个具有权值的根结点,子树为空;
步骤二,从所述三叉树集合中选择三个根结点权值最小的三叉树构造一个新的三叉树,其中所述新的三叉树的根结点的权值为所述三个根结点权值最小的三叉树的根结点权值的累加值;
步骤三,从所述三叉树集合删除所述三个根结点权值最小的三叉树,并将所述新的三叉树放入所述三叉树集合;
步骤四,重复执行所述步骤二和三,直到所述三叉树集合只含有一个树为止。
2.根据权利要求1所述的文本信息存储方法,其特征在于,如果所述文本单元的结点个数不满足所述三叉哈夫曼树的构建,则添加1个冗余结点,并赋予其权值为0。
3.根据权利要求1所述的文本信息存储方法,其特征在于,所述多个文本单元包括由汉字字符组成的文本单元,和/或由非汉字字符组成的文本单元。
4.根据权利要求1所述的文本信息存储方法,其特征在于,所述对待存储的文本信息进行分词处理包括将待存储的文本信息按照参考词库进行分词。
5.根据权利要求1所述的文本信息存储方法,其特征在于,所述对待存储的文本信息进行分词处理包括对待存储的文本信息进行单字切分。
6.根据权利要求1所述的文本信息存储方法,其特征在于,所述索引片段满足重复碱基不大于2个且GC浓度小于50%。
7.根据权利要求1所述的文本信息存储方法,其特征在于,还包括:将所述索引片段和数据片段转换成二进制数据,计算所述二进制数据的纠错码,并将所述纠错码转换成碱基序列,作为所述纠错片段。
8.根据权利要求7所述的文本信息存储方法,其特征在于,所述纠错码包括RS纠错码或海明纠错码。
9.一种文本信息存储装置,包括:
文本处理单元,用于对待存储的文本信息进行分词处理,得到多个文本单元;
编码单元,用于基于所述文本单元在所述文本信息中的出现频率,利用第一字符A、G和T对所述文本单元进行三叉哈夫曼编码,得到所述文本单元的编码表;
文本转换单元,用于基于所述编码表,将所述文本信息转换为由第一字符构成的编码序列,并用第二字符C替换所述编码序列中与前一个字符重复的字符,得到由A、G、T、C四种碱基表示的第一DNA序列;
DNA序列处理单元,用于将所述第一DNA序列切分为多个数据片段,在每个数据片段的前端添加索引片段,在每个数据片段的后端添加纠错片段,得到多个DNA片段;在每个DNA片段的两端添加用于扩增的正反向引物,得到多个第二DNA序列;
DNA合成储存单元,用于合成所述多个第二DNA序列并储存,
其特征在于,
所述编码单元包括:
统计模块,用于统计每个文本单元在所述文本信息中的出现频率;
哈夫曼树构建模块,用于以每个文本单元作为结点,以每个文本单元的出现频率作为该结点的权值,构建三叉哈夫曼树;
哈夫曼编码模块,用于将所述三叉哈夫曼树的每条边用所述第一字符表示,得到每个文本单元对应的由所述第一字符的序列表示的哈夫曼编码,
所述哈夫曼树构建模块用于执行如下步骤来构建三叉哈夫曼树:
步骤一,以所述文本单元的结点分别作为三叉树的根结点,构建三叉树集合,其中所述三叉树集合中的每个三叉树只有一个具有权值的根结点,子树为空;
步骤二,从所述三叉树集合中选择三个根结点权值最小的三叉树构造一个新的三叉树,其中所述新的三叉树的根结点的权值为所述三个根结点权值最小的三叉树的根结点权值的累加值;
步骤三,从所述三叉树集合删除所述三个根结点权值最小的三叉树,并将所述新的三叉树放入所述三叉树集合;
步骤四,重复执行所述步骤二和三,直到所述三叉树集合只含有一个树为止。
10.根据权利要求9所述的文本信息存储装置,其特征在于,所述哈夫曼树构建模块还用于如果所述文本单元的结点个数不满足所述三叉哈夫曼树的构建,则添加1个冗余结点,并赋予其权值为0。
11.根据权利要求9所述的文本信息存储装置,其特征在于,所述多个文本单元包括由汉字字符组成的文本单元,和/或由非汉字字符组成的文本单元。
12.根据权利要求9所述的文本信息存储装置,其特征在于,所述文本处理单元对待存储的文本信息进行分词处理包括将待存储的文本信息按照参考词库进行分词。
13.根据权利要求9所述的文本信息存储装置,其特征在于,所述文本处理单元对待存储的文本信息进行分词处理包括对待存储的文本信息进行单字切分。
14.根据权利要求9所述的文本信息存储装置,其特征在于,所述索引片段满足重复碱基不大于2个且GC浓度小于50%。
15.根据权利要求9所述的文本信息存储装置,其特征在于,所述DNA序列处理单元还用于将所述索引片段和数据片段转换成二进制数据,计算所述二进制数据的纠错码,并将所述纠错码转换成碱基序列,作为所述纠错片段。
16.根据权利要求15所述的文本信息存储装置,其特征在于,所述纠错码包括RS纠错码或海明纠错码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911051841.4A CN112749247B (zh) | 2019-10-31 | 2019-10-31 | 文本信息存储和读取方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911051841.4A CN112749247B (zh) | 2019-10-31 | 2019-10-31 | 文本信息存储和读取方法及其装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112749247A CN112749247A (zh) | 2021-05-04 |
CN112749247B true CN112749247B (zh) | 2023-08-18 |
Family
ID=75641348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911051841.4A Active CN112749247B (zh) | 2019-10-31 | 2019-10-31 | 文本信息存储和读取方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112749247B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113539370B (zh) * | 2021-06-29 | 2024-02-20 | 中国科学院深圳先进技术研究院 | 编码方法、解码方法、装置、终端设备及可读存储介质 |
WO2023272499A1 (zh) * | 2021-06-29 | 2023-01-05 | 中国科学院深圳先进技术研究院 | 编码方法、解码方法、装置、终端设备及可读存储介质 |
WO2023015550A1 (zh) * | 2021-08-13 | 2023-02-16 | 深圳先进技术研究院 | Dna数据的存储方法、装置、设备及可读存储介质 |
CN113782102B (zh) * | 2021-08-13 | 2022-12-13 | 中科碳元(深圳)生物科技有限公司 | Dna数据的存储方法、装置、设备及可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006123429A1 (ja) * | 2005-05-20 | 2006-11-23 | Fujitsu Limited | 情報検索方法、装置、プログラム、該プログラムを記録した記録媒体 |
GB201413877D0 (en) * | 2014-08-05 | 2014-09-17 | Illumina Cambridge Ltd | Methods and systems for data analysis and compression |
CN106845158A (zh) * | 2017-02-17 | 2017-06-13 | 苏州泓迅生物科技股份有限公司 | 一种利用dna进行信息存储的方法 |
CN109943560A (zh) * | 2018-11-22 | 2019-06-28 | 西藏自治区人民政府驻成都办事处医院 | 基于dna载体的汉字信息存储方法 |
WO2022120912A1 (zh) * | 2020-12-11 | 2022-06-16 | 中国科学院深圳先进技术研究院 | 编码方法、解码方法、装置及计算机可读存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10790044B2 (en) * | 2016-05-19 | 2020-09-29 | Seven Bridges Genomics Inc. | Systems and methods for sequence encoding, storage, and compression |
-
2019
- 2019-10-31 CN CN201911051841.4A patent/CN112749247B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006123429A1 (ja) * | 2005-05-20 | 2006-11-23 | Fujitsu Limited | 情報検索方法、装置、プログラム、該プログラムを記録した記録媒体 |
GB201413877D0 (en) * | 2014-08-05 | 2014-09-17 | Illumina Cambridge Ltd | Methods and systems for data analysis and compression |
CN106845158A (zh) * | 2017-02-17 | 2017-06-13 | 苏州泓迅生物科技股份有限公司 | 一种利用dna进行信息存储的方法 |
CN109943560A (zh) * | 2018-11-22 | 2019-06-28 | 西藏自治区人民政府驻成都办事处医院 | 基于dna载体的汉字信息存储方法 |
WO2022120912A1 (zh) * | 2020-12-11 | 2022-06-16 | 中国科学院深圳先进技术研究院 | 编码方法、解码方法、装置及计算机可读存储介质 |
Non-Patent Citations (1)
Title |
---|
"利用改进的哈夫曼编码实现文件的压缩与解压";卢冰等;《科技通报》;第22-24页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112749247A (zh) | 2021-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112749247B (zh) | 文本信息存储和读取方法及其装置 | |
CN112382340B (zh) | 用于dna数据存储的编解码方法和编解码装置 | |
CN110945595B (zh) | 基于dna的数据存储和检索 | |
US10566077B1 (en) | Re-writable DNA-based digital storage with random access | |
US10370246B1 (en) | Portable and low-error DNA-based data storage | |
CN112582030B (zh) | 一种基于dna存储介质的文本存储方法 | |
US9830553B2 (en) | Code generation method, code generating apparatus and computer readable storage medium | |
Organick et al. | Scaling up DNA data storage and random access retrieval | |
US10956806B2 (en) | Efficient assembly of oligonucleotides for nucleic acid based data storage | |
WO2015176990A1 (en) | Method and apparatus for storing information units in nucleic acid molecules and nucleic acid storage system | |
CN111858507B (zh) | 基于dna的数据存储方法、解码方法、系统和装置 | |
US20170134045A1 (en) | Method and apparatus for encoding information units in code word sequences avoiding reverse complementarity | |
Mir et al. | Short barcodes for next generation sequencing | |
Wang et al. | Oligo design with single primer binding site for high capacity DNA-based data storage | |
Lau et al. | Magnetic DNA random access memory with nanopore readouts and exponentially-scaled combinatorial addressing | |
WO2022109879A1 (zh) | 用于dna数据存储的二进制信息到碱基序列的编解码方法和编解码装置 | |
Wu et al. | HD-code: End-to-end high density code for DNA storage | |
TWI770247B (zh) | 核酸用於資料儲存之方法、及其非暫時性電腦可讀儲存介質、系統及電子裝置 | |
CN115249509A (zh) | 基于脱氧核糖核酸技术的数据编码方法及解码方法 | |
Biswas et al. | Storing digital data in nucleic acid memory with extended genetic alphabet | |
Bhavithran et al. | Kernel code for DNA digital data storage | |
KR101916523B1 (ko) | 유전자 rna 코드 기반 재킷 행렬을 이용한 신호 처리 방법 및 장치 | |
Wang | Coding for DNA data storage | |
Zhao et al. | Composite Hedges Nanopores: A High INDEL-Correcting Codec System for Rapid and Portable DNA Data Readout | |
EP2985915A1 (en) | Method for generating codes, device for generating code word sequences for nucleic acid storage channel modulation, and computer readable storage medium |
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 |