题图:华盛顿大学副教授Luis Henrique Ceze(照片中的男士)和研究科学家Lee
Organick正将数字数据保存进DNA测序,以供“读取”并追溯原始文件。

来自微软和华盛顿大学的研究人员已在DNA储存技术上取得了初期突破性进展 ——
在分子链上存储了破纪录的200MB数据。

然而,这项技术最令人惊叹的并非是能将数据编入合成DNA并可实现解码,而是它可实现的存储容量。

“一旦编入DNA,数据在试管中所占空间甚至小于铅笔笔尖。”该项目的微软合伙人级架构师Douglas Carmean说。

让我们来试想一下,将一个大型数据中心的数据压缩进几块方糖大小的空间。或是因特网上所有公开数据的存储只需一个鞋盒大小的空间。这就是DNA存储技术的前景
—— 只等科学家们攻克一系列技术难关并实现大规模应用。

微软-华盛顿大学研究小组在DNA链中储存了多件艺术作品的电子版(包括了OK
Go!乐队的高清视频)、《世界人权宣言》的上百个语言版本、古登堡计划前100本图书以及非营利机构全球农作物多样性信托基金(Crop
Trust)的种子数据库。

今天,数据存储需求呈指数级增长,但现有存储媒介的容量却未能与之匹配。这让有大量数据存储需求的组织、机构非常困扰,例如那些需要保存病患资料的医院和需要保存视频文件的公司。这意味着信息将会丢失,而且如果没有新的解决方案,这一问题将日益严重。

DNA也许就是上述问题的答案。

作为储存媒介,DNA具备多个优势。例如体积微小、耐用 ——
妥善保管的话,能保存很长时间(比如,猛犸象虽然在几千年前已灭绝,我们依旧能通过DNA追溯到它们),而且研究人员相信DNA永不“过时”。

微软研究员Karin
Strauss说:“只要地球上有基于DNA的生命存在,我们就有兴趣研究。所以我认为DNA永远和我们息息相关。”

这也解释了为什么微软-华盛顿大学研究小组只是全球众多致力于研究DNA这座数字象牙塔的团队之一。

研究员们认识到这一研究还有很多工作要做。

华盛顿大学计算机科学与工程副教授、研究小组成员之一Luis Henrique
Ceze说,近几年生物科技产业在DNA合成(编码)与测序(解码)技术上有了长足的进步。尽管如此,要让DNA存储成为一项稳定可行的技术,团队还有很多工作要做。

但是,研究员们都很乐观。

去年,这个由计算机科学家、计算机架构师以及分子生物学家组成的研究小组已将DNA存储能力提升了上千倍。他们相信如果在整个过程中运用“纠错”等计算机科学原理可以加速完善DNA存储技术。

为了解微软-华盛顿大学小组的研究工作,让我们回忆一下高中生物课上的DNA知识 ——
DNA又被称为脱氧核糖核酸,是一种携带所有已知生命体生长、发育、运行和繁殖等生物指令的分子。

Ceze做研究的分子信息系统实验室(Molecular Information System
Lab)坐落在华盛顿大学的某个地下室,“DNA是一个非常棒的信息存储分子,可以对一个生命系统运行模式的数据进行编码。我们正对这一特性进行微调,以保存包括图片、视频和文件在内的数字数据。这也是借鉴物体本质、打造更好的计算机系统一个范例。”

在DNA中保持数字数据的流程基本如下:

首先,需要将数据从1和0转译成DNA分子中的四种核苷酸碱基,即腺嘌呤(A
或Adenine)、胞嘧啶(C或Cytosine)、鸟嘌呤(G或Guanine)、胸腺嘧啶(T或Thymine)。

DNA合成公司Twist
Bioscience会“将还处于电子形式的核苷酸碱基合成为DNA分子,并发还研究员。”Strauss说,“其实就是一支试管,你几乎看不到里面有什么。看上去就好像底部有一些已干燥的盐。”

利用生物技术微调随机存取内存
(RAM)以读取数据,是又一个从计算机科学借鉴的概念。研究小组通过一种分子生物学家经常用来控制DNA的技术——聚合酶链式反应(PCR)——对所需回收的分子链进行复制或者“放大”。一旦所需信息密度大幅增加,研究员将开始采样,测序或解码DNA,然后进行错误校正计算。

关于科研的介绍就到此为止了,最后一个问题:为什么要选了OK Go!的音乐视频?
“我们非常喜欢这个视频,因为它和我们的工作有许多相似之处。”Strauss笑着说,“他们非常有创意,把形形色色的东西融入自己的音乐里,我们的工作也正是如此。”

这有一管信息量很大的DNA的更多相关文章

  1. PHP读写大“二进制”文件,不必申请很大内存(fopen、fread、fwrite、fclose)

    <?php /** * 读写大二进制文件,不必申请很大内存 * 只有读取到内容才创建文件 * 保证目录可写 * * @param string $srcPath 源文件路径 * @param s ...

  2. 《Spring MVC学习指南》怎么样?答:书名具有很大的欺骗性

    2016年6月21日 最近,因为工作需要,我从网上买了一本<Spring MVC学习指南>,ISBN编号: 978-7-115-38639-7,定价:49.00元.此书是[美]Paul D ...

  3. 【knowledgebase】不要在一个很大的RDD上调用collect

    如果一个RDD很大以至于它的所有元素并不能在driver端机器的内存中存放下,请不要进行如下调用: val values = myVeryLargeRDD.collect()   collect将尝试 ...

  4. MySQL数据很大的时候

    众所周知,mysql在数据量很大的时候查询的效率是很低的,因为假如你需要 OFFSET 100000 LIMIT 5 这样的数据,数据库就需要跳过前100000条数据,才能返回给你你需要的5条数据.由 ...

  5. mysql5.6启动占用内存很大的解决方法

    vps的内存为512M,安装好nginx,php等启动起来,mysql死活启动不起来看了日志只看到对应pid被结束了,后跟踪看发现是内存不足被killed; 调整my.cnf 参数,重新配置(系统默认 ...

  6. Slave延迟很大的优化方法总结(MySQL优化)

    [http://www.cstor.cn/textdetail_9146.html] 一般而言,slave相对master延迟较大,其根本原因就是slave上的复制线程没办法真正做到并发.简单说,在m ...

  7. [MySQL优化案例]系列 — slave延迟很大优化方法

    备注:插图来自网络搜索,如果觉得不当还请及时告知 :) 一般而言,slave相对master延迟较大,其根本原因就是slave上的复制线程没办法真正做到并发.简单说,在master上是并发模式(以In ...

  8. 有一个很大的整数list,需要求这个list中所有整数的和,写一个可以充分利用多核CPU的代码,来计算结果(转)

    引用 前几天在网上看到一个淘宝的面试题:有一个很大的整数list,需要求这个list中所有整数的和,写一个可以充分利用多核CPU的代码,来计算结果.一:分析题目 从题中可以看到“很大的List”以及“ ...

  9. string::npos,一个很大的数

    string::npos,这是一个很大的数 npos 是这样定义的: static const size_type npos = -1; 因为 string::size_type (由字符串配置器 a ...

随机推荐

  1. 19)PHP,数组知识

    (1)数组的基础 在PHP中,数组的下标可以是数字,也可以是字符串 在PHP中,数组元素的顺序不是由下标决定的,而是由其加入的的顺序决定 (2)数组定义: array(1,5,11,'abs',tru ...

  2. 【转】Linux虚拟终端命令Screen用法详解

    转自 http://www.linuxidc.com/Linux/2013-07/87415.htm 在使用ssh或者telnet登录远程主机后,执行一些耗时的命令,如果此时ssh或者telnet中断 ...

  3. 洛谷-P5357-【模板】AC自动机(二次加强版)

    题目传送门 -------------------------------------- 过年在家无聊补一下这周做的几道AC自动机的模板题 sol:AC自动机,还是要解决跳fail边产生的重复访问,但 ...

  4. 2018-10-09-Pser

    title date tags layout Pser 2018-10-09 杂谈 post ### 踏雪无痕![踏雪无痕](http://da1sy.github.io/assets/images/ ...

  5. i春秋web作业2.24

    Web安全工程师(入门班) [全国线上入门班53期]课后作业   2020-2-24 DorinXL   分别尝试安装一个Windows和Linux操作系统 想要在虚拟机上装系统,首先需要下载对应的镜 ...

  6. ASA5505升级license

    1.准备工作 首先先看下目前的license # show activation-key Serial Number: JMX1J364741 Running Permanent Activation ...

  7. 高性能JAVA开发之内存管理

    这几天在找一个程序的bug,主要是java虚拟机内存溢出的问题,调研了一些java内存管理的资料,现整理如下: 一.JVM中的对象生命周期 对象的生命周期一般分为7个阶段:创建阶段,应用阶段,不可视阶 ...

  8. 1088. Rational Arithmetic (20)

    1.注意在数字和string转化过程中,需要考虑数字不是只有一位的,如300转为"300",一开始卡在里这里, 测试用例: 24/8 100/10 24/11 300/11 2.该 ...

  9. python学习笔记(23)-异常处理

    #异常处理与调试 #异常:在运行代码过程中遇到的任何错误,带有error字样的都是异常 #异常处理,对代码中所有可能出现的异常进行的处理 #1.处理某个错误 2,处理某个类型的错误 3 有错就抓 一. ...

  10. The Maximum Unreachable Node Set

    题目描述 In this problem, we would like to talk about unreachable sets of a directed acyclic graph G = ( ...