结论放前头,DNA储存选择三进制的原因是为了降低出错率。
(PS:这里的DNA储存是指电子计算机使用DNA作为储存介质的技术,也就是把DNA当硬盘用的技术,为避免误会故在此说明)
二进制的电子计算机有高电平低电平两种状态,而学过高中生物都知道,DNA由ATCG四种碱基组成,那么很自然会想DNA储存是不是就应该是用四进制呢(比如A代表0,C代表1,G代表2,T代表3)?这样可以最大化地提升数据密度而且可以跟普通计算机兼容,毕竟四进制跟二进制的互相转换是很快的。
但是DNA跟普通的闪存、磁盘是有很大区别的,DNA信息的读取是通过测序来完成的,而DNA有一个特性是当同样的碱基对连续出现时(也就是均聚物)会显著增加测序出错的概率。普通文件里面连续的0或者1是非常常见的,如果直接以四进制编码成DNA,会出现连续同样的碱基对,导致读取出错。
所以DNA储存使用了一种叫做“旋转编码(rotating code)”的编码方案(如下图所示)来避免相同碱基的连续出现。
简单来说,就是上一个碱基如果是A,那么下一个碱基只能是C、G、T,其中C代表0,G代表1,T代表2;如果上一个是C,下一个只能是G、T、A,其中G代表0,T代表1,A代表2,以此类推。以这种方式进行编码,任意一个碱基和前后的碱基都是不一样的,也就避免了均聚物的出现。但是这样一来,就只能同时使用四种碱基中的三种来表示状态,也就是最多只能用三进制。
下图是实际编码过程的示例。其中的Huffman code是用于二进制跟三进制转换的编码方式,与题目无关此处就不多做解释了。
文中图片均来自于参考文献。
参考文献:
Bornholt J, Lopez R, Carmean D M, et al. A DNA-based archival storage system[C]//Proceedings of the Twenty-First International Conference on Architectural Support for Programming Languages and Operating Systems. ACM, 2016: 637-649.