当前位置: 首页 > news >正文

Nat. Mach. Intell 2023 | DrugBAN+:域自适应的可解释双线性插值网络改进药物-靶标预测(DTI)

DrugBAN+:Interpretable bilinear attention network with domain adaptation improves drug–target prediction

论文:Interpretable bilinear attention network with domain adaptation improves drug–target prediction | Nature Machine Intelligence

代码:https://github.com/peizhenbai/DrugBAN

数据集BioSNAP:https://github.com/kexinhuang12345/MolTrans/tree/master/dataset/BIOSNAP/full_data

一、问题

传统的基于结构基于配体的虚拟筛选方法因其相对有效的性能而得到了广泛的研究。然而,基于结构的虚拟筛选需要分子对接模拟,如果目标蛋白的三维结构未知,则不适用。此外,基于配体的虚拟筛选基于同一蛋白质的已知活性预测新的活性分子,但当已知活性数量不足时,性能较差

DTI本质上是由药物化合物中重要分子亚结构蛋白质序列结合位点之间的相互作用决定的。

问题1:许多以前的模型使用它们单独的编码器学习全局表示,而没有明确地学习局部交互。因此,首先学习整个结构的药物和蛋白质表示,而相互信息仅在黑箱解码模块中隐式学习。药物与靶标之间的相互作用尤其与其关键的亚结构有关; 因此,单独的全局表示学习往往会限制建模能力和预测性能。此外,如果没有对局部相互作用的明确学习,即使预测是准确的,预测结果也很难解释

问题2:跨领域推广预测性能,超越学习分布。由于化学和基因组空间的广阔区域,在实际应用中需要预测的药物靶标对通常是不可见的,并且与训练数据中的任何对都不相似。它们具有不同的分布,因此需要跨域建模。一个健壮的模型应该能够将学习到的知识转移到一个只有未标记数据的新领域。在这种情况下,需要通过学习可转移表征来对齐分布并提高跨域泛化性能

二、模型方法

1、Problem formulation

蛋白质序列:P=(a1,a2,...,an),每一个ai是23种氨基酸之一,药物分子是使用graph表示���=(V,E)。

2、DrugBAN framework

给定drug–target pair,首先分别使用GCN和1D CNN分别编码分子图和蛋白质序列信息。然后,使用双线性注意网络模块来学习编码drug和蛋白质(target)表征之间的局部相互作用。

双线性注意网络由双线性attention step和双线pooling  step组成,以生成联合表示,如b所示。其次,MLP预测分数,表示交互的概率。为了提高跨域药物-目标对的模型泛化性能,进一步将CDAN嵌入到框架中,以适应表示,以便更好地对齐源和目标分布,如图c所示

Domain adaptation

减少源域和目标域之间的域分布偏移(在源域中使用标记数据,在目标域中使用未标记数据),CDAN将对抗网络与多线性条件作用相结合,用于可转移表征学习。

CNN for protein sequence

蛋白质特征编码器由三个连续的1D卷积层组成,将输入的蛋白质序列转换为潜在特征空间中的矩阵表示。氨基酸有23种,将其nn.Embedding得到初始特征矩阵Xp。超过max_length(实验中1200)的截断,短于max_length的0填充。蛋白质编码器从蛋白质特征矩阵Xp中提取局部残基模式。第一个卷积层用于捕获kernel=3的3-mer残差级特征,后两层(kernel_size=6、9,channel=128)继续扩大感受野,学习局部蛋白质片段的更抽象的特征,CNN:

GCN for molecular graph

将每个SMILES字符串转换为其二维分子图���。首先根据其化学性质初始化每个原子节点,74维,7种性质:原子类型、原子度、隐含Hs数、形式电荷、自由基电子数、原子杂化、总Hs数以及原子是否芳香族。设置了最大允许的节点数Θd(论文中290),具有较少节点的分子将包含带有零填充的虚拟节点。特征矩阵设为Md,使用简单的线性变换变成实值密集矩阵Xd,使用三层GCN来有效地学习的图表示,通过聚合节点相应的由化学键连接的邻近原子集来更新原子特征向量。这种传播机制自动捕获分子的子结构信息。因此GCN:

Pairwise interaction learning

应用双线性注意网络模块来捕捉药物和蛋白质之间的成对局部相互作用。它由两层组成: 一层是a bilinear interaction map,用于捕获两两注意权重; 另一层是interaction map上的a bilinear pooling layer,用于提取联合药物-靶标表示。

CNN和GCN得到不同的特征:

step1双线性注意层,heads=2,hidden_dim k设为768,通过变换矩阵U和V,低秩双线性交互建模得到双线性注意映射矩阵I,以测量子结构级交互强度:

可以将双线性相互作用视为首先将表示hid和hjp映射到具有权重矩阵U和V的公共特征空间,然后学习Hadamard积和向量q的权重的相互作用。这样,两两相互作用为子结构对预测结果贡献提供可解释性。

step2池化层没有新的可学习参数(pooling size s设为3)。权重矩阵U和V与前一交互映射层共享,以减少参数量,缓解过拟合:

将联合表示f输入解码器,解码器是一个完全连接的分类层(hidden size设为512),后面是一个sigmoid函数:

并使用交叉熵损失+L2正则化:

Cross-domain adaptation for better generalization

特征提取器F(⋅), 解码器 G(⋅) and 域判别器 D(⋅)

F(⋅)表示单独的feature encoders和bilinear attention network,生成输入域数据的联合表示

G(⋅)表示Decoder,全连接层:

应用一个多线性映射将联合表示F和分类器预测G嵌入到一个联合条件表示,并且Flatten:

通过在h上调节域判别器D(⋅),同时对齐联合表示并预测源域和目标域的分类分布。由三层全连接网络组成的域判别器D(⋅)学习区分联合条件表示h是来自源域还是来自目标域。相反,训练特征提取器F(⋅)和解码器G(⋅),利用源标记信息最小化源域交叉熵损失(cross-entropy loss),同时生成不可区分的表示h,混淆鉴别器D(⋅):

判别器:

看论文的话会很懵(如果没有对域适配有概念的话),判别器D(.)如何实现域适配的?

答:首先论文中的特征提取器F(.)是提取feature以供解码器G(.)和域判别器D(.)使用。对于G,最小化损失完成DTI任务;对于D,最大化域分类对抗损失(损失越大,说明D无法判别,以达到域适配的目的)

如何实现最大化对抗损失呢?向负的梯度方向优化就是最大化目标函数。

三、实验

1、Experimental setting

三个公共DTI数据集(BindingDB、BioSNAP和Human)上评估

2、Evaluation strategies and metrics

随机分为训练集、验证集和测试集,比例为7:1:2。

跨域评估:基于聚类的对分割策略(clustering-based pair split strategy):首先使用单链接算法分别通过ECFP4指纹和伪氨基酸组成(PSC)聚类药物和蛋白质。之后,从聚类结果中随机选择60%的药物簇和60%的蛋白质簇,并将所选药物和蛋白质之间的所有药物-靶标对作为源域数据。其余簇中药物和蛋白质之间的所有对都被认为是靶域数据。

评估使用AUROC、AUPRC

3、In-domain performance comparison(没有CDAN)

冷对分割策略保证了在训练过程中不会观察到所有的测试药物和蛋白质,从而使得对测试数据的预测不能仅仅依赖于已知药物或蛋白质的特征。所有模型的性能都有明显的下降,特别是SVM和RF,在其他最先进的深度学习基线上,DrugBAN仍然取得了最好的性能

4、Cross-domain performance comparison(+CDAN模块)

训练测试数据有不同的分布,RF在BindingDB数据集上取得了良好的性能,甚至持续优于其他深度学习基线(DeepConv, GraphDTA和MolTrans)

5、Ablation study

以探讨双线性注意和域适应模块对DrugBAN的影响:

将DrugBAN中的双线性注意替换为one-side attention,生成两种变体。

研究了两种变体:带有域对抗神经网络(DANN)的DrugBAN(即DrugBANDANN)和带有CDAN的MolTrans(即MolTransCDAN)

6、Interpretability with bilinear attention visualization

利用双线性注意图的组成部分,可视化每个子结构对最终预测结果的贡献,使分子水平的洞察和解释对药物设计工作至关重要。研究来自蛋白质数据库(PDB)的共结晶配体的前三个预测(PDB id: 6QL2,5W8L和4N6H)

可视化结果如图4a所示,并附有相应x射线结构产生的配体-蛋白质相互作用图。对于每个分子,我们将双线性注意力图中前20%的加权原子涂成橙色。

尽管许多被预测可能参与配体结合的氨基酸残基实际上距离各自的化合物很远,但形成结合位点的一些氨基酸残基被正确预测(图4b)。例如,在6QL2复合物中,突出显示了以下残基:His94, His96, Thr200, Pro201, Pro202, Leu203, Val207和Trp209。其中,只有His94与乙氧唑胺形成特异性相互作用。在5W8L中,没有一个构成配体-蛋白结合位点的残基被突出显示。然而,在4N6H中,在结合位点内有几个正确预测的残基:Lys214、Val217、Leu300、Cys303、Ile304、Gly307和Tyr308。不幸的是,没有任何残基参与与配体的特定相互作用。

最近从100万个物种中生成了20亿个蛋白质3D结构预测。这一进展为利用3D结构信息进行基于化学基因组学的DTI预测打开了大门。(有计算资源,这就是新方向,没有计算资源,图个乐)

相关文章:

Nat. Mach. Intell 2023 | DrugBAN+:域自适应的可解释双线性插值网络改进药物-靶标预测(DTI)

DrugBAN:Interpretable bilinear attention network with domain adaptation improves drug–target prediction 论文:Interpretable bilinear attention network with domain adaptation improves drug–target prediction | Nature Machine Intellige…...

org.springframework.web.reactive.function.server.ServerResponse设置响应头

记录一下 String host serverRequest.uri().getHost();Consumer<HttpHeaders> headersConsumer consumer -> {consumer.setAccessControlAllowOrigin(host);consumer.setAccessControlAllowCredentials(true);consumer.set("Access-Control-Allow-Headers"…...

高频面试题:如何分别用三种姿势实现三个线程交替打印0到100

最近面试遇到的一道题&#xff0c;需要三个线程交替打印0-100&#xff0c;当时对多线程并不是很熟悉因此没怎么写出来&#xff0c;网上搜了之后得到现 synchronized wait/notifyAll 实现思路&#xff1a;判断当前打印数字和线程数的取余&#xff0c;不等于当前线程则处于等待…...

【git】Idea撤回本地分支、或远程分支提交记录的各种实际场景操作步骤

文章目录 idea撤回本地分支、远程分支场景操作集合场景1&#xff1a;要撤回最后一次本地分支的提交实现效果&#xff1a;操作步骤&#xff1a; 场景2&#xff1a;要撤回最后一次远程分支的提交有撤销记录的&#xff1a;实现效果&#xff1a;操作步骤&#xff1a; 无撤销记录的&…...

FPGA SPI 驱动程序

1.引言 此驱动程序已经完成很久了&#xff0c;花了2个星期的时间&#xff0c;主要是提升程序运行的效率。最近整理文件的时候又看到了&#xff0c;记录一下。 2.程序框架分解 module adc7254_Ctrl(input sys_clk, //system clkc 50Minput re…...

【实战】十一、看板页面及任务组页面开发(五) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(二十七)

文章目录 一、项目起航&#xff1a;项目初始化与配置二、React 与 Hook 应用&#xff1a;实现项目列表三、TS 应用&#xff1a;JS神助攻 - 强类型四、JWT、用户认证与异步请求五、CSS 其实很简单 - 用 CSS-in-JS 添加样式六、用户体验优化 - 加载中和错误状态处理七、Hook&…...

mac m1 docker 安装kafka和zookeeper

获取本地ip地址 ifconfig en0 192.168.0.105. 下面的ip都会使用到 1、拉取镜像 docker pull wurstmeister/zookeeper docker pull wurstmeister/kafka 2、启动容器 启动 zookeeper docker run -d --name zookeeper -p 2181:2181 映射 3、 启动 kafka 注意&#xff…...

宏观经济和风电预测误差分析(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

GO学习之 搜索引擎(ElasticSearch)

GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 10、GO学习之 网络通信(Net/Htt…...

Sentinel —实时监控

Sentinel 提供对所有资源的实时监控。如果需要实时监控&#xff0c;客户端需引入以下依赖&#xff08;以 Maven 为例&#xff09;&#xff1a; <dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-transport-simple-http</artif…...

接口优化通用方案

目录 批量异步、回调缓存预取池化并行锁粒度索引大事务海量数据 批量 批量思想&#xff1a;批量操作数据库 优化前&#xff1a; //for循环单笔入库 for(TransDetail detail:transDetailList){ insert(detail); } 优化后&#xff1a; batchInsert(transDetailList); 异步、回…...

用Visual Studio 2022的.map文件来查看C++变量在内存中的布局情况

先看几个实例 代码1 #include <iostream> int data_arr[32768]; int main() {data_arr[1] 11;std::cout<<"data_arr[1]: " << data_arr[1] << std::endl;return data_arr[1]; } 上述代码在Win10 X64&#xff0c;MSVC Release模式下编译&…...

使用代理突破浏览器IP限制

一、实验目的: 主要时了解代理服务器的概念&#xff0c;同时如何突破浏览器IP限制 二、预备知识&#xff1a; 代理服务器英文全称是Proxy Server&#xff0c;其功能就是代理网络用户去取得网络信息。形象的说&#xff1a;它是网络信息的中转站&#xff0c;特别是它具有一个cac…...

HuggingFace中的 Files and versions 如何优雅下载到本地?(Python requests,tqdm)

前言 在使用huggingface把玩各种大模型时&#xff0c;如果选择从远程加载模型&#xff0c;这个过程可能因为网络问题而非常耗时甚至直接失败&#xff0c;所以把模型、分词器等相关文件下载到本地&#xff0c;再直接从本地加载就成了不可回避的流程。 在进入具体版本的模型后&…...

三、原型模式

一、什么是原型模式 原型&#xff08;Prototype&#xff09;模式的定义如下&#xff1a;用一个已经创建的实例作为原型&#xff0c;通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里&#xff0c;原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效&a…...

transformer实现词性标注

1、self-attention 1.1、self-attention结构图 上图是 Self-Attention 的结构&#xff0c;在计算的时候需要用到矩阵 Q(查询), K(键值), V(值)。在实际中&#xff0c;Self-Attention 接收的是输入(单词的表示向量 x组成的矩阵 X) 或者上一个 Encoder block 的输出。而 Q, K, V…...

Java中异或操作和OTP算法

最近在研究加密算法&#xff0c;发现异或操作在加密算法中用途特别广&#xff0c;也特别好用。下面以Java语言为例&#xff0c;简单记录一下异或操作&#xff0c;以及在算法中的使用&#xff0c;包括常用的OTP算法。 一&#xff0c;异或操作特征 1&#xff0c; 相同出0&#…...

K8S最新版本集群部署(v1.28) + 容器引擎Docker部署(下)

温故知新 &#x1f4da;第三章 Kubernetes各组件部署&#x1f4d7;安装kubectl&#xff08;可直接跳转到安装kubeadm章节&#xff0c;直接全部安装了&#xff09;&#x1f4d5;下载kubectl安装包&#x1f4d5;执行kubectl安装&#x1f4d5;验证kubectl &#x1f4d7;安装kubead…...

女子垒球运动的发展·垒球1号位

女子垒球运动的发展 1. 女子垒球运动的起源和发展概述 女子垒球运动&#xff0c;诞生于19世纪末的美国&#xff0c;作为棒球运动的衍生品&#xff0c;经过百年的积淀&#xff0c;已在全球范围内广泛传播&#xff0c;形成了丰富的赛事文化。她的起源&#xff0c;可以追溯到19世…...

Debian 30 周年,生日快乐!

导读近日是 Debian 日&#xff0c;也是由伊恩-默多克&#xff08;Ian Murdock&#xff09;创立的 Debian GNU/Linux 通用操作系统和社区支持的 Debian 项目 30 周年纪念日。 不管你信不信&#xff0c;从已故的伊恩-默多克于 1993 年 8 月 16 日宣布成立 Debian 项目&#xff0c…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...