基于生成扩散模型的分子对接程序-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 …点击进入

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux:Jenkins用户权限和管理

1.下载插件 由于Jenkins的默认权限管理并不是很精细所以我们安装一个插件进行权限的一个管理 插件名称为&#xff1a;Role-based Authorization Strategy 安装完插件我们再去配置一下 进入全局安全配置 选择这个Role-Based Strategy策略然后保存 2.创建角色 我们这里主要使…

ArcgisForJS如何在线编辑ArcGIS Server发布的几何要素?

文章目录 0.引言1.ArcGIS创建几何要素2.ArcGIS Server发布几何要素3.ArcgisForJS在线编辑ArcGIS Server发布的几何要素 0.引言 ArcGIS For JS 是一种用于创建和编辑地理信息的 JavaScript 库&#xff0c;它允许用户在线编辑 ArcGIS Server 发布的几何要素。本文从ArcGIS创建几…

小程序--应用生命周期

小程序的应用周期处理逻辑都写在app.js中。 一、onLaunch 小程序启动时&#xff08;初始化完成&#xff09;执行&#xff0c;只执行一次。 常用于小程序更新&#xff0c;获取启动参数&#xff0c;获取场景值。 二、onShow 小程序启动&#xff0c;或从后台切换至前台时执行。 …

代码随想录算法训练营day20||二叉树part07、● 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先

530.二叉搜索树的最小绝对差 【需要领悟一下二叉树遍历上双指针操作&#xff0c;优先掌握递归】 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差的绝对值。 思路 题目中要求在二叉…

第四十天| 343. 整数拆分、96.不同的二叉搜索树

Leetcode 343. 整数拆分 题目链接&#xff1a;343 整数拆分 题干&#xff1a;给定一个正整数 n &#xff0c;将其拆分为 k 个 正整数 的和&#xff08; k > 2 &#xff09;&#xff0c;并使这些整数的乘积最大化。返回 你可以获得的最大乘积 。 思考&#xff1a;动态规划。…

探索Promise异步模式抽象的变体——Promise.race篇

如果阅读有疑问的话&#xff0c;欢迎评论或私信&#xff01;&#xff01; 本人会很热心的阐述自己的想法&#xff01;谢谢&#xff01;&#xff01;&#xff01; 文章目录 前言初识Promise.race探索Promise.raceAPI实例 前言 在本栏前一篇Promise.all中&#xff0c;我们可以实…

美格智能联合罗德与施瓦茨完成5G RedCap模组SRM813Q验证,推动5G轻量化全面商用

全球5G发展进入下半场&#xff0c;5G RedCap以其低成本、低功耗的特性成为行业焦点。近日&#xff0c;中国移动携手合作伙伴率先完成全球最大规模、最全场景、最全产业的RedCap现网规模试验&#xff0c;推动首批芯片、终端具备商用条件&#xff0c;RedCap端到端产业已全面达到商…

【Vuforia+Unity】AR02-长方体物体识别(Multi Targets)

1.创建模型 选择多维长方体图&#xff0c;这个长方体是生活中的真实物体的拍摄图&#xff0c;提前把6个面拍摄好并裁剪干净。 官网创建模型https://developer.vuforia.com/targetmanager/project/targets?projectId0ddbb5c17e7f4bf090834650bbea4995&avfalse 设置长宽高…

状态模式:灵活应对对象行为变化,实现状态驱动的智能设计

文章目录 **一、技术背景与应用场景****为何使用状态模式&#xff1f;****典型应用场景包括但不限于&#xff1a;** **二、状态模式定义与结构****三、使用步骤举例****四、优缺点分析****总结** 一、技术背景与应用场景 状态模式是一种行为设计模式&#xff0c;用于处理一个对…

分享一个UE的SmoothStep小技巧

SmoothStep节点可以制作更平滑的动画&#xff0c;而如果将max参数作为值传入将value和min参数作为约束&#xff0c;则可以做出类似冲击波的渐变效果&#xff1a; 并且通过修改value与min之间的数值差&#xff0c;可以调节渐变。 这个技巧主要就是可以产生硬边。 比如我们可…

2024年阿里云服务器新购、续费、升级优惠政策和优惠活动大全

2024年阿里云服务器购买、续费、升级优惠政策整理&#xff0c;阿里云服务器优惠价格表&#xff1a;轻量2核2G3M服务器61元一年、2核4G4M带宽165元1年&#xff0c;云服务器4核16G10M带宽26元1个月、149元半年&#xff0c;阿里云ECS云服务器2核2G3M新老用户均可99元一年续费不涨价…

信息系统项目管理师(高项)—学习笔记

第一章信息化发展 1.1 信息与信息化 1.1.1 信息 信息是物质、能量及其属性的标示的集合&#xff0c;是确定性的增加。 它以物质介质为载体&#xff0c;在传递和反映世界各种事物存在方式、运动状态等的表征。 信息不是物质&#xff0c;也不是能力&#xff0c;它以一种普遍…

实验室预约|实验室预约小程序|基于微信小程序的实验室预约管理系统设计与实现(源码+数据库+文档)

实验室预约小程序目录 目录 基于微信小程序的实验室预约管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、微信小程序前台 2、管理员后台 &#xff08;1&#xff09;管理员登录 &#xff08;2&#xff09;实验室管理 &#xff08;3&#xff09;公告信息…

天府锋巢直播基地:打造西部地区成都直播基地生态圈的领军标杆

数字经济蓬勃发展&#xff0c;直播产业成为赋能引擎以及新的经济增长点。直播电商作为数字经济的一大板块&#xff0c;对我国推动数字化建设有着非常大的作用。德商产投与无锋科技联袂打造了天府锋巢直播产业基地&#xff0c;该成都直播基地致力于打造全域直播基地&#xff0c;…

某胜物流软件三个接口sql注入漏洞(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…

Leetcoder Day20| 二叉树 part09+总结

语言&#xff1a;Java/Go 669. 修剪二叉搜索树 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即&#xff0c;如果没有被移…

jenkins报错:Pseudo-terminal will not be allocated because stdin is not a terminal

jenkins的流水线部分代码如下 sh ssh root192.168.2.234 << remotessh cd /var/lib/jenkins/workspace/txkc /usr/local/maven/apache-maven-3.8.6/bin/mvn clean package -U ls remotessh执行流水线出现报错&#xff1a;Pseudo-terminal will not be allocated because…

docker 启动镜像命令

Docker 的启动命令用于启动 Docker 容器。这些命令可以从基本的 docker run 命令扩展到包括多个选项和参数&#xff0c;以满足不同的需求。以下是一些常用的 Docker 启动命令和选项的示例&#xff1a; 启动一个新容器&#xff1a; docker run [OPTIONS] IMAGE [COMMAND] [ARG..…

Ubuntu系统本地部署Inis博客结合内网穿透实现远程访问本地站点

文章目录 前言1. Inis博客网站搭建1.1. Inis博客网站下载和安装1.2 Inis博客网站测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;2.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 3. 公网访问测试总…

【TCP/IP】内核网络堆栈

在Linux内核中&#xff0c;网络堆栈&#xff08;network stack&#xff09;是一套实现网络通信功能的软件包&#xff0c;负责处理数据包的发送和接收。网络堆栈按照OSI模型&#xff08;开放式系统互联通信参考模型&#xff09;或TCP/IP模型的层次结构来组织&#xff0c;实现了从…