基于生成扩散模型的分子对接程序-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.hqwc.cn/news/488206.html

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

相关文章

AIGC 实战:Ollama 和 Hugging Face 是什么关系?

Ollama和 Hugging Face 之间存在着双重关系&#xff1a; 1. Ollama是 Hugging Face 开发并托管的工具&#xff1a; Ollama是一个由 Hugging Face 自行开发的开源项目。它主要用于在本地运行大型语言模型 (LLM)&#xff0c;特别是存储在 GPT 生成的统一格式 (GPT-Generated Un…

单片机02_寄存器_GPIO设置__点灯

芯片概述 C51&#xff1a;0口、1口、2口、3口&#xff0c;P00~p07、P10~P17、P20~P27、P30~P37 STM32&#xff1a;A口、B口、C口、D口&#xff0c;PA0~PA15/PA5 GPIOA.5 STM32F407ZGT6有7组GPIO端口&#xff0c;分别是&#xff1a;A B C D E F G&#xff0c;每组均有16个GPIO端…

js设计模式:备忘录模式

作用: 封装的对象可以在对象触发行为时进行状态的记录与保存 也可以进行状态的回退,恢复之前的状态 示例: class Editor{constructor(){this.allText }edit(text){this.allText text}saveNow(){return new EditorText(this.allText)}backspacing(editorText){this.allText…

【k8s资源调度-StatefulSet】

1、部署对象StatefulSet资源&#xff08;无状态应用&#xff09; StatefulSet针对的是有状态应用&#xff0c;有状态应用会对我们的当前pod的网络、文件系统等有关联。 2、配置文件如下 StatefulSet资源的配置文件粗略如下&#xff0c;如下的配置信息包含了数据卷&#xff0c;…

python 3.7.3的安装

参考 Linux安装Python3.7-良许Linux教程网 (lxlinux.net) 1、Index of /ftp/python/3.7.9/ 1、安装gcc&#xff0c;yum -y install gcc 2、 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel…

有趣的CSS - 文字加载动画效果

大家好&#xff0c;我是 Just&#xff0c;这里是「设计师工作日常」&#xff0c;今天分享的是用 css 实现多字符模拟加载动画效果。 《有趣的css》系列最新实例通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码css 部分代码 完整代码如下html 页面css 样式页…

容器_Docker ( 06 )

容器_Docker ( 05 ) Kubernetes 资源对象管理 资源对象文件 模板与帮助信息 资源对象文件优势 命令无法实现高级复杂的功能某些资源对象使用命令无法创建方便管理 , 保存 , 追溯历史 资源对象文件太长 , 记不住怎么办 使用命令创建模板查询帮助信息查询官方手册 生成资源…

2024-02-21 作业

作业要求&#xff1a; 复习课上内容 //已完成结构体字节对齐&#xff0c;64位没做完的做完&#xff0c;32位重新都做一遍&#xff0c;课上指定2字节对齐的做一遍&#xff0c;自己验证 //已完成两种验证大小端对齐的代码写一遍复习指针内容 //已完成完善顺序表已写出的…

300分钟吃透分布式缓存-12讲:为何MC能长期维持高性能读写?

内存管理 slab 机制 讲完淘汰策略&#xff0c;我们接下来学习内存管理 slab 机制。 Mc 内存分配采用 slab 机制&#xff0c;slab 机制可以规避内存碎片&#xff0c;是 Mc 能持续高性能进行数据读写的关键。 slabclass Mc 的 slab 机制是通过 slabclass 来进行运作的&#x…

普中51单片机学习(DS1302)

DS1302时钟 DS1302实时时钟具有能计算2100年之前的秒、分、时、日、日期、星期、月、年的能力&#xff0c;还有闰年调整的能力。内部含有31个字节静态RAM&#xff0c;可提供用户访问。采用串行数据传送方式&#xff0c;使得管脚数量最少&#xff0c;简单SPI 3线接口。工作电压…

测试开源C#人脸识别模块DlibDotNet

百度“C# 换脸”找到参考文献4&#xff0c;发现其中使用DlibDotNet检测并识别人脸&#xff08;之前主要用的是ViewFaceCore&#xff09;&#xff0c;DlibDotNet是Dlib的.net封装版本&#xff0c;后者为开源C工具包&#xff0c;支持机器学习算法、图像处理等算法以支撑各类高级应…

Ansible 常见模块

模块文档 官方模块列表&#xff1a;https://docs.ansible.com/ansible/latest/collections/index_module.html # 查看支持的模块&#xff08;小写 l&#xff09; ansible-doc -l # 查看支持的模块个数-> 3387 ansible-doc -l | wc -l # ansible-doc 模块名 或者 ansible-…