PocketGen
PocketGen 概述
PocketGen 在干什么
PocketGen是一种基于深度学习的生成模型,专注于高效生成与配体分子(如药物小分子)结合的全原子结构蛋白质口袋。其核心应用场景包括:
药物发现:设计高亲和力的蛋白质口袋以加速先导化合物筛选,缩短药物研发周期
酶工程:生成催化活性位点,优化酶的功能性以用于工业生物催化
生物传感器开发:构建特异性结合口袋,用于检测环境或体内的特定分子
蛋白质功能改造:重新设计现有蛋白质的结合位点,赋予其新的配体结合能力
PocketGen 解决的问题
| 🚀 问题类别 | ❌ 传统方法的局限 | ✅ PocketGen 的解决方案 |
|---|---|---|
| 序列-结构协同建模能力 | 🚨 基于物理的模拟或模板匹配难以同时优化蛋白质序列与三维结构,生成口袋缺乏生物学合理性 | ✨ 引入 序列精炼模块,结合 pLM 和结构适配器,通过交叉注意力机制实现结构信息向序列的注入,提升一致性 |
| 生成效率 | 🚨 传统物理方法(如 PocketOpt)生成 100 个口袋需 >1000 秒,速度慢,效率低 | ✨ 采用 迭代优化框架 替代扩散模型,显著提升生成效率,仅为传统方法的 1/10,保持高质量 |
| 多样性与亲和力平衡能力 | 🚨 生成高多样性口袋时结合亲和力常明显下降,难以兼顾 | ✨ PocketGen 能保持高多样性的同时维持较高亲和力,成功率达 95%,实现多样性与功能性的良好平衡 |
| 多尺度相互作用建模 | 🚨 传统模型难以统一建模原子级(如氢键)、残基级(侧链)与配体级(疏水作用)相互作用,导致结构不精准 | ✨ 设计 双层图变换器(Bilevel Graph Transformer),通过分层注意力机制与跨层信息传递建模多尺度结构信息 |
| 空间变换鲁棒性 | 🚨 模型对旋转、平移等坐标系变换敏感,导致预测结果依赖初始坐标系,结构稳定性差 | ✨ 引入 E(3)-等变性建模框架,确保结构对旋转、平移等几何变换具有不变性,提升预测结构的几何真实性与泛化能力 |
⭐核心:
- 结构与序列的一致性
- 准确模拟复杂口袋与配体间的相互作用
PocketGen 小总结
PocketGen采用协同设计方式,基于 配体分子与口袋周围的蛋白质结构 来预测 口袋的氨基酸序列与口袋的结构
PocketGen不是将每个原子都视为图中的一个独立节点,而是 将蛋白质-配体复合物表示为由“块 (blocks)” 组成的几何图。这里的“块”可以理解为比单个原子更高层次的结构单元
- 对于蛋白质:一个“块”很可能代表一个 氨基酸残基 (residue)
- 对于配体:一个“块”可能代表 整个配体分子,或者如果配体较大且具有柔性,也可能被划分为几个关键的子结构或药效团作为“块”
几何图的选择确保了其仅包含连接关系,还包含了这些“块”在三维空间中的坐标信息,使得模型能够理解和处理空间结构
双层注意力机制来捕捉多个粒度的相互作用:
- 细粒度:原子和残基/配体层面的相互作用
- 粗粒度:包括 蛋白质内和蛋白质-配体相互作用
在序列的更新中添加了一个 结构适配器,实现结构与序列的对齐。在训练时,冻结其他层权重,只针对适配器进行训练
PocketGen 的 Tips
Tip 1:PocketGen 方法概述(Overview of PocketGen)
⭐目标:
共同设计蛋白质口袋的残基类型(序列)和三维(3D)结构,使其能够与靶配体分子结合
PocketGen 将口袋生成形式化为一个条件生成问题,其目标是学习一个条件生成模型:
P(B∣A∖B,M)
这表示已知:
- 口袋周围的蛋白质结构(不包括口袋):A∖B
- 配体的3D结构: M
去预测口袋区域 B 的概率分布
“条件生成”的过程
具体来说,模型会根据两个主要的输入信息——即蛋白质分子上围绕着目标口袋的现有结构部分(口袋周围的蛋白质结构)以及我们希望这个口袋能够结合的特定小分子(称为“结合配体”)——来同时创造出这个口袋的氨基酸组成(序列)和其三维原子排布(结构)
1. 蛋白质和配体的基本定义
整个蛋白质的残基序列 A=a1…aNs 由 Ns 个残基组成,其中每个残基 ai 是一个氨基酸
蛋白质的3D结构表示为点云 {ai,j}1≤i≤Ns,1≤j≤ni
ai,j 表示残基 i 的第 j 个原子
每个残基 ai 有 ni 个原子,由残基的类型决定
每个原子的三维坐标为 x(ai,j)∈R3
前4个原子是主链原子 Cα , N, C, O,其他是侧链原子
2. 配体表示
配体分子也被表示为3D点云 M={vk}k=1Nt,其中每个 vk 是配体中的一个原子
x(vk) 表示第 k 个原子的三维坐标
3. 蛋白质口袋(pocket)的定义
口袋 B=b1…bm 定义为 最接近 配体分子的那些残基
口袋也可由 整个蛋白质的残基序列的一个子序列 B=ae1…aem 来表示
e={e1,…,em} 表示 属于口袋的蛋白质残基序列 的索引集合
为什么是"最接近"?
在三维空间中,如果一个氨基酸残基的任何部分(任何原子)与结合配体分子的任何部分(任何原子)之间的距离在一个特定的阈值(例如3.5A˚)以内,那么这个氨基酸残基就被定义为属于该蛋白质口袋
这个距离阈值(通常是根据典型的非键相互作用(如氢键、范德华力)的有效作用范围来选择的
4. 如何选出口袋的残基
口袋的残基定义为那些至少有一个原子距离配体中某个原子的距离小于某个阈值 δ 的残基:
e={i1≤j≤ni,1≤k≤Ntmin∥x(ai,j)−x(vk)∥2≤δ}
- x(ai,j):第 i 个残基中第 j 个原子的坐标
- x(vk):配体中第 k 个原子的坐标
- ∥⋅∥2:L2 范数
- δ=3.5A˚:距离阈值,表示一个残基的任意原子距离配体中任意原子不超过 3.5A˚,就把这个残基认为在口袋中
Tip 2:等变双层图Transformer(Equivariant bilevel graph transformer)
为了表示的简洁性和计算的便利性,每个 氨基酸残基(residue) 或 整个配体分子(ligand) 被视为一个 块 (block)。一个块就是一组原子
符号定义
蛋白质配体的复合物可以抽被象为一个由集合构成的几何图 g=(υ,ε)
节点 υ: 每个节点代表一个块 i。每个块 i 包含两部分信息:υ={Hi,Xi∣1≤i≤B}:
原子特征 Hi∈Rni×dh:一个矩阵,其中 ni 是块 i 中的原子数量,dh 是原子特征的维度。Hi[p] 是块 i 中第 p 个原子的可训练特征向量
原子坐标 Xi∈Rni×3: 一个矩阵,Xi[p] 是块 i 中第 p 个原子的三维坐标
特征初始化: Hi[p] 的初始特征由 原子类型嵌入 (atom-type embedding)、残基/配体嵌入 (residue/ligand embeddings) 和 原子位置嵌入 (atom positional embeddings) 拼接而成
边 ε:
残基块间使用 k-近邻图 (k-Nearest Neighbors graph, k-NN graph)
对于蛋白质中的 每一个残基块:
- 计算它与其他所有残基块之间的距离(残基与残基之间两两计算距离)
- 找出与它距离最近的 k 个其他残基
- 在这个残基与这 k 个最近邻残基之间建立边
残基块与配体块之间建立边
每个块有一个自环(self-loop)
⭐原子级别注意力
- 标准 Attention:
Qi=HiWQ,KJ=HjWK,Vj=HjWv
其中 Hi∈Rni×dh 为第 i 号块内的原子特征矩阵,WQ,WK,WV 为可训练参数
- 定义 Xij∈Rni×nj×3 为块 i 和 块 j 间的相对坐标,Dij∈Rni×nj 为块 i,j 间的距离
记
Xij[p,q]=Xi[p]−Xj[q],Dij[p,q]=∥Xij[p,q]∥2
- 原子间的注意力分数矩阵 Rij∈Rni×nj 中每一项:
Rij[p,q]=dr1(Qi[p]⋅Kj[q]T)+σD(RBF(Dij[p,q]))
这里 dr 是 Q,K,V向量的维度
σD(RBF(Dij[p,q])) 引入了距离偏置,使用 RBF (Radial Basis Functions) 将距离标量嵌入为向量
原子级注意力权重矩阵 αij∈Rni×nj:
αij=Softmax(Rij)
对 Rij 的每一行进行 Softmax,得到块 i 中每个原子对块 j 中所有原子的注意力分布
top-k 稀疏化:为了计算效率和关注重点,αij 的每一行只保留值最大的 k 个元素,其余设为零
⭐残基-配体级别注意力
- 块间整体关联性:
rij=ninj1TRij1
第一个 1T∈1×ni,第二个 1∈nj×1
这样就计算了 Rij 中块 i 的每个原子对块 j 中每个原子的注意力分数之和,在除以矩阵中元素数量得到块 i 和块 j 间的原子交互的平均强度
- 计算块 j 对块 i 的块级注意力权重 βij:
βij=∑j∈N(i)exp(rij)exp(rij)
其中 N(i)表示 块 i 的相邻块,做一个 softmax 的归一化,得到一个和为 1 的块间的注意力权重分布
注
当 i=j 时,就是 self-loop 针对块内的作用
⭐更新公式
- 更新公式:
原子 p 在块 i 中从块 j 接收到的消息 mij,p:
mij,pHi′[p]Xi′[p]=βij(αij[p]⊙ϕx( Qi[p] ∣∣ Kj ∣∣ RBF(Dij[p])))=Hi[p]+j∈N(i)∑βijϕh(αij[p]⋅Vj)=Xi[p]+只考虑配体与口袋的残基⎩⎨⎧0,∑j∈N(i)mij,p⋅Xij[p],if i belongs to other protein residuesif i belongs to ligand or pocket residues
等变FFN
特征质心:hc=centroid(Hi)
几何质心:xc=centroid(Xi)
原子相对于块质心的相对坐标 Δxp 及其距离嵌入 rp:
Δxp=Xi[p]−xc,rp=RBF(∥Δxp∥2)
FFN 更新公式:
H′[p]Xi′[p]=H[p]+σh(Hi[p],hc,rp)=Xi[p]+Δxpσx(Hi[p],hc,rp)
使用 LayerNorm 加速并维持训练的稳定性
关键作用:
引入非线性,学习更复杂的特征
质心特征学习
整个计算过程所用变量都能保持E(3)等变性
Tip 3:带有结构适配器的序列细化模块(Sequence refinement with pLMs and adapters)
利用微调 pLM 来帮助改进蛋白质口袋序列 —— 通过 adapter 向 pLM 注入先前网络得到的结构信息
同时在训练时也只训练 adapter,冻结其他权重
序列-结构交叉注意力机制(Sequence–structure cross-attention)
- 结构特征 Hstruct={h1struct,h2struct⋯hNsstruct}
第 i 个残基的结构表示:histruct=mean pooling(Hi)
序列特征 Hseq={h1seq,h2seq⋯hNsseq}
构建一个经典的 CrossAttention:
Q=HseqWQ,K=HstructWK,V=HstructWVCrossAttention(Q1,K2,V2)=Softmax(drQ1K2⊤)V2
这里下标表示来自两个不同的序列
Bottleneck FFN
学习非线性与抽象特征
