CN114356220B - 基于dna存储的编码方法、电子设备及可读存储介质 - Google Patents
基于dna存储的编码方法、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN114356220B CN114356220B CN202111505985.XA CN202111505985A CN114356220B CN 114356220 B CN114356220 B CN 114356220B CN 202111505985 A CN202111505985 A CN 202111505985A CN 114356220 B CN114356220 B CN 114356220B
- Authority
- CN
- China
- Prior art keywords
- binary sequence
- subsequence
- length
- sequence
- subsequences
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种基于DNA存储的编码方法,该方法将待存储信息转换成第一二进制序列;确定第一二进制序列中的多个第一子序列对,以及每个第一子序列对中的两个子序列在第一二进制序列中所处的位置;在第一二进制序列中删除每个第一子序列对的两个子序列中的任意一个,生成第二二进制序列;根据每个第一子序列对中的两个子序列在第一二进制序列中所处的位置,生成第三二进制序列,进而根据第二二进制序列和第三二进制序列得到存储有待存储信息的第一DNA分子和用于对第一DNA分子进行解码的第二DNA分子。该方法能够提高存储密度,节省存储空间。
Description
技术领域
本申请属于电子信息技术领域,尤其涉及一种基于DNA存储的编码方法、电子设备及可读存储介质。
背景技术
人们在工作、娱乐等活动中产生的数据存储在传统存储介质中,比如硬盘、光盘和磁带等,随着数据的不断累积,可用的传统存储介质将越来越少,为此,研究者们提出了脱氧核糖核酸(DeoxyriboNucleic Acid,DNA)存储技术。DNA存储技术利用人工合成的脱氧核糖核酸(DNA)作为存储介质,具有存储容量大、保存时间长等优点。DNA存储技术有4个步骤,分别是编码、合成、测序和解码,编码是将图片、视频等数据转换为二进制数据,再使用编码算法将二进制数据编码成碱基序列。然后根据碱基序列合成DNA。
目前的方法是将原始数据转换成一条二进制形式的字符串,然后将字符串直接编码成碱基序列进而合成DNA,然而,字符串是冗长的,直接编码成碱基序列不能有效的利用存储空间。
发明内容
针对上述技术问题,本申请实施例提供一种基于DNA存储的编码方法、电子设备及可读存储介质,能够提高存储密度,节省存储空间。
第一方面,本申请实施例提供了一种基于DNA存储的编码方法,包括:
将待存储信息转换成第一二进制序列;确定第一二进制序列中的多个第一子序列对,和每个第一子序列对中的两个子序列在第一二进制序列中所处的位置,两个子序列之间存在预设二进制数值互补关系;在第一二进制序列中删除每个第一子序列对的两个子序列中的任意一个,生成第二二进制序列;根据每个第一子序列对中的两个子序列在第一二进制序列中所处的位置,生成第三二进制序列,第一二进制序列的长度与第二二进制序列的长度的差值大于第三二进制序列的长度;将第二二进制序列与第三二进制序列转换成第一碱基序列和第二碱基序列,第一碱基序列用于合成存储有待存储信息的第一DNA分子,第二碱基序列用于合成对第一DNA分子进行解码的第二DNA分子。
特别地,多个第一子序列对中的任意两个子序列在第一二进制序列中所处的位置无交集。
本申请实施例中,任意两个子序列在第一二进制序列中所处的位置无交集,避免删除一个子序列时,将需要保留的子序列也删除,从而保证第一DNA分子中的待存储信息是完整的。
特别地,在第一二进制序列中删除每个第一子序列对的两个子序列中的任意一个,包括:在第一二进制序列中,删除每个第一子序列对的两个子序列中在第一二进制序列中所处的位置靠后的一个。
特别地,第一二进制序列包括m个字符,确定第一二进制序列中的多个第一子序列对,和每个第一子序列对中的两个子序列在第一二进制序列中所处的位置,包括:
根据第一二进制序列生成第四二进制序列,第四二进制序列与第一二进制序列存在预设二进制数值互补关系;以第一二进制序列的第n个字符为起始点,查找第一二进制序列与第四二进制序列中字符相同的子序列,得到多个第二子序列对,第二子序列对中的第一子序列和第二子序列分别位于第一二进制序列和第四二进制序列,n取值为{1,2,……,m};根据多个第二子序列对,确定多个第一子序列对,以及,每个第一子序列对中的两个子序列在第一二进制序列中所处的位置。
特别地,查找第一二进制序列与第四二进制序列中字符相同的子序列,得到多个第二子序列对,包括:查找第一二进制序列与第四二进制序列中字符相同且无交集的子序列,得到多个第二子序列对。
特别地,根据多个第二子序列对,确定多个第一子序列对,以及,每个第一子序列对中的两个子序列在第一二进制序列中所处的位置,包括:
确定每个第二子序列对的长度;根据多个第二子序列对的长度,从多个第二子序列对中选择部分所述第二子序列对;根据部分第二子序列对中的每个第二子序列对中的第二子序列在第四二进制序列中的位置,确定第一二进制序列中对应的位置的第三子序列;确定部分第二子序列对中的每个第二子序列对中的第一子序列和对应的第三子序列,为多个第一子序列对;获取每个第一子序列和第三子序列在第一二进制序列中的位置。
特别地,部分第二子序列对为长度大于第一长度的第二子序列对,第一长度使得第一二进制序列的长度与第二二进制序列的长度的差值大于第三二进制序列的长度。
特别地,部分第二子序列对的长度为第二长度,长度大于第一长度的第二子序列对中包括各长度的第二子序列对,第二长度与第一长度的差值的总和在各长度与第一长度的差值的总和中最大。
特别地,该方法还包括:当两个第二子序列对存在交集时,删除两个第二子序列对中的任意一个。
特别地,第一长度是根据第一二进制序列的长度确定的。
第二方面,本申请实施例提供了一种基于DNA存储的编码装置,该装置包括:
获取模块,用于将待存储信息转换成第一二进制序列;
处理模块,用于确定第一二进制序列中的多个第一子序列对,和每个第一子序列对中的两个子序列在第一二进制序列中所处的位置,两个子序列之间存在预设二进制数值互补关系;在第一二进制序列中删除每个第一子序列对的两个子序列中的任意一个,生成第二二进制序列;根据每个第一子序列对中的两个子序列在第一二进制序列中所处的位置,生成第三二进制序列,第一二进制序列的长度与第二二进制序列的长度的差值大于第三二进制序列的长度;将第二二进制序列与第三二进制序列转换成第一碱基序列和第二碱基序列,第一碱基序列用于合成存储有待存储信息的第一DNA分子,第二碱基序列用于合成对第一DNA分子进行解码的第二DNA分子。
第三方面,本申请实施例还提供了一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的基于DNA存储的编码方法。
第四方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得所述计算机执行如第一方面所述的基于DNA存储的编码方法。
第五方面,本申请实施例还提供了一种计算机程序产品,所述计算机程序产品包括计算机程序,当所述计算机程序产品在计算机上运行时,实现如第一方面所述的基于DNA存储的编码方法。
本申请实施例,将待存储信息转换成二进制形式的第一二进制序列,在第一二进制序列中确定多个子序列对,每个子序列对包括具有预设二进制数值互补关系的两个子序列,然后删除每个子序列对中两个子序列中的一个,从而压缩第一二进制序列得到第二二进制序列,将第二二进制序列转换成第一碱基序列,第一碱基序列用于合成存储有待存储信息的第一DNA分子。压缩第一二进制序列时,增加第三二进制序列,将第三二进制序列转换成第二碱基序列,第二碱基序列用于合成对第一DNA分子进行解码的第二DNA分子,在解码第一DNA分子时,可以根据保留的子序列得到删除的子序列,并且根据两个子序列在第一二进制序列中所处的位置还原第一二进制序列。
由于第一二进制序列的长度与第二二进制序列的长度的差值大于第三二进制序列的长度,也就是说,第二二进制序列与第三二进制序列加起来的总长度小于第一二进制序列的长度,存储第二二进制序列与第三二进制序列所需要的存储空间小于存储第一二进制序列需要的空间,因此,本申请实施例提供的基于DNA存储的编码方法,删除第一二进制序列中的部分子序列,压缩第一二进制序列的长度,能够提高存储密度,节省存储空间。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种基于DNA存储的编码方法的流程示意图;
图2是本申请实施例提供的又一种基于DNA存储的编码方法的流程示意图;
图3是本申请实施例提供的一种选择子序列的流程示意图;
图4是本申请实施例提供的又一种选择子序列的示意图;
图5是本申请实施例提供的一种装置的结构示意图;
图6是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上,“至少一个”、“一个或多个”是指一个、两个或两个以上。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
互联网和人工智能等信息技术的快速发展,使得需要存储的信息量呈指数型增长。当人们享受这数据与人工智能带来的便利时,一个基础问题日益凸显,那就是目前用于充当存储媒介的硅介质越来越少。DNA,是生物体的遗传物质,具有极高的存储密度、自然而然地成为了新型存储介质的焦点。DNA存储方法有4个步骤,分别是:编码、合成、测序和解码,编码是将图片、视频等数据转换为二进制数据,再使用编码算法将二进制数据编码成碱基序列。
目前DNA存储的方法是将原始数据转换成一条二进制形式的字符串,然后将字符串直接编码成碱基序列进而合成DNA,然而,字符串是冗长的,直接编码成碱基序列不能有效的利用存储空间。为此,本申请实施例,将待存储信息转换成第一二进制序列,即二进制形式的序列,利用二进制中特有的数值“0”和数值“1”的非此即彼关系,删除第一二进制序列中的部分子序列,压缩第一二进制序列的长度,能够提高存储密度,节省存储空间。以下详细说明。
图1示出了本申请实施例提供的一种基于DNA存储的编码方法的流程示意图,该方法包括:
S101:将待存储信息转换成第一二进制序列。
例如,待存储信息可以是图片、视频、文档等文件。获取待存储信息后可以将待存储信息以二进制的方式转换成第一二进制序列,例如对于一个二值图像,可以用字符0和字符1代表黑和白两种像素值,将二值图像转换成第一二进制序列,第一二进制序列中包括多个字符。也可以依据待存储信息的类型用其他方式进行转换。
S102:确定第一二进制序列中的多个第一子序列对,和每个第一子序列对中的两个子序列在第一二进制序列中所处的位置,两个子序列之间存在预设二进制数值互补关系。
本申请实施例,从第一二进制序列中查找出多个第一子序列对,例如,可以通过后缀树结构搜索的方法进行查找,或者通过动态规划的方法进行查找。每个第一子序列对中的两个子序列之间存在互补关系,例如,定义字符0与字符1具有互补关系,子序列“010”与子序列“101”是具有互补关系的子序列对。由于两个子序列之间存在互补关系,在解码时,获取到两个子序列中的一个子序列A时,就可以根据互补关系得到两个子序列中的另一个子序列B。
需要说明的是,多个第一子序列对可能是第一二进制序列的一部分,而不是全部。
在确定多个第一子序列对时,确定每个第一子序列对中的两个子序列A和B在第一二进制序列中所处的位置,从而解码第一DNA分子时,能够根据两个子序列在第一二进制序列中所处的位置按照正确的顺序排列每个子序列,准确的还原出第一二进制序列。
两个子序列A和B在第一二进制序列中所处的位置可以包括初始位置和结束位置,也可以包括初始位置和每个子序列对的长度,或者多个第一子序列对的长度是相同,两个子序列A和B在第一二进制序列中所处的位置包括初始位置。
S103:在第一二进制序列中删除每个第一子序列对的两个子序列中的任意一个,生成第二二进制序列。
例如,可以删除每个第一子序列对的两个子序列中在第一二进制序列中所处的位置靠后的一个,或者,可以删除每个第一子序列对的两个子序列中在第一二进制序列中所处的位置靠前的一个,或者,可以随机删除每个第一子序列对的两个子序列中的任意一个。通过删除部分子序列减少第一二进制序列的长度,减少需要存储的数据。
本申请实施例中,可以对子序列对进行筛选,使得多个第一子序列对中的任意两个子序列在第一二进制序列中所处的位置无交集,避免删除一个子序列时,将需要保留的子序列也删除,从而第一文件中的待存储信息是完整的。
S104:根据每个第一子序列对中的两个子序列在第一二进制序列中所处的位置,生成第三二进制序列,第一二进制序列的长度与第二二进制序列的长度的差值大于第三二进制序列的长度。
例如,第一二进制序列包括125个字符,则有125个字符的位置,子序列A的起始位置为第9个位置,子序列B的起始位置为第30个位置,将第9个位置的信息“9”和第30个位置的信息“30”用二进制表示,使用n个字符的长度记录一个位置的信息,生成第三二进制序列。
第一二进制序列的长度与第二二进制序列的长度的差值即被删除掉的子序列的长度,对于第一二进制序列而言,本申请实施例引入了第三二进制序列,因此被删除掉的子序列的长度需要大于第三二进制序列的长度,从而使得第二二进制序列与第三二进制序列的总长度小于第一二进制序列。本申请实施例中,可以通过筛选第一子序列对的长度,实现第二二进制序列与第三二进制序列的总长度小于第一二进制序列,第二二进制序列与第三二进制序列所需要的存储空间小于第一二进制序列所需要的存储空间。
S105:将第二二进制序列与第三二进制序列转换成第一碱基序列和第二碱基序列,第一碱基序列用于合成存储有待存储信息的第一DNA分子,第二碱基序列用于合成对第一DNA分子进行解码的第二DNA分子。
在得到第二二进制序列之后,将第二二进制序列编码为第一碱基序列,编码方法可以是DNA喷泉码或者阴阳双编码等。根据第一碱基序列可以得到第一DNA单链,可以将第一DNA单链称为正链,DNA是具有双链结构的大分子,然后基于DNA双链互补的特点,生成与第一DNA单链互补的第二DNA单链,可以将第二DNA单链称为负链。根据正链与负链可以合成存储有待存储信息的第一DNA分子。
将第三二进制序列编码为第二碱基序列,基于与合成第一DNA分子相同的方法,合成第二DNA分子,第二DNA分子用于对第一DNA分子进行解码,即确定每个第一子序列对中的两个子序列在第一序列中所处的位置信息。
本申请实施例,可以将第一DNA分子与第二DNA分子存储在相同的位置,需要使用待存储信息时,通过解码将第一DNA分子与第二DNA分子转换成二进制数据,读取待存储信息。也可以将第一DNA分子与第二DNA分子存储在不同的位置,当只获取到第一DNA分子,而没有获取第二DNA分子时,无法通过解码第一DNA分子读取待存储信息,可以用于对第一DNA分子加密存储。
解码时可以解码正链,也可以解码负链。如果是直接根据第一二进制序列得到的DNA分子,解码正链时可以直接得到待存储信息,解码负链时需要将负链转换成正链才可以得到待存储信息,解码正链之后再解码负链将得到冗余的信息,相当于只利用了DNA分子的单链信息。本申请实施例中,由于删除的子序列与保留的子序列是互补的,正链与负链是互补的,因此负链中包括被删除的子序列的信息,解码负链时可以直接得到部分待存储信息,即,本申请实施例根据第二二进制序列得到的第一DNA分子的两条链均能有效的存储信息,能够提升存储效率。
下面以后缀树结构搜索的方法为例,对本申请实施例提供的DNA存储的方法进行整体说明,如图2所示,其中201表示待存储信息。
首先,将待存储信息以二进制形式转换为第一二进制序列,记为S1,S1中包括多个字符,定义字符0与字符1具有互补关系,生成与S1存在互补关系的第四序列,记为S2。
以S1的第n个字符为起始点,在S1和S2中查找完全相等的子序列,即子序列对应的连续的字符完全相同,其中,S1中查找到的子序列记为p,S2中查找到的子序列记为m。记录查找到的子序列的长度,以及子序列p与子序列m的初始位置。子序列p与子序列m构成第二子序列对。子序列p对应第一子序列,子序列m对应第二子序列。
例如,如图3所示,以S1的第1个字符“A”的位置P1为起始点,在S2中进行查找,索引0-8表示字符的位置,查找时,由于S1与S2为互补关系,S2的起点为S1起点之后,即P2,可节省查找时长。
查找S1的第1个字符与S2的第2个字符,此时,S1的第1个字符与S2的第2个字符相同,即S1[P1]=S2[P2]。然后在此基础上继续顺位查找,即查找S1的前2个字符S1[P1+1]与S2的第2个字符及S2的第3个字符S2[P2+1],此时,S1[P1+1]≠S2[P2+1],一轮查找结束,得到完全相等的子序列S1[P1]与子序列S2[P2],子序列长度L为1,子序列S1[P1]的初始位置记为0,P1=0,子序列S2[P2]的初始位置记为1,P2=1。S1[P1]表示S1中P1位置的子序列“A”,S1[P1+1]表示S1中P1位置及P1顺延一位的子序列“AT”。
查找S1的第1个字符与S2的第3个字符,二者不相等,即S1[P1]≠S2[P2+1]。查找S1的第1个字符与S2的第4个字符S2[P2+2],二者不相等,S1[P1]≠S2[P2+2]。依次查找,可得到完全相等的子序列S1[P1+3]与子序列S2[P1+6],子序列长度L为4,S1[P1+3]的初始位置记为0,S2[P1+6]的初始位置记为4。
在查找时,如果S1和S2中字符相同的两个子序列存在交集,则舍弃这两个子序列,如图4所示,子序列p1与子序列m1存在交集,则舍弃子序列p1与子序列m1,子序列p2与子序列m2没有交集,则保留子序列p2与子序列m2。
以S1的第1个字符为起始点,查找至S2的最后一个字符,之后,以S1的第2个字符为起始点,按照上述方法查找至S2的最后一个字符,……,以S1的最后一个字符为起始点,按照上述方法查找至S2的最后一个字符,得到长度分别为L1、L2、L3、……、Lq的多个第二子序列对。
按照长度对多个第二子序列对进行筛选。具体的,先确定用于记录位置信息的二进制字符的长度n,由于每个子序列的初始位置不同,直接转换得到的二进制字符的长度不同,因此,可以确定一个合适的长度n,以保证每个初始位置的信息均能够完整记录,同时避免长度过长造成存储空间的浪费。
本申请实施例中,根据S1的长度确定n:n=len(bin(len(s1))),即S1长度的二进制数字的字符位数,len(S1)表示S1的长度,bin(len(S1))表示S1的长度的二进制数字。例如,n=12,将每12个字符依次排列生成第三二进制序列,记为S3,每记录一个第二子序列对中两个子序列的初始位置信息,需要的长度为2n=24,2n对应第一长度。
长度分别为L1、L2、L3、……、Lq的多个第二子序列对中,有的第二子序列对的长度大于2n,例如L1,有的第二子序列对的长度小于2n,例如L2,为保证第二二进制序列与第三二进制序列总长度小于第一二进制序列的长度,在一种实现方式中,根据长度为L1的第二子序列对的数量和L1与2n的长度差,以及长度为L2的第二子序列对的数量和L2与2n的长度差,……,以第一二进制序列的长度与第二二进制序列的长度的差值大于第三二进制序列的长度为目标进行计算,确定需要删除的第二子序列对的长度以及每个长度的第二子序列对需要删除的数量,得到部分第二子序列对。
在另一种实现方式中,将长度≤2n的第二子序列对全部删除,筛选出长度大于2n的第二子序列对进行下一步骤,例如,L1、L3、L4的长度值大于2n。
以第二种实现方式为例,经过上述多个步骤,得到了长度分别为L1、L3、L4的多个第二子序列对,在一种实现方式中,当两个第二子序列对存在交集时,删除其中一个第二子序列对,得到部分第二子序列对,使得S1与S2对应的任意两个子序列均无交集,从而保证待存储信息的完整性。
在另一种实现方式中,对于相同长度的多个第二子序列对,如果两个第二子序列对存在交集,例如,S1上的子序列与S2上的子序列出现交集,则删除两个第二子序列对中的一个。然后,确定长度分别为L1、L3、L4的多个第二子序列对的数量C1、C3、C4,按照公式d=(L-2n)*C计算不同的子序列长度可以节省的字符数,字符数d即长度L与2n的差值的总和,选择节省字符数d最多的一组长度作为存储数据的标准,例如,长度为L1的多个第二子序列对节省字符数为d1,长度为L3的多个第二子序列对节省字符数为d3,长度为L4的多个第二子序列对节省字符数为d4,d1>d3>d4,则节省字符数d最多的长度为L3,此时,得到长度为L3的部分第二子序列对,L3对应第二长度。
将S2中的子序列m映射到S1上,得到对应的位置的第三子序列,记为子序列c。子序列p与子序列c构成第一子序列对。在生成S4时,将S1中的子序列p,按前后顺序添加入S4中,将S1上的子序列c删除,将S1上除去子序列p与子序列c外剩余的字符,保持相对位置顺序,添加在所有子序列p之后,最终得到S4。
将子序列p以及子序列c的初始位置转换为n位二进制数,配对添加到S3中,同时将长度信息添加到S3中,最终得到S3。
按A-11,T-10,C-01,G-00的编码规则,对S4和S3进行编码,得到第一碱基序列和第二碱基序列,进而合成第一DNA分子和第二DNA分子。
下面对本申请实施例提供的方法的有效性进行说明。
例如,以图2中201作为待存储数据,该二值图像的像素为50*50,可以读取出2500个字符。传统方法的存储密度极限为1比特/碱基/链,即一条单链上的一个碱基存储1比特信息,本申请实施例提供的方法针对示例201的编码结果最终共有1135bp(碱基对),分为两个DNA分子,其中,第一DNA分子有1015bp,第二DNA分子有120bp。故,本申请实施例提供的方法的编码密度为:2500/(1015+120)/2≈1.101比特/碱基/链,大于1比特/碱基/链,相比于传统方法,本申请实施例提供的方法有效提升了存储密度。
综上所述,本申请实施例,利用二进制中特有的数值“0”和数值“1”的关系,将待存储信息转换成二进制形式的第一二进制序列,在第一二进制序列中确定多个子序列对,每个子序列对包括具有预设二进制数值互补关系的两个子序列,然后删除每个子序列对中两个子序列中的一个,从而压缩第一二进制序列得到第二二进制序列,将第二二进制序列转换成第一碱基序列,第一碱基序列用于合成存储有待存储信息的第一DNA分子。
压缩第一二进制序列时,增加第三二进制序列,将第三二进制序列转换成第二碱基序列,第二碱基序列用于合成对第一DNA分子进行解码的第二DNA分子,在解码第一DNA分子时,可以根据保留的子序列得到删除的子序列,并且根据两个子序列在第一二进制序列中所处的位置还原第一二进制序列。
由于第一二进制序列的长度与第二二进制序列的长度的差值大于第三二进制序列的长度,也就是说,第二二进制序列与第三二进制序列加起来的总长度小于第一二进制序列的长度,存储第二二进制序列与第三二进制序列所需要的存储空间小于存储第一二进制序列需要的空间,因此,本申请实施例提供的基于DNA存储的编码方法,删除第一二进制序列中的部分子序列,压缩第一二进制序列的长度,能够提高存储密度,节省存储空间。
本申请实施例,还可以对子序列对进行筛选,使得任意两个子序列在第一二进制序列中所处的位置无交集,避免删除一个子序列时,将需要保留的子序列也删除,从而保证第一DNA分子中待存储信息是完整的。除此之外,将第一DNA分子与第二DNA分子分开保存,可以对第一DNA分子进行加密存储。
以下对本申请实施例提供的装置和电子设备进行说明。
图5为本申请实施例提供的基于DNA存储的编码装置500,该装置500包括:获取模块501,处理模块502。
获取模块501,用于获取待存储信息,并将待存储信息转换成第一二进制序列;
处理模块502,用于确定第一二进制序列中的多个第一子序列对,和每个第一子序列对中的两个子序列在第一二进制序列中所处的位置,两个子序列之间存在预设二进制数值互补关系;在第一二进制序列中删除每个第一子序列对的两个子序列中的任意一个,生成第二二进制序列;根据每个第一子序列对中的两个子序列在第一二进制序列中所处的位置,生成第三二进制序列,第一二进制序列的长度与第二二进制序列的长度的差值大于第三二进制序列的长度;将第二二进制序列与第三二进制序列转换成第一碱基序列和第二碱基序列,第一碱基序列用于合成存储有待存储信息的第一DNA分子,第二碱基序列用于合成对第一DNA分子进行解码的第二DNA分子。
特别地,多个第一子序列对中的任意两个子序列在第一二进制序列中所处的位置无交集。
特别地,处理模块502,还用于在第一二进制序列中,删除每个第一子序列对的两个子序列中在第一二进制序列中所处的位置靠后的一个。
特别地,处理模块502,还用于根据第一二进制序列生成第四二进制序列,第四二进制序列与第一二进制序列存在预设二进制数值互补关系;以第一二进制序列的第n个字符为起始点,查找第一二进制序列与第四二进制序列中字符相同的子序列,得到多个第二子序列对,第二子序列对中的第一子序列和第二子序列分别位于第一二进制序列和第四二进制序列,n取值为{1,2,……,m};根据多个第二子序列对,确定多个第一子序列对,以及,每个第一子序列对中的两个子序列在第一二进制序列中所处的位置。
特别地,处理模块502,还用于查找第一二进制序列与第四二进制序列中字符相同且无交集的子序列,得到多个第二子序列对。
特别地,处理模块502,还用于确定每个第二子序列对的长度;根据多个第二子序列对的长度,从多个第二子序列对中选择部分所述第二子序列对;根据部分第二子序列对中的每个第二子序列对中的第二子序列在第四二进制序列中的位置,确定第一二进制序列中对应的位置的第三子序列;确定部分第二子序列对中的每个第二子序列对中的第一子序列和对应的第三子序列,为多个第一子序列对;获取每个第一子序列和第三子序列在第一二进制序列中的位置。
特别地,部分第二子序列对为长度大于第一长度的第二子序列对,第一长度使得第一二进制序列的长度与第二二进制序列的长度的差值大于第三二进制序列的长度。
特别地,部分第二子序列对的长度为第二长度,长度大于第一长度的第二子序列对中包括各长度的第二子序列对,第二长度与第一长度的差值的总和在各长度与第一长度的差值的总和中最大。
特别地,该方法还包括:当两个第二子序列对存在交集时,删除两个第二子序列对中的任意一个。
特别地,第一长度是根据第一二进制序列的长度确定的。
应理解的是,本申请实施例的装置500可以通过专用集成电路(application-specific integrated circuit,ASIC)实现,或可编程逻辑器件(programmable logicdevice,PLD)实现,上述PLD可以是复杂程序逻辑器件(complex programmable logicaldevice,CPLD),现场可编程门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。也可以通过软件实现图1所示的方法,通过软件实现图1所示的方法时,装置500及其各个模块也可以为软件模块。
图6为本申请实施例提供的一种电子设备600的结构示意图。如图6所示,该设备600包括处理器601、存储器602、通信接口603和总线604。其中,处理器601、存储器602、通信接口603通过总线604进行通信,也可以通过无线传输等其他手段实现通信。该存储器602用于存储指令,该处理器601用于执行该存储器602存储的指令。该存储器602存储程序代码1021,且处理器601可以调用存储器602中存储的程序代码1021执行图1所示的方法。
应理解,在本申请实施例中,处理器601可以是CPU,处理器601还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。
该存储器602可以包括只读存储器和随机存取存储器,并向处理器601提供指令和数据。存储器602还可以包括非易失性随机存取存储器。该存储器602可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electricallyEPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double datadate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
该总线604除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图6中将各种总线都标为总线604。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (9)
1.一种基于DNA存储的编码方法,其特征在于,所述方法包括:
将待存储信息转换成第一二进制序列;
确定所述第一二进制序列中的多个第一子序列对,和每个所述第一子序列对中的两个子序列在所述第一二进制序列中所处的位置,所述两个子序列之间存在预设二进制数值互补关系,多个第一子序列对中的任意两个子序列在所述第一二进制序列中所处的位置无交集;
在所述第一二进制序列中删除每个第一子序列对的两个子序列中的任意一个,去除所述两个子序列外的字符,保持相对位置不变,添加在所有的未删除的子序列之后,生成第二二进制序列;
根据每个所述第一子序列对中的两个子序列在所述第一二进制序列中所处的位置,和任一删除的子序列或其互补子序列,生成第三二进制序列,所述第一二进制序列的长度与所述第二二进制序列的长度的差值大于所述第三二进制序列的长度;
将所述第二二进制序列与所述第三二进制序列转换成第一碱基序列和第二碱基序列,所述第一碱基序列用于合成存储有所述待存储信息的第一DNA分子,所述第二碱基序列用于合成对所述第一DNA分子进行解码的第二DNA分子。
2.根据权利要求1所述的方法,其特征在于,所述第一二进制序列包括m个字符,所述确定所述第一二进制序列中的多个第一子序列对,和每个所述第一子序列对中的两个子序列在所述第一二进制序列中所处的位置,包括:
根据第一二进制序列生成第四二进制序列,所述第四二进制序列与所述第一二进制序列存在所述预设二进制数值互补关系;
以所述第一二进制序列的第n个字符为起始点,查找所述第一二进制序列与所述第四二进制序列中字符相同的子序列,得到多个第二子序列对,所述第二子序列对中的第一子序列和第二子序列分别位于所述第一二进制序列和所述第四二进制序列,n取值为{1,2,……,m};
根据多个所述第二子序列对,确定多个所述第一子序列对,以及,每个所述第一子序列对中的两个子序列在所述第一二进制序列中所处的位置。
3.根据权利要求2所述的方法,其特征在于,所述根据多个所述第二子序列对,确定多个所述第一子序列对,以及,每个所述第一子序列对中的两个子序列在所述第一二进制序列中所处的位置,包括:
确定每个所述第二子序列对的长度;
根据多个所述第二子序列对的长度,从多个所述第二子序列对中选择部分所述第二子序列对;
根据部分所述第二子序列对中的每个所述第二子序列对中的第二子序列在所述第四二进制序列中的位置,确定第一二进制序列中对应的位置的第三子序列;
确定部分所述第二子序列对中的每个所述第二子序列对中的第一子序列和对应的第三子序列,为多个所述第一子序列对;
获取每个所述第一子序列和所述第三子序列在所述第一二进制序列中的位置。
4.根据权利要求3所述的方法,其特征在于,所述部分所述第二子序列对为长度大于第一长度的第二子序列对,所述第一长度使得所述第一二进制序列的长度与所述第二二进制序列的长度的差值大于所述第三二进制序列的长度。
5.根据权利要求4所述的方法,其特征在于,所述部分所述第二子序列对的长度为第二长度,长度大于第一长度的所述第二子序列对中包括各长度的第二子序列对,所述第二长度与所述第一长度的差值的总和在所述各长度与所述第一长度的差值的总和中最大。
6.根据权利要求4或5所述的方法,其特征在于,所述方法还包括:
当两个第二子序列对存在交集时,删除两个第二子序列对中的任意一个。
7.根据权利要求4所述的方法,其特征在于,所述第一长度是根据所述第一二进制序列的长度确定的。
8.一种电子设备,其特征在于,包括:存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111505985.XA CN114356220B (zh) | 2021-12-10 | 2021-12-10 | 基于dna存储的编码方法、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111505985.XA CN114356220B (zh) | 2021-12-10 | 2021-12-10 | 基于dna存储的编码方法、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114356220A CN114356220A (zh) | 2022-04-15 |
CN114356220B true CN114356220B (zh) | 2022-10-28 |
Family
ID=81098780
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111505985.XA Active CN114356220B (zh) | 2021-12-10 | 2021-12-10 | 基于dna存储的编码方法、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114356220B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117669703A (zh) * | 2022-08-17 | 2024-03-08 | 密码子(杭州)科技有限公司 | 用于在分子中存储信息的方法、设备和系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110706751A (zh) * | 2019-09-25 | 2020-01-17 | 东南大学 | 一种dna存储加密编码方法 |
CN112527736A (zh) * | 2020-12-09 | 2021-03-19 | 中国科学院深圳先进技术研究院 | 基于dna的数据存储方法、数据恢复方法及终端设备 |
Family Cites Families (12)
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 |
US20110040488A1 (en) * | 2005-04-15 | 2011-02-17 | Mascon Global Limited | System and method for analysis of a dna sequence by converting the dna sequence to a number string and applications thereof in the field of accelerated drug design |
US11783918B2 (en) * | 2016-11-30 | 2023-10-10 | Microsoft Technology Licensing, Llc | DNA random access storage system via ligation |
CN107169315B (zh) * | 2017-03-27 | 2020-08-04 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 一种海量dna数据的传输方法及系统 |
CN107066837B (zh) * | 2017-04-01 | 2020-02-04 | 上海交通大学 | 一种有参考dna序列压缩方法和系统 |
CN109300508B (zh) * | 2017-07-25 | 2020-08-11 | 南京金斯瑞生物科技有限公司 | 一种dna数据存储编码解码方法 |
CN109830263B (zh) * | 2019-01-30 | 2023-04-07 | 东南大学 | 一种基于寡核苷酸序列编码存储的dna存储方法 |
CN111063394B (zh) * | 2019-12-13 | 2023-07-11 | 人和未来生物科技(长沙)有限公司 | 基于基因序列的物种快速查找及建库方法、系统和介质 |
CN111091876B (zh) * | 2019-12-16 | 2024-05-17 | 中国科学院深圳先进技术研究院 | 一种dna存储方法、系统及电子设备 |
CN112288090B (zh) * | 2020-10-22 | 2022-07-12 | 中国科学院深圳先进技术研究院 | 存有数据信息的dna序列的处理方法及装置 |
CN112382340B (zh) * | 2020-11-25 | 2022-11-15 | 中国科学院深圳先进技术研究院 | 用于dna数据存储的编解码方法和编解码装置 |
CN112582030B (zh) * | 2020-12-18 | 2023-08-15 | 广州大学 | 一种基于dna存储介质的文本存储方法 |
-
2021
- 2021-12-10 CN CN202111505985.XA patent/CN114356220B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110706751A (zh) * | 2019-09-25 | 2020-01-17 | 东南大学 | 一种dna存储加密编码方法 |
CN112527736A (zh) * | 2020-12-09 | 2021-03-19 | 中国科学院深圳先进技术研究院 | 基于dna的数据存储方法、数据恢复方法及终端设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114356220A (zh) | 2022-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9929746B2 (en) | Methods and systems for data analysis and compression | |
US8176234B2 (en) | Multi-write coding of non-volatile memories | |
US20170038978A1 (en) | Delta Compression Engine for Similarity Based Data Deduplication | |
US8937564B2 (en) | System, method and non-transitory computer readable medium for compressing genetic information | |
JP7321208B2 (ja) | ポーラ符号のレートマッチング方法及び装置 | |
CN110021369B (zh) | 基因测序数据压缩解压方法、系统及计算机可读介质 | |
CN114356220B (zh) | 基于dna存储的编码方法、电子设备及可读存储介质 | |
WO2019076177A1 (zh) | 基因测序数据压缩预处理、压缩、解压方法、系统及计算机可读介质 | |
CN112527736A (zh) | 基于dna的数据存储方法、数据恢复方法及终端设备 | |
Holley et al. | Dynamic alignment-free and reference-free read compression | |
CN116594572B (zh) | 浮点数流式数据压缩方法、装置、计算机设备及介质 | |
JP3714935B2 (ja) | 改善されたハフマンデコーディング方法及び装置 | |
Cao et al. | FMG: An observable DNA storage coding method based on frequency matrix game graphs | |
Rødland | Compact representation of k-mer de Bruijn graphs for genome read assembly | |
CN110021368B (zh) | 比对型基因测序数据压缩方法、系统及计算机可读介质 | |
Mu et al. | RBS: a rotational coding based on blocking strategy for DNA storage | |
Žarković et al. | Spontaneous Regression of Cancer: Revealing Granulocytes and Oxidative Stress as the Crucial Double-edge Sword | |
El-Shaikh et al. | Content-based filter queries on DNA data storage systems | |
CN116192154B (zh) | 数据压缩及数据解压方法、装置、电子设备、芯片 | |
CN110957003B (zh) | 一种面向用户隐私保护的高效基因比对方法 | |
Li et al. | HL-DNA: A hybrid lossy/lossless encoding scheme to enhance DNA storage density and robustness for images | |
CN109698703B (zh) | 基因测序数据解压方法、系统及计算机可读介质 | |
CN115061637A (zh) | 磁盘数据索引方法、装置、计算机设备及存储介质 | |
TWI750022B (zh) | 應用於鍵樹的編碼方法、應用於鍵樹的解碼方法與電子裝置 | |
WO2020215951A1 (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220509 Address after: 518000 4th floor, Zhuohong building, Zhenmei community, Xinhu street, Guangming District, Shenzhen, Guangdong Applicant after: Zhongke carbon yuan (Shenzhen) Biotechnology Co.,Ltd. Address before: 1068 No. 518055 Guangdong city in Shenzhen Province, Nanshan District City Xili University School Avenue Applicant before: SHENZHEN INSTITUTES OF ADVANCED TECHNOLOGY |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |