DNA 存储:把照片写成 ATCG

一克 DNA 能装下整个人类互联网的数据流量。2017 年科学家把一个操作系统和一部电影写进 DNA 分子,完美读回--用的就是你即将亲手操作的那套算法。

DNA 双螺旋与 ATCG 碱基序列交织的数据存储概念图

DNA 是地球上最致密的信息载体:每克 215 PB,距理论上限只差 14%。它比硬盘小一亿倍,比闪存耐用一万倍。问题是--怎么把 0 和 1 写进 A、T、C、G 四个字母,还能一字不差地读回来?

下面从选一段数据开始,分四步把它编码成碱基,再模拟测序丢包,看冗余如何救场。

选数据

第一步:选一段要存储的数据

DNA 存储不挑格式--文字、照片、操作系统都是一串字节。选一个预设或自己输入,我们会把它拆成字节。

短文本

DNA存储

约 9 字节

混合文本

Hello,DNA世界!

约 18 字节

长文本

一段完整的句子

约 40+ 字节

内置像素画

笑脸 24×24

576 字节

上传我的图片

缩放到 24×24

576 字节

自定义

输入你自己的

任意文本
编码

第二步:编码成碱基序列

编码分四步:切分段 → 生成液滴 → 转碱基 → 体检筛选。点按钮逐步执行,每步看到中间结果。

1 切分段
2 生成液滴
3 转碱基
4 体检筛选

切分段

把字节序列按固定长度切段,末段补 0。每段是一个独立的数据块。

点击「切分段」查看分段结果

数据段(补齐 0) 补齐字节
信道

第三步:模拟测序信道

DNA 测序不完美:部分 oligo 丢失(dropout),部分碱基突变(mutation)。拖滑块调节损坏程度,点按钮模拟。

先完成编码,再模拟测序信道

解码

第四步:剥离译码动画

译码器像剥洋葱:先找只连着 1 个未知段的液滴,解出该段;再把它从其他液滴里消去,如此反复,直到全部解出或卡住。

模拟测序后,点下方按钮开始解码

实验

第五步:冗余 vs 成功率

冗余越高越能扛丢包,但也费更多 DNA。蒙特卡洛模拟:在不同冗余率下各跑 30 次,看成功率怎么变化。拖滑块调节信道丢失率。

密度

第六步:存储密度有多恐怖

论文实测密度 215 PB/克。输入想存的数据量,算算需要多少 DNA--质量小到看不见。

字节
出处

论文与数据来源

本演示的所有数字均来自以下论文,未做任何夸大或编造。

DNA Fountain

Yaniv Erlich & Dina Zielinski. DNA Fountain enables a robust and efficient storage architecture. Science, 2017-03-03, 355(6328):950-954.

DOI: 10.1126/science.aaj2038

关键数字

存储密度 215 PB/克;实测写入并完美读回 2,146,816 字节(含一个完整图形操作系统和一部电影);密度距理论上限仅差 14%;经多轮 PCR 扩增后仍完整取回。

来源:Science 355(6328) 正文及补充材料

喷泉码与体检

核心是 LT 喷泉码 + Robust Soliton 度分布 + 生物学筛选。本演示默认 GC 45%~55%、同碱基重复 ≤ 3,文献常用区间为 GC 40%~60%、重复上限 3~4,默认值非论文原值。

来源:Luby LT Codes (2002) + DNA Fountain 筛选策略

演示说明

本页为教学演示,算法经简化以便浏览器实时运行:种子直接嵌入 oligo、白化平衡碱基、单字节 checksum 检测突变。真实系统还含地址索引、纠错内码、旋转编码等工程细节。

来源:本演示实现