社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

深度学习预测分子系统的平衡分布

DrugAI • 1 年前 • 247 次点击  

编译 | 曾全晨

审稿 | 王建民

今天为大家介绍的是来自微软研究团队的一篇关于分子构象的论文。深度学习的进步极大地改善了分子的结构预测。然而,对于真实世界的应用而言,许多重要的宏观观察并不是单一分子结构的函数,而是由结构的平衡分布确定的。传统的获取这些分布的方法,如分子动力学模拟,计算代价高昂且常常难以处理。在本文中,作者引入了一种新颖的深度学习框架,称为分布图变换器(DiG),旨在预测分子系统的平衡分布。通过展示DiG在几个分子任务上的性能,包括蛋白质构象采样、配体结构采样、催化剂吸附采样和基于性质的结构生成,DiG在统计理解分子系统的方法学方面具有重大进展,为分子科学开辟了新的研究机会。



图 1


深度学习方法已成为高效预测分子系统结构的最先进技术。各项进展展示了深度学习方法在建模分子结构和状态方面的潜力。然而,准确预测最可能的结构只揭示了理解处于平衡状态的分子系统所需信息的一小部分。实际上,分子是高度灵活的,平衡分布对于研究统计力学性质至关重要。图1a说明了传统结构预测和分子结构分布预测之间的差异。虽然腺苷酸激酶有两种已知的不同构象(开放态和闭合态),但预测的结构通常对应于高概率的亚稳态或低概率的中间态。我们需要一种方法,使我们能够对包含功能态和其相对概率的腺苷酸激酶结构的平衡分布进行采样。


与单个结构的预测相比,平衡分布的预测仍依赖于经典且计算成本高昂的模拟方法,而深度学习方法在这方面的发展仍处于初级阶段。最常见的方法是使用分子动力学模拟来采样平衡分布,但这种方法计算成本高昂。在这项工作中,作者开发了Distributional Graphormer(DiG),这是一种新的深度学习方法,旨在近似预测分子系统的平衡分布,并高效地采样多样化且符合化学规律的结构。DiG从模拟退火中汲取灵感,模拟退火通过逐步改进简单均匀分布来产生复杂分布。基于这个思想,DiG通过模拟扩散过程逐渐将简单分布转化为目标分布,以近似预测给定分子系统的平衡分布。扩散过程由一个基于Graphormer架构的深度学习模型实现,并且该模型是基于目标分子的描述符进行条件训练的。DiG可以使用来自MD模拟和实验的结构数据进行训练。对于那些数据不足的情况,开发开发了一种新颖的物理信息扩散预训练(PIDP)方法,通过对系统的能量函数进行监督,直接对DiG进行训练。


模型结构

深度神经网络已被证明可以从描述符准确预测许多分子系统的分子结构。在这里,DiG的目标不仅是预测最有可能的结构,还要预测在平衡分布下具有概率的多样化结构。为了应对这一挑战,作者受退火范例的启发,将这个问题的难度分解为一系列更简单的问题。基于这个思路,作者采用一个显式扩散过程(正向过程;图1b中的橙色箭头),通过一个时间段,逐渐将分子的目标分布作为正态分布。相应的逆向扩散过程将正态分布转化回目标分布。这就是DiG的生成过程(图1b中的蓝色箭头)。


DiG可以通过对多个分子系统进行构象数据采样进行训练。然而,收集足够的实验或模拟数据来描述不同系统的平衡分布是非常昂贵的。为了解决这个数据稀缺的问题,作者提出了一种新颖的预训练算法,称为物理信息扩散预训练(Physics-Informed Diffusion Pre-training,PIDP),它可以在一组初始的候选结构上有效地优化DiG,而这些候选结构不需要从平衡分布中采样得到。PIDP的关键思想是正向扩散过程中的评分函数遵循一个偏微分方程,即福克-普朗克方程,作者通过最小化据此设计的损失函数来对评分模型进行预训练。除了使用能量函数来获取分子系统的概率分布信息之外,DiG还可以使用从实验结构测定方法、分子动力学或其他模拟方法中获取的分子结构样本进行训练。它们仍然提供了关于分布覆盖的区域和分布的局部形状的信息,因此对于改进预训练的DiG是有帮助的。


实验部分

在生理条件下,大多数蛋白质分子表现出动态行为,而不是以其能量最有利的状态存在为刚性对象。对这些构象的采样对于全面了解蛋白质的性质以及它们与其他分子在细胞中的相互作用至关重要。最近的研究表明,AlphaFold 可以通过操作输入信息(如多序列比对)生成某些蛋白质的替代构象。然而,这种方法是基于改变多序列比对的深度,很难推广到所有蛋白质(特别是那些具有少量相似序列的蛋白质)。因此,拥有能够采样与构象空间中的一致的多样结构的模型是非常可取的。在这里,作者展示了DiG能够生成多样性和与功能相关的蛋白质结构,这是能够高效采样平衡分布的关键能力。

图 2


蛋白质构象的平衡分布在实验和计算上很难获得,因此与蛋白质结构预测相比,缺乏用于训练或基准测试的高质量数据。为了训练该模型,作者从公共数据库中收集了实验和模拟结构。为了缓解数据稀缺问题,除了蛋白质数据库中的结构,作者还生成了一个内部模拟数据集,并开发了PIDP训练方法。DiG的性能在两个层面进行了评估:(1)与广泛的(毫秒级时间尺度)原子级MD模拟得到的构象分布进行比较;(2)在具有多个已知构象的蛋白质上进行验证。如图2a所示,构象分布是从MD模拟中获取的,针对SARS-CoV-2病毒中的两个蛋白质(刺突蛋白的受体结合域(RBD)和主蛋白酶,也称为3CL蛋白酶)。毫秒级时间尺度的MD模拟广泛采样了构象空间,因此作者将得到的分布视为平衡分布的代理。以蛋白质序列作为DiG的描述符输入,为这两个蛋白质生成了结构。尽管MD模拟的数据未用于DiG的训练,但生成的结构在由集体变量构成的降维空间中类似于MD探索的构象分布(图2a)。作者分析了四个蛋白质,每个蛋白质有两种可区分的构象,对应不同的功能状态(图2b)。值得注意的是,DiG采样的构象在每个蛋白质的两个状态附近的构象空间中具有良好的覆盖。例如,腺苷酸激酶蛋白有两个构象(PDB ID为1ake和4ake),每个构象在其附近都有高质量的结构(与闭合状态1ake对齐的骨架RMSD < 1.0 ˚A,与开放状态4ake对齐的骨架RMSD < 3.0 ˚A)。类似地,对于药物转运蛋白LmrP,DiG生成了类似于两个状态的结构。

图 3


蛋白质构象采样的一个直接延伸是预测蛋白质-配体相互作用,例如在可药用口袋中的配体结合位置。作则会评估了DiG在409个蛋白质-配体系统中预测蛋白质口袋中的配体结合情况的性能。通过提供包围口袋的原子位置和一个配体描述符(这里使用SMILES字符串),DiG生成与口袋匹配的配体结构。在配体结构采样过程中,DiG模拟了口袋和配体的原子坐标分布。在测试中观察到了灵活的结合口袋,与输入的原子位置相比,原子位置的变化最大可达1.0Å的RMSD。对于配体结构,偏差来自两个方面:(1)生成结构与实验结构之间的构象差异;(2)由于配体的平移和旋转导致的结合姿态差异。在所有测试案例中,构象差异很小,平均RMSD值为1.74Å,表明生成的配体结构与解析的结晶结构中的结合配体非常相似(见图3a)。当考虑到由配体位置和方向引起的结合姿态偏差时,配体结构的对齐差异更大。然而,DiG仍然能够在生成的50个结构中预测至少一个正确的结构与每个配体匹配。在回顾性测量中,与近乎所有409个测试系统的实验数据相比,每个配体的50个生成结构中最佳匹配的结构的RMSD值均在2.0Å以内(见图3a中的RMSD分布)。生成的配体结构的准确性与结合口袋的特性有关。例如,与目标蛋白质Tyk2结合的配体与晶体结构的平均偏差为0.91Å(RMSD)(见图3b顶部)。在另一个P38的目标蛋白质的例子中,由于该目标的浅口袋,配体展示了更多多样化的结合姿态。在这种情况下,最稳定的结合姿态可能相对于其他有利的姿态来说不那么主导(见图3b底部)。

结论

预测分子状态的平衡分布是分子科学领域面临的巨大挑战,它对解析结构-功能关系、计算宏观性质以及设计新型分子和材料具有深远的影响。现有的方法需要大量的测量数据或模拟样本来收集足够的数据来描述平衡分布。作者引入了新模型(Distributional Graphormer,简称DiG),这是一个深度生成框架,能够预测概率分布,从而实现对分子系统中多样构象的高效采样和状态密度的估计。DiG受退火过程的启发,采用一系列深度神经网络逐步将状态分布从简单的数学形式转化为目标分布,通过适当的训练数据可以近似分子预测平衡分布。

参考资料

Zheng, S., He, J., Liu, C., Shi, Y., Lu, Z., Feng, W., ... & Liu, T. Y. (2023). Towards Predicting Equilibrium Distributions for Molecular Systems with Deep Learning. arXiv preprint arXiv:2306.05445.

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/160128
 
247 次点击