当前位置: 首页 > news >正文

【文献阅读】Pocket2Mol : 基于3D蛋白质口袋的高效分子采样 + CrossDocked数据集说明

Pocket2Mol: Efficient Molecular Sampling Based on 3D Protein Pockets

code: GitHub - pengxingang/Pocket2Mol: Pocket2Mol: Efficient Molecular Sampling Based on 3D Protein Pockets


所用数据集

与“A 3D Generative Model for Structure-Based Drug Design”文章所用的数据集一致:

Data We use the CrossDocked dataset [7] following [20]. The dataset originally contains 22.5 million docked protein-ligand pairs at different levels of quality. We filter out data points whose binding pose RMSD is greater than 1Å, leading to a refined subset consisting of 184,057 data points. We use mmseqs2 [31] to cluster data at 30% sequence identity, and randomly draw 100,000 protein-ligand pairs for training and 100 proteins from remaining clusters for testing.

RMSD是用来比较实验或计算得到的蛋白质-配体复合物的结构与某个参考结构之间的差异,这里过滤掉了相似度(RMSD)大于 1Å的复合物。

“crossdocked_pocket10/index.pkl”中包含3种信息,分别是: pocket_fn(口袋名称), ligand_fn(配体名称), _, rmsd_str(受配体RMSD(比较蛋白质结构或化合物结构之间的相似程度))

评价指标

这里主要介绍容易混淆的两个metrics:

Vina Score(kcal/mol, ):We use Vina [33, 1] to compute the binding affinity (Vina Score). Before feeding the molecules to Vina, we employ the universal force fields (UFF) [24] to refine the  generated structures following [20].

High Affinity(%, ):有更高亲和力的百分比,测量结合位点生成的结合亲和力高于或等于参考ligand的分子的百分比


 作者提出了一种新的可以满足口袋施加的多个几何约束的采样方法:Pocket2Mol,这是一个由两个模块组成的 E(3)-等变生成网络,它不仅可以捕获结合口袋原子之间的空间和键合关系,还可以在不依赖 马尔科夫链蒙特卡洛方法(MCMC)的情况下从易于处理的分布中以口袋表示为条件对新候选药物进行采样。实验结果表明,从 Pocket2Mol 中取样的分子具有明显更好的结合亲和力和其他药物特性,例如药物相似性和合成可及性。

1.介绍

深度学习在药物设计方面取得了巨大成功。生成模型主要思想是在紧凑的低维空间中高效地表示所有收集的化学结构,并通过扰乱隐藏值来采样新的候选药物。这些模型的输出可以是一维化学描述符、二维图(graph)和3D结构。

然而,在分子水平上,小分子仅通过与特定的蛋白质口袋结合来抑制或激活特定的生物学功能。因此,基于口袋的药物设计受到越来越多的关注。更具体地说,给定目标蛋白的 3D 结合口袋,这些模型知道 3D 口袋的几何信息,并相应地生成与口袋结合的分子。早期的方法通过:

  1. 集成评估功能(例如采样分子和口袋之间的对接分数)来修改无口袋模型,以指导候选搜索。
  2. 另一种方法将 3D 口袋结构转换为分子 SMILES 字符串或 2D 分子图,但是没有明确建模小分子结构和 3D 口袋之间的相互作用。

条件生成模型可以模拟 3D 口袋结构内的 3D 原子密度分布。然后这个问题的挑战点从学习分布转移到结构采样算法的效率上。此外,以前的模型过分强调原子 3D 位置的重要性,而忽略了化学键的产生,这导致在实践中原子连接不切实际。作者从以下方向改进了基于口袋的药物设计:

  1. 第一,开发一种新的深度几何神经网络来准确地模拟口袋的 3D 结构;
  2. 第二, 设计一种新的采样策略,以实现更有效的条件 3D 坐标采样;
  3. 第三,将采样一对原子之间的化学键的能力分配给Pocket2Mol模型。

Pocket2Mol模型利用基于向量的神经元几何向量感知器学习蛋白质口袋施加的化学和几何约束,通过共享原子级嵌入联合预测前沿原子、原子位置、原子类型和化学键,并以自回归方式对分子进行采样。由于基于向量的神经元,该模型可以直接生成相对于焦点原子的相对原子坐标的易处理分布,以避免使用传统的 MCMC 算法。实验结果表明,Pocket2Mol 采样的候选药物不仅表现出更高的结合亲和力和药物相似性,而且比最先进的模型包含更真实的子结构。此外,Pocket2Mol 比以前基于 MCMC 的自回归采样算法快得多。

3.方法

Pocket2Mol 的中心思想是根据已经存在的原子来学习口袋内每个位置的原子或键类型的概率分布。为了学习这种特定于上下文的分布,作者采用自回归策略从训练药物的其余部分预测随机被mask掉的部分。

3.1、生成步骤

形式上,蛋白质口袋表示为一组带有坐标的原子,

其中a_i^{pro}r_i^{pro} 分别是第 i 个重原子、及其坐标,N 是蛋白质口袋中的原子数。以连续方式对分子进行采样。将已经生成的具有n个原子的分子片段表示为带有坐标的图:

a_i^{mol}r_i^{mol}b_i^{mol} 分别表示第i个重原子,它的坐标、它与其他原子的价键

生成模型记为φ,生成过程定义如下:

P^{pro} 蛋白质口袋、G_n^{mol} 分子片段

对于每个原子,生成过程由四个主要步骤组成,如图一所示:

  1. 首先,该模型的前沿预测器 f_{fro} 将预测当前分子片段的前沿原子(Frontiers)。前沿被定义为可以共价连接到新原子的原子。如果所有的原子都不是前沿,则表明当前分子是完整的,生成过程终止。
  2. 第二步,该模型从前沿原子集中采样一个原子作为焦点(Focal)原子。
  3. 第三步,基于焦点(Focal)原子,模型的位置预测器 f_{pos} 预测新原子的相对位置。
  4. 最后,模型的原子元素预测器 f_{ele} 和键型预测器 f_{bond} 将预测元素类型和与键类型的概率,然后采样新原子的元素类型和价键。
  5. 通过这种方式,新原子被成功地添加到当前的分子片段中,生成过程继续下去,直到找不到前沿原子(Frontiers)。

这个生成过程对于第一个前沿原子是不同的,对于第一个原子,蛋白质口袋中的所有原子都被用来预测前沿(Frontiers),这里的Frontiers被定义为新原子可以在4˚A内产生的原子。【可以从第一个Frontiers的生成和采样做文章

3.2、模型架构

基于上述生成过程,模型需要由四个模块组成:编码器(encoder)、前沿原子预测器(frontier predictor)、原子位置预测器( position predictor )和元素和键预测器( element and-bond predictor)。

3.2.1、E(3)等变神经网络【主体架构,可以更好的捕获3D口袋和分子fragment的信息】

研究表明,用标量和向量特征表示三维图中的顶点和边(2021)可以帮助提高神经网络的表达能力。在我们的网络中,蛋白质口袋和分子片段的所有顶点和边都与标量和矢量特征相关联,以更好地捕获三维几何信息。

标量和向量分别用点和箭头表示

我们采用几何矢量感知器(geometric vector perceptrons GVP)(Jing et al.,2021)和基于矢量的神经网络(vector-based neural network)(Deng et al.,2021)来实现E(3)-等变。

  1. 几何向量感知器(GVP)扩展了标准的密集层(standard dense layers),可以在标量特征和向量特征之间传播信息(Jing et al., 2021)。
  2. 向量神经元网络将一组普通的神经操作(例如线性层、激活函数)扩展到向量特征空间(Deng et al., 2021)。

我们对原GVP进行修改,在GVP的输出向量上加入一个向量非线性激活(vector nonlinear activation),记为Gper:

可以是任何一对标量向量特征

在我们的模型中,我们选择LeakyReLU非线性函数作为GVP的标量和矢量输出。此外,我们通过去掉GVL的标量和矢量输出的非线性激活,定义了一个几何向量线性( geometric vector linear  GVL)块,记为Glin。改进的GVP块Gper和GVL块Glin是我们模型的主要构建块,这使得模型是E(3)-等变的。此外,包含矢量特征对于我们的模型直接准确地预测基于蛋白质口袋提供的几何环境的原子位置至关重要(细节将在第3.2.3节中描述)。

3.2.2 Encoder

我们将蛋白质口袋和分子片段表示为 k 近邻图(KNN),其中顶点为原子,每个原子与其 k 近邻相连。
蛋白质原子的输入标量特征包括元素类型、所属氨基酸以及是骨架原子还是侧链原子。
分子原子的输入标量特征包括元素类型、化合价和不同化学键的数量。
此外,所有原子还有一个标量特征,表明它们属于蛋白质还是分子片段。标量边缘特征包括用高斯 RBF 核(Sch¨utt et al. 输入矢量顶点特征包括原子坐标,而矢量边缘特征则是三维空间中边缘的单位方向矢量。

3.2.2 预测

前沿原子预测器(frontier predictor)

原子位置预测器( position predictor )

元素和键预测器( element and-bond predictor)。

4、训练

在训练阶段,作者随机mask分子的原子,并训练模型恢复被mask的原子。具体地说,对于每个口袋配体对,从均匀分布U[0,1]中抽样mask比率,并mask相应数量的分子原子。其余与被mask原子有价键的分子原子被定义为前沿(frontiers)。然后,位置预测器和元素键预测器试图通过预测掩蔽原子朝向相应前沿的位置、元素类型和与剩余分子原子的键,来恢复与前沿原子具有价键的mask原子。如果所有分子原子都被mask,则frontiers定义为在4˚A范围内具有mask原子的蛋白质原子,frontiers附近的被屏蔽原子将被恢复。对于元素类型预测,作者在查询位置增加了一个不表示任何内容的元素类型。

前沿预测的损失是预测前沿的二元交叉熵损失(binary cross entropy loss)。位置预测器的损失是掩蔽原子位置的负对数可能性(negative log likelihood)。对于元素类型和键型预测,作者使用交叉熵损失(cross entropy losses)进行分类。总损失函数为:

参考:

Pocket2Mol : 基于3D蛋白质口袋的高效分子采样 - 知乎

相关文章:

【文献阅读】Pocket2Mol : 基于3D蛋白质口袋的高效分子采样 + CrossDocked数据集说明

Pocket2Mol: Efficient Molecular Sampling Based on 3D Protein Pockets code: GitHub - pengxingang/Pocket2Mol: Pocket2Mol: Efficient Molecular Sampling Based on 3D Protein Pockets 所用数据集 与“A 3D Generative Model for Structure-Based Drug Desi…...

TrustRadius 评论:为什么 Splashtop 优于 LogMeIn

在当今日益数字化的格局中,远程访问和远程支持工具不仅方便而且至关重要。无论对于居家办公人员,还是对于提供远程支持的 IT 专家,能够安全高效地访问远程系统已成为以技术为导向的日常生活的主要内容。 Splashtop 和 LogMeIn 是远程领域的两…...

【动态规划】动态规划经典例题 力扣牛客

文章目录 跳台阶 BM63 简单跳台阶扩展 JZ71 简单打家结舍 LC198 中等打家劫舍2 LC213中等最长连续递增序列 LC674 简单乘积最大子数组LC152 中等最长递增子序列LC300 中等最长重复子数组LC718最长公共子串NC BM66最长公共子序列LC1143 中等完全平方数LC279零钱兑换 LC322 中等单…...

统计模型----决策树

决策树 (1)决策树是一种基本分类与回归方法。它的关键在于如何构建这样一棵树。决策树的建立过程中,使用基尼系数来评估节点的纯度和划分的效果。基尼系数是用来度量一个数据集的不确定性的指标,其数值越小表示数据集的纯度越高。…...

C# List 复制之深浅拷贝

C# List 复制 之深浅拷贝 声明类 public class TestStu{public int Number{get;set; }public string Name{get;set; }}public static async Task<int> Main(string[] args){var stu1 new TestStu(){Number 1,Name "1"};var stu2 new TestStu(){Numbe…...

论<script> 标签可以直接写在 HTML 文件中的哪些位置?(可以将 <script> 标签直接插入到 HTML 文件的任何位置)

可以将 <script> 标签直接插入到 HTML 文件的任何位置&#xff0c;以在相应位置执行 JavaScript 代码。 以下是几个示例&#xff1a; 1.<head> 元素内部&#xff1a;在 <head> 元素内部放置 <script> 标签时&#xff0c;脚本将在页面加载过程中被下载和…...

【MySQL进阶】--- 存储引擎的介绍

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】&#x1f388; 本专栏旨在分享学习MySQL的一点学习心得&#xff0c;欢迎大家在评论区讨论&#x1f48c; 目录 一、什么…...

self-XSS漏洞SRC挖掘

本文由掌控安全学院 - 一朵花花酱 投稿 Markdown是一种轻量级标记语言&#xff0c;创始人为约翰格鲁伯&#xff08;John Gruber&#xff09;。它允许人们使用易读易写的纯文本格式编写文档&#xff0c;然后转换成有效的 XHTML&#xff08;或者HTML&#xff09;文档。这种语言吸…...

1859. 将句子排序

目录 一、题目 二、代码 一、题目 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 二、代码 定义了一个vector<vector<string>> v(MAX);采用const string& word : v[k] word 就会依次取得 v[k] 中的每个元素&#xff08;v[k][0],…...

普通学校,普通背景,普通公司,不普通总结。

作者&#xff1a;阿秀 InterviewGuide大厂面试真题网站&#xff1a;https://top.interviewguide.cn 这是阿秀的第「313」篇原创 小伙伴们大家好&#xff0c;我是阿秀。 可能很多人点开牛客、知乎、B站&#xff0c;一看帖子的标题都是"某985xxxx"、"不入流211xxx…...

Flink之Watermark生成策略

在Flink1.12以后,watermark默认是按固定频率周期性的产生. 在Flink1.12版本以前是有两种生成策略的: AssignerWithPeriodicWatermarks周期性生成watermarkAssignerWithPunctuatedWatermarks[已过时] 按照指定标记性事件生成watermark 新版本API内置的watermark策略 单调递增的…...

提升API文档编写效率,Dash for Mac是你的不二之选

在编写和开发API文档的过程中&#xff0c;你是否经常遇到查找困难、管理混乱、效率低下等问题&#xff1f;这些都是让人头疼的问题&#xff0c;但现在有了Dash for Mac&#xff0c;一切都将变得简单而高效。 Dash for Mac是一款专为API文档编写和管理设计的工具&#xff0c;它…...

无人注意,新安装的 Ubuntu 23.04 不支持安装 32 位应用

导读新安装的 Ubuntu 23.04 不支持安装 32 位应用。 无人注意&#xff0c;新安装的 Ubuntu 23.04 不支持安装 32 位应用 有用户报告&#xff0c;在新安装的 Ubuntu 23.04 上从 Ubuntu 仓库安装的 Steam 客户端是不工作的。在 Ubuntu 23.04 中使用了基于 Flutter 的新安装程序…...

全面横扫:dlib Python API在Linux和Windows的配置方案

前言 在计算机视觉和人工智能领域&#xff0c;dlib是一个备受推崇的工具库。它为开发者提供了强大的图像处理、机器学习和深度学习功能。在计算机视觉项目中&#xff0c;配置dlib Python API是一个重要的初始步骤。本文将引导读者详细了解在Linux和Windows系统上安装和配置dli…...

30种编程语言写国庆节快乐,收藏后改改留着拜年用

文章目录 核心代码版多行代码单行代码 核心代码版 Python&#xff1a;print(“国庆节快乐&#xff01;&#xff01;&#xff01;”)C&#xff1a;printf(“国庆节快乐&#xff01;&#xff01;&#xff01;”);C&#xff1a;cout<<“国庆节快乐&#xff01;&#xff01;…...

SpringBoot2.7.9 配置文件加载方式

ConfigDataLocationResolver接口方法说明 isResolvable: 判断是否是需要转换的资源 resolve: 将单个ConfigDataLocation转换为ConfigDataResource集合&#xff0c;在激活环境配置之前加载&#xff0c;也就是profile文件加载之前加载 resolveProfileSpecific: 将单个ConfigDataL…...

详解C语言—文件操作

目录 1. 为什么使用文件 2. 什么是文件 3. 文件的使用 文件指针 文件的打开和关闭 三个标准的输入/输出流&#xff1a; 4. 文件的顺序读写 对字符操作&#xff1a; fputc&#xff1a; fgetc&#xff1a; 练习复制整个文件&#xff1a; 对字符串操作&#xff1a;…...

IntelliJ IDEA 常用快捷键一览表

目录 1-IDEA的日常快捷键 第1组&#xff1a;通用型 第2组&#xff1a;提高编写速度&#xff08;上&#xff09; 第3组&#xff1a;提高编写速度&#xff08;下&#xff09; 第4组&#xff1a;类结构、查找和查看源码 第5组&#xff1a;查找、替换与关闭 第6组&#xff1a…...

cola 架构简单记录

cola 是来自张建飞&#xff08;Frank&#xff09;的偏实现的技术架构&#xff0c;里面的业务身份和扩展点也被MEAF引用&#xff0c;cola本身由java 实现、但其实可以是一种企业通用的技术架构。 业务身份来源 https://blog.csdn.net/significantfrank/article/details/8578556…...

FFmpeg常用结构体分析

目录 1.AVFormatConext 2.AVInputFormat 3.AVStream 4.AVCodecContext 5.AVPacket 6.AVCodec 7.AVFrame 8.AVIOContext 9.URLProtocol 10.URLContext 1.AVFormatConext AVFormatConext是一个贯穿全局地数据结构&#xff0c;AVFormatConext结构包含很多信息&#xff0c…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...