CN116187435A - 基于大小喷泉码及mrc算法利用dna进行信息存储方法及系统 - Google Patents
基于大小喷泉码及mrc算法利用dna进行信息存储方法及系统 Download PDFInfo
- Publication number
- CN116187435A CN116187435A CN202211633602.1A CN202211633602A CN116187435A CN 116187435 A CN116187435 A CN 116187435A CN 202211633602 A CN202211633602 A CN 202211633602A CN 116187435 A CN116187435 A CN 116187435A
- Authority
- CN
- China
- Prior art keywords
- decoding
- data
- fountain code
- dna
- module
- 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
- 238000000034 method Methods 0.000 title claims abstract description 74
- 108020004414 DNA Proteins 0.000 title claims abstract description 49
- 102000053602 DNA Human genes 0.000 title abstract description 39
- 108091028043 Nucleic acid sequence Proteins 0.000 claims abstract description 131
- 238000003860 storage Methods 0.000 claims abstract description 45
- 230000008569 process Effects 0.000 claims description 27
- 230000008030 elimination Effects 0.000 claims description 16
- 238000003379 elimination reaction Methods 0.000 claims description 16
- 238000012937 correction Methods 0.000 claims description 14
- 238000012545 processing Methods 0.000 claims description 7
- 230000007614 genetic variation Effects 0.000 claims description 3
- 238000012216 screening Methods 0.000 claims description 3
- 238000002474 experimental method Methods 0.000 description 9
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000005315 distribution function Methods 0.000 description 4
- 239000002609 medium Substances 0.000 description 3
- 238000012163 sequencing technique Methods 0.000 description 3
- 238000001712 DNA sequencing Methods 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 239000005547 deoxyribonucleotide Substances 0.000 description 2
- 125000002637 deoxyribonucleotide group Chemical group 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 229920001519 homopolymer Polymers 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000003776 cleavage reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 239000001963 growth medium Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000005416 organic matter Substances 0.000 description 1
- 230000007017 scission Effects 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
-
- 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)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Genetics & Genomics (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Special Spraying Apparatus (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于大小喷泉码及MRC算法利用DNA进行信息存储的方法及系统,包括编码生成数据包,将编码数据包转换成DNA序列时使用MRC算法自动规避掉不希望出现的子序列,将合格的DNA序列输出去到文件中保存;解码程序接收到DNA序列,转换成二进制数据;对转换来的数据先截取随机种子,再利用MRC解码算法提取所有的小喷泉码,再进行小喷泉码解码;利用小喷泉码结果以及随机种子对大喷泉码进行解码。本发明提供了喷泉码在DNA存储中的一种工程实现方法,有效应对了DNA存储场景中的规避序列问题,便于喷泉码在DNA存储中的工程实现。
Description
技术领域
本发明涉及数据编码与信息安全存储领域,涉及一种信息存储的方法及系统,具体涉及一种利用计算机编码的基于大小喷泉码及MRC算法的利用DNA进行信息存储的方法及系统。
背景技术
据估计2025年全球数据产出量将达到175ZB,而当前主流存储介质的生产已经不堪重负。DNA同样能存储数字信息,用DNA作为存储的介质,具有高效、存储容量大、存储时间长、易获取免维护等优点。在DNA存储技术中,喷泉码存储技术具有高存储密度、有部分数据丢失的情况下也能以较高概率成功解码的优点,因此使用喷泉码的DNA存储技术在未来将有广阔的前景。
但现有的喷泉码模型应用在DNA存储领域具有以下技术问题:
传统的喷泉码模型在编码端和解码端通常需要额外的信道来进行源文件划分成的数据包数目K值的传递,如果直接将传统喷泉码模型应用在DNA存储场景中,将需要额外的信道来进行传递信息进行解码过程。此外在实际的生化研究中,对参与生化实验的DNA序列要特殊的要求,例如进行DNA测序的序列中不能出现一些指定的DNA片段。而直接将喷泉码编码出的数据转换成DNA序列则不能保证所有编码出来的DNA序列都是合格的,如果丢弃不合格的DNA序列又需要花费更大的代价,因此,现有的喷泉码模型在实际的DNA存储应用中具有一定的弊端。
发明内容
有鉴于此,本发明提供了一种基于大小喷泉码及MRC算法的利用DNA进行信息存储的方法及系统,用于解决或至少部分解决现有DNA存储应用中的喷泉码模型在DNA存储应用场景下的一些弊端。
本发明的方法所采用的技术方案是:一种基于大小喷泉码及MRC算法利用DNA进行信息存储方法,包括以下步骤:
步骤1:针对待存储的源文件进行信源编码,即对源文件进行拼接文件名、生成哈希值、获取比特长、对比特长参数拼接哈希值处理;
步骤2:对处理后的数据进行分组处理;
步骤3:基于大小喷泉码及MRC算法对分组数据进行编码;编码数据包的结构是头部为随机种子,中间部分为大喷泉码编码数据数据,尾部为小喷泉码编码数据,最后为纠错编码数据,用于对序列的正确性进行检测和纠正;
采用大喷泉码对分组数据的内容和、文件名字以及一个哈希值进行编码,生成编码数据;哈希值用于解码时的自校验;
采用小喷泉码对文件比特长及其生成的一个哈希值进行编码,哈希值用于小喷泉码解码时的自校验;
采用MRC算法将大喷泉码编码生成的编码数据转换成DNA序列,结合用户输入的规避序列,自动编码输出不含指定规避序列的DNA序列;
对于MRC算法转换的不等长的DNA序列,采用小喷泉码编码将DNA序列填充为等长;
所述随机种子的比特长根据编码时用户要求的DNA序列数量确定,将确定比特长的随机种子动态拼接在数据包头部;
步骤4:DNA序列存储;
步骤5:利用大喷泉码、MRC算法和小喷泉码对DNA序列解码;
根据与编码约定好的随机种子的范围截取随机种子,再使用MRC算法对所有数据包除去随机种子后的剩余部分进行解码,提取出所有的小喷泉码,然后解码小喷泉码,解码成功则利用小喷泉码解码出的内容进行哈希自校验确定随机种子;
确定随机种子与小喷泉码的编码内容后,采用大喷泉码解码。
本发明的系统所采用的技术方案是:一种基于大小喷泉码及MRC算法利用DNA进行信息存储系统,包括以下模块:
模块1,用于针对待存储的源文件进行信源编码,即对源文件进行拼接文件名、生成哈希值、获取比特长、对比特长参数拼接哈希值处理;
模块2,用于对处理后的数据进行分组处理;
模块3,用于基于大小喷泉码及MRC算法对分组数据进行编码;编码数据包的结构是头部为随机种子,中间部分为大喷泉码编码数据数据,尾部为小喷泉码编码数据,最后为纠错编码数据,用于对序列的正确性进行检测和纠正;
采用大喷泉码对分组数据的内容、文件名字以及一个哈希值进行编码,生成编码数据;哈希值用于解码时的自校验;
采用小喷泉码对文件比特长及其生成的一个哈希值进行编码,哈希值用于小喷泉码解码时的自校验;
采用MRC算法将大喷泉码编码生成的编码数据转换成DNA序列,结合用户输入的规避序列,自动编码输出不含指定规避序列的DNA序列;
对于MRC算法转换的不等长的DNA序列,采用小喷泉码编码将DNA序列填充为等长;
所述随机种子的比特长根据编码时用户要求的DNA序列数量确定,将确定比特长的随机种子动态拼接在数据包头部;
模块4,用于DNA序列存储;
模块5,用于利用大喷泉码、MRC算法和小喷泉码对DNA序列解码;
根据与编码约定好的随机种子比特长度的范围截取随机种子,再使用MRC算法对所有数据包除去随机种子后的剩余部分进行解码,提取出所有的小喷泉码,然后解码小喷泉码,解码成功则利用小喷泉码解码出的内容进行哈希自校验确定随机种子;
确定随机种子与小喷泉码的编码内容后,采用大喷泉码解码。
相对于现有的应用在DNA存储中的喷泉码模型而言,本发明的有益效果包括:
(1)本发明使用了一个小喷泉码来编码存储源文件的比特长信息,解码端利用该信息可以推算出源文件被划分成的数据包的数目,可以帮助解码端结束解码过程。小喷泉码没有使用额外的信道和带宽。
(2)本发明喷泉码解码使用线性消解法与高斯消元法组合的方式,先用线性消解法,利用1度的数据包快速解出一些数据,再利用高斯消元法去解剩余的因缺少1度而无法继续解码的数据,能以较高的概率成功解码。
(3)本发明提供了喷泉码在DNA存储中的一种工程实现方法,有效应对了DNA存储场景中的规避序列问题,便于喷泉码在DNA存储中的工程实现。
(4)本发明可以按照用户的需求编码生成指定长度和数量的DNA序列。
附图说明
图1为本发明的实施例的方法流程图;
图2为本发明的实施例中的大小喷泉码的编码程序过程流程图;
图3为本发明的实施例中的大小喷泉码的解码程序过程流程图;
图4为本发明的实施例中的大小喷泉码的数据包结构示意图。
具体实施方式
为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。
由于生化实验上的限制,不希望进行生化实验的DNA序列中含有某些特定的子序列,这些子序列被称为规避序列。使用喷泉码进行DNA存储时,为了避免编码生成的DNA序列中含有特定的规避序列,编码在将编码数据转换成DNA序列时,使用MRC算法自动规避掉该规避的序列,直接生成符合实际要求的DNA序列。由于存储介质的不均匀性,使用MRC算法编码出的DNA序列是不定长的,为了使编码输出的DNA序列变为用户指定的长度,利用了小喷泉码的编码数据来填补较短序列末尾的空间。传统喷泉码在编码端和解码端需要额外的信道来传递一些解码必须的关键参数,但额外信道的存在不利用喷泉码的实际实现与应用。而添加小喷泉码作为带外信道用来传递源文件的关键参数,在解码时用于大喷泉码的解码更便于工程实现。
本发明提供了一种基于大小喷泉码及MRC算法利用DNA进行信息存储方法及系统,包括编码生成数据包,在将编码数据包转换成DNA序列时使用MRC算法自动规避掉不希望出现的子序列,将合格的DNA序列输出去到文件中保存;解码程序接收到DNA序列,转换成二进制数据;对转换来的数据先截取随机种子,再利用MRC解码算法提取所有的小喷泉码,再进行小喷泉码解码;利用小喷泉码结果以及随机种子对大喷泉码进行解码。
本发明先使用大喷泉码对需要存储的源文件进行编码,生成编码数据,再使用MRC算法根据用户输入的规避序列、需要输出的DNA序列长度,确定大喷泉码编码数据转换成的DNA序列长度,并统计与指定输出DNA序列长度之间的差距。
MRC算法编码生成的DNA序列时不定长的,对有剩余空间的数据包使用该数据包的随机种子作为随机源生成新的随机数进行小喷泉码编码,根据剩余的空间来确定小喷泉码的编码数量,不同的小喷泉码数据包使用同一个随机种子作为随机源生成一系列随机数作为不同小喷泉码数据包的随机种子,编码与解码约定小喷泉码数据包的比特长较短,一般为1比特,也可根据实际应用场景进行调整。小喷泉码与大喷泉码使用相同的度分布函数。
请见图1,本发明提供的一种基于大小喷泉码及MRC算法利用DNA进行信息存储方法,包括以下步骤:
步骤1:针对待存储的源文件进行信源编码,即对源文件进行拼接文件名、生成哈希值、获取比特长、对比特长参数拼接哈希值处理;
步骤2:对处理后的数据进行分组处理;
步骤3:基于大小喷泉码及MRC算法对分组数据进行编码;
请见图4,本实施例的编码数据包的结构是头部为随机种子,中间部分为大喷泉码编码数据数据,尾部为小喷泉码编码数据,有些数据包大喷泉码数据末尾没有多余空间的话可能没有小喷泉码数据,最后为纠错编码数据,用于对序列的正确性进行检测和纠正;随机种子的比特长根据编码时用户要求的DNA序列数量确定,将确定比特长的随机种子动态拼接在数据包头部;
采用大喷泉码对分组数据的内容、文件名字以及一个哈希值进行编码,生成编码数据;哈希值用于解码时的自校验;
大喷泉码,具体用于存储源文件的内容,使用传统的喷泉码模型进行编码,编码过程与小喷泉码编码相互独立。为了在解码时能完全还原出存储的源文件,大喷泉码还存储了文件的名字以及一个对其生成的哈希值。
采用MRC算法将大喷泉码编码生成的编码数据转换成DNA序列,结合用户输入的规避序列,自动编码输出不含指定规避序列的DNA序列;
采用小喷泉码编码将DNA序列填充为等长;
小喷泉码,具体用于对待存储源文件的比特长该关键参数进行编码存储,并将编码结果与大喷泉码编码的结果合并成最终的编码数据。设源文件的比特长为L,数据包的比特长为l,小喷泉码将参数L传递到解码端之后,则解码端可根据式得到关键参数K。
源文件内容在按照喷泉码编码过程进行数据分组划分的时候,可能需要在数据的末尾进行填充,使得所有数据分组都是等长的,而解码端需要将填充的多余数据去除。设填充的比特数为n,则解码端根据式n=K×l-L即可计算出填充的多余比特数。
小喷泉码编码存储的数据尾部拼接了一个对存储参数生成的哈希值,用于解码时的哈希自校验。解码装置利用小喷泉码解码出的源文件比特长信息可以推算出源文件划分成的数据包个数等关键参数,可以用于指导大喷泉码解码。
步骤4:DNA序列生化实验序列合成、扩增、存储、测序;
DNA序列的生化合成、扩增、存储、测序为存储介质的保存阶段。数字信息利用计算机转换成DNA序列后要利用生化实验转换成实际的脱氧核糖核苷酸(DNA)有机物,DNA具有一定的半衰期,因此需要对合成的DNA序列进行扩增,再将DNA放入培养基或生物体内进行存储。再数据读取阶段,先获取存储的脱氧核糖核苷酸有机物,再利用DNA测序技术获得真实的DNA序列,再将测序的序列结果送入计算机进行解码读取存储的信息。
步骤5:利用大喷泉码、MRC算法和小喷泉码对DNA序列解码;
根据与编码约定好的随机种子比特长(编码时设置了随机种子的比特长范围,即种子比特长下限值和上线值,解码时也将随机种子比特长设置为相同的范围,解码时随机种子的比特长只在该范围内取值)的范围截取随机种子,再使用MRC算法对所有数据包除去随机种子后的剩余部分进行解码,提取出所有的小喷泉码,然后解码小喷泉码,解码成功则利用小喷泉码解码出的内容进行哈希自校验确定随机种子;
确定随机种子与小喷泉码的编码内容后,采用大喷泉码解码。喷泉码解码使用线性消解法与高斯消元法组合的方式,先用线性消解法,利用1度的数据包快速解出一些数据,再利用高斯消元法去解剩余的因缺少1度而无法继续解码的数据;从大喷泉码解码出的数据末尾截取哈希值,再对剩余的数据使用与编码相同的哈希算法生成哈希值进行自校验,通过自校验后,从剩余数据的末尾截取与编码约定的字节长作为文件名,剩余部分即为源文件内容,保存到文件中即恢复出存储的源文件。
请见图2,本实施例中步骤3的具体实现包括以下子步骤:
步骤3.1:读入源文件,获取源文件比特长和文件内容后拼接文件名与哈希值;
步骤3.2:根据用户输入信息计算种子空间,源文件划分数据包(大喷泉码),记为A,原文件比特长生成哈希值后拼接成一个数,划分数据包(小喷泉码),记为B;
传统喷泉码在对数据进行编码时,有一个度分布函数用于指导编码,而每编码一个数据包就需要一个唯一的随机种子,随机种子从0开始可以无限生成,但在DNA存储应用场景中,在编码之前用户就需要确定编码DNA序列也就是喷泉码编码数据包的数量,因此随机种子不用产生无限个,根据用户需要的DNA序列数量确定随机种子的范围,此时再计算随机中的比特长(种子空间)。例如用户需要编码1000条DNA序列,随机种子从0到999,而数字999在计算机里需要10比特长度来表示,因此计算种子空间为10比特,也就是说从0到999这1000个数都用10比特的长度来表示。
孤波分布为传统喷泉码的度分布函数:
d为度,K为待编码数据包的个数。
由随机种子按照度分布函数随机生成度,度表示参与编码的原始数据分组的数量。
步骤3.3:利用大喷泉码对A进行编码;
步骤3.4:采用MRC算法将大喷泉码编码生成的编码数据转换成DNA序列,结合用户输入的规避序列,自动编码输出不含指定规避序列的DNA序列;
步骤3.5:将DNA序列与规定长度进行比较;
若大于规定长处,则丢弃,则回转执行步骤3.3;
若小于规定长度,则采用小喷泉码编码将DNA序列填充为等长;然后执行步骤3.6;
若等于规定长度,则执行步骤3.6;
步骤3.6:添加纠错编码,输出DNA序列;
步骤3.7:判断种子空间是否用尽;
若是,则种子空间加1,然后回转执行步骤3.2;
若否,则执行下述步骤3.8;
步骤3.8:判断序列数是否到达要求;
若是,则本流程结束;
若否,则回转执行步骤3.3。
请见图3,本实施例中步骤5的具体实现包括以下子步骤:
步骤5.1:将DNA序列利用纠错编码筛选出所有合格的DNA序列;
步骤5.2:按照种子空间,取所有序列的头部作为随机种子;
步骤5.3:采用MRC算法解码DNA序列,剩余部分转换成二进制数据,为小喷泉码数据;
剩余部分为小喷泉码填充的数据。用于MRC编码算法转换成的DNA序列是不等长的,而所有用于解码的DNA序列都是等长的因为有小喷泉码填充。将等长的DNA序列用MRC解码算法时,MRC算法会根据预设的比特长信息自动对输入的DNA序列判断什么时候结束解码,若结束解码时MRC消耗的DNA序列比输入解码的DNA序列短,则说明MRC解码后还剩余的DNA部分为小喷泉码数据;
所有序列利用MRC算法解码后还剩余的末尾为小喷泉码的编码数据,小喷泉码编码数据的比特长为固定的,例如固定为1比特(可根据实际应用场景调整),那么末尾还剩余多少比特就表示有多少个小喷泉码编码数据,而剩多少比特是不固定的,可能有的多有的少有的没有(图4所示),要看MRC解码后还剩多少。
步骤5.4:小喷泉码尝试解码;
步骤5.5:判断是否解码成功;
若是,则执行步骤5.6;
若否,则执行步骤5.12;
步骤5.6:小喷泉码末尾哈希值进行自校验;
步骤5.7:判断自校验是否成功;
若是,则执行步骤5.8;
若否,则执行步骤5.12;
步骤5.8:确定种子空间,利用小喷泉码结果进行大喷泉码解码;
步骤5.9:判断解码是否成功;
若是,则执行步骤5.10;
若否,则给出解码失败原因为DNA序列数量不够,本流程结束;
步骤5.10:大喷泉码解码数据进行哈希自校验;
步骤5.11:判断哈希自校验是否成功;
若是,则解码成功,本流程结束;
若否,则给出解码失败原因为DNA变异,有错误序列参与解码,本流程结束;
步骤5.12:判断种子空间是否达到预定的上限;
若是,则解码失败,给出解码失败原因为序列数量不够或基因变异有错误序列参与解码,本流程结束;
若否,则种子空间加1,并回转执行步骤5.2。
本实施例中,喷泉码的编码步骤具体如下:
(1)根据给出的度分布函数,得到一个随机值d,作为编码数据包的度。
(2)从源文件划分的K个数据包中,均匀随机挑选d个数据包作为待编码数据包的原始数据包。
(3)将选出的d个原始数据包进行异或运算,得到的结果就是编码数据包的值。
(4)一直重复上面三个步骤,可得到任意数量的编码数据包。
编码及在将喷泉码编码数据转换成DNA序列时,要考虑到实际DNA存储应用中的生化实验限制要求,例如均聚物长(AAAAA...)或含有酶切位点等规避子序列的序列都不可取。为了避免规避序列的限制,编码及使用MRC算法,在将编码数据转换成DNA序列的过程中,直接编码输出不含规避序列的合格的DNA序列。
喷泉码要求解码时不能有错误的数据参与解码,因此编码时需要在生成的DNA序列尾部添加上纠错编码,用于解码时的DNA序列纠错和检错。
MRC算法分为编码和解码两个过程,MRC的编码算法采用了变进制的编码思想,设待编码的数据为D,规避序列集合为B,编码生成的DNA序列的S,则编码算法步骤为:
(1)将编码生成的DNA序列与所有的规避序列比对,确定下一次编码可选择的所有碱基集合M;
(2)可选择的碱基集合长度为R,计算d=DmodR;
(4)重复上述步骤(1)-(3),直到D为0,返回编码的DNA序列S。
MRC的解码算法为编码算法的逆过程,根据一段DNA序列及规避序列集合输出最初编码的数据,设待解码的DNA序列为S,规避序列集合为B,解码输出的数据为D,i=0,则解码算法步骤为:
(1)将待解码的DNA序列与所有的规避序列比对,确定当前碱基Si在经过所有规避序列比对后的所有可选择碱基M;
(2)可选择的碱基序列长度为R,计算D=D×R;
(3)计算index=M(Si),D=D+index,i=i+1;
(4)重复上述步骤(1)-(3),直到i=len(S)为0,返回解码结果D。
由于规避序列导致DNA存储介质的不均匀性,MRC算法编码出的DNA序列是不定长的,而实际应用中,要求编码编码输出的DNA序列时定长的。对于MRC编码出的DNA序列,超过规定长度的直接丢弃;而那些小于规定长度的序列,可利用小喷泉码编码数据进行填充,使其长度达到规定的长度。
本实施例中,大小喷泉码编码对用户输入的待存储的源文件进行编码处理,对一定范围内的任意大小和类型的文件都可进行编码存储,编码是用户可以指定编码输出DNA序列的长度和数量,编码程序在对用户输入的信息进行判断合法后进行编码,编码生成的DNA序列在进行生化实验处理和保存。
在编码的具体实施过程中,编码程序先读取待存储的源文件,获得其比特长;将源文件的文件名按照100字节拼在文件内容后,对整体进行哈希生成一个256位的哈希,在拼接在末尾,对这个数据使用大喷泉码进行编码存储;对源文件的比特长信息用64位的数据类型表示,对这个数进行哈希同样生成一个256位的哈希值,拼接在源文件比特长之后,再对其使用小喷泉码进行编码存储。
在MRC算法编码DNA序列,由于生化实验上的限制,并不是所有与生成的DNA序列都是可用的,例如GC含量高、均聚物长(如AAAAAA…)或序列中含有酶切位点子序列的DNA序列是不可取的,因为它们很难合成,而且容易出现测序错误所以为了保证编码数据转换成的DNA序列可以满足生化合成实验上的要求,在编码输出DNA序列时要考虑规避序列的限制。
利用MRC算法,使用变进制的思想,结合用户输入的规避序列,在将编码数据转换为DNA序列时直接规避掉不希望出现的子序列。
解码程序利用接收到的DNA序列进行解码,先从数据的头部按照与解码端约定的随机种子范围截取随机种子,再将DNA序列利用MRC解码算法转换成二进制数据,同时得到所有的小喷泉码编码数据。
编码端与解码端约定随机种子的比特长范围为10比特到24比特,可编码DNA序列条数范围为1024条至16777216条,基本符合实际应用的需求,该范围也可根据使用的场景进行扩大或缩小,只需要编解码约定好相同的范围即可。
需要说明的是,接收端用于解码的数据包全部默认为是正确的序列,没有含有错误的DNA序列参与解码。因此在编码端生成DNA序列时,需要在序列的尾部添加纠错编码数据,用于解码时的检错和纠错。
本实施例中,接收端具体用于:按照与编码端约定的规则,从DNA序列的头部截取数据作为数据包的随机种子。对接收到的数据包进行转换,利用MRC算法将DNA序列转换为二进制数据,同时得到所有的小喷泉码编码数据。先利用随机种子对小喷泉码数据进行解码,利用小喷泉码编码存储数据的末尾截取256位的哈希值进行自校验,通过自校验的即为正确的随机种子;否则将随机种子的比特长加1,再次进行小喷泉码解码。
本实施例中,小喷泉码解码成功后,利用小喷泉码解码出的数据与确定的随机种子对大喷泉数据进行解码,对解码出的数据同样利用末尾的256位的哈希值进行自校验,通过自校验的数据即为解码成功,将通过校验的数据写入文件保存,解码程序结束。
本发明在实施过程中,编码程序与解码程序是相互配套的,同一套的编码程序与解码程序具有相同的规则约定,例如随机种子的比特长度范围、小喷泉码数据包的长度,一些参数的数据类型等等。
对其他相互配套的编解码程序来说,编解码端相互约定的规则可能不同,不是相互配套的编解码程序不应该相互混合使用,否则可能到时解码失败。
本邻域内的技术人员应明白,本发明的实施可提供方法、系统或计算机程序产品。因此,本发明可采用硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种基于大小喷泉码及MRC算法利用DNA进行信息存储方法,其特征在于,包括以下步骤:
步骤1:针对待存储的源文件进行信源编码,即对源文件进行拼接文件名、生成哈希值、获取比特长、对比特长参数拼接哈希值处理;
步骤2:对处理后的数据进行分组处理;
步骤3:基于大小喷泉码及MRC算法对分组数据进行编码;编码数据包的结构是头部为随机种子,中间部分为大喷泉码编码数据数据,尾部为小喷泉码编码数据,最后为纠错编码数据,用于对序列的正确性进行检测和纠正;
采用大喷泉码对分组数据的内容和、文件名字以及一个哈希值进行编码,生成编码数据;哈希值用于解码时的自校验;
采用小喷泉码对文件比特长及其生成的一个哈希值进行编码,哈希值用于小喷泉码解码时的自校验;
采用MRC算法将大喷泉码编码生成的编码数据转换成DNA序列,结合用户输入的规避序列,自动编码输出不含指定规避序列的DNA序列;
对于MRC算法转换的不等长的DNA序列,采用小喷泉码编码将DNA序列填充为等长;
所述随机种子的比特长根据编码时用户要求的DNA序列数量确定,将确定比特长的随机种子动态拼接在数据包头部;
步骤4:DNA序列存储;
步骤5:利用大喷泉码、MRC算法和小喷泉码对DNA序列解码;
根据与编码约定好的随机种子的范围截取随机种子,再使用MRC算法对所有数据包除去随机种子后的剩余部分进行解码,提取出所有的小喷泉码,然后解码小喷泉码,解码成功则利用小喷泉码解码出的内容进行哈希自校验确定随机种子;
确定随机种子与小喷泉码的编码内容后,采用大喷泉码解码。
2.根据权利要求1所述的基于大小喷泉码及MRC算法利用DNA进行信息存储方法,其特征在于,步骤3的具体实现包括以下子步骤:
步骤3.1:读入源文件,获取源文件比特长和文件内容后拼接文件名与哈希值;
步骤3.2:根据用户输入信息计算种子空间,源文件划分数据包,记为A,原文件比特长生成哈希值后拼接成一个数,划分数据包,记为B;
步骤3.3:利用大喷泉码对A进行编码;
步骤3.4:采用MRC算法将大喷泉码编码生成的编码数据转换成DNA序列,结合用户输入的规避序列,自动编码输出不含指定规避序列的DNA序列;
步骤3.5:将DNA序列与规定长度进行比较;
若大于规定长度,则丢弃,则回转执行步骤3.3;
若小于规定长度,则采用小喷泉码编码将DNA序列填充为等长;然后执行步骤3.6;
若等于规定长度,则执行步骤3.6;
步骤3.6:添加纠错编码,输出DNA序列;
步骤3.7:判断种子空间是否用尽;
若是,则种子空间加1,然后回转执行步骤3.2;
若否,则执行下述步骤3.8;
步骤3.8:判断序列数是否到达要求;
若是,则本流程结束;
若否,则回转执行步骤3.3。
3.根据权利要求1所述的基于大小喷泉码及MRC算法利用DNA进行信息存储方法,其特征在于,步骤5的具体实现包括以下子步骤:
步骤5.1:将DNA序列利用纠错编码筛选出所有合格的DNA序列;
步骤5.2:按照种子空间,取所有序列的头部作为随机种子;
步骤5.3:采用MRC算法解码DNA序列,剩余部分转换成二进制数据,得到所有小喷泉码编码数据;
步骤5.4:小喷泉码尝试解码;
步骤5.5:判断是否解码成功;
若是,则执行步骤5.6;
若否,则执行步骤5.12;
步骤5.6:小喷泉码末尾哈希值进行自校验;
步骤5.7:判断自校验是否成功;
若是,则执行步骤5.8;
若否,则执行步骤5.12;
步骤5.8:确定种子空间,利用小喷泉码结果进行大喷泉码解码;
步骤5.9:判断解码是否成功;
若是,则执行步骤5.10;
若否,则给出解码失败原因为DNA序列数量不够,本流程结束;
步骤5.10:大喷泉码解码数据进行哈希自校验;
步骤5.11:判断哈希自校验是否成功;
若是,则解码成功,本流程结束;
若否,则给出解码失败原因为DNA变异,有错误序列参与解码,本流程结束;
步骤5.12:判断种子空间是否达到预定的上限;
若是,则解码失败,给出解码失败原因为序列数量不够或基因变异有错误序列参与解码,本流程结束;
若否,则种子空间加1,并回转执行步骤5.2。
4.根据权利要求1所述的基于大小喷泉码及MRC算法利用DNA进行信息存储方法,其特征在于:步骤5中,喷泉码解码使用线性消解法与高斯消元法组合的方式,先用线性消解法,利用1度的数据包快速解出一些数据,再利用高斯消元法去解剩余的因缺少1度而无法继续解码的数据;从大喷泉码解码出的数据末尾截取哈希值,再对剩余的数据使用与编码端相同的哈希算法生成哈希值进行自校验,通过自校验后,从剩余数据的末尾截取与编码约定的字节长作为文件名,剩余部分即为源文件内容,保存到文件中即恢复出存储的源文件。
5.根据权利要求1-4任意一项所述的基于大小喷泉码及MRC算法利用DNA进行信息存储方法,其特征在于:所述MRC算法,分为编码和解码两个过程;
所述MRC算法的编码过程采用了变进制的编码思想,设待编码的数据为D,规避序列集合为B,编码生成的DNA序列的S,则编码算法步骤为:
(1)将编码生成的DNA序列与所有的规避序列比对,确定下一次编码可选择的所有碱基集合M;
(2)可选择的碱基集合长度为R,计算d=DmodR;
(4)重复上述步骤(1)-(3),直到D为0,返回编码的DNA序列S;
所述MRC算法的解码过程为编码算法的逆过程,设待解码的DNA序列为S,规避序列集合为B,解码输出的数据为D,i=0,则解码算法步骤为:
(1)将待解码的DNA序列与所有的规避序列比对,确定当前碱基Si在经过所有规避序列比对后的所有可选择碱基M;
(2)可选择的碱基序列长度为R,计算D=D×R;
(3)计算index=M(Si),D=D+index,i=i+1;
(4)重复上述步骤(1)-(3),直到i=len(S)为0,返回解码结果D。
6.一种基于大小喷泉码及MRC算法利用DNA进行信息存储系统,其特征在于,包括以下模块:
模块1,用于针对待存储的源文件进行信源编码,即对源文件进行拼接文件名、生成哈希值、获取比特长、对比特长参数拼接哈希值处理;
模块2,用于对处理后的数据进行分组处理;
模块3,用于基于大小喷泉码及MRC算法对分组数据进行编码;编码数据包的结构是头部为随机种子,中间部分为大喷泉码编码数据数据,尾部为小喷泉码编码数据,最后为纠错编码数据,用于对序列的正确性进行检测和纠正;
采用大喷泉码对分组数据的内容、文件名字以及一个哈希值进行编码,生成编码数据;哈希值用于解码时的自校验;
采用小喷泉码对文件比特长及其生成的一个哈希值进行编码,哈希值用于小喷泉码解码时的自校验;
采用MRC算法将大喷泉码编码生成的编码数据转换成DNA序列,结合用户输入的规避序列,自动编码输出不含指定规避序列的DNA序列;
对于MRC算法转换的不等长的DNA序列,采用小喷泉码编码将DNA序列填充为等长;
所述随机种子的比特长根据编码时用户要求的DNA序列数量确定,将确定比特长的随机种子动态拼接在数据包头部;
模块4,用于DNA序列存储;
模块5,用于利用大喷泉码、MRC算法和小喷泉码对DNA序列解码;
根据与编码约定好的随机种子的范围截取随机种子,再使用MRC算法对所有数据包除去随机种子后的剩余部分进行解码,提取出所有的小喷泉码,然后解码小喷泉码,解码成功则利用小喷泉码解码出的内容进行哈希自校验确定随机种子;
确定随机种子与小喷泉码的编码内容后,采用大喷泉码解码。
7.根据权利要求6所述的基于大小喷泉码及MRC算法利用DNA进行信息存储系统,其特征在于,模块3包括以下子模块:
模块3.1,用于读入源文件,获取源文件比特长和文件内容后拼接文件名与哈希值;
模块3.2,用于根据用户输入信息计算种子空间,源文件划分数据包,记为A,原文件比特长生成哈希值后拼接成一个数,划分数据包,记为B;
模块3.3,用于利用大喷泉码对A进行编码;
模块3.4,用于采用MRC算法将大喷泉码编码生成的编码数据转换成DNA序列,结合用户输入的规避序列,自动编码输出不含指定规避序列的DNA序列;
模块3.5,用于将DNA序列与规定长度进行比较;
若大于规定长度,则丢弃,则回转执行模块3.3;
若小于规定长度,则采用小喷泉码编码将DNA序列填充为等长;然后执行模块3.6;
若等于规定长度,则执行模块3.6;
模块3.6,用于添加纠错编码,输出DNA序列;
模块3.7,用于判断种子空间是否用尽;
若是,则种子空间加1,然后回转执行模块3.2;
若否,则执行下述模块3.8;
模块3.8,用于判断序列数是否到达要求;
若是,则本流程结束;
若否,则回转执行模块3.3。
8.根据权利要求6所述的基于大小喷泉码及MRC算法利用DNA进行信息存储系统,其特征在于,模块5包括以下子模块:
模块5.1,用于将DNA序列利用纠错编码筛选出所有合格的DNA序列;
模块5.2,用于按照种子空间,取所有序列的头部作为随机种子;
模块5.3,用于采用MRC算法解码DNA序列,剩余部分转换成二进制数据,为小喷泉码数据;
模块5.4,用于小喷泉码尝试解码;
模块5.5,用于判断是否解码成功;
若是,则执行模块5.6;
若否,则执行模块5.12;
模块5.6,用于小喷泉码末尾哈希值进行自校验;
模块5.7,用于判断自校验是否成功;
若是,则执行模块5.8;
若否,则执行模块5.12;
模块5.8,用于确定种子空间,利用小喷泉码结果进行大喷泉码解码;
模块5.9,用于判断解码是否成功;
若是,则执行模块5.10;
若否,则给出解码失败原因为DNA序列数量不够,本流程结束;
模块5.10,用于大喷泉码解码数据进行哈希自校验;
模块5.11,用于判断哈希自校验是否成功;
若是,则解码成功,本流程结束;
若否,则给出解码失败原因为DNA变异,有错误序列参与解码,本流程结束;
模块5.12,用于判断种子空间是否达到预定的上限;
若是,则解码失败,给出解码失败原因为序列数量不够或基因变异有错误序列参与解码,本流程结束;
若否,则种子空间加1,并回转执行模块5.2。
9.根据权利要求6所述的基于大小喷泉码及MRC算法利用DNA进行信息存储系统,其特征在于:模块5中,喷泉码解码使用线性消解法与高斯消元法组合的方式,先用线性消解法,利用1度的数据包快速解出一些数据,再利用高斯消元法去解剩余的因缺少1度而无法继续解码的数据;从大喷泉码解码出的数据末尾截取哈希值,再对剩余的数据使用与编码相同的哈希算法生成哈希值进行自校验,通过自校验后,从剩余数据的末尾截取与编码约定的字节长作为文件名,剩余部分即为源文件内容,保存到文件中即恢复出存储的源文件。
10.根据权利要求6-9任意一项所述的基于大小喷泉码及MRC算法利用DNA进行信息存储系统,其特征在于:所述MRC算法,分为编码和解码两个过程;
所述MRC算法的编码过程采用了变进制的编码思想,设待编码的数据为D,规避序列集合为B,编码生成的DNA序列的S,则编码算法步骤为:
(5)将编码生成的DNA序列与所有的规避序列比对,确定下一次编码可选择的所有碱基集合M;
(6)可选择的碱基集合长度为R,计算d=DmodR;
(8)重复上述步骤(1)-(3),直到D为0,返回编码的DNA序列S;
所述MRC算法的解码过程为编码算法的逆过程,设待解码的DNA序列为S,规避序列集合为B,解码输出的数据为D,i=0,则解码算法步骤为:
(1)将待解码的DNA序列与所有的规避序列比对,确定当前碱基Si在经过所有规避序列比对后的所有可选择碱基M;
(2)可选择的碱基序列长度为R,计算D=D×R;
(3)计算index=M(Si),D=D+index,i=i+1;
(4)重复上述步骤(1)-(3),直到i=len(S)为0,返回解码结果D。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211633602.1A CN116187435B (zh) | 2022-12-19 | 2022-12-19 | 基于大小喷泉码及mrc算法利用dna进行信息存储方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211633602.1A CN116187435B (zh) | 2022-12-19 | 2022-12-19 | 基于大小喷泉码及mrc算法利用dna进行信息存储方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116187435A true CN116187435A (zh) | 2023-05-30 |
CN116187435B CN116187435B (zh) | 2024-01-05 |
Family
ID=86451424
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211633602.1A Active CN116187435B (zh) | 2022-12-19 | 2022-12-19 | 基于大小喷泉码及mrc算法利用dna进行信息存储方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116187435B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116187435B (zh) * | 2022-12-19 | 2024-01-05 | 武汉大学 | 基于大小喷泉码及mrc算法利用dna进行信息存储方法及系统 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103200088A (zh) * | 2013-04-11 | 2013-07-10 | 哈尔滨工业大学 | 一种基于喷泉编码下的改进型mmrs固定中继节点选择的信号传输方法 |
WO2020254428A2 (en) * | 2019-06-19 | 2020-12-24 | Eth Zurich | Functional materials with embedded memory using sequence-controlled polymer-based storage |
KR102339723B1 (ko) * | 2019-08-21 | 2021-12-15 | 서울대학교산학협력단 | Dna 저장 장치의 연성 정보 기반 복호화 방법, 프로그램 및 장치 |
CN111091876B (zh) * | 2019-12-16 | 2024-05-17 | 中国科学院深圳先进技术研究院 | 一种dna存储方法、系统及电子设备 |
CN111273998B (zh) * | 2020-01-19 | 2022-08-12 | 苏州浪潮智能科技有限公司 | 一种基于喷泉码与网络编码的虚拟机动态迁移方法及系统 |
WO2021243605A1 (zh) * | 2020-06-03 | 2021-12-09 | 深圳华大生命科学研究院 | 生成dna存储编解码规则的方法和装置及dna存储编解码方法和装置 |
WO2022109879A1 (zh) * | 2020-11-25 | 2022-06-02 | 中国科学院深圳先进技术研究院 | 用于dna数据存储的二进制信息到碱基序列的编解码方法和编解码装置 |
WO2022120626A1 (zh) * | 2020-12-09 | 2022-06-16 | 中国科学院深圳先进技术研究院 | 基于dna的数据存储方法、数据恢复方法、装置及终端设备 |
CN114328000B (zh) * | 2022-01-10 | 2022-08-23 | 天津大学 | 1型2型分段纠错内码的dna存储级联编码与解码方法 |
CN114678074A (zh) * | 2022-04-11 | 2022-06-28 | 大连大学 | 一种隐藏寻址的dna存储编码设计方法 |
CN114974429A (zh) * | 2022-06-22 | 2022-08-30 | 任兆瑞 | 一种基于十进制的dna存储编码方法、设备及可读存储介质 |
CN115459781A (zh) * | 2022-08-25 | 2022-12-09 | 东南大学 | 一种基于静态交织编码的长序列dna存储编码方法 |
CN116187435B (zh) * | 2022-12-19 | 2024-01-05 | 武汉大学 | 基于大小喷泉码及mrc算法利用dna进行信息存储方法及系统 |
-
2022
- 2022-12-19 CN CN202211633602.1A patent/CN116187435B/zh active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116187435B (zh) * | 2022-12-19 | 2024-01-05 | 武汉大学 | 基于大小喷泉码及mrc算法利用dna进行信息存储方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116187435B (zh) | 2024-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kiah et al. | Codes for DNA sequence profiles | |
Wang et al. | Construction of bio-constrained code for DNA data storage | |
Sala et al. | Exact reconstruction from insertions in synchronization codes | |
US20180046921A1 (en) | Code generation method, code generating apparatus and computer readable storage medium | |
JP3923617B2 (ja) | 誤り訂正符号を有する情報ビットの変換方法およびこの方法を実行する符号化器と復号化器 | |
CN108390740B (zh) | 一种信息的传输方法、译码方法和装置 | |
CN116187435B (zh) | 基于大小喷泉码及mrc算法利用dna进行信息存储方法及系统 | |
KR101969848B1 (ko) | 유전자 데이터를 압축하는 방법 및 장치 | |
Lenz et al. | Bounds and constructions for multi-symbol duplication error correcting codes | |
KR20150092585A (ko) | 이진 영상에 기반한 유전체 데이터 압축 방법 및 장치 | |
CN110995391A (zh) | 隔离网络中数据的传输方法、服务端及终端 | |
Schwarz et al. | NOREC4DNA: using near-optimal rateless erasure codes for DNA storage | |
CN114253484B (zh) | 一种大数据云存储服务器 | |
CN116226049B (zh) | 基于大小喷泉码利用dna进行信息存储的方法、系统及设备 | |
CN111243670A (zh) | 一种满足生物约束的dna信息存储编码方法 | |
CN113687976B (zh) | 面向dna信息存储的编码和解码方法与装置 | |
CN110808739A (zh) | 一种信源符号概率分布未知的二元编码方法及装置 | |
Wu et al. | HD-code: End-to-end high density code for DNA storage | |
Gil et al. | Decoding of nanopore-sequenced synthetic DNA storing digital images | |
CN113037669B (zh) | 卫星互联网中的小块编码方法及装置 | |
CN105871508B (zh) | 一种网络编解码方法及系统 | |
CN116366074B (zh) | 基于二元扩域及提高满度比的lt码混合编解码方法及系统 | |
CN113611364B (zh) | 面向dna存储的dna序列处理方法、装置与电子设备 | |
JP4224818B2 (ja) | 符号化方法及び符号化装置並びに復号方法及び復号装置 | |
Tang et al. | Correcting multiple short duplication and substitution errors |
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 |