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

-
初级结构:初级结构是蛋白质的氨基酸序列,即蛋白质由多个氨基酸按照特定的顺序连接而成。氨基酸是蛋白质的基本组成单位,共有20种常见氨基酸,它们的不同排列形成了蛋白质的初级结构。
-
二级结构:二级结构是蛋白质中局部区域的空间排列方式。常见的二级结构包括α-螺旋和β-折叠。α-螺旋是由多个氨基酸沿着螺旋状排列而成,而β-折叠是由氨基酸链的不同区域之间的相互作用形成的折叠结构。
-
三级结构:三级结构是整个蛋白质分子的空间结构。这个结构由蛋白质的二级结构在整个分子中的排列和折叠所决定。各种相互作用力,如氢键、离子键、范德华力和疏水效应等,参与了蛋白质分子的三级结构的稳定。
-
四级结构:四级结构是由多个蛋白质分子相互组合而成的复合体,通常称为蛋白质的多聚体。多个蛋白质分子通过各种力和作用结合在一起,形成功能更为复杂的生物大分子。
其中初级结构一般可以通过Edman降解法和质谱法进行确定,而二级结构及三级结构通常需要如X射线晶体学、电镜等高度专业的设备和技术来确定,其需要极高人工及金钱成本。而AlphaFold通过深度学习技术解决蛋白质的二级结构及三级结构的预测问题,极大地提高了蛋白质结构解析效率,因此也被认为是诺奖级跨时代的工作。
2、特征输入
前文我们提到,AlphaFold根据深度学习技术,通过输入蛋白质一级结构来解析二级结构及三级结构,而一级结构为一组蛋白质氨基酸序列,但是AlphaFold的特征并不只是输入蛋白质氨基酸序列,而包含了多种相关信息。
-
单氨基酸序列target_feat
:其中f为21维氨基酸的one-hot向量(20种常见氨基酸+1种未知默认),r表示序列长度
-
氨基酸序列标号residue_index
:
-
同类MSA特征msa_feat
:MSA特征主要表示同类特征,
表示同类的数量,r表示序列长度,
表示聚类特征长度
-
非同类MSA特征extra_msa_feat
-
氨基酸序列交互特征template_pair_feat
:主要用于反映氨基酸序列中各氨基酸之间的位置关系特征
-
氨基酸序列交互特征template_angle_feat
:主要用于反映氨基酸序列中各氨基酸本身残基的角度关系。
上述所有特征再经过一个特征预处理模块,得到最终融合的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一样去预测这些元素,在训练的时候加上这个任务会对整个序列建模的效果起到更好的作用。
相关文章:
AlphaFold的原理及解读
1、背景 蛋白质是生物体内一类重要的生物大分子,其结构复杂多样,蛋白质的结构对于理解其功能和参与的生物学过程具有重要意义。从生物学角度上看,蛋白质的结构可以分为四个层次:初级结构、二级结构、三级结构和四级结构。 初级结…...
【ChatGLM3-6B】Docker下快速部署
【ChatGLM2-6B】小白入门及Docker下部署 前提下载安装包网盘地址 开始安装加载镜像启动镜像进入容器启动模型交互页面访问页面地址 前提 安装好了docker安装好了NVIDIA显卡16G 下载安装包 网盘地址 这里因为网盘上传文件有大小限制,所以使用了分卷压缩的方式…...
两部手机数据传输后备忘录不见了怎么回事
想必很多人都遇到过,当两部手机进行备忘录数据传输后,突然发现备忘录不见了,这让人不禁着急上火,我也曾经遇到过这种事情导致很多重要的内容都丢失了。 一般出现这种情况可能是因为,两部手机使用的是不同的云服务&…...
【Unity入门】LayerMask小结
LayerMask常用的几种方法 LayerMask.GetMask 根据 层名称 获取其层遮罩值 遮罩值 2^层索引 假设 UserLayerA 和 UserLayerB 是第十层和第十一层。 这两个层会具有 User Layer 值 10 和 11。若要获取其层遮罩值, 可以将其名称传入 GetMask。参数可以是 其名称的列…...
mysql按年、季度、月,统计
以下是按年、按季度和按月统计SQL查询语句: 按年统计: SELECTds.checker,YEAR(ds.create_time) AS settleYear,SUM(ds.quantity) AS quantity,SUM(ds.approval_price) AS approvalPrice FROMdata_settle ds WHEREds.delete_flag 0AND ds.approval_sta…...
Python的换行和转义:深入理解代码排版与字符串处理
更多Python学习内容:ipengtao.com 大家好,我是涛哥,今天为大家分享 Python的换行和转义:深入理解代码排版与字符串处理,全文2700字,阅读大约8分钟。 在Python编程中,正确使用换行和转义字符是保…...
dart多线程双向通信的案例----【小学4年级课程】
下面是运行后的打印顺序 I/flutter (20170): 上班 I/flutter (20170): 这里是校长室:main I/flutter (20170): 这里是饭堂:fantang1 I/flutter (20170): 这里是收发室--检查小孩发回去给他妈妈的信息是:我是秘书的儿子,我来到在校长室了。校长今晚想吃羊…...
每日一练:简易计算器
1. 题目 设计实现一个简易的计算器,可以进行加减乘除的计算。可以考虑通过GUI和命令行输入等方式实现。 2. 设计思路 创建一个简单的用户界面,可以使用 Python 的 Tkinter模块。在界面上放置按钮,每个按钮代表一个数字、运算符或其他功能。…...
Jmeter和Testlink自动化测试框架研究与实施
摘 要 目前基于Jmeter的接口自动化测试框架,大多只实现脚本维护和自动调度,无法与Testlink进行互通,实现测试方案与自动化实施流程连接,本文基于Testlink、Jmeter、Jenkins实现:通过Testlink统一维护接口自动化测试用…...
MethodArgumentNotValidException 与 ConstraintViolationException
MethodArgumentNotValidException 和ConstraintViolationException 都是用于处理参数校验异常的异常类,但它们在不同的上下文中使用。 1. MethodArgumentNotValidException: - MethodArgumentNotValidException 是在 Spring MVC 或 Spring Boot 中处…...
【数学】旋转矩阵
参考链接 OpenGL from OpenGL.GL import * from OpenGL.GLUT import * from math import * import numpy as np def draw_axes():glClear(GL_COLOR_BUFFER_BIT)# 绘制坐标轴glColor3f(1.0, 1.0, 1.0) # 设置坐标轴颜色为白色glBegin(GL_LINES)glVertex2f(-1.0, 0.0) # x 轴g…...
Python与设计模式--中介者模式
23种计模式之 前言 (5)单例模式、工厂模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式、(7)代理模式、装饰器模式、适配器模式、门面模式、组合模式、享元模式、桥梁模式、(11)策略模式、责任链模式、命令模式、中介者模…...
后台管理系统开源项目
最近项目没有什么事做,就自己整理,修改了一些vue2,react的后台管理系统项目,方便以后有需要可以直接提取,当然也方便了大家 vue2技术栈 lyl-vueProjectAdmin: vue2后台管理系统 react技术栈 lyl-reactAdminProject:…...
电子印章管理系统:是什么、3个平台推荐
说到印章,相信看过近现代电视剧的人都见过,一般在订立合约时最常用到,双方在合约上加盖印鉴,即代表着合约的成立。 我小时候还见过我父亲的印章,只是随着时代的发展,印章因为不易携带,容易被盗…...
现货黄金区间交易的两个要点
在现货黄金市场中,我们常碰到横盘区间行情。有区间,就终究会出现突破,因为金价不可能缺乏方向而一直在区间内运行。那既然要突破,我们又应当如何应对和交易呢?下面我们就来讨论一下。 切忌在突破发生时马上跟随突破方向…...
安卓底部导航栏BottomNavigationView
目录 1. BottomNavigationView (1) 准备BottomNavigationView使用的菜单资源文件 (2) 准备颜色选择器 (3) BottomNavigationView控件设置 (4) 在Java代码中设置OnItemSelectedListener监听器 (5) 与Fragment配合 2. BottomTabBar 实现安卓底部导航栏,google为…...
rust每日一库 rand 生成随机数
文章目录 生成随机值生成随机数生成范围内随机数生成自定义类型随机值从一组字母数字字符创建随机密码从一组用户定义字符创建随机密码 总结 生成随机值 rust中官方并没有像以他语言一样,rust并没有官方并没有提供生成随机数的工具,所以我们要借助rand包…...
Unity SRP 管线【第三讲:URP 光照】
3.2.3 以前属于Shader部分,Shader部分不进行讲解。 这里只涉及Unity内部管线的设置问题。 文章目录 3.2.3 向GPU发送灯光数据设置光源数据设置主光源设置额外点光源 Shader中的数据 3.2.3 向GPU发送灯光数据 在UniversalRenderPipeline.cs > RenderSingleCamera…...
怎么更新BI报表数据?问我就对了
BI大数据分析工具上有大量的BI报表模板,这些模板都是一个个完整的BI报表,只需将数据源更换,立即就能用来分析我们自己的数据。那,BI报表的数据怎么更新?接下来就来说说这事。 目的:更新BI报表数据 工具&a…...
SpringBoot 入门学习
开发环境配置 JDK 1.8、Maven 3.8.8、 IDEA CE 2023.2 框架介绍 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
