ICLR2023 | 基于几何结构预训练的蛋白质表示学习

2024-02-12 05:40

本文主要是介绍ICLR2023 | 基于几何结构预训练的蛋白质表示学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天为大家介绍的是来自唐建老师团队的一篇关于蛋白质预训练的论文。学习有效的蛋白质表示对于预测蛋白质功能或结构等生物学任务至关重要。现有的方法通常在大量未标记的氨基酸序列上预训练蛋白质语言模型,然后在下游任务中使用一些标记数据微调模型。尽管基于序列的方法有效,但是基于蛋白质结构的预训练还未被探索,因为已知的蛋白质结构数量较少。为此,作者提出了根据蛋白质的三维结构预训练蛋白质表示的方法。在功能预测等任务上的实验结果表明,在使用了更少的预训练数据的前提下,文中提出的预训练方法表现突出。

0c64d526e0f20026d7fbb8dd542a8338.png

蛋白质是细胞功能的执行单位,与众多领域息息相关。它们由一系列氨基酸线性链组成,可折叠成特定的构象。由于低成本测序技术的出现,近年来发现了大量的蛋白质序列。然而,对新蛋白质序列的功能注释仍然昂贵而耗时,与其他机器学习领域相比,蛋白质结构的数据集规模要小几个数量级。为了填补这一差距,最近的研究利用大量未标记的蛋白质序列数据来学习蛋白质的有效表示,然而这些方法没有利用可用的蛋白质结构信息,而蛋白质结构已被证明是蛋白质功能的决定因素。

由于最近深度学习为基础的高精度蛋白质结构预测方法的进展,现在可以高效地预测大量蛋白质序列的结构,预测结果也具有合理的可信度。基于此,作者开发了一个基于蛋白质结构的预训练蛋白质编码器,能够推广到各种属性预测任务。作者提出了一种简单而有效的基于结构的编码器,称为GearNet,该网络通过添加不同类型的残基边信息来编码蛋白质的空间信息,然后在蛋白质残基图上执行消息传递。受Evoformer中三角形关注设计的启发,作者提出了一种稀疏的边缘消息传递机制来增强蛋白质结构编码器,这是首次尝试在GNN中引入边消息传递来进行蛋白质结构编码。

基于结构的蛋白质编码器

作者将蛋白质的结构表示为残基级别的关系图G=(V, E, R),其中V和E分别表示节点和边的集合,而R是边的类型集合。图中有三种不同类型的有向边:顺序边、半径边和K最近邻边。其中,顺序边将根据两个端节点之间的相对顺序距离{−2, −1, 0, 1, 2}进一步分为5种不同类型的边,作者仅在顺序距离为2以内的节点之间添加顺序边。这些边的类型反映了不同的几何属性,这些属性共同构成了对蛋白质的全面特征表示。

构建完图网络之后,作者采用卷积神经网络GNN对蛋白质结构进行特征提取。除了传统的以氨基酸为节点的图网络以外(GearNet),作者还提出了一种基于边的图网络。在分子表示学习的工作中,许多几何编码器都受益于明确地建模边之间的相互作用。提出了一种带有边消息传递层的GearNet变体,称为GearNet-Edge。其主要目的是建模残基与其他顺序或空间相邻残基的不同相互作用之间的依赖关系。在此图网络中,每个节点对应于原始图中的一条边。倘若在原始图中两条边连接在同一个残基上,那么这两条边代表的节点将在GearNet-Edge网络中相连,相连边的类型由对应的两条边在原始图上的夹角决定。

基于对比学习的预训练方法

a20d3f2ed33e32a33e5238762cc46b3e.png

对于给定蛋白质图G,作者考虑构建两种不同的采样方案来构造视图。第一种是基于子序列裁剪的视图。此视图随机采样一个左侧残基l和一个右侧残基r,并选取所有在l和r之间的残基。这个采样方案旨在捕捉不同蛋白质中重复出现并指示它们功能的连续蛋白质子序列。然而,简单地采样蛋白质子序列不能充分利用蛋白质数据中的3D结构信息。因此,作者进一步引入了一个基于子空间裁剪方案的视图,用以发现与空间相关的结构基元,它随机采样一个残基p作为中心,并选择所有在预定义半径d内的残基。随后采用对比学习,对两种视图的特征进行比较学习,流程如上图所示。

实验结果

ac07d5f94ffd9e8efc475fda76867a64.png

模型首先使用AlphaFold蛋白质结构数据库进行预训练,随后在四项任务上进行微调。四项任务分别为:Enzyme Commission (EC) number prediction,Gene Ontology (GO) term prediction,Fold classification,Reaction classification。实验结果如上表格所示,基于实验结果,GearNet相比于以前的工作有三大优势:

  1. 在没有预训练的情况下,GearNet的性能可以在大部分数据集上优于其他模型。

  2. 基于结构的蛋白质编码器受益于使用未标记结构进行预训练。

    将上表中第三个块和最后两个块的结果进行比较,可以发现所有的预训练方法都比从头开始训练的模型表现出了显著的提升。

    在这些方法中,多视图对比法在8个数据集中有7个表现最好,并在EC、GO-BP、GO-MF、Fold和Reaction任务中取得了最先进的结果。

    这证明了作者预训练策略的有效性。

  3. 基于结构的编码器的表现优于基于序列的编码器,后者使用了更多的数据进行预训练。

    最后三个实验块展示了基于序列和基于结构的预训练模型的比较。

    需要注意的是,作者的模型是在不到100万个结构的数据集上进行预训练的,而所有基于序列的预训练基线都是在百万或十亿级别的序列数据库上进行预训练的。

结论

文章提出了一种基于蛋白质残基图进行关系消息传递的简单而有效的结构化编码器,引入了一种新的边消息传递机制来明确边之间的相互作用。通过多个基准任务的全面实验验证,文章中的模型在从头开始训练时效果优于以前的编码器,并且在使用更少的数据进行预训练的情况下实现堪比甚至超越最先进的基线方法的效果。作者认为此项研究是采用自监督学习方法进行蛋白质结构理解的重要一步。

参考资料

Zhang, Zuobai, et al. "Protein representation learning by geometric structure pretraining." arXiv preprint arXiv:2203.06125 (2022).

代码

https://github.com/DeepGraphLearning/GearNet

这篇关于ICLR2023 | 基于几何结构预训练的蛋白质表示学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/701779

相关文章

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据

《mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据》文章主要介绍了如何从.frm和.ibd文件恢复MySQLInnoDB表结构和数据,需要的朋友可以参... 目录一、恢复表结构二、恢复表数据补充方法一、恢复表结构(从 .frm 文件)方法 1:使用 mysq

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

结构体和联合体的区别及说明

《结构体和联合体的区别及说明》文章主要介绍了C语言中的结构体和联合体,结构体是一种自定义的复合数据类型,可以包含多个成员,每个成员可以是不同的数据类型,联合体是一种特殊的数据结构,可以在内存中共享同一... 目录结构体和联合体的区别1. 结构体(Struct)2. 联合体(Union)3. 联合体与结构体的

PostgreSQL如何查询表结构和索引信息

《PostgreSQL如何查询表结构和索引信息》文章介绍了在PostgreSQL中查询表结构和索引信息的几种方法,包括使用`d`元命令、系统数据字典查询以及使用可视化工具DBeaver... 目录前言使用\d元命令查看表字段信息和索引信息通过系统数据字典查询表结构通过系统数据字典查询索引信息查询所有的表名可