跳过主要内容GydF4y2Ba

NOREC4DNA:使用用于DNA储存的近乎最佳的无数擦除码GydF4y2Ba

抽象的GydF4y2Ba

背景GydF4y2Ba

DNA是一种很有前途的高密度长期数字数据存储介质。由于DNA合成和测序仍然是相对昂贵的任务,用于在DNA中存储数字数据的编码方法应该纠正错误,避免不稳定或容易出错的DNA序列。Erlich和Zielinski在他们基于Luby变换(LT)代码的方法中指出,接近最优的无速率擦除代码,也称为fountain代码,是实现高容量和低错误DNA存储系统的特别有趣的代码。由于LT是最基本的喷泉代码,在使用接近最优的擦除代码进行DNA存储方面还有很大的未开发潜力。GydF4y2Ba

结果GydF4y2Ba

我们提出GydF4y2BaNOREC4DNAGydF4y2Ba,用于使用,测试,比较和改进的软件框架,用于DNA存储系统的近乎最佳的无数擦除码(NORECS)。这些代码可以有效地用于将数字信息存储在DNA中并应对DNA培养基的限制。另外,它们可以适应可变长度的DNA股线,并且具有几乎零的开销。我们描述了设计和实施GydF4y2BaNOREC4DNAGydF4y2Ba.此外,我们提出了实验结果证明GydF4y2BaNOREC4DNAGydF4y2Ba可以灵活地用于评估DNA存储系统中Norecs的使用。特别是,我们表明明显尚未用于DNA存储的NOREC,例如猛禽和在线代码,可以在以前的工作中使用的守则来实现显着的改进。GydF4y2BaNOREC4DNAGydF4y2Ba可以在GydF4y2Bahttps://github.com/umr-ds/NOREC4DNAGydF4y2Ba.GydF4y2Ba

结论GydF4y2Ba

NOREC4DNAGydF4y2Ba是一个灵活和可扩展的软件框架,用于使用、评估和比较DNA存储系统的NORECs。GydF4y2Ba

背景GydF4y2Ba

由于其非常高的存储密度,理论上每克455艾字节(使用2位每核苷酸)[GydF4y2Ba1GydF4y2Ba[其非凡的长寿,脱氧核糖核酸(DNA)是重要介质,用于重要数据的长期和高密度储存。然而,由于作为生物培养基的DNA易受各种突变和读/写误差影响,并且合成和测序DNA的成本仍然是一种决定性因素,因此必须使用足够的编码方案来校正误差并避免不稳定或避免不稳定或避免不稳定或避免不稳定或避免不稳定或避免不稳定或当数字数据存储在DNA中时,易于易于的DNA序列。GydF4y2Ba

提出了几种编码方案以校正读/写误差并避免出错的DNA序列。例如,教堂等人。[GydF4y2Ba1GydF4y2Ba以及Goldman等人[GydF4y2Ba2GydF4y2Ba]使用不同的重叠策略将数字数据映射到DNA链中,并支持纠错。在这些编码方案中,比特0和比特1分别被映射到两个DNA碱基上,从而避免了容易出错的组合,如一个碱基的长重复(称为均聚物)。赫克尔等人[GydF4y2Ba3.GydF4y2Ba]提出了基于索引的编码方案,映射与相应的索引注释的数据,如果没有这些数据分组的进一步修改。此外,接近最佳的无速率纠删码(norec函数),也称为GydF4y2Ba喷泉码GydF4y2Ba是DNA储存中特别有趣的编码方法。例如,Erlich和Zielinski使用Luby transform(LT)代码来实现高容量和低错误的DNA存储[GydF4y2Ba4.GydF4y2Ba].在他们的工作中,他们利用了喷泉码的特殊属性,以便能够为给定输入生成许多不同的数据包,以查找满足为其DNA存储方法定义的限制的数据包。由于LT是最基本的NOREC,因此使用NORECS进行DNA储存的改进存在大的未开发潜力。GydF4y2Ba

ping等人。[GydF4y2Ba5.GydF4y2Ba开发了Chamaeleo,这是一个提供多种DNA存储代码的框架。虽然Ping等人关注的是文献中提出的各种常规(非喷泉)代码,但他们也包括Erlich和Zielinski使用的LT实现。与我们的工作相反,Chamaeleo不包括改变、适应和集成修改或新的错误规则的方法。此外,缺失的框架范围的误差模拟不允许对实际DNA存储的实现方法的可用性进行广泛的比较。GydF4y2Ba

在本文中,我们提出GydF4y2BaNOREC4DNAGydF4y2Ba,用于使用、测试、比较和改进DNA存储编码方案的软件框架。而GydF4y2BaNOREC4DNAGydF4y2Ba专注于喷泉代码,可以比较正常的编码方案。除了多个可扩展的限制规则外,我们还实现了三个最常见的喷泉代码,即LT [GydF4y2Ba6.GydF4y2Ba),在线(GydF4y2Ba7.GydF4y2Ba]和猛禽[GydF4y2Ba8.GydF4y2Ba].本文的贡献如下:GydF4y2Ba

  • 我们提出了一个新的基于NORECs的框架,称为GydF4y2BaNOREC4DNAGydF4y2Ba,灵活地生成满足用户定义限制的DNA存储序列。GydF4y2Ba

  • NOREC4DNAGydF4y2Ba允许在DNA中存储数据的各种编码方案的详细比较。GydF4y2Ba

  • 我们表明NORECS属于DNA储存最合适的代码;Raptor代码产生所有测试指标的最佳结果。GydF4y2Ba

论文组织如下。”GydF4y2Ba接近最优的无速率纠删码GydF4y2Ba章节概述了喷泉的代码和使用的技术GydF4y2BaNOREC4DNAGydF4y2Ba.”GydF4y2Ba执行GydF4y2Ba“部分提出了设计和实施GydF4y2BaNOREC4DNAGydF4y2Ba.我们呈现使用的实验结果GydF4y2BaNOREC4DNAGydF4y2Ba在“GydF4y2Ba结果GydF4y2Ba“节。最后,”GydF4y2Ba结论GydF4y2Ba“本节总结了本文,并概述了未来工作的领域。GydF4y2Ba

接近最优的无速率纠删码GydF4y2Ba

理论上,NORECs可以用来生成无限多的编码符号(在实践中,存在一些限制)。而且,只有少量的GydF4y2Ba\((1+\) * n\)GydF4y2Ba必须正确接收编码符号以完全重建原始信息。由于只要收到足够数量的符号就没有收到的(并且其中)符号并不重要 - 就像在喷泉下的桶一样,它不关心它收集的水滴 - 这些代码也是已知的作为GydF4y2Ba喷泉码GydF4y2Ba.GydF4y2Ba

通常,喷泉代码的应用如下。首先,使用分布函数来确定每个数据包的度数。这些数据包根据其程度使用异或(XOR)填充随机块,然后通过擦除通道发送给接收方。在接收到传输数据包的足够子集后,接收端使用接收到的数据包和其中包含的块的指示来计算原始数据。要重建已编码的数据,接收者要么必须知道混合在给定数据包中的数据块列表(例如,作为传输的一部分),要么必须知道分布函数以及初始化编码过程中使用的随机数生成器所用的种子。GydF4y2Ba

露比变换编码GydF4y2Ba

LT代码[GydF4y2Ba6.GydF4y2Ba]由润滑性提出被认为是最基本和最先锋的汇报规范。LT将原始文件划分为GydF4y2BaNGydF4y2Ba同样长的“块”,然后使用异或操作符组合成包,如图所示。GydF4y2Ba1GydF4y2Ba.GydF4y2Ba

图1GydF4y2Ba
图1GydF4y2Ba

使用LT编码GydF4y2Ba

编码过程可总结如下:GydF4y2Ba

  • 选择的程度GydF4y2BaDGydF4y2Ba从概率分布函数GydF4y2BaPGydF4y2Ba()。GydF4y2Ba

  • 选择GydF4y2BaDGydF4y2Ba均匀随机分布不同的块。GydF4y2Ba

  • 生成结果包GydF4y2Ba\ (t_i \)GydF4y2Ba通过使用XOR运算符组合所有选定块。GydF4y2Ba

  • 向包中添加重构信息(选定的块数或种子)。GydF4y2Ba

Luby为他的LT编码方案提供了两个分布函数[GydF4y2Ba6.GydF4y2Ba].第一个分布函数,称为“理想孤子”分布,被卢比证明是数学上理想的。它作用于从1到整数GydF4y2BaNGydF4y2Ba, 和GydF4y2BaNGydF4y2Ba作为函数的唯一参数。其定义如下:GydF4y2Ba

$ ${对齐}\ \开始开始{对齐}\ displaystyle \ρ(1)& ={\压裂{1}{N}}, \ \ \ displaystyle \ρ(k) & = \压裂{1}{k (k - 1)} \ qquad (k = 2 3 \ ldots, N)。\ \最终{对齐}\{对齐}$ $GydF4y2Ba
(1)GydF4y2Ba

如图所示。GydF4y2Ba2GydF4y2Baa、 此函数具有单一模式,然后向下展平到指定值GydF4y2BaNGydF4y2Ba.因为只有参数GydF4y2BaNGydF4y2Ba可以选择,模式的位置GydF4y2Ba\(rho (2) = 0.5\)GydF4y2Ba以及它的值不能被改变。GydF4y2Ba

图2GydF4y2Ba
figure2GydF4y2Ba

孤子分布GydF4y2Ba

根据Luby的说法,这个功能非常脆弱,因此不适合实际应用。因此,他提出了这个分布函数的鲁棒形式,称为“鲁棒孤子”分布,它使用一组元素GydF4y2Ba\ \(τ(i) \)GydF4y2Ba扩展理想孤子分布(见Eq. (GydF4y2Ba2GydF4y2Ba),添加一个尖峰模式在程度1。除了参数GydF4y2BaNGydF4y2Ba已经定义在理想孤子分布中,两个额外的参数GydF4y2BaKGydF4y2Ba和GydF4y2Ba\(\delta\)GydF4y2Ba介绍了。而GydF4y2BaKGydF4y2Ba与GydF4y2Ba\(K定义了附加峰的整数位置,GydF4y2Ba\(\delta\)GydF4y2Ba描述预期的(实值)误差概率。GydF4y2Ba

$$ \ begin {seconaled} \ begin {aligned} \ displaystyle \ tau(i)&= {\ frac {1} {ik}},\ qquad \ qquad(i = 1,2,\ ldots,k-1),\,\\ \ displaystyle \ tau(i)&= {\ frac {\ ln(r / \ delta)} {k}},\ qquad(i = k),\,\\ \ displaystyle \ tau(i)&=0,\qquad \qquad \quad (i=K+1, \ldots ,N).\,\\ \displaystyle \text {with }&R = N/K\,\\ \end{aligned} \end{aligned}$$
(2)GydF4y2Ba

最后,如等式所示(GydF4y2Ba3.GydF4y2Ba),价值观GydF4y2Ba\ \(τ(i) \)GydF4y2Ba添加到GydF4y2Ba\(\ rho(i)\)GydF4y2Ba事后标准化。GydF4y2Ba

$$\begin{aligned}\begin{aligned}\mu(i)=\dfrac{\rho(i)+\tau(i)}{\sum{j=1}{N}(\rho(j)+\tau(j))}\end{aligned}\end{aligned}$$GydF4y2Ba
(3)GydF4y2Ba

数字GydF4y2Ba2GydF4y2BaB显示了各个参数对两个分发功能的影响。虽然选择GydF4y2BaNGydF4y2Ba确定参数的最大度数GydF4y2BaKGydF4y2Ba确定额外峰的位置。随着时间的增加GydF4y2Ba\(\delta\)GydF4y2Ba,概率转向2度2.因此,来自第二个峰值和所有其他度GydF4y2Ba\ (> 2 \)GydF4y2Ba,小的概率值减小到第2阶的模态。GydF4y2Ba

在编码过程中生成的数据包的解码可以在不进行预先排序的情况下进行。对于解码,数据包首先被收集并(尽可能地)组合在一起,以便在每种情况下减少这些数据包的程度。图中显示了解码带有三个块的文件的说明。GydF4y2Ba3.GydF4y2Ba.如图所示。GydF4y2Ba4.GydF4y2Ba,如果数据包2丢失,解码器仍然可以重建信息。GydF4y2Ba

图3GydF4y2Ba
图3GydF4y2Ba

解码文件分为三个块GydF4y2Ba

图4GydF4y2Ba
图4.GydF4y2Ba

丢包解码GydF4y2Ba

由于基于异或算子的喷泉码的特殊构造,所有NOREC方法的解码都可以用线性方程组的形式表示GydF4y2Ba\(Ax=b\)GydF4y2Ba,如图所示。GydF4y2Ba5.GydF4y2Ba. 这确保了解码过程中的歧义(如前一示例中所示)可以避免,因此可以最佳地将分组减少到原始消息。GydF4y2Ba

图5GydF4y2Ba
图5.GydF4y2Ba

解码矩阵后GydF4y2BaMGydF4y2Ba收到的数据包GydF4y2Ba

在GydF4y2BaA.GydF4y2Ba,直线上所有的1GydF4y2Ba我GydF4y2Ba描述数据包中的块GydF4y2Ba我GydF4y2Ba合并XOR手术。一个例子显示在Eq. (GydF4y2Ba4.GydF4y2Ba).GydF4y2Ba

$$ \开始{对齐} \开始{对齐} A [1] - = \开始{pmatrix} 0&1&0 0 1&1 \端{pmatrix}&\ Leftrightarrow \\ B [1] - = {{{\ veebar}}} _ {J = 0} ^ {| A [1] |} A [I,J] \ CDOT大块[J] =组块[1] \ veebar组块[4] \ veebar组块[5] \端{对齐} \端{对齐} $$GydF4y2Ba
(4)GydF4y2Ba

网络编码GydF4y2Ba

在线代码GydF4y2BaMaymounkov提出[GydF4y2Ba7.GydF4y2Ba]改善LT代码。在线代码与LT代码解决了主要问题,即LT代码不能保证GydF4y2Ba\((1+\epsilon)*n\)GydF4y2Ba生成的数据包,GydF4y2BaNGydF4y2Ba原始消息的某些部分以足够的方式编码。这个问题是优惠券收集者问题的表现[GydF4y2Ba9GydF4y2Ba].如果原始消息的一个块被编码的频率较低(例如,只有一次或甚至是零次),这些部分在解码时就更容易受到攻击,因为包含这些块的包的丢失是无法补偿的。由于喷泉码伪随机地将几个块组合成包,也可能出现缺乏单个包会阻止大量块被重建的情况。为了防止这个问题的发生,Online代码采用两阶段方法。首先,在所谓的外部编码中创建辅助块。然后,在内部编码步骤中,它们与消息块一起最终被编码到包中。特别是在外编码过程中,GydF4y2Ba\(M=\lceil 0.55\cdot q\cdot\epsilon\cdot F\rceil\)GydF4y2Ba辅助包被创建。然后,将各组块被随机地混合到GydF4y2BaQGydF4y2Ba使用XOR的不同AUX包[GydF4y2Ba7.GydF4y2Ba].像文件的数据块,所产生的GydF4y2BaMGydF4y2Ba在内部编码步骤中,AUX包被认为是常规的输入。在此阶段,通过随机选择度数来生成数据包GydF4y2BaNGydF4y2Ba从分布函数。因此,从块集和AUX块的并集中选择,GydF4y2BaNGydF4y2Ba独特而均匀分布的元素混合在这个包中。此步骤将无限重复,直到出现预定义的条件。这种情况可能是,例如,达到一定数量的创建包,或成功解码与同时运行的解码器。GydF4y2Ba

在线码中编码内容的解码过程与LT码类似。然而,解码阶段必须按照编码过程的相反顺序进行。GydF4y2Ba

图6GydF4y2Ba
figure6GydF4y2Ba

文件的在线解码分为三个块,其中5个生成的数据包和GydF4y2Ba\(Q = 1 \)GydF4y2Ba

如果在解码的开头(例如,在第一个数据包之后)的映射最初使用的辅助数据包的映射已经可用,则解码器可以减少AUX分组并在实际传输期间使用正确的块执行映射。图2中所示的示例的减小。GydF4y2Ba6.GydF4y2Ba如图所示。GydF4y2Ba7.GydF4y2Ba.GydF4y2Ba

图7GydF4y2Ba
figure7GydF4y2Ba

减少AUX报文GydF4y2Ba

猛禽代码GydF4y2Ba

猛禽GydF4y2BaShokrollahi开发的代码[GydF4y2Ba8.GydF4y2Ba]第一码码(理论上)线性编码和解码时间。作为Raptor代码(对于Rapid Tornado)的名称建议,它们基于Tornado代码,可以使用固定错误率校正擦除。这些代码需要多数量的块,而不是簧片 - 所罗门代码[GydF4y2Ba10.GydF4y2Ba]但是编码和解码的速度要快得多。同时,有几种原始方法的变种,例如,R10 [GydF4y2Ba11.GydF4y2Ba]或RaptorQ守则[GydF4y2Ba12.GydF4y2Ba].根据程序,用途和使用的面积,各种专利可申请[GydF4y2Ba13.GydF4y2Ba那GydF4y2Ba14.GydF4y2Ba].GydF4y2Ba

类似于先前提到的在线代码,猛禽编码基于由外部和内部编码组成的两步​​处理。虽然内部编码(就像内部解码)包括LT编码,但是猛禽代码的外部编码包括一个或一系列具有固定速率的擦除代码。这种外部编码阶段的可能过程是使用灰度序列的编码,然后是低密度奇偶校验检查(LDPC)代码。或者,可以使用或组合使用具有固定速率的汉明代码或任何其他擦除码。这种方法结合了与Norec类的代码编码的固定速率编码的优点。GydF4y2Ba

与目前所描述的喷泉代码不同,Raptor编码具有(理论上的)可能块数量的固定上限。这个上限也限制了数据包的最大程度。因此,Raptor代码使用固定的(无参数的)分布函数,如Eq. (GydF4y2Ba5.GydF4y2Ba).这个函数使用给定范围内的一个随机数GydF4y2Ba\([1,2 ^{20} = 1048576]) \)GydF4y2Ba来确定每个包的度数。GydF4y2Ba

$$ \ begined {对齐} \ begin {对齐} f(x)f(x)= {\ belt \ begin {array} {ll} 1&{} \ text {for} x <10241 \\ 2&{} \ text{for} x <491582 \\ 3&{} \ text {for} x <712794 \\ 4&{} \ text {for} x <831695 \\ 10&{} \ text {for} x <948446 \\11&{} \ text {for} x <1032189 \\ 40&{} \ text {else} \ end {array} \ rity。} \结束{对齐} \结束{对齐} $$GydF4y2Ba
(5)GydF4y2Ba

数据编码分为两个步骤。首先,使用固定速率的代码,使用原始数据创建用于重建的附加信息。其次,利用LT编码技术将生成的信息编码成多个包。虽然在实践中,第一步存在各种擦除码,但主要遇到的是格雷码和随后的LDPC码的组合。这可以用格雷码的简单性和LDPC的特性来解释。通过这种组合(特别是由于LDPC码在Shannon容量下操作),有可能以几乎100%的几率成功地用非常小的包开销重构消息(对于1000个块,使用非系统方法创建大约1-2个额外的包)。在Raptor代码的第一步中生成的中间块的数量由Eq. (GydF4y2Ba6.GydF4y2Ba)这取决于块的数量。GydF4y2Ba

$$ \开始{对齐} \开始{对齐} F(k)的=&X \在{\ mathbb {N}} \文本{与} X \ CDOT(X-1)\ GE 2 \ CDOTķ\文本{和} \\&\存在!Ĵ
(6)GydF4y2Ba

而GydF4y2BaFGydF4y2Ba(GydF4y2BaKGydF4y2Ba的辅助功能GydF4y2BaGGydF4y2Ba(GydF4y2BaKGydF4y2Ba), 功能GydF4y2BaGGydF4y2Ba(GydF4y2BaKGydF4y2Ba)计算要使用Gray代码创建的中间块的数量。这个函数GydF4y2BaHGydF4y2Ba(GydF4y2BaKGydF4y2Ba)计算由LDPC生成的中间块的数量。总和GydF4y2Ba\(l=k+g(k)+h(k)\)GydF4y2Ba在第一步之后表示中间块的总量。这些GydF4y2Ba\ (k + g (k) \)GydF4y2Ba然后将块用作生成的输入GydF4y2BaHGydF4y2Ba(GydF4y2BaKGydF4y2BaLDPC编码块。这确保在LDPC编码期间捕获中间步骤中的所有块和先前生成的块。如果第一阶段的实施猛禽编码由两个以上的固定利率代码,生成中间块的数量必须确定为每个这些代码,然后根据所需的订单,一起块前面的中间作为输入下列代码块。GydF4y2Ba

这个GydF4y2Ba\(h(k)+ g(k)\)GydF4y2Ba然后使用LT编码将在第一步骤中生成的中间块进行编码到分组中。标准过程是选择具有预定义分布功能的数据包的程度。与到目前为止所使用的喷泉代码相比,要使用的数据包的块的最终选择不会被同样分布,但是取决于特定算法。因此,该功能可能因猛禽代码的版本而异。GydF4y2Ba

数字GydF4y2Ba8.GydF4y2Ba显示运行这种无速率编码的结果。第一个包包括GydF4y2Ba\(d = 4,a = 5,b = 1 \)GydF4y2Ba第一块(GydF4y2Ba\ (b = 1 \)GydF4y2Ba),第五部分(GydF4y2Ba(b = 1 + a = % 11 = 5)GydF4y2Ba),第四个部分(GydF4y2Ba\(b =((1 + a)\%11 + a \%11)+ a \%11 = 4 \)GydF4y2Ba)和第二部分(GydF4y2Ba\ (b = (((((1 + 1) \ % 11 + \ % 11) + \ % 11) + \ % 11) + \ % 11) + 11 = 2 \ \ %)GydF4y2Ba).GydF4y2Ba

图8GydF4y2Ba
图8.GydF4y2Ba

使用d = 4,a = 5和b = 1生成猛禽数据包GydF4y2Ba

此过程将允许的输入块的大小(以及单个数据包的最终大小)限制为GydF4y2Ba\(2^{20}-x\)GydF4y2Ba,在那里GydF4y2BaxGydF4y2Ba是在第一步中生成的中间块的数量。为了避免这种限制,在RFC 5053中[GydF4y2Ba11.GydF4y2Baraptor编码的作者建议除了块(称为“源块”)之外,还建立了“子块”。这些在算法中评估为单独的运行。要启用解码,只有当前块号和必须知道使用的子块数。这允许我们分开对每个块进行编码,提供几乎任意数量的细分。GydF4y2Ba

由Raptor码编码的包的重构与在线解码非常相似。每个中间块的映射必须以与编码期间完全相同的方式生成。解码器必须知道块的数量、固定速率代码及其顺序。虽然大多数实现步骤的数量和顺序是标准化的,因此可以视为给定的,但发送方必须传输原始块(或子块)的数量。如果相应的信息已知,Raptor码的解码也可以简化为一个线性方程组,并使用高斯消去法求解[GydF4y2Ba15.GydF4y2Ba那GydF4y2Ba16.GydF4y2Ba]或置信传播[GydF4y2Ba17.GydF4y2Ba那GydF4y2Ba18.GydF4y2Ba].GydF4y2Ba

DNA存储系统中的常见错误GydF4y2Ba

要利用所述代码的无税率特性,GydF4y2BaNOREC4DNAGydF4y2Ba包括定义DNA序列误差概率的各种规则。GydF4y2Ba

突变GydF4y2Ba取决于合成或储存方法,根据其特征,各个DNA链受到不同突变和突变概率。虽然所有四个碱基易受简单突变的影响,但这些突变的效果,可恢复和频率存在差异。最常见的突变之一是从胞嘧啶形成尿嘧啶,这种胞嘧啶,如胸腺,将补体腺嘌呤,因此如果在后面测序,则产生不同的序列。在鸟嘌呤氧化和8-氧通量的相关形成中存在类似的缺陷。这可以与胞嘧啶和腺嘌呤结合,因此可能导致错误。除了一个逐一的突变,插入和缺失可能导致DNA序列的进一步修饰。GydF4y2Ba

均聚物GydF4y2Ba含有相同碱基重复次数较长的聚合物称为均聚物。这些片段在合成、聚合酶链反应(PCR)和随后的测序过程中高度不稳定。一方面,由于下一代测序系统如何检测核苷酸的存在,均聚物很难正确测序[GydF4y2Ba19.GydF4y2Ba]. 另一方面,在PCR过程中(因此在合成和测序过程中),均聚物区域的酶可能发生所谓的“滑移”。较长的均聚物大大增加了此类错误的概率,因此应避免。GydF4y2Ba

GC含量GydF4y2Ba如等式中所示的DNA链的GC含量。(GydF4y2Ba7.GydF4y2Ba)表示的比例(即,频率)的碱基鸟嘌呤和胞嘧啶相对于所述完整链的长度的:GydF4y2Ba

$$ \ begined {对齐} \ begin {对齐} \ text {gc content} = \ dfrac {| g | + | c |} {| | g | + | c | + | a | + | t |} \ cdot 100\%\ text {,}&\ text {where |} \ star \ text {|是} \\&\ text {base} \ star \ text的频率{在给定的序列中。} \结束{对齐} \ end {aligned} $$GydF4y2Ba
(7)GydF4y2Ba

由于碱基对A和T总是形成两个氢键,而对G和C总是形成三个氢键,并且GC对往往由于堆叠相互作用而在热力学上更稳定,因此在低GC含量的序列中出现统计上更频繁的错误,如流产和突变[GydF4y2Ba20.GydF4y2Ba那GydF4y2Ba21.GydF4y2Ba]. 这种效应可以在自然界中观察到,在自然界中,嗜热生物的GC含量明显高于可比物种。在自然界中,根据生物体的不同,GC含量在约20%到近80%之间变化。为了设计稳定、可合成和可测序的DNA储存,40–60%的平衡GC含量是有利的。这适用于整个序列和每个窗口的GC内容。GydF4y2Ba

微卫星GydF4y2Ba也称为“短串联重复”,两到六个碱基对长序列在DNA序列中经常重复称为微卫星。虽然微卫星在人DNA中发生大约一百万次,但由于在测序和再现过程中存在问题,它们仍然认为不稳定。这些误差源的最常见形式是二核苷酸重复。GydF4y2Ba

二核苷酸重复序列属于微型卫星,由两个碱基对的长重复序列组成。突变的原因是PCR过程中很有可能发生“滑移”。这会导致新合成的股线形成一个环,该环在修复尝试期间不会被切断,但会导致股线的延伸。由于这些位置无法通过校对(作为更正)识别,因此通常会导致无法恢复的错误。序列自身重复的频率越高,在PCR过程中形成环的概率就越高,从而改变DNA。GydF4y2Ba

类似于二核苷酸重复,这种类型的错误也是基于核苷酸序列的重复。然而,顾名思义,三个核苷酸的重复被考虑。GydF4y2Ba

执行GydF4y2Ba

NOREC4DNAGydF4y2Ba使用多处理和最重要的函数的快速C.在Python 3中编写。另外,某些方法被实现为CUDA内核,因此可以可选地在GPU上执行。GydF4y2BaNOREC4DNAGydF4y2Ba基于面向对象的方法,也就是说,它灵活地支持关于新方法、编码方案、指标和变异规则的扩展。GydF4y2Ba

工作流程GydF4y2Ba

将信息存储在DNA中的步骤如下。首先,从所选(二进制)擦除代码中生成多个分组。二进制 - 四元转换器使用每个分组的基座A,C,G和T生成四元表示。然后使用任何合适的方法合成并储存所得的DNA序列。在稍后的时间点,使用四元二进制转换器进行跟踪这些DNA链并将其作为单独数据包传递给解码器。然后解码器使用原始文件使用GydF4y2Ba\((1+\epsilon)*n\)GydF4y2Ba包。数字GydF4y2Ba9GydF4y2Ba显示所描述的工作流程。应该注意的是,DNA链的数量,因此接收的二元包数可以小于最初编码的DNA股线。我们在下面更详细地描述工作流的组件。GydF4y2Ba

图9GydF4y2Ba
图9.GydF4y2Ba

用于存储/检索/从DNA中存储/检索数据的工作流程GydF4y2Ba

编码器GydF4y2Ba

编码器将文件分成可自由选择的块数(或具有选定块大小的包),并允许创建无限数量的包。可以创建单独的包,也可以一次生成固定数量的包。此外,我们在解码器实现中添加了一个接口。这样,就有可能生成数据包,直到选定的解码器信号可以进行解码为止。将静态开销与解码器结合使用也是可能的。GydF4y2Ba

为了存储关于给定文件的附加信息,编码器允许在编码期间添加一个可选的头块。这个人工块可以存储诸如文件名和最后填充块的正确长度等信息。GydF4y2Ba

作为一个附加特性,可以在每个包中存储包含的块的直接枚举。这允许编码器在不相等的错误保护模式下工作[GydF4y2Ba22.GydF4y2Ba那GydF4y2Ba23.GydF4y2Ba].由于确定优先级包使得使用种子来简单重构已编码的块变得不可能,因此这里需要显式枚举每个包使用的块数。这允许用户在初始化编码器时指定一个高优先级解码的块列表。这些包可以被编码成1度的单独包,也可以有更高的机会被混合到更小度的包中(例如,GydF4y2Ba\(\ Le 4 \)GydF4y2Ba).GydF4y2Ba

除了直接使用编码器,GydF4y2BaNOREC4DNAGydF4y2Ba包括基于完全并行执行创建包的多个脚本。这包括通过在给定的种子范围内迭代所有可能的种子来生成所有可能的包。这支持查找给定输入的最佳总体包。GydF4y2Ba

目前,GydF4y2BaNOREC4DNAGydF4y2Ba提供以下Norecs的实现:LT,在线和猛禽。实现的分发功能是:RobustSoliton,IdealSoliton以及Online和Raptor的默认实现以及自定义“适应分布”,允许分发功能的程序修改。GydF4y2Ba

数据包结构GydF4y2Ba

由于前面提到的优先级分组需要明确说明所使用的块,但是没有优先级的LT实现通过指定种子实现了更高的效率,因此为两个版本定义了不同的存储结构。GydF4y2Ba

表1不同LT包的结构GydF4y2Ba

而数据包结构如表所示GydF4y2Ba1GydF4y2Ba可以作为默认设置,每个字段的长度可以修改。如果块的总数量或最大种子适合较小的字节数(或需要更多的空间),这可能很有用。此外,在创建包时可以省略静态信息,例如文件被分割成的块的总数。虽然后者大大降低了总开销和每个包的开销,但为了成功解码,这些信息必须在带外传输。如果这个信息丢失了,解码必须测试所有可能的组合(例如,所有可能的分割数)。GydF4y2Ba

如果解码过程中使用的分布函数及其参数未知,则需要明确指定度。或者,可以存储有关分发及其配置的信息。GydF4y2Ba

用于为表中的“校验和”字段生成数据的函数GydF4y2Ba1GydF4y2Ba可以由(lambda)函数替换。GydF4y2BaNOREC4DNAGydF4y2Ba包含以下预先定义的代码:“的NoCode”,“CRC8”,“CRC32”以及“里德 - 所罗门”与自由配置的修复符号大小。GydF4y2Ba

虽然“的NoCode”可以作为一个恒等函数和供应品的包中不存在完整性检查,并因此降低了开销,“CRC8”和“CRC32”引入的开销,还提供相应的完整性检查。虽然使用简单的校验和可能足以模仿在DNA介质删除信道,从而确保只有完整的数据包进行解码,该方法将即使单碱基变异增加无效数据包的数量。埃利希和思霖恳[GydF4y2Ba4.GydF4y2Ba]我们已经证明,使用Reed–Solomon代码检查完整性和修复错误会增加正确数据包的数量,即使发生小的突变。由于DNA存储系统中的错误概率取决于各种因素,因此可以自由选择修复符号的数量。GydF4y2Ba

宾QUAT转换器GydF4y2Ba

有几种使用四个基对二进制数据进行编码的方法。一种变体是四元形式的二进制数据的简单转换和直接存储,即表中所示的映射系统GydF4y2Ba2GydF4y2Ba.位对对各个基的具体分配可以自由选择。GydF4y2Ba

表2位元到四元型或DNA碱基的映射GydF4y2Ba
表3映射:一位可以编码成两个不同的DNA基础GydF4y2Ba

除了这些明显的方法外,还研究了文献中的其他概念。例如,教堂等人。[GydF4y2Ba1GydF4y2Ba]每个碱基对存储一位,类似于表中所示的映射GydF4y2Ba3.GydF4y2Ba.虽然这产生了较低的信息密度,但它在突变和读取误差以及均聚物方面实现了更高的鲁棒性。其他方法,例如Limbachiya等人呈现的方法。[GydF4y2Ba24.GydF4y2Ba],仅使用两个或三个的每块的四种可能的碱基,以避免容易出错的序列。GydF4y2Ba

虽然这些映射可以很容易地集成到我们的框架中,GydF4y2BaNOREC4DNAGydF4y2Ba使用表1所示的直接映射方法GydF4y2Ba2GydF4y2Ba. 这是由于理想的信息密度以及所述喷泉码用于防止易出错序列的事实。此转换已广泛应用于相关工作(例如[GydF4y2Ba4.GydF4y2Ba那GydF4y2Ba25.GydF4y2Ba那GydF4y2Ba26.GydF4y2Ba])。GydF4y2Ba

生物规则GydF4y2Ba

为了利用NORECs的好处,我们引入了一个度量标准“错误概率”。这个度量表示一个给定数据包在存储到DNA和从DNA读取整个周期后可读的概率。为了灵活且准确地评估这些错误概率,我们实现了多个规则集。作为参考规则集,Erlich和Zielinski [GydF4y2Ba4.GydF4y2Ba]实施了。虽然这些规则仅关注均聚物和GC内容,但其余的实现添加了可以根据需要配置和启用的各种其他规则。例如,我们提供了快速可靠的C扩展,以加速编码的最重要规则,以及基于解析器的方法,以允许用户轻松修改规则,而无需更深入地了解Python编程。GydF4y2Ba

由于在删除通道中删除错误的减少,在一个或多个世代(如[GydF4y2Ba27.GydF4y2Ba)是没有必要的。因此,只要将一个包的变异概率与代数相乘,就可以得到该包是否应该被丢弃的概率。GydF4y2Ba

以下错误被认为是可能的突变原因:均聚物,独特的X-mers,二和三核苷酸运行,基于长度的错误,A, C, G和T突变概率,(窗口)GC含量,非法符号,随机突变以及反向和反向补体选项。已采取谨慎措施,以确保考虑到合成、存储和测序的错误。均聚物、二核苷酸和三核苷酸的使用规则改编自文献[GydF4y2Ba28.GydF4y2Ba那GydF4y2Ba29.GydF4y2Ba].个体碱基(例如碱基' C '变成' T ')的变异和错误概率主要是根据Grass等人的工作来选择的[GydF4y2Ba29.GydF4y2Ba].有关一般随机发生的错误的陈述是从若干出版物中汇编的[GydF4y2Ba30.GydF4y2Ba那GydF4y2Ba31GydF4y2Ba].GydF4y2Ba

方程(GydF4y2Ba8.GydF4y2Ba)显示GC规则的一个默认函数。而突变概率的分布大致采用了相关工作[GydF4y2Ba21.GydF4y2Ba那GydF4y2Ba28.GydF4y2Ba那GydF4y2Ba30.GydF4y2Ba],这些分布可以在规则系统的构造期间更换。该等式对于在0和30之间的所有值以及70和100之间的所有值以及70和100之间的所有值返回0。对于30和40和60至70之间,这将返回0和1之间的近线性值。GydF4y2Ba

$ ${对齐}\ \开始开始{对齐}\ displaystyle f = \压裂{1}{100}\离开(- \压裂{x ^ 4}{7200} + \压裂{x ^ 3}{36} - \压裂x ^ 2{121}{72} + \压裂{175 x}{6} + 100 \右),\ \ \ displaystyle err_ {gc} & = max (\ min (f, 1), 0) \ \ \{对齐}结束\{对齐}$ $GydF4y2Ba
(8)GydF4y2Ba

MESA实施GydF4y2Ba

使用MESA可获得最高的定制性[GydF4y2Ba32GydF4y2Ba] API。由于MESA作为用于自动评估的合成DNA片段的自动评估和DNA合成,储存,测序和PCR误差的网络工具,不仅允许用户定义的配置,而且还提供REST-API,MESA允许细粒度正确评估每个数据包的错误概率。这种方法的缺点是通过API引入的速度下降。GydF4y2Ba

误差预测精度GydF4y2Ba

由于在不同的科学研究中,单个错误源的变异概率差异很大,因此执行的默认规则被高估了,以至于它们为相同分布的实际变异概率创建了一个紧密的上界。GydF4y2Ba

通过各种合成,扩增和排序方法,所有这些都易受不同误差的影响,进一步增加了普通和准确的误差预测的复杂性进一步增加,因此具有不同的突变和误差概率。此外,误差概率取决于存储在DNA中的信息的持续时间和条件。以这种方式实现,可以通过增加错误的概率来模拟长期存储。GydF4y2Ba

所有规则的应用程序在默认规则集随机生成的DNA序列的结果平均误差概率约23%的序列长度50元(25-percentile std: 33%, var: 11%: 0%, 75 -百分比:21%),约50%为164元(std: 44%, var: 19%, 25%的百分比:21%,75%百分位:80%),而许多文章认为错误概率为1-15%(取决于合成、储存、使用的测序方法,最重要的是,序列的长度)。然而,由于我们采用了已公布数据的突变比例或分布,这种高估可以根据需要通过缩放错误概率来调整。此外,包级错误校正确保小的突变将被修复,因此不会影响解码。GydF4y2Ba

编码期间避免避免GydF4y2Ba

为了对创建的数据包进行快速和可靠的评估,可以在编码期间计算这个度量。所有编码器都允许创建基于严格或弱上限的包。严格的上限只是限制了生成的包可能具有的最大计算错误概率,而弱的上限则允许更高的错误率。如果给定的规则过于严格,导致所有包都接近或超过设置的限制,则弱上限可能有用。详细地说,这个函数计算错误概率,然后(平均分布)绘制0和1之间的一个数字。如果抽取的数字大于或等于估计的错误概率,则认为报文有效并将被使用,否则报文将被丢弃。虽然这种方法产生的包可能不太理想,但即使所有创建的包都有很高的错误概率,这种模式也可以工作。GydF4y2Ba

预处理测序数据GydF4y2Ba

在DNA测序流水线中进行的预先聚类改进了结果,因为它有助于检测低覆盖率的链,从而具有较高误读或突变几率的序列。自GydF4y2BaNOREC4DNAGydF4y2Ba逐行读取FASTA文件,根据序列被排序的频率对聚集序列进行排序,将允许NOREC4DNA更可靠地工作。虽然大多数现代测序管道都相应地执行这些步骤,但我们使用基于snake make的管道“Natrix”[GydF4y2Ba33GydF4y2Ba].GydF4y2Ba

译码器GydF4y2Ba

提供了两个基类作为解码器接口的实现。除了前面提到的减少到一个高斯可解线性方程组,我们实现了一个信念传播译码器。GydF4y2Ba

高斯解码器GydF4y2Ba

我们实现了一个带有部分枢轴的高斯消元版本,以实现尽可能一致、快速和灵活的系统。由于所有实现的NORECs都在GF(2)-空间中工作,因此只使用异或操作,因此我们调整并加速了高斯消去。为了进一步提高解码速度,我们使用Python C-extensions在C语言中实现了算法。所有已开发的解码器都允许使用单独的命令选择是在每个传入包之后进行解码,还是仅在接收到最后一个包之后进行解码。GydF4y2Ba

信仰传播解码器GydF4y2Ba

虽然在解码储存在DNA中的文件等不需要时间的任务中并不特别需要,GydF4y2BaNOREC4DNAGydF4y2Ba包括一个信念传播译码器,可以进一步减少解码时间。该算法将每个传入的数据包传播到已经处理过的数据包,既减少了新数据包的程度,也减少了所有已有数据包的程度。这种方法可以传递减少的数据包的变化。与高斯变量相比,该方法的优点是通过计算的时间分布和可能的部分并行化来提高译码速度。GydF4y2Ba

Pseudo解码器GydF4y2Ba

为了加快编码期间使用解码器,我们为每个解码器开发了一个额外的构造函数,考虑到某些房屋,显着加速了这种解码。此想法仅在每包使用的块集上工作,并忽略数据包的有效载荷。这是可能的,因为在编码期间,才需要确定是否存在对身份矩阵的有效减少。GydF4y2Ba

对于高斯解密,这意味着右侧GydF4y2BaBGydF4y2Ba方程的GydF4y2Ba\(Ax=b\)GydF4y2Ba不需要被解决。只要检查矩阵是否GydF4y2BaA.GydF4y2Ba可以转换为身份矩阵(或第一个)GydF4y2BaNGydF4y2Ba一行GydF4y2Ba\ (m \ n \)GydF4y2Ba矩阵)。信仰传播解码器可以将各个数据包减少到包含所使用的块的数量的Python集。这使得可以使用有效的设置运算符来映射各个数据包缩减。GydF4y2Ba

结果GydF4y2Ba

NOREC4DNAGydF4y2Ba提供多种模拟器,以在各个方面进行比较不同的代码。模拟运行的图示如图2所示。GydF4y2Ba10.GydF4y2Ba.可以在黄色中突出显示可以影响模拟结果的可自由修改和可扩展的元素。不同的编码方法具有明确定义的界面的形式具有均匀的功能,使得它们可以在不改变系统的情况下进行交换。GydF4y2Ba

图10GydF4y2Ba
图10GydF4y2Ba

仿真运行GydF4y2Ba

均匀分布的随机误差GydF4y2Ba

要说明的是DNA存储到介绍可能序列严格的限制,我们使用我们的默认规则集在类“FastDNARules”定义来计算均匀分布的随机生成的序列的误差预测。数字GydF4y2Ba11.GydF4y2Ba显示误差预测的累积密度函数(CDF)和概率密度函数(PDF),其具有长度为120bp的均匀随机DNA序列。PDF在误差值为1.0的峰值,即,所有序列中的大多数具有高误差预测(因此违反了至少一个规则)。CDF显示几乎没有序列的误差值小于0.5。因此,大多数随机序列为DNA存储系统产生高差错率。这表示Norecs的好处,因为它们只能产生产生低差错率的序列。规则集可用于指定用户定义的规则,因此不限于最多100%。虽然自己的每个规则都可以自己定义排除标准,但在给定序列上应用多个规则将产生累计的错误值,在某些情况下将超过1.0(100%)。虽然误差值大于1.0的所有序列违反了至少一个规则,但更高的误差预测表明给定序列违反了多个规则。规则系统可以(可选)返回每个规则的错误值以提供更详细的见解。GydF4y2Ba

图11GydF4y2Ba
figure11GydF4y2Ba

500.000长度为120 bp的均匀随机DNA序列的误差值为CDF(橙色)和PDF(蓝色)GydF4y2Ba

规则对报文结构的影响GydF4y2Ba

为了测试所产生的DNA序列不同的编码(具有分组附加预选一起)的影响,我们编码的图像(部门为.jpg文件的标志)为465个nt使用不同的码的长度相同的分组,并且从这些数据包创建选择的随机样本。GydF4y2Ba

在第一次运行中,创建数据包时没有替换错误值高的数据包。此外,为了便于与已实现的NOREC进行比较,我们分析了由Reed–Solomon算法生成的相同长度的随机选择数据包的基分布。使用32个底座的滑动窗口,图。GydF4y2Ba12.GydF4y2Ba显示生成序列中四个碱基的相对频率(0%:序列的开始;100%:序列结束)。在这里,里德-所罗门包中单个碱基的分布对DNA储存极为不利。与其他碱基相比,碱基A的相对频率远高于序列的大部分,因此表明GC含量不理想,且均聚物的可能性较高。这是因为Reed–Solomon是一个系统代码,在我们的例子中,这意味着编码文件对于所选规则具有不利的分布。必须提到的是,作为所选输入文件的图像具有更长的相同符号序列,这导致在生成的DNA链中出现相应的分布。GydF4y2Ba

图12GydF4y2Ba
figure12GydF4y2Ba

在芦苇型包中的基地分布GydF4y2Ba

这还表明,以系统代码的形式实现Raptor代码不会对创建的包产生积极的影响。在以前的DNA存储方法中(例如,[GydF4y2Ba2GydF4y2Ba那GydF4y2Ba31GydF4y2Ba),这个问题是通过中间代码与适当的替换(使用霍夫曼编码,置乱,或其他)来解决的。然而,这些缓解需要更多的计算工作,并且通常通过插入额外的符号或缺乏泛化来降低存储密度。GydF4y2Ba

图13GydF4y2Ba
figure13GydF4y2Ba

LT包中碱基的分布(鲁棒孤子)GydF4y2Ba

数字GydF4y2Ba13.GydF4y2Ba用鲁棒孤子分布表示随机选择LT包中单个碱基的分布。而不预先选择的分组分发(GydF4y2Ba13.GydF4y2BaA, b)显示出个体碱基的强烈波动,随机选择的预选包生成(GydF4y2Ba13.GydF4y2BaC, d)显示出显著的改进。碱基的分布表明,所选的包具有几乎最优的25%的每个碱基的分布(图。GydF4y2Ba13.GydF4y2Bad).仅在DNA序列的开始和结束处,个体碱基的频率存在较大差异。然而,这可以归因于随机种子和错误检测/纠正附加在序列的开始和结束。期望的25%是由核苷酸在每个窗口的理想分布驱动的。通过25%的平均分布,该序列不太可能包含均聚物,也将有平衡的GC含量约50%。GydF4y2Ba

对于在线编码,该分析提供了类似的结果。这个GydF4y2Ba\(\delta\)GydF4y2Ba选择参数,使得数据包具有与LT和Raptor编码相同的大小。虽然两个变体之间的改进(图。GydF4y2Ba14.GydF4y2Ba在盒子上首先瞥一眼,C)不显而易见(图。GydF4y2Ba14.GydF4y2Ba四种碱基的分布的B,d)表明,与预选的版本具有小得多的方差。GydF4y2Ba

图14GydF4y2Ba
图14GydF4y2Ba

在线数据包中碱基分布情况(质量= 5)GydF4y2Ba

图15GydF4y2Ba
图15GydF4y2Ba

以猛禽号为单位分配基地GydF4y2Ba

对于图1所示的猛禽编码。GydF4y2Ba15.GydF4y2Ba,预选显然有丝毫影响。这是由于猛禽已经实现了与非优化的数据包的好成绩的事实。因此,除了从该DNA序列的开始,所有碱基的发生为13%和36%之间。然而,除了基A,预选后所有碱基平均在25%的最佳(图GydF4y2Ba15.GydF4y2Bad)。GydF4y2Ba

非常低的C内容,可以在所有检查包的开始时清楚地识别出来,这可以用头存储在这里的事实来解释。由于报头包含参数' Number of Chunks '和' Seed ',并且所有包的块的数量是相同的,相同的值存储在这个位置。为了减少场块数均聚物的形成,我们可以应用掩模或减小场的尺寸。另一个解决方案可能是对数据块的数量做出不同的选择,或者不将它们写入头部,而是将它们传输到带外。使用更密集的解码,这些信息甚至可以完全省略。或者,这个字段可以使用常规的DNA存储代码进行编码。这将使信息密度降低一个小百分比,但将保证所有输入满足DNA存储的要求。GydF4y2Ba

我们想强调的是,我们评估中选择的数据包是随机抽取的,不会失去一般性。此实验的其他数据包的图形可以在Github存储库中找到,也可以使用提供的脚本生成。GydF4y2Ba

估计的错误概率的代码GydF4y2Ba

为了进一步分析创建低错误概率序列的能力,我们使用固定序列大小为给定文件创建了所有可能的序列。作为输入,我们使用了一个包含德国童话《睡美人》的文本文件来创建163个nt长的序列。使用2字节种子(以及每个序列末尾的2字节Reed-Solomon代码),我们使用每个代码创建了65,536个序列,并使用默认规则集分析这些序列。GydF4y2Ba

图16GydF4y2Ba
figure16GydF4y2Ba

分布创建序列的误差概率GydF4y2Ba

数字GydF4y2Ba16.GydF4y2Baa显示了错误概率小于40%的所有16538个序列的错误概率分布。平均值(黑色“X”)接近20%的错误概率,上下四分位数分别为17%和23%,我们发现LT表现最差。对于LT,累积核密度估计(red)表明,即使33%的数据包的错误概率也不低于20%。图形GydF4y2Ba16.GydF4y2BaB显示的在线代码仅生成13590序列在指定范围内,但不仅具有19%(2%)稍低的平均误差概率(和下四分位数),而且还产生了一个错误概率接近40%的序列低于20%。GydF4y2Ba

使用Raptor码产生的序列的分布,如图4所示。GydF4y2Ba16.GydF4y2BaC,显示出进一步的改善。虽然基本分布类似于序列使用在线创建的代码,有重大分歧:(a)的组合数的误差概率不到40%是16097,因此高于在线代码,和(b)有更多的序列误差概率较低(特别是0%)。更详细地说,平均值是18%,下四分位数是1%,上四分位数是22%。通过观察累积核密度估计,我们可以看到45%的序列在这一范围内的错误概率低于20%。GydF4y2Ba

而给定的文件被分成163个块(对于Online来说是196个,因为头更大),因此GydF4y2Ba\((1 + \ε)* 163 \)GydF4y2Ba(GydF4y2Ba\((1 + \小量)* 196 \)GydF4y2Ba对于Online)序列将足以解码重建的文件,大量的序列和低错误概率是至关重要的较大的文件相等或较小的序列长度。由于种子通常存储在一个2字节的字段中,我们被限制到65,535个不同的包。如果代码通常产生许多低错误序列,那么我们可以对较大的文件使用2字节字段,而不是对产生更多高错误序列的代码。虽然我们可以而且可能必须将种子字段的大小增加到4字节(甚至8字节),但这将引入开销,从而降低存储密度(并增加成本)。由于LT和Online(在某种程度上)更容易受到优惠券收集者的问题的影响,这些代码通常需要更大的GydF4y2Ba\ε(\ \)GydF4y2Ba而不是猛禽。GydF4y2Ba

易受息票收集器问题的影响GydF4y2Ba

优惠券收集器的问题表示找到拥有完整的碎片所需的所有碎片的复杂性(即解码源符号)。使用它,我们可以分析代码对成功解码原始数据所需的(平均)开销的表现如何。对于LT编码,润滑性指出平均值GydF4y2Ba\(k + O(根号{k})\ ln ^2(k/ δ))\)GydF4y2Ba经编码的符号解码需要的是分成一个文件GydF4y2BaKGydF4y2Ba概率为GydF4y2Ba三角洲\ (1 - \ \)GydF4y2Ba[GydF4y2Ba6.GydF4y2Ba].在线的 [GydF4y2Ba7.GydF4y2Ba]以及猛禽[GydF4y2Ba8.GydF4y2Ba]达到理论上的线性复杂性,因此需要一个平面GydF4y2Ba\((1 + \ε)* k \)GydF4y2Ba(与GydF4y2Ba\(\epsilon\rightarrow 0\)GydF4y2Ba当GydF4y2Ba\ (k \ rightarrow \ infty \)GydF4y2Ba)重建输入文件的顺序。这是由于在两个代码中应用了预编码。GydF4y2Ba

图17GydF4y2Ba
figure17GydF4y2Ba

包含每个区块的数据包数(基于每个区块500个数据包)GydF4y2Ba

数字GydF4y2Ba17.GydF4y2Ba显示输入文件的每个块在创建的包中出现的次数。虽然我们分析了一个只有196个块的编码的500个包,但对于LT来说,几乎没有块被包含在超过25个包中。这意味着(a)由于错误和突变而丢失块的概率更高(块可能有很高的错误率,并将这个错误概率传播到包含该块的创建包),以及(b)对优惠券收集器的问题的敏感性更高。由于每个包只包含几个块,一个块不包含在任何已读包中的概率增加。相比之下,Online和Raptor的每个块至少出现50次,最多出现110次(Online为75次,Raptor为175次),就不太可能出现这些问题。应该注意的是,由于大标题用于在线和使用相同的块大小的决定而不是相同数量的块(前面描述的比较),输入文件的在线代码分成196块,因此不能直接比较。Online代码根据块的数量计算辅助块的数量,因此包含每个块的平均包数高于Raptor。GydF4y2Ba

数字GydF4y2Ba17.GydF4y2Ba说明了为什么在规则对包结构的影响方面,Online和Raptor代码会产生更好的结果,如“GydF4y2Ba规则对报文结构的影响GydF4y2Ba“节。由于这两种代码结合更多的块来创建数据包,它们更有可能使用异或来组合不同的符号,从而创建所有核苷酸的相等分布。从逻辑上讲,这种效果只有在输入文件不是完全随机的情况下才会发生(否则,LT代码也会产生每个基具有几乎完美的25%分布的数据包)。GydF4y2Ba

编码速度GydF4y2Ba

在本节中,我们将评估GydF4y2BaNOREC4DNAGydF4y2Ba.为了降低编码速度,我们应用了各种技术,包括多线程和Python的C延伸。使用具有2x英特尔(R)Xeon(R)CPU E5-2698 V4 @ 2.20GHz(40核,80个线程)的服务器进行以下所有实验,并且总共252 GB RAM。GydF4y2Ba

由于在DNA中存储数据的整个过程仍然很昂贵且容易出错,因此建议使用整个种子范围为给定的输入文件生成所有可能的序列。根据估计的误差值对这些序列进行排序,可以保证合成出最优的可能序列。GydF4y2Ba

在第一个实验中,我们使用带有ru10编码器的“find_minium_packets”脚本来创建数据包。每个文件都分成34字节的块,并添加了标题块。另外,对于所有数据包,添加了4(6)个字节的REED-SOLOMON(RS)代码以检测和修复内部分组错误。这导致长度为160nt的序列(具有6字节的芦荟代码的实验160nt)。在我们创建和测试所有数据包之后,我们将结果合并并根据其错误值对其进行排序。对于我们的错误预测,使用框架中定义的默认规则。每个实验重复50次。GydF4y2Ba

图18GydF4y2Ba
figure18GydF4y2Ba

创建65,536个数据包并根据不同配置的错误预测进行排序所需的时间GydF4y2Ba

表4配置如图4所示。GydF4y2Ba18.GydF4y2Ba

如图所示。GydF4y2Ba18.GydF4y2Ba(和表格GydF4y2Ba4.GydF4y2Ba),对于小文件(配置1 - 4)所需的时间不会显著增加。1 kb的“Lorem Ipsum”文本文件和4.9 kb的“睡美人”童话文件几乎需要相同的编码时间,只有当Reed-Solomon符号的数量增加时才会有所不同。这是由于增加了序列的大小,因此需要更多的工作来进行错误计算。GydF4y2Ba

对于AGPL-LICENSE文件(配置5-6;34 kb)和图片“logo.jpg”(配置7-8;72 kb),我们获得了更高的编码时间,以增加文件大小和更多的Reed-Solomon符号。对于100 kb版本的“Lorem Ipsum”(配置9 - 10,100 kb),在6字节的Reed-Solomon版本的“logo.jpg”和4字节的Reed-Solomon版本(配置8 vs.配置9)之间几乎没有区别。对于每个包包含6字节Reed-Solomon的版本(配置10),平均编码时间增加到大约22秒。通过比较100 kb的1 kb Lorem Ipsum文件版本(配置1和配置9),我们可以看到,增加从平均4.5秒为1 kb的文件和17.5秒100 kb的文件,所需的时间编码与输入不显著增加文件大小。我们还使用一个包含随机ASCII字符的1mb文件进行了这个实验,每个包使用4个Reed-Solomon符号。它平均花了127秒完成。GydF4y2Ba

为了进一步研究编码速度,我们分析了多线程编码过程。这表明,在所有测试的文件中,大约76%的计算时间用于对创建的包进行排序和合并。因此,优化排序和合并可以大大减少编码时间。为了降低排序和合并对速度的影响,用户应该在计算所有可能的包之前定义所需的包和最大允许错误。GydF4y2Ba

提高编码速度的进一步可能性是使用云服务利用编码方案的高度并行性质(给出相同的输入,可以以并行或分布式方式使用多台计算机可以容易地执行编码。)GydF4y2Ba

因此,有几种用于提高编码速度的选项。但是,考虑到合成和排序的价格和所需时间,目前的速度已经足以实现现实世界使用。即使是较大的文件,GydF4y2BaNOREC4DNAGydF4y2Ba可以在秒或几分钟的顺序以及时的方式生成序列。GydF4y2Ba

结论GydF4y2Ba

我们提出了GydF4y2BaNOREC4DNAGydF4y2Ba,一个软件框架,使用,检验,比较和完善DNA存储系统NORECs。我们发现,这样的喷泉编码方案可以有效地用来满足与DNA介质相关联的限制。此外,这些代码可以适应DNA链的可能可变的长度,并具有几乎为零的开销。因此,DNA存储系统中使用NORECs有助于实现建设一个强大的和高容量长期存储的目的。GydF4y2Ba

虽然我们的实验比较只接近于在合成DNA中存储数据,但得到的结果是很有前途的。我们的评估表明,特别是尚未用于DNA存储系统的Raptor代码产生了良好的结果。此外,在线代码对DNA存储系统非常有用。这两种编码都显示了比LT编码更好的结果,后者已经被Erlich和Zielinski用于在DNA中存储数据[GydF4y2Ba4.GydF4y2Ba].由于这些作者对DNA存储的LT代码获得了良好的结果,因此猛禽和在线代码可能会在这种存储系统的LT代码上实现显着改进。GydF4y2Ba

有几个领域需要未来的工作。例如,我们计划改进所使用的NORECs的分布函数,使其适合于DNA特定的错误通道。此外,我们还将研究如何使用强制规则来提高DNA测序过程中代码的纠错能力。最后,我们打算创建针对DNA存储的特殊限制和限制进行优化的新型NORECs。GydF4y2Ba

可用性和需求GydF4y2Ba

  • 项目名称:NOREC4DNAGydF4y2Ba

  • 项目主页:欧宝直播官网appGydF4y2Bahttps://github.com/umr-ds/NOREC4DNAGydF4y2Ba

  • 操作系统:平台独立GydF4y2Ba

  • 编程语言:Python 3.6或以上版本,CGydF4y2Ba

  • 其他要求:Python3,Python3-Dev或DockerGydF4y2Ba

  • 许可证:AGPL v3.0GydF4y2Ba

  • 非学者使用的任何限制:n / aGydF4y2Ba

数据和材料的可用性GydF4y2Ba

该代码以开放源码许可发布,可以在以下网站访问:GydF4y2Bahttps://github.com/umr-ds/NOREC4DNAGydF4y2Ba

缩写GydF4y2Ba

DNA:GydF4y2Ba

脱氧核糖核酸GydF4y2Ba

NOREC:GydF4y2Ba

接近最优的无速率擦除码GydF4y2Ba

LT:GydF4y2Ba

露比变换GydF4y2Ba

LDPC:GydF4y2Ba

低密度奇偶校验GydF4y2Ba

PCR:GydF4y2Ba

聚合酶链反应GydF4y2Ba

卢比:GydF4y2Ba

芦苇所GydF4y2Ba

提供:GydF4y2Ba

累积密度函数GydF4y2Ba

PDF:GydF4y2Ba

概率密度函数GydF4y2Ba

参考文献GydF4y2Ba

  1. 1。GydF4y2Ba

    DNA中的下一代数字信息存储技术。科学。2012;337(6102):1628。GydF4y2Bahttps://doi.org/10.1126/science.1226355GydF4y2Ba.GydF4y2Ba

    中科院GydF4y2Ba文章GydF4y2BaPubMedGydF4y2Ba谷歌学术搜索GydF4y2Ba

  2. 2。GydF4y2Ba

    高曼N, Bertone P, Chen S, Dessimoz C, LeProust EM, Sipos B, Birney E.面向实用、高容量、低维护的合成DNA信息存储。大自然。2013;494(7435):77。GydF4y2Bahttps://doi.org/10.1038/nature11875GydF4y2Ba.GydF4y2Ba

    中科院GydF4y2Ba文章GydF4y2BaPubMedGydF4y2Bapmed中央GydF4y2Ba谷歌学术搜索GydF4y2Ba

  3. 3.GydF4y2Ba

    Heckel R,Shomorony I,Ramchandran K,TSE DNC。DNA存储系统的基本限制。:2017年IEEE信息理论国际研讨会(ISIT),2017年; PP。3130-3134。GydF4y2Bahttps://doi.org/10.1109/ISIT.2017.8007106GydF4y2Ba

  4. 4.GydF4y2Ba

    Erlich Y,Zielinski D. DNA喷泉可以实现稳健且高效的存储架构。科学。2017; 355(6328):950-4。GydF4y2Bahttps://doi.org/10.1126/science.aaj2038GydF4y2Ba.GydF4y2Ba

    中科院GydF4y2Ba文章GydF4y2BaPubMedGydF4y2Ba谷歌学术搜索GydF4y2Ba

  5. 5.GydF4y2Ba

    张浩,张海平,陈胜,庄强,朱淑娟,沈勇。一种用于DNA存储编码方案的健壮库。bioRxiv。2020.GydF4y2Bahttps://doi.org/10.1101/2020.01.02.892588GydF4y2Ba

  6. 6.GydF4y2Ba

    鲁比M。LT代码。参加:第43届IEEE计算机科学基础年会,2002年;第271-280页。GydF4y2Bahttps://doi.org/10.1109/SFCS.2002.1181950GydF4y2Ba

  7. 7.GydF4y2Ba

    Maymounkov P.在线代码。技术报告,纽约大学,2002。GydF4y2Ba

  8. 8.GydF4y2Ba

    Shokrollahi A.猛禽代码。IEEE Trans Inf理论。2006; 52(6):2551-67。GydF4y2Bahttps://doi.org/10.1109/tit.2006.874390GydF4y2Ba.GydF4y2Ba

    文章GydF4y2Ba谷歌学术搜索GydF4y2Ba

  9. 9.GydF4y2Ba

    生日悖论,优惠券收集者,缓存算法和自组织搜索。离散应用数学。1992;39(3):207-29。GydF4y2Bahttps://doi.org/10.1016/0166 - 218 x (92) 90177 - cGydF4y2Ba.GydF4y2Ba

    文章GydF4y2Ba谷歌学术搜索GydF4y2Ba

  10. 10GydF4y2Ba

    某些有限域上的多项式编码。应用数学学报。1960;8(2):300-4。GydF4y2Bahttps://doi.org/10.1137/0108018GydF4y2Ba.GydF4y2Ba

    文章GydF4y2Ba谷歌学术搜索GydF4y2Ba

  11. 11.GydF4y2Ba

    润滑M,Shokrollahi A,Watson M,Stockhammer T. RFC 5053 - 猛禽转发纠错方案进行对象交付。技术报告,RFC编辑(2007)GydF4y2Ba

  12. 12.GydF4y2Ba

    鲁比M,肖克罗拉希A,沃森M,斯托克哈默T,迈德L。RaptorQ前向纠错方案,用于对象传递。RFC6330,RFC编辑(2011年)。GydF4y2Ba

  13. 13。GydF4y2Ba

    Qualcomm Incorporated, Digital Fountain Inc.:通过失活解码连锁反应码的系统和过程。6856263,2005年2月。GydF4y2Ba

  14. 14.GydF4y2Ba

    鲁比M。数字喷泉公司:用于通信系统的信息加法代码生成器和解码器。630487 B1,2001年10月。GydF4y2Ba

  15. 15.GydF4y2Ba

    施赖伯R。稀疏高斯消去法的一种新实现。ACM Trans数学软件(TOMS)。1982;8(3):256–76.GydF4y2Bahttps://doi.org/10.1145/356004.356006GydF4y2Ba.GydF4y2Ba

    文章GydF4y2Ba谷歌学术搜索GydF4y2Ba

  16. 16.GydF4y2Ba

    麦凯DJ。喷泉码。IEE PROC COMMUN。2005; 152(6):1062-8。GydF4y2Bahttps://doi.org/10.1049/ip-com:20050237GydF4y2Ba.GydF4y2Ba

    文章GydF4y2Ba谷歌学术搜索GydF4y2Ba

  17. 17.GydF4y2Ba

    陈胜,张志强,张丽丽,姚晨。基于AWGN信道的Raptor编码边缘去除的信念传播。[j] .电子学报,2013,37(4):564 - 564。380 - 385。GydF4y2Bahttps://doi.org/10.1109/PIMRC.2013.6666165GydF4y2Ba

  18. 18.GydF4y2Ba

    等。广义信念传播。2000; 13:689 - 95。GydF4y2Ba

  19. 19.GydF4y2Ba

    埃霍尔姆格里斯M, M,奥特曼,我们提亚,巴德JS, Bemben洛杉矶,贝尔卡J,布雷弗曼女士,陈Y-J陈Z,杜尔某人,Du L, Fierro JM,戈麦斯十五,公元前古德温,他W, Helgesen年代,何鸿燊CH, Irzyk GP, Jando SC, Alenquer多层互连,Jarvie TP, Jirage KB,金正日jb,小骑士,Lanza JR Leamon JH,莱夫科维茨SM,雷米,李J,洛曼KL,卢H, akhijani用VB,麦克达德克,麦凯纳议员,Myers EW, Nickerson E, Nobile JR, Plant R, Puc BP, Ronan MT, Roth GT, Sarkis GJ, Simons JF, Simpson JW, Srinivasan M, Tartaro KR, Tomasz A, Vogt KA, Volkmer GA, Wang SH, Wang Y, Weiner MP, Yu P, Begley RF, Rothberg JM。微组装高密度皮升反应器中的基因组测序。自然。2005;437(7057):376 - 80。GydF4y2Bahttps://doi.org/10.1038/nature03959GydF4y2Ba.GydF4y2Ba

    文章GydF4y2BaPubMedGydF4y2Bapmed中央GydF4y2Ba谷歌学术搜索GydF4y2Ba

  20. 20。GydF4y2Ba

    Jensen MA, Fukushima M, Davis RW。DMSO和甜菜碱在从头合成中大大提高了富gc结构物的扩增。PLoS ONE。2010; 5(6): 11024。GydF4y2Bahttps://doi.org/10.1371/journal.pone.0011024GydF4y2Ba.GydF4y2Ba

    中科院GydF4y2Ba文章GydF4y2Ba谷歌学术搜索GydF4y2Ba

  21. 21GydF4y2Ba

    碱基堆积和碱基配对对DNA双螺旋结构热稳定性的贡献。核酸学报2006;34(2):564-74。GydF4y2Bahttps://doi.org/10.1093/nar/gkj454GydF4y2Ba.GydF4y2Ba

    中科院GydF4y2Ba文章GydF4y2BaPubMedGydF4y2Bapmed中央GydF4y2Ba谷歌学术搜索GydF4y2Ba

  22. 22GydF4y2Ba

    焦杰,杨烨,冯波,吴S,李烨,张Q。空间信息网络中具有不等差错保护特性的分布式无速率码。熵。2017GydF4y2Bahttps://doi.org/10.3390/e19010038GydF4y2Ba.GydF4y2Ba

    文章GydF4y2Ba谷歌学术搜索GydF4y2Ba

  23. 23。GydF4y2Ba

    吴绍华,郑明可。优先LT代码。见:2008第42届信息科学与系统年会,2008;568 - 573。GydF4y2Bahttps://doi.org/10.1109/CISS.2008.4558589GydF4y2Ba

  24. 24。GydF4y2Ba

    Limbachiya D,Dhameliya V,Khakhar M,Gupta Mk。关于归档DNA储存的最佳码头。:2015年第七届国际信号设计研讨会及其在通信中的应用(IWSDA),2015; PP。123-127。GydF4y2Bahttps://doi.org/10.1109/iwsda.2015.7458386GydF4y2Ba

  25. 25。GydF4y2Ba

    Ullah AMMS, D 'Addona D, Arai N.基于DNA的计算理解复杂形状。生物系统。2014;117:40-53。GydF4y2Bahttps://doi.org/10.1016/j.biosystems.2014.01.003GydF4y2Ba.GydF4y2Ba

  26. 26.GydF4y2Ba

    重复编码作为dna编码信息的有效错误校正代码。见:2011年IEEE第11届生物信息学与生物工程国际会议,2011;253 - 260。GydF4y2Bahttps://doi.org/10.1109/BIBE.2011.45GydF4y2Ba

  27. 27.GydF4y2Ba

    Akhmetov A,Ellington Ad,Marcotte Em。一种高度平行的活细胞中数字信息的策略。BMC Biotechnol。2018; 18(1):1-19。GydF4y2Bahttps://doi.org/10.1186/s12896-018-0476-4GydF4y2Ba.GydF4y2Ba

    中科院GydF4y2Ba文章GydF4y2Ba谷歌学术搜索GydF4y2Ba

  28. 28.GydF4y2Ba

    错配修复缺陷酵母中自发突变的突变率、谱和全基因组分布。3(9): 1453-65。GydF4y2Bahttps://doi.org/10.1534/g3.113.006429GydF4y2Ba.GydF4y2Ba

    中科院GydF4y2Ba文章GydF4y2BaPubMedGydF4y2Bapmed中央GydF4y2Ba谷歌学术搜索GydF4y2Ba

  29. 29.GydF4y2Ba

    Grass RN, Heckel R, Puddu M, Paunescu D, Stark WJ。用纠错代码在二氧化硅中对DNA上的数字信息进行强有力的化学保存。化学学报2015;54(8):2552-5。GydF4y2Bahttps://doi.org/10.1002/anie.201411378GydF4y2Ba.GydF4y2Ba

    中科院GydF4y2Ba文章GydF4y2Ba谷歌学术搜索GydF4y2Ba

  30. 30.GydF4y2Ba

    (1) CpG二核苷酸与非CpG DNA突变率的关系。基因组研究》2008;18(9):1403 - 14所示。GydF4y2Bahttps://doi.org/10.1101/gr.076455.108GydF4y2Ba.GydF4y2Ba

    中科院GydF4y2Ba文章GydF4y2BaPubMedGydF4y2Bapmed中央GydF4y2Ba谷歌学术搜索GydF4y2Ba

  31. 31。GydF4y2Ba

    博恩霍尔特J、洛佩兹R、卡门DM、塞泽L、塞利格G、施特劳斯K。基于DNA的档案存储系统。我不打算。2016;51(4):637–49.GydF4y2Bahttps://doi.org/10.1145/2954679.2872397GydF4y2Ba.GydF4y2Ba

    文章GydF4y2Ba谷歌学术搜索GydF4y2Ba

  32. 32。GydF4y2Ba

    MESA:人工合成DNA片段的自动评估和DNA合成、存储、测序和PCR错误的模拟。生物信息学。2020;(11):3322 - 6。GydF4y2Bahttps://doi.org/10.1093/bioinformatics/btaa140GydF4y2Ba.GydF4y2Ba

    中科院GydF4y2Ba文章GydF4y2BaPubMedGydF4y2Bapmed中央GydF4y2Ba谷歌学术搜索GydF4y2Ba

  33. 33GydF4y2Ba

    Welzel M, Lange A, Heider D, Schwarz M, Freisleben B, Jensen M, Boenigk J, Beisser D. Natrix:一种基于snake maker的处理、聚类和分类学分配扩增子测序读取的工作流。欧宝娱乐合法吗BMC生物信息学。2020;21(1):526。GydF4y2Bahttps://doi.org/10.1186/s12859-020-03852-4GydF4y2Ba.GydF4y2Ba

    中科院GydF4y2Ba文章GydF4y2BaPubMedGydF4y2Bapmed中央GydF4y2Ba谷歌学术搜索GydF4y2Ba

下载参考GydF4y2Ba

确认GydF4y2Ba

不适用GydF4y2Ba

基金GydF4y2Ba

由Projekt DEAL启用和组织的开放获取资金。这项工作得到了黑森州(德国)莫斯拉研究集群LOEWE项目的资助。资助机构没有影响这项工作的任何方面。GydF4y2Ba

作者信息GydF4y2Ba

隶属关系GydF4y2Ba

作者GydF4y2Ba

贡献GydF4y2Ba

PMS和BF构思了项目并撰写了论文。PMS开发了该软件。BF监督了这项研究。两位作者都阅读并批准了最终的手稿。GydF4y2Ba

通讯作者GydF4y2Ba

对应到GydF4y2Ba彼得·迈克尔·施瓦兹GydF4y2Ba.GydF4y2Ba

伦理宣言GydF4y2Ba

道德认可和参与同意GydF4y2Ba

不适用GydF4y2Ba

同意出版GydF4y2Ba

不适用GydF4y2Ba

利益争夺GydF4y2Ba

两位作者宣称他们没有相互竞争的利益。GydF4y2Ba

附加信息GydF4y2Ba

出版商的注意GydF4y2Ba

欧宝体育黑玩家Springer Nature在发表地图和机构附属机构中的司法管辖权索赔方面仍然是中立的。GydF4y2Ba

权限GydF4y2Ba

开放访问GydF4y2Ba本文是基于知识共享署名4.0国际许可,允许使用、共享、适应、分布和繁殖在任何媒介或格式,只要你给予适当的信贷原始作者(年代)和来源,提供一个链接到创作共用许可证,并指出如果变化。本文中的图像或其他第三方材料都包含在本文的知识共享许可中,除非在该材料的信用额度中另有说明。如果资料不包括在文章的知识共享许可协议中,并且你的预期用途没有被法律规定允许或超过允许用途,你将需要直接从版权所有者获得许可。如欲查阅本许可证副本,请浏览GydF4y2Bahttp://creativecommons.org/licenses/by/4.0/GydF4y2Ba.Creative Commons公共领域奉献豁免(GydF4y2Bahttp://creativecommons.org/publicdomain/zero/1.0/GydF4y2Ba)适用于本文提供的数据,除非在数据的信贷额度中另有说明。GydF4y2Ba

重印和权限GydF4y2Ba

关于这篇文章GydF4y2Ba

通过CrossMark验证货币和真实性GydF4y2Ba

引用这篇文章GydF4y2Ba

施瓦茨,下午,弗雷斯利本,B。NOREC4DNA:使用接近最优的无速率擦除代码存储DNA。GydF4y2Ba欧宝娱乐合法吗22,GydF4y2Ba406(2021)。https://doi.org/10.1186/s12859-021-04318-xGydF4y2Ba

下载引用GydF4y2Ba

关键字GydF4y2Ba

  • DNA储存GydF4y2Ba
  • 消除代码GydF4y2Ba
  • 接近最优的无速率擦除码GydF4y2Ba
  • 猛禽代码GydF4y2Ba
  • 网上的代码GydF4y2Ba
  • LT编码GydF4y2Ba