在之前RFDesign预印文章发表之后,铺天盖地的公众号争先对其进行了报道和吹捧,导致笔者之前也只是简单地认为不就是换了个RoseTTAFold神经网络么,还能有啥花样。但沉下心来,再重新把过往的文章和设计思路重新捋一捋,就会发现这一系列的工作对蛋白质设计领域的革新之大,至少对我而言,在看完这篇文章之后,其他的蛋白设计方法都不香了。
蛋白设计本质上即蛋白结构预测的逆问题,通常来讲是在给定蛋白结构的前提下设计出能够兼容这个结构的序列,这种模式也称为“fix-backbone design”。传统上大家基于经验势能迭代优化氨基酸序列和蛋白主链,其中久经实践考核的就是Rosetta中的FastDesign算法clash支持鸿蒙吗clashxmacgithub。随着深度学习技术的进步,也出现了一系列“Deep”的序列设计和生成的方法clashxmacgithub。
比如在3D-CNN框架下近期表现最好的模型是DenseCPD,其通过将三维结构进行3D-格点化后,利用原子密度信息来训练和预测局部环境中氨基酸侧链出现的概率,这种one-body的PSSM信息结合Rosetta来进行蛋白设计,此类的模型思路基本套路都差不多,看一篇足矣。
基于GNN框架下比较值得关注的是近期的TERMinator和Structured Transformer,这两者都是有效利用局部的蛋白主链三维信息来预测蛋白质序列的概率,不同点在于TERMinator利用TERMs信息和GNN+Potts Model来拟合能量函数做给定结构的序列优化,而Structured Transformer基于自回归的模型来将结构信息和已生成的序列作为输入来预测下一个位点的氨基酸类型。
此外VAE和GAN框架下也有进展,如ProteinGAN等基于生成对抗网络的序列生成方法,通过学习某个家族的同源序列的高阶特征,来扩充目标蛋白的序列空间;DeepSequence利用变分自编码器来建模局部氨基酸与全局信息的关系来预测点突变的稳定性任务。
随着预训练的出圈,出现了一系列有竞争力的预训练模型比如ProGen通过在2.8亿的蛋白质数据上进行预训练以及条件式生成特定家族或有某类功能活性的蛋白序列;又比如ESM-1b、MSA Transformer等结合微调或zero-shot做各类的下游任务。此外一个近期比较引人关注的是UniRep的双向LSTM模型的Low-N应用,其模型使用UniRef50上的预训练加同源家族序列二次参数优化的方法得到模型,结合实验中的少许的突变fitness信息来有监督式地训练预测器来生成序列,类似的还有ECNet结合各类预训练模型的embeddings以及目标蛋白同源序列的共进化信息一同进行微调的模型。
最后不得不提的是随着AlphaFold2在蛋白结构预测的突破性进展,目前已有若干基于结构预测模型进行逆向优化序列的方法,其中基本都基于trRosetta、RoseTTAFold或AlphaFold2模型,今天我们就来主要回顾一下Rosetta-DL系列的设计方法,争取把这一路以来的故事讲完整clash支持鸿蒙吗。
trDesign是最早使用结构预测模型进行反向序列设计的方法,由Sergey课题组提出。此方法的奥义所在是不断地迭代更新输入的序列,让最终模型预测的蛋白结构与目标蛋白结构尽可能的相似。具体的步骤分为2步:
结构预测:使用一个经过softmax的profile矩阵(PSSM)来描述每个位置上氨基酸出现的概率,将位置上最大的概率的氨基酸类型进行one-hot化,得到输入的氨基酸序列向量。将此输入至trRosetta模型中预测得到对应序列的2D特征,比如任意两个氨基酸之间的Cb距离(distance map)、键角以及朝向二面角的概率分布,一般地这些2D的特征隐藏了三维的结构信息,可以用在结构建模中。
梯度反推与序列更新:通过给定蛋白主链模板的2D特征与预测的特征定义loss损失函数后(简单来说就是比较两个蛋白结构的2D特征差异),使用反向传播的技术来回推PSSM-profile中的每种氨基酸序列的梯度,更新氨基酸的频率后,重新取argmax和one-hot操作就得到了更新后的序列。
在原文中,通过trDesign设计的序列后,使用Rosetta的ab-inito folding进行重头折叠模拟(相当于正交检验预测的结构)发现基于反向传播的方式设计的序列并没有很好地encode结构,给定序列预测的结构并非全局能量最低的状态。侧面也说明了,trRosetta学到的是residue之间的模糊约束信息,受限于模型的精度,作者后续配合使用了trDesign生成的PSSM和Rosetta FastDesign结合进行序列优化,得到的序列具有质量更佳的折叠势能面。
这一工作仅耗费短短数月完成,在深度蛋白质序列设计领域是开创范式性的工作,但trDesign+Rosetta这种处理方式并不完美,我们最终的目的是通过神经网络让序列和结构自洽地设计蛋白质。
在上一章节中,trDesign已经确立了基于反向传播设计序列的范式,该方法中需要提供一个目标的蛋白结构,属于fix-backbone的设计任务范畴。
在之前的工作研究中,研究者尝试将随机序列输入trRosetta,和预期一致,没有得到稀疏的2D特征,那是否能拟合一个的背景分布噪音来代表随机序列呢?只要让优化的序列的2D特征尽可能与随机序列的背景分布不同,那他就是结构化的蛋白,由此trDesign的姊妹篇Hallucination出来了,基本的思想是借鉴于谷歌团队的DeepDream模型。
但Anishchenko在本篇中巧妙地训练了另外一个神经网络,但其输入是Lx64维的向量,这是与氨基酸序列无关的随机噪音,对应训练的目标是所有的PDB结构的2D特征分布,这样训练出来的模型参数能代表所有PDB结构的2D特征信号的平均,即背景分布。
本文中作者使用KL散度来描述生成的结构和背景分布之间的差异程度,有了明确的Loss定义后,即可通过MCMC的随机点突变或梯度下降的方式来更新序列,一般场景下,Hallucination mcmc迭代40000步后2D特征分布基本收敛。作者使用这种采样方式幻想了2000个序列和结构并进行聚类分析,虽然不同子网络预测的序列差异较大但结构相似,并且这些蛋白类似理想型蛋白,均可以在PDB结构库中找到类似的Fold家族,这也表明Hallucination成功地在已知的结构和序列空间中进行采样。
不做实验等于白算,作者将聚类得到的129个蛋白全部进行表达,其中62个是可溶表达的,并且CD的圆二色谱和目标结构的二级结构分布吻合,这些蛋白具有高度的稳定性,平均的Tm值达到70摄氏度。最后选取了几个序列进行结构解析,结果表明解析的NMR和crystal结构和幻想设计的结构高度吻合。
Hallucination中看似简单的改动,就完成了自洽地生成蛋白结构和对应的序列,达到无中生有的境界,最后作者也提出了鲜明的观点,Hallucination+trDesign的设计方式完全可以来解决功能片段的融合设计问题,潜在的应用场景是酶设计、金属结合蛋白,以及蛋白binder设计,也是下一章节的主要内容。
在2020年末的11月,千呼万唤的融合功能Motif的设计方法出来了,其中主要的工作贡献是将trDesign和Hallucination有机的结合起来。具体的核心思想在于分而治之,将motif和scaffold两个部分的loss分别处理,对于活性位点而言,初始输入骨架的2D特征作为目标分布,优化的目标是让预测序列在这部分的尽可能地相似,对于自由幻想的部分,将随机噪音的2D特征分布作为背景,让生成的序列尽可能远离其分布。最后使用混合的loss函数来优化结构和序列,从而创造出一个携带功能motif片段的新蛋白结构。
显而易见,本文的Idea是前两篇文章思路的自然延伸。但本文的重点其实在另外一个问题上,即如何高效地插入motif片段是有技巧的,特别是对于多段不连续的motif片段引入时。
通过人定义的方法,随机拼接序列长短来进行Hallucination,这个方法比较粗暴,假设目前我有两段motif,整个蛋白序列理应被切割为5个片段,如下图所示:通过随机定义每个Region区域的序列长短来做Hallucination。由此可见,一种潜在的问题在于需要大量的采样。但这种方法非常适合于只有1段motif的情况,只需要简单地进行一些小型测试,便知道每个region合理的分布区间在哪。
第二种方法比较聪明,使用自适应的方式放置motif的区间,其实该算法的核心关键在于计算motif loss和Hallucination loss时采取的是动态的窗口法。 具体的做法是先随机初始化motif的位置窗口,并进行第一轮的Hallucination-motif预测初始序列的2D特征后,以MxM(大小与每段motif长度有关)的窗口进行滑动,通过卷积的方式遍历计算prediction features上每个窗口的motif loss,也就是计算在整个蛋白区间内,哪个部分和我当前的motif结构最相似,我就用那个部分的窗口来定义我的motif loss,并以此计算本轮的总loss和梯度反向传播来更新序列。
为了验证算法的有效性,作者在多种Motifs类型上进行了计算生成,许多的Motifs都能幻想出与之motif适配的scaffold骨架。但本文中并没有对这些设计进行验证clash支持鸿蒙吗,,是遗憾之一。
这次的进步主要是颠覆了以往严重依赖于预先生成的scaffold数据库的问题,让基于motif设计de novo蛋白有了更具广阔的结构模板空间。虽然没有解决之前遗留的trRosetta模型精度有限的问题,依然需要配合Rosetta FastDesign来输出最后的序列,但我们离真正地实现”一键蛋白质设计“更近了一步。另外本文方法的另外一个严重缺陷的问题在于,生成的蛋白结构并没有考虑binding的朝向问题,有一定的概率生成的蛋白和靶点蛋白存在严重的clash。
随着AlphaFold2和RoseTTAFold的问世clash支持鸿蒙吗,蛋白结构预测的水平被大幅拉高到平均80分的段位,可想而知这次一定是要致力于解决trRosetta结构预测精度的问题了,但本次更新却不仅仅是换壳而已,而是大大的创新。
首先本文对先前的trDesign-Motif的实验进行了填坑,将其应用于PD-1类似物的设计上,成功地设计出具有中等级别结合活性的类似物,并且解析的晶体结构和目标设计模型高度吻合!这说明了trDesign-Motif概念上的可行性,但仔细看看,这些蛋白的Fold都比较相似,并且motif的RMSD极低。
除此以外,作者做的第二件事就是换RoseTTAFold作为核心,并在现在PD-1这个测试靶点上比较了RoseTTAFold和trRosetta的表示能力,结果使用RoseTTAFold生成的序列相比trRosetta更好地encode目标结构(使用af2作为正交检验的结构预测方法),在各项指标上RoseTTAFold的效果媲美于trRosetta+Rosetta的设计方法。
但最重要的是RoseTTAFold可以显式地利用SE-3 Transformer预测的三维结构坐标,而trRosetta仅考虑了2D特征分布。我们可以根据设计问题的不同,借助三维结构的信息来定义各类新的loss,比如可以从根本上解决幻想时没有考虑朝向的问题。
作者后续进行了更多类型功能蛋白的幻想,使用的评价方式是AF2的plddt以及生成结构的motif RMSD,在这些测试的体系中,RFDesign成功地幻想出motif RMSD 1 Å,整体结构 2 Å的序列,并且af2预测的结构plddt 80。接下来我将逐个case来阐述设计的过程和如何引入先验知识。
免疫相关的蛋白设计有个先验经验,那就是设计出来的蛋白质需要有广谱性的结合能力,因此不能针对某些抗体或结合蛋白做过度的优化,比如第一个测试案例是幻想设计RSV病毒疫苗类似物,我们的目标是生成携带中和性抗体表位 (motif) 的de novo蛋白,通常只希望motif的部分能与抗体产生相互作用,否则体内产生的其他抗体会与设计的蛋白发生clash。其实这个问题的本质即如何在设计序列时显示地考虑受体环境的影响。由于RoseTTAFold神经网络能够直接输出预测结构的三维坐标,作者根据三维结构的坐标定义了全新基于物理的loss项,分别是Repulsive、Attractive以及Rg项的loss:
Repulsive:通过计算motif区段Ca原子和受体之间的距离来定义,相当于定义了类范德华排斥势loss。
Attractive:同理Repulsive,定义的是类范德华的吸引势loss;
Rg:用于控制让幻想的蛋白具有类似天然蛋白的球形形状,并具有良好的packing性质。
为了实现计算Repulsive,作者采取了比较省资源的方式,只是通过alignment RoseTTAFold输出的结构到复合物的界面上来计算loss,通过这种操作,作者成功地幻想了符合要求的蛋白序列,如下图A,类似的作者也幻想了ACE2类似物来结合新冠病毒的S突刺蛋白受体,这有希望能成为通用的新冠蛋白抑制药物。
从上述的例子可见,利用三维结构的信息是非常重要的。在此前的trDesign-motif中,笔者也尝试想通过将2D feature转换为3D结构后再进行与三维结构相关的loss定义,但由于使用Rosetta重新3D建模的效率过低,放弃了此想法,而RoseTTAFold通过SE3直接输出三维坐标,让神经网络在蛋白设计上操作空间有了质的飞跃。同时受到Rg项loss的启发,其实我们可以定义出更多与蛋白性质相关的terms,比如净电荷,这已经被表明是对de novo蛋白稳定性非常重要的一项(*虽然这个可以从1级序列求得);又比如二级结构的含量、蛋白中含有Loop的比例(loop越多,蛋白稳定性越差),等等之类,大家可以继续发挥想象。
在此部分工作中,作者将金属结合蛋白Di-Fe或EF-hand的结合位点进行抽取,通过RFDesign来补全维持功能中心的scaffold部分。毫无疑问,作者表示也成功设计出目标的结构。
接下来,作者尝试挑战设计碳酸酐酶2,由于de novo设计酶的时候需要进行高精度地维持侧链的结合构象,因此作者选择使用AF2进行反向传播来优化序列(居然还开发了AFDesign,感觉RFDesign突然不香了),这样可以定义侧链的loss。但实际测试过程中,发现需要在AF2中input MSA信息,否则无法复现中心构象。
这种操作可以有效解决需要输入MSA来初始化大致的骨架,最后作者在两个测试案例上完成的酶的幻想设计。
在上述4.1中,我们进行免疫原的设计并没有完全显式地将scaffold和受体之间的相互作用考虑,仅仅使用alignment的方式来确定大致的朝向。但是在设计特定靶点binder的任务中,我们是希望能让设计的蛋白与受体产生足够多的相互作用,从而克服motif提供结合力不足的场景。因此在反向传播的阶段,受体的结构应该也应该和幻想蛋白一同被显式地建模,但RoseTTAFold无法使用单一的受体序列来准确还原受体的晶体级精度,因此作者将受体的晶体结构作为同源模板作为RoseTTAFold的输入解决此问题,结果模型输出的受体结构几乎与晶体无异。
剩下的步骤中,作者同样考虑了计算成本的问题,将设计和优化分为了两个解决:
使用标准的幻想Protocol产生初始的binder结构,此时的复合物结构只是大致的形状互补,并没有对相互作用的contacts进行优化;
将第一阶段中,看起来比较靠谱的那些binder取出进行进一步地优化,具体的做法是将受体的序列和binder的序列用200个氨基酸的gap进行相连,然后一同预测整个复合物的结构,并且在反向传播的只优化binder自身的序列;
在优化的过程中,只用了motif的loss,从而来保证binder大致结合在受体的某个区间内,不施加hallucination, repulsive或attractive的这些losse;
最后在设计的测试案例中,作者发现在优化阶段只是用MCMC才能获取最好的结果。作者在三个测试案例上成功地设计出了binder:
在后续的分析中,带着受体所设计的binder具有更低Interface ddG,说明神经网络对PPI上的相互作用进行了优化,看上图中,一个特别明显的案例就是C3D_79号设计。
上述所述的所有案例,都是基于给定初始功能motif的前提下,通过神经网络不断迭代推理和反向传播的过程来设计序列,但该过程需要耗费大量的GPU机时,一般人也烧不起。因此作者提出了第二个可能设计蛋白的策略,有没有什么方法可以把幻想问题转换为预测问题呢?从而只需要少量的推理既可以完成相关的任务,在本章节中,把蛋白设计的问题转换成了图像补全的问题,通过Mask掉与受体和motif无关区域的部分,让神经网络来预测这部分的序列,并预测其结构,从而解决binder设计的问题。这个机制也和RoseTTAFold训练时采用的Mask MSA方式相匹配。
具体地,作者对RoseTTAFold模型进行进一步地训练,但训练目标任务有两,第一个任务是给定序列预测结构(常规的结构预测问题),第二个任务是给定结构预测序列(常规的fix-backbone序列设计问题),这相当于直接训练了一个可以用于蛋白设计的全新模型!作者称之为RFjoint。RFjoint的在测试集denovo protein设计任务上的的sequence recovery达到33%,与Rosetta FastDesign类似。
为了验证RFjoint对结构的补全能力,作者选取了2KL8晶体结构中的小段区域来进行mask,试图让RFjoint来补全这段结构的同时预测他的序列,从目前的结果来看,RFjoint完全可以胜任此任务,作者也在更多的案例上测试了图像目前的能力,也得到了积极的结果。另外作者也发现了一个有趣的现象,就是缺失补全的区域越小,生成的结构越接近native的晶体结构,这说明RFjoint学习到了全局环境对局部结构的约束。令人兴奋的是,RFjoint在NVIDIA RTX2080 GPU上只需要1-10秒,快得让任何个体都能够支付得起这个成本!
但作者并不满足现状,希望在RFjoint上进一步提升设计的能力,于是有了RFjoint2,因为在测试案例中发现RFjoint只能做一些小修补时的效果比较好。与RFjoint不同的是,RFjoint2的训练方式是mask掉2个anchor区域的序列和结构,然后让模型去预测出anchor区域中间缺失的序列或结构。这样做的好处是让模型预测局部结构和序列时更多地去考虑整体结构的影响,减少锚定结构的影响,,这样处理也避免设计时过拟合,也能产生更加多样的结构。
同样作者也对RFjoint2进行了测试,该模型可以克服RFjoint缺点,可以用于补全大量缺失结构的场景,并且补全的结构使用AF2进行预测可以达到了1 Å RMSD的精度。
之前RoseTTAFold在蛋白结构预测能力上一直被AF2压制,可以这样说,RFDesign问世后,David Baker在蛋白设计领域无疑上扳回一局,而且创新力也很足,这也有赖于其实验室在蛋白设计领域十多年沉淀下来的丰厚经验。
constrained hallucination:该方法只需要最小的motif区域的信息,通过RoseTTAFold网络的迭代推理和反向传播来更新序列,也在多个案例上实测了他的幻想能力,但缺点是GPU资源耗费巨大;
RFjoint2:使用全新的RFjoint2神经网络,直接对给定的初始输入结构进行补全操作,同时进行结构和序列生成,不依赖于反向传播的更新,虽然在一些案例上要求提供更多主链走向来帮助补全任务,但它的资源消耗极低,当有更多的input模板信息时,其表现均比hallucination的方法要好。
因此对于大多数的使用场景而言,如果motif已经提供了幻想蛋白功能所需的一切信息和结构时,笔者推荐直接使用RFjoint2,多快好省。但是当motif的信息有限时,constrained hallucination是不二的选择。
虽然作者已经完成了AF2来进行hallucination的方法,那是否直接用AF2来设计蛋白会有更好的结果?答案不能肯定,但至少一点明确,对于蛋白设计来说,对设计的序列进行folding验证已经是非常重要的一环,如果使用了AF2Design那就会出现没有正交的方法来验证你设计的序列,在实验上合成序列时你的信心度将大打折扣。另一方面如果没有检验器,AF2可能也会生成大量的对抗序列,反而降低了设计的成功率。其三,AF2在预测de novo蛋白时的效果比RoseTTAFold表现更好,因此用它来进行验证是在合适不过,难道你想用RoseTTAFold来验证AF2设计的序列吗,你又对这个验证的结果有多相信呢?
笔者在读完RFDesign后,脑子里也蹦出了一些新的玩法和应用场景,列举在此:
在hallucination时,我采用2个不同的结构来一同定义loss,那岂不是可以完成multi-state的蛋白设计,从而设计出有构象变化能力的蛋白元件?
在hallucination时,考虑对称性信息的引入,并定义合理的loss,那岂不是可以直接设计自组装蛋白,比如Cage?
得益于RFjoint2的高速度性能,是不是可以结合longxing的RIFdock来大批量地生成全新的binder,从而摆脱motif信息的依赖?
抗体的Framework区高度保守,如果将靶点受体和framework区引入,让RFjoint2来补全CDR-H3和L3的序列和结构,在通过一系列的Rosetta的Filter筛选,就可以完成抗体设计的任务了?
上述的都是些不负责任的猜想,设计有风险,投入需谨慎,笔者不做任何承诺和保证,欢迎有更多设计想法的同志来交流。
大家都知道AlphaFold2开源后,基本人手平均AF2,那RFDesign出来后,可预测的是人手平均RF。虽然国内的创新能力有限,但复现和应用的能力毋庸置疑。因此对于整个行业来讲,“借鉴”RFDesign对长期发展来说都是有积极影响的,至少可以让更多人参与到蛋白设计的队伍中来,毕竟目前的门槛还是太高。设计的人多了,应用成功的案例多了,市场的接受度自然而然就会提高,无疑是积极地正反馈循环。