CN114328000A - 1型2型分段纠错内码的dna存储级联编码与解码方法 - Google Patents
1型2型分段纠错内码的dna存储级联编码与解码方法 Download PDFInfo
- Publication number
- CN114328000A CN114328000A CN202210019418.1A CN202210019418A CN114328000A CN 114328000 A CN114328000 A CN 114328000A CN 202210019418 A CN202210019418 A CN 202210019418A CN 114328000 A CN114328000 A CN 114328000A
- Authority
- CN
- China
- Prior art keywords
- sequence
- sequences
- information
- block
- quaternary
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- 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/27—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 using interleaving techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本发明公开了1型2型分段纠错内码的DNA存储级联编码与解码方法,二种方法依次包括编码步骤与解码步骤,编码步骤包括读取原始数据、外码编码、内码编码与将编码后信息转换为DNA序列,解码步骤依次包括筛选测序文件中的DNA序列,并转换为待解码四进制序列、内码解码、外码解码、恢复原始数据。本发明1型2型分段纠错内码的DNA存储级联编码与解码方法适用于任意不大于1G的磁盘可存储类型的数据、具有编码方法可实现数据快速写入DNA序列且达到较高的存储效率、解码方法分别可实现当存储系统的碱基错误率不超过1%时数据无损解读、当存储系统的碱基错误率较高但不超过1.5%时数据无损解读的特点。
Description
技术领域
本发明涉及1型2型分段纠错内码的DNA存储级联编码与解码方法,具体地,本发明分别涉及1型分段纠错内码的DNA存储级联编码与解码方法与2型分段纠错内码的DNA存储级联编码与解码方法。
背景技术
自G.Church研究团队于2012年提出DNA存储的概念和第一代通用DNA存储的编码方法以来,编码与解码方法的研究对实现高效稳定的DNA存储、对接上下游技术支撑起到至关重要的作用。适用于DNA存储系统的编码与解码方法需满足以下需求:1.可编码生成较短长度的DNA链;2.可从无序排列,且存在链丢失错误、链内编辑错误的大量DNA链中恢复出原始数据;3.具有较低的时间及空间复杂度。其中,第二点需求展开为:2.1.可纠正每条DNA链内的三种类型错误,即删除、插入和替换错误;2.2.可恢复丢失DNA链中全部信息;2.3.可重排序信息,恢复出原始数据。然而目前在DNA数据存储系统里得到应用的大多数编解码方法,如重复码、RS码、BCH码、循环冗余校验码、喷泉码以及LDPC码等,只能纠正DNA链内的替换错误和部分DNA链的丢失错误,无法有效处理删除和插入错误,即不满足第2.1条需求,导致大量DNA序列解码失败,进而使得合成和测序的成本增加、效率降低。另一类编解码方法,如卷积码等,尽管可部分满足第2.1条需求,但其编解码复杂度较高,不满足第3条需求。
发明内容
本发明所要解决的技术问题之一是提供一种1型分段纠错内码的DNA存储级联编码与解码方法;本发明所要解决的技术问题之二是提供一种2型分段纠错内码的DNA存储级联编码与解码方法。
本发明1型分段纠错内码的DNA存储级联编码与解码方法的技术方案是这样实现的:1型分段纠错内码的DNA存储级联编码与解码方法,依次包括如下步骤:
A.编码步骤
A1.读取原始数据
将获取的不大于1G的任意磁盘可存储类型的原始数据读取到计算机中,得到原始数据的二进制表示,称其为二进制数据序列,记长度为L;
A2.外码编码
(1).将步骤A1所得二进制数据序列不重叠地划分为一系列长度为q的短信息序列,若最后一条短信息序列长度不足q,则用“0”补足q长度;依次取出上述短信息序列中的m条,并将各条短信息序列横向放置后纵向依次排列,形成一个列数为q、行数为m的0-1矩阵,称此矩阵为一个短信息序列组,若最后一次分组时剩余短信息序列的数量不足m条,则用长度为q的全0序列补足m条;二进制数据序列分组后得到h个短信息序列组;
(2).在每个短信息序列组中,依次按列提取长度为m的二进制序列通过外码编码方法进行编码得到长度记为M的外码编码后序列,将q条外码编码后序列依次纵向放置后横向依次排列,形成一个行数为M、列数为q的初始外码码字矩阵;h个短信息序列组得到h个初始外码码字矩阵;
(3).将步骤A2(2)所得h个初始外码码字矩阵的每一行的行号即此行位于所在矩阵中的第几行及其对应的矩阵序号即此行位于第几个矩阵的十进制数值称为索引信息,并分别转换为二进制序列拼接在该行信息序列的前端,使每个初始外码码字矩阵均形成一个行数为M、列数为的完整外码码字矩阵;
(4).除第h个完整外码码字矩阵中用于补足的全0序列对应的行外,提取步骤A2(3)所得h个完整外码码字矩阵的其余各行,对应形成待内码编码的二进制序列,得到M'条待内码编码二进制序列;
A3.内码编码
(1).将步骤A2(5)所述每条待内码编码四进制序列不重叠地按长度k分段,依次得到t-1个长度为k的四进制符号单位的信息块,第t个信息块即信息块末块为t-1次分段后剩余的四进制序列信息,其长度为个四进制符号单位,最终每条待内码编码四进制序列被分为t个信息块;
(2).将步骤A3(1)所得每条待内码编码四进制序列分段后得到的t个信息块依次进行编码,步骤如下:初始化建立一条空四进制码字序列,通过迭代以下步骤得到相应四进制码字序列:依次对前t-1个信息块编码,每次进行下列步骤1)至6);完成前t-1个信息块编码后,将参数k变为k',对第t个信息块编码,进行下列步骤1)至4):
2).分别将步骤A3(2)1)所得两个二进制序列用(k,a)结构型Levenshtein编码器编码为符合Levenshtein代数结构的二进制序列,其中a为固定参数,通常选择a=0,设待编码二进制序列为(x1,x2,...,xk),编码后二进制序列为(y1,y2,...,yn),参数n和v通过以下两个方程计算得到:i).n是使得等式成立的最小整数,ii).v=n-k;设计(k,a)结构型Levenshtein编码器的具体操作步骤为:
①.在二元位置I={2i:0≤i≤v-2}∪{n}插入“校验”位,即在0≤i≤v-2和yn插入校验位,并将这些位置即校验位取值初始化为0,并将待编码二进制序列(x1,x2,...,xk)顺序补入编码后码字的其它位置,即
3).将步骤A3(2)2)所得两个编码后的二进制序列进行交织,得到1型Levenshtein块;
4).更新四进制码字序列:将步骤A3(2)3)所得1型Levenshtein块拼接在当前四进制码字序列末端;
5).1型标记块为固定符号“001”;
6).更新四进制码字序列:将步骤A3(2)5)所得1型标记块拼接在当前四进制码字序列末端;
A4.将编码后信息转换为DNA序列
通过“碱基-符号”对应关系即0-A、1-T、2-G、3-C将步骤A3(2)所得M’条四进制码字序列全部转换为DNA序列,记DNA序列长度为T;
B.解码步骤
B1筛选DNA测序文件中的DNA序列,并转换为待解码四进制序列
首先根据DNA序列长度进行筛选,剔除其中长度大于T+t或长度小于T-t的无效序列,再筛选出上述剔除后剩余DNA序列中重复出现次数最多的M’条序列,并按步骤A4中的“碱基-符号”对应关系将上述M’条DNA序列还原为一系列待解码四进制序列;
B2内码解码
将步骤B1得到的所有待解码四进制序列以步骤A3(1)-A3(2)的反向步骤解码恢复信息块,1型内码的解码需要在一个接收序列上顺序进行,以下解码步骤中使用的符号k、n、t、a、I的具体含义及取值与1型内码编码方法即步骤A3相同,完成对前t-1个信息块的解码后,将参数k变为k’,对第t个信息块解码:
(1).对每条包含t个1型Levenshtein块和t-1个1型标记块的待解码四进制序列顺序检索1型标记块出现的位置,每两个1型标记块之间的序列为1个1型Levenshtein块,每条待解码四进制序列得到顺序排列的t个待解码的1型Levenshtein块;
(2).按顺序每次将1个待解码的1型Levenshtein块序列解交织为两个二进制序列后输入设计如下的(k,a)结构型Levenshtein解码器:
4).当u不等于n-1,n,n+1时,可知序列发生超过一个错误,无法成功解码,标记整个块为“e”,即该块解码失败;
解码器输出两条解码后的二进制序列,删除其中二元位置I上的符号,将删减后的两条二进制序列交织,得到该1型Levenshtein块解码出的信息块;
(3).依次按顺序将步骤B2(2)所得信息块拼接为一条四进制信息序列;
B3外码解码
(1).将步骤B2(3)所得所有四进制信息序列按照步骤A2(5)中的“四进制-二进制”对应关系即00-0、01-1、10-2、11-3转换为二进制序列,若四进制序列中包含元素“e”,则转换为“ee”记录在二进制序列中;
(2).将步骤B3(1)所得所有二进制序列按索引信息进行排序,并根据步骤A2(1)-A2(4)中的外码解码方法解码恢复出一系列短信息序列;
B4恢复原始数据
将步骤B3所得一系列短信息序列按索引序列给出的前后顺序拼接,恢复出原始数据。
本发明2型分段纠错内码的DNA存储级联编码与解码方法的技术方案是这样实现的:2型分段纠错内码的DNA存储级联编码与解码方法,依次包括如下步骤:
A.编码步骤
A1.读取原始数据
将获取的不大于1G的任意磁盘可存储类型的原始数据读取到计算机中,得到原始数据的二进制表示,称其为二进制数据序列,记长度为L;
A2.外码编码
(1).将步骤A1所得二进制数据序列不重叠地划分为一系列长度为q的短信息序列,若最后一条短信息序列长度不足q,则用“0”补足q长度;依次取出上述短信息序列中的m条,并将各条序列横向放置后纵向依次排列,形成一个列数为q、行数为m的0-1矩阵,称此矩阵为一个短信息序列组,若最后一次分组时剩余短信息序列的数量不足m条,则用长度为q的全0序列补足m条;二进制数据序列分组后得到h个短信息序列组;
(2).在每个短信息序列组中,依次按列提取长度为m的二进制序列通过外码编码方法进行编码得到长度记为M的外码编码后序列,将q条外码编码后序列依次纵向放置后横向依次排列,形成一个行数为M、列数为q的初始外码码字矩阵;h个短信息序列组得到h个初始外码码字矩阵;
(3).将步骤A2(2)所得h个初始外码码字矩阵的每一行的行号即此行位于所在矩阵中的第几行及其对应的矩阵序号即此行位于第几个矩阵的十进制数值称为索引信息,并分别转换为二进制序列拼接在该行信息序列的前端,使每个初始外码码字矩阵均形成一个行数为M、列数为的完整外码码字矩阵;
(4).除第h个完整外码码字矩阵中用于补足的全0序列对应的行外,提取步骤A2(3)所得h个完整外码码字矩阵的其余各行,对应形成待内码编码的二进制序列,得到M'条待内码编码二进制序列;
A3.内码编码
(1).将步骤A2(5)所述每条待内码编码四进制序列不重叠地按长度k分段,依次得到t-1个长度为k的四进制符号单位的信息块,第t个信息块即信息块末块为步骤A2(5)所得每条待内码编码四进制序列t-1次分段后剩余的四进制序列信息,长度为个四进制符号单位,最终每条待内码编码四进制序列被分为t个信息块;
(2).将步骤A3(1)所得每条待编码四进制序列分段得到的t个信息块依次进行编码,得到M'条包含Q'个四进制符号单位的四进制码字序列;上述t个信息块的编码步骤如下:初始化建立一条空四进制码字序列,通过迭代以下步骤得到相应四进制码字序列:依次对前t-1个信息块编码,每次进行下列步骤1)至4);完成前t-1个信息块编码后,将参数k变为k',对第t个信息块编码,进行下列步骤1)至2):
1).编码2型Levenshtein块,其中令四进制信息块表示为
④.计算分隔块:分隔位为分隔块由连续三个分隔位符号构成,分隔位满足Sp:∑3→∑,若a+2≠b,c,Sp(a,b,c)=a+2,若a+3≠b,c,Sp(a,b,c)=a+3,否则Sp(a,b,c)=a+1,分隔块为3个四进制符号单位;
⑤.将原始信息块,以及步骤A3(2)1)②-A3(2)1)④的编码结果按校验块、分隔块与余数块的顺序拼接形成2型Levenshtein块;
2).更新四进制码字序列:将步骤A3(2)1)中2型Levenshtein块拼接在当前四进制码字序列末端;
3).计算2型标记块:标记位为Mk(as,x1,x2),和分隔位计算规则相同,其中as为步骤A3(2)1)得到的2型Levenshtein块的最后一个符号,x1,x2为下一个待编码的信息块的前两个符号,两个重复的标记位符号形成标记块,标记块为2个四进制符号单位;
4).更新四进制码字序列:将步骤A3(2)3)所得2型标记块拼接在当前四进制码字序列末端;
A4.将编码后信息转换为DNA序列
通过“碱基-符号”对应关系即0-A、1-T、2-G、3-C将步骤A3(2)所得共计M'条四进制码字序列全部转换为DNA序列,记DNA序列长度为T;
B.解码步骤
B1筛选DNA测序文件中的DNA序列,并转换为待解码四进制序列
首先根据DNA序列长度进行筛选,剔除其中长度大于T+t或长度小于T-t的无效序列,再筛选出上述剔除后剩余DNA序列中重复出现次数最多的M'条序列,并按步骤A4中的“碱基-符号”对应关系将上述M'条DNA序列还原为一系列待解码四进制序列;
B2内码解码
将步骤B1得到的所有待解码四进制序列以步骤A3(1)-A3(2)的反向步骤,解码恢复信息块,具体解码步骤如下:其中使用的符号k、s的具体含义及取值与2型内码编码方案即步骤A2中相同,完成对前t-1个信息块的解码后,将参数k变为k',再对第t个信息块解码:
(1).自序列首端开始顺序扫描待解码四进制序列,对第一个2型Levenshtein块和2型标记块进行解码,记整条待解码四进制序列为(y1,y2,...,yT),检查序列是否属于表1所列的错误类型之一,若属于表1所列的错误类型之一,则找到如表2所列的错误类型对应的错误信息序列以及余数信息,其中k为步骤A3(2)中信息块长度,为余数块长度,表1为检验块、分隔块与余数块检验对应的错误类型;表2为错误类型对应的错误信息序列与余数信息
表1校验块、分隔块与余数块检验对应的错误类型
校验块校验 | 分隔块校验 | 余数块校验 | 错误类型 |
y<sub>k+1</sub>≠Ck(y<sub>1</sub>,y<sub>2</sub>,...,y<sub>k</sub>) | y<sub>k+2</sub>=y<sub>k+3</sub>=y<sub>k+4</sub> | (y<sub>k+5</sub>,…,y<sub>k+s+4</sub>)≠IBSYN(y<sub>1</sub>,…,y<sub>k</sub>) | 替换 |
/ | y<sub>k+1</sub>=y<sub>k+2</sub>=y<sub>k+3</sub> | (y<sub>k+4</sub>,...,y<sub>k+s+3</sub>)≠IBSYN(y<sub>1</sub>,...,y<sub>k</sub>) | 删除 |
/ | y<sub>k+3</sub>=y<sub>k+4</sub>=y<sub>k+5</sub> | (y<sub>k+6</sub>,...,y<sub>k+s+5</sub>)≠IBSYN(y<sub>1</sub>,...,y<sub>k</sub>) | 插入 |
表2错误类型对应的错误信息序列与余数信息
错误类型 | 错误信息序列 | 余数信息 |
替换 | (y<sub>1</sub>,y<sub>2</sub>,...,y<sub>k</sub>) | a=y<sub>k+5</sub>+2y<sub>k+6</sub>+…+2<sup>t-1</sup>y<sub>k+s+4</sub> |
删除 | (y<sub>1</sub>,y<sub>2</sub>,...,y<sub>k-1</sub>) | a=y<sub>k+4</sub>+2y<sub>k+5</sub>+…+2<sup>t-1</sup>y<sub>k+s+3</sub> |
插入 | (y<sub>1</sub>,y<sub>2</sub>,...,y<sub>k+1</sub>) | a=y<sub>k+6</sub>+2y<sub>k+7</sub>+…+2<sup>t-1</sup>y<sub>k+s+5</sub> |
将错误信息序列和余数信息输入(k,a)结构型Levenshtein解码器中进行解码,得到该2型Levenshtein块的解码信息;若不属于表1所列情形,则信息块正确,将信息块(y1,y2,...,yk)记为该2型Levenshtein块的解码信息;
(2).将步骤B2(1)中已解码的2型Levenshtein块从待解码四进制序列中移除;
(3).判断剩余待解码序列中前两个符号是否相同,若相同,将剩余序列自第三个符号记为新的待解码四进制序列,若不相同,则扫描第(k+3)-(k+7)个符号,找到连续的三个相同符号,从第一个相同符号之前的第(k+1)个符号开始,记为新的待解码四进制序列,若找不到连续三个相同符号即解码失败,则将该信息块全部符号标记为“e”,从第(k+s+6)个符号记为新的待解码四进制序列;
(4).对待解码四进制序列重复具体解码步骤B2(1)-B2(3),依次得到t个信息块,并将所得信息块按顺序拼接获得解码后的四进制序列信息;
B3外码解码
(1).将步骤B2所得所有四进制信息序列按照步骤A2(5)中的“四进制-二进制”对应关系即00-0、01-1、10-2、11-3转换为二进制序列,若四进制序列中包含元素“e”,则转换为“ee”记录在二进制序列中;
(2).将步骤B3(1)所得所有二进制序列按索引信息进行排序,并根据步骤A2(1)-A2(4)中的外码解码方法解码恢复出一系列短信息序列;
B4恢复原始数据
将步骤B3所得一系列短信息序列按索引序列给出的前后顺序拼接,恢复出原始数据。
本发明1型分段纠错内码的DNA存储级联编码与解码方法中1型分段纠错内码是指结构型分段纠错内码;本发明2型分段纠错内码的DNA存储级联编码与解码方法中2型分段纠错内码是指串联型分段纠错内码。
本发明1型分段纠错内码的DNA存储级联编码与解码方法与2型分段纠错内码的DNA存储级联编码与解码方法中原始数据的大小L根据所存储文件大小得到;序列长度q的选择依赖于具体的DNA合成和测序方法的技术要求,不同DNA合成和测序方法存在不同的技术问题,对合成的DNA序列的长度有不同的限制,本发明所述DNA存储级联编码与解码方法在数学理论层面对序列长度没有要求;短信息序列条数m根据外码编码与解码方法具体选择,可选取的外码编码与解码方法有(以下为不完全列举):(255,223)RS码,m=223;(10240,8961)LDPC码,m=8961;LT码,h=1,m=L/q;内码编码步骤中所述分段长度k依据DNA合成及测序方法产生的碱基错误率p选择,取符合的整数,碱基错误率p与存储所使用的合成及测序的方法有关,不同的技术会引入不同的碱基错误率,根据统计数据,利用第二代合成技术和第二代测序技术实现的DNA存储的碱基错误率均低于1.2%,本发明1型分段纠错内码的DNA存储级联编码与解码方法适用于碱基错误率不超过1%的技术,本发明2型分段纠错内码的DNA存储级联编码与解码方法适用于碱基错误率不超过1.5%的技术。
本发明1型分段纠错内码的DNA存储级联编码与解码方法与2型分段纠错内码的DNA存储级联编码与解码方法均可用于第二代DNA合成技术及第二代DNA测序技术。第二代DNA合成技术和第二代测序技术包含多种技术,不同技术引入的DNA碱基错误率存在差异,可根据具体技术的错误率调整方法中各项参数数值。可应用的第二代DNA合成方法(以下不完全列举):基于芯片的喷墨法、光化学法及电化学法等。第二代DNA测序方法(以下不完全列举):循环微阵列法,主要技术平台:Roche/454GS FLX、Illumina/Sol-exaGenomeAnalyzer、Applied Biosystems/SOLiD system等。
本发明1型2型分段纠错内码的DNA存储级联编码与解码方法均适用于任意不大于1G的磁盘可存储类型的数据。1型、2型分段纠错内码均能纠正多个分段碱基的删除、插入、替换错误,相较于目前在DNA数据存储系统里得到应用的内码方法,均可达到更高的解码成功率。且编解码的时间、空间复杂度均为线性,远低于现有方法的多项式或指数形式复杂度。从而有效提高了存储效率,降低了存储成本,实现了DNA链的快速写入。外码的编码与解码方法可有效恢复丢失DNA链中的信息,并进行信息重排序,从而恢复出原始数据。
本发明1型分段纠错内码的DNA存储级联编码与解码方法具有编码方法可实现数据快速写入DNA序列且达到较高的存储效率,解码方法可实现当存储系统的碱基错误率不超过1%时数据可无损解读的特点;本发明2型分段纠错内码的DNA存储级联编码与解码方法具有编码方法可实现数据的快速写入且达到较高的但略低于1型的存储效率,解码方法可实现当存储系统的碱基错误率较高但不超过1.5%时数据可无损解读的特点。
附图说明
下面结合附图和实施例对本发明做进一步的说明。
图1是本发明1型分段纠错内码的DNA存储级联编码与解码方法与2型分段纠错内码的DNA存储级联编码与解码方法的步骤框图;
图2是本发明1型分段纠错内码的DNA存储级联编码与解码方法实施例1外码的结构示意图;
图3是本发明2型分段纠错内码的DNA存储级联编码与解码方法实施例2外码的结构示意图;
图4是本发明1型分段纠错内码的DNA存储级联编码与解码方法1型分段纠错内码的码字结构示意图;
图5是本发明2型分段纠错内码的DNA存储级联编码与解码方法2型分段纠错内码的码字结构示意图。
具体实施方式
在以下的实施方式中,很多细节描述是为了使得本发明能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征在不同情况下是可以修改或省略的。说明书中所描述的操作或者方法可以以任意适当的方式结合形成各种实施方式。其中外码编码与解码方法、“碱基-比特”对应规则可以按照本领域技术人员所能显而易见的方式进行修改或调整,内码编码与解码方法需要通过说明书中提供的步骤进行实现。
在实施例1、2中,选取外码编码与解码方法(223,255)RS码,单次编码输入为223字节,输出为255字节;根据进制转换规则,任意序列中每8个横向排列的二进制单位符号可和1个字节单位符号可相互转换。在具体实现时,实施例外码编码与解码方法步骤中符号以字节为基本单位。步骤中“字节短信息序列”和说明书中“短信息序列”物理含义相同,只是符号单位为字节而非二进制,其它发生改变的名称类似。名称的改变只是为了配合实施例所采用外码编码与解码方法,须知并不会影响对本发明的理解与实现。
实施例1
如图1所示,本发明1型分段纠错内码的DNA存储级联编码与解码方法,依次包括如下步骤:
A.编码步骤
A1.读取原始数据
将大小为1.1MB的原始数据读取到计算机中,得到原始数据的二进制表示,称其为二进制数据序列,长度L=6439632;
A2.外码编码
(1).将步骤A1所得二进制数据序列不重叠地划分为一系列长度为q=432的短信息序列,最后一条短信息序列长度为240,不足q=432,用192个“0”补足q=432长度;基于所选取外码编码与解码方法(223,255)RS码的字节编码特性,得到所有短信息序列的字节表示,称为字节短信息序列,长度为q'=54;依次取出上述字节短信息序列中的m=223条,并将各条字节短信息序列横向放置后纵向依次排列,形成一个列数为q'=54、行数为m=223的字节矩阵,称此矩阵为一个字节短信息序列组;二进制数据序列分组后得到h=67个字节短信息序列组;
(2).在每个字节短信息序列组中,依次按列提取长度为m=223的字节序列通过外码编码方法进行编码得到长度记为M=255的外码编码后序列,将q'=54条外码编码后序列依次纵向放置后横向依次排列,按位横向将每个字节符号转换得到二进制形式,形成一个行数为M=255、列数为q=432的初始外码码字矩阵;h=67个短信息序列组得到h=67个初始外码码字矩阵;
(3).如图2所示,将步骤A2(2)所得h=67个初始外码码字矩阵的每一行的行号即此行位于所在矩阵中的第几行及其对应的矩阵序号即此行位于第几个矩阵的十进制数值称为索引信息,分别转换为长度为8和8的二进制序列拼接在该行信息序列的前端,使每个初始外码码字矩阵均形成一个行数为M=255列数为Q=448的完整外码码字矩阵;注:在本实施例中,由于字节编码特性,实际操作中矩阵序号存储为2字节即8位二进制符号;
(4).除第h=67个完整外码码字矩阵中用于补足的全0序列对应的行即第190至223行外,提取步骤A2(3)所得h=67个完整外码码字矩阵的其余各行,对应形成待内码编码的二进制序列,得到M'=17052条待内码编码二进制序列;
(5).将步骤A2(4)所得M'=17052条待内码编码二进制序列均按照“二进制-四进制”对应关系即00-0、01-1、10-2、11-3顺序转换为待内码编码四进制序列,每条待内码编码四进制序列长度为Q’=224;
A3.内码编码
(1).在模拟存储实验中模拟采用Twist公司的技术(现阶段较为常用的DNA合成方法),碱基错误率p=0.6%,将步骤A2(5)所述每条待内码编码四进制序列不重叠地按长度k=32分段,依次得到t-1=6个长度为k=32的四进制符号单位的信息块,第t=7个信息块即信息块末块为t-1=6次分段后剩余的四进制序列信息,其长度为k'=32个四进制符号单位,最终每条待内码编码四进制序列被分为t=7个信息块;
(2).如图4所示,将步骤A3(1)所得每条待内码编码四进制序列分段后得到的t=7个信息块依次进行编码,步骤如下:初始化建立一条空四进制码字序列,通过迭代以下步骤得到相应四进制码字序列:依次对前t-1=6个信息块编码,每次进行下列步骤1)至6);完成前t-1=6个信息块编码后,将参数k=32变为k'=32,对第t=7个信息块编码,进行下列步骤1)至4):
2).分别将步骤A3(2)1)所得两个二进制序列用(k,a)结构型Levenshtein编码器编码为符合Levenshtein代数结构的二进制序列,其中a为固定参数,通常选择a=0,设待编码二进制序列为(x1,x2,...,xk),编码后二进制序列为(y1,y2,...,yn),参数n和v通过以下两个方程计算得到:i).n是使得等式成立的最小整数,ii).v=n-k;设计(k,a)结构型Levenshtein编码器的具体操作步骤为:
①.在二元位置I={2i:0≤i≤v-2}∪{n}插入“校验”位,即在0≤i≤v-2和yn插入校验位,并将这些位置即校验位取值初始化为0,并将待编码二进制序列(x1,x2,...,xk)顺序补入编码后码字的其它位置,即
3).将步骤A3(2)2)所得两个编码后的二进制序列进行交织,得到1型Levenshtein块;
4).更新四进制码字序列:将步骤A3(2)3)所得1型Levenshtein块拼接在当前四进制码字序列末端;
5).1型标记块为固定符号“001”;
6).更新四进制码字序列:将步骤A3(2)5)所得1型标记块拼接在当前四进制码字序列末端;
A4.将编码后信息转换为DNA序列
通过“碱基-符号”对应关系即0-A、1-T、2-G、3-C将步骤A3(2)所得M’=17052条四进制码字序列全部转换为DNA序列,记DNA序列长度为T=291;
B.解码步骤
B1筛选DNA测序文件中的DNA序列,并转换为待解码四进制序列
首先根据DNA序列长度进行筛选,剔除其中长度大于T+t=291+7=298或长度小于T-t=291-7=284的无效序列,再筛选出上述剔除后剩余DNA序列中重复出现次数最多的M’=17052条序列,并按步骤A4中的“碱基-符号”对应关系将上述M’=17052条DNA序列还原为一系列待解码四进制序列;
B2内码解码
将步骤B1得到的所有待解码四进制序列以步骤A3(1)-A3(2)的反向步骤解码恢复信息块,1型内码的解码需要在一个接收序列上顺序进行,以下解码步骤中使用的符号k、n、t、a、I的具体含义及取值与1型内码编码方法即步骤A3相同,完成对前t-1=6个信息块的解码后,将参数k=32变为k’=32,对第t=7个信息块解码:
(1).对每条包含t=7个1型Levenshtein块和t-1=6个1型标记块的待解码四进制序列顺序检索1型标记块出现的位置,每两个1型标记块之间的序列为1个1型Levenshtein块,每条待解码四进制序列得到顺序排列的t=7个待解码的1型Levenshtein块;
(2).按顺序每次将1个待解码的1型Levenshtein块序列解交织为两个二进制序列后输入设计如下的(k,a)结构型Levenshtein解码器:
4).当u不等于n-1,n,n+1时,可知序列发生超过一个错误,无法成功解码,标记整个块为“e”,即该块解码失败;
解码器输出两条解码后的二进制序列,删除其中二元位置I上的符号,将删减后的两条二进制序列交织,得到该1型Levenshtein块解码出的信息块;
(3).依次按顺序将步骤B2(2)所得信息块拼接为一条四进制信息序列;
B3外码解码
(1).将步骤B2(3)所得所有四进制信息序列按照步骤A2(5)中的“四进制-二进制”对应关系即00-0、01-1、10-2、11-3转换为二进制序列,若四进制序列中包含元素“e”,则转换为“ee”记录在二进制序列中;
(2).将步骤B3(1)所得所有二进制序列按索引信息进行排序,并根据(223,255)RS码解码方法,解码出一系列短信息序列;
B4恢复原始数据
将步骤B3所得一系列短信息序列按索引序列给出的前后顺序拼接,恢复出原始数据。
本发明实施例1将大小为1.1M的图片存储在17052条长为291的DNA序列中,每个碱基可存储约1.30个比特。为测试本发明1型分段纠错内码的DNA存储级联编码与解码方法的可靠性,通过计算机进行模拟存储实验,实验中每条编码后的DNA序列平均读取次数约为10次(即测序深度约为10次/条DNA序列),每次读取失败的概率为0.5%,每条DNA序列中单个碱基出现插入、删除、替换错误的总概率为0.6%,平均每进行一次模拟存储实验可获得169700条待解码DNA序列。共进行10000次模拟存储实验,均100%还原出原始图片。实施例1中采用的结构型分段纠错内码可有效纠正碱基的删除、插入和替换错误,相较于现有无法纠正删除及插入的编码方案,提高了解码成功的概率,可以实现DNA序列的无损解读;且编码与解码的时间、空间复杂度均为线性,远低于现有内码编码方案的多项式或指数形式复杂度,提高了存储效率,降低了存储成本,实现了DNA序列的快速写入。同时,外码的编码方案可以有效纠正DNA序列的丢失错误,保证解码出原始文件。总之,实施例1实现了数据到DNA序列的优化转换,与DNA序列到数据的无损解读。
实施例2
如图1所示,本发明2型分段纠错内码的DNA存储级联编码与解码方法,依次包括如下步骤:
A1.读取原始数据
将大小为3KB的原始数据读取到计算机中,得到原始数据的二进制表示,称其为二进制数据序列,长度L=21536;
A2.外码编码
(1).将步骤A1所得二进制数据序列不重叠地划分为一系列长度为q=120的短信息序列,最后一条短信息序列长度为56,不足q=120,用64个“0”补足q=120长度;基于所选取外码编码与解码方法(223,255)RS码的字节编码特性,得到所有短信息序列的字节表示,称为字节短信息序列,长度为q'=15;上述字节短信息序列为212条,不足m=223,则用11条长度为q'=15的全0序列补足m=223条;依次将各条字节短信息序列横向放置后纵向依次排列,形成一个列数为q'=15、行数为m=223的字节矩阵,称此矩阵为一个字节短信息序列组;二进制数据序列分组后得到h=1个字节短信息序列组;
(2).在每个字节短信息序列组中,依次按列提取长度为m=223的字节序列通过外码编码方法进行编码得到长度记为M=255的外码编码后序列,将q'=15条外码编码后序列依次纵向放置后横向依次排列,按位横向将每个字节符号转换得到二进制形式,形成一个行数为M=255、列数为q=120的初始外码码字矩阵;h=1个短信息序列组得到h=1个初始外码码字矩阵;
(3).如图3所示,将步骤A2(2)所得h=1个初始外码码字矩阵的每一行的行号即此行位于所在矩阵中的第几行转换为长度为8的二进制序列拼接在该行信息序列的前端,每个初始外码码字矩阵均形成一个行数为M=255、列数为Q=128的完整外码码字矩阵;注:本实施例中h=1,不存储矩阵序号不会引起索引信息混乱,因此省略矩阵序号的存储;
(4).除去完整外码码字矩阵中用于补足的全0序列对应的行即第213至223行外,提取步骤A2(3)所得h=1个完整外码码字矩阵的其余各行,对应形成待内码编码的二进制序列,得到M'=244条待内码编码二进制序列;
(5).将步骤A2(4)所得M'=244条待内码编码二进制序列均按照“二进制-四进制”对应关系即00-0、01-1、10-2、11-3顺序转换为待内码编码四进制序列,每条待内码编码四进制序列长度为Q’=64;
A3.内码编码
(1).在模拟存储实验中模拟第二代合成和测序技术最高碱基错误率,碱基错误率p=1.2%,将步骤A2(5)所述每条待内码编码四进制序列不重叠地按长度k=8分段,依次得到t-1=7个长度为k=8的四进制符号单位的信息块,第t=8个信息块即信息块末块为步骤A2(5)所得每条待内码编码四进制序列t-1=7次分段后剩余的四进制序列信息,长度为k'=8个四进制符号单位,最终每条待内码编码四进制序列被分为t=8个信息块;
(2).如图5所示,将步骤A3(1)所得每条待编码四进制序列分段得到的t=8个信息块依次进行编码,得到M'=244条包含Q'=64个四进制符号单位的四进制码字序列;上述t=8个信息块的编码步骤如下:初始化建立一条空四进制码字序列,通过迭代以下步骤得到相应四进制码字序列:依次对前t-1=7个信息块编码,每次进行下列步骤1)至4);完成前t-1=7个信息块编码后,将参数k=8变为k'=8,对第t=8个信息块编码,进行下列步骤1)至2):
1).编码2型Levenshtein块,其中令四进制信息块表示为
④.计算分隔块:分隔位为分隔块由连续三个分隔位符号构成,分隔位满足Sp:∑3→∑,若a+2≠b,c,Sp(a,b,c)=a+2,若a+3≠b,c,Sp(a,b,c)=a+3,否则Sp(a,b,c)=a+1,分隔块为3个四进制符号单位;
⑤.将原始信息块,以及步骤A3(2)1)②-A3(2)1)④的编码结果按校验块、分隔块与余数块的顺序拼接形成2型Levenshtein块;
2).更新四进制码字序列:将步骤A3(2)1)中2型Levenshtein块拼接在当前四进制码字序列末端;
3).计算2型标记块:标记位为Mk(as,x1,x2),和分隔位计算规则相同,其中as为步骤A3(2)1)得到的2型Levenshtein块的最后一个符号,x1,x2为下一个待编码的信息块的前两个符号,两个重复的标记位符号形成标记块,标记块为2个四进制符号单位;
4).更新四进制码字序列:将步骤A3(2)3)所得2型标记块拼接在当前四进制码字序列末端;
A4.将编码后信息转换为DNA序列
通过“碱基-符号”对应关系即0-A、1-T、2-G、3-C将步骤A3(2)所得共计M’=244条四进制码字序列全部转换为DNA序列,记DNA序列长度为T=142;
B.解码步骤
B1筛选DNA测序文件中的DNA序列,并转换为待解码四进制序列
首先根据DNA序列长度进行筛选,剔除其中长度大于T+t=142-8=134或长度小于T-t=142+8=150的无效序列,再筛选出上述剔除后剩余DNA序列中重复出现次数最多的M'=244条序列,并按步骤A4中的“碱基-符号”对应关系将上述M'=244条DNA序列还原为一系列待解码四进制序列;
B2内码解码
将步骤B1得到的所有待解码四进制序列以步骤A3(1)-A3(2)的反向步骤,解码恢复信息块,具体解码步骤如下:其中使用的符号k、s的具体含义及取值与2型内码编码方案即步骤A2中相同,完成对前t-1=7个信息块的解码后,将参数k=8变为k'=8,再对第t=8个信息块解码:
(1).自序列首端开始顺序扫描待解码四进制序列,对第一个2型Levenshtein块和2型标记块进行解码,记整条待解码四进制序列为(y1,y2,...,yT),检查序列是否属于表1所列的错误类型之一,若属于表1所列的错误类型之一,则找到如表2所列的错误类型对应的错误信息序列以及余数信息,其中k为步骤A3(2)中信息块长度,为余数块长度,表1为检验块、分隔块与余数块检验对应的错误类型;表2为错误类型对应的错误信息序列与余数信息
表1校验块、分隔块与余数块检验对应的错误类型
校验块校验 | 分隔块校验 | 余数块校验 | 错误类型 |
y<sub>k+1</sub>≠Ck(y<sub>1</sub>,y<sub>2</sub>,...,y<sub>k</sub>) | y<sub>k+2</sub>=y<sub>k+3</sub>=y<sub>k+4</sub> | (y<sub>k+5</sub>,...,y<sub>k+s+4</sub>)≠IBSYN(y<sub>1</sub>,...,y<sub>k</sub>) | 替换 |
/ | y<sub>k+1</sub>=y<sub>k+2</sub>=y<sub>k+3</sub> | (y<sub>k+4</sub>,...,y<sub>k+s+3</sub>)≠IBSYN(y<sub>1</sub>,...,y<sub>k</sub>) | 删除 |
/ | y<sub>k+3</sub>=y<sub>k+4</sub>=y<sub>k+5</sub> | (y<sub>k+6</sub>,...,y<sub>k+s+5</sub>)≠IBSYN(y<sub>1</sub>,...,y<sub>k</sub>) | 插入 |
表2错误类型对应的错误信息序列与余数信息
错误类型 | 错误信息序列 | 余数信息 |
替换 | (y<sub>1</sub>,y<sub>2</sub>,...,y<sub>k</sub>) | a=y<sub>k+5</sub>+2y<sub>k+6</sub>+…2<sup>t-1</sup>y<sub>k+s+4</sub> |
删除 | (y<sub>1</sub>,y<sub>2</sub>,...,y<sub>k-1</sub>) | a=y<sub>k+4</sub>+2y<sub>k+5</sub>+…+2<sup>t-1</sup>y<sub>k+s+3</sub> |
插入 | (y<sub>1</sub>,y<sub>2</sub>,…,y<sub>k+1</sub>) | a=y<sub>k+6</sub>+2y<sub>k+7</sub>+…+2<sup>t-1</sup>y<sub>k+s+5</sub> |
将错误信息序列和余数信息输入(k,a)结构型Levenshtein解码器中进行解码,得到该2型Levenshtein块的解码信息;若不属于表1所列情形,则信息块正确,将信息块(y1,y2,…,yk)记为该2型Levenshtein块的解码信息;
(2).将步骤B2(1)中已解码的2型Levenshtein块从待解码四进制序列中移除;
(3).判断剩余待解码序列中前两个符号是否相同,若相同,将剩余序列自第三个符号记为新的待解码四进制序列,若不相同,则扫描第(k+3)-(k+7)个符号,找到连续的三个相同符号,从第一个相同符号之前的第(k+1)个符号开始,记为新的待解码四进制序列,若找不到连续三个相同符号即解码失败,则将该信息块全部符号标记为“e”,从第(k+s+6)个符号记为新的待解码四进制序列;
(4).对待解码四进制序列重复具体解码步骤B2(1)-B2(3),依次得到t个信息块,并将所得信息块按顺序拼接获得解码后的四进制序列信息;
B3外码解码
(1).将步骤B2所得所有四进制信息序列按照步骤A2(5)中的“四进制-二进制”对应关系即00-0、01-1、10-2、11-3转换为二进制序列,若四进制序列中包含元素“e”,则转换为“ee”记录在二进制序列中;
(2).将步骤B3(1)所得所有二进制序列按索引信息进行排序,并根据(223,255)RS码解码方法,解码出一系列短信息序列;
B4恢复原始数据
将步骤B3所得一系列短信息序列按索引序列给出的前后顺序拼接,恢复出原始数据。
本发明实施例2将大小为3KB的文本文件存储在244条长为142的DNA序列中,每个碱基可存储约0.62个比特。为测试本发明2型分段纠错内码的DNA存储级联编码与解码方法的可靠性,通过计算机进行模拟存储实验,实验中每条编码后的DNA序列平均读取次数约为10次(即测序深度为10次/条DNA序列),每次读取失败的概率为0.5%,每条DNA序列中单个碱基出现插入、删除、替换错误的总概率为1.2%,平均每进行一次模拟存储实验可获得2430条待解码DNA序列。共进行10000次模拟存储实验,均可100%还原出原始文本信息。实施例2中串联型分段纠错内码可有效纠正碱基的删除、插入和替换错误,相较于现有无法纠正删除及插入的编码方案,提高了解码成功的概率,可以实现DNA序列的无损解读;且编码与解码的时间、空间复杂度均为线性,远低于现有内码编码方案的多项式或指数形式复杂度,提高了存储效率,降低了存储成本,实现了DNA序列的快速写入。同时,外码的编码方案可以有效纠正DNA序列的丢失错误,保证解码出原始文件。总之,实施例2实现了数据到DNA序列的优化转换,与DNA序列到数据的无损解读。
实施例说明,实施例1与实施例2的编码方法可有效纠正DNA序列中碱基的删除、插入与替换错误。实施例1每个DNA碱基存储约1.30个比特、实施例2每个DNA碱基存储约0.62个比特。通过计算机进行模拟存储实验,实验中每条编码后的DNA序列平均读取次数约为10次(即测序深度为10次/条DNA序列),每次读取失败的概率为0.5%,实施例1中模拟每条DNA序列中单个碱基出现插入、删除、替换错误的总概率为0.6%,平均每进行一次模拟存储实验可获得169700条待解码DNA序列;实施例2中模拟每条DNA序列中单个碱基出现插入、删除、替换错误的总概率为1.2%,平均每进行一次模拟存储实验可获得2430条待解码DNA序列。实施例1和实施例2分别进行了10000次模拟存储实验,均可100%还原出图片和文本信息。模拟存储实验结果表明:两种不同的内码编码方法,均可实现对文件的存储及零错误率恢复。实施例1和实施2的不同点在于内码编码方法导致的码字结构的不同。实施例1的码字结构相比于实施例2冗余度低,因此具有较高的存储效率。但实施例1的码字结构缺乏对标记块的检错和纠错能力,实施例2的码字结构则可以有效检错并定位出错标记块的位置,从而避免由标记块定位失败导致的解码失败,因此比实施例1更具鲁棒性。模拟存储实验中观察到,当模拟错误率高于1.0%时,实施例1将出现无法100%还原图片的情况;模拟错误率高于1.5%时,实施例2将出现无法100%还原文本信息的情况。通过实验结果和理论分析可知,实施例1的码字结构更适用于碱基错误率低于1.0%的存储系统;实施例2的码字结构更适用于碱基错误率相对较高的存储系统。同时,内码编码时的分段长度对码的纠错能力也有影响,当错误率p低于0.6%时,可选择较长的分段长度,如k≈1/5p;当p高于0.6%时,需选择较短的分段长度,如k≈1/10p。总之,本发明1型2型分段纠错内码的DNA存储级联编码与解码方法均适用于任意不大于1G的磁盘可存储类型的数据。1型2型分段纠错内码均能纠正多个分段碱基的删除、插入、替换错误,相较于现有方法,具有更高的解码成功率。且编码与解码的时间、空间复杂度均为线性,远低于现有方法的多项式或指数形式复杂度。从而有效提高了存储效率,降低了存储成本,实现了DNA链的快速写入。外码的编码与解码方法可有效恢复丢失DNA链中的信息,并进行信息重排序,从而恢复出原始数据。本发明1型分段纠错内码的DNA存储级联编码与解码方法与2型分段纠错内码的DNA存储级联编码与解码方法具有编码方法可实现数据到DNA链的优化转换、解码方法可实现DNA链到数据的无损解读的特点。
Claims (2)
1.一种1型分段纠错内码的DNA存储级联编码与解码方法,依次包括如下步骤:
A.编码步骤
A1.读取原始数据
将获取的不大于1G的任意磁盘可存储类型的原始数据读取到计算机中,得到原始数据的二进制表示,称其为二进制数据序列,记长度为L;
A2.外码编码
(1).将步骤A1所得二进制数据序列不重叠地划分为一系列长度为q的短信息序列,若最后一条短信息序列长度不足q,则用“0”补足q长度;依次取出上述短信息序列中的m条,并将各条短信息序列横向放置后纵向依次排列,形成一个列数为q、行数为m的0-1矩阵,称此矩阵为一个短信息序列组,若最后一次分组时剩余短信息序列的数量不足m条,则用长度为q的全0序列补足m条;二进制数据序列分组后得到h个短信息序列组;
(2).在每个短信息序列组中,依次按列提取长度为m的二进制序列通过外码编码方法进行编码得到长度记为M的外码编码后序列,将q条外码编码后序列纵向放置后横向依次排列,形成一个行数为M、列数为q的初始外码码字矩阵;h个短信息序列组得到h个初始外码码字矩阵;
(3).将步骤A2(2)所得h个初始外码码字矩阵的每一行的行号即此行位于所在矩阵中的第几行及其对应的矩阵序号即此行位于第几个矩阵的十进制数值称为索引信息,并分别转换为二进制序列拼接在该行信息序列的前端,使每个初始外码码字矩阵均形成一个行数为M、列数为的完整外码码字矩阵;
(4).除第h个完整外码码字矩阵中用于补足的全0序列对应的行外,提取步骤A2(3)所得h个完整外码码字矩阵的其余各行,对应形成待内码编码的二进制序列,得到M'条待内码编码二进制序列;
A3.内码编码
(1).将步骤A2(5)所述每条待内码编码四进制序列不重叠地按长度k分段,依次得到t-1个长度为k的四进制符号单位的信息块,第t个信息块即信息块末块为t-1次分段后剩余的四进制序列信息,其长度为个四进制符号单位,最终每条待内码编码四进制序列被分为t个信息块;
(2).将步骤A3(1)所得每条待内码编码四进制序列分段后得到的t个信息块依次进行编码,步骤如下:初始化建立一条空四进制码字序列,通过迭代以下步骤得到相应四进制码字序列:依次对前t-1个信息块编码,每次进行下列步骤1)至6);完成前t-1个信息块编码后,将参数k变为k',对第t个信息块编码,进行下列步骤1)至4):
2).分别将步骤A3(2)1)所得两个二进制序列用(k,a)结构型Levenshtein编码器编码为符合Levenshtein代数结构的二进制序列,其中a为固定参数,通常选择a=0,设待编码二进制序列为(x1,x2,...,xk),编码后二进制序列为(y1,y2,...,yn),参数n和v通过以下两个方程计算得到:ⅰ).n是使得等式成立的最小整数,ⅱ).v=n-k;设计(k,a)结构型Levenshtein编码器的具体操作步骤为:
①.在二元位置I={2i:0≤i≤v-2}∪{n}插入“校验”位,即在y2i,0≤i≤v-2和yn插入校验位,并将这些位置即校验位取值初始化为0,并将待编码二进制序列(x1,x2,...,xk)顺序补入编码后码字的其它位置,即
3).将步骤A3(2)2)所得两个编码后的二进制序列进行交织,得到1型Levenshtein块;
4).更新四进制码字序列:将步骤A3(2)3)所得1型Levenshtein块拼接在当前四进制码字序列末端;
5).1型标记块为固定符号“001”;
6).更新四进制码字序列:将步骤A3(2)5)所得1型标记块拼接在当前四进制码字序列末端;
A4.将编码后信息转换为DNA序列
通过“碱基-符号”对应关系即0-A、1-T、2-G、3-C将步骤A3(2)所得M'条四进制码字序列全部转换为DNA序列,记DNA序列长度为T;
B.解码步骤
B1筛选DNA测序文件中的DNA序列,并转换为待解码四进制序列
首先根据DNA序列长度进行筛选,剔除其中长度大于T+t或长度小于T-t的无效序列,再筛选出上述剔除后剩余DNA序列中重复出现次数最多的M'条序列,并按步骤A4中的“碱基-符号”对应关系将上述M'条DNA序列还原为一系列待解码四进制序列;
B2内码解码
将步骤B1得到的所有待解码四进制序列以步骤A3(1)-A3(2)的反向步骤解码恢复信息块,1型内码的解码需要在一个接收序列上顺序进行,以下解码步骤中使用的符号k、n、t、a、I的具体含义及取值与1型内码编码方法即步骤A3相同,完成对前t-1个信息块的解码后,将参数k变为k',对第t个信息块解码:
(1).对每条包含t个1型Levenshtein块和t-1个1型标记块的待解码四进制序列顺序检索1型标记块出现的位置,每两个1型标记块之间的序列为1个1型Levenshtein块,每条待解码四进制序列得到顺序排列的t个待解码的1型Levenshtein块;
(2).按顺序每次将1个待解码的1型Levenshtein块序列解交织为两个二进制序列后输入设计如下的(k,a)结构型Levenshtein解码器:
4).当u不等于n-1,n,n+1时,可知序列发生超过一个错误,无法成功解码,标记整个块为“e”,即该块解码失败;
解码器输出两条解码后的二进制序列,删除其中二元位置I上的符号,将删减后的两条二进制序列交织,得到该1型Levenshtein块解码出的信息块;
(3).依次按顺序将步骤B2(2)所得信息块拼接为一条四进制信息序列;
B3外码解码
(1).将步骤B2(3)所得所有四进制信息序列按照步骤A2(5)中的“四进制-二进制”对应关系即00-0、01-1、10-2、11-3转换为二进制序列,若四进制序列中包含元素“e”,则转换为“ee”记录在二进制序列中;
(2).将步骤B3(1)所得所有二进制序列按索引信息进行排序,并根据步骤A2(1)-A2(4)中的外码解码方法解码恢复出一系列短信息序列;
B4恢复原始数据
将步骤B3所得一系列短信息序列按索引序列给出的前后顺序拼接,恢复出原始数据。
2.一种2型分段纠错内码的DNA存储级联编码与解码方法,依次包括如下步骤:
A.编码步骤
A1.读取原始数据
将获取的不大于1G的任意磁盘可存储类型的原始数据读取到计算机中,得到原始数据的二进制表示,称其为二进制数据序列,记长度为L;
A2.外码编码
(1).将步骤A1所得二进制数据序列不重叠地划分为一系列长度为q的短信息序列,若最后一条短信息序列长度不足q,则用“0”补足q长度;依次取出上述短信息序列中的m条,并将各条序列横向放置后纵向依次排列,形成一个列数为q、行数为m的0-1矩阵,称此矩阵为一个短信息序列组,若最后一次分组时剩余短信息序列的数量不足m条,则用长度为q的全0序列补足m条;二进制数据序列分组后得到h个短信息序列组;
(2).在每个短信息序列组中,依次按列提取长度为m的二进制序列通过外码编码方法进行编码得到长度记为M的外码编码后序列,将q条外码编码后序列纵向放置后横向依次排列,形成一个行数为M、列数为q的初始外码码字矩阵;h个短信息序列组得到h个初始外码码字矩阵;
(3).将步骤A2(2)所得h个初始外码码字矩阵的每一行的行号即此行位于所在矩阵中的第几行及其对应的矩阵序号即此行位于第几个矩阵的十进制数值称为索引信息,并分别转换为二进制序列拼接在该行信息序列的前端,使每个初始外码码字矩阵均形成一个行数为M、列数为的完整外码码字矩阵;
(4).除第h个完整外码码字矩阵中用于补足的全0序列对应的行外,提取步骤A2(3)所得h个完整外码码字矩阵的其余各行,对应形成待内码编码的二进制序列,得到M'条待内码编码二进制序列;
A3.内码编码
(1).将步骤A2(5)所述每条待内码编码四进制序列不重叠地按长度k分段,依次得到t-1个长度为k的四进制符号单位的信息块,第t个信息块即信息块末块为步骤A2(5)所得每条待内码编码四进制序列t-1次分段后剩余的四进制序列信息,长度为个四进制符号单位,最终每条待内码编码四进制序列被分为t个信息块;
(2).将步骤A3(1)所得每条待编码四进制序列分段得到的t个信息块依次进行编码,得到M'条包含Q'个四进制符号单位的四进制码字序列;上述t个信息块的编码步骤如下:初始化建立一条空四进制码字序列,通过迭代以下步骤得到相应四进制码字序列:依次对前t-1个信息块编码,每次进行下列步骤1)至4);完成前t-1个信息块编码后,将参数k变为k',对第t个信息块编码,进行下列步骤1)至2):
④.计算分隔块:分隔位为分隔块由连续三个分隔位符号构成,分隔位满足Sp:∑3→∑,若a+2≠b,c,Sp(a,b,c)=a+2,若a+3≠b,c,Sp(a,b,c)=a+3,否则Sp(a,b,c)=a+1,分隔块为3个四进制符号单位;
⑤.将原始信息块,以及步骤A3(2)1)②-A3(2)1)④的编码结果按校验块、分隔块与余数块的顺序拼接形成2型Levenshtein块;
2).更新四进制码字序列:将步骤A3(2)1)中2型Levenshtein块拼接在当前四进制码字序列末端;
3).计算2型标记块:标记位为Mk(as,x1,x2),和分隔位计算规则相同,其中as为步骤A3(2)1)得到的2型Levenshtein块的最后一个符号,x1,x2为下一个待编码的信息块的前两个符号,两个重复的标记位符号形成标记块,标记块为2个四进制符号单位;
4).更新四进制码字序列:将步骤A3(2)3)所得2型标记块拼接在当前四进制码字序列末端;
A4.将编码后信息转换为DNA序列
通过“碱基-符号”对应关系即0-A、1-T、2-G、3-C将步骤A3(2)所得共计M'条四进制码字序列全部转换为DNA序列,记DNA序列长度为T;
B.解码步骤
B1筛选DNA测序文件中的DNA序列,并转换为待解码四进制序列
首先根据DNA序列长度进行筛选,剔除其中长度大于T+t或长度小于T-t的无效序列,再筛选出上述剔除后剩余DNA序列中重复出现次数最多的M'条序列,并按步骤A4中的“碱基-符号”对应关系将上述M'条DNA序列还原为一系列待解码四进制序列;
B2内码解码
将步骤B1得到的所有待解码四进制序列以步骤A3(1)-A3(2)的反向步骤,解码恢复信息块,具体解码步骤如下:其中使用的符号k、s的具体含义及取值与2型内码编码方案即步骤A2中相同,完成对前t-1个信息块的解码后,将参数k变为k',再对第t个信息块解码:
(1).自序列首端开始顺序扫描待解码四进制序列,对第一个2型Levenshtein块和2型标记块进行解码,记整条待解码四进制序列为(y1,y2,...,yT),检查序列是否属于表1所列的错误类型之一,若属于表1所列的错误类型之一,则找到如表2所列的错误类型对应的错误信息序列以及余数信息,其中k为步骤A3(2)中信息块长度,为余数块长度,表1为检验块、分隔块与余数块检验对应的错误类型;表2为错误类型对应的错误信息序列与余数信息
表1 校验块、分隔块与余数块检验对应的错误类型
表2 错误类型对应的错误信息序列与余数信息
将错误信息序列和余数信息输入(k,a)结构型Levenshtein解码器中进行解码,得到该2型Levenshtein块的解码信息;若不属于表1所列情形,则信息块正确,将信息块(y1,y2,...,yk)记为该2型Levenshtein块的解码信息;
(2).将步骤B2(1)中已解码的2型Levenshtein块从待解码四进制序列中移除;
(3).判断剩余待解码序列中前两个符号是否相同,若相同,将剩余序列自第三个符号记为新的待解码四进制序列,若不相同,则扫描第(k+3)-(k+7)个符号,找到连续的三个相同符号,从第一个相同符号之前的第(k+1)个符号开始,记为新的待解码四进制序列,若找不到连续三个相同符号即解码失败,则将该信息块全部符号标记为“e”,从第(k+s+6)个符号记为新的待解码四进制序列;
(4).对待解码四进制序列重复具体解码步骤B2(1)-B2(3),依次得到t个信息块,并将所得信息块按顺序拼接获得解码后的四进制序列信息;
B3外码解码
(1).将步骤B2所得所有四进制信息序列按照步骤A2(5)中的“四进制-二进制”对应关系即00-0、01-1、10-2、11-3转换为二进制序列,若四进制序列中包含元素“e”,则转换为“ee”记录在二进制序列中;
(2).将步骤B3(1)所得所有二进制序列按索引信息进行排序,并根据步骤A2(1)-A2(4)中的外码解码方法解码恢复出一系列短信息序列;
B4恢复原始数据
将步骤B3所得一系列短信息序列按索引序列给出的前后顺序拼接,恢复出原始数据。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210019418.1A CN114328000B (zh) | 2022-01-10 | 2022-01-10 | 1型2型分段纠错内码的dna存储级联编码与解码方法 |
PCT/CN2022/099334 WO2023130676A1 (zh) | 2022-01-10 | 2022-06-17 | 1型2型分段纠错内码的dna存储级联编码与解码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210019418.1A CN114328000B (zh) | 2022-01-10 | 2022-01-10 | 1型2型分段纠错内码的dna存储级联编码与解码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114328000A true CN114328000A (zh) | 2022-04-12 |
CN114328000B CN114328000B (zh) | 2022-08-23 |
Family
ID=81024952
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210019418.1A Active CN114328000B (zh) | 2022-01-10 | 2022-01-10 | 1型2型分段纠错内码的dna存储级联编码与解码方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114328000B (zh) |
WO (1) | WO2023130676A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114783530A (zh) * | 2022-05-16 | 2022-07-22 | 南京大学 | 一种蛋白质存储编码纠错方案 |
CN115642923A (zh) * | 2022-11-02 | 2023-01-24 | 电子科技大学 | 一种新型的dna存储编码方法 |
WO2023130676A1 (zh) * | 2022-01-10 | 2023-07-13 | 天津大学 | 1型2型分段纠错内码的dna存储级联编码与解码方法 |
CN116187435B (zh) * | 2022-12-19 | 2024-01-05 | 武汉大学 | 基于大小喷泉码及mrc算法利用dna进行信息存储方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110706751A (zh) * | 2019-09-25 | 2020-01-17 | 东南大学 | 一种dna存储加密编码方法 |
CN110932736A (zh) * | 2019-11-09 | 2020-03-27 | 天津大学 | 一种基于Raptor码及四进制RS码的DNA信息存储方法 |
CN112100982A (zh) * | 2020-08-07 | 2020-12-18 | 广州大学 | Dna存储方法、系统和存储介质 |
US20210074380A1 (en) * | 2019-09-05 | 2021-03-11 | Microsoft Technology Licensing, Llc | Reverse concatenation of error-correcting codes in dna data storage |
FR3110177A1 (fr) * | 2020-05-15 | 2021-11-19 | Université De Bretagne Sud | procédé et dispositif de décodage de données stockées dans un système de stockage à base d'ADN |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7443774B2 (ja) * | 2020-01-14 | 2024-03-06 | ソニーグループ株式会社 | 符号化装置、および符号化方法、復号装置、および復号方法、並びにプログラム |
CN112802549B (zh) * | 2021-01-26 | 2022-05-13 | 武汉大学 | Dna序列完整性校验和纠错的编解码方法 |
CN113345521A (zh) * | 2021-05-31 | 2021-09-03 | 天津大学 | 一种采用大片段dna存储的编码与恢复方法 |
CN114328000B (zh) * | 2022-01-10 | 2022-08-23 | 天津大学 | 1型2型分段纠错内码的dna存储级联编码与解码方法 |
-
2022
- 2022-01-10 CN CN202210019418.1A patent/CN114328000B/zh active Active
- 2022-06-17 WO PCT/CN2022/099334 patent/WO2023130676A1/zh unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210074380A1 (en) * | 2019-09-05 | 2021-03-11 | Microsoft Technology Licensing, Llc | Reverse concatenation of error-correcting codes in dna data storage |
CN110706751A (zh) * | 2019-09-25 | 2020-01-17 | 东南大学 | 一种dna存储加密编码方法 |
CN110932736A (zh) * | 2019-11-09 | 2020-03-27 | 天津大学 | 一种基于Raptor码及四进制RS码的DNA信息存储方法 |
FR3110177A1 (fr) * | 2020-05-15 | 2021-11-19 | Université De Bretagne Sud | procédé et dispositif de décodage de données stockées dans un système de stockage à base d'ADN |
CN112100982A (zh) * | 2020-08-07 | 2020-12-18 | 广州大学 | Dna存储方法、系统和存储介质 |
Non-Patent Citations (2)
Title |
---|
KHUAT, TH 等: "A Quaternary Code Correcting a Burst of at Most Two Deletion or Insertion Errors in DNA Storage", 《ENTROPY》 * |
王子成等: "基于纠错码编码理论的DNA编码研究", 《计算机应用研究》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023130676A1 (zh) * | 2022-01-10 | 2023-07-13 | 天津大学 | 1型2型分段纠错内码的dna存储级联编码与解码方法 |
CN114783530A (zh) * | 2022-05-16 | 2022-07-22 | 南京大学 | 一种蛋白质存储编码纠错方案 |
CN115642923A (zh) * | 2022-11-02 | 2023-01-24 | 电子科技大学 | 一种新型的dna存储编码方法 |
CN115642923B (zh) * | 2022-11-02 | 2023-10-20 | 电子科技大学 | 一种新型的dna存储编码方法 |
CN116187435B (zh) * | 2022-12-19 | 2024-01-05 | 武汉大学 | 基于大小喷泉码及mrc算法利用dna进行信息存储方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2023130676A1 (zh) | 2023-07-13 |
CN114328000B (zh) | 2022-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114328000B (zh) | 1型2型分段纠错内码的dna存储级联编码与解码方法 | |
CN108768403B (zh) | 基于lzw的无损数据压缩、解压方法及lzw编码器、解码器 | |
US20170192848A1 (en) | Distributed data storage with reduced storage overhead using reduced-dependency erasure codes | |
KR101110586B1 (ko) | 연결된 반복 및 대수 코딩 | |
US20050257115A1 (en) | Decoding for algebraic geometric code associated with a fiber product | |
Mishra et al. | Compressed DNA coding using minimum variance Huffman tree | |
CN101946230A (zh) | 用于检测和校正所接收的符号串中的定相突发差错、删除、符号差错和位差错的方法和系统 | |
Gabrys et al. | Unique reconstruction of coded strings from multiset substring spectra | |
US3745525A (en) | Error correcting system | |
JP2014022848A (ja) | 誤り訂正符号の符号化方法及び復号方法 | |
CN113687976B (zh) | 面向dna信息存储的编码和解码方法与装置 | |
CN113168882A (zh) | 一种编码方法、译码方法以及存储控制器 | |
CN115993939B (zh) | 存储系统重复数据删除方法及装置 | |
CN110113058B (zh) | 编译码方法、装置、设备及计算机可读存储介质 | |
JP2020135391A (ja) | メモリシステム | |
Smith et al. | Interleaved constrained codes with markers correcting bursts of insertions or deletions | |
CN112000509A (zh) | 一种基于向量指令的纠删码编码方法、系统及装置 | |
US20240184666A1 (en) | Preprocessing for Correcting Insertions and Deletions in DNA Data Storage | |
CN110928725B (zh) | 闪存中基于矩阵表示的多重置换码的构造及译码方法 | |
CN105871508B (zh) | 一种网络编解码方法及系统 | |
CN113556136B (zh) | 一种gn陪集码译码方法及装置 | |
CN117976021B (zh) | 多数据块联合ldpc编码的数据存储方法与系统 | |
CN113611364B (zh) | 面向dna存储的dna序列处理方法、装置与电子设备 | |
CN118118034A (zh) | 八碱基霍夫曼压缩轮转编码方法及装置 | |
KR102574250B1 (ko) | 저밀도 패리티 체크 부호를 이용한 dna 데이터 부호화 및 복호화 방법, 프로그램 및 장치 |
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 |