CN110867213B - 一种dna数据的存储方法和装置 - Google Patents
一种dna数据的存储方法和装置 Download PDFInfo
- Publication number
- CN110867213B CN110867213B CN201810986270.2A CN201810986270A CN110867213B CN 110867213 B CN110867213 B CN 110867213B CN 201810986270 A CN201810986270 A CN 201810986270A CN 110867213 B CN110867213 B CN 110867213B
- Authority
- CN
- China
- Prior art keywords
- base
- factor
- factors
- mapping
- mapped
- 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
- 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
- G16B50/30—Data warehousing; Computing architectures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Biophysics (AREA)
- Databases & Information Systems (AREA)
- Bioethics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Biotechnology (AREA)
- Evolutionary Biology (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Spectroscopy & Molecular Physics (AREA)
- Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请提供一种DNA数据存储的方法和装置,可以实现将二进制数据转换为碱基序列,进而合成DNA分子进行存储。在当前的DNA编码的方法中,难以控制胞嘧啶和鸟嘌呤的比例,导致合成的DNA分子在合成或测序过程中可能发生碱基的删除、插入、替换以及丢失错误等问题。本申请所提供的DNA数据存储的方法,在将二进制数据转换成碱基序列时,能够在保证碱基的存储密度以及编码效率的前提下,控制胞嘧啶和鸟嘌呤的比例,从而提高所生成的有效碱基序列的比例。
Description
技术领域
本发明涉及数据存储技术领域,特别涉及一种DNA数据的存储方法和装置。
背景技术
数据时代对于存储能力有着很高的需求,而现有存储介质普遍存在着占用空间大以及数据保存时间不长等缺陷。随着生物技术的发展,研究者发现可以使用脱氧核糖核酸(英文全称:Deoxyribonucleic Acid,简称:DNA)作为数据存储的媒介。且DNA作为存储介质具有存储量大以及保存时间长等优点,据研究统计,1克DNA能够存储大约2PB大小的数据,而且用DNA存储数据的保存时间可能长达数千年。
DNA分子具有四种碱基,它们分别是:腺嘌呤A(Adenine)、胞嘧啶C(Cytosine)、鸟嘌呤G(Guanine)和胸腺嘧啶T(Thymine)。基于DNA的数据存储技术是利用上述四种碱基序列来表示二进制“0”和“1”组成的数据序列,这个过程被称为编码。而将碱基序列转换成二进制序列的过程,则称为解码。当二进制数据转换成碱基序列之后,通过DNA合称技术生成单链的DNA分子结构保存。生成的单链DNA分子可以通过DNA测序技术,检测出单链DNA分子中的四种碱基组成的序列,并通过解码机制得出最终的二进制数据流。
然而,在上述过程中,对于DNA的合成和测序,DNA分子有可能发生碱基的删除、插入、替换以及丢失错误等问题,从而使得保存的数据出错或者丢失。当DNA分子中出现过长的连续相同碱基时,例如在一段碱基序列中连续出现多个鸟嘌呤,形成GGGGG,DNA分子中碱基的替换和删除的错误概率非常明显。目前DNA合成中连续相同碱基可以接受的长度为3。为了解决编码过程中连续相同碱基长度的问题,业界提出了循环编码算法,该算法主要思想是将二进制数据转换为三进制编码,再通过循环编码使得每两个相邻的碱基都不相同。然而循环编码算法可能会导致胞嘧啶和鸟嘌呤比例(简称:CG比例)过高的问题,从而导致保存在DNA中的数据出错或者丢失。
发明内容
本发明提供了一种DNA数据的存储方法和装置,在将二进制数据转换成碱基序列时,能够在保证碱基的存储密度以及编码效率的前提下,限制连续相同碱基长度以及控制CG比例,从而提高所生成的有效碱基序列的比例。
第一方面,本申请提供一种DNA数据编码方法,该方法用于计算机装置,用于将二进制数据编码为DNA碱基序列,包括:获取待编码的二进制数据;获取编码块,该编码块包括至多N种编码因子,其中,N种编码因子中的第n种编码因子包括1个单映射碱基因子和n个双映射碱基因子,单映射碱基因子表示1个碱基对应1个比特位,其中,腺嘌呤和胸腺嘧啶对应不同的比特值,双映射碱基因子表示1个碱基对应两个比特位,其中每个碱基对应不同的比特值,编码块中双映射碱基因子的个数与所有碱基因子的个数的比值不超过预设的值,n为小于等于N的正整数;将二进制数据根据编码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行编码。
通过采用上述DNA数据编码方法,由于所使用的编码块中最大可能的CG比例不超过预设的值,当将待编码的二进制转换成DNA碱基序列后,该碱基序列所包含的CG比例也必然不超过预设值,因此可以控制DNA碱基序列中的CG比例,提高所生成的有效碱基序列的比例。
在本申请的第一方面,一种可能的实现方式是,将二进制数据根据编码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行编码,包括:根据编码块中的单映射碱基因子及双映射碱基因子顺序找到每个单映射碱基因子及每个双映射碱基因子在二进制数据中对应的比特值;根据每个双映射碱基因子对应的比特值,将双映射碱基因子对应的比特值转换为对应的碱基;根据每个单映射碱基因子对应的比特值,将单映射碱基因子对应的比特值转换为对应的碱基。通过采用上述方法,有利于提高编码的效率。
在本申请的第一方面,另一种可能的实现方式是,单映射碱基因子表示的胞嘧啶和鸟嘌呤对应不同的比特值,根据每个单映射碱基因子对应的比特值,将单映射碱基因子对应的比特值转换为对应的碱基包括:将单映射碱基因子对应的比特值转换为腺嘌呤和胸腺嘧啶;当单映射碱基因子后面相邻的碱基是腺嘌呤或胸腺嘧啶,将单映射碱基因子对应比特值转换为胞嘧啶或鸟嘌呤。通过这种方法,可以在连续出现的相同碱基的个数不超过预设值的情况下,尽可能的减少胞嘧啶和鸟嘌呤,有利于控制CG比例,提高所生成的有效碱基序列的比例。
在本申请的第一方面,另一种可能的实现方式是,根据每个单映射碱基因子对应的比特值,将单映射碱基因子对应的比特值转换为对应的碱基包括:在按照从前往后的顺序对二进制数据进行编码时,当单映射碱基因子的前面与该单映射碱基因子相邻连续出现N个双映射碱基因子时,将单映射碱基因子对应的比特值根据单比特碱基中枢映射关系进行转换,其中,在单比特碱基中枢映射关系中,单映射碱基因子对应的碱基根据单映射碱基因子对应的比特值及单映射碱基因子对应的碱基的前一个碱基和后一个碱基确定,且单映射碱基因子对应的碱基与前一个碱基和后一个碱基是不同的碱基。通过这种方法,可以进一步确保连续出现的相同碱基的个数不超过预设值,进而提高所生成的有效碱基序列的比例。
在本申请的第一方面,另一种可能的实现方式是,获取编码块包括:调整至多N种编码因子中每种编码因子的数量以构成编码因子组合;计算编码因子组合中双映射碱基因子的个数与所有碱基因子个数的比例;当编码因子组合中双映射碱基因子的个数与所有碱基因子的个数的比例不超过预设值时,将该编码因子组合作为编码块;当编码因子组合中双映射碱基因子的个数与所有碱基因子的个数的比例超过预设值时,重新调整至多N种编码因子中每种编码因子的数量。通过这种做法,可以使得编码块中最大可能的CG比例小于预设的最大CG比例,进而提高所生成的有效碱基序列的比例。
在本申请的第一方面,另一种可能的实现方式是,编码块对应的比特位的数量为8的倍数;将二进制数据根据编码块中的单映射碱基与双映射碱基的顺序以及单映射碱基对应的比特值与双映射碱基对应的比特值进行编码,包括:将二进制数据分成多个比特段,每个比特段所包含的比特位的数量是8的倍数。通过这种方法,可以使得同一字节的数据对应同一个编码块和比特段,从而提供编码的稳定性。
在本申请的第一方面,另一种可能的实现方式是,将二进制数据根据编码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行编码,还包括:将比特段根据编码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行编码;当比特段未编码部分包含的比特位的数量小于编码块对应的比特位的数量时,将比特段未编码部分根据单映射碱基因子对应的比特值以及至多M种编码因子组成的编码因子组合编码成碱基序列,其中,至多M种编码因子中每一种编码因子包含的双映射碱基因子的个数与所有碱基因子的个数的比例不超过预设值。通过这种方法,使得本申请所提供的编码方法可以适应任何长度的待编码数据。
第二方面,本申请提供一种DNA数据解码方法,该方法用于计算机装置,用于将DNA碱基序列解码为二进制数据,包括:获取待解码的DNA碱基序列;获取解码块,该解码块包括至多N种解码因子,其中,N种解码因子中的第n种解码因子包括1个单映射碱基因子和n个双映射碱基因子,单映射碱基因子表示1个碱基对应1个比特位,其中,腺嘌呤和胸腺嘧啶对应不同的比特值,双映射碱基因子表示1个碱基对应两个比特位,其中每个碱基对应不同的比特值,解码块中双映射碱基因子的个数与所有碱基因子的个数不超过预设值,n为小于等于N的正整数;将DNA碱基序列根据解码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行解码。
在本申请的第二方面,一种可能的实现方式是,将DNA碱基序列根据解码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行解码,包括:根据解码块中的单映射碱基因子及双映射碱基因子顺序找到每个单映射碱基因子及每个双映射碱基因子在DNA碱基序列中对应的碱基;根据每个双映射碱基因子对应的比特值,将双映射碱基因子对应的碱基转换为二进制数据;根据每个单映射碱基因子对应的比特值,将单映射碱基因子对应的碱基转换成二进制数据。
在本申请的第二方面,另一种可能的实现方式是,根据每个单映射碱基因子对应的比特值,将所述单映射碱基因子对应的碱基转换成二进制数据,包括:在按照从前往后的顺序对DNA碱基序列进行解码时,当单映射碱基因子的前面与单映射碱基因子相邻连续出现N个双映射碱基因子时,将单映射碱基因子根据单比特碱基中枢映射关系进行转换,其中,在单比特碱基中枢映射关系中,单映射碱基因子对应的碱基对应的比特值根据单映射碱基因子对应的碱基的前一个碱基和后一个碱基确定,且单映射碱基因子对应的碱基与前一个碱基和后一个碱基是不同的碱基。
在本申请的第二方面,另一种可能的实现方式是,将DNA碱基序列根据解码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行解码,还包括:将DNA碱基序列根据解码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行解码;当DNA碱基序列未解码部分包含的碱基数量小于解码块对应的碱基因子数量时,获取解码信息,并根据该解码信息进行解码,其中,解码信息包含未解码部分在编码时所使用的编码因子组合,编码因子组合包括单映射碱基因子以及至多M种编码因子,其中,至多M种编码因子中每一种编码因子包含的双映射碱基因子的个数与所有碱基因子的个数的比例不超过预设值。
第三方面,本申请提供一种DNA数据编码装置,其特征在于,该装置用于将二进制数据编码为DNA碱基序列,包括:获取模块,用于获取待编码的二进制数据和编码块,该编码块包括至多N种编码因子,其中,该N种编码因子中的第n种编码因子包括1个单映射碱基因子和n个双映射碱基因子,该单映射碱基因子表示1个碱基对应1个比特位,其中,腺嘌呤和胸腺嘧啶对应不同的比特值,编码块中双映射碱基因子的个数与所有碱基因子的个数的比值不超过预设的值。n为小于等于N的正整数;编码模块,用于将二进制数据根据编码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行编码。
在本申请的第三方面,一种可能的实现方式是,将二进制数据根据编码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行编码,包括:根据编码块中的单映射碱基因子以及双映射碱基因子顺序找到每个单映射碱基碱基因子及双映射碱基因子在二进制数据中对应的比特值;根据每个双映射碱基因子对应的比特值,将双映射碱基因子对应的比特值转换成对应的碱基;根据每个单映射碱基因子对应的比特值,将单映射碱基因子对应的比特值转换成对应的碱基。
在本申请的第三方面,另一种可能的实现方式是,单映射碱基因子表示的胞嘧啶和鸟嘌呤对应不同的比特值,根据每个单映射碱基因子对应的比特值,将单映射碱基因子对应的比特值转换为对应的碱基包括:将单映射碱基因子对应的比特值转换为腺嘌呤和胸腺嘧啶;当单映射碱基因子后面相连的碱基是腺嘌呤或胸腺嘧啶,将单映射碱基因子对应的比特值转换为胞嘧啶或鸟嘌呤。
在本申请的第三方面,另一种可能的实现方式是,根据每个单映射碱基因子对应的比特值,将单映射碱基因子对应的比特值转换为对应的碱基包括:在按照从前往后的顺序对二进制数据进行编码时,当单映射碱基因子的前面与单映射碱基因子相邻连续出现N个双映射碱基因子时,将单映射碱基因子对应的比特值根据单比特碱基中枢映射关系进行转换,其中,在单比特碱基中枢映射关系中,单映射碱基因子对应的碱基根据单映射碱基因子对应的比特值及单映射碱基因子对应的碱基的前一个碱基和后一个碱基确定,且单映射碱基因子对应的碱基与前一个碱基和后一个碱基是不同的碱基。
在本申请的第三方面,另一种可能的实现方式是,获取编码块包括:调整至多N种编码因子中每种编码因子的数量以构成编码因子组合;计算编码因子组合中双映射碱基因子的个数和所有碱基因子个数的比例;当编码因子组合中双映射碱基因子的个数与所有碱基因子的个数的比例不超过预设值时,将该编码因子组合作为编码块;当该编码因子组合中双映射碱基因子的个数与所有碱基因子的个数的比例超过预设值时,重新调整至多N种编码因子中每种编码因子的数量。
在本申请的第三方面,另一种可能的实现方式是,将二进制数据根据编码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行编码,还包括:将比特段根据编码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行编码;当比特段未编码部分包含的比特位的数量小于编码块对应的比特位的数量时,将比特段未编码部分根据单映射碱基因子对应的比特值以及至多M种编码因子组成的编码因子组合编码成碱基序列,其中,至多M种编码因子中每一种编码因子包含的双映射碱基因子的个数与所有碱基因子的个数的比例不超过预设值。
第四方面,本申请提供一种DNA数据解码装置,该装置用于将DNA碱基序列解码为二进制数据,包括:获取模块,用于获取待解码的DNA碱基序列和解码块,该解码块包括至多N种解码因子,其中,N种解码因子中的第n种编码因子包括1个单映射碱基因子和n个双映射碱基因子,单映射碱基因子表示1个碱基对应1个比特位,其中,腺嘌呤和胸腺嘧啶对应不同的比特值,所述编码块中双映射碱基因子的个数与所有碱基因子的个数的比值不超过预设的值,n为小于等于N的正整数;解码模块,用于将DNA碱基序列根据解码块中的单映射碱基因子和双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行解码。
在本申请的第四方面,一种可能的实现方式是,将DNA碱基序列根据解码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行解码,包括:根据编码块中的单映射碱基因子及双映射碱基因子顺序找到每个单映射碱基因子及每个双映射碱基因子在DNA碱基序列中对应的碱基;根据每个双映射碱基因子对应的比特值,将双映射碱基因子对应的碱基转换为二进制数据;根据每个单映射碱基因子对应的比特值,将单映射碱基因子对应的碱基转换成二进制数据。
在本申请的第四方面,另一种可能的实现方式是,根据每个单映射碱基因子对应的比特值,将单映射碱基因子对应的碱基转换成二进制数据,包括:在按照从前往后的顺序对DNA碱基序列进行解码时,当单映射碱基因子的前面与该单映射碱基因子相邻连续出现N个双映射碱基因子时,将该单映射碱基因子根据单比特碱基中枢映射关系进行转换,其中,在单比特碱基中枢映射关系中,单映射碱基因子对应的比特值根据该单映射碱基因子对应的碱基的前一个碱基和后一个碱基确定,且该单映射碱基因子对应的碱基与前一个碱基和后一个碱基是不同的碱基。
在本申请的第四方面,另一种可能的实现方式是,将DNA碱基序列根据解码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行解码,包括:将DNA碱基序列根据解码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行解码;当该DNA碱基序列未解码部分包含的碱基数量小于编码块对应的碱基因子数量时,获取解码信息,并根据该解码信息进行进行解码,其中,解码信息包含未解码部分在编码时所使用的编码因子组合,编码因子组合包括单映射碱基因子以及至多M种编码因子,其中,至多M种编码因子中每一种编码因子包含的双映射碱基因子的个数与所有碱基因子的个数的比例不超过预设值。
第五方面,本申请提供一种计算机装置,该计算机装置包括处理器和存储器,存储器存储程序代码,处理器用于调用存储器中的程序代码执行如第一方面所述的DNA数据的编码方法。
第六方面,本申请提供一种计算机装置,该计算机装置包括处理器和存储器,存储器存储程序代码,处理器用于调用存储器中的程序代码执行如第二方面所述的DNA数据的解码方法。
附图说明
图1是现有技术中循环编码算法的流程示意图。
图2是本申请的实施例中DNA数据编码系统的架构的示意图。
图3是本申请的实施例中N种编码因子的示意图。
图4是本申请的实施例中设置编码块的流程示意图。
图5是本申请的实施例中对二进制数据进行编码的流程示意图。
图6是本申请的实施例中二进制数据与各个编码因子对应关系的示意图。
图7是本申请的实施例中编码过程中的第一中间结果的示意图。
图8是本申请的实施例中编码过程中的第二中间结果的示意图。
图9是本申请的实施例中编码结果的示意图。
图10是本申请的实施例中对碱基序列进行解码的流程示意图。
图11是本申请的实施例中DNA数据编码系统的模块示意图。
图12是本申请的实施例中DNA数据解码系统的模块示意图。
图13是本申请的实施例中计算机装置的结构示意图。
具体实施方式
在DNA存储领域,当DNA分子中出现过长的连续相同碱基时,会增加DNA分子在DNA的合成和测序过程中所可能发生过的碱基的删除、插入、替换以及丢失错误等问题,从而使得保存的数据出错或者丢失。图1是现有技术中解决DNA分子中可能出现的过长的连续相同碱基的循环编码算法的流程图。如图1所示,循环编码算法的步骤如下:
S101:将待编码的数据转换为对应的美国信息交换标准代码(英文全称:AmericanStandard Code for Information Interchange,简称ASCII)。ASCII码是基于拉丁字母的一套电脑编码系统,用8比特大小的二进制数据来表示所有的大写和小写字母,数字0到9、标点符号,以及在美式英语中使用的特殊控制字符。
S102:通过Huffman编码将ASCII码转换成5个三进制编码。
S103:通过循环编码将三进制编码转换成DNA碱基序列。如表1所示,所谓循环编码,是根据要进行编码的比特位的值以及当前的碱基种类,来确定下一碱基的种类。由于共有A、T、C、G四种碱基,因此可以使与当前碱基不同的另外三种碱基分别表示值为0、1和2。例如,如果当前碱基种类为A,下一个碱基为C时表示0,下一个碱基为G时表示1,下一个碱基为T时表示2。采用这种方法,可以使得编码形成的DNA分子中不会出现连续相同的碱基。
S104:根据生成的碱基序列合成DNA单链,DNA编码完成。
表1循环编码表
虽然循环编码算法保证了编码形成的DNA分子中不会出现连续相同的碱基,但由于编码的碱基种类是由数据决定的。例如,当前一个碱基是C时,之后出现了0、2交替的数据流,会导致碱基序列中的GC比例过高,增加了DNA分子在合成和测序过程中发生错误的可能性。
为了解决循环编码算法可能导致的GC比例过高的问题,本申请提供一种DNA存储编码方法,能够在保证碱基的存储密度和编码效率的前提下,控制编码后生成的DNA碱基序列中的CG比例。
图2是本申请的实施例中DNA数据编码系统的架构的示意图。如图2所示的DNA编码系统200,该DNA编码系统200包括发送端201、网络202、接收端203、DNA链合成装置204和存储介质205。发送端201和接收端203均为计算机装置,通过网络202相连。当发送端201有需要进行DNA编码的数据时,将该数据发送给接收端203。接收端203也可以自身存有需要进行DNA编码的数据或者通过存储介质205获得需要进行DNA编码的数据,本申请不对此进行限定。接收端203可以执行本申请所提供的DNA编码方法,将待编码的数据转换成碱基序列,再将碱基序列发送给DNA链合成装置204,使得DNA链合成装置204根据生成的碱基序列合成DNA链,以用来存储数据。上述DNA编码系统为实现本申请所提供的DNA编码方法的一种系统架构的示例,不应作为对本申请的一种限定。
在本申请所提供的DNA编码方法中,将二进制数据换成碱基序列是通过单比特-碱基映射和双比特-碱基映射来实现的。所谓单比特-碱基映射,是指每个碱基对应一个比特位。基于控制编码产生的鸟嘌呤和胞嘧啶所占总的碱基序列的比例,在本申请的实施例中,胞嘧啶和鸟嘌呤对应不同的比特值,腺嘌呤和胸腺嘧啶对应不同的比特值。表2所示的单比特-碱基映射表是本申请所提供的一种单映射碱基因子(用Y1表示单映射碱基因子,下同)的映射方式,如表2所示,碱基A或C对应比特位的值为0,碱基T或G对应比特位的值为1。根据上述单映射碱基因子的映射方式,当需要对应值为1的比特位时,既可以选择碱基T,也可以选择碱基G,通常情况下优先选择碱基T来对应值为1的比特位,只有在后面相邻的双映射碱基因子也为T时,才选择碱基G来对应值为1的比特位,从而在编码因子中起到控制GC比例的作用。
单映射碱基(Y1) | A或C | T或G |
单比特的值 | 0 | 1 |
表2单比特-碱基映射表
双比特-碱基映射,指的是每个碱基对应两个比特位。两个比特位的值可以有00、01、10、11等四种组合,而四种碱基可以分别对应其中的一组值。表3所示的双比特-碱基映射表是本申请所提供的一种双映射碱基因子(用X2表示双映射碱基因子,下同)的映射方式,如表3所示,碱基A、T、C、G分别表示00、01、10、11。通过双比特-碱基映射,每个碱基可以对应两个比特,从而在编码因子中起到了提高整体存储密度的作用。
双映射碱基(X2) | A | T | C | G |
双比特的值 | 00 | 01 | 10 | 11 |
表3双比特-碱基映射表
需要指出的是,表2所示的单比特-碱基的映射方式和表3所示的双比特-碱基的映射方式只是本申请实施例中的一个示例,不应理解为限定。
将若干个单映射碱基因子和双映射碱基因子结合起来可以形成编码因子,作为将二进制数据转换为碱基序列的基本单位。为了保证DNA存储的效率,每个编码因子由1个单映射碱基因子和n个双映射碱基因子组成。因为单比特-碱基映射中对于相同比特位的值有两种对应关系,因此该单映射碱基因子可以与相邻的双映射碱基因子不同,并根据当前编码因子的GC比例,设定碱基的种类。而双比特-碱基映射中对于相同的比特值只有一种对应关系,在极端情况下,会出现一个编码因子中所有的双映射碱基因子转换后的碱基的种类都是相同的情形,因此每个编码因子中双映射碱基因子的数量n不能大于预设的相同碱基连续出现的最大个数N。在这种情况下,如图3所示,共有N种编码因子,每种编码因子包含1个单映射碱基因子和n个双映射碱基因子,其中n为小于等于N的正整数。为了方便起见,在描述编码因子时,将包含n个双映射碱基因子的编码因子称为第n编码因子,例如将包含1个单映射碱基因子和2个双映射碱基因子的编码因子称为第二编码因子。
图4是本申请的实施例中设置编码块的流程示意图。如图4所示,设置编码块的流程包括以下步骤:
S401:选择每种编码因子的数量。
本实施例中,将二进制数据转换成碱基序列主要是以编码块作为单位进行转换的,而设置编码块时,首先要决定编码块所包含的编码因子的种类以及每种编码因子的数量。由于单映射碱基因子在编码因子中起到控制CG比例的作用,双映射碱基因子在编码因子中起到提高整体存储密度的作用,因此对于包含双映射碱基因子个数越少的编码因子来说,其优点在于有助于控制总体GC比例;对于包含双映射碱基因子个数越多的编码因子来说,其优点有助于提高整体存储密度。因此,需要适当选择每种编码因子的数量以组成编码块,以在控制整体GC比例和提高整体存储密度之间达到平衡。
在本申请的实施例中,可以通过各种方式预设每种编码因子的个数,例如,可以随机生成N个非负整数,分别作为第一至第N编码因子的个数。当某一种编码因子对应的个数为0时,代表未选择该种编码因子。
可选的,在本实施例的一种可能的实现方式中,为了提高设置编码块的效率,所选择的每组编码因子的个数不超过一个值,例如,在选择每种编码因子的个数时,所选择的第一编码因子、第二编码因子和第三编码因子的数量均不超过5个。
S402:计算所选择的编码因子组合可能的最大GC比例。
当确定每种编码因子的个数后,计算包括这些编码因子所形成的编码因子组合的可能的最大GC比例。由于单映射碱基因子,对于相同的比特位的值有两种对应方法,例如,可以用碱基A或C来对应值为0的比特位,用碱基T或G来对应值为1的比特位。在这种情况下,当需要将值为0的比特位转换为碱基时,可以选择转换成碱基A,从而降低GC比例。而双映射碱基因子对于相同的比特位的值只有一种对应方式,因此在极端情况下,可能会出现编码因子中所包含的双映射碱基因子都是C或者G。那么对于第n编码因子来说,其可能的最大GC比例为n/(n+1)。
对于整个编码因子组合来说,其可能的最大GC比例为该编码块包含的双映射碱基因子的个数与所有碱基因子的个数的比值。例如,当预设的相同碱基连续出现的最大个数N为3时,可以用来组成编码块的编码因子的种类有第一编码因子、第二编码因子和第三编码因子,假定选择的第一编码因子、第二编码因子和第三编码因子的个数分别为1个、2个、4个时,所组成的编码块的可能的最大GC比例为(1*1+2*2+3*4)/(2*1+3*2+4*4)=17/24。
S403:判断所选择的编码因子组合可能的最大GC比例是否超过预设最大GC比例。
当计算完所选择的不同数量的编码因子组合可能的最大GC比例时,将该结果与预设最大GC比例进行比较。当该结果没有超过预设的最大GC比例时,则说明当前所选择的不同数量的编码因子所组成的编码块的最大GC比例符合要求,继续执行S404;当该结果超过预设的最大GC比例时,则需要重新选择每种编码因子的数量,以确保所选择的数量的每种编码因子所构成的编码块的GC比例不超过预设最大GC比例。
前述曾经提到,双映射碱基因子数量越少的编码因子,越有利于控制整体GC比例。因此,如果当前所选择的编码因子组合的最大GC比例超过了预设值时,可以针对性进行调整,增加第一编码因子和第二编码因子等双映射碱基因子数量少的编码因子的比例。
例如,当预设最大GC比例为70%时,1个第一编码因子、2个第二编码因子和4个第三编码因子的组合的最大GC比例为17/24,超过了预定值。因此需要重新确定各种编码因子的格式。例如,可以增加第一编码因子的个数,例如选择2个第一编码因子、2个第二编码因子和4个第三编码因子,此时所组成的编码因子组合的最大GC比例为18/26,小于预设最大GC比例,从而符合要求,继续进行步骤S404。
S404:判断上述编码因子组合所对应的比特数是否是8的倍数。
为了方便在接下来的过程中将二进制数据转换为碱基序列,可以使编码因子组合所承载的比特数是8的倍数,这样在对二进制数据进行分段转换时,可以使同一字节的比特位对应同一个编码块进行转换。当选择出的编码因子组合所对应的比特数不是8的倍数时,可以回到步骤S401重新选择各种编码因子的个数。
第一编码因子具有1个单映射碱基因子和1个双映射碱基因子,因此共对应3个比特位。同理,第二编码因子对应5个比特位,第三编码因子对应7个比特位。当选择2个第一编码因子、2个第二编码因子和4个第三编码因子,此时所组成的编码因子组合对应的比特数为44,不是8的倍数,需要回到S201重新选择各种编码因子的个数,以符合S403和S404提到的最大GC比例和编码因子组合所对应的比特数是8的倍数的限制。
例如,选择2个第一编码因子、1个第二编码因子和3个第三编码因子,此时可能的最大GC比例为13/22,所对应的比特数为32,符合要求,可以用来组合成编码块。
S405:将选择出来的编码因子组合成编码块。
当所选择的编码因子组合符合最大GC比例和编码因子组合所对应的比特数是8的倍数的限制时,以所述编码因子组合为合成编码块,该编码块将二进制数据编码为碱基序列的最小单位。其中,编码因子在编码块中的排列可以按照第一编码因子、第二编码因子到第N编码因子的顺序进行排列,也可以以每种编码因子为单位自由进行组合。例如,当将2个第一编码因子、1个第二编码因子、3个第三编码因子组合成编码块时,可以将2个第一编码因子排在编码块的前面,接着是1个第三编码因子,最后是3个第三编码因子,也可以以编码因子为单位进行自由组合,例如先排列2个第三编码因子,接着是2个第一编码因子,再接着1个第三编码因子,最后再接着1个第二编码因子。
需要指出的是,上述S401至S405的编号仅用来指代,并不意味着在本申请的实施例中,上述步骤需要按照特定顺序来执行。例如,可以先执行S404判断所选择的编码因子组合所对应的比特数是否是8的倍数,判断所选择的编码因子组合可能的最大GC比例是否超过预设最大GC比例。同时,上述S401至S405的步骤中,并不是每一个步骤都是必须的,例如,即使不执行S404判断所选择的编码因子组合所对应的比特数是否是8的倍数,本申请的实施例也可以解决技术问题,上述实施例不应理解为对本申请的限制。
图5是本申请的实施例中编码的流程示意图。如图5所示,将二进制数据编码为DNA碱基序列包含以下步骤:
S501:计算机装置获取待编码的二进制数据,并将二进制数据分为若干个比特段。
首先,计算机装置获取待编码的二进制数据,根据图2所示的系统架构图可知,对于待编码的二进制数据,可以是计算机装置通过接收其他计算机装置发来的数据,可以是计算机装置通过存储介质获得的数据,也可以是自身保存的数据。
由于待编码的二进制数据往往包含较多的比特位,因此通常会将该二进制数据分为多个比特段进行编码,其中,在之后根据碱基合成DNA分子时,一个比特段对应一个DNA分子单链。多个比特段之间既可以依次进行编码,即完成了一个比特段的编码再开始进行下一个比特段的编码,也可以采用并行编码的方式,同时对多个比特段进行编码,本申请的实施例不对此进行限定。
可选的,在本实施例的一种实现方式中,在划分比特段时,可以以字节为单位进行划为,即所划分的比特段所包括的比特位均为8的倍数。采用这种方法,可以使得相同字节的数据位于同一个比特段中,并在之后的DNA分子单链合成后位于同一个单链上。
S502:对一个比特段进行编码时,按照从前往后的顺序选取该比特段连续的比特位数量为L的一段,并将选取的该段对应设置好的编码块开始进行编码,其中,L指的是设置好的编码块所对应的比特位的数量。通过将比特段与编码块对应起来,可以确定每一个比特位是根据单比特-碱基映射进行转换或者是双比特-碱基映射进行转换,从而根据本申请的实施例所提供的编码方法将将二进制数据编码为碱基序列。以S405中提到的符合要求的编码块为例,该编码块包括2个第一编码因子、1个第二编码因子和3个第三编码因子,如果按照顺序排列的话,为Y1X2Y1X2Y1X2X2Y1X2X2X2Y1X2X2X2Y1X2X2X2,对应32个比特位的待转换的二进制数据。假设待转换的二进制数据中的32个比特位为01010101010101010101010101010101,则待编码的比特位与编码块中的每个编码因子的对应关系如图6所示。
S503:根据双比特-碱基映射表将双映射碱基因子转换为相应的碱基。
根据表3所示的双比特-碱基映射表将图6中的双映射碱基X2对应的比特位的值转换成相应的碱基,得到图7所示的第一中间转换结果。
S504:依次判断每一个单映射碱基的前面是否有N个连续的双映射碱基因子。
具体来说,在按照从前往后的顺序对所述二进制数据进行编码时,依次判断每一个单映射碱基因子的前面与该单映射碱基因子相邻是否连续出现N个双映射碱基因子。如果不是,对该单映射碱基因子执行步骤S305;如果是,则对该单映射碱基因子执行步骤S306。
S505:根据单比特-碱基映射表将单映射碱基因子转换为相应的碱基。
如果一个单映射碱基因子的前面没有N个连续的双映射碱基因子时,则将该单映射碱基因子对应的比特位的值根据单比特-碱基映射表转换为相应的碱基。根据表2所示的单比特-碱基映射表对图7中相应的单映射碱基因子进行转换,得到图8所示第二中间转换结果。
S506:根据单比特-中枢碱基映射表转换将单映射碱基因子转换为相应的碱基。
在单比特-中枢碱基映射表中,中枢碱基的碱基种类和比特位的值的对应关系是根据前驱碱基和后继碱基的种类决定的,其中,中枢碱基、前驱碱基和后继碱基分别指某个单映射碱基因子及其前一个碱基和后一个碱基。如果一个单映射碱基因子的前面有N个连续的双映射碱基因子时,在保证该单映射碱基因子与后继碱基的碱基种类不同的情况下,该单映射碱基因子的种类和前驱碱基也不相同才能确保连续出现的相同种类的碱基的个数不会超过N。因此,在单比特-中枢碱基映射表中,当前驱碱基和后继碱基的种类确定后,中枢碱基应该用与前驱碱基和后继碱基都不同的两种碱基分别来表示比特位的值为0或1。表4所示的是一种单比特中枢碱基映射表。需要指出的是,类似的单比特-中枢碱基映射表存在多种可能,表4仅为一种示例,不作为对本申请的限定。
表4单比特-中枢碱基映射表
如果一个单映射碱基因子的前面相邻出现N个连续的双映射碱基因子时,则将该单映射碱基因子对应的比特位根据表4所示的单比特-中枢碱基映射表转换为相应的碱基,得到如图9所示的碱基转换结果。
S507:判断当前比特段的未编码长度是否为小于L。
判断当前比特段的未编码长度是否小于L,当未编码的比特位的长度不小于L时,重复上述步骤S502-S506的流程,对当前比特段上另外一段L长度的一段比特位对应编码块开始进行编码。当未编码的比特段的长度小于L时,执行步骤S508。
S508:将该比特段中未编码部分的比特位根据单映射碱基因子和至多M种编码因子组成的编码因子组合编码成碱基序列。其中,至多M种编码因子中每一种编码因子所包含的双映射碱基因子的个数与该编码因子包含的所有碱基个数的比例不超过预设的最大CG比例。
如果当前比特段中未编码部分的比特位长度小于L时,则该部分无法通过对应设置好的编码块进行编码。如果采用单映射碱基和至多M种编码因子组成的编码因子组合对未编码部分进行编码时,由于该编码因子组合所包含的所有编码因子最大可能的CG比例均不超过预设的最大CG比例时,因此所转换成的碱基序列的CG含量也一定会小于预设的最大CG比例。当采用这种方式对比特位长度小于L的未编码部分进行编码时,需要一并保存相应的编码信息,该编码信息包含编码时所采用的编码因子以及顺序,以供解码时使用。该编码信息既可以保存在编码的计算机装置上,也可以编码成碱基序列,和该比特段一生成DNA分子单链。
在本申请的一个实施例中,如果所划分的比特段所包括的比特数和设置的编码块对应的比特数均为8的倍数,则此处未编码部分的比特位也必然是8的倍数。在这种情况下,可以利用第一编码因子和第二编码因子形成的编码因子组合对剩下的未编码部分进行编码。由于第一编码因子和第二编码因子分别对应3个比特位和5个比特位,合起来正好对应一个字节。采用这种方式进行编码,简化了剩下的未编码部分的比特段的编码过程。
S509:当该比特段编码完成后,判断二进制数据的所有比特段是否都已经编码完毕。如果还有比特段没有编码时,则按照S502-S508的流程对其进行编码。当所有的比特段都已经完成编码后,结束编码。
需要指出的是,上述步骤S501-S509仅仅为本申请的实施例中对于编码流程的示例,不意味着在本申请所保护的编码流程中,必须按照上述顺序依次执行每一个步骤。例如,在分别转换单映射碱基和双映射碱基所对应的比特位时,也可以先执行S504-S506,即先转换单映射碱基,再执行S503,即转换双映射碱基。
图10是本申请的实施例中解码的流程示意图。如图10所示,将DNA分子单链所包含的碱基序列解码为二进制数据包含以下步骤:
S1010:选择一个用于储存数据的DNA分子单链,读取其中的碱基序列,并根据读取的DNA碱基序列对其进行解码。
当对一段碱基序列进行解码时,根据解码块信息建立碱基序列与编码块的对应关系,其中,解码块信息为编码时所使用的编码块信息。具体来说,先按从前到后的顺序选取碱基序列中的Q个碱基,其中,Q是一个解码块所包含的碱基数量。通过将碱基序列和解码块对应起来,可以确定碱基序列中的每一个碱基对应的是单映射碱基因子还是双映射碱基因子,从而根据本申请的实施例所提供的映射关系将碱基序列解码成二进制数据。
S1020:根据双比特-碱基映射表,将双映射碱基因子对应的碱基转换为二进制数据。
S1030:依次判断每一个单映射碱基因子的前面是否相邻出现N个连续的双映射碱基因子。
具体来说,在按照从前往后的顺序对碱基序列进行解码时,依次判断每一个单映射碱基因子的前面与该单映射碱基因子相邻是否连续出现N个双映射碱基因子。如果不是,对该单映射碱基因子执行步骤S1030;如果是,对该单映射碱基因子执行步骤S1040。
S1040:根据单比特-碱基映射表,将单映射碱基因子对应的碱基转换成二进制数据。
如果一个单映射碱基因子的前面没有相邻出现N个连续的双映射碱基因子时,则将该单映射碱基因子对应的碱基根据表2所示的单比特-碱基映射表转换为相应的二进制数据。
S1050:根据单比特-中枢碱基映射表,将单映射碱基因子对应的碱基转换成二进制数据。
如果一个单映射碱基因子的前面有N个连续的双映射碱基因子时,则将该单映射碱基因子根据表4所示的单比特-中枢碱基映射表转换为相应的二进制数据。再根据单比特-中枢碱基映射表确定单映射碱基因子所对应的比特位的值时,需要参考该单映射碱基的前一个碱基和后一个碱基。例如,当采用表4所示的单比特-中枢碱基映射表将碱基C转换成二进制数据时,需要参考该碱基C的前一个碱基和后一个碱基,当其前一个碱基为T而后一个碱基为C时,查表可知,该碱基所对应的比特位的值为1。
S1060:判断当前碱基序列未解码的碱基数量是否小于Q。
判断当前碱基序列未解码的碱基数量是否小于Q。当未解码的碱基数量不小于Q时,重复上述流程,按照从前到后的顺序对未解码的Q个碱基进行解码。当未解码的碱基数量小于Q时,执行步骤S1070。
S1070:根据编码信息,解码当前碱基序列未编码的碱基。
在步骤S508中提到,当对比特位长度小于L的未编码部分进行编码时,需要一并保存相应的编码信息,该编码信息包含编码时所采用的编码因子以及顺序,以供解码时使用。则在步骤S1070中,读取该编码信息,根据该编码信息确定剩下的碱基在编码时所采用的映射关系,并据此作为解码信息进行解码。
需要指出的是,上述步骤S1010-S1070仅仅为本申请的实施例中对于解码流程的示例,并不意味着在本申请所保护的解码流程中,必须按照上述顺序依次执行每一个步骤。
图11是本申请的实施例所提供的一种DNA数据编码系统的模块示意图。如图11所示,编码系统1100用于将二进制数据编码为DNA碱基序列,包括获取模块1110和编码模块1120,其中:
获取模块1110,用于获取待编码的二进制数据和编码块,其中,编码块包括至多N种编码因子,N种编码因子中的第n种编码因子包括1个单映射碱基因子和n个双映射碱基因子,单映射碱基因子表示1个碱基对应1个比特位,其中,腺嘌呤和胸腺嘧啶对应不同的比特值,编码块中双映射碱基因子的个数与所有碱基因子的个数的比值不超过预设的值,n为小于等于N的正整数;
编码模块1120,用于将二进制数据根据编码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射因子对应的比特值与双映射碱基因子对应的比特值进行编码。
上述编码系统1100还用于执行如图4所示的设置编码块操作以及图5所示的编码操作,具体来说,获取模块1110可以用于执行S401-S405、S501等步骤,编码模块1120可以用于执行S502-S509等步骤,此处不再赘述。
图12是本申请的实施例所提供的一种DNA数据解码系统的模块示意图。如图11所示,解码系统1200用于将DNA碱基序列解码为二进制数据,包括获取模块解码1210和编码模块1220,其中:
获取模块1210,用于获取待解码的DNA碱基序列和解码块,解码块包括至多N种解码因子,其中,N种解码因子中的第n种解码因子包括1个单映射碱基因子和n个双映射碱基因子,单映射碱基因子表示1个碱基对应1个比特位,其中,腺嘌呤和胸腺嘧啶对应不同的比特值,双映射碱基因子表示1个碱基对应两个比特位,每个碱基对应不同的比特值,解码块中双映射碱基因子的个数与所有碱基因子的个数不超过预设值,n为小于等于N的正整数;
解码模块1220,用于将DNA碱基序列根据解码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行解码。
上述解码系统1200还用于执行如图4所示的设置编码块操作以及图10所示的解码操作,具体来说,获取模块1210可以用于执行S401-S405、S1010等步骤,解码模块1220可以用于执行S1020-S1070等步骤,此处不再赘述。
图13是本申请的实施例中计算机装置的结构示意图。
如图13所示,计算机系统包括主机1300,主机1300包括处理器1301,处理器1301与系统内存1305连接。处理器1301可以为中央处理器(英文全称:Central Processing Unit,缩写:CPU),图像处理器(英文全称:Graphics Processing Unit,缩写:GPU),现场可编程门阵列(英文全称:Field Programmable Gate Array,缩写:FPGA),或数字信号处理器(英文全称:Digital Signal Processor,缩写:DSP)等计算逻辑或以上任意计算逻辑的组合。处理器1301可以为单核处理器或多核处理器。
总线1309用于在主机1300的各部件之间传递信息,总线1309可以使用有线的连接方式或采用无线的连接方式,本申请并不对此进行限定。总线1309还连接有辅助存储器(英文:secondary storage)1302,输入/输出接口1303和通信接口1304。
辅助存储器1302一般也称为外存,辅助存储器1302的存储介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如光盘)、或者半导体介质(例如固态硬盘(英文全称:solid state disk,缩写:SSD))等。在一些实施例中,辅助存储器1302还可能进一步包括与处理器1301分离的远程存储器,例如通过通信接口1304和网络1311进行访问的网盘(包括网络文件系统(英文全称:Network File System,缩写:NFS)等网络或机群文件系统)。
输入/输出接口1303连接有输入/输出设备,用于接收输入的信息,输出操作结果。输入/输出设备可以为鼠标、键盘、显示器、或者光驱等。
通信接口1304使用例如但不限于收发器一类的收发装置,来实现与其他设备或网络1311之间的通信,通信接口1304可以通过有线或者无线的形式与网络1311互连。
本申请实施例的一些特征可以由处理器1301执行系统内存1305中的软件代码来完成/支持。系统内存1305可以包括一些软件,例如,操作系统1308(例如Darwin、RTXC、LINUX、UNIX、OS X、WINDOWS或嵌入式操作系统(例如Vxworks)),应用程序1307等。
此外,图13仅仅是一个计算机系统的例子,计算机系统可能包含相比于图13展示的更多或者更少的组件,或者有不同的组件配置方式。同时,图13中展示的各种组件可以用硬件、软件或者硬件与软件的结合方式实施。
Claims (20)
1.一种脱氧核糖核酸DNA数据编码方法,其特征在于,所述方法用于计算机装置,用于将二进制数据编码为DNA碱基序列,包括:
获取待编码的二进制数据;
获取编码块,所述编码块包括至多N种编码因子,其中,所述N种编码因子中的第n种编码因子包括1个单映射碱基因子和n个双映射碱基因子,所述单映射碱基因子表示1个碱基对应1个比特位,其中,腺嘌呤和胸腺嘧啶对应不同的比特值,所述双映射碱基因子表示1个碱基对应两个比特位,其中每个碱基对应不同的比特值,所述编码块中双映射碱基因子的个数与所有碱基因子的个数的比值不超过预设的值,n为小于等于N的正整数;
将所述二进制数据根据所述编码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行编码,其中,所述双映射碱基因子对应的比特值转换为对应的碱基,所述单映射碱基因子对应的比特值转换为对应的碱基。
2.根据权利要求1所述的方法,其特征在于,所述将所述二进制数据根据所述编码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行编码,包括:
根据所述编码块中的单映射碱基因子及双映射碱基因子顺序找到每个单映射碱基因子及每个双映射碱基因子在所述二进制数据中对应的比特值;
根据每个双映射碱基因子对应的比特值,将所述双映射碱基因子对应的比特值转换为对应的碱基;
根据每个单映射碱基因子对应的比特值,将所述单映射碱基因子对应的比特值转换为对应的碱基。
3.根据权利要求2所述的方法,其特征在于,所述单映射碱基因子表示的胞嘧啶和鸟嘌呤对应不同的比特值,所述根据每个单映射碱基因子对应的比特值,将所述单映射碱基因子对应的比特值转换为对应的碱基包括:
将所述单映射碱基因子对应的比特值转换为腺嘌呤和胸腺嘧啶;
当所述单映射碱基因子后面相邻的碱基是腺嘌呤或胸腺嘧啶,将所述单映射碱基因子对应比特值转换为胞嘧啶或鸟嘌呤。
4.根据权利要求2所述的方法,其特征在于,所述根据每个单映射碱基因子对应的比特值,将所述单映射碱基因子对应的比特值转换为对应的碱基包括:
在按照从前往后的顺序对所述二进制数据进行编码时,当所述单映射碱基因子的前面与所述单映射碱基因子相邻连续出现N个双映射碱基因子时,将所述单映射碱基因子对应的比特值根据单比特碱基中枢映射关系进行转换,其中,在所述单比特碱基中枢映射关系中,单映射碱基因子对应的碱基根据所述单映射碱基因子对应的比特值及所述单映射碱基因子对应的碱基的前一个碱基和后一个碱基确定,且所述单映射碱基因子对应的碱基与所述前一个碱基和后一个碱基是不同的碱基。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述获取编码块包括:
调整所述至多N种编码因子中每种编码因子的数量以构成编码因子组合;
计算所述编码因子组合中双映射碱基因子的个数与所有碱基因子个数的比例;
当所述编码因子组合中双映射碱基因子的个数与所有碱基因子的个数的比例不超过预设值时,将所述编码因子组合作为所述编码块;
当所述编码因子组合中双映射碱基因子的个数与所有碱基因子的个数的比例超过预设值时,重新调整所述至多N种编码因子中每种编码因子的数量。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述将所述二进制数据根据所述编码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行编码,还包括:
将所述比特段根据所述编码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行编码;
当所述比特段未编码部分包含的比特位的数量小于所述编码块对应的比特位的数量时,将所述比特段未编码部分根据单映射碱基因子对应的比特值以及至多M种编码因子组成的编码因子组合编码成碱基序列,其中,所述至多M种编码因子中每一种编码因子包含的双映射碱基因子的个数与所有碱基因子的个数的比例不超过预设值。
7.一种脱氧核糖核酸DNA数据解码方法,其特征在于,所述方法用于计算机装置,用于将DNA碱基序列解码为二进制数据,包括:
获取待解码的DNA碱基序列;
获取解码块,所述解码块包括至多N种解码因子,其中,所述N种解码因子中的第n种解码因子包括1个单映射碱基因子和n个双映射碱基因子,所述单映射碱基因子表示1个碱基对应1个比特位,其中,腺嘌呤和胸腺嘧啶对应不同的比特值,所述双映射碱基因子表示1个碱基对应两个比特位,其中每个碱基对应不同的比特值,所述解码块中双映射碱基因子的个数与所有碱基因子的个数不超过预设值,n为小于等于N的正整数;
将所述DNA碱基序列根据所述解码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行解码,其中,所述双映射碱基因子对应的碱基转换为二进制数据,所述单映射碱基因子对应的碱基转换成二进制数据。
8.根据权利要求7所述的方法,其特征在于,所述将所述DNA碱基序列根据所述解码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行解码,包括:
根据所述解码块中的单映射碱基因子及双映射碱基因子顺序找到每个单映射碱基因子及每个双映射碱基因子在所述DNA碱基序列中对应的碱基;
根据每个双映射碱基因子对应的比特值,将所述双映射碱基因子对应的碱基转换为二进制数据;
根据每个单映射碱基因子对应的比特值,将所述单映射碱基因子对应的碱基转换成二进制数据。
9.根据权利要求8所述的方法,其特征在于,所述根据每个单映射碱基因子对应的比特值,将所述单映射碱基因子对应的碱基转换成二进制数据,包括:
在按照从前往后的顺序对所述DNA碱基序列进行解码时,当所述单映射碱基因子的前面与所述单映射碱基因子相邻连续出现N个双映射碱基因子时,将所述单映射碱基因子根据单比特碱基中枢映射关系进行转换,其中,在所述单比特碱基中枢映射关系中,单映射碱基因子对应的碱基对应的比特值根据所述单映射碱基因子对应的碱基的前一个碱基和后一个碱基确定,且所述单映射碱基因子对应的碱基与所述前一个碱基和后一个碱基是不同的碱基。
10.根据权利要求7-9任一项所述的方法,其特征在于,所述将所述DNA碱基序列根据所述解码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行解码,还包括:
将所述DNA碱基序列根据所述解码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行解码;
当所述DNA碱基序列未解码部分包含的碱基数量小于所述解码块对应的碱基因子数量时,获取解码信息,并根据所述解码信息进行解码,其中,所述解码信息包含所述未解码部分在编码时所使用的编码因子组合,所述编码因子组合包括单映射碱基因子以及至多M种编码因子,其中,所述至多M种编码因子中每一种编码因子包含的双映射碱基因子的个数与所有碱基因子的个数的比例不超过预设值。
11.一种脱氧核糖核酸DNA数据编码装置,其特征在于,所述装置用于将二进制数据编码为DNA碱基序列,包括:
获取模块,用于:获取待编码的二进制数据;获取编码块,所述编码块包括至多N种编码因子,其中,所述N种编码因子中的第n种编码因子包括1个单映射碱基因子和n个双映射碱基因子,所述单映射碱基因子表示1个碱基对应1个比特位,其中,腺嘌呤和胸腺嘧啶对应不同的比特值,所述编码块中双映射碱基因子的个数与所有碱基因子的个数的比值不超过预设的值,n为小于等于N的正整数;
编码模块,用于将所述二进制数据根据所述编码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行编码,其中,所述双映射碱基因子对应的比特值转换为对应的碱基,所述单映射碱基因子对应的比特值转换为对应的碱基。
12.根据权利要求11所述的编码装置,其特征在于,所述将所述二进制数据根据所述编码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射因子对应的比特值与双映射碱基因子对应的比特值进行编码,包括:
根据所述编码块中的单映射碱基因子及双映射碱基因子顺序找到每个单映射碱基因子及每个双映射碱基因子在所述二进制数据中对应的比特值;
根据每个双映射碱基因子对应的比特值,将所述双映射碱基因子对应的比特值转换成对应的碱基;
根据每个单映射碱基因子对应的比特值,将所述单映射碱基因子对应的比特值转换为对应的碱基。
13.根据权利要求12所述的编码装置,其特征在于,所述单映射碱基因子表示的胞嘧啶和鸟嘌呤对应不同的比特值,所述根据每个单映射碱基因子对应的比特值,将所述单映射碱基因子对应的比特值转换为对应的碱基包括:
将所述单映射碱基因子对应的比特值转换为腺嘌呤和胸腺嘧啶;
当所述单映射碱基因子后面相连的碱基是腺嘌呤或胸腺嘧啶,将所述单映射碱基因子对应的比特值转换为胞嘧啶或鸟嘌呤。
14.根据权利要求12所述的编码装置,其特征在于,所述根据每个单映射碱基因子对应的比特值,将所述单映射碱基因子对应的比特值转换为对应的碱基包括:
在按照从前往后的顺序对所述二进制数据进行编码时,当所述单映射碱基因子的前面与所述单映射碱基因子相邻连续出现N个双映射碱基因子时,将所述单映射碱基因子对应的比特值根据单比特碱基中枢映射关系进行转换,其中,在所述单比特碱基中枢映射关系中,单映射碱基因子对应的碱基根据所述单映射碱基因子对应的比特值及所述单映射碱基因子对应的碱基的前一个碱基和后一个碱基确定,且所述单映射碱基因子对应的碱基与所述前一个碱基和后一个碱基是不同的碱基。
15.根据权利要求11-14任一项所述的编码装置,其特征在于,所述获取编码块包括:
调整所述至多N种编码因子中每种编码因子的数量以构成编码因子组合;
计算所述编码因子组合中双映射碱基因子的个数和所有碱基因子个数的比例;
当所述编码因子组合中双映射碱基因子的个数与所有碱基因子的个数的比例不超过预设值时,将所述编码因子组合作为所述编码块;
当所述编码因子组合中双映射碱基因子的个数与所有碱基因子的个数的比例超过预设值时,重新调整所述至多N种编码因子中每种编码因子的数量。
16.根据权利要求11-15任一项所述的编码装置,其特征在于,所述将所述二进制数据根据所述编码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行编码,还包括:
将所述比特段根据所述编码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行编码;
当所述比特段未编码部分包含的比特位的数量小于所述编码块对应的比特位的数量时,将所述比特段未编码部分根据单映射碱基因子对应的比特值以及至多M种编码因子组成的编码因子组合编码成碱基序列,其中,所述至多M种编码因子中每一种编码因子包含的双映射碱基因子的个数与所有碱基因子的个数的比例不超过预设值。
17.一种脱氧核糖核酸DNA数据解码装置,其特征在于,所述装置用于将DNA碱基序列解码为二进制数据,包括:
获取模块,用于:获取待解码的DNA碱基序列;获取解码块,所述解码块包括至多N种解码因子,其中,所述N种解码因子中的第n种解码因子包括1个单映射碱基因子和n个双映射碱基因子,所述单映射碱基因子表示1个碱基对应1个比特位,其中,腺嘌呤和胸腺嘧啶对应不同的比特值,编码块中双映射碱基因子的个数与所有碱基因子的个数的比值不超过预设的值,n为小于等于N的正整数;
解码模块,用于将所述DNA碱基序列根据所述解码块中的单映射碱基因子和双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行解码,其中,所述双映射碱基因子对应的碱基转换为二进制数据,所述单映射碱基因子对应的碱基转换成二进制数据。
18.根据权利要求17所述的解码装置,其特征在于,所述将所述DNA碱基序列根据所述解码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行解码,包括:
根据所述编码块中的单映射碱基因子及双映射碱基因子顺序找到每个单映射碱基因子及每个双映射碱基因子在所述DNA碱基序列中对应的碱基;
根据每个双映射碱基因子对应的比特值,将所述双映射碱基因子对应的碱基转换为二进制数据;
根据每个单映射碱基因子对应的比特值,将所述单映射碱基因子对应的碱基转换成二进制数据。
19.根据权利要求18所述的解码装置,其特征在于,所述根据每个单映射碱基因子对应的比特值,将所述单映射碱基因子对应的碱基转换成二进制数据,包括:
在按照从前往后的顺序对所述DNA碱基序列进行解码时,当所述单映射碱基因子的前面与所述单映射碱基因子相邻连续出现N个双映射碱基因子时,将所述单映射碱基因子根据单比特碱基中枢映射关系进行转换,其中,在所述单比特碱基中枢映射关系中,单映射碱基因子对应的比特值根据所述单映射碱基因子对应的碱基的前一个碱基和后一个碱基确定,且所述单映射碱基因子对应的碱基与所述前一个碱基和后一个碱基是不同的碱基。
20.根据权利要求17-19任一项所述的解码装置,其特征在于,所述将所述DNA碱基序列根据所述解码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行解码,还包括:
将所述DNA碱基序列根据所述解码块中的单映射碱基因子与双映射碱基因子的顺序以及单映射碱基因子对应的比特值与双映射碱基因子对应的比特值进行解码;
当所述DNA碱基序列未解码部分包含的碱基数量小于所述编码块对应的碱基因子数量时,获取解码信息,并根据所述解码信息进行解码,其中,所述解码信息包含所述未解码部分在编码时所使用的编码因子组合,所述编码因子组合包括单映射碱基因子以及至多M种编码因子,其中,所述至多M种编码因子中每一种编码因子包含的双映射碱基因子的个数与所有碱基因子的个数的比例不超过预设值。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810986270.2A CN110867213B (zh) | 2018-08-28 | 2018-08-28 | 一种dna数据的存储方法和装置 |
PCT/CN2019/077391 WO2020042582A1 (zh) | 2018-08-28 | 2019-03-08 | 一种dna数据的存储方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810986270.2A CN110867213B (zh) | 2018-08-28 | 2018-08-28 | 一种dna数据的存储方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110867213A CN110867213A (zh) | 2020-03-06 |
CN110867213B true CN110867213B (zh) | 2023-10-20 |
Family
ID=69642854
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810986270.2A Active CN110867213B (zh) | 2018-08-28 | 2018-08-28 | 一种dna数据的存储方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110867213B (zh) |
WO (1) | WO2020042582A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111489791B (zh) * | 2020-04-07 | 2023-05-26 | 中国科学院重庆绿色智能技术研究院 | 固态纳米孔高密度编码dna数字存储读取方法 |
CN112382340B (zh) * | 2020-11-25 | 2022-11-15 | 中国科学院深圳先进技术研究院 | 用于dna数据存储的编解码方法和编解码装置 |
WO2022109879A1 (zh) * | 2020-11-25 | 2022-06-02 | 中国科学院深圳先进技术研究院 | 用于dna数据存储的二进制信息到碱基序列的编解码方法和编解码装置 |
WO2023206023A1 (zh) * | 2022-04-25 | 2023-11-02 | 中国科学院深圳先进技术研究院 | 用于dna存储的编码方法及编码装置 |
CN114822695B (zh) * | 2022-04-25 | 2024-04-16 | 中国科学院深圳先进技术研究院 | 用于dna存储的编码方法及编码装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4340932A (en) * | 1978-05-17 | 1982-07-20 | Harris Corporation | Dual mapping memory expansion unit |
CN103336916A (zh) * | 2013-07-05 | 2013-10-02 | 中国科学院数学与系统科学研究院 | 一种测序序列映射方法及系统 |
CN104734848A (zh) * | 2015-03-02 | 2015-06-24 | 郑州轻工业学院 | 基于重组dna技术对信息进行加密与隐藏的方法及应用 |
CN104850760A (zh) * | 2015-03-27 | 2015-08-19 | 苏州泓迅生物科技有限公司 | 带有编码信息的人工合成dna存储介质及信息的存储读取方法和应用 |
CN106055927A (zh) * | 2016-05-31 | 2016-10-26 | 广州麦仑信息科技有限公司 | mRNA信息的二进制存储方法 |
WO2017085245A1 (en) * | 2015-11-18 | 2017-05-26 | Technische Universität Hamburg-Harburg | Methods for encoding and decoding a binary string and system therefore |
CN108026557A (zh) * | 2015-07-13 | 2018-05-11 | 哈佛学院董事及会员团体 | 使用核酸用于可检索信息储存的方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040153255A1 (en) * | 2003-02-03 | 2004-08-05 | Ahn Tae-Jin | Apparatus and method for encoding DNA sequence, and computer readable medium |
US7548176B2 (en) * | 2007-07-12 | 2009-06-16 | Donald Martin Monro | Data coding buffer for electrical computers and digital data processing systems |
US7545291B2 (en) * | 2007-07-12 | 2009-06-09 | Donald Martin Monro | FIFO radix coder for electrical computers and digital data processing systems |
CN105550570A (zh) * | 2015-12-02 | 2016-05-04 | 深圳市同创国芯电子有限公司 | 一种应用于可编程器件的加密、解密方法及装置 |
-
2018
- 2018-08-28 CN CN201810986270.2A patent/CN110867213B/zh active Active
-
2019
- 2019-03-08 WO PCT/CN2019/077391 patent/WO2020042582A1/zh active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4340932A (en) * | 1978-05-17 | 1982-07-20 | Harris Corporation | Dual mapping memory expansion unit |
CN103336916A (zh) * | 2013-07-05 | 2013-10-02 | 中国科学院数学与系统科学研究院 | 一种测序序列映射方法及系统 |
CN104734848A (zh) * | 2015-03-02 | 2015-06-24 | 郑州轻工业学院 | 基于重组dna技术对信息进行加密与隐藏的方法及应用 |
CN104850760A (zh) * | 2015-03-27 | 2015-08-19 | 苏州泓迅生物科技有限公司 | 带有编码信息的人工合成dna存储介质及信息的存储读取方法和应用 |
CN108026557A (zh) * | 2015-07-13 | 2018-05-11 | 哈佛学院董事及会员团体 | 使用核酸用于可检索信息储存的方法 |
WO2017085245A1 (en) * | 2015-11-18 | 2017-05-26 | Technische Universität Hamburg-Harburg | Methods for encoding and decoding a binary string and system therefore |
CN106055927A (zh) * | 2016-05-31 | 2016-10-26 | 广州麦仑信息科技有限公司 | mRNA信息的二进制存储方法 |
Non-Patent Citations (2)
Title |
---|
Crystal Cobb等.Comparative Study of a DNA Sequence Storage Technique.《2016 International Conference on Computational Science and Computational Intelligence》.2016,第463-466页. * |
张勋才等.一种基于RNA二级结构的信息隐藏方案.第1期.2014,第第 29 卷卷(第第 29 卷期),第1-6页. * |
Also Published As
Publication number | Publication date |
---|---|
WO2020042582A1 (zh) | 2020-03-05 |
CN110867213A (zh) | 2020-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110867213B (zh) | 一种dna数据的存储方法和装置 | |
WO2022120912A1 (zh) | 编码方法、解码方法、装置及计算机可读存储介质 | |
CN112382340B (zh) | 用于dna数据存储的编解码方法和编解码装置 | |
KR20190117652A (ko) | 압축된 게놈 서열 리드로부터 게놈 참조 서열의 복원 방법 및 시스템 | |
US20200211677A1 (en) | Dna-based data storage and retrieval | |
CN109830263B (zh) | 一种基于寡核苷酸序列编码存储的dna存储方法 | |
JP4801776B2 (ja) | データ圧縮 | |
US10917109B1 (en) | Methods for storing digital data as, and for transforming digital data into, synthetic DNA | |
US20080005648A1 (en) | Data compression | |
CN109979540B (zh) | 一种dna信息存储编码方法 | |
CN114328000B (zh) | 1型2型分段纠错内码的dna存储级联编码与解码方法 | |
TWI273779B (en) | Method and apparatus for optimized lossless compression using a plurality of coders | |
TW201440442A (zh) | 安全及無損失的資料壓縮 | |
JP2956704B2 (ja) | 可変長符号変成装置 | |
Pic et al. | Rotating labeling of entropy coders for synthetic DNA data storage | |
CN111243670A (zh) | 一种满足生物约束的dna信息存储编码方法 | |
KR20190071741A (ko) | 생물 정보학 데이터의 간략 표현 방법 및 장치 | |
WO2022161147A1 (zh) | 译码方法、装置、设备以及计算机可读存储介质 | |
US10931303B1 (en) | Data processing system | |
JP2998254B2 (ja) | 可変長符号化データの伝送方法 | |
CN116527775B (zh) | 使用分区和无关位消除的数据压缩技术 | |
WO2023206023A1 (zh) | 用于dna存储的编码方法及编码装置 | |
CN117081604A (zh) | 一种可纠正多个删除错误且满足gc全局平衡的dna编码方法 | |
JP2776075B2 (ja) | 可変長符号化データの伝送方法 | |
CN115271069A (zh) | 一种基于rbs算法的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 |