ProGen生成功能蛋白序列

LLM在包括蛋白质设计等各种生物技术应用中展现出了潜力。ProGen是一种语言模型,它能够生成在大型蛋白质家族中具有可预测功能的蛋白质序列,这类似于针对不同主题生成语法和语义正确的自然语言句子。该模型在来自超过19,000个家族的2.8亿个蛋白质序列上进行训练,并通过指定蛋白质属性的控制标签进行生成。ProGen可以进一步针对经过筛选的序列和标签进行微调,以提高可控蛋白质生成性能。针对五个不同溶菌酶家族进行微调的人工蛋白质,其催化效率与天然溶菌酶相似,与天然蛋白质的序列同一性低至31.4%。正如以分支酸变位酶和苹果酸脱氢酶所展示的那样,ProGen可以很容易地应用于多种蛋白质家族。

原文请参考:Large language models generate functional protein sequences across diverse families, Nature Biotechnology, 2023

目录

  • 背景概述
  • 训练数据构建
  • ProGen:条件语言模型
  • ProGen训练

背景概述

受自然语言模型的启发,开发了ProGen,这是一种在数百万条原始蛋白质序列上进行训练的蛋白质语言模型,它可以生成跨越多个家族且具有多种功能的人工蛋白质。ProGen证明基于深度学习的语言建模可用于从头生成功能与天然蛋白质相当的人工蛋白质序列。

ProGen通过学习预测在给定原始序列中前面氨基酸的情况下,下一个氨基酸出现的概率来进行迭代优化。ProGen从一个庞大且多样的蛋白质序列数据库中以无监督的方式进行训练。训练完成后,只需给出提示,ProGen就能从头为任何蛋白质家族生成全长蛋白质序列,这些序列与天然蛋白质具有不同程度的相似性。在常见的情况下,如果某个蛋白质家族有部分序列数据可用,可以使用预训练语言模型微调技术,利用家族特异性序列进一步提高ProGen捕捉与该蛋白质家族相对应的局部序列邻域分布的能力。

ProGen是一个拥有12亿参数的神经网络,它使用包含2.8亿个蛋白质序列的公开数据集进行训练。ProGen的一个关键组成部分是条件生成,即输入提供给语言模型的属性标签(例如,蛋白质家族:Pfam ID PF16754,Pesticin)控制序列生成。在自然语言中,这些控制标签可以是风格、主题、日期和其他实体(图1a)。对于蛋白质而言,控制标签是诸如蛋白质家族、生物学过程和分子功能等属性,这些属性在公共蛋白质数据库中的大部分序列中都有记录(图1b和补充图1)。
fig1

  • 图1a:条件语言模型是一种深度神经网络,它能够生成语义和语法正确,同时新颖多样的自然语言文本,并且可以通过输入控制标签来进行调控,这些标签可以控制文本的风格、主题及其他要素。
  • 图1b-c:与自然语言模型类似,ProGen是一种条件蛋白质语言模型-图b,它能够根据输入的控制标签-图c,跨蛋白质家族生成多样的人工蛋白质序列。
  • 图1d:ProGen使用包含来自数千个家族的2.8亿个自然进化蛋白质的大型通用蛋白质序列数据集进行训练,在该研究中,对其中五个不同的溶菌酶家族(lysozyme families)进行了实验。
  • 图1e:ProGen是一个拥有12亿参数的神经网络,基于Transformer架构,该架构使用自注意力机制对残基间的相互作用(residue–residue interactions)进行建模。ProGen通过最小化通用蛋白质序列数据集(universal protein sequence dataset)中下一个氨基酸(amino acid)预测问题的损失来训练。

supfig1

  • 补充图1:在训练和微调过程中,为模型训练提供带有相关控制标签的样本序列。将氨基酸序列( a 1 a_1 a1 a 2 a_2 a2,…… )与所需的控制标签( < c 1 > <c_1> <c1> < c 2 > <c_2> <c2>,…… )前置组合,构成tokens,让ProGen以自回归方式计算下一个token出现的概率。构建控制标签是为了提供有关分子功能、生物学过程、细胞组成或特定蛋白质家族的信息。

训练数据构建

为了训练ProGen,作者从UniParc、UniprotKB、Pfam和NCBI中收集了一个通用蛋白质序列数据集(图1d和补充表1)。
suptab1

  • 补充表1:用于训练和微调ProGen的公开可用数据集列表。训练数据集(a - c)总共包含2.8亿个unique的蛋白质,这些蛋白质与基于生物过程、分子功能相关关键词的101,100个标签相关联(d)。微调数据集(e - h)用于进一步提升ProGen在溶菌酶、分支酸变位酶和苹果酸脱氢酶蛋白质的局部序列邻域中生成蛋白质序列的能力。

该通用数据集包含2.81亿条非冗余蛋白质序列(来自超过19,000个Pfam家族)以及相关元数据(作为控制标签)。氨基酸词汇表采用IUPAC规定的25种标准氨基酸名称。控制标签分为两类:(1)关键词标签-keyword tags;(2)分类学标签-taxonomic tags。根据UniprotKB中受控的分层关键词词汇表(其中许多术语源自基因本体GO-Term)的定义,关键词标签包含1100个术语,涵盖细胞成分、生物过程和分子功能等方面。分类学标签则包含来自NCBI分类学的100,000个术语,涉及八个标准分类等级。汇总后的数据集被划分为一个包含2.8亿条序列的训练集,以及两个测试集:一个是包含来自20个蛋白质家族的100,000条序列的分布外测试集(OOD测试集),另一个是随机抽样得到的包含100万条序列的分布内测试集(ID测试集)。这些测试集不用于训练,而是用于评估模型。在训练数据库上完成模型训练后,模型会进一步在以下数据集上进行微调,以完成生成和分类任务。

在对溶菌酶蛋白进行微调时,作者从Pfam数据库中选择了五个蛋白质家族,分别是噬菌体溶菌酶(PF00959)、pesticin(PF16754)、氨基葡萄糖苷酶(PF01832)、糖苷水解酶家族108(PF05838)和转糖基酶(PF06737),共得到55,948条序列。在微调过程中,提供给模型的蛋白质是未比对的蛋白质序列,并在前面添加一个用于指定蛋白质家族的控制标签。

在对分支酸变位酶(CM)蛋白进行微调时,使用HHBlits和blastp程序,以大肠杆菌CM - 预苯酸脱水酶(P蛋白)的CM结构域(EcCM)的1-95位残基为查询序列进行搜索,得到20,214条序列。

在对苹果酸脱氢酶(MDH)蛋白进行微调时,选择了Interpro数据库中IPR001557的L - 乳酸/MDH蛋白家族,包含17,094条序列。

ProGen:条件语言模型

与那些为判别性蛋白质预测任务对氨基酸序列进行编码的基于 Transformer 的语言模型不同,ProGen 是一个专门用于自回归生成的解码器 Transformer:它以从左到右的方式逐个token地生成序列,下一个token的生成依赖于之前生成的所有tokens。

a = ( a 1 , . . . , a n a ) a=(a_1,...,a_{n_{a}}) a=(a1,...,ana)是长度为 n a − 1 n_{a}-1 na1的氨基酸序列,最后附加一个"end of sequence" token,令 c = ( c 1 , . . . , c n c ) c=(c_1,...,c_{n_c}) c=(c1,...,cnc)是描述符的集合,比如蛋白质家族或者源物种,即 “control tags”,通过这些(控制标签),作者希望实现对氨基酸序列生成的控制。设 x = [ c ; a ] x = [c; a] x=[c;a]为在氨基酸序列前添加控制标签序列后形成的序列。那么,对于长度为 n = n a + n c n = n_a + n_c n=na+nc n a n_a na为氨基酸序列长度, n c n_c nc为控制标签序列长度)的这种组合序列,其概率为 P ( x ) P(x) P(x)。语言建模将生成序列 x x x的问题分解为下一个token预测问题,其中token可以是氨基酸,也可以是控制标签。训练一个参数为 θ \theta θ的神经网络,并最小化数据集 D = ( x 1 , . . , x ∣ D ∣ ) D=(x^{1},..,x^{|D|}) D=(x1,..,xD)上的负对数似然。

在生成时,直到模型预测出 ‘end of sequence’ token 才停止。

ProGen训练

在训练过程中,作者纳入了每条序列及其反向序列。在每条序列前添加相应的控制标签子集。对于给定的一条序列,在不同数据库中可能存在多个版本,每个版本都有各自相关的控制标签。作者随机抽取一组控制标签,但在抽样时更倾向于SwissProt标签,因为它们经过人工验证。此外,会纳入一个只有序列而没有控制标签的样本,这样ProGen就能仅凭借序列数据来完成蛋白质的生成任务

作者将所有序列截断为最大长度512。长度小于512的序列会进行填充,并且用于padding的token会被排除在训练所用的损失函数计算之外。预训练期间,控制标签的平均token长度为8。我们的模型在TensorFlow中实现,使用batch大小为2048进行训练。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

省级数字经济发展水平数据(2011-2022年)-社科数据

省级数字经济发展水平数据&#xff08;2011-2022年&#xff09;-社科数据https://download.csdn.net/download/paofuluolijiang/90028602 https://download.csdn.net/download/paofuluolijiang/90028602 数字经济是指以数据资源为关键要素、以现代信息网络为主要载体、以信息…

Leecode刷题C语言之跳跃游戏②

执行结果:通过 执行用时和内存消耗如下&#xff1a; int jump(int* nums, int numsSize) {int position numsSize - 1;int steps 0;while (position > 0) {for (int i 0; i < position; i) {if (i nums[i] > position) {position i;steps;break;}}}return steps…

《多线程基础之条件变量》

【条件变量导读】条件变量是多线程中比较灵活而且容易出错的线程同步手段&#xff0c;比如&#xff1a;虚假唤醒、为啥条件变量要和互斥锁结合使用&#xff1f;windows和linux双平台下&#xff0c;初始化、等待条件变量的api一样吗&#xff1f; 本文将分别为您介绍条件变量在w…

消息队列篇--通信协议篇--TCP和UDP(3次握手和4次挥手,与Socket和webSocket的概念区别等)

1、TCP和UDP概述 TCP&#xff08;传输控制协议&#xff0c;Transmission Control Protocol&#xff09;和UDP&#xff08;用户数据报协议&#xff0c;User Datagram Protocol&#xff09;都算是最底层的通信协议&#xff0c;它们位于OSI模型的传输层。*传输层的主要职责是确保…

打破传统束缚:领略 Web3 独特魅力

在互联网发展的历程中&#xff0c;我们见证了Web1和Web2的变迁。Web1是静态信息的展示平台&#xff0c;Web2则引领了社交互动和内容创作的繁荣&#xff0c;而如今&#xff0c;Web3作为新时代的互联网架构&#xff0c;正逐渐展现出其独特的魅力&#xff0c;带领我们走向一个更加…

[论文总结] 深度学习在农业领域应用论文笔记14

当下&#xff0c;深度学习在农业领域的研究热度持续攀升&#xff0c;相关论文发表量呈现出迅猛增长的态势。但繁荣背后&#xff0c;质量却不尽人意。相当一部分论文内容空洞无物&#xff0c;缺乏能够落地转化的实际价值&#xff0c;“凑数” 的痕迹十分明显。在农业信息化领域的…

Linux 学习笔记__Day3

十八、设置虚拟机的静态IP 1、VMware的三种网络模式 安装VMware Workstation Pro之后&#xff0c;会在Windows系统中虚拟出两个虚拟网卡&#xff0c;如下&#xff1a; VMware提供了三种网络模式&#xff0c;分别是&#xff1a;桥接模式&#xff08;Bridged&#xff09;、NAT…

QT+mysql+python 效果:

# This Python file uses the following encoding: utf-8 import sysfrom PySide6.QtWidgets import QApplication, QWidget,QMessageBox from PySide6.QtGui import QStandardItemModel, QStandardItem # 导入需要的类# Important: # 你需要通过以下指令把 form.ui转为ui…

笔记本跑大模型尝试

1&#xff0c;笔记本电脑资源 我是一台联想笔记本电脑&#xff0c;基本配置如下&#xff1a; CPU&#xff1a;12th Gen Intel(R) Core(TM) i7-1255U 1.70 GHz (12核心&#xff0c;2个P核和8个E核&#xff0c;共计10个核心) 显卡&#xff1a;NVIDIA GeForce MX550 内存&am…

C语言实现扫雷游戏(有展开一片和标记雷的功能)

实现准备 分2个.c源文件和1个.h头文件去写代码 test.c 对扫雷游戏进行测试game.c 扫雷游戏功能的实现game.h 扫雷游戏功能的声明 扫雷游戏 1.test.c对扫雷游戏进行测试 首先我们要先把玩游戏的框架写出来&#xff0c;然后一步一步去完成其功能 跟着下面的代码的节奏走一步一步…

基础IO(2)

基础IO&#xff08;2&#xff09; 理解“⼀切皆⽂件” ⾸先&#xff0c;在windows中是⽂件的东西&#xff0c;它们在linux中也是⽂件&#xff1b;其次⼀些在windows中不是⽂件的东西&#xff0c;⽐如进程、磁盘、显⽰器、键盘这样硬件设备也被抽象成了⽂件&#xff0c;你可以使…

Transformation,Animation and Viewing

4 Transformation&#xff0c;Animation and Viewing 声明&#xff1a;该代码来自&#xff1a;Computer Graphics Through OpenGL From Theory to Experiments&#xff0c;仅用作学习参考 4.1 Modeling Transformations 平移、缩放和旋转&#xff0c;即 OpenGL 的建模转换&…

Deepseek的RL算法GRPO解读

在本文中&#xff0c;我们将深入探讨Deepseek采用的策略优化方法GRPO&#xff0c;并顺带介绍一些强化学习&#xff08;Reinforcement Learning, RL&#xff09;的基础知识&#xff0c;包括PPO等关键概念。 策略函数&#xff08;policy&#xff09; 在强化学习中&#xff0c; a…

【python】python基于机器学习与数据分析的二手手机特性关联与分类预测(源码+数据集)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;专__注&#x1f448;&#xff1a;专注主流机器人、人工智能等相关领域的开发、测试技术。 python基于机器学习与数据分析的二手手机特性关联与…

手撕Diffusion系列 - 第十一期 - lora微调 - 基于Stable Diffusion(代码)

手撕Diffusion系列 - 第十一期 - lora微调 - 基于Stable Diffusion&#xff08;代码&#xff09; 目录 手撕Diffusion系列 - 第十一期 - lora微调 - 基于Stable Diffusion&#xff08;代码&#xff09;Stable Diffusion 原理图Stable Diffusion的原理解释Stable Diffusion 和Di…

前端【8】HTML+CSS+javascript实战项目----实现一个简单的待办事项列表 (To-Do List)

目录 一、功能需求 二、 HTML 三、CSS 四、js 1、绑定事件与初始设置 2.、绑定事项 &#xff08;1&#xff09;添加操作&#xff1a; &#xff08;2&#xff09;完成操作 &#xff08;3&#xff09;删除操作 &#xff08;4&#xff09;修改操作 3、完整js代码 总结…

vue事件总线(原理、优缺点)

目录 一、原理二、使用方法三、优缺点优点缺点 四、使用注意事项具体代码参考&#xff1a; 一、原理 在Vue中&#xff0c;事件总线&#xff08;Event Bus&#xff09;是一种可实现任意组件间通信的通信方式。 要实现这个功能必须满足两点要求&#xff1a; &#xff08;1&#…

图像处理之HSV颜色空间

目录 1 RGB 的局限性 2 HSV 颜色空间 3 RGB与HSV相互转换 4 HSV颜色模型对图像的色相、饱和度和明度进行调节 5 演示Demo 5.1 开发环境 5.2 功能介绍 5.3 下载地址 参考 1 RGB 的局限性 RGB 是我们接触最多的颜色空间&#xff0c;由三个通道表示一幅图像&#xff0c;分…

【C++高并发服务器WebServer】-9:多线程开发

本文目录 一、线程概述1.1 线程和进程的区别1.2 线程之间共享和非共享资源1.3 NPTL 二、线程操作2.1 pthread_create2.2 pthread_exit2.3 pthread_join2.4 pthread_detach2.5 patch_cancel2.6 pthread_attr 三、实战demo四、线程同步五、死锁六、读写锁七、生产消费者模型 一、…

14-6-1C++STL的list

(一&#xff09;list容器的基本概念 list容器简介&#xff1a; 1.list是一个双向链表容器&#xff0c;可高效地进行插入删除元素 2.list不可以随机存取元素&#xff0c;所以不支持at.(pos)函数与[ ]操作符 &#xff08;二&#xff09;list容器头部和尾部的操作 list对象的默…