题图:华盛顿大学副教授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. 16)PHP, set_include_path

    代码展示: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w ...

  2. 聊聊HTTPS和SSL/TLS协议 【基础入门】

    要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识.1. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义2. 大致了解 HTTP 和 TCP 的关系(尤其是“短连接”VS“长连接 ...

  3. yii执行流程简单介绍

    1. 用户访问 http://www.example.com/index.php?r=post/show&id=1,Web 服务器执行入口脚本 index.php 来处理该请求.  2. 入口 ...

  4. github简单操作

    配置用户名: git config --global user.name 名.姓 配置用户邮件:git config --global user.email 名.姓@avatarmind.com 查看 ...

  5. [LC] 513. Find Bottom Left Tree Value

    Given a binary tree, find the leftmost value in the last row of the tree. Example 1: Input: 2 / \ 1 ...

  6. 吴裕雄--天生自然 HADOOP大数据分布式处理:安装配置JAVA

    tar -xzvf jdk-8u151-linux-x64.tar.gz -C /usr/local/src sudo vim /etc/profile .编辑/etc/profile # JAVA ...

  7. springboot学习笔记:3.配置文件使用概要

    Spring Boot允许外化(externalize)你的配置,这样你能够在不同的环境下使用相同的代码. 你可以使用properties文件,YAML文件,环境变量和命令行参数来外化配置.使用@Va ...

  8. C++中stoi函数

    作用: 将 n 进制的字符串转化为十进制 头文件: #include <string> 用法: stoi(字符串,起始位置,n进制),将 n 进制的字符串转化为十进制 示例: stoi(s ...

  9. [LC] 81. Search in Rotated Sorted Array II

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...

  10. Chrome开发者调试工具

    参考资料 Chrome Console不完全指南 Chrome使用技巧 Chrome开发工具详解 结束语 工欲善其事,必先利其器.