基于生成扩散模型的分子对接程序-DiffDock安装及使用

欢迎浏览我的CSND博客! Blockbuater_drug …点击进入


前言

分子对接是采用计算模拟的方式,预测受体与配体之间的结合模式,即Pose,以便于后续的Pose评估(打分)。传统对接基于构象搜索,深度学习将分子对接抽象为回归问题,但都没有很好的解决对接准确性问题。
DiffDock来自MIT CSAIL的Regina教授和Tommi教授课题组的工作,他们将分子对接视为一种生成任务,并采用了时下在图像生成等领域相当热门的生成扩散模型(DGM)。
已有的测试显示:DiffDock在已知的对接任务中取得了38%的成功率,对比最先进的深度学习模型(20%)和基于搜索的方法(23%)成功率有较大提升,同时速度也有3-12倍提升。对于被折叠的复合物结构,此前各种方法最大仅达到10.4%的对接成功率,而DiffDock仍达到了21.7%的成功率水平。

本文介绍DiffDock在Linux Ubuntu系统的安装及使用。


一、DiffDock是什么?

在这里插入图片描述在这里插入图片描述

论文来源:DiffDock: Diffusion Steps, Twists, and Turns for Molecular Docking,arxiv.org/abs/2210.01776
代码来源:https://github.com/gcorso/DiffDock

DiffDock的工作流程:将单独的配体和蛋白质结构作为输入,通过平移、旋转和扭转自由度上的反向扩散,对随机采样的初始姿态进行降噪,正确的通过置信度模型对采样的Pose进行排序,以产生最终预测和置信度得分。

DiffDock的主要特点:

  1. 将分子对接任务定义为一个生成问题,并强调了以前深度学习方法的问题。
  2. 在配体姿态上建立了一个新的扩散过程,该过程对应于分子对接所涉及的自由度。
  3. 在PDBBind对接基准上实现了最优的Top1 准确率(RMSD<2A)达到38%,远超此前的最佳搜索算法(23%)和深度学习方法(~20%)。
  4. 使用ESMFold生成近似的蛋白质apo结构,Top1 准确率(RMSD<2A)达到28%,几乎是最准确基线的准确性的3倍。

与传统对接方法及其他机器学习分子对接方法相比,在PDB共晶结构redock及无监督语言模型预测apo蛋白结构上实现准确度的SOTA:在这里插入图片描述在这里插入图片描述Diffdock在PDB共晶结构与ESMFold预测结构上对接,与gnina的比较:
(RMSD<1.5A时,正确率优于gnina的表现;在ESMFold预测结构上整体优势更加明显。)
在这里插入图片描述
在实际场景中(未见受体),DiffDock优势明显,计算效率更高:
在这里插入图片描述对于apo受体的柔性侧链对接,DiffDock整体最优:
在这里插入图片描述

二、DiffDock安装步骤

1. 下载

不建议使用environment.yml直接创建diffdock环境,后续的ESM安装会导致torch_geometric不可用,出现Segmentation fault (core dumped)。可以参考environment.yml安装包的数量和名称。

git clone https://kkgithub.com/gcorso/DiffDock.git

2.创建conda环境并安装

由conda创建虚拟环境并安装必要的包,最后配置ESM及pyg相关包。

STEP 1. 创建conda环境并配置

conda create -n diffdock_env python=3.9
conda activate diffdock_env
conda install pytorch==1.11.0 pytorch-cuda=11.7 -c pytorch -c nvidia
conda install pyarrow joblib

STEP 2. 配置ESM和OpenFold

python -m pip install PyYAML scipy "networkx[default]" biopython rdkit-pypi e3nn spyrmsd pandas biopandas
pip install "fair-esm[esmfold]"
pip install 'dllogger @ git+https://github.com/NVIDIA/dllogger.git'
pip install 'openfold @ git+https://github.com/aqlaboratory/openfold.git'

STEP 3. 检查cuda和pytorch geometric安装

输入以下,查看torch安装版本版本:

python -c "import torch; print(torch.__version__)"

输出:

1.13.1+cu117

输入以下,查看cuda安装版本版本:

python -c "import torch; print(torch.version.cuda)"

输出:

11.7

通过pyg 官网安装pytorch geometric及附件,torch-1.13.1+cu117.html部分需要与上面输出一致:

pip install  pyg_lib \torch_scatter==2.0.9 \torch_sparse==0.6.15 \torch_cluster==1.6.0 \torch_spline_conv==1.2.2 \torch_geometric==2.0.4 -f https://data.pyg.org/whl/torch-1.13.1+cu117.html

STEP 4. 检查pytorch geometric library

保证torch_geometric能正常工作,检查安装

python -c "from torch_geometric.loader import DataLoader"

如果没有返回信息,即成功。

三、 DiffDock使用

1. 单一配体+单一受体的复合物对接

简单分子对接,DiffDock支持多种输入方式,用 --protein_path定义受体pdb结构 或者 --protein_sequence定义字符串作为受体序列,用 --ligand 定义配体sdf文件或者smile名称。
运行实例如下:

cd Diffdock
python -m inference \--protein_path data/1a0q/1a0q_protein_processed.pdb \--ligand "COc(cc1)ccc1C#N" \--out_dir results/user_predictions_small_pdb-smi \--inference_steps 20 \--samples_per_complex 40 \--batch_size 10 \--actual_steps 18 \--no_final_step_noise

结果保存在–out_dir指定的位置。

python -m inference \--protein_path data/1a0q/1a0q_protein_processed.pdb \--ligand data/1a0q/1a0q_ligand.sdf \--out_dir results/user_predictions_small_pdb-sdf \--inference_steps 20 \--samples_per_complex 40 \--batch_size 10 \--actual_steps 18 \--no_final_step_noise

结果保存在–out_dir指定的位置。

2. 多个配体+多个受体对接

需要由--protein_ligand_csv定义一个csv文件,按格式注明配体,受体的名称或者对应文件路径,示例文件位于data/protein_ligand_example_csv.csv,如下:
在这里插入图片描述

complex_name:用于保存预测的名称,可以留空
protein_path:.pdb文件的路径,如果为空则使用sequence
ligand_description:SMILE或文件路径
protein_sequence:如果protein_path为空,则使用ESMFold

运行命令如下:

python -m inference \--protein_ligand_csv data/protein_ligand_example_csv.csv \--out_dir results/user_predictions_small \--inference_steps 20 \--samples_per_complex 40 \--batch_size 10 \--actual_steps 18 \--no_final_step_noise

3. 查看对接Pose

pymol results/user_predictions_small/complex_0/rank1.sdf \data/1a0q/1a0q_protein_processed.pdb

在这里插入图片描述

4. 重新训练模型

对于受体结构已知的分子对接,可以直接使用Diffdock已训练好的模型参数。
如果有需要,可以使用Diffdock提供的工具重新训练模型,需要安装esm获得ESM2 embeddings,然后获得model weights,再训练score model 和confidence model,用于结构推理。
这部分可参阅README文件,此处不再描述。


总结

DiffDock可借助ESMFold实现靶点3D结构未知,从序列开始的分子对接,对接准确度优于已知方法。
本文介绍DiffDock在Linux Ubuntu系统的安装及使用,为分子对接研究提供一种区别于传统对接软件的新方法。

参考资料

  1. https://github.com/gcorso/DiffDock
  2. https://blog.csdn.net/weixin_42486623/article/details/130617496
  3. https://zhuanlan.zhihu.com/p/665191390

欢迎浏览我的CSND博客! Blockbuater_drug …点击进入

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/697931.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【RHCE】SHELL for循环练习

目录 1.编写脚本for1.sh,使用for循环创建20账户&#xff0c;账户名前缀由用户从键盘输入&#xff0c;账户初始密码由用户输入&#xff0c;例如:test1、test2、test3、……、test10 2.编写脚本for2.sh,使用for循环,通过ping命令测试网段的主机连通性&#xff0c;IP前3段由用户…

江科大stm32学习笔记——【3-2】GPIO输出:LED闪烁LED流水灯蜂鸣器

&#xff08;一&#xff09; 硬件连接 1.LED闪烁 LED灯正极连接面包板电源正极&#xff0c;LED负极连接单片机A0口 (也可以LED负极连面包板负极&#xff0c;LED正极连接单片机A0口) 跳线连接单片机3.3和面包板正极&#xff0c;连接单片机GND和面包板负极 2.LED流水灯 3.蜂鸣…

在UE5中制作UI环形进度条

在日常开发中&#xff0c;经常会有环形进度条UI的效果&#xff0c;例如技能CD时间、加载动画等&#xff0c;本文将通过材质球节点实现该效果&#xff0c;相较于准备美术素材&#xff0c;这样的做法更为方便&#xff0c;效果如下&#xff1a; 1.制作环状效果材质函数 在内容面…

【云动世纪:Apache Doris 技术之光】

本文节选自《基础软件之路&#xff1a;企业级实践及开源之路》一书&#xff0c;该书集结了中国几乎所有主流基础软件企业的实践案例&#xff0c;由 28 位知名专家共同编写&#xff0c;系统剖析了基础软件发展趋势、四大基础软件&#xff08;数据库、操作系统、编程语言与中间件…

maven插件wagon-ssh、os-maven-plugin、buildnumber-maven-plugin使用详解

文章目录 前言一、os-maven-plugin的使用二、buildnumber-maven-plugin使用1、时间戳策略2、数字策略 三、wagon-ssh使用1、上传文件/文件夹2、执行Linux命令或者shell脚本 总结 前言 有时我们在构建项目时&#xff0c;希望能自动生成版本号或者生成不同操作系统标识的版本后缀…

RS®FSVA3000 信号与频谱分析仪

R&SFSVA3000 信号与频谱分析仪 非常适用于实验室以及生产过程中的高要求信号分析任务。R&SFSVA3000 信号与频谱分析仪的分析带宽高达 1 GHz&#xff0c;并具有低至 –120 dBc/Hz 的相位噪声和高动态范围&#xff0c;适用于要求严格的 5G NR 测量应用。分析仪测量速度快…

代码随想录算法训练营第二天

● 今日学习的文章链接和视频链接 ● 自己看到题目的第一想法 977.有序数组的平方 方法一&#xff1a; 思路&#xff1a; 先将数据所有数据平方将数组排序 代码&#xff1a; class Solution { public:vector<int> sortedSquares(vector<int>& nums) {vect…

vue后台管理添加水印简单方式watermark-package

详情参考:https://www.npmjs.com/package/watermark-package 示例方法 <el-button type"primary" click"AddWatermark">添加水印</el-button><el-button type"primary" click"RemoveWatermark">清除水印</el-but…

Linux调试器——gdb的基础使用

目录 1.背景 2.指令的使用 2.1gdb的使用和退出 2.2显示源代码 2.3运行程序 2.4调试 1.打断点 2.查断点 3.去断点 4.运行 5.关闭断点 6.启用断点 7.逐过程 8.进入函数 9.显示变量的值 1.背景 众所周知&#xff0c;我们的程序发布有两种&#xff0c;分别是debug模式和release模式…

18.贪心算法

排序贪心 区间贪心 删数贪心 统计二进制下有多少1 int Getbit_1(int n){int cnt0;while(n){nn&(n-1);cnt;}return cnt; }暴力加一维前缀和优化 #include <iostream> #include <climits> using namespace std; #define int long long const int N2e510; in…

uni-app 经验分享,从入门到离职(五)——由浅入深 uni-app 数据缓存

文章目录 &#x1f4cb;前言⏬关于专栏 &#x1f3af;什么是数据存储&#x1f9e9;数据存储——存储&#x1f4cc; uni.setStorage(OBJECT)&#x1f4cc; uni.setStorageSync(KEY,DATA) &#x1f9e9;数据存储——获取&#x1f4cc; uni.getStorage(OBJECT)&#x1f4cc; uni.g…

2024年【起重机司机(限桥式起重机)】找解析及起重机司机(限桥式起重机)考试总结

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年【起重机司机(限桥式起重机)】找解析及起重机司机(限桥式起重机)考试总结&#xff0c;包含起重机司机(限桥式起重机)找解析答案和解析及起重机司机(限桥式起重机)考试总结练习。安全生产模拟考试一点通结合国家…

[AI]部署安装有道QanyThing

前提条件&#xff1a; 1、win10系统更新到最新的版本&#xff0c;系统版本最好为专业版本 winver 查看系统版本&#xff0c;内部版本要大于19045 2、CPU开启虚拟化 3、开启虚拟化功能&#xff0c;1、2、3每步完成后均需要重启电脑&#xff1b; 注&#xff1a;windows 虚拟…

CSS轻松学:简单易懂的CSS基础指南

css基础 更多web开发知识欢迎访问我的专栏>>> 01-CSS初体验 层叠样式表 (Cascading Style Sheets&#xff0c;缩写为 CSS&#xff09;&#xff0c;是一种 样式表 语言&#xff0c;用来描述 HTML 文档的呈现&#xff08;美化内容&#xff09;。 书写位置&#xff1a;…

第九届大数据与计算国际会议 (ICBDC 2024) 即将召开!

2024年第九届大数据与计算国际会议&#xff08;ICBDC 2024&#xff09;将于2024年5月24至26日在泰国曼谷举行。本次会议由朱拉隆功大学工程学院工业工程系主办。ICBDC 2024的宗旨是展示大数据和计算主题相关科学家的最新研究和成果&#xff0c;为来自不同地区的专家代表们提供一…

嵌入式学习笔记总结Day23----minshell项目总结

今天进行了linux系统高级编程io阶段学习的结尾&#xff0c;完成了一个minshell的小项目。 一、项目介绍 利用Linux中IO接口实现MiniShell&#xff0c;实现常用的shell指令的实现。 项目想要实现需要思考的地方有&#xff1a; 1.如何打印终端命令 2.如何接受终端命令 3.实现对…

Sora - 探索AI视频模型的无限可能-官方报告解读与思考

一、引言 最近SORA火爆刷屏&#xff0c;我也忍不住找来官方报告分析了一下&#xff0c;本文将深入探讨OpenAI最新发布的Sora模型。Sora模型不仅仅是一个视频生成器&#xff0c;它代表了一种全新的数据驱动物理引擎&#xff0c;能够在虚拟世界中模拟现实世界的复杂现象。本文将重…

[力扣 Hot100]Day33 排序链表

题目描述 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 出处 思路 归并排序即可。 代码 class Solution { public:ListNode* merge(ListNode *h1,ListNode *h2) {ListNode *head nullptr;if(h1->val<h2->val){head h1;h1h1-…

2024.2.22 C++QT 作业

思维导图 练习题 1>完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示”登录成功“&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后&#xff0c;关闭登录界面&#xff0c;跳转到其他界面。如果账…

Vue响应式状态ref()与reactive()

1. ref()声明响应式状态 <template><!--在DOM元素调用变量时,不需要指定输出变量的value,因为Vue会帮你输出.value但是注意,这个帮助只会帮助顶级的ref属性才会被解包--><div>{{ count }}</div><div>{{ object }}</div><div>{{ arr…