kaggle酶稳定性预测第三名解决方案分享

2023-11-09 04:50

本文主要是介绍kaggle酶稳定性预测第三名解决方案分享,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近在kaggle参加了诺维信举办的酶稳定性预测比赛 ,最终很幸运获得了第三名,这篇文章主要是简单介绍一下解决方案,具体的数据和题目要求可访问上面的链接。

文章目录

    • 模型概述
    • 特征工程
    • 模型
      • XGB1
      • XGB2
      • XGB3
    • Ensemble
      • NESP 3D geometry
      • FoldX
      • ThermoNet v2
      • Relaxed rosetta scores
      • RMSD
      • Different pLDDT
    • 总结

模型概述

我分别使用了如下三个数据集训练了三个11-fold xgb模型。

  1. 数据集1
  2. 数据集2
  3. 数据集3

和以下公共笔记本ensemble后得到最终结果。

  1. 3D geometry
  2. ThermoNet v2
  3. rosetta
  4. rmsd
  5. different pLDDT

特征工程

受这篇论文[1]的启发,我选择了离突变残基最近的21个残基来构建结构特征。

  • 计算21个相邻残基和突变残基之间的相对距离 r C r_{C} rC表示突变残基的位置, r i r_{i} ri表示第 i i i个相邻残基。 D c i D_{ci} Dci表示突变残基和最近邻残基之间的相对距离。 x i , y i , z i x_{i},y_{i},z_{i} xiyizi表示残基的三维坐标,由PDB文件计算。我们可以按原子进行分组,在对每组求平均得到残基坐标。

D c i = r c − r i m a x i ∈ K ( r c − r i ) , i = 1 , 2 , . . . , 21 D_{ci}=\frac{r_{c}-r_{i}}{max_{i∈K}{(r_{c}-r_{i})}},i=1,2,...,21 Dci=maxiK(rcri)rcri,i=1,2,...,21

r c i = ( x c − x i ) 2 + ( y c − y i ) 2 + ( z c − z i ) 2 r_{ci}=\sqrt{{(x_{c}-x_{i})}^{2}+{(y_{c}-y_{i})}^{2}+{(z_{c}-z_{i})}^{2}} rci=(xcxi)2+(ycyi)2+(zczi)2

  • 计算平均相对距离(aver dist)。
  • 为了更好地代表蛋白质的几何构型,还需计算了突变残基和21个相邻残基之间的夹角。

α 1 = a r c c o s ( z c − z i ) r c i \alpha_{1}=arccos\frac{(z_{c}-z_{i})}{r_{ci}} α1=arccosrci(zczi)
α 2 = a r c c o s ( x c − x i ) r c i \alpha_{2}=arccos\frac{(x_{c}-x_{i})}{r_{ci}} α2=arccosrci(xcxi)
α 3 = a r c c o s ( y c − y i ) r c i \alpha_{3}=arccos\frac{(y_{c}-y_{i})}{r_{ci}} α3=arccosrci(ycyi)
β 4 = a r c t a n ( y c − y i ) ( x c − x i ) \beta_{4}=arctan\frac{(y_{c}-y_{i})}{(x_{c}-x_{i})} β4=arctan(xcxi)(ycyi)
β 5 = a r c t a n ( z c − z i ) ( y c − y i ) \beta_{5}=arctan\frac{(z_{c}-z_{i})}{(y_{c}-y_{i})} β5=arctan(ycyi)(zczi)
β 6 = a r c t a n ( x c − x i ) ( z c − z i ) \beta_{6}=arctan\frac{(x_{c}-x_{i})}{(z_{c}-z_{i})} β6=arctan(zczi)(xcxi)

  • 计算突变残基到蛋白质中心的距离(location3d)。

  • B_factor, blosum40,45,60,62,80,100, demask, 溶剂可及表面积, Apolar, Backbone, Sidechain, Ratio, In/Out等等。

    • B_factor:由AlphaFold2(https://alphafold.com/) 生成的PDB文件提供。PDB文件包含代表AlphaFold2模型预测置信度(每个残基)的列b_factor,已发现该置信度与蛋白质稳定性相关。

    • Blosum(Substitution Matrix):替换矩阵是生物学中的一个概念,用于确定两个序列之间的变化的影响。使用不同的比对数据库存在若干组Blosum矩阵,以数字命名。具有高数目的Blosum矩阵被设计用于比较紧密相关的序列,而那些具有低数目的Blosum矩阵被设计用于比较遥远的相关序列。

    • Demask:DemASK(https://demask.princeton.edu/) 使用一个简单的线性模型来预测单一氨基酸替换对功能的影响。

    • 溶剂可及表面积:该特征表示暴露在溶剂中的残留物的面积。一般来说,埋藏的蛋白质残基更有可能改变热稳定性。我们可以使用Bioython来获得这个特征,或者我们可以使用getarea(http://curie.utmb.edu/area_man.html) 网站来获得这个功能。如果我们使用getArea网站,我们将获得以下形式的.txt文件。名为TATAL的栏目代表SASA。Backbone和Sidechain代表主链和侧链原子的贡献。Ratio列出了侧链表面积与每个残基的“无规卷曲”值的比率。图2中列出的20种氨基酸的“随机卷曲”值,如果比率值超过50%,则被认为是溶剂暴露,如果比率低于20%,则被掩埋,在In/Out栏中分别标记为“o”和“i”。在处理此功能时,我将‘o’更改为0,将‘i’更改为1,并将None值设置为0.5。

      在这里插入图片描述

在这里插入图片描述

  • 使用blosum62 sasa

    当我们使用SASA特征时,相同位置的所有突变都被赋予相同的SASA值,这意味着所有突变是等价的。为了区分同一位置的不同突变,我们可以使用 1 − 1 1 + e − x s f 1-\frac{1}{1+e^{\frac{-x}{s_{f}}}} 11+esfx1将它们缩放到[0,1]范围,然后乘以SASA值。

  • Transformer ESM

    为了将氨基酸序列转换为有意义的特征,我们将使用Facebook预先训练的蛋白质transform ESM。我们将每个训练和测试野型输入到我们的转换器中,并提取最后的隐藏层激活。对于每个蛋白质,其形状为(1,len_Protein_seq,1280)。我们将保存完整d的embeddings和pooled embeddings以供使用。transform embedding的维度为1280。由于我们只有几千行列车数据,这些特征太多了,无法全部输入我们的XGB模型,否则会造成过拟合。此外,我们希望使用局部、21个相邻残基、池化和增量embedding。最后,利用RAPIDS PCA对嵌入数据进行降维处理。

  • 其他特征。

    我们可以使用biopython得到 stability, aromaticity, isoelectric 等特征,但这些特征帮助不大,public score 和private score只有小幅提升。

下面来介绍一下三个XGB模型。

模型

XGB1

该模型的public score为0.52132,private score为0.46642。

我使用上面提到的第一个数据集来训练我的第一个XGBoost。这个数据集是从Kaggle的训练集中选择的野生型和突变体,有4000多行训练数据。首先,我对数据集做了一些简单的处理,去除了重复行和删除突变,删除了没有匹配PDB的行,保留了突变样本>20的组。最后,我们得到了一个1800+行的训练集。

利用上述特征,以rankdata™为目标对模型进行训练。

在这里插入图片描述

然后,我们使用WEIGHT和GAIN特征重要性来获得前30个重要特征。我们可以看到,ESM提取特征,B_factor、相对距离等更为重要,但我最终保留了所有的特征,因为我没有一个可靠的交叉验证集来选择特征。

在这里插入图片描述

XGB2

该模型的public score为0.40512,private score为0.30495。

这个模型产生了严重的过拟合,实际上在ensemble后降低了我的最终得分。

我们使用上面提到的第二个数据集 来训练我的第二个XgBoost模型。这个数据集是从Kaggle的训练集中选择的野生型和突变体。但这个数据集被清理得更详细,清理后的数据集只包含来自30个组的986个突变,所有组都是同源、相同pH的。

我们使用的功能和目标与XGB1相同。以下是功能的重要性:

在这里插入图片描述

XGB3

该模型的公开得分为0.40435,私人得分为0.43294。

我们使用第三个数据集 来训练我的第三个XgBoost模型。由于dTm和ddg具有很强的相关性,我们也可以使用ddg作为目标,以增加训练数据。这个外部数据集包含14656个独特的突变。由于野生型比大多数突变体更稳定,我们只保留了不稳定的突变,并确保每组的pH值和来源都是相同的。经过简单的清理,训练集包含6000多行样本。

与前两个模型不同,我只使用了一些结构特征来训练这个模型,因为我发现单独使用这些特征可以获得很好的public score。为了防止严重的过拟合和增加多样性,我没有添加其他特征。

在这里插入图片描述

以下是特征重要性,可以发现平均相对距离是很重要的。

在这里插入图片描述

Ensemble

大部分ensemble来自于公共笔记本,下面我简单介绍一下:

NESP 3D geometry

这个笔记本是由Elias创建的。

Public score: 0.32046, Private score: 0.33897。

此笔记本没有使用训练集,直接利用创建的3D几何特征应用于测试集。这种方法在这次比赛中是很常见的。

我们将以下两个位置之间的距离进行rankdata:

  • 发生突变的残基的中心坐标。
  • 蛋白质中心。

pdb 文件(https://www.kaggle.com/datasets/roberthatch/nesp-kvigly-test-mutation-pdbs)包含所有的原子坐标,我们只是取平均值来获得蛋白质中心坐标。为了得到突变残基的坐标,我们可以按残基对原子进行分组,使用平均值。如果突变是缺失的,我们使用下一个残基位置。

D i s t = ( x m u t − x c e n ) 2 + ( y m u t − y c e n ) 2 + ( z m u t − z c e n ) 2 Dist = \sqrt{(x_{mut}-x_{cen})^{2}+(y_{mut}-y_{cen})^{2}+(z_{mut}-z_{cen})^{2}} Dist=(xmutxcen)2+(ymutycen)2+(zmutzcen)2

在这里插入图片描述

FoldX

这个笔记本是我创建的。

Public score: 0.41332, Private score: 0.37538。

我从FoldX 网站(https://foldxsuite.crg.eu/documentation) 下载了Foldx5Win32.Zip。按照文档说明,我首先运行命令来修复野生型PDB。

然后,我创建了.cfg文件并运行了positionscan命令。根据该文件的指导,.cfg的格式如下:

命令=位置扫描。
pdb=wildtype_structure_prediction_af2_Repair.pdb。
位置=LA17E、LA17K、KA18C、KA18F…。(野生型+链+位置+突变)。

最后,我们将在完成时获得repair_scanning_output.txt。文件的第二列是ddg。我将其与测试集合。

ThermoNet v2

这个笔记(https://www.kaggle.com/code/vslaykovsky/nesp-thermonet-v2/notebook) 由Vladimir Slaykovskiy创建。

Public score: 0.49424, Private score: 0.46078。

这个模型只使用不稳定的突变进行训练。因为训练集同时包含ddg和dTm目标,并且ddg目标多于dTm目标,所以我们可以使用dTm作为辅助目标。loss使用的是

L = ( y d d G − y ^ d d G ) 2 + C ∗ ( y Δ d T m − y ^ d T m ) 2 \mathcal{L}=(y_{ddG}−\widehat{y}_{ddG})^2+C∗(y_{ΔdTm}−\widehat{y}_{dTm})^2 L=(yddGy ddG)2+C(yΔdTmy dTm)2 C = 0.01 C=0.01 C=0.01是一个决定dTm贡献的超参。

这本笔记本使用pdb(https://www.kaggle.com/code/vslaykovsky/14656-unique-mutations-voxel-features-pdbs) 与Acellera HTMD库生成体素特征。体素特征包括一组7个属性打包到一个大小(16,16,16)的网格中。七个特征分别是:'hydrophobic', 'aromatic', 'hbond_acceptor', 'hbond_donor', 'positive_ionizable', 'negative_ionizable', 'occupancies'对于每个训练样本,特征来自野生型和突变型PDB,因此每个样本的最终形状是:(14,16,16,16)。

在这里插入图片描述

最后用一个简单的VGG型CNN对回归模型进行训练。一个由10个模型组成的集合被用来预测分数。只有ddg输出用于预测,dTm仅作为损失函数的一部分用于训练。

模型架构如下图所示:

在这里插入图片描述

Relaxed rosetta scores

这个笔记本 由greySnow创建。

Public score: 0.471, Private score: 0.438。

这本笔记本使用relax结构 ,使用计算得到的的能量分数。Rosetta是一个软件套件,包括用于计算建模和分析蛋白质结构的算法(参见此处)。注册后即可免费从这里下载。此外,它还有一个很好的Python接口,即pyrosetta。我们可以用它来计算能量分数。

RMSD

这个笔记 由scar Villarreal Escamilla创建。

Public score: 0.39329, Private score: 0.37927。

本笔记本根据通过VMD和NAMD软件进行的分子动力学(MD)模拟的轨迹计算出的每个残基的平均均方根偏差(RMSD)。

VMD软件允许进行许多有趣的分析形式。在这场比赛中,均方根偏差(RMSD)似乎是最相关的分析,因为它直接衡量残基结构的稳定性。基本上,如果残基的RMSD非常小(即它移动很少),这意味着该残基在其当前位置非常稳定,因此如果它发生突变,新突变的残基可能不像原始残基那样稳定。因此,这种突变残基更有可能具有较低的热稳定性等级。

Different pLDDT

这个笔记 由Chris Deotte创建。

Public score: 0.29709, Private score: 0.28793。

这本笔记本我们利用这里的pdb创建了不同的特征,对于测试集的每个突变,我们使用突变型的pLDDT减去野生型pLDDT

在这里插入图片描述

我的最终解决方案是三个XGB模型和上面这些公共笔记本进行ensemble。下表是ensemble的权重:

ModelWeight
NESP 3D geometry1
Foldx1.5
Thermonet v21.5
Relaxed rosetta scores2
RMSD1.5
XGB31
XGB11.5
Different pLDDT1.5
XGB21.5

总结

第一点是利用三维坐标来构建突变残基的环境,例如相邻残基和突变残基之间的相对距离。第二点是,现有的服务器或模型,如Rosetta、FoldX、ESM等,在这场比赛中取得了不错的成绩。第三点是找到方法来区分野生型和突变型。在这次比赛中,很多公共笔记本都使用了野生型,但注意野生型和突变型的区别可能也会有所帮助。这个方案有很多不成熟的地方,感谢各位批评指正。

参考资料:

[1]蛋白质三级结构嵌入编码及其在蛋白质工程中的应用研究

[2] How to use the information in PDB file

[3] Important Clarification Regarding b_factor

[4] NOVO ESP – ELI5 - Performant Approaches LB=0.451

[5] Surface area of the amino acids in the model structure

[6] XGBoost - 5000 Mutations 200 PDB Files

[7] Accessible surface area scaled by BLOSUM62 substitutions

[8] NOVO-ESP – Residue Depth and More w/ BioPython

[9] NESP 3D geometry

[10] ThermoNet v2

[11] nesp-relaxed-rosetta-scores

[12] rmsd-from-molecular-dynamics

[13] deletion-specific-ensemble

[14] difference-features-lb-0-600

这篇关于kaggle酶稳定性预测第三名解决方案分享的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

js异步提交form表单的解决方案

1.定义异步提交表单的方法 (通用方法) /*** 异步提交form表单* @param options {form:form表单元素,success:执行成功后处理函数}* <span style="color:#ff0000;"><strong>@注意 后台接收参数要解码否则中文会导致乱码 如:URLDecoder.decode(param,"UTF-8")</strong></span>

java常用面试题-基础知识分享

什么是Java? Java是一种高级编程语言,旨在提供跨平台的解决方案。它是一种面向对象的语言,具有简单、结构化、可移植、可靠、安全等特点。 Java的主要特点是什么? Java的主要特点包括: 简单性:Java的语法相对简单,易于学习和使用。面向对象:Java是一种完全面向对象的语言,支持封装、继承和多态。跨平台性:Java的程序可以在不同的操作系统上运行,称为"Write once,

分享5款免费录屏的工具,搞定网课不怕错过!

虽然现在学生们不怎么上网课, 但是对于上班族或者是没有办法到学校参加课程的人来说,网课还是很重要的,今天,我就来跟大家分享一下我用过的几款录屏软件=,看看它们在录制网课时的表现如何。 福昕录屏大师 网址:https://www.foxitsoftware.cn/REC/ 这款软件给我的第一印象就是界面简洁,操作起来很直观。它支持全屏录制,也支持区域录制,这对于我这种需要同时录制PPT和老师讲

明明的随机数处理问题分析与解决方案

明明的随机数处理问题分析与解决方案 引言问题描述解决方案数据结构设计具体步骤伪代码C语言实现详细解释读取输入去重操作排序操作输出结果复杂度分析 引言 明明生成了N个1到500之间的随机整数,我们需要对这些整数进行处理,删去重复的数字,然后进行排序并输出结果。本文将详细讲解如何通过算法、数据结构以及C语言来解决这个问题。我们将会使用数组和哈希表来实现去重操作,再利用排序算法对结果

UE5 半透明阴影 快速解决方案

Step 1: 打开该选项 Step 2: 将半透明材质给到模型后,设置光照的Shadow Resolution Scale,越大,阴影的效果越好

【干货分享】基于SSM的体育场管理系统的开题报告(附源码下载地址)

中秋送好礼 中秋佳节将至,祝福大家中秋快乐,阖家幸福。本期免费分享毕业设计作品:《基于SSM的体育场管理系统》。 基于SSM的体育场管理系统的开题报告 一、课题背景与意义 随着全民健身理念的深入人心,体育场已成为广大师生和社区居民进行体育锻炼的重要场所。然而,传统的体育场管理方式存在诸多问题,如资源分配不均、预约流程繁琐、数据统计不准确等,严重影响了体育场的使用效率和用户体验。

MySQL主从同步延迟原理及解决方案

概述 MySQL的主从同步是一个很成熟的架构,优点为: ①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力; ②在从主服务器进行备份,避免备份期间影响主服务器服务; ③当主服务器出现问题时,可以切换到从服务器。 相信大家对于这些好处已经非常了解了,在项目的部署中也采用这种方案。但是MySQL的主从同步一直有从库延迟的问题,那么为什么会有这种问题。这种问题如何解决呢? MyS

图书管理系统系统分享

分享一个图书管理系统,Java、SpringBoot、Vue和MySQL开发的图书馆管理系统 gitee项目地址:https://gitee.com/yuanmomoya/open-source-project/tree/master/books-management-system GitHub项目地址:https://github.com/yuanmomoya/open-source-pro