机器学习打分函数在分子对接中的应用系列-GB_Score

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


前言

分子对接是计算机辅助药物设计(CADD)中广泛使用的基本工具之一,主要过程可分为两部,首先是是探索到配体-受体结合的结合的正确姿势(pose identification),然后采用打分函数对其进行评估(pose Scoring)。
近年来,由于计算机硬件和数据集可用性的进步,数据驱动的机器学习方法已成为药物设计框架的重要组成部分之一。基于机器学习和深度学习构建打分函数,可以预测对接过程中生成的蛋白质-配体位姿或晶体复合物的结合得分,已成为CADD领域一个活跃的研究命题。

本文解读了一种先进的机器学习打分函数GB-Score的发展及原理,介绍相应验证环境的部署,以及如何使用,便于感兴趣的朋友作进一步优化。

一、GB-Score是什么?

GB-Score是一种最先进的基于机器学习的评分函数,利用包含23496组数据的PDBbind-v2019 general sets作为数据集,使用距离加权的原子间接触特征和梯度提升树算法来预测结合亲和力。
距离加权原子间接触特征化方法使用不同配体和蛋白质原子类型之间的距离来数值表示蛋白质-配体复合物。
GB-Score在CASF-2016基准测试中的得分能力指标非常优异,实现Pearson相关性0.862和RMSE 1.190。

Github代码:https://github.com/miladrayka/GB_Score
介绍文章:https://onlinelibrary.wiley.com/doi/10.1002/minf.202200135 原文自由下载:GB_Score.pdf

在这里插入图片描述
前期研究已经证明,配体和蛋白质原子之间的距离加权原子间接触可以作为机器学习过程中蛋白质-配体复合物数学表示的特征。本研究作者通过使用更好的特征选择、扩展的训练集和不同的学习算法来改进以前的评分函数ET Score。在特征选择上,采用了更合理的特征选择方法来缩小描述蛋白质-配体复合物的特征向量的尺寸,以变得更符合奥卡姆的剃刀规则。此外,在严格的环境中仔细检查新生成的评分函数GB Score,以评估其在新数据中的泛化能力。

对于配体,是基于元素划分原子类型(H、C、N、O、F、P、S、Cl、Br、I)。
对于蛋白质原子类型,根据侧链的化学性质将氨基酸残基分为四类(带电(c)、极性(p)、两亲性(a)、疏水性(h)),然后将相同的基于元素的原子类型归于每个组。通过这个分类,产生的蛋白质原子类型将反映蛋白质原子的局部化学环境。
下一步,计算特定原子类型对的所有原子间距离。大小低于预定义截止值(dcutoff)的距离由自然数(n)的逆幂加权并相加。之前的研究证明了12A和2分别是dcutoff和n的适当选择。对所有可能的原子类型对重复上述算法,并产生具有400维的特征向量作为蛋白质-配体复合物的表示。
在预处理步骤中,消除了所有静态、准静态(方差低于0.01)和相关(相关性高于95%)特征,这导致不同训练集的特征维度不同。此外,由于平均值和标准偏差,对其余特征进行了归一化。
数据集及处理后的特征向量维数Nf, 以及不同元素特征总和的权重,如下所示。
在这里插入图片描述

在这里插入图片描述

作者建立的三种机器学习算法RF,ERT,GBT,也是常见的机器学习算法类型。Scikit学习机器学习包用于训练。
在RF和ERT中,n_estiques设置为500,并且只有mtry(max_features)超参数做了优化。对于GBT,所有超参数都设置为参考论文中的值。
由于上述算法的随机性,训练过程重复十次,并且通过对十个以上的模型进行平均来报告模型的均方根误差(RMSE)和皮尔逊相关性(Rp)。相应的超参数如下所示:在这里插入图片描述
以下是CASF2016(core sets)数据集上的打分效果,看起来已经相当不错。
在这里插入图片描述GBT算法整体优于其他两种算法的效果。
进一步在更大的数据集PDBbind 2019版的refined general sets上做了训练,Rp 和RMSE分别达到 0.862 和1.19,该模型被称为 GB-score。
在这里插入图片描述
显示GB score预测了pKi/d值大于10的蛋白质配体结构的错误值。这一观察结果可归因于所使用的训练集,因为只有1.80%的训练集数据
具有大于10的pKa(Ka的负对数值),因此GB score预测偏向于中间范围pKi/d。所以,后续研究可以增加具有高pKi/d范围的数据作为解决方案。
为了验证模型的健壮性,在PDBbind 2019v数据集上做了5折交叉验证,Rp和RMSE分别为 0.764 (0.001) and 1.205 (0.007),有所下降,认为是数据数量增加和多样性增加所致。调整CASF2016数据集中的数量作为训练集,以及控制数据相似性均能证明GBT算法的稳健性。总之,即便测试集与训练集相似数据减少,机器学习算法仍然能很好的发挥作用。

core sets 2016分身按照蛋白家族分为57种,75%的家族预测结果相关系数可以达到0.7以上的可接受范围。
ECIF::LD-GBT,ECIF,AGL-Score ,ETScore ,EIC-Score,RosENet,KDEEP,PLEC-nn ,OnionNet ,DvinaRF20,RI-Score 和X-score. ECIF::LD-GBT表现最优Rp =0.866,GBscore表现次之(Rp =0.862).

在这里插入图片描述
不足与改进:更其他研究一样,缺少真实场景中的应用;而且打分函数本身依赖于对接pose。另外,应该完善机器学习打分函数的评估方法,目前的机器学习打分函数都得到非常接近的效果,难以辨别优劣,或许可以通过划分不同的适用范围来处理这个问题。

二、文献复现 -训练和验证环境

安装环境:Ubuntu 22.04。

1. GB score验证虚拟环境的配置

conda create -n gb_score_env python=3.8.8 numpy=1.21.2 pandas=1.2.4 seaborn=0.11.1 joblib=1.0.1 matplotlib=3.3.4 
conda activate gb_score_env
python -m pip install biopandas==0.2.8 scipy==1.7.1 scikit-learn==0.24.1 progressbar2==3.53.1
conda install jupyter

2. Usage

1- Preparing ligand and protein file

a. Ligand and protein structure should be saved in .mol2 and .pdb format files respectively.
b. Each ligand and protein files for a specific complex must be placed in a same folder.

for example:

./1a1e/1a1e_ligand.mol2
./1a1e/1a1e_protein.pdb
./1a4k/1a4k_ligand.mol2
./1a4k/1a4k_protein.pdb

2- Generating features

运行generate_features.py 生成GB-Score的特征文件,类型为.csv文件:

-d 定义输入文件所在文件夹的路径; -f 定义输出特征的文件名。

python generate_features.py -d score/score_in/ -f feature.csv

3 - Repeat and extend current report

文件analysis.ipynb提供了复现整个设计及验证的过程,有明确的注释,感兴趣可以查看。
.csv 和.joblib文件需要提前下载解压到files和saved_model文件夹。


总结

本文解读了机器学习算法GB-Score的建立和验证工作。
机器学习算法有望显著提升对接pose打分的性能,但仍有多个方面问题亟待解决:
(1)缺少系统的机器学习打分函数评价方式;
(2)打分性能与对接pose质量紧密相关也是需要考虑的因素
(3)如何找到不同算法\不同原理打分函数的适用场景?

参考资料

  1. https://github.com/miladrayka/GB_Score
  2. https://onlinelibrary.wiley.com/doi/10.1002/minf.202200135

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

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

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

相关文章

基础复习(IDA调试器)

1.选择IDA调试后端 在顶部有一个下拉菜单,选择调试器后端位置 很多用户实际上使用的是Windows版本的IDA,该IDA可以直接调试Windows下32bit和64bit的程序 2.本地调试启动方法 载入IDA后,程序实际上在对程序内置的一个字符串进行base64解码…

C++从入门到精通 第十七章(终极案例)

写在前面: 本系列专栏主要介绍C的相关知识,思路以下面的参考链接教程为主,大部分笔记也出自该教程,笔者的原创部分主要在示例代码的注释部分。除了参考下面的链接教程以外,笔者还参考了其它的一些C教材(比…

linux系统git常规操作

Git命令常规操作 常用命令说明常用操作示意图文件的状态变化周期 添加文件跟踪文件会添加到.git的隐藏目录由工作区提交到本地仓库查看git的状态提交后的git目录状态 删除文件重命名暂存区数据查看历史记录还原历史数据还原未来数据标签使用对比数据 常用命令说明 命令命令说明…

【计算机网络】深度学习使用应用层的HTTP协议

💓 博客主页:从零开始的-CodeNinja之路 ⏩ 收录文章:【计算机网络】深度学习使用应用层的HTTP协议 🎉欢迎大家点赞👍评论📝收藏⭐文章 文章目录 一:HTTP是什么二:HTTP请求1.HTTP请求的组成2.HTTP请求的方法…

安卓开发:挑战每天发布一个封装类02--Wav录音封装类AudioChannel 1.0

简介 库名称:AudioChannel 版本:1.0 由于项目需求录音并base64编码存到服务器中,就顺手改装了一个别人的封装类 原封装类地址:Android AudioRecord音频录制wav文件输出 - 简书 (jianshu.com) 描述:此封装类基于AudioRecord实现wav的音频…

再探二分法

推荐阅读 智能化校园:深入探讨云端管理系统设计与实现(一) 智能化校园:深入探讨云端管理系统设计与实现(二) 文章目录 推荐阅读二分查找题目思路解法左闭右闭式写法左闭右开式写法 二分查找 题目 给定一个…

自动驾驶---行业发展及就业环境杂谈

进入21世纪以来,自动驾驶行业有着飞速的发展,自动驾驶技术(L2---L3)也逐渐落地量产到寻常百姓家。虽然最早期量产FSD的特斯拉有着深厚的技术积累,但是进入2010年以后,国内的公司也逐渐发展起来自己的自动驾…

Kotlin多线程

目录 线程的使用 线程的创建 例一:创建线程并输出Hello World Thread对象的用法 start() join() interrupt() 线程安全 原子性 可见性 有序性 线程锁 ReentrantLock ReadWriteLock 线程的使用 Java虚拟机中的多线程可以1:1映射至CPU中,即…

在Node.js中如何实现用户身份验证和授权

当涉及到构建安全的应用程序时,用户身份验证和授权是至关重要的一环。在Node.js中,我们可以利用一些流行的库和技术来实现这些功能,确保我们的应用程序具有所需的安全性。本篇博客将介绍如何在Node.js中实现用户身份验证和授权。 用户身份验…

留存测试数据,Apipost接口用例详解

接口用例可以在不影响源接口数据的情况下对接口添加多个用例,方便测试并保存测试数据。 创建用例 左侧目录选择接口后进入接口用例页面,点击添加用例 在弹出窗口中修改各种参数。如登录接口,可修改用户名为空,并添加断言。 执行…

图解KMP算法

目录 1.最长公共前后缀1.1前缀1.2后缀1.3最长公共前后缀 2、KMP算法过程2.1例子12.2例子22.3Python代码:2.4next数组的计算过程 1.最长公共前后缀 1.1前缀 前缀说的是一个字符串除了最后一个字符以外,所有的子串都算是前缀。 前缀字符串:A…

Apache celeborn 安装及使用教程

1.下载安装包 https://celeborn.apache.org/download/ 测0.4.0时出现https://github.com/apache/incubator-celeborn/issues/835 2.解压 tar -xzvf apache-celeborn-0.3.2-incubating-bin.tgz 3.修改配置文件 cp celeborn-env.sh.template celeborn-env.shcp log4j2.xml.…

Dear ImGui的UE5.3集成实践

Dear ImGui一直较为火热,这是一个调试使用并且可以响应快速迭代的Gui库,甚至可以做到在任何代码块中调用API即显示。如果你想更多的了解一下可访问其官方网站:https://www.dearimgui.org/ 那么本文就来在UE5中尝试踩坑使用它。 UE4.26版本 …

数据可视化基础与应用-01-数据可视化概述

总结 本系列是数据可视化基础与应用的第02篇,主要介绍数据可视化概述,包括数据可视化的历史,原理,工具等。 认识大数据可视化 数据是什么 信息科学领域面临的一个巨大挑战是数据爆炸。据IDC Global DataSphere统计&#xff0c…

EXCEL 在列不同单元格之间插入N个空行

1、第一步数据,要求在每个数字之间之间插入3个空格 2、拿数据个数*(要插入空格数1) 19*4 3、填充 4、复制数据到D列 5、下拉数据,选择复制填充这样1-19就会重复4次 6、全选数据D列排序,这样即完成了插入空格 以…

贪心算法---前端问题

1、贪心算法—只关注于当前阶段的局部最优解,希望通过一系列的局部最优解来推出全局最优----但是有的时候每个阶段的局部最优之和并不是全局最优 例如假设你需要找给客户 n 元钱的零钱,而你手上只有若干种面额的硬币,如 1 元、5 元、10 元、50 元和 100…

matlab滤波器设计

1、内容简介 略 51-可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 matlab滤波器设计-butter、ellip、cheby1、cheby2_哔哩哔哩_bilibili 4、参考论文 略

「C#」WPF学习笔记-基础类及继承关系

1、DependencyObject DependencyObject是WPF中依赖属性系统的核心,它为WPF的数据绑定、动画和属性共享等功能提供了支持,是一个非常重要的基类。 其主要特点和职责包括: 依赖属性系统:DependencyObject 是所有支持依赖属性的类…

Python和Jupyter简介

在本notebook中,你将: 1、学习如何使用一个Jupyter notebook 2、快速学习Python语法和科学库 3、学习一些IPython特性,我们将在之后教程中使用。 这是什么? 这是只为你运行在一个个人"容器"中的一个Jupyter noteboo…

基于FPGA的I2C接口控制器(包含单字节和多字节读写)

1、概括 前文对IIC的时序做了详细的讲解,还有不懂的可以获取TI的IIC数据手册查看原理。通过手册需要知道的是IIC读、写数据都是以字节为单位,每次操作后接收方都需要进行应答。主机向从机写入数据后,从机接收数据,需要把总线拉低来…