numpy序列预处理dna序列_合成生物学快讯2019年第12期:基于DNA的分子数字数据存储...

本文由中国科学院上海生命科学信息中心 战略情报团队供稿

基于DNA的分子数字数据存储:现状与挑战

编者按:美国华盛顿大学和微软研究院的研究人员2019年8月在Nature杂志发文,对基于DNA的分子数字数据存储进行总结,梳理了该领域的研究发展历史、DNA数据存储的主要过程、DNA合成和测序过程中的纠错、用于数据存储的DNA合成等,以及该领域应用面临的挑战。

01

DNA数据存储简史

利用DNA进行数据存储的基本概念可以追溯到20世纪60年代中期,当时Norbert Wiener和Mikhail Neiman探讨了“基因记忆(genetic memory)”的概念。然而,当时DNA测序和合成技术还处于萌芽期。直到20年后(Dawkins在其1986年出版的《盲眼钟表匠》一书中讨论了这个想法),Joe Davis首次使用生物艺术片“微核”试验证实了DNA数据存储的概念。

20世纪20年代初,该领域出现了重大突破,Church和Goldman等重新审视了DNA数据的概念,分别将成百上千字节的数据进行存储并观察到有可能在可预见的时间范围内实现读写过程中的DNA数据存储。图1展示了该领域研发过程的时间轴、数据量以及使用的主要技术。尤其值得注意的是,在容量方面呈现明显的指数增长率,仅仅6年的时间就实现了大约3个数量级的进展。大多数研究是基于磷酰胺的DNA合成法,该方法已经经历了几十年的摸索和完善。酶促DNA合成仍然是新兴的研究领域,但也已经用于数据存储。对于数据读取来说,大多数研究是通过合成的测序法,这是Illumina公司推出的一种商用测序方法。最近,多个团队利用牛津纳米孔技术微型平台,通过纳米孔测序法成功实现了数据解码,尽管数据量仍然有限,人们期待通过不断的研究这些通量将有所增加。

综上所述,DNA数据存储的大多数早期工作都涉及体内克隆和存储组件,称为“水印或隐写术”。最近,体内DNA数据存储的一个新兴分支是利用合成生物学研究进展来记录生物体基因组的新信息。尽管细胞相对大小导致了整体数据存储密度较低,体内DNA数据存储不太可能成为一般主流数字数据存储的可行替代方案,除了活细胞中天然DNA的修饰和额外的复杂性之外,体内DNA数据的记录和存储可以实现新型应用,例如,记录有关细胞历史和环境信息。这样的系统被视为是按照细胞内的时间顺序记录动态分子事件并保存数据以便之后读取的分子磁带。

24219d12f7ee61905892879f661e46d1.png

图1 DNA数字数据存储相关主要成果的时间线

02

过程概述 

DNA数据存储主要包括四个步骤,如图2所示。

b529a40705656f2d3fa1a160678ff44c.png

图2DNA数字数据存储的主要步骤

编写。DNA中数据的编写从编码开始:采用计算机算法将一系列字节转换为DNA序列,然后合成得到DNA序列,产生每个序列的多个物理拷贝。DNA序列是任意的,但长度有限,就像字节串被分成小片段,在后续过程中重新组合成原始数据。为了实现重新组装,必须对每个片段进行索引或者在不同DNA片段中包含重叠序列。Heckel等从理论上确定了索引方法的存储容量并证明基于索引方法的编码方案是最优的。对于任何有趣的信息量,都需要合成大量不同的DNA序列,因此基于阵列的合成方法很有潜力,该方法可以并行合成许多独特的序列。

存储。一旦DNA合成,就需要进行存储。Organick等估计分离的DNA池可以存储在1012个字节中。因此需要这样的池库来扩大存储系统规模。

检索。如果需要提取数据项,就要对相应的DNA池进行物理检索和取样。为了避免读取池中的全部数据,需要类似计算机那样的随机访问或者从更大集合中选择性读取特定数据项的能力。这个功能在主流数字存储介质中已经得到实现,但由于相同的分子池中缺乏数据项的物理组织,因此分子存储在这方面具有更大的挑战。可以通过选择性过程,例如,对应数据的磁珠探针分离方法或是在编码过程中使用数据存储相关引物,采用PCR的方式来实现DNA数据存储中的随机存取。

读取。选定DNA样本后,下一步是测序,产生一组与测序仪检测到的分子相对应的数据,然后以很大的概率将这些读数解码,恢复为初始的数字数据。操作的成功取决于测序的覆盖率和整个过程的错误率。

03

编解码过程中错误的处理

DNA合成和测序过程中容易出错。有关DNA数据存储的报告称,每个碱基在每个位置的错误率约为1%。更准确地说,对于DNA链中的一个特定位置,当合成和测序时,大约1%的概率在读取时将会在该位置出现错误。这些适用于Caruthers化学方法的阵列DNA合成,以及Illumina仪器进行的合成测序。有趣的是,Yazdi和Bornholt等发现,大多数错误是由测序引起的。Organick等指出,纳米孔测序的误差约为10%。Heckel等的研究进一步表明误差主要来自合成和测序,DNA操作、PCR和存储也可能导致擦除,即某些序列在混合物中的数量不成比例的偏低。

对存储应用程序中的最终用户来说,暴露出来的这种程度的错误将是灾难性的。因此,将纠错码覆盖在原始存储介质上至关重要。有趣的是,现代磁性介质的原始错误率约为1%。简言之,可靠的数据存储和检索需要适用于所有类型介质(和通讯渠道,例如无线电)的校正方法。事实上,被称为信息理论或编码理论的计算机科学领域,正在致力于开发可以在噪声介质和通讯渠道中可靠传送数字数据的编码方案。与DNA相关的有趣的点在于:与其他只能替换错误的存储通道不同,DNA通道还可以进行基本插入和删除,这使得编码更具挑战性。

表1 体外DNA数据存储的演示举例

f9998ac944dcaa1eca496bdd7fa59cee.png

表注:表中包括所使用的合成和测序方法、编码和解码方案,以及每种方法的随机访问属性。关于不同计算机代码的研究揭示了编码和解码的过程。

04

用于数据存储的DNA合成

目前,大多数DNA数据存储实验采用的是磷酰胺寡核苷酸合成法进行DNA编写。表1显示最近已经实现大量数据存储的工作。这种方法以每次添加一个核苷酸、循环进行的方式延长DNA链,可逆地“阻断”单核苷酸从而防止产生不需要的均聚物。使用酸溶液或利用光不稳定基团的光诱导反应来清除阻碍基团。每个合成循环将所选单体整合进入现有的聚合体,通过氧化增强结合;使用溶剂洗去多余的单体,清除最后添加单体上的阻断基团并且调用下一个合成周期或结束合成过程。最常见的合成错误出现在清除最后添加单体上的阻断基团,因此合成过程中最常见的错误类型为插入和删除。

通过调控机制并选择性地将特定碱基添加到特定链上,DNA合成可以平行进行。这使得能够在固体基质中的不同点合成不同序列,通常称为阵列合成:序列被定植在一个表面上,试剂连续流动以循环方式增加碱基。已经实现的技术,常用的有三种:基于光的阵列(光激活的pH变化或光不稳定化学)、选择性地解块序列(deblock sequences)并同时向所有已解块序列和基于沉积的阵列添加相同碱基的电子阵列,还有在所需位置选择性增加碱基的沉积碱基阵列

05

面临的挑战

在短期和中期内,访问延迟[1](读取时间)可能会继续比较高(分钟到小时),但随着带宽(数据读写通量)的提高,体外DNA数据存储能够共存或有望取代商业介质来进行数据存档存储的应用。原因在于档案存储可以容忍更高的延迟并从较小的印记和较低的静态数据能量成本中获益。

当前DNA数据存储的总编写通量可能是每秒千字节水平。预计在未来十年,能够与主流云档案存储系统竞争的系统,需要提供每秒千兆字节的读写通量。这与合成能力相差6个数量级,与测序能力差2-3个数量级。就成本而言,磁带存储成本约为每万亿字节16美元(2016年),并且逐年下降10%。DNA合成成本通常是保密的,但业内领先的分析师估计阵列合成的成本约为每个碱基0.0001美元,相当于每万亿字节8亿美元或者说比磁带高7-8个数量级。尽管通量和成本差距令人望而生畏,但DNA数据存储不同于生命科学中的存储方式:由于纠错码的应用,可以为了速度牺牲精度,也可以显著降低物理冗余。这样可以进一步推动合成和测序性能的改进。同时,更大的合成介质和更大的DNA量将会分摊成本,这也有利于成本的降低。与生命科学相比,数据存储中每个序列所需拷贝数的量级要低,更多的平行合成可以改善通量,更小的斑点也将按比例地节约试剂用量。

最终,重要的考虑因素之一是DNA分子的物理存储和保存。尽管有人证实可以读取几千年(有时几十万年)前的DNA,但是DNA的降解速度可能快得多,这取决于DNA所暴露的条件(例如高温、高湿度和紫外线照射可能导致其降解)。为了解决这个问题,不同的团队提出了各种为DNA提供适宜保存条件的方法。化学解决方案包括脱水和/或冻干、添加剂(可生物降解的DNA稳定剂或海藻糖)或使用保护材料,例如,用二氧化硅进行化学封装。化学解决方案和添加剂的制备更迅速,不过封装能够在湿度较高(50%)的环境中提供更长的保质期和更好的保护。DNA存储容器具有多种材料和形式,例如滤纸(Whatman)、不透气的不锈钢微胶囊(Imagene)、塑料孔板(Biomtrica)。这些是为生物样品量身定制的并能优化纯度,因此密度和成本都会受到影响。DNA数据存储物理文库需要在不显著降低密度的情况下提供完整的自动化和可扩展路径,是很大程度上的开放研究课题。这些系统的自动化面临着多重挑战,自动化系统使其能够用于大规模存档存储。这样的环境通常要以最小的人为干扰运行。大多数合成和测序之外的DNA操作都是由实验室环境中的人员进行的。最近,Takahashi等首次公开了自动化DNA数据存储系统,微流体领域的最新进展或许能够用于DNA数据存储的自动化。

06

结论 

将体内和体外DNA数据存储进行比较可以明显发现,考虑到成本、可扩展性和稳定性等因素,体外存储是更实际的方式。不过,体内存储系统可以作为收集新数据而不是保存现有数字数据的生物记录设备。也就是说,体内数据存储的额外优势还尚未体现。最近的研究表明,在大肠杆菌体内存储数据可能是一种实用的微尺度随机数据访问方法。随着合成生物学领域的不断成熟,体内数据存储还可以解决体外存储无法避免的缺点。

数字革命改变了人类与数据的关系,使社会进入信息时代。现在正在产生的的数据类型和绝对数量都超过了现有技术的存储能力。新形式的数字数据存储需要跟上时代步伐。磁带和光盘这些主流存储形式正在接近密度极限,DNA数据存储是一种很有前途的可替代方式。DNA的持久性和永恒相关性经受过时间考验,这些特性使其成为长期数据存档的自然选择。同时,最初为生命科学应用开发的DNA合成、测序和检索技术可以在数据存储系统中重新调整。随着DNA数据存储研究的进展和进步,预计为DNA数据存储量身定制的技术创新有望逐渐改善目前应用的主要障碍。


[1]访问延迟(Access latency):检索数据所需的时间。

e4e67b8a95e3a807cde2171c7a34a3eb.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/558485.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言编程游戏开代码错误,[蓝桥杯][历届试题]数字游戏 (C语言代码)(兄弟们帮我看一下为什么运行错误86%)...

解题思路:注意事项:参考代码:#include #include #define N 1000int main(){unsigned int n,k,T;int i,j;int num[N];int m1;int sum0;scanf("%d%d%d",&n,&k,&T);while(n<1||k<1||T<1||n>1000000||k>1000000||T>1000000){scanf("%…

方正高影仪安装方法_铝合金门窗是怎么安装的?

铝合金门窗安装主要材料有铝合金门窗型材、钢钉、膨胀螺栓、滑移合页、防水密封胶、压条等。铝合金门窗的规格、型材应符合设计要求&#xff0c;五金配件配套齐全、并具有出厂合格证。防腐材料、填缝材料、密封材料、防锈漆、水泥、砂、连接铁脚、连接板等应符合设计要求和有关…

怎样用c语言统计字符个数字,请问这个用c怎么做:输入一串字符,分别统计其中数字和字母的个数...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#includemain(){int acount0,bcount0,ccount0,dcount0;char a;printf("请输入一行字符:\n");a getchar();while (a !\n){switch (a){caseq:casew:casee:caser:caset:casey:caseu:casei:caseo:casep:casea:cases:cased:c…

无法从“cstring”转换为“lpcstr”_U盘重装系统后,无法使用?

U盘重装系统&#xff0c;误GPT分区转换到mbr分区后&#xff0c;无法读取&#xff0c;储存&#xff0c;格式化失败&#xff0c;解决方法如下&#xff1a;无法读取无法格式化1.按住“WINR”&#xff0c;呼出“cmd”命令符WINR2.输入&#xff1a;diskpart&#xff0c;回车进入disk…

达内培训c语言,【达内C  培训教程】C语言实例 分数之和

求这样的四个自然数p,q,r,s(p<q<r<s)&#xff0c;使得以下等式成立&#xff1a;1/p 1/q 1/r 1/s1*问题分析与算法设计若规定p<q<r<s&#xff0c;将原式通分、化简并整理后得到&#xff1a;2<p<5p<q<7 q<p"">采用最简单的穷举方法…

dijkstra算法_最短路径问题——迪杰斯特拉算法(Dijkstra)

假期过长&#xff0c;导致停更了好长时间&#xff0c;复习一道算法题找找感觉。前段时间看到一篇文章&#xff0c;里面提到了统治世界的十大算法&#xff0c;其中之一就是迪杰斯特拉算法(Dijkstra)&#xff0c;该算法主要解决的”最短路径“这一类问题。说法虽然夸张了点&#…

c语言锐龙,AMD官方:锐龙5000抗热可以达到95°C 没问题!

对于现在的CPU而言&#xff0c;温度设定是一个至关重要的影响因素。在CPU制程工艺和架构设计水平差不多的情况下&#xff0c;谁的温度墙设定的更高&#xff0c;性能的发挥也会更好&#xff0c;因为如果一旦降频再强的性能也发挥不出来。而在这一点上&#xff0c;AMD锐龙5000系列…

ES6 深拷贝_你别自以为是:ES6误区 之 Object.assign()、const

文/北妈阅读本文需要 2.3分钟一很久没发技术文&#xff0c;今天北妈在新开一个技术系列&#xff1a;“别自以为是&#xff0c;1分钟走出JS常见误区“&#xff0c;里面我会每期挑选几个常见基础属性&#xff0c;讲一讲里面最容易被人忽略和认知错误的误区。帮助大家更好的掌握基…

c语言的数据类型复数型,C语言数据类型

一、基本类型C语言的基本数据类型包括字符型、整数型、浮点型。1、字符型(char)描述单个字符(一个字节)&#xff0c;用半角的单引号包含起来&#xff0c;如a、A、1、$等&#xff0c;键盘能输入的英文和半角的符号都是字符。A B C ...... Za b c ...... z0 1 2 ...... 9~ ! ...…

opengl实现三维动画简单代码_使用Python简单实现马赛克拼图!内附完整代码

今天小编带大家使用python简单实现马赛克拼图&#xff0c;内容比以往会稍长一些&#xff0c;各位看官老爷可以慢慢细读&#xff0c;若有不足之处还望请斧正&#xff0c;闲话不多说&#xff0c;请看文章。先看原图&#xff1a;效果图&#xff1a;思路&#xff1a;拼图的原理其实…

耳机不支持android,安卓手机为什么不能用EarPods耳机 原因分析【图解】

相信很多人都有这样的疑问&#xff0c;iPhone和安卓手机的耳机孔是一样的&#xff0c; 安卓手机为什么不能用EarPods耳机? 这是什么原因&#xff1f;本次在这里就给大家分析下。安卓手机为什么不能用EarPods耳机?目前市面上大多数的手机仍采用3.5mm的耳机接口。但很多人不知道…

python自然语言处理库_Python 自然语言处理(NLP)工具库汇总

最近正在用nltk 对中文网络商品评论进行褒贬情感分类&#xff0c;计算评论的信息熵&#xff08;entropy&#xff09;、互信息&#xff08;point mutual information&#xff09;和困惑值&#xff08;perplexity&#xff09;等&#xff08;不过这些概念我其实也还理解不深...只是…

android代码清除锁屏密码,清除Android手机锁屏密码的三个小妙招

大家有没有把锁屏密码忘记过&#xff1f;发生这种情况的概率应该很小吧&#xff0c;但为了以防万一大家还是看一下本文的解锁教程吧&#xff01;这种解锁的方法要求&#xff0c;被锁上的手机是联网的状态&#xff0c;并登录了google账号&#xff0c;账号密码已知。如果以上条件…

android退出app代码,Android应用退出代码各种方式

1. 点击按钮最小化app返回到home//并不会退出app&#xff0c;只是最小化findViewById(R.id.button3).setOnClickListener(new OnClickListener(){public void onClick(View v){Intent intent new Intent(Intent.ACTION_MAIN);intent.addCategory(Intent.CATEGORY_HOME);startA…

c语言数组最大可定义多少位_C语言求数组的最大值三种方法

/* 黄哥Python培训 黄哥所写*/#include int maxValue(int* arr, int n);int maxRecursionValue(int* arr, int n);int maxDividAndConquerValue(int* arr, int left, int right);int main(void) { int arr[] {500, -1, 30, 7, 99, 12}; printf("数组中的元素最大…

android 百度map 一个layout加载多个mapview,android 百度地图API 使用Marker和InfoWindow

前言&#xff1a;在android开发过程中&#xff0c;百度地图的使用是比较普遍的&#xff0c;但是如何使用&#xff0c;使用什么版本的百度API还是需要一些讲究。在项目过程中&#xff0c;需要用到百度地图的marker和InfoWindow的功能。标注覆盖物(百度地图官方图)布局文件很简单…

python数据的格式输出_Python格式化输出

“%”的使用 格式符 描述 %s 字符串 (采用str()的显示) %r 字符串 (采用repr()的显示) %c 单个字符及其ASCII码 %u 整数(无符号) %b 二进制整数 %o 八进制数(无符号) %d 十进制整数 %i 十进制整数 %x 十六进制数(无符号) %X 十六进制数大写(无符号) %e 指数 (基底写为e)&#x…

android代码移除焦点,android-如何从单个editText移除焦点

android-如何从单个editText移除焦点在我的应用程序中&#xff0c;我只有一个button.seFocusableInTouchMode()&#xff0c;以及一些button.requestFocus()&#xff0c;按钮和一个微调器。 我认为&#xff0c;我的EditText获得关注&#xff0c;因为它是此活动中唯一可关注的视图…

python数据分析实验报告_Python 数据分析入门实战

本训练营中&#xff0c;我们将学习怎么样使用 Python 进行数据分析。课程将从数据分析基础开始&#xff0c;一步步深入讲解。从 Python 的基础用法到数据分析的各种算法&#xff0c;并结合各种实例&#xff0c;讲解数据分析过程中的方方面面。 课程内容将分为以下四个部分&…