分子骨架跃迁工具-DiffHopp 评测

一、文章背景介绍

DiffHopp模型发表在ICML 2023 Workshop on Computational Biology(简称:2023 ICML-WCB)上的文章。第一作者是剑桥计算机系的Jos Torge。

DiffHopp是一个专门针对骨架跃迁任务而训练的E3等变条件扩散模型。此外,DiffHopp使用了更具有几何表达力的图神经网络GVP模型。DiffHopp模型针对给定蛋白质-配体复合物,使用等变扩散模型从以官能团和蛋白质袋为条件的骨架分布中对骨架进行采样。 所得骨架与官能团合并以形成骨架跃迁配体。

(有趣的是,我在生成分子的代码中,并没有看到输入官能团的参数。官能团不知道是怎么识别的?估计在数据处理的代码中,需要仔细看看)

关于骨架跃迁任务,作者认为是:保留了原始支架的基本分子特征,同时引入新的化学元素或结构特征以增强效力、选择性或生物利用度。分子结构中间区域都会发生改变,但是做两侧的基团不发生变化或者少量变化。换句话说,骨架跃迁需要通常需要重新设计大部分分子。如下图所示。

这一点与我们之前介绍的其他模型明显不同,Difflinker,Dlinker,Delinker, DEVELOP都是仅修改指定的分子中间一小段。而DiffHopp是不能指定特定的分子区域,同时分子修改区域很大,两侧的功能基团的位置也会发生变化。但这一点其实是不利的,因为在做骨架跃迁项目时,我们希望生成的分子具有晶体分子一样的性质,里面就包括,类似的结合模式和形状。当功能基团的位置发生变化了,很可能原先的相互作用模式被改变了,生成的分子也就没有被相信的理由了。没办法,项目就是这样子,可以相信一个可能对的东西,但是绝对不会信一个AI的观察,毕竟现在AI的观察还是不完善的。

作者以6bqd作为例子,生成了10个分子,然后进行VINA打分。最优打分的分子的docking score为-10.4明显小于参考分子的-9.4,如下图所示。功能基团为红色标记区域。

作者对测试集体系都做了DiffHopp模型的骨架跃迁设计,并使用vina评估打分,结果如下表。DiffHopp模型的结果要优于GVP和ENGG等模型使用inpainting模式的结果,特别是在分子成药性QED和结合力 vina score上。同时也验证了使用GVP模型的扩散模型 (DiffHopp)比使用ENGG模型的扩散模型(DiffHopp-EGNN)生成的分子更具有优势(DiffHopp vs. DiffHopp-EGNN)

但是根据作者的结果,生成分子的QED、SA分数,和vina score打分上仅比测试集的数据分布好一些,说明生成的骨架跃迁分子要优于参考分子,模型在某些体系上捕捉到了额外的蛋白分子相互作用。但结果并不显著。

二、代码复制与环境安装

复制项目代码

git clone https://github.com/jostorge/diffusion-hopping.git

创建conda环境和安装相应的包

#安装环境
conda env create -f environment.yml
#激活环境
conda activate diffusion_hopping

注意,可能由于cuda版本以及系统的原因,导致安装的pytorch可能是cpu版本需要重新安装pytorch。

安装reduce

reduce是用于蛋白质中H原子处理的包,可以加氢也可以删除氢,同时也可以对氨基酸做一些处理,例如HIS。reduce的安装可以参考:GitHub - rlabduke/reduce: Reduce - tool for adding and correcting hydrogens in PDB files.

也可以安装AMBERTools,使用AMBERTools中的reduce替代, 然后将reduce软连接出来。

AMBERTools的安装方法: 

conda install -c conda-forge ambertools=23

软连接方法:在~/.bashrc文件中添加如下行

alias reduce='~/anaconda3/envs/AmberTools23/bin/reduce'

安装Qvina,选装。(仅在分子评估部分使用)

这里略过

安装mgltools

conda install mgltools -c bioconda

三、案例测试(1)

作者在代码中自带了一个体系,1a0q,路径为:

./tests_data/complexes/1a0q

口袋和分子结构见下图:

使用如下命令生成100个新骨架跃迁分子:

python generate_scaffolds.py \
--input_molecule ./tests_data/complexes/1a0q/ligand.sdf \
--input_protein ./tests_data/complexes/1a0q/protein.pdb \
--num_samples 100 \
--output test_data_results

生成的分子保存在自动创建的 ./test_data_results文件夹内。其中,只产生了100个sdf文件,对应100个分子。生成过程不存在不合格的分子。

先简单查看几个生成的分子,如下图。生成的分子与参考分子并没有明显的变化,只有在口袋内侧的苯环发生了角度旋转。这一结果来说,DiffHopp模型对于这个体系的骨架跃迁就失败了。很有可能是代码在识别scaffold区域时,只识别到了苯环,而在生成scaffold时也只生成了苯环。

另外,所有生成的分子均为23个重原子数,与参考分子完全相同。侧面也说明,DiffHopp生成的分子和SBDD等分子生成模型,或者Difflinker等骨架跃迁模型的inpainting模式类似,并不改变生成分子的原子数量。模型时调整原子的位置及其元素种类,而生成新的分子。

生成分子的视频如下:

四、案例测试(2)

有请我们骨架跃迁模型的老演员,3FI3。

分子的二维结构:

将3FI3体系的口袋和分子分别保存为pocket.pdb和ligand.sdf,然后上传至./tests_data/complexes/3FI3目录中。然后执行如下命令生成分子:

python generate_scaffolds.py \
--input_molecule ./tests_data/complexes/3FI3/ligand.sdf \
--input_protein ./tests_data/complexes/3FI3/pocket.pdb \
--num_samples 100 \
--output test_data_results-2

运行结束后,生成的分子保存在./test_data_results-2文件夹内。一共生成了98个分子,有2个分子在生成过程中失败。

先简单查看一下生成的分子吗,随机挑了6个,如下图:

从上图中,DiffHopp模型在骨架跃迁的时候,生了大量的新颖结构的分子,分子也能比较好的放置在口袋中,没有与口袋发生严重的碰撞。值得注意的是,分子两端的三氟苯和苯环片段的结构并没有发生变化,同时,整个分子的所有片段都有一定程度的位移。显然,这些生成的分子是需要进行进一步的筛选和处理的。

以下是生成分子的视频。

五、总结

DiffHopp是一种专门针对骨架跃迁的训练出来的AI工具。整体看来效果还行。偶尔能生成比参考分子结合力更好的分子。

与之前介绍的Difflinker,Delinker, DEVELOP等不同,DiffHopp骨架跃迁部分不能指定,且范围更大,且两端的功能基团的位置也会发生变化,更接近分子生成方法中的inpainting技术。

此外,由于作者提供的checkpoint并非基于口袋的全原子模型训练的,因此,模型性能比较差。最好能自己训练一个口袋全原子的版本。

注:作者提供的代码非常全面,从数据处理到训练模型,到生成分子评估,应有尽有,值得好好学习,加以改进。毕竟,那么全的代码,还可以顺利安装不需要修改代码的AIDD项目,在github上真不多见。

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

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

相关文章

LeetCode Hot100 84.柱状图中最大的矩形

题目: 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 方法: 代码: class Solution {public int largestRectang…

MySOL常见四种连接查询

1、内联接 &#xff08;典型的联接运算&#xff0c;使用像 或 <> 之类的比较运算符&#xff09;。包括相等联接和自然联接。 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如&#xff0c;检索 students和courses表中学生标识号相同的所有行。 2、…

机器学习之危险品车辆目标检测

危险品的运输涉及从离开仓库到由车辆运输到目的地的风险。监控事故、车辆运动动态以及车辆通过特定区域的频率对于监督车辆运输危险品的过程至关重要。 在线工具推荐&#xff1a; 三维数字孪生场景工具 - GLTF/GLB在线编辑器 - Three.js AI自动纹理化开发 - YOLO 虚幻合成数…

使用STM32微控制器实现光电传感器的接口和数据处理

光电传感器在许多领域中被广泛应用&#xff0c;例如工业自动化、智能家居等。本文将介绍如何使用STM32微控制器实现光电传感器的接口和数据处理的方案&#xff0c;包括硬件设计、引脚配置、数据采集、滤波和阈值判断等关键步骤&#xff0c;并给出相应的代码示例。 一、引言 光…

MySQL使用函数和存储过程实现:向数据表快速插入大量测试数据

实现过程 1.创建表 CREATE TABLE user_info (id INT(11) NOT NULL AUTO_INCREMENT,name VARCHAR(20) DEFAULT NULL,age INT(3) DEFAULT NULL,pwd VARCHAR(20) DEFAULT NULL,phone_number VARCHAR(11) DEFAULT NULL,email VARCHAR(255) DEFAULT NULL,address VARCHAR(255) DEF…

DHCP协议及实验omnipeek抓包工具分析 IPv4协议

一 抓包命令 adb shell tcpdump -i wlan0 -w /data/tcpdump.pcap 抓包后截图如下 二 DHCP是什么 2.1 DHCP定义 DHCP( Dynamic Host Configuration Protocol, 动态主机配置协议)定义: 存在于应用层(OSI) 前身是BOOTP(Bootstrap Protocol)协议 是一个使用UDP(User …

如何编写自己的python包,并在本地进行使用

如何编写自己的python包,并在本地进行使用 一、直接引用 1.创建Python项目pythonProject。 2.并且在此项目下创建pg_message包。 3.pg_message包下默认生成_init_.py文件。 Python中_init_.py是package的标志。init.py 文件的一个主要作用是将文件夹变为一个Python模块,Pyt…

使用Jmeter进行http接口测试

前言&#xff1a; 本文主要针对http接口进行测试&#xff0c;使用Jmeter工具实现。 Jmter工具设计之初是用于做性能测试的&#xff0c;它在实现对各种接口的调用方面已经做的比较成熟&#xff0c;因此&#xff0c;本次直接使用Jmeter工具来完成对Http接口的测试。 一、开发接口…

杂记 | 使用Docker安装并配置MongoDB以支持事务(单副本,并解决了证书文件错误的问题)

文章目录 00 安装前的准备01 创建Docker Compose文件02 设置证书文件03 启动MongoDB04 初始化副本集和创建用户05 验证安装 00 安装前的准备 在开始之前&#xff0c;确保已经安装了Docker&#xff0c;本文基于Docker Compose进行示范&#xff0c;没有装Docker Compose也可将其…

人大金仓亮相2023信息技术应用创新论坛

11月25日&#xff0c;2023信息技术应用创新论坛在常州开幕。人大金仓受邀分享信息技术应用创新行业应用典型成果&#xff0c;在论坛展览部分集中展示了最具代表性的新产品、应用及解决方案。 江苏省工业和信息化厅副厅长池宇、中国电子工业标准化技术协会理事长胡燕、常州市常务…

量子力学技术前沿:探索、挑战与未来

量子力学技术前沿:探索、挑战与未来 一、引言 量子力学,这门揭示微观世界规律的学科,自诞生以来就在科技领域发挥着举足轻重的作用。随着科技的飞速发展,量子力学的应用也在不断拓展和深化。今天,我将带领大家一起领略量子力学技术的魅力,探讨其发展趋势和挑战。 二、量…

windows系统mobaxterm远程执行linux上ssh命令

命令如下 start "" "%~dp0\MobaXterm_Personal_23.4.exe" -newtab "sshpass -p root ssh root192.168.11.92 mkdir 33" -p 是密码 左边是用户名&#xff0c;右边是服务器ip 后面跟的是服务器上执行的命令 第一次执行的时候要设置mobaxt…

使用std::mutext与std::condition_variables实现信号量

1. 信号量的定义 2. 使用std::mutext与std::condition_variables实现信号量 代码来自&#xff1a;https://zhuanlan.zhihu.com/p/462668211 #ifndef _SEMAPHORE_H #define _SEMAPHORE_H #include <mutex> #include <condition_variable> using namespace std;cla…

ArrayList和顺序表

目录 线性表 顺序表 实现顺序表&#xff1a; 1&#xff0c;添加元素的时候我们要判断是否需要扩容 2&#xff0c;写异常 3,数组清空 ArrayList&#xff1a; ArrayList的构造方法&#xff1a; ArrayList的add方法&#xff1a; ArrayList的subList 知识点补充&#xff…

业务逻辑漏洞

业务逻辑漏洞 扫描器扫不出来 漏洞包括 暴力破解任意用户/密码登陆短信/邮箱轰炸验证码绕过/爆破/重放/回传用户名/手机号枚举(用户名枚举&#xff1a;当用户登录时&#xff0c;显示用户名不存在&#xff0c;或密码不正确&#xff0c;两个其中一个不正确就称为用户名枚举)越…

el-table,列表合并,根据名称列名称相同的品名将其它列值相同的进行合并

el-table,列表合并,根据名称列名称相同的品名讲其它列值相同的进行合并,并且不能垮品名合并 如图 用到el-table合并行的方法合并 tableSpanMethod({ row, column, rowIndex, columnIndex }) {if (column.property "materielName") {//合并商品名const _row this…

一加7Pro为PixelExperience系统编译kernelsu

前言 之前写了一篇文章为一加七Pro(LineageOs17.1 4.14内核版本)编译KernelSu&#xff0c;最近想换个系统玩玩&#xff0c;因为我发现我自己编译的系统总是被某些APP风控了&#xff0c;比如淘宝有些活动就参与不了。 正好可以试试PixelExperience&#xff0c;顺便为PixelExpe…

Django项目部署本地windows IIS(详细版)和static文件设置(页面样式正常显示)

目录 必要条件&#xff1a; 一、下载并启用wfastcgi 二、window安装 IIS功能 三、IIS管理器中添加网站 1、复制项目 2、复制wfastcgi.py文件 3、创建文件web.config 4、添加网站&#xff0c;填写信息 5、启动fastcgi程序 6、修改进程标识 四、static文件设置和正确显…

【2023传智杯】第六届传智杯程序设计挑战赛AB组-DEF题解题分析详解【JavaPythonC++解题笔记】

本文仅为【2023传智杯】第六届传智杯程序设计挑战赛-题目解题分析详解的解题个人笔记,个人解题分析记录。 本文包含:第六届传智杯程序设计挑战赛题目、解题思路分析、解题代码、解题代码详解 文章目录 一.前言更新进度记录二.比赛题目(AB俩组)D题题目-abbE题题目 -kotori和…

Appium 2 和 Appium Inspector 环境部署

前言 自 2022 年 1 月 1 日起&#xff0c;Appium 核心团队不再维护 Appium 1.x。官方支持的平台驱动程序的所有最新版本均不兼容 Appium 1.x&#xff0c;需要 Appium 2 才能运行。 Appium 2是一个自动化移动应用程序的开源工具&#xff0c;它带来了以下重要改进&#xff1a;  …