分子骨架跃迁工具-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,一经查实,立即删除!

相关文章

golang构建docker镜像的几种方式

目前docker支持以下几种方式指定上下文来构建镜像 本地项目路径本地压缩包路径docekrfile文本链接压缩包文件链接git仓库链接 在此记录下golang中使用git仓库链接构建方法 import ("context""github.com/docker/docker/api/types""github.com/dock…

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

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

Go操作MySQL

1、下载依赖 Go语言中的database/sql包提供了保证SQL或类SQL数据库的泛用接口,并不提供具体的数据库驱动。使用database/sql包时必须注入(至少)一个数据库驱动。 go get -u github.com/go-sql-driver/mysql2、相关函数 2.1 Open() func O…

MySOL常见四种连接查询

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

CVPR 2023 精选论文学习笔记:Towards Scalable Neural Representation for Diverse Videos

基于 MECE 原则,我们给出以下四个分类标准: 分类标准 1:表示类型 隐式神经表示(INR) 隐式神经表示(INR)是一类神经网络架构,将场景或对象表示为从 3D 点映射到颜色和不透明度值的连续函数。该函数通常从一组训练图像或视频中学习,然后可以用于渲染场景或对象的新视…

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

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

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

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

[传智杯 #3 决赛] 课程

题目背景 disangan233 喜欢数数&#xff0c;于是他想让你帮他回答一个问题。 题目描述 传智专修学院提供 A,B 两个课程&#xff0c;分别有 n,m 个学生报名。报名 A 的学生的编号为an​&#xff0c;报名 B 的学生的编号为 bm​&#xff0c;求有多少个学生同时报名了两个课程。…

在awk中 sub函数 和 gsub函数 的区别

在awk中 sub函数 和 gsub函数 的区别 简单说就是正则加g和不加g的效果, sub匹配每行第一个,gsub匹配每行所有 在Awk中&#xff0c;sub函数和gsub函数都是用于字符串替换的函数&#xff0c;但它们之间存在一些区别。 sub函数&#xff1a; sub函数用于替换字符串中的第一个匹配…

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 …

Git命令汇总

每次git不常用的命令时东查西查&#xff0c;还是自己写一下&#xff0c;巩固下印象吧。。 删除分支 要删除远程分支&#xff0c;可以使用以下命令&#xff1a; git push origin --delete <branch_name> 其中&#xff0c;<branch_name>是要删除的分支的名称。 …

asp.net core HttpContextAccessor类

在 ASP.NET Core 中 &#xff0c;HttpContextAccessor 是一个用于访问当前 HTTP 请求的工具类。它通常用于在应用程序中获取当前 HTTP 请求的上下文信息&#xff0c;例如请求的路由、头部信息、用户身份验证状态等。 HttpContextAccessor 类通常在需要访问当前 HTTP 请求上下文…

如何编写自己的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也可将其…

gitlab 代码提交账户信息修改

1&#xff0c;前提 刚来公司&#xff0c;去gitlab仓库拉取项目代码的时候需要一个用户&#xff0c;密码&#xff0c;邮件&#xff0c;当时随便设置了一个邮件&#xff0c; 后来公司实施了信息安全方面的措施&#xff0c;被限制只能固定后缀的用户邮件才能拉取提交代码&#xf…

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

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

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

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

flask五小时快速入门资料记录

视频推荐 使用Flask轻松实现Python Web应用的全流程&#xff01; 推荐博客 详细版&#xff1a; https://www.w3cschool.cn/flask/flask_http_methods.html https://tutorial.helloflask.com/template/ 简洁版&#xff1a; https://www.cnblogs.com/Zhengnengjin/p/Eternity…