基因的编码:为何“四进制”比“二进制”更好?
计算机已经成功的证明,“二进制”是一种简洁又高效的编码方案(且与物理硬件相得益彰),它可以传递和映射任意复杂度的信息。
但基因编码,绝大部分却使用了4种碱基(DNA是ATCG,RNA是AUCG),而不是2种碱基,这到底是为什么呢?难道自然进化不更应该偏爱“简单可用”的方案吗?
本文,将会深入探讨基因的编码选择,包括其背后可能的原因,以及更为深刻的关联到宇宙演化的原则与规律。
主题目录如下:
- 计算机与基因
- 基因“二进制”编码
- 基因“三进制”编码
- 为何“四进制”
- 结语
计算机与基因
计算机应用“二进制”,其实隐含了两个层面,即:编码与计算。
- 编码——是使用“2种数字”进行信息的表达与传递。
- 计算——是对“2种数字”进行控制,从而完成对信息(包括表达与传递)的控制。
那么,类比起来:
- 基因编码——就是碱基的排列组合,它可以完成遗传信息的表达与传递。
- 基因计算——就是对碱基的控制,它可以完成对遗传信息的控制。
碱基——简单来说,就是一种环形含氮化合物。
对于编码,碱基就可以看成是一种“抽象数字”——2种碱基就是2种数字,4种碱基就是4种数字——而“数字编码”所形成的序列,就信息内涵而言,“二进制”与“四进制”并没有什么本质的区别。
因为不同的编码方案,都可以表达和传递出相同的信息,就像不同的语言可以描述相同的意思一样,只不过信息编码的冗余度与能量消耗,不尽相同。
对于信息存储,计算机是基于物理介质的二维平面结构(即信息存储在平面上),而基因信息的存储,是基于生物分子的三维空间结构。
这两种形式,功能复杂度不同,但都可以动态的改变信息,计算机是改变存储介质的微观结构,而基因本身就是微观,因此其结构即是信息,修改结构即是修改信息,如:DNA甲基化。
DNA甲基化——是DNA化学修饰的一种形式,能在不改变DNA序列的前提下,改变遗传表现。其过程,是在转移酶的作用下,使甲基添加到DNA分子上。
对于计算,计算机是基于抽象数学(“二进制”就隐含进位的运算法则),其计算过程是数学逻辑的运算,而基因是基于具体数学,其计算过程是化学变化与量子效应。
- 抽象数学——是人类对自然规律的认知总结。
- 具体数学——是在自然规律下“进化”随机试错的产物。
显然,具体数学一定蕴含着抽象数学可以描述的自然规律,只不过“进化”并不需要“认知”自然规律,只需要“遵守”。
而人类,就是在用抽象数学去模拟计算具体数学,只不过人类未必可以认知所有自然规律中的抽象数学。
综上可见,计算机与基因在信息的编码、存储与计算等方面,都可以找到一一对应的模式,并且这两套系统,都可以完成对信息的表达、传递与控制。
在**《盗火》(Stealing Fire)一书中,根据当前合成生物学**的研究成果,作者(史蒂芬·科特勒)想象了未来可能发生的一个场景:
“通过把遗传密码字母中的4个字母,当成电脑编码中的1和0,合成生物学使我们能像为计算机编写程序那样简单地编写——活细胞程序。一旦代码编写好了呢?把它发送到一个DNA(基因)合成器,数天内,你会在快递包裹中收到一个冷冻干燥的小瓶,里面装着你的基因创造物。”
那么,基因编码在进化过程中,为了完成信息遗传的“任务”,选择了“4种碱基”而不是“二进制”,这是一个值得深思的问题。
而在这个问题之前,我们需要多问一句——如果基因编码采用“2种碱基”,同样也可以完成信息遗传的“任务”吗?
基因“二进制”编码
事实上,如果使用“二进制”,基因照样可以编码出同样的功能。
现在是3个碱基,编码一个密码子,每个碱基位有4种碱基可选,那么密码子的种类就是:4 * 4 * 4 = 64种。
密码子——是指信使RNA分子中,每相邻的三个核苷酸编成一组,在蛋白质合成时,代表某一种氨基酸的规律。
同样,如果每个碱基位有2种碱基可选,此时使用更多的碱基位来编码一个密码子即可,如:6个碱基位编码一个密码子,就可以编码同样种类和数量的密码子,即:2 * 2 * 2 * 2 * 2 * 2 = 64种。
但这样的问题就在于,编码密码子的碱基位变多,这种“排列增长”扩展到整个DNA链来看,会变得非常容易出错,因为二进制编码一个密码子需要正确排列6位(6个2),四进制只需要正确排列3位(3个4)。
同时,这还会消耗更多的能量,DNA结构会变得更长更复杂,等等一些列问题。
基因“三进制”编码
事实上,如果使用“三进制”,基因编码也没问题。
一个密码子就可以决定一种氨基酸,理论上64种密码子,可以决定64种氨基酸,但在实际中只有20多种氨基酸。
原因就在于,多个密码子可以对应同一个氨基酸,还有一些特殊的密码子,代表着编码肽链的“起始”与“终止”指令。其中终止密码子,有3种——不对应任何氨基酸。
肽链——是由多个氨基酸相互连接,形成含有多个肽键的一条链状结构。 肽键——是连接两个氨基酸的化学键。
那么,20多种氨基酸,其实只需要3种碱基(三进制)和3个碱基位即可,即:3 * 3 * 3 = 27种。但这样,密码子就失去了简并性,这会降低氨基酸对有害突变的“抗性”。
密码子的简并性——在分子生物学中,是指同一种氨基酸,具有两个或更多个密码子的现象。
因为,密码子中的一位或两位,可以突变成多种可能,但都依然保持密码子对应同一个氨基酸,这样就保证了氨基酸(及上层肽链和蛋白质)功能的稳定性。
而更进一步,如果随机突变产生了终止密码子(有3种),则就会立马终止肽链的合成,这会产生非常严重的功能性错误。
那么显然,三进制终止密码子的占比(3 / 27),约是四进制占比(3 / 64)的2.4倍——这个倍数将会在亿万次密码子的编码过程中,形成可观的突变积累效应。
由此可见,“四进制”编码并不“简洁”,但正是这个冗余性,可以极大提高基因编码的容错性(即减少有害突变),进而提高进化的稳定性。
为何“四进制”
综上可见,“四进制”——使用4种碱基(编码),并不是基因完成信息遗传“任务”的唯一方案,而这个方案在进化过程中,能够胜出的重要原因,主要有两个,即:冗余性与随机性。
关于冗余性,其最大的好处就是——容错性,其原理就在于:让错误发生在“冗余”之上,从而就避免了“非冗余”的错误。
那么对于计算机来说,也经常会使用冗余性来增加容错性,甚至对于量子计算机,“冗余校验”更是一个必要的功能步骤——因为量子计算的结果是一个概率,验证概率,就需要用统计数据,其原理就是:利用“冗余”操作的统计结果,来对比判断“非冗余”操作结果的正确性。
当然,进化并不会用“无限冗余”来保证“无限正确”,其原则就是“够用就好”(即没有顶层设计,在凑合修补中前行),而如何抵达这个“够用”,这依靠的就是随机性。
关于随机性,其最重要的作用就是——随机试错,自然进化就是在随机试错的过程中,发现了“四进制”这个“够用就好”,接着“四进制”就被选择,成为了基因的编码。
我们可以看到,“四进制”很好的平衡了容错与够用,以让进化中的不利突变,降低到可以保证上层功能的稳定够用,同时编码过程的复杂性与能量消耗,也可以维持在稳定够用的平衡态。
因此,“四进制”其实是随机试错产生的,可以适应环境的概率产物。
那么可以想象,曾经“二进制”或“三进制”的基因编码,可能也是存在的,只是被环境给淘汰了——因为它们无法抵达“够用就好”。
结语
自然选择,适者生存,否则消失——因此,能够适应环境的“玩家”,就是进化过程中留存的“赢家”。
但适应环境,并不需要出类拔萃或尽善尽美,而只需要——够用就好,因为随机试错一旦遇到了够用就好,就会停止试错(甚至抑制试错),并等待着环境变化给予进一步的**“指示”**,方能继续试错。
换言之,进化适应的产物来自——随机试错,够用就好——前者是进化,后者是适应,进化产生适应就会稳定留存,并保持现状,直到环境发生变化。
事实上,够用就好,在此之下的都消亡了,在此之上企图追求完美的,最终也消亡了——因为完美就会缺少冗余,进而缺少容错,最终变得脆弱——而保持够用就好,就能很好的维持适应的平衡点,从而一直好好的存在着。
那么,在局部来看充满了随机性,但在漫长的时间尺度下,就会呈现出——规律,而在规律视角下,就拥有了方向——随机就变成了迭代。
因此,从微观局部来看——是随机试错,即演化;但从宏观整体来看——就是迭代试错,即进化。
Evolution——原本译作进化,后来发现进化带有目的性,大自然用演化更适合,但据我更细致地理解区分是,微观随机试错用演化,宏观迭代试错用进化。