CN110708076B - 一种基于混合模型的dna存储编解码方法 - Google Patents
一种基于混合模型的dna存储编解码方法 Download PDFInfo
- Publication number
- CN110708076B CN110708076B CN201910909449.2A CN201910909449A CN110708076B CN 110708076 B CN110708076 B CN 110708076B CN 201910909449 A CN201910909449 A CN 201910909449A CN 110708076 B CN110708076 B CN 110708076B
- Authority
- CN
- China
- Prior art keywords
- encoded
- coding
- model
- binary
- code
- 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
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4006—Conversion to or from arithmetic code
- H03M7/4012—Binary arithmetic codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/12—Computing arrangements based on biological models using genetic models
- G06N3/123—DNA computing
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Biology (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Biomedical Technology (AREA)
- Data Mining & Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Genetics & Genomics (AREA)
- Artificial Intelligence (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Algebra (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
Abstract
本发明公开了一种基于混合模型的DNA存储编解码方法,包括如下步骤:输入原始数据进行二进制转换,并进行霍夫曼编码压缩;将文件分为若干列,列首添加地址码;将DNA存储四进制和二进制模型混合编码,并修改初始模型码;采用RS编码对模型码添加纠错码,然后对DNA序列进行RS编码纠错;重复上述步骤,直至所有序列均完成编码与纠错;将所有序列按文件码和编号码排序,利用RS编码对每123列添加4列纠错序列。本发明方法将传统的DNA存储四进制模型与二进制模型混合编码,编码潜力达到1.75;相较于四进制模型,能够更好地控制GC百分比,而与二进制模型相比,存储能力大大提高。
Description
技术领域
本发明属于数据存储技术领域,具体为一种基于混合模型的DNA存储编解码方法。
背景技术
全球数据信息总量将由2018年的30ZB增长至2025年的163ZB,该趋势将很快超过现有硬盘等存储介质的承受能力。DNA数据存储技术开辟了一种新的存储模式,其发展对于节省存储能源及推进大数据存储发展有着重要作用。DNA数据存储近年来逐渐成为全球研究的热点。包括哈佛大学、哥伦比亚大学、微软研究院、华盛顿大学和剑桥大学等国内外多家研究机构均展开对DNA存储的研究。
单位质量的DNA约有1021个碱基,可存储455EB信息,此信息量为全球一年信息总量的1/4;单位体积的DNA可存储的信息为整个互联网的33倍。DNA单位体积的存储密度是硬盘和存储器的106倍,是闪存的103倍。DNA存储时长至少为硬盘、闪存的10倍。同时,它还可以通过聚合酶链反应较容易地实现扩增以获取所需数量的拷贝副本。DNA作为最稳定的储存设备之一,对于外部环境,如高温、震荡等具有极强的抗干扰能力。
DNA存储编码模型的研究面临的困难是存储效率与合成难度、成本之间的矛盾。存储效率越高,合成难度越大,成本越高,甚至难以合成。目前相关研究均处于初级阶段,数据量较小,对数据编码多采用单一DNA模型,如二进制、三进制或四进制模型,单一模型适应性较差,存在不同的缺陷。二进制模型存储效率较低,四进制模型理论存储效率最高,但存在均聚物过多、GC含量异常等问题,合成困难,三进制模型介于两者之间,存储效率有一定提升,合成难度部分下降,但不能解决这两个问题。
针对以上问题,我们尝试集合四进制高存储效率和二进制降低合成难度的优点,进行混合模型编码,并融合数据压缩算法和纠错编码,在有效解决存储错误,降低合成难度的同时,保持高效的存储效率。
发明内容
技术问题:针对现有DNA存储模型存储效率不高、合成难度较大的问题,通过一种混合模型编码方案,在有效解决存储错误,通过减少均聚物、控制GC含量等降低合成难度的同时,保持高效的存储效率。
技术方案:为解决上述问题,本发明公开了一种基于混合模型的DNA存储编解码方法,所述方法包括如下步骤:
编码过程:
输入原始数据(所有可转换为二进制的数据均可)。
1.通过二进制转换,将原始数据转换为二进制序列。
2.对二进制序列进行霍夫曼编码压缩。
3.将压缩后的二进制文件按每175个二进制数一列,分为若干列。
4.对于每列,按每7个二进制数一组,分为25组,每组前6个二进制数两两一组,最后一个二进制数单列。共得到每列150个两位二进制数和25个单独的“0”或“1”。
5.每一列列首添加地址码,包括文件码(2个二进制数)、编号码(16个二进制数)和模型码(8个二进制数),其中模型码初值设为“00000000”,每两个二进制数构成一个两位二进制数,共13个。
6.统计上述176个两位二进制数中‘00”、“01”、“10”、“11”的百分比p0(00),p0(01),p0(10),p0(11)。然后将上述4组百分比任意两组相加,共得到6组结果,p0(00+01),p0(00+10),p0(00+11),p0(01+10),p0(01+11),p0(10+11),取最接近50%的一组,将对应的两个两位二进制数与碱基G、C配对,百分比高的为G,低的为C。剩余两组分别与A、T配对,百分比高的为A,低的为T。具体描述如下:
令x=min{|p0(00+01)-50%|,|p0(00+10)-50%|,|p0(00+11)-50%|,|p0(01+10)-50%|,|p0(01+11)-50%|,|p0(10+11)-50%|},
1)若x=|p0(00+01)-50%|,且p0(00)<p0(01),则“00”编码为C,“01”编码为G,
①若p0(10)<p0(11),则“10”编码为T,“11”编码为A,
②若p0(10)>p0(11),则“10”编码为A,“11”编码为T。
2)若x=|p0(00+01)-50%|,且p0(00)>p0(01),则“00”编码为G,“01”编码为C,
①若p0(10)<p0(11),则“10”编码为T,“11”编码为A,
②若p0(10)>p0(11),则“10”编码为A,“11”编码为T。
3)若x=|p0(00+10)-50%|,且p0(00)<p0(10),则“00”编码为C,“10”编码为G,
①若p0(01)<p0(11),则“01”编码为T,“11”编码为A,
②若p0(01)>p0(11),则“01”编码为A,“11”编码为T。
4)若x=|p0(00+10)-50%|,且p0(00)>p0(10),则“00”编码为G,“10”编码为C,
①若p0(01)<p0(11),则“01”编码为T,“11”编码为A,
②若p0(01)>p0(11),则“01”编码为A,“11”编码为T。
5)若x=|p0(00+11)-50%|,且p0(00)<p0(11),则“00”编码为C,“11”编码为G,
①若p0(10)<p0(01),则“10”编码为T,“01”编码为A,
②若p0(10)>p0(01),则“10”编码为A,“01”编码为T。
6)若x=|p0(00+11)-50%|,且p0(00)>p0(11),则“00”编码为C,“11”编码为G,
①若p0(10)<p0(01),则“10”编码为T,“01”编码为A,
②若p0(10)>p0(01),则“10”编码为A,“01”编码为T。
7)若x=|p0(01+10)-50%|,且p0(01)<p0(10),则“01”编码为C,“10”编码为G,
①若p0(00)<p0(11),则“00”编码为T,“11”编码为A,
②若p0(00)>p0(11),则“00”编码为A,“11”编码为T。
8)若x=|p0(01+10)-50%|,且p0(01)>p0(10),则“01”编码为G,“10”编码为C,
①若p0(00)<p0(11),则“00”编码为T,“11”编码为A,
②若p0(00)>p0(11),则“00”编码为A,“11”编码为T。
9)若x=|p0(01+11)-50%|,且p0(01)<p0(11),则“01”编码为C,“11”编码为G,
①若p0(00)<p0(10),则“00”编码为T,“10”编码为A,
②若p0(00)>p0(10),则“00”编码为A,“10”编码为T。
10)若x=|p0(01+11)-50%|,且p0(01)>p0(11),则“01”编码为C,“11”编码为G,
①若p0(00)<p0(10),则“00”编码为T,“10”编码为A,
②若p0(00)>p0(10),则“00”编码为A,“10”编码为T。
11)若x=|p0(10+11)-50%|,且p0(10)<p0(11),则“10”编码为C,“11”编码为G,
①若p0(00)<p0(01),则“00”编码为T,“01”编码为A,
②若p0(00)>p0(01),则“00”编码为A,“01”编码为T。
12)若x=|p0(10+11)-50%|,且p0(10)>p0(11),则“10”编码为C,“11”编码为G,
①若p0(00)<p0(01),则“00”编码为T,“01”编码为A,
②若p0(00)>p0(01),则“00”编码为A,“01”编码为T。
7.剩余25个未编码的二进制数“0”和“1”,统计“0”和“1”所占百分比p1(0)和p1(1),根据以下方法初步编码:
1)若p1(0)<p1(1),
①p1i(A)<p1i(T)<p1i(C)<p1i(G)或p1i(A)<p1i(T)<p1i(G)<p1i(C)或p1i(T)<p1i(A)<p1i(C)<p1i(G)或p1i(T)<p1i(A)<p1i(G)<p1i(C),则“0”编码为C或G,“1”编码为A或T,
②p1i(A)<p1i(C)<p1i(T)<p1i(G)或p1i(A)<p1i(C)<p1i(G)<p1i(T)或p1i(C)<p1i(A)<p1i(T)<p1i(G)或p1i(C)<p1i(A)<p1i(G)<p1i(T),则“0”编码为T或G,“1”编码为A或C,
③p1i(A)<p1i(G)<p1i(T)<p1i(C)或p1i(A)<p1i(G)<p1i(C)<p1i(T)或p1i(G)<p1i(A)<p1i(T)<p1i(C)或p1i(G)<p1i(A)<p1i(C)<p1i(T),则“0”编码为C或T,“1”编码为A或G,
2)若p1(0)>p1(1),
①p1i(A)<p1i(T)<p1i(C)<p1i(G)或p1i(A)<p1i(T)<p1i(G)<p1i(C)或p1i(T)<p1i(A)<p1i(C)<p1i(G)或p1i(T)<p1i(A)<p1i(G)<p1i(C),则“1”编码为C或G,“0”编码为A或T,
②p1i(A)<p1i(C)<p1i(T)<p1i(G)或p1i(A)<p1i(C)<p1i(G)<p1i(T)或p1i(C)<p1i(A)<p1i(T)<p1i(G)或p1i(C)<p1i(A)<p1i(G)<p1i(T),则“1”编码为T或G,“0”编码为A或C,
③p1i(A)<p1i(G)<p1i(T)<p1i(C)或p1i(A)<p1i(G)<p1i(C)<p1i(T)或p1i(G)<p1i(A)<p1i(T)<p1i(C)或p1i(G)<p1i(A)<p1i(C)<p1i(T),则“1”编码为C或T,“0”编码为A或G,
此处,p1i(A),p1i(T),p1i(C)和p1i(G)(i=1…,25)为每次对“0”或“1”编码后,整个序列中已完成编码的碱基A、T、C、G所占百分比。
8.确定“0”和“1”编码后,按以下方法逐步递进:
Zi为需编码的二进制数“0”或“1”编码后的碱基(i=1…,25),Fi,Bi分别为Zi前后已完成编码的碱基,
1)根据需编码的二进制数为“0”或“1”,确定Zi对应的两种碱基,
2)碱基编码需与前一位不同,即Zi≠Fi,(i=1…,25),
3)两种碱基均可时,优先选择与后一位不同的,即Zi≠Fi,Zi≠Bi(i=1…,25),
4)两种碱基均可,且与前后位均不同时,选择min{p1i(G+C)-50%}对应的的碱基编码Zi,p1i(G+C)(i=1…,25)为每次对“0”或“1”编码后,整个序列中已完成编码的碱基G、C所占百分比。
5)若以上三条均满足时,仍存在多种碱基编码选择,则按如下方法:
①碱基A与T,优先选A,
②碱基C与G,优先选G。
例如,“0”编码为G或T,“1”编码为A或C,序列片段AAA1AAA0,其中,Z1为“0”对应的碱基,Z2为“1”对应的碱基。此时,Z1仅能编码为C,Z2可编码为G或T;进一步,序列片段AAA1AAA0G,则Z2仅能编码为T;序列片段AAA1AAA0C,且p12(G+C)<50%,则Z2编码为G,若p12(G+C)>50%,则Z2编码为T。
根据上述编码过程,构建144种四进制DNA转换模型,分别编列序号1-144,见图2。
9.单条序列的所有二进制数均编码为碱基后,根据编码过程,匹配DNA转换模型,确定使用的模型编号,将模型编号对应的二进制数序列编码为碱基,替换初始模型码。
10.对编码完成的序列,为模型码添加专属纠错码(10个碱基),插入模型码之后;列尾添加纠错码(4个碱基),纠错采用RS编码,最终得到127碱基的DNA序列。
11.重复5-12步骤,对所有二进制序列进行编码和加入纠错码,得到对应的DNA序列。
12.将得到的所有序列按文件码和编号码排序,每123行组成一个123行*127列的矩阵,其中123行表示123条已完成编码的连续编号DNA序列,127列表示DNA序列的127个碱基。然后,从模型码(第10列)开始,逐行进行RS编码纠错,纠错码长度为4个碱基,生成127*127的矩阵,即每123行DNA序列后,添加4行纠错序列。纠错序列前9列添加独立索引,按混合模型1编码。
解码过程:
1.解码过程为编码的反向过程,将测序得到的DNA序列按文件码和编号码排序,纠错序列按顺序插入其中,重新构建127*127矩阵,首先进行RS编码的行解码,根据4行纠错序列逐行对错误碱基进行纠正;然后对123行DNA序列,每一行进行RS解码;最后对每一行的模型码进行RS解码。
2.对每一行DNA序列按照模型码,选择对应的混合模型,解码转换为对应二进制序列。
3.全部解码完成后将二进制序列按照文件码和编号码拼接,删除地址码(文件码、模型码和编号码)和纠错码(模型码纠错码和列尾纠错码),得到存储信息的二进制文件。
4.对二进制文件进行霍夫曼解码,得到初始二进制序列。
5.将初始二进制序列重新生成为输入文件。
有益效果:
1.本发明方法将传统的DNA存储四进制模型与二进制模型混合编码,并结合压缩算法(霍夫曼编码)和RS纠错码,成功完成DNA数据编码、合成、存储、测序和解码的完整流程,编码潜力达到1.75。
2.相较于传统的四进制模型,能够更好地控制GC百分比和均聚物数目,保证合成准确性,降低合成难度。
3.与二进制模型相比,存储能力大大提高,二进制模型的编码潜力仅为1,而本方法的编码潜力可达1.75。
4.引入压缩与纠错算法,在提高数据存储效率的同时,对数据存储和读取过程中的错误进行有效纠正,并有效降低数据冗余。
附图说明
图1为本发明的方法流程示意图;
图2为144种混合模型编码图;
图3为混合模型选择示意图;
图4为DNA序列组成及RS码纠错示意图;
图5为实施例的输入图像;
图6为实施例中同一输入图像完成编码后,混合模型与四进制模型的GC含量和均聚物对比图;
图7为实施例中同一输入图像完成编码后,混合模型与二进制模型编码潜力和所需DNA条数对比图。
具体实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等效变换均落于本申请所附权利要求所限定的范围。
选择图像作为输入数据,图像见图5。
如图1-图7所示,本发明公开了一种基于混合模型的DNA存储编解码方法,所述方法按以下步骤进行操作:
1)输入原始数据图像(包含所有可转换为二进制的数据,大小为36.4KB),进行二进制转换,得到二进制序列。
2)对转换后的二进制序列进行霍夫曼编码压缩,压缩后长度252869;将压缩后的二进制文件按每175个二进制数一列,分为若干列;每列按每7个二进制数一组,分为25组,每组前6个二进制数两两一组,最后一个二进制数单列。二进制文件的划分中,每一条数据长度需要是7的整数倍(不限于175),每列按每7个二进制数一组,分为25组,每组前6个二进制数两两一组,最后一个二进制数单列。
3)每一列列首添加地址码,包括文件码(“01”2个二进制数)、编号码(“00000000”至“10110100101”16个二进制数)和模型码(8个二进制数),其中模型码初值设为“00000000”,每两个二进制数构成一个两位二进制数,共13个。地址码不仅包括文件码和编号码,还包括模型码,以上三种码长可根据实际需求调整。
4)对所有的两位二进制数进行DNA四进制模型编码,单个二进制数进行DNA模型二进制编码;根据编码结果,将DNA存储四进制模型和二进制模型混合编码,构建144种混合模型;
5)根据确定的混合模型编号,修改对应序列的模型码;采用Reed-solomon(RS)编码对模型码添加长度为10碱基的纠错码,插入模型码之后。
6)对步骤5得到的DNA序列进行RS编码纠错,添加长度为4碱基的纠错码,置于序列尾部,得到含有127碱基的DNA序列。
7)重复步骤3)至6),直至所有序列均完成编码与纠错。
8)将完成编码的所有序列按文件码和编号码排序,每123列组成一个127行*123列的矩阵,其中123列表示123列已完成编码的连续编号DNA序列,127行表示DNA序列的127个碱基。然后,从模型码(第10列)开始,逐行进行RS编码纠错,纠错码长度为4个碱基,生成127*127的矩阵,即每123列DNA序列后,添加4列纠错序列。纠错序列第1-9列添加独立索引,按混合模型1编码。
输入数据编码完成后的DNA序列共1493条,每条含127碱基,利用单链寡核苷酸池进行合成,合成完毕后进行NGS测序,得到合成的1493条序列的所有碱基排列顺序。
9)解码过程为编码的反向过程,将测序得到的碱基序列按文件码和编号码排序,纠错序列按顺序插入其中,重新构建127*127矩阵,首先进行RS编码的行解码,根据4列纠错序列进行错误碱基纠正;然后对123列数据存储序列,每一列进行RS解码;最后对每一列的模型码进行RS解码。
10)对每一列碱基按照模型码编号,选择对应的混合模型,解码转换为对应二进制序列。
11)全部解码完成后将二进制序列按照文件码和编号码拼接,删除地址码(文件码、模型码和编号码)和纠错码(模型码纠错码和列尾纠错码),得到存储信息的二进制文件。
12)对二进制文件进行霍夫曼解码,得到初始二进制序列,将初始二进制序列重新生成为输入图像。
13)重新解码后得到的二进制序列可以无错还原为初始输入的原始图像。
对所有的两位二进制数进行DNA四进制模型编码,单个二进制数进行DNA模型二进制编码;根据编码结果,将DNA存储四进制模型和二进制模型混合编码,构建144种混合模型,见图2。
四进制编码方法具体如下:
统计两位二进制数中‘00”、“01”、“10”、“11”的百分比p0(00),p0(01),p0(10),p0(11)。然后将上述4组百分比任意两组相加,共得到6组结果,p0(00+01),p0(00+10),p0(00+11),p0(01+10),p0(01+11),p0(10+11),取最接近50%的一组,将对应的两个两位二进制数与碱基G、C配对,百分比高的为G,低的为C。剩余两组分别与A、T配对,百分比高的为A,低的为T。具体描述如下:
令x=min{|p0(00+01)-50%|,|p0(00+10)-50%|,|p0(00+11)-50%|,|p0(01+10)-50%|,|p0(01+11)-50%|,|p0(10+11)-50%|},
若x=|p0(00+01)-50%|,且p0(00)<p0(01),则“00”编码为C,“01”编码为G,
①若p0(10)<p0(11),则“10”编码为T,“11”编码为A,
②若p0(10)>p0(11),则“10”编码为A,“11”编码为T。
若x=|p0(00+01)-50%|,且p0(00)>p0(01),则“00”编码为G,“01”编码为C,
①若p0(10)<p0(11),则“10”编码为T,“11”编码为A,
②若p0(10)>p0(11),则“10”编码为A,“11”编码为T。
若x=|p0(00+10)-50%|,且p0(00)<p0(10),则“00”编码为C,“10”编码为G,
①若p0(01)<p0(11),则“01”编码为T,“11”编码为A,
②若p0(01)>p0(11),则“01”编码为A,“11”编码为T。
若x=|p0(00+10)-50%|,且p0(00)>p0(10),则“00”编码为G,“10”编码为C,
①若p0(01)<p0(11),则“01”编码为T,“11”编码为A,
②若p0(01)>p0(11),则“01”编码为A,“11”编码为T。
若x=|p0(00+11)-50%|,且p0(00)<p0(11),则“00”编码为C,“11”编码为G,
①若p0(10)<p0(01),则“10”编码为T,“01”编码为A,
②若p0(10)>p0(01),则“10”编码为A,“01”编码为T。
若x=|p0(00+11)-50%|,且p0(00)>p0(11),则“00”编码为C,“11”编码为G,
①若p0(10)<p0(01),则“10”编码为T,“01”编码为A,
②若p0(10)>p0(01),则“10”编码为A,“01”编码为T。
若x=|p0(01+10)-50%|,且p0(01)<p0(10),则“01”编码为C,“10”编码为G,
①若p0(00)<p0(11),则“00”编码为T,“11”编码为A,
②若p0(00)>p0(11),则“00”编码为A,“11”编码为T。
若x=|p0(01+10)-50%|,且p0(01)>p0(10),则“01”编码为G,“10”编码为C,
①若p0(00)<p0(11),则“00”编码为T,“11”编码为A,
②若p0(00)>p0(11),则“00”编码为A,“11”编码为T。
若x=|p0(01+11)-50%|,且p0(01)<p0(11),则“01”编码为C,“11”编码为G,
①若p0(00)<p0(10),则“00”编码为T,“10”编码为A,
②若p0(00)>p0(10),则“00”编码为A,“10”编码为T。
若x=|p0(01+11)-50%|,且p0(01)>p0(11),则“01”编码为C,“11”编码为G,
①若p0(00)<p0(10),则“00”编码为T,“10”编码为A,
②若p0(00)>p0(10),则“00”编码为A,“10”编码为T。
若x=|p0(10+11)-50%|,且p0(10)<p0(11),则“10”编码为C,“11”编码为G,
①若p0(00)<p0(01),则“00”编码为T,“01”编码为A,
②若p0(00)>p0(01),则“00”编码为A,“01”编码为T。
若x=|p0(10+11)-50%|,且p0(10)>p0(11),则“10”编码为C,“11”编码为G,
①若p0(00)<p0(01),则“00”编码为T,“01”编码为A,
②若p0(00)>p0(01),则“00”编码为A,“01”编码为T。
二进制编码规则具体如下:
25个未编码的二进制数“0”和“1”,统计“0”和“1”所占百分比p1(0)和p1(1),根据以下规则初步编码:
若p1(0)<p1(1),
①p1i(A)<p1i(T)<p1i(C)<p1i(G)或p1i(A)<p1i(T)<p1i(G)<p1i(C)或p1i(T)<p1i(A)<p1i(C)<p1i(G)或p1i(T)<p1i(A)<p1i(G)<p1i(C),则“0”编码为C或G,“1”编码为A或T,
②p1i(A)<p1i(C)<p1i(T)<p1i(G)或p1i(A)<p1i(C)<p1i(G)<p1i(T)或p1i(C)<p1i(A)<p1i(T)<p1i(G)或p1i(C)<p1i(A)<p1i(G)<p1i(T),则“0”编码为T或G,“1”编码为A或C,
③p1i(A)<p1i(G)<p1i(T)<p1i(C)或p1i(A)<p1i(G)<p1i(C)<p1i(T)或p1i(G)<p1i(A)<p1i(T)<p1i(C)或p1i(G)<p1i(A)<p1i(C)<p1i(T),则“0”编码为C或T,“1”编码为A或G,
若p1(0)>p1(1),
①p1i(A)<p1i(T)<p1i(C)<p1i(G)或p1i(A)<p1i(T)<p1i(G)<p1i(C)或p1i(T)<p1i(A)<p1i(C)<p1i(G)或p1i(T)<p1i(A)<p1i(G)<p1i(C),则“1”编码为C或G,“0”编码为A或T,
②p1i(A)<p1i(C)<p1i(T)<p1i(G)或p1i(A)<p1i(C)<p1i(G)<p1i(T)或p1i(C)<p1i(A)<p1i(T)<p1i(G)或p1i(C)<p1i(A)<p1i(G)<p1i(T),则“1”编码为T或G,“0”编码为A或C,
③p1i(A)<p1i(G)<p1i(T)<p1i(C)或p1i(A)<p1i(G)<p1i(C)<p1i(T)或p1i(G)<p1i(A)<p1i(T)<p1i(C)或p1i(G)<p1i(A)<p1i(C)<p1i(T),则“1”编码为C或T,“0”编码为A或G,
此处,p1i(A),p1i(T),p1i(C)和p1i(G)(i=1…,25)为每次对“0”或“1”编码后,整个序列中已完成编码的碱基A、T、C、G所占百分比。
确定“0”和“1”编码后,按以下规则逐步递进:
Zi为需编码的二进制数“0”或“1”编码后的碱基(i=1…,25),Fi,Bi分别为Zi前后已完成编码的碱基,
①根据需编码的二进制数为“0”或“1”,确定Zi对应的两种碱基,
②碱基编码需与前一位不同,即Zi≠Fi,(i=1…,25),
③两种碱基均可时,优先选择与后一位不同的,即Zi≠Fi,Zi≠Bi(i=1…,25),
④两种碱基均可,且与前后位均不同时,选择min{p1i(G+C)-50%}对应的的碱基编码Zi,p1i(G+C)(i=1…,25)为每次对“0”或“1”编码后,整个序列中已完成编码的碱基G、C所占百分比。
⑤若以上三条均满足时,仍存在多种碱基编码选择,则按如下规则:
碱基A与T,优先选A;碱基C与G,优先选G。
例如,“0”编码为G或T,“1”编码为A或C,序列片段AAA1AAA0,其中,Z1为“0”对应的碱基,Z2为“1”对应的碱基。此时,Z1仅能编码为C,Z2可编码为G或T;进一步,序列片段AAA1AAA0G,则Z2仅能编码为T;序列片段AAA1AAA0C,且p12(G+C)<50%,则Z2编码为G,若p12(G+C)>50%,则Z2编码为T。
在传统的序列内纠错码和序列间纠错码的基础上,添加模型码纠错码,长度为模型码码长的2倍以上(当前模型码长4,模型纠错码长10),保证模型码的完整纠错,以保证解码的高准确性。
每条序列的存储部分都不含均聚物,GC的含量控制在合成需要的30%-70%之间。
图6为编码完成后,混合模型与四进制模型的GC含量和均聚物对比图。根据图示,四进制模型的GC含量均高于50%,且大部集中于70%以上,而混合模型下,所有DNA序列的GC含量均控制在30%-70%之间,符合DNA合成要求,有效降低合成难度。另外,四进制模型下的均聚物含量大部分在10-50之间,部分甚至大于80,而混合模型下的均聚物含量均为0,显著低于四进制模型下的均聚物数目。
图7为编码完成后,混合模型与二进制模型的编码潜力和编码所需DNA条数对比图。根据图示,混合模型的编码潜力为1.75,远高于二进制模型的1;而编码所需DNA条数,混合模型仅为二进制模型的57.14%,合成数目大大减少,有效降低合成难度,数据量越大,效果越明显。
本发明方案所公开的技术手段不仅限于上述实施方式所公开的技术手段,还包括由以上技术特征任意组合所组成的技术方案。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (7)
1.一种基于混合模型的DNA存储编解码方法,其特征在于:所述方法包括如下步骤:
1)输入原始数据,进行二进制转换;
2)对转换后的二进制序列进行霍夫曼编码压缩;将压缩后的二进制文件按每175个二进制数一列,分为若干列;每列按每7个二进制数一组,分为25组,每组前6个二进制数两两一组,最后一个二进制数单列;
3)每一列列首添加地址码,包括文件码、编号码和模型码,其中模型码初值设为“00000000”,每两个二进制数构成一个两位二进制数,共13个;
4)对所有的两位二进制数进行DNA四进制模型编码,单个二进制数进行DNA模型二进制编码;根据编码结果,将DNA存储四进制模型和二进制模型混合编码,构建144种混合模型;
5)根据确定的混合模型编号,修改对应序列的模型码;采用RS纠错编码对模型码添加长度为10碱基的纠错码,插入模型码之后;
6)对步骤5得到的DNA序列进行RS编码纠错,添加长度为4碱基的纠错码,置于序列尾部,得到含有127碱基的DNA序列;
7)重复步骤3)至6),直至所有序列均完成编码与纠错;
8)将完成编码的所有序列按文件码和编号码排序,每123列组成一个127行*123列的矩阵,其中123列表示123列已完成编码的连续编号DNA序列,127行表示DNA序列的127个碱基;然后,从模型码开始,逐行进行RS编码纠错,纠错码长度为4个碱基,生成127*127的矩阵,即每123列DNA序列后,添加4列纠错序列;纠错序列前9列添加独立索引,按混合模型1编码;
9)解码过程为编码的反向过程,将测序得到的碱基序列按文件码和编号码排序,纠错序列按顺序插入其中,重新构建127*127矩阵,首先进行RS编码的行解码,根据4列纠错序列进行错误碱基纠正;然后对123列数据存储序列,每一列进行RS解码;最后对每一列的模型码进行RS解码;
10)对每一列碱基按照模型码编号,选择对应的混合模型,解码转换为对应二进制序列;
11)全部解码完成后将二进制序列按照文件码和编号码拼接,删除地址码和纠错码,得到存储信息的二进制文件;
12)对二进制文件进行霍夫曼解码,得到初始二进制序列,将初始二进制序列重新生成为输入文件。
2.基于权利要求1所述的基于混合模型的DNA存储编解码方法,其特征在于,所述原始数据为任何可以转换为二进制的数据。
3.基于权利要求1所述的基于混合模型的DNA存储编解码方法,其特征在于,所述二进制文件的划分中,每一条数据长度需要是7的整数倍,每列按每7个二进制数一组,分为25组,每组前6个二进制数两两一组,最后一个二进制数单列。
4.基于权利要求1所述的基于混合模型的DNA存储编解码方法,其特征在于,所述地址码包括文件码、编号码、模型码。
5.基于权利要求1所述的基于混合模型的DNA存储编解码方法,其特征在于,对所有的两位二进制数进行DNA四进制模型编码,单个二进制数进行DNA模型二进制编码;根据编码结果,将DNA存储四进制模型和二进制模型混合编码,构建144种混合模型;
四进制编码方法具体如下:
统计两位二进制数中‘00’’、“01”、“10”、“11”的百分比p0(00),p0 (01),p0 (10),p0(11);
然后将上述4组百分比任意两组相加,共得到6组结果,p0 (00+01),p0 (00+10),p0 (00+11),p0 (01+10),p0 (01+11),p0 (10+11),取最接近50%的一组,将对应的两个两位二进制数与碱基G、C配对,百分比高的为G,低的为C;剩余两组分别与A、T配对,百分比高的为A,低的为T;具体方法如下:
令x=min{|p0 (00+01)-50%|,|p0 (00+10) -50%|,|p0 (00+11) -50%|,|p0 (01+10) -50%|,|p0 (01+11) -50%|,|p0 (10+11) -50%|},
若x=| p0 (00+01)-50%|,且p0(00)< p0(01),则“00”编码为C,“01”编码为G,
若x=| p0 (00+01)-50%|,且p0(00)> p0(01),则“00”编码为G,“01”编码为C,
若x=| p0 (00+10)-50%|,且p0(00)< p0(10),则“00”编码为C,“10”编码为G,
若x=| p0 (00+10)-50%|,且p0(00)>p0(10),则“00”编码为G,“10”编码为C,
若x=| p0 (00+11)-50%|,且p0(00)< p0(11),则“00”编码为C,“11”编码为G,
若x=| p0 (00+11)-50%|,且p0(00)> p0(11),则“00”编码为C,“11”编码为G,
若x=| p0 (01+10)-50%|,且p0(01)<p0(10),则“01”编码为C,“10”编码为G,
若x=| p0 (01+10)-50%|,且p0(01)>p0(10),则“01”编码为G,“10”编码为C,
若x=| p0 (01+11)-50%|,且p0(01)<p0(11),则“01”编码为C,“11”编码为G,
若x=| p0 (01+11)-50%|,且p0(01)>p0(11),则“01”编码为C,“11”编码为G,
若x=| p0 (10+11)-50%|,且p0(10)<p0(11),则“10”编码为C,“11”编码为G,
若x=| p0 (10+11)-50%|,且p0(10)>p0(11),则“10”编码为C,“11”编码为G,
二进制编码方法具体如下:
25个未编码的二进制数“0”和“1”,统计“0”和“1”所占百分比p1(0)和p1(1),根据以下方法初步编码:
若p1(0)< p1(1),
p1i (A)< p1i (T) < p1i (C) < p1i (G)或p1i (A)< p1i (T) < p1i (G) < p1i (C)或p1i (T)< p1i (A) < p1i (C) < p1i (G)或p1i (T)< p1i (A) < p1i (G) < p1i (C),则“0”编码为C或G,“1”编码为A或T,
p1i (A)< p1i (C) < p1i (T) < p1i (G)或 p1i (A)< p1i (C) < p1i (G) < p1i (T)或p1i (C)< p1i (A) < p1i (T) < p1i (G)或 p1i (C)< p1i (A) < p1i (G) < p1i (T),则“0”编码为T或G,“1”编码为A或C,
p1i (A)< p1i (G) < p1i (T) < p1i (C)或 p1i (A)< p1i (G) < p1i (C) < p1i (T)或p1i (G)< p1i (A) < p1i (T) < p1i (C)或 p1i (G)< p1i (A) < p1i (C) < p1i (T),则“0”编码为C或T,“1”编码为A或G,
若p1(0)>p1(1),
p1i (A)< p1i (T) < p1i (C) < p1i (G)或p1i (A)< p1i (T) < p1i (G) < p1i (C)或p1i (T)< p1i (A) < p1i (C) < p1i (G)或p1i (T)< p1i (A) < p1i (G) < p1i (C),则“1”编码为C或G,“0”编码为A或T,
p1i (A)< p1i (C) < p1i (T) < p1i (G)或 p1i (A)< p1i (C) < p1i (G) < p1i (T)或p1i (C)< p1i (A) < p1i (T) < p1i (G)或 p1i (C)< p1i (A) < p1i (G) < p1i (T),则“1”编码为T或G,“0”编码为A或C,
p1i (A)< p1i (G) < p1i (T) < p1i (C)或 p1i (A)< p1i (G) < p1i (C) < p1i (T)或p1i (G)< p1i (A) < p1i (T) < p1i (C)或 p1i (G)< p1i (A) < p1i (C) < p1i (T),则“1”编码为C或T,“0”编码为A或G,
此处,p1i (A),p1i (T),p1i (C)和p1i (G) (i=1…,25)为每次对“0”或“1”编码后,整个序列中已完成编码的碱基A、T、C、G所占百分比;
确定“0”和“1”编码后,按以下方法逐步递进:
Zi为需编码的二进制数“0”或“1”编码后的碱基(i=1…,25),Fi,Bi分别为Zi前后已完成编码的碱基,
两种碱基均可,且与前后位均不同时,选择min{p1i(G+C)-50%}对应的碱基编码Zi,p1i(G+C) (i=1…,25)为每次对“0”或“1”编码后,整个序列中已完成编码的碱基G、C所占百分比;
碱基A与T,优先选A;碱基C与G,优先选G。
6.基于权利要求1所述的基于混合模型的DNA存储编解码方法,其特征在于,在传统的序列内纠错码和序列间纠错码的基础上,添加模型码纠错码,长度为模型码码长的2倍以上。
7.基于权利要求1所述的基于混合模型的DNA存储编解码方法,其特征在于,每条序列的存储部分都不含均聚物,GC的含量控制在合成需要的30%-70%之间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910909449.2A CN110708076B (zh) | 2019-09-25 | 2019-09-25 | 一种基于混合模型的dna存储编解码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910909449.2A CN110708076B (zh) | 2019-09-25 | 2019-09-25 | 一种基于混合模型的dna存储编解码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110708076A CN110708076A (zh) | 2020-01-17 |
CN110708076B true CN110708076B (zh) | 2022-12-20 |
Family
ID=69196332
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910909449.2A Active CN110708076B (zh) | 2019-09-25 | 2019-09-25 | 一种基于混合模型的dna存储编解码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110708076B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111681290B (zh) * | 2020-04-21 | 2023-08-15 | 华中科技大学鄂州工业技术研究院 | 一种基于dna编码技术的图片存储方法 |
CN111600609B (zh) * | 2020-05-19 | 2022-11-11 | 东南大学 | 一种优化中文存储的dna存储编码方法 |
CN112288089B (zh) * | 2020-09-28 | 2022-12-20 | 清华大学 | 阵列式核酸信息存储方法及装置 |
WO2022109879A1 (zh) * | 2020-11-25 | 2022-06-02 | 中国科学院深圳先进技术研究院 | 用于dna数据存储的二进制信息到碱基序列的编解码方法和编解码装置 |
CN112802549B (zh) * | 2021-01-26 | 2022-05-13 | 武汉大学 | Dna序列完整性校验和纠错的编解码方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105940372A (zh) * | 2014-11-24 | 2016-09-14 | 蔡光贤 | 三进制和二进制混合运算的计算机系统 |
CN109300508A (zh) * | 2017-07-25 | 2019-02-01 | 南京金斯瑞生物科技有限公司 | 一种dna数据存储编码解码方法 |
-
2019
- 2019-09-25 CN CN201910909449.2A patent/CN110708076B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105940372A (zh) * | 2014-11-24 | 2016-09-14 | 蔡光贤 | 三进制和二进制混合运算的计算机系统 |
CN109300508A (zh) * | 2017-07-25 | 2019-02-01 | 南京金斯瑞生物科技有限公司 | 一种dna数据存储编码解码方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110708076A (zh) | 2020-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110708076B (zh) | 一种基于混合模型的dna存储编解码方法 | |
CN111600609B (zh) | 一种优化中文存储的dna存储编码方法 | |
CN110706751A (zh) | 一种dna存储加密编码方法 | |
Shomorony et al. | Capacity results for the noisy shuffling channel | |
CN112382340B (zh) | 用于dna数据存储的编解码方法和编解码装置 | |
CN110945595B (zh) | 基于dna的数据存储和检索 | |
CN109830263B (zh) | 一种基于寡核苷酸序列编码存储的dna存储方法 | |
CN101183565B (zh) | 存储介质中数据校验方法 | |
CN109979540B (zh) | 一种dna信息存储编码方法 | |
Dimopoulou et al. | A biologically constrained encoding solution for long-term storage of images onto synthetic DNA | |
CN110932736B (zh) | 一种基于Raptor码及四进制RS码的DNA信息存储方法 | |
JP2014135097A (ja) | クロス・ページ・セクタ、マルチ・ページ符号化およびパー・ページ符号化を使用して多重レベル・セル・フラッシュ・メモリ・デバイスにデータを記憶するための方法および装置 | |
CN113228193B (zh) | 一种定点编辑存储有数据的核酸序列的方法及装置 | |
JP2012525062A5 (zh) | ||
JP2013524609A5 (zh) | ||
Weinberger et al. | The DNA storage channel: Capacity and error probability bounds | |
CN113345521A (zh) | 一种采用大片段dna存储的编码与恢复方法 | |
CN112799605B (zh) | 平方部分重复码构造方法、节点修复方法及容量计算方法 | |
CN115459781A (zh) | 一种基于静态交织编码的长序列dna存储编码方法 | |
CN114974429A (zh) | 一种基于十进制的dna存储编码方法、设备及可读存储介质 | |
Wang et al. | Oligo design with single primer binding site for high capacity DNA-based data storage | |
Song et al. | Super-robust data storage in DNA by de Bruijn graph-based decoding | |
CN107196665B (zh) | 一种纠错纠删rs码的识别方法 | |
JP2001028549A (ja) | 衛星アプリケーション用の積符号によって、セルを符号化する方法 | |
CN104268031A (zh) | 一种用于磁盘阵列存储系统中固态硬盘的擦除码配置方法 |
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 |