新浪科技综合|一针辉瑞疫苗,其实是2万亿段代码:程序员逆向重建mRNA源代码

来源:返朴
从辉瑞疫苗被批准以后 , 它就被置于世界的聚光灯下 。 近日 , 一位程序员从计算机科学的角度 , 对辉瑞疫苗的设计进行了‘逆向工程’ , 文章引起不小的反响 , 从信头 (Header)、元数据(Metadata) , 到帮助伪装躲过人体免疫系统防火墙的 Ψ 分子 , 一支疫苗有2万亿段重复的代码 , 我们看到了计算机与生物学那颇为神秘的联系 。
辉瑞疫苗 , 逆向工程?
听起来有些不可思议 , 但一位程序员从计算机科学的角度深度剖析了Biotech/辉瑞的mRNA新冠疫苗BNT162b设计 , 并撰写了这篇文章—— Biotech/辉瑞SARS-CoV-2疫苗的源代码的反向工程(Reverse Engineering the source code of the BioNTech/Pfizer SARS-CoV-2 Vaccine) 。 (以下简称辉瑞疫苗)
读过后 , 你或许会开始会让你对生命和计算机世界产生奇妙的联系 。

新浪科技综合|一针辉瑞疫苗,其实是2万亿段代码:程序员逆向重建mRNA源代码
文章图片
图1/20

简单的生物学背景
让我们先来回顾一下生物学知识 , 这里 , 我们将透过程序员的眼睛看待生命编码 。

新浪科技综合|一针辉瑞疫苗,其实是2万亿段代码:程序员逆向重建mRNA源代码
文章图片
图2/20

DNA和程序的种种相似的地方 , 但与计算机使用0和1不同 , 生命使用A、C、G和U/T来编码 。
在自然界中 , A、C、G和U/T都是分子 , 以链的形式储存在DNA(或RNA)中 。
在计算机中 , 我们把8位编入一个字节 , 字节是处理数据的典型单位 。
自然界将3个核苷酸组合成一个密码子 , 而这个密码子是典型的处理单元 。
密码子包含6位信息 (每个DNA字符2位 , 3字符= 6位 , 这意味着2? = 64种不同密码子值)。
其次 , 疫苗是一种液体 , 我们该如何谈论源代码?
源代码!
让我们从疫苗的一小部分源代码开始 , 下图为世界卫生组织公布的BNT162b前500个字符 。

新浪科技综合|一针辉瑞疫苗,其实是2万亿段代码:程序员逆向重建mRNA源代码
文章图片
图3/20

mRNA新冠疫苗BNT162b的核心就是这个数字代码 。 它有4284个字符长 , 在疫苗生产过程的最开始 , 将这段代码上传到DNA打印机 , 然后打印机将磁盘上的字节转换成实际的DNA分子 。

新浪科技综合|一针辉瑞疫苗,其实是2万亿段代码:程序员逆向重建mRNA源代码
文章图片
图4/20
DNA打印机 , 型号BioXp 3200
从这样的机器中产生了少量的DNA , 在经过大量的生物和化学处理后 , 最终成为疫苗瓶中的RNA 。
RNA就像计算机的RAM一样 , 但是 , RNA非常脆弱 , 所以 , 辉瑞的mRNA疫苗必须储存在最深处的深冷库里 。
每个RNA字符的重量为 0.53·10?21克 , 一针疫苗里有2万亿段重复的代码 , 相当于25 Pb的数据量 。
让我们来看世卫组织文件披露的一页:

新浪科技综合|一针辉瑞疫苗,其实是2万亿段代码:程序员逆向重建mRNA源代码
文章图片
图5/20

首先 , cap是什么?就像你不能在计算机上的一个文件中输入操作码然后运行它一样 , 生物操作系统需要头文件、链接器和调用约定之类的东西 。
疫苗的编码由以下两个核苷酸开始:

新浪科技综合|一针辉瑞疫苗,其实是2万亿段代码:程序员逆向重建mRNA源代码
文章图片
图6/20

这可以与以MZ开头的DOS和Windows可执行文件 , 或以#!开头的UNIX脚本进行比较 。 在生活系统和操作系统中 , 这两个字符都不会以任何方式执行 。 但他们必须在那里 , 否则什么都不会发生 。
mRNA ‘帽’有许多功能 , 它让代码看起来合法 , 从而保护它不被我们身体里的免疫系统破坏 。
未翻译区5 ‘UTR
生命由蛋白质组成 。 当RNA转化为蛋白质时 , 这被称为翻译 。

新浪科技综合|一针辉瑞疫苗,其实是2万亿段代码:程序员逆向重建mRNA源代码
文章图片
图7/20

RNA分子只能从一个方向读取 。 令人困惑的是 , 阅读开始的部分被称为5‘UTR 。 读数在3 ’UTR停止 。
UTR(Untranslated Regions) 即非翻译区 , 是mRNA分子两端的非编码片段:

新浪科技综合|一针辉瑞疫苗,其实是2万亿段代码:程序员逆向重建mRNA源代码
文章图片
图8/20

在这里 , 我们遇到了第一个惊喜 。 正常的RNA特征是A、C、G和U 。 U在DNA中也被称为‘T’ 。 但在这里我们发现了一个ψ 。
怎么回事?
这是关于疫苗的一个特别聪明的地方 。 我们的身体运行着一个强大的反病毒系统 , 由于这个原因 , 细胞对外来RNA非常冷淡 , 并且在它做出任何反应之前就要破坏它 。

新浪科技综合|一针辉瑞疫苗,其实是2万亿段代码:程序员逆向重建mRNA源代码
文章图片
图9/20

这对我们的疫苗来说是个问题——它需要偷偷通过我们的免疫系统 。 经过多年的实验 , 人们发现 , 如果RNA中的U被一种稍作修饰的分子所取代 , 我们的免疫系统就会失去兴趣 。
所以在辉瑞疫苗中 , 每个U都被1-甲基-3 ‘ -伪尿酰(ψ)所取代 , 它能帮助我们的疫苗逃过免疫系统这一关 。
在计算机安全领域 , 我们也知道这个诀窍:有时可能传输某样东西 , 虽然这会引起防火墙和安全解决方案的怀疑 , 但这仍然被后端服务器接受 , 然后可能被黑客攻击 。
很多人问 , 病毒能否也用ψ技术来打败我们的免疫系统?
这是不太可能的 。 因为生命根本没有制造1-甲基-3 ‘ -伪尿酰核苷酸的机制 , 而病毒需要依靠生命的机制来繁殖自己 。 而mRNA疫苗在人体内迅速降解 , 而ψ修饰后的RNA不可能在那里复制 。

新浪科技综合|一针辉瑞疫苗,其实是2万亿段代码:程序员逆向重建mRNA源代码
文章图片
图10/20

回到5 ‘ UTR 。 这51个字符是做什么的?如同自然界的一切事物一样 , 几乎没有任何事物有一个明确的功能 。
当我们的细胞需要将RNA翻译成蛋白质时 , 这需要使用一种叫做核糖体的机器 。 核糖体就像蛋白质的3D打印机 。 它摄取一串RNA , 在此基础上释放出一串氨基酸 , 然后折叠成蛋白质 。

新浪科技综合|一针辉瑞疫苗,其实是2万亿段代码:程序员逆向重建mRNA源代码
文章图片
图11/20

这就是我们在上面看到的情况 。 底部的黑色丝带是RNA 。 出现在绿色部分的缎带是正在形成的蛋白质 。 进出的东西是氨基酸和使它们适合RNA的适配器 。
这个核糖体需要坐在RNA链上才能发挥作用 。 一旦就位 , 它就可以开始根据它摄入的RNA进一步形成蛋白质 。 从这一点上 , 你可以想象它还不能读出它首先降落的地方 。
这只是UTR的功能之一:核糖体着陆区 。 UTR提供‘导入’ 。
S糖蛋白信号肽
如前所述 , 疫苗的目标是让细胞产生大量刺突蛋白 。 到目前为止 , 我们在疫苗源代码中遇到的大多是元数据和调用约定 。 现在我们进入病毒蛋白质的领域 。

新浪科技综合|一针辉瑞疫苗,其实是2万亿段代码:程序员逆向重建mRNA源代码
文章图片
图12/20

然而 , 我们还有一层元数据需要处理 。 一旦核糖体制造出一个蛋白质 , 这个蛋白质仍然需要去某个地方 。 这是编码在‘S糖蛋白信号肽(扩展先导序列)’ 。
了解这一点的方法是 , 在蛋白质的开头有一种地址标签 , 作为蛋白质本身编码的一部分 。 在这个特定的例子中 , 信号肽表明这种蛋白质应该通过‘内质网’离开细胞 。
‘信号肽’不是很长 , 但是当我们看代码时 , 病毒和疫苗的RNA是有区别的:

新浪科技综合|一针辉瑞疫苗,其实是2万亿段代码:程序员逆向重建mRNA源代码
文章图片
图13/20

怎么回事呢?我们知道 , 在生物学中 , 三个RNA字符组成一个密码子 。 每个密码子都对特定的氨基酸进行编码 。 而疫苗中的信号肽与病毒本身的氨基酸完全相同 。
那么RNA是怎么不同的呢?
有43=64个不同的密码子 , 因为有4个RNA字符 , 一个密码子中有3个 。 然而只有20种不同的氨基酸 。 这意味着多个密码子对同一种氨基酸进行编码 。
下表映射了RNA密码子和氨基酸之间的编码关系:

新浪科技综合|一针辉瑞疫苗,其实是2万亿段代码:程序员逆向重建mRNA源代码
文章图片
图14/20
RNA密码子表丨维基百科
在这个表中 , 我们可以看到疫苗(UUU -> UUC)的修改都是同义的 。 疫苗的RNA编码不同 , 但会产生相同的氨基酸和蛋白质 。
如果我们仔细观察 , 我们会发现大部分的变化发生在密码子的第三个位置 , 上面有一个‘ 3 ’ 。 如果我们检查通用密码子表 , 我们会发现第三个位置通常与产生的氨基酸无关 。
所以 , 这些变化是同义的 , 但为什么会有这些变化呢?仔细观察 , 我们发现除了一个变化之外 , 所有的变化都会导致更多的C和G 。
你为什么要这么做?如上所述 , 我们的免疫系统会对‘外源性’RNA进行攻击 , 为了逃避检测 , RNA中的‘U’已经被ψ所取代了 。
然而 , 事实证明 , 含有更多G和C的RNA也能更有效地转化为蛋白质 , 这已经在疫苗RNA中实现了只要有可能就用G和C替换许多字符 。
真正的刺突蛋白
疫苗RNA的下3777个字符类似于‘密码子优化’ , 可以添加大量的C和G 。

新浪科技综合|一针辉瑞疫苗,其实是2万亿段代码:程序员逆向重建mRNA源代码
文章图片
图15/20

这里我们看到同义的RNA变化 。 例如 , 在第一个密码子中CUU变成了CUG 。 这给疫苗增加了另一个‘G’ , 我们知道这有助于提高蛋白质的生产 。
当我们比较疫苗中的整个刺突蛋白时 , 所有的变化都是同义的 。 除了两个 , 这就是我们在这里看到的 。
上面的第三和第四个密码子代表了实际的变化 。 那里的K和V氨基酸都被P或脯氨酸所取代 。 对于‘K’ , 这需要改变三次(‘!!’) , 而对于‘V’ , 这只需要改变两次(‘!!’) 。
事实证明 , 这两个变化极大地提高了疫苗的效率 。
那么这里发生了什么?如果你看一个真正的冠状病毒粒子 , 你可以看到刺突蛋白:

新浪科技综合|一针辉瑞疫苗,其实是2万亿段代码:程序员逆向重建mRNA源代码
文章图片
图16/20

这些刺钉被安装在病毒体内 (‘核衣壳蛋白’) 。 但问题是 , 我们的疫苗只会产生刺突 , 我们不会把它们植入任何一种病毒体内 。
结果是 , 未经修饰的 , 独立的刺突蛋白崩溃成不同的结构 。 如果作为疫苗注射 , 这确实会使我们的身体产生免疫力 。 但只针对崩溃的刺突蛋白 。
真正的冠状病毒是带着尖刺的 。 在这种情况下 , 疫苗不会很有效 。
那么该怎么办呢?
2017年 , 有人描述了如何在正确的位置放置一个双脯氨酸替代 , 将使SARS-CoV-1和MERS S蛋白形成‘预融合’结构 , 即使不是整个病毒的一部分 。 这是因为脯氨酸是一种非常坚硬的氨基酸 。 它就像一种夹板 , 在我们需要向免疫系统展示的状态下稳定蛋白质 。
蛋白质的末端 , 下一步
如果我们浏览其余的源代码 , 我们会在刺突蛋白的末端遇到一些小的修改:

新浪科技综合|一针辉瑞疫苗,其实是2万亿段代码:程序员逆向重建mRNA源代码
文章图片
图17/20

在蛋白质的末端 , 我们会发现一个‘停止’密码子 , 在这里用小写的‘s’表示 。 这是一种礼貌的说法 , 表示蛋白质应该到此为止 。 最初的病毒使用UAA终止密码子 , 疫苗使用两个UGA终止密码子 , 也许只是为了更好的措施 。
3 ‘UTR
就像核糖体在5 ‘端需要引入 , 我们发现了’ 5UTR , 在蛋白质的末端我们发现了一个类似的结构 , 称为3 ‘ UTR 。
关于3 ‘ UTR有很多说法 , 但这里引用维基百科的说法:‘3 ’ UTR在基因表达中起着至关重要的作用 , 它影响mRNA的定位、稳定性、输出和翻译效率 。 尽管我们目前对3 ‘ -UTRs有了解 , 但它们仍然是相对神秘的 。 ’
我们所知道的是 , 某些3 ‘ UTR在促进蛋白质表达方面非常成功 。 根据世卫组织的文件 , 辉瑞疫苗3 ’ UTR是从‘split (AES) mRNA的氨基末端增强子和编码12S核糖体RNA的线粒体中提取的 , 以保证RNA的稳定性和高总蛋白表达’ 。

新浪科技综合|一针辉瑞疫苗,其实是2万亿段代码:程序员逆向重建mRNA源代码
文章图片
图18/20

The AAAAAAAAAAAAAAAAAAAAAA end of it all
mRNA的最末端是聚腺苷化的 。 这是一种以‘AAAAAAAAAAAAAAAAAAAAAA’的奇特结尾 。
似乎 , 就连mRNA似乎也受够了这个糟糕的2020年!
mRNA可以重复使用很多次 , 但在这个过程中 , 它也会在末端失去一些A 。 一旦A耗尽 , mRNA就不再起作用而被丢弃 。 这样 , ‘多聚腺苷酸尾(Poly-A Tail)’就可以防止其退化 。
有研究表明 , 对于mRNA疫苗来说 , A的最佳数量是多少 。 我在公开文献中读到 , 这个数字在120左右达到了顶峰 。
BNT162b2疫苗的是:

新浪科技综合|一针辉瑞疫苗,其实是2万亿段代码:程序员逆向重建mRNA源代码
文章图片
图19/20

这是30个A , 然后是‘10个核苷酸连接体’(GCAUAUGACU) , 再后面是70个A 。
太长不看版
如果上面的一切让你感到云里雾里 , 作者在这里为您准备了一份‘太长不看版’:
帽子来确保RNA看起来像普通的mRNA
已知的成功和优化的5 ‘ UTR
【新浪科技综合|一针辉瑞疫苗,其实是2万亿段代码:程序员逆向重建mRNA源代码】密码子优化信号肽 , 将刺突蛋白送到正确的位置(100%从原始病毒复制)
原始刺的密码子优化版本 , 有两个‘脯氨酸’替代 , 以确保蛋白质以正确的形式出现
一个已知的成功和优化的3 ‘ UTR
一个有点神秘的多聚腺苷酸尾(Poly-A Tail) , 里面有一个无法解释的‘连接器’
密码子优化在mRNA上增加了大量的G和C 。 与此同时 , 用ψ(1-甲基-3 ‘ -伪尿酰ψ)而不是U来帮助逃避我们的免疫系统 , 因此mRNA会停留足够长的时间 , 所以我们实际上可以帮助训练免疫系统 。

新浪科技综合|一针辉瑞疫苗,其实是2万亿段代码:程序员逆向重建mRNA源代码
文章图片
图20/20

文章在reddit上引起了广泛讨论 , 学科间的边界似乎也越来越模糊 。
一位网友看完后直言:我通过稍微修饰U核苷酸 , 可以使RNA越过我们的‘安全系统’ 。 我们的安全系真的糟透了!
你呢?你怎么看?

    推荐阅读