AlphaFold的原理及解读

1、背景

蛋白质是生物体内一类重要的生物大分子,其结构复杂多样,蛋白质的结构对于理解其功能和参与的生物学过程具有重要意义。从生物学角度上看,蛋白质的结构可以分为四个层次:初级结构、二级结构、三级结构和四级结构。

  1. 初级结构:初级结构是蛋白质的氨基酸序列,即蛋白质由多个氨基酸按照特定的顺序连接而成。氨基酸是蛋白质的基本组成单位,共有20种常见氨基酸,它们的不同排列形成了蛋白质的初级结构。

  2. 二级结构:二级结构是蛋白质中局部区域的空间排列方式。常见的二级结构包括α-螺旋和β-折叠。α-螺旋是由多个氨基酸沿着螺旋状排列而成,而β-折叠是由氨基酸链的不同区域之间的相互作用形成的折叠结构。

  3. 三级结构:三级结构是整个蛋白质分子的空间结构。这个结构由蛋白质的二级结构在整个分子中的排列和折叠所决定。各种相互作用力,如氢键、离子键、范德华力和疏水效应等,参与了蛋白质分子的三级结构的稳定。

  4. 四级结构:四级结构是由多个蛋白质分子相互组合而成的复合体,通常称为蛋白质的多聚体。多个蛋白质分子通过各种力和作用结合在一起,形成功能更为复杂的生物大分子。

其中初级结构一般可以通过Edman降解法和质谱法进行确定,而二级结构及三级结构通常需要如X射线晶体学、电镜等高度专业的设备和技术来确定,其需要极高人工及金钱成本。而AlphaFold通过深度学习技术解决蛋白质的二级结构及三级结构的预测问题,极大地提高了蛋白质结构解析效率,因此也被认为是诺奖级跨时代的工作。

2、特征输入

前文我们提到,AlphaFold根据深度学习技术,通过输入蛋白质一级结构来解析二级结构及三级结构,而一级结构为一组蛋白质氨基酸序列,但是AlphaFold的特征并不只是输入蛋白质氨基酸序列,而包含了多种相关信息。

  • 单氨基酸序列target_feat$[r,f]$:其中f为21维氨基酸的one-hot向量(20种常见氨基酸+1种未知默认),r表示序列长度

  • 氨基酸序列标号residue_index$[r]$

  • 同类MSA特征msa_feat$[s_c,r,f_c]$:MSA特征主要表示同类特征,$s_c$表示同类的数量,r表示序列长度,$f_c$表示聚类特征长度

  • 非同类MSA特征extra_msa_feat$[s_e,r,f_e]$

  • 氨基酸序列交互特征template_pair_feat$[s_t,r,r,f_p]$:主要用于反映氨基酸序列中各氨基酸之间的位置关系特征

  • 氨基酸序列交互特征template_angle_feat$[s_t,r,f_a]$:主要用于反映氨基酸序列中各氨基酸本身残基的角度关系。

上述所有特征再经过一个特征预处理模块,得到最终融合的MSA representation特征及Pair representation特征进入后续的编解码过程。

3、模型输出

AlphaFold的输出包含了两个部分,一个是氨基酸本身的在三维空间的旋转方向关系一般通过3x3的矩阵来表示,另一个是氨基酸之间的空间关系可以用一个三维向量表示,因此根据数学关系,一个氨基酸在蛋白质结构中的旋转+空间位置关系也可以通过3+3的六维向量整体表示,由于刚体空间结构不变性,从空间某个指定位置开始,已知下一个氨基酸同上一个氨基酸的空间位置关系,就可以组成整个序列的空间结构,因此整体的蛋白质做旋转或者位移,不会对变换系数产生影响。

4、模型结构

AlphaFold的模型结构分为了两个部分,分别是Encoder模块和Decode模块,在Encoder模块主要是生成蛋白质的氨基酸序列的新特征表示,而Decode模块输出蛋白质中各氨基酸的相对的旋转+空间位置关系。

4.1 Encoder模块

4.1.1 行列门控attention模块

self-attention是一种高效的序列特征抽取器,而一般的attention组件只能支持二维向量,而AlphaFold通过两组attention模块分别抽取行列维向量叠加从而实现了三维的attention抽取器。

此外引入了一个门控组件,其通过一个简单的线性网络来控制行列信息的引入,添加该组件的一个可能原因是因为MSA是通过某种先验的聚类方法来生成的,不同蛋白质之间并不像语句具有较强的信息关系,因此通过门控来排除干扰信息是有必要的。

4.1.2 MSA Transition

MSA Transition模块类似于Transformer结构中的attention之后FC网络。

4.1.3 Outer product mean

该模块主要通过根据MSA特征来计算不同氨基酸之间的相关性特征,其会同通过template计算的初级的相关性特征进行融合,之后还会经过多层结构,得到更为深层次的氨基酸对之间的相关性特征表示。

4.1.4 三角乘法更新模块

如果说上面的Outer product模块建立了不同氨基酸之间的直接关系,通过三角乘法更新模块主要建立了两个氨基酸之间的间接关系,其通过了两个行列不同方向模块来建模两种不同的关系流向。

4.1.5 Pair行列门控attention模块

其同4.1.1 行列门控attention模块是类似的,是三维的attention模块实现

4.2 解码器

解码器中的主要结构为不动点注意力模块(IPA),对于下图所示的IPA模块,如果我们只看红色部分,其是一个典型的attention模块,IPA模块最大的特色是其整合了三部分的特征:

  • 目标蛋白质的氨基酸特征表示序列

  • 氨基酸对间的特征表示序列

  • 叠加空间位置变换后的氨基酸特征

其中第三部分叠加空间位置变换后的氨基酸特征(绿色部分)也是为什么被称为 IPA (Invariant point attention)的原因,因此理论上可以不需要该部分直接输出结果。

因为模型需要输出是同整体全局变换无关的氨基酸之间的相对关系,而如果直接生成时,整体全局变换可能会影响到输出结果。因此其考虑到两个基本几何变换原理。

  • 计算两个点之间的L2距离时,对点坐标做同样的全局变换后L2距离不变。

  • 在做多次空间变换时,全局变换和全局逆变换之间的作用可以抵消。

通过每个模块产出的空间位置变化,进行重复的加强叠加,最终可以消除全局变换的影响,有点类似于ResNet的效果

5、模型训练

5.1 损失函数

主要损失函数为FAPE损失(Frame aligned point erro),实际是衡量氨基酸的预测位置和真实位置之间MSE损失。

5.2 训练方法

  • 自蒸馏学习:先在PDB有label的数据集上训练一个模型,然后去预测一个更大的没有label的数据集,将其中预测比较置信的数据筛选出来,和之前有label的数据拼成一个更大的数据集,再重新训练一个模型,这样循环训练多次,达到充分利用数据的目的。在扩充没有label的数据集的时候,会有一些加噪声的细节,例如对预测的label做一些扰动。

  • 自监督学习:类Bert训练,在MSA序列特征随机屏蔽mask或变换一些氨基酸元素,然后像Bert一样去预测这些元素,在训练的时候加上这个任务会对整个序列建模的效果起到更好的作用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

企业如何保障跨境金融业务中的数据安全传输?

随着全球化的不断深入,跨境金融业务日益频繁,然而在这些业务中,数据的安全传输一直是企业面临的重大挑战。跨境业务数据传输可能会遇到多种困难,如网络攻击、数据泄露、通信故障等。因此,企业需要采取有效的措施来确保…

【Mybatis系列】Mybatis之TypeHandler入门

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【C语言】深入理解数据类型转换与运算

文章目录 1.数据类型转换在分析源程序之前,我们需要了解几个基本概念:现在来分析源程序中的变量及其对应的十进制真值以及扩展操作方式: 1.1. short si -32768;1.2. unsigned short usi si;1.3. int i si;1.4. unsigned ui usi; 2&#x…

U-Net及其变体在医学图像分割中的应用研究综述

U-Net及其变体在医学图像分割中的应用研究综述 论文来自:中国生物医学工程学报 2022 摘 要: 医学图像分割可以为临床诊疗和病理学研究提供可靠的依据,并能辅助医生对病人的病情做出准确的判断。 基于深度学习的分割网络的出现解决了传统自动分…

Git——Git应用入门

将会介绍以下知识: 搭建Git环境和创建Git版本库(init、clone)。文件添加、状态检查、创建注释和查看历史记录。与其他Git版本库交互(pull、push)。解决合并冲突。创建分支列表、列表切换和合并。创建标签。 1、版本控…

sqli-labs靶场详解(less17-less22)

目录 less-17 less-18 less-19 less-20 less-21 less-22 less-17 修改密码关卡 服务器后端 账号密码都存在数据库中 使用UPDATE进行修改密码 尝试username处 尝试好久尝试不出来应该是对用户名进行了过滤 于是对password进行注入 判断注入点 passwdadmin 报错&#xff1a…

vue3中的customRef创建一个自定义的 ref对象

customRef 创建一个自定义的 ref&#xff0c;并对其依赖项跟踪和更新触发进行显式控制 小案例: 自定义 ref 实现 debounce <template><div style"font-size: 14px;"><input v-model"text" placeholder"搜索关键字"/><…

智能优化算法应用:基于郊狼算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于郊狼算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于郊狼算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.郊狼算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

深思:C与C++相互调用问题

背景 上周&#xff0c;偶然看到同事愁眉苦脸的样子&#xff0c;便善意咨询了下发生了什么。简单沟通下&#xff0c;才知道他遇到了一个工程编译的问题&#xff0c;一直无法编译通过&#xff0c;困扰了他快一天时间。出于个人的求知欲和知识的渴望&#xff0c;我便主动与他一同分…

PHP中关于func_get_args()方法

首先呢这个函数出现的是比较早的,大致应该是PHP4出现的, func_get_args — 返回一个包含函数参数列表的数组 说明 func_get_args(): array 获取函数参数列表的数组。 该函数可以配合 func_get_arg() 和 func_num_args() 一起使用&#xff0c;从而使得用户自定义函数可以接…

基于C#实现块状链表

在数据结构的世界里&#xff0c;我们会认识各种各样的数据结构&#xff0c;每一种数据结构都能解决相应领域的问题&#xff0c;当然每个数据结构&#xff0c;有他的优点&#xff0c;必然就有它的缺点&#xff0c;那么如何创造一种数据结构来将某两种数据结构进行扬长避短&#…

【数据结构/C++】栈和队列_循环队列

牺牲一个存储单元来判断队满。 #include<iostream> using namespace std; // 循环队列 #define MaxSize 10 typedef int ElemType; typedef struct {ElemType data[MaxSize];int front, rear; } SqQueue; // 初始化队列 void InitQueue(SqQueue &Q) {// 判断队空 Q.…

微服务知识大杂烩

1.什么是微服务? 微服务(Microservices)是一种软件架构风格,将一个大型应用程序划分为一组小型、自治且松耦合的服务。每个微服务负责执行特定的业务功能,并通过轻量级通信机制(如HTTP)相互协作。每个微服务可以独立开发、部署和扩展,使得应用程序更加灵活、可伸缩和可…

Milvus入门手册1.0

一、window环境搭建&#xff08;单机&#xff09; 1、docker安装 略 2、milvus安装 参考文档&#xff1a;https://milvus.io/docs/install_standalone-docker.md tips: &#xff08;1&#xff09;compose.yaml下载比较慢&#xff0c;可以在网络上找一份。 &#xff08;2&…

2023-11-26 LeetCode每日一题(统计子串中的唯一字符)

2023-11-26每日一题 一、题目编号 828. 统计子串中的唯一字符二、题目链接 点击跳转到题目位置 三、题目描述 我们定义了一个函数 countUniqueChars(s) 来统计字符串 s 中的唯一字符&#xff0c;并返回唯一字符的个数。 例如&#xff1a;s “LEETCODE” &#xff0c;则其…

Python字典合并

合并两个有部分key相同的字典&#xff0c;相同key保留两个字典中对应key的较大值。 (笔记模板由python脚本于2023年11月27日 18:12:15创建&#xff0c;本篇笔记适合熟悉Python字典的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Fr…

通过预定义颜色查找表上色_vtkLookupTable_vtkColorTransferFunction

开发环境&#xff1a; Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example demo解决问题&#xff1a;通过颜色查找表给vtkPlaneSource上色 第一种技术是使用预定义颜色的查找表vtkLookupTable。这包括创建一个查找表并为其分配一组已命名的…

攻关眼科难题!第一届爱尔眼科-四川大学科研基金完成立项

当前我国眼科患者数量不断增长&#xff0c;人民群众对高质量的眼健康的需要不断攀升&#xff0c;而目前国内眼科医疗资源远不能满足需求&#xff0c;疑难眼病诊疗能力及学术科研体系建设仍有较大进步空间。基于此&#xff0c;爱尔眼科携手四川大学共同设立爱尔眼科-四川大学科研…

js moment时间范围拿到中间间隔时间

2023.11.27今天我学习了如何对只返回的开始时间和结束时间做处理&#xff0c;比如后端返回了&#xff1a; [time:{start:202301,end:202311}] 我们需要把中间的间隔渲染出来。 [202301,202302,202303,202304,202305,202306,202307,202308,202309,202310,202311] 利用moment…

搭建你自己的网盘-个人云存储的终极解决方案-nextcloud AIO(二)

今天接着上篇&#xff0c;我们继续来玩nextcloud AIO. 当我们看到这个页面的时候&#xff0c;则证明AIO已经安装好了&#xff0c;登录账号和密码在图上已经标注了。点击open your nextcloud 即可跳转到我们的域名的登录页。 输入用户名和密码后登录即可。 打开前台页面&#x…