BERT一个蛋白质-季军-英特尔创新大师杯冷冻电镜蛋白质结构建模大赛-paipai

server/2024/9/19 8:58:32/ 标签: bert, 人工智能, 算法

关联比赛:  “创新大师杯”冷冻电镜蛋白质结构建模大赛

解决方案

团队介绍

paipai队、取自 PAIN + AI,核心成员如我本人IvanaXu(IvanaXu · GitHub),从事于金融科技业,面向银行信用贷款的风控、运营场景。但我们团队先后打过很多比赛,其中跨领域居多,如天文、海洋,也非常有幸参加本次蛋白质结构建模大赛。我们将延续“他山之石,可以攻玉”的基本思想,这也将在后续方案中体现。

主要方案

01 赛题解析

截屏2022-03-25 09.55.17.png


金融场景下其实就是在追求精准定位问题,并以最小成本换取更大收益。同样的,从现有解析蛋白质结构的主流方法来看,能覆盖较多场景(如生物大分子、静动两态、蛋白质折叠等)且精度较高,但为此需要付出大量人力成本,甚至是在专业软件辅助下才能完成的人工操作。另外,由DeepMind研发的AlphaFold2却能高效几乎0人工输出蛋白质结构,当然这个代价是覆盖场景有限(如生物大分子易错)、局部精度高(需要强依赖于已知蛋白质结构/PDB)。据此我们提出的解决方案是,拥抱类似于AlphaFold2的AI预测技术但充分结合传统方法,或许是最大收益方案。
即复杂生物应用场景下,求一种高效、准确的蛋白质结构解析方法。
所以我们将解决方案聚焦到以下两点:
(1)仅从氨基酸序列出发的AI预测技术为主,通过已知蛋白质结构去做一些自衍生处理,尝试去摆脱对已知蛋白质结构高度依赖;
(2)当遇到已知蛋白质结构甚至是自衍生蛋白质结构都不能很好识别时,再来考虑结合冷冻电镜数据,作为预测结果的辅助性修正,毕竟获取冷冻电镜数据就已经投入了一定的成本;

02 算法设计

截屏2022-03-25 10.02.30.png


如示例2145这个氨基酸序列,我们看到前4位的MSSK、就是一个甲硫氨酸+两个丝氨酸+一个赖氨酸的序列,但我们将它转为以下文本处理:
第一步,将氨基酸序列-蛋白质结构作为一组X-Y对,即使用氨基酸序列预测蛋白质结构,并计划进行自衍生处理1:将衍生后的氨基酸序列-蛋白质结构对进行随机混淆打乱,这一步复赛阶段未实现,但后续我们做了一些尝试;
第二步,将氨基酸序列转化为文本序列,在这里会做自衍生处理2:将它切分为不同长度的文本序列,如左侧V2算法的第一步,将MSSKS每隔4个氨基酸就切分为MSSK、SSKS等等,同样的还会按照5、6不等的长度进行切分,最终使用4、5、6、8、10、12、15、18,分别代表了4、5、6长度段的1倍、2倍、3倍。从生物意义上就代表了一些短氨基酸序列。这种切分方法的优点是可以是因为把其充分序列化,那么蛋白质中的对称重复架构会在序列中特别突出,有点像121213这组数字,我们听一遍后,在脑海中对12、121、21这样的组合印象就很深刻;
第三步,文本处理:尝试提取序列之间的潜在关系,事实上可考虑引入谷歌提出的基于Transformers的双向编码语言模型BERT来解决,但BERT很重,考虑上述成本效益,在此简化应用TF-IDF来处理;
第四步,将处理后序列信息输入至预测模型,输出最接近蛋白质结构;

为进一步比较自衍生处理1、自衍生处理2、以及不同文本处理算法之间的差异,我们先后设计了V1、V2、V3三个算法版本:

  • V1,无自衍生处理1、无自衍生处理2,即MSSK序列会当作M、S、S、K四个单词组成的一句话,直接使用BM25文本模型进行预测;
  • V2,在V1基础上增加自衍生处理2,即MSSK序列会切分为如图MSSK、SSKS、等等单词组成的一句更长的话;

可以通过比较V1、V2来体现自衍生处理2带来的预测增益。

截屏2022-03-25 11.11.03.png

  • V3,会更充分考虑实际蛋白质结构预测中会遇到的问题,并根据本次比赛提供的E-HPC阿里云弹性高性能计算平台改进算法底层一些计算设计,如图:

(1)在高性能计算平台上应用CPU多核并发,能同时计算多个蛋白质,并将氨基酸序列计算转入稀疏矩阵存储 + TF-IDF限制某些高频率出现的简单序列,减少大量空值存储和无效计算,充分压缩氨基酸序列结果,避免内存错误;
(2)在V2的基础上调整BM25文本模型至TF-IDF+LR;
这就是复赛阶段的解决方案。
(3)另外,复赛后我们还在此基础上设计如左虚框部分的自衍生处理1,对算法拓展性做了一部分探索。
引入BERT中MLM/Masked Language Model即遮蔽语言模型的概念,其灵感来自于我们学英语很熟悉的完形填空,如我们通过线上会议XX了答辩,就会填写“参加”这个词。
这种概念其实类似于自衍生处理2,本质上是为了充分提取氨基酸序列的潜在关系,如前面提出的不同长度切分就为了获取一定的上下文信息,即氨基酸序列中S丝氨酸前后的氨基酸信息,但这种方式也仍然是单向或一个正向+一个反向这种假双向。反之MLM能更充分的解决这个问题,因为这个时候模型学到不是一个向量,而是**“一种学习能力”**。
TODO

  • 所以在AAAI2020的工作中,已经有论文提出K-BERT即知识图谱+BERT的概念,使用类似MLM的方式尝试进行知识发现。

同样的,可以使用这个概念来“知识发现”一些未知的蛋白质结构,进而打破上述对已知蛋白质结构的高度依赖。

以下我们来对照AlphaFold2,对比一下上述算法
 

截屏2022-03-25 11.57.51.png


以2148为例,我们也尝试使用了AlphaFold2:

  • 通过前两栏的RMSD、TM-score来看:

无疑是AlphaFold2最强,但对比V2、V1可以看到,在做了自衍生处理2即序列切分后,TM-score自0.19提升到了0.77,V2算法也就是初赛核心方案。另外,改进后的V3算法从个例来看相对接近于AlphaFold2。

  • 另外,由于我们在调研阶段从PDB中发现了远比训练数据更大的蛋白质,所以这里的long评估项即长氨基酸序列的兼容,AlphaFold2/V1/V2都不同程度地出现在长氨基酸序列计算时内存错误的情况。前面介绍过,V3在做了一些相关设计所以相对可控。且能在不需要GPU的情况下进一步兼容HPC高性能计算,尽管AlphaFold2也提出支持HPC,对此我们未深入体验。

接下来我们看一下可视化结果对比:
 

截屏2022-03-25 11.58.09.png


AlphaFold2已经接近严丝合缝,V1差异还比较大,但V2、V3已经有了相似的蛋白质结构雏形,未来可能可以进一步优化。

03 总结

截屏2022-03-25 12.15.11.png


1、直接转换为文本问题进行解决
事实上我们也发现其实这与Alphafold2的序列处理有类似的地方,但不同AI场景下2D 和3D transformers的发展,可能还可以进一步借鉴。但氨基酸序列的潜在关系我们还是交由更为简单的文本处理算法(TF-IDF)进行提取,这里考虑降低模型复杂性、提高应用效率。
如我们还没有提到的冷冻电镜图片处理,CVPR2022的工作中已经提出了Point-BERT基于掩码建模的3D点云自注意力模型,实现将类似于冷冻电镜数据这种3D结构表达为一个“词汇”集合。跟我们上述将氨基酸序列转化为文本处理的逻辑类似,我们的解决方案也提出了类似的思想,先用氨基酸序列进行文本预测,再对预测不佳的部分根据冷冻电镜数据也进行文本预测,作为辅助性修正,但这部分还没有来得及完成。
2、避免高度依赖已知蛋白质结构
为此前面我们设计了自衍生处理1、自衍生处理2,并通过V1/V2比较证明了自衍生处理2的有效性。也正是引入自衍生处理1,通过V2/V3比较看到了突破这种蛋白质结构依赖带来的额外效益。

相关参考

概念

  • 清华大学结构生物学高精尖创新中心

    https://ww.icsb.tsinghua.edu.cn

  • Alphafold2

    alphafold.ebi.ac.uk

截屏2022-02-11 08.00.50.png

  • 一键构建云上高可用蛋白质结构预测平台(一)

    基于Alphafold2一键构建云上高可用蛋白质结构预测平台 | 亚马逊AWS官方博客

  • PDB,全称Protein Data Bank,是目前最主要的收集蛋白质三维结构的数据库

文章

  • 当AI“进击”蛋白质结构预测
  • 颜宁等点评:AI精准预测蛋白质结构,结构生物学何去何从?
  • 颜宁点评AlphaFold2 + 外行买家秀:蛋白结构预测神器初体验

论文

  • CN104951669A - 一种用于蛋白质结构预测的距离谱构建方法 - Google Patents

image.png

image.png

  • Highly accurate protein structure prediction with AlphaFold

image.png


详见https://github.com/IvanaXu/TianChiProj/tree/master/ProteinStructureModeling
BERT一个蛋白质-季军-英特尔“创新大师杯”冷冻电镜蛋白质结构建模大赛-IvanaXu

查看更多内容,欢迎访问天池技术圈官方地址:BERT一个蛋白质-季军-英特尔创新大师杯冷冻电镜蛋白质结构建模大赛-paipai_天池技术圈-阿里云天池

http://www.ppmy.cn/server/29043.html

相关文章

45. UE5 RPG 使用元属性(Meta Attributes)以及使用Set by Caller修改伤害

在RPG游戏中,我们是不会直接修改生命值的属性,是因为在修改角色属性时,需要获取角色的属性并进行复杂的计算,所以,我们正常情况下使用元属性(Meta Attributes)作为计算的中间的媒。在服务器上先…

2024年五一数学建模C题完整解题思路代码

2024年第二十一届五一数学建模竞赛题目 C题 煤矿深部开采冲击地压危险预测 煤炭是中国的主要能源和重要的工业原料。然而,随着开采深度的增加,地应力增大,井下煤岩动力灾害风险越来越大,严重影响着煤矿的安全高效开采。在各类深…

Quartz.Net技术教学:构建高效的任务调度系统

Quartz.Net技术教学:构建高效的任务调度系统 对于定时任务、后台数据处理等相信也是大家经常遇到的需求啦。为了满足这些需求,Quartz.Net作为一款功能强大的任务调度框架,受到了广大开发者的青睐。本文就从Quartz.Net的基本概念、核心组件、…

西电大数据安全与隐私(现代密码学基础技能)

西电大数据安全与隐私(现代密码学基础技能) 大数据安全与隐私这门课的lab1,要求如下图: 采用的方案是RSA和AES相结合, 利用RSA来加密传输AES的密钥, 用AES的密钥来加密数据. 如果使用RSA加密数据, 虽然安全性会更高, 但效率低. AES加解密效率高, 但安全性会差一些, 所以采用RS…

LangChain:1. Prompt基本使用

1. Prompt基本使用 from langchain_core.prompts import PromptTemplate from langchain_core.prompts import ChatPromptTemplate这里有两种prompt,其对应两种形式:PromptTemplate 和 ChatPromptTemplate 从某种意义来说,前者是一个通用形…

【C/C++基础实战】:用C++实现通讯录管理系统——含完整源码

文章目录 通讯录管理系统一、系统需求以及成品演示二、代码实现三、完整代码 通讯录管理系统 一、系统需求以及成品演示 1.1 系统需求 通讯录是一个可以记录亲人、好友信息的工具。这里利用C来实现一个通讯录管理系统 系统中需要实现的功能如下: 添加联系人&am…

Enhancing Diffusion——利用三维透视几何约束增强扩散模型

概述 透视在艺术中被广泛研究,但现代高质量图像生成方法却缺乏透视精度。新的生成模型引入了几何约束,通过训练过程提高透视精度。这样可以生成更逼真的图像,并提高相关深度估计模型的性能。 最近的图像生成技术使研究人员能够创造性地进行…

MyBatis 核心配置讲解(下)

大家好,我是王有志,一个分享硬核 Java 技术的互金摸鱼侠。 我们书接上回,继续聊 MyBatis 的核心配置,我们今天分享剩下的 5 项核心配置。 不过正式开始前,我会先纠正上一篇文章 MyBatis 核心配置讲解(上&…

设计模式:适配器模式

设计意图 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 在某些时候,客户期望获得某种功能接口但现有的接口无法满足客户的需求…

SSL通信、证书认证原理和失败原因

目录 SSL通信SSL认证原理SSL证书认证失败的原因分析 SSL通信 SSL通信指的是使用SSL(Secure Sockets Layer)协议进行的加密通讯。SSL是一种标准的安全技术,用于建立一个加密链接,确保从用户的浏览器到服务器之间的数据传输是私密和…

分布式存储系统学习(1)

1学习来源 《大规模分布式存储系统原理解析与架构实战》--杨传辉 2学习目标 数据分布:如何使数据均匀分布到多台服务器上?分布到多台服务器后如何实现跨服务器读写操作?一致性:如何将数据的多个副本复制到多台服务器&#xff1…

中间件解析漏洞

1 、 apache 解析漏洞 漏洞环境搭建 下载 vulhub git clone https://github.com/vulhub/vulhub.git 进入对应漏洞目录、 cd vulhub/httpd/apache_parsing_vulnerability apt-get docker-compose 启动漏洞环境 docker-compose up -d 注:启动容器时&#xf…

C语言-预处理

一、C语言编译过程 预处理、编译、汇编、链接 1:预编译 将.c 中的头文件展开、宏展开 生成的文件是.i文件 2:编译 将预处理之后的.i 文件生成 .s 汇编文件 3、汇编 将.s汇编文件生成.o 目标文件 4、链接 将.o 文件链接成目标文…

【Redis 开发】多级缓存,本地进程缓存Caffeine

多级缓存 多级缓存本地进程缓存CaffeineCaffeine三种缓存驱逐策略 多级缓存 Redis处理并发的能力是非常强大的,但是tomcat的支持并发的能力跟不上Redis的性能,导致整体性能的下降 Redis缓存失效时,会对数据库产生冲击,之间再无屏…

【Docker】docker部署lnmp和搭建wordpress网站

环境准备 docker:192.168.67.30 虚拟机:4核4G systemctl stop firewalld systemctl disable firewalld setenforce 0 安装docker #安装依赖包 yum -y install yum-utils device-mapper-persistent-data lvm2 #设置阿里云镜像 yum-config-manager --add…

opencv namedWindow函数

namedWindow函数通常有两个参数: winname:这是要创建的窗口的名称。你可以在之后使用这个名称来引用该窗口。 flags:这是一个可选参数,用于指定窗口的行为。它可以是以下任何一个或多个标志的组合: cv2.WINDOW_NORMAL…

k8s-实战——kubeadm安装1.30.0

文章目录 1介绍1.1软件架构1.2版本介绍1.3组件列表2操作步骤2.1环境准备2.2获取脚本2.3节点初始化2.4组件下载2.4.1脚本执行2.4.2目录组件2.5脚本修改2.5.1修改host文件2.5.2验证ansible配置2.6安装k8s集群2.6.1查看证书有效期

图片壁纸社区app前后端开源小程序源码

图片壁纸社区APP前后端开源小程序源码,修改了开源版的前端样式,变成图片社区,也可以用来作为壁纸。 源码下载:https://download.csdn.net/download/m0_66047725/89122506 更多资源下载:关注我。

正则表达式与通配符

1. 正则表达式与通配符 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令可以支持正则表达式。通配符用来匹配符合条件的文件名,通配符是完全匹配。ls、find、cp这些命令不支持正则表达式,所以只能使用she…

Zynq 7000 系列之启动模式—JTAG启动

JTAG Boot(JTAG启动)是一种使用JTAG接口来启动设备的方法。JTAG(Joint Test Action Group)是一种国际标准测试协议,最初用于对芯片进行测试,现在已广泛应用于各种设备的调试和启动过程。在JTAG Boot过程中&…