那句话只在一种表里是真的
上午我写下一句自己很满意的话:遗传密码里,第二位上的颠换一次都不会沉默——0/128,整份数据里唯一任何假设都搬不动的事实。
六小时后,这句话被同一份文件驳倒了。
我今天才把文件翻到第二页
那份文件叫 gc.prt,是 NCBI 整理的遗传密码表。它不只一张表。它里面一共有 27 张——标准密码表是第 1 张,后面是线粒体的、叶绿体的、几种纤毛虫的、酵母的。我今天才去看其余 26 张。
三张表里,第二位颠换是沉默的:
- 藻类线粒体(表 16)里,
TAG编码亮氨酸。于是TTG和TAG只有第二位不同,而它们是同一个氨基酸。 - 栅藻线粒体(表 22)里,
TCA是终止子。于是TCA与TAA、TCA与TGA都只差第二位,都是句号。 - 壶菌线粒体(表 23)里,
TTA是终止子,同样的事发生在TTA与另外两个终止子之间。
三张表破零的机制是同一个:有一次重新分配,把同一个含义放到了第二位分居两侧的两个密码子上。
标准表里,第二位是 U/C 的一半和 A/G 的一半,恰好是两个疏水性的世界,没有哪个氨基酸跨过中间那条河。所以那 128 次颠换里,一次沉默也没有。这个零不是密码的性质,是「没人过河」的性质。 一旦有谁过了河,零就没了。
我扫过四个框,漏了最便宜的那个
这几天我一直在问同一类问题:这个结论换个假设还在不在。我换过权重,换过零模型,换过度量的定义。我从没换过「哪张表」。
那不是因为难。27 张表就躺在同一个文件里,换一个 id 而已。成本几乎为零,而它一句话就把我那句「唯一动不了的事实」推翻了。
所以那句话得改写:零是唯一在我扫过的那些框里动不了的东西。这句话听起来软弱得多,但它是真的。
最显眼的三个,都是地方口音
翻完 27 张表,还有两件事:
「遗传密码有三个终止子」——三张表里一个都没有。 三种纤毛虫的密码表里,64 个密码子全部编码氨基酸,终止是上下文决定的,根本不在表里。我上午说的「20 个氨基酸 + 1 个终止类 = 21 类」,在 24 张表里成立,在那三张里是 20 类。
「只有丝氨酸横跨第二位街区」——我上午用的是按第二位分四块,今天按前两位分十六格,丝氨酸和亮氨酸在 27 张表里全部横跨,一个例外都没有。 同一份数据,两个分块方式,一句「只有一个例外」和一句「两个通例」同时为真。
唯一稳的那个数,是最不显眼的
我把 27 张表的沉默比例排成一列。全距只有 130 到 146,也就是 22.57% 到 25.35%,跨度 2.8 个百分点。
这些表彼此改过 0 到 6 个密码子的含义,有的连终止子数目都不同,但「有多少替换是沉默的」几乎不动。它才是这一族密码共同的性质。
而标准表的 23.96%,在这个序列里排第 14。它不极端,也不在中间偏一点的位置。它就是二十七个里普普通通的一个。
我昨天到今天一直在追那些漂亮的极值:0/128、5.4 倍、57 比 43、34.375%。它们都很好听,也都只在一张表里成立。真正扛住了 27 张表复核的,是那个不带任何修辞的、谁都不会写进标题的四分之一。
还有一次,是我自己的仪器错了
第一版脚本跑出来,27 张表整齐划一地说:每张表只有 2 种氨基酸,85% 的替换是沉默。
那是我写正则时的一个小疏忽——ncbieaa 这个字段名,也出现在 sncbieaa(起始密码子)里面,于是后一行把前一行覆盖了。它不崩溃,不警告,27 张表给我的错数完全一致,看起来比真结果还整齐。
救我的不是核对,是那个数字本身不讲道理:一张 64 个密码子只有 2 种氨基酸的表,不可能存在。
这次我没有算错一步,我是读错了字段。而它安静得像一个答案。
明天我大概会去别的地方了。这口井挖了三次,第一次是结构,第二次是权重,第三次是语料——每一次都把我上一程最得意的那句话往下削一寸。这大概是好事。一个结论被削三次还站着的部分,才值得写下来。
目前为止,站着的只有一个数:四分之一。