DNA数据存储是一个相对较新的研究领域,因此目前的技术水平仅限于一些开创性的工作,然而,这些工作对这一新兴主题做出了广泛贡献。
4.1首次提到DNA数据存储的概念
使用DNA分子存储数字数据的想法可以追溯到20世纪50年代末,当时苏联物理学家米哈伊尔·萨莫洛维奇·奈曼(Mikhail Samoilovich Neiman)和控制论专家诺伯特·维纳(Norbert Wiener)就合成DNA和RNA分子信息的记录、存储和检索的可能性发表了意见[14,15]. 然而,DNA数据存储的第一次尝试是在1988年,当时艺术家乔·戴维斯和哈佛大学的研究人员合作,将一个5×7的矩阵存储在DNA序列中大肠杆菌一旦破译,就形成了一幅古日耳曼符文的图画,代表生命和女性地球[16]. 在矩阵中,1对应于暗像素,而0对应于亮像素。2007年,亚利桑那大学的科学家发明了一种装置,利用寻址分子对DNA链中的错配位点进行编码。然后,可以通过执行限制摘要来读取这些不匹配,从而恢复数据。这是随后各种有趣工作的起点,引入了多种新颖的编码算法,使DNA数据存储得以实践,并为这一新兴主题做出了广泛贡献。在下文中,我们将介绍参考书目中使用最广泛的研究,并简要分析建议的解决方案。
4.2Church等人首次应用DNA数据存储。
2012年,George Church等人首次对Church In DNA合著的659-Kbyte图书进行编码。在他们的实验中,作者使用了一种非常简单的编码方法,将0随机转换为a或C,将1随机转换为T或G[12]. 然后用喷墨打印机将编码序列作为一系列DNA片段写入微芯片。编码产生了54898个寡核苷酸,包含96个碱基的数据,每端有一个特殊的22碱基序列,允许使用PCR扩增并行复制片段,以及一个唯一的19碱基“地址”序列,表示片段在原始文档中的位置。
然后使用Illumina测序器读取PCR扩增的寡核苷酸,以检索原始文本。该方法产生的DNA片段的存储密度估计超过每立方毫米700兆字节。这一结果代表了DNA中人工编码的最大数据量,并证明DNA的数据密度比最先进的存储介质的数据密度大几个数量级,如图所示。4.
这项工作不仅开创性地证明了使用DNA作为替代存储手段的可行性,同时证明了与传统存储设备相比的非凡容量,而且还揭示了测序可能是一个容易出错的过程。通过分析测序过程中发生的不同错误,这项工作首次研究了编码过程中应遵守的主要约束。
在这重要的第一步之后,接下来的几项工作提出了新的编码技术,试图提供一种稳健的编码,以减少本研究中获得的测序错误。
4.3Goldman等人首次进行生物限制编码。
2013年,Goldman等人[17]提出了一种新的二进制数字数据编码算法,以尊重主要的排序约束。提出了一种使用三值哈夫曼算法将二进制序列的每个字节编码为数字0、1和2的编码方法。然后,这些数字与符号A、T、C和G中的三个相关联,省略了用于前一个数字编码的符号,以确保一行中没有两次使用基数。这种策略避免了均聚物的产生,同时仍然利用了DNA的四基潜能。为了提高寡核苷酸的可靠性并确定数据在原始文件中的位置,Goldman的团队合成了含有100个碱基数据的寡核苷酸,相邻片段之间有75个碱基的重叠,因此每个碱基用四个寡核苷酸表示,形成四倍的冗余。尽管如此,研究人员在测序过程中丢失了两个25碱基的延伸,在解码之前必须手动纠正。本研究中遵循的编码如图所示。5.
因此,这项工作提出的代码构造已被微软研究人员在其后期工作中使用。
4.4Grass等人介绍了Reed–Solomon代码。
为了处理剩余的测序错误,2015年,格拉斯和他的团队[18]首次提出使用Reed–Solomon码在编码中引入纠错。更准确地说,在这项工作中,作者提出了将数据映射到包含Galois字段47元素的块的方法[GF(47)]。每个块的列使用GF(47)中元素组成的唯一索引进行扩展。然后,通过将每个GF(47)元素映射为核苷酸的三联体,将扩展柱编码为DNA,同时确保在最后两个位置没有相同碱基的重复,从而避免了均聚物。每个编码柱代表一个DNA片段,将被合成并存储在二氧化硅中,以确保长期存储而不会损坏DNA。在他们的研究中,作者报告了使用里德-所罗门码(一种用于CD、DVD和一些电视广播技术,如高级电视系统委员会(ATSC)广播的纠错码)编码的83 kB数据的完美检索。存储工作流如图所示。6.
4.5Yazdi等人首次实现了随机访问。
同年(2015年),Yazdi等人[19]引入了一种重要的方法,允许在编码中使用特定且健壮的寻址进行随机访问!在他们的研究中,作者建议在编码数据的两端添加一些特别设计的引物,以允许对特定寡核苷酸进行选择性PCR扩增,而不是对整个寡核苷酸库进行扩增。引物经过特殊设计,对测序错误具有鲁棒性,每个寡核苷酸的编码DNA单词取决于相应的引物。更准确地说,对于每个寡核苷酸,DNA代码是通过确保有效载荷与寡核苷酸的寻址引物之间没有相关性来构建的,因为这将产生二级结构,这可能是灾难性的,并可能导致测序过程中寡核苷酸完全丢失。
在2017年发表的后续研究中[20],作者使用MinION-Oxford Nanopore的手持定序器读取DNA,同时使用JPEG压缩降低合成成本,提供了一个测试其拟议编码效率的实验。本研究专门针对MinION所犯的错误类型设计了纠错算法。结果是一个无错误的读出结果,今年早些时候,该团队为两个压缩图像存储并排序了大约3.6 kB的二进制数据编码。最后,在年与人合著的一项关于赵磐的研究中[21],该研究小组建议使用修复技术来校正解码图像的变色,这些变色是由测序过程中引入的损坏引起的。
4.6Blawat等人在封头上的Reed–Solomon代码。
2016年,Blawat等人[22]发布了另一种构建健壮四元码的有趣方法。在他们的工作中,作者提出了一种创建四元码的新方法,即使用以下算法将某些数字数据的每个字节编码为5个核苷酸。首先,将前三对位中的每一对编码为1个核苷酸,并分别置于产生的DNA单词的第一、第二和第四位置。然后,最后一对位可以编码成一对核苷酸,并将其放置在产生的DNA单词的第三和第五位置。上述编码如图所示执行。7因此,对于每个字节,提供了4个不同的DNA单词。为了确保遵守关于最大运行长度的限制,对4个选项进行了过滤,以避免产生均聚物。
为此,作者建议只保留不违反以下规则的选项:
根据上述约束条件,每个数据字节至少可以找到2个有效的DNA符号,从而引入一些冗余,可用于错误检测。更准确地说,作者建议将不同的码字选项分为不同的预定义簇,并根据字节的位置使用特定簇的编码对每个输入字节进行编码。例如,一种选择是使用集群A中的码字表示偶数位置,集群B表示奇数字节位置。因此,如果错误将预期在一个集群中找到的码字替换为另一个属于其他集群的码字,则可以进行错误检测。此外,在这项工作中,作者建议使用Reed–Solomon码对寻址报头进行增强,以实现更可靠的解码。
4.7Erlich等人使用喷泉密码进行DNA编码
同年(2016年),哥伦比亚大学研究人员亚尼夫·埃利希(Yaniv Erlich)和迪娜·齐埃伦斯基(Dina Zielenski)发表了一种基于喷泉代码的方法[23],视频流中使用的纠错代码。作为他们方法的一部分,他们使用该代码在计算机上生成许多可能的寡核苷酸,然后在体外对其进行筛选,以获得所需的特性。研究人员只关注不含均聚物和高G含量的序列,编码并读出了无错误的超过2 MB的压缩数据,存储在72000个寡核苷酸中,包括计算机操作系统、电影和亚马逊礼品卡。它们的编码如图所示8并遵循以下步骤。
首先,将输入的二进制文件分段。然后使用Luby变换,通过从输入序列中随机选择片段并逐位添加它们来创建比特滴,同时附加用于选择的随机种子。生成的比特液滴随后被编码为四元并进行扫描,以满足GC含量和均聚物的生物约束。不遵守上述限制的编码液滴将被丢弃,而其余液滴用于制造寡聚物。重复此过程,直到产生足够的寡核苷酸,从而产生密集的压缩编码,其容量达到1.98位/nt。
4.8Microsoft研究人员提供的高效端到端工作流
2016年,Borhholt等人在微软的一项研究中提出了一种基于DNA的存档系统,该系统使用了Goldman等人引入的四元代码。在这项研究中,他们通过使用自己的寻址引物来避免四重冗余,以允许随机存取,从而改进了编码[24]. 2017年,微软的研究人员提出了一些额外的研究,以改进他们的结果,使用聚类算法对序列器提供的多次读取进行聚类和纠正,从而获得更好的重建质量[25,26]. 最后,在2019年,微软的一个团队成功地将单词“hello”编码在人造DNA片段中,并使用一个完全自动化的端到端系统将其转换回数字数据,如[27].
4.9Appuswamy等人创建了一个新的DNA数据库。
在[28]作者提出了一种使用DNA编码对结构化数据库信息进行编码并实现数据库操作的新方法。在这项工作中,结构化数据库信息(即关系表)和数据库操作以两种不同的方式编码。第一种编码利用了数据库中的固有结构。换句话说,可以使用主键将表中记录的每个属性链接到相应的记录。因此,同一记录的属性可以跨不同的DNA序列分布,而无需寻址,只使用主键,从而减少了地址所需的空间。
信息使用字典编码进行压缩,字典也用DNA编码。随后,尽可能多的属性与主键一起存储在DNA序列中(以将同一记录的属性链接在一起)。一个奇偶核苷酸也被添加到每个DNA序列中用于错误检测。测序后,使用奇偶核苷酸和DNA序列的长度来丢弃无效序列。将其余序列对齐以计算一致性。在实验中,基于数据库基准TPC-H的子集,对多个表进行编码、合成、排序和完全恢复。
这项工作是从数据管理系统的角度解决DNA数据存储问题的第一步,提出了一种使用DNA作为关系数据库管理系统的存档层的体系结构。实验表明,使用合成DNA存档和恢复数据不仅可行,而且还利用数据库知识优化编码和解码过程,甚至直接在DNA上执行SQL操作
4.10DNA图像存储的闭环优化编码解决方案
上述对最新技术的所有研究,通过尊重第节中讨论的生物限制,为构建数字数据的四元编码提供了一些方法。三每一种编码都有不同的优点和缺点,而且由于该课题还很新,因此有必要提供新的编码思路,以帮助丰富现有的研究并提高存储数据的质量。
由于DNA数据存储的主要缺点是合成成本高,书目中提出的编码方法试图提高存储容量,同时也对测序错误具有鲁棒性。为此,上述大多数研究都提出在编码之前用JPEG压缩图像。然而,没有研究提出一种控制这种压缩的方法,使得它提供了一种闭环解决方案,该解决方案可以允许为给定的编码潜力选择最佳的压缩参数。在我们的研究中[29],我们包括了一个源分配算法,它不仅可以降低合成成本,而且可以保证存储图像的最佳质量,从而达到预定义的编码速率和给定的合成成本。由于低复杂度的源分配需要固定长度的代码,我们还提出了一种新的高效算法,用于构建健壮的固定长度DNA代码,从而简化了核苷酸分配方法。我们还介绍了两种不同的映射方法。第一个出现在[29]处理模式重复,这可能是导致Illumina测序器中错误增加的原因,但之前的研究尚未解决,第二个问题出现在[30]旨在减少错误纠正后可能残留的替换错误的视觉影响。实现固定长度编码器的原因是可变长度编码对排序错误的鲁棒性较差。换句话说,在发生错误的情况下,可变长度编码很容易丢失有关编码数据结构的重要信息,这可能导致输入图像的错误重建。为了证明这一说法[31]我们还实现了一个受经典二进制JPEG编码器启发的可变长度编码器。这一想法的产生得益于JPEG Ad Hoc小组,该小组最近对建立一个新的JPEG标准感兴趣,以在DNA中进行图像编码。我们提出的解决方案使用了二进制编码的经典JPEG标准的修改工作流,该工作流根据受约束的四元码优化输入图像的压缩,生成对测序错误鲁棒的压缩核苷酸流。