首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >课前准备--蛋白建模AlphaFold 2与AlphaFold 3

课前准备--蛋白建模AlphaFold 2与AlphaFold 3

原创
作者头像
追风少年i
发布2026-08-23 08:42:24
发布2026-08-23 08:42:24
1270
举报

作者,Evil Genius

AlphaFold经历了三个版本,基本上大课题组做蛋白预测都用的这个。

至于蛋白结构预测为什么如此重要,这个我相信大家比我更清楚。

我们先来看看AlphaFold 2

可以把 AlphaFold 2(AF2) 理解成蛋白质结构预测领域一个非常重要的分水岭。它真正厉害的地方并不是简单地“输入氨基酸序列 → 输出三维结构”,而是把进化信息(MSA)+ 残基对关系(pair representation)+ 深度注意力网络(Evoformer)+ 几何约束(Invariant Point Attention)+ 迭代优化(recycling)整合成了一个端到端结构预测系统。

AlphaFold 2 的核心论文发表于 2021 年 Nature,在 CASP14 中表现接近实验结构精度。

下面按照“生物学问题 → 输入 → 网络 → Evoformer → Structure Module → Loss → Recycling → 输出 → 实际使用”的顺序详细讲。


一、首先搞清楚:AlphaFold 2到底解决什么问题?

传统蛋白质结构预测的问题是:

已知氨基酸序列,如何预测蛋白质最终折叠成什么三维结构?

例如:

代码语言:javascript
复制
MKTIIALSYIFCLVFADYKDDDDK...

AlphaFold 2希望得到:

代码语言:javascript
复制
Residue 1  → x1,y1,z1
Residue 2  → x2,y2,z2
Residue 3  → x3,y3,z3
...
Residue N  → xN,yN,zN

最终形成:

代码语言:javascript
复制
α-helix
      /------\
     /        \
----/          \____
                 \
                  β-sheet

但这里有一个非常重要的概念:

AlphaFold 2不是通过物理模拟把蛋白质“折叠出来”的。

它不是:

代码语言:javascript
复制
氨基酸
 ↓
分子动力学
 ↓
物理能量最低状态
 ↓
蛋白结构

而更接近:

代码语言:javascript
复制
氨基酸序列
      +
进化信息
      ↓
深度神经网络
      ↓
残基之间应该是什么空间关系
      ↓
三维几何结构
      ↓
不断修正
      ↓
最终结构

这就是 AlphaFold 2 和传统 molecular dynamics / protein folding 方法最根本的区别。


二、AlphaFold 2最核心的思想:进化告诉“谁和谁应该靠近”

这是理解 AlphaFold 2 的第一关键。

假设一个蛋白质有:

代码语言:javascript
复制
A B C D E F G H I J

如果在很多物种中发现:

代码语言:javascript
复制
A ↔ G

这两个位置经常共同发生突变。

例如:

代码语言:javascript
复制
物种1: A.....G
物种2: V.....D
物种3: I.....E
物种4: L.....K

说明:

A 和 G 可能存在结构上的相互作用。

因为如果两个残基在三维空间中接触,一个位置发生变化后,另一个位置可能也必须发生变化,以维持蛋白质结构稳定。

这就是:

co-evolution(协同进化)

因此:

代码语言:javascript
复制
MSA
 ↓
co-evolution
 ↓
哪些 residue 可能互相接触
 ↓
空间结构约束

AlphaFold 2 最大的突破之一,就是让神经网络直接学习这种复杂关系,而不是人工计算一个简单的 covariance/contact map。论文明确指出,AlphaFold 2 将 MSA 和 pairwise features 联合编码,并通过 Evoformer 在两种表示之间反复交换信息。


三、AlphaFold 2整体架构

可以先记住这一张“总地图”:

代码语言:javascript
复制
Protein sequence
                       │
                       ↓
                ┌──────────────┐
                │   MSA搜索     │
                │ homologous    │
                │ sequences     │
                └──────┬───────┘
                       │
                       ↓
                ┌──────────────┐
                │ Template     │
                │ information   │
                └──────┬───────┘
                       │
                       ↓
          ┌─────────────────────────┐
          │       Input features    │
          └────────────┬────────────┘
                       │
                       ↓
             ┌──────────────────┐
             │    Evoformer     │
             │                  │
             │ MSA representation
             │        ↕         │
             │ Pair representation
             └────────┬─────────┘
                      │
                      ↓
             ┌──────────────────┐
             │ Structure Module │
             │                  │
             │ Invariant Point  │
             │ Attention (IPA)  │
             └────────┬─────────┘
                      │
                      ↓
             3D protein structure
                      │
                      ↓
                  Recycling
                      │
                      └──────→ 再进入网络

AlphaFold 2官方代码目前仍然提供完整的 inference pipeline,包括 monomer、Multimer 以及 v2.3.0 的实现。


四、第一步:输入到底是什么?

很多人以为:

AlphaFold 2输入就是 FASTA。

实际上真正进入神经网络的信息比 FASTA 丰富很多。

主要包括:

1. Protein sequence

例如:

代码语言:javascript
复制
MKTIIALSYIFCLVFAD

长度:

代码语言:javascript
复制
N_res = 17

2. MSA

例如:

代码语言:javascript
复制
Query      MKTIIALSYIFCLVFAD
Species1   MKTIIALSYIFCLVFAD
Species2   MKTI--LSYIFCLIFAD
Species3   MKTIIAL-YIFCLVFAD
Species4   MKTVIALSYIFCLVFAD
...

可以表示成:

代码语言:javascript
复制
N_seq × N_res

例如:

代码语言:javascript
复制
5000 × 300

3. Template

如果数据库中存在结构相似的蛋白:

代码语言:javascript
复制
PDB structure
      ↓
template
      ↓
提供:
距离
角度
残基对应关系
结构信息

但是非常重要:

AlphaFold 2并不依赖必须存在一个高度相似的 template。

这也是它相比传统 homology modeling 的重要优势之一。CASP14 中很多没有近似实验结构模板的蛋白仍然能获得很高质量预测。


五、MSA到底是什么?

MSA:

Multiple Sequence Alignment

假设你有一个蛋白:

代码语言:javascript
复制
Protein A
M K T I I A L S Y I F C L V F A D

然后搜索数据库,发现很多同源蛋白:

代码语言:javascript
复制
A  M K T I I A L S Y I F C L V F A D
B  M K T I I A L S Y I F C L V F A D
C  M K T V I A L S Y I F C L V F A D
D  M K T I I A L S Y I F C L I F A D
E  M K T I I A L S Y I F C L V F A E

于是形成:

代码语言:javascript
复制
residue
                   ↓

       1 2 3 4 5 6 7 8 9...
       ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

seq1   M K T I I A L S Y
seq2   M K T I I A L S Y
seq3   M K T V I A L S Y
seq4   M K T I I A L S Y
seq5   M K T I I A L S Y

神经网络从这里面寻找:

代码语言:javascript
复制
哪些位置保守?
哪些位置共同变化?
哪些位置可能空间接触?

六、AlphaFold 2的第一个核心:MSA Representation

AlphaFold 2会把 MSA 转化为一个高维 embedding。

假设:

代码语言:javascript
复制
N_seq = 512
N_res = 300
c_m = 256

那么:

代码语言:javascript
复制
MSA representation

512 × 300 × 256

可以理解成:

对每一个“序列 × residue”建立一个高维向量。

例如:

代码语言:javascript
复制
MSA[sequence 20][residue 153]

→

[0.31, -0.72, 0.18, ...]

这些数字不具有简单的生物学解释,但网络会利用它们表示:

  • residue identity
  • conservation
  • evolutionary relationship
  • mutation patterns
  • sequence context

七、第二个核心:Pair Representation

这是 AlphaFold 2 最重要、也是最容易被初学者忽略的概念之一。

假设蛋白有:

代码语言:javascript
复制
N = 300 residues

那么任意两个残基:

代码语言:javascript
复制
(i,j)

都可以建立一个 pair。

例如:

代码语言:javascript
复制
residue 10
     ↕
residue 200

因此有:

代码语言:javascript
复制
300 × 300

个 residue pair。

Pair representation:

代码语言:javascript
复制
N_res × N_res × c_z

例如:

代码语言:javascript
复制
300 × 300 × 128

八、Pair representation代表什么?

可以把:

代码语言:javascript
复制
Pair[i,j]

粗略理解为:

residue i 和 residue j 之间存在什么样的空间/进化关系?

例如:

代码语言:javascript
复制
Pair[10,200]

可能逐渐学到:

代码语言:javascript
复制
distance ≈ 8 Å

或者:

代码语言:javascript
复制
可能接触

或者:

代码语言:javascript
复制
orientation relationship

或者:

代码语言:javascript
复制
β-sheet pairing

注意:

Pair representation不是简单的距离矩阵。

它是一个高维 latent representation。

最终网络可能从中预测:

代码语言:javascript
复制
distance distribution

例如:

代码语言:javascript
复制
distance between i,j

0-4 Å     0.02
4-6 Å     0.18
6-8 Å     0.53
8-10 Å    0.21
10-12 Å   0.05
>12 Å     0.01

九、为什么要同时存在 MSA 和 Pair?

这是 AlphaFold 2 的核心设计。

可以把:

MSA

理解为:

“从进化角度,这些残基之间有什么关系?”

而:

Pair

理解为:

“从结构角度,这两个残基之间应该有什么关系?”

二者互相帮助:

代码语言:javascript
复制
MSA
 ↓
发现 co-evolution
 ↓
Pair
 ↓
发现空间关系
 ↓
反过来帮助 MSA理解
 ↓
进一步更新 Pair
 ↓
……

所以不是:

代码语言:javascript
复制
MSA → Pair → structure

而是:

代码语言:javascript
复制
MSA ⇄ Pair

不断交换信息。

这个过程就是:

Evoformer


十、Evoformer到底是什么?

Evoformer 是 AlphaFold 2 的核心 backbone。

可以简单理解成:

一个专门为“蛋白质进化信息 + 空间关系推理”设计的 Transformer。

论文中,AlphaFold 2 的 trunk 通过重复 Evoformer block,将 MSA representation 和 pair representation 不断更新。原始模型包含 48 个 Evoformer blocks。(Nature)


十一、Evoformer最重要的几个操作

理解 AlphaFold 2,至少要掌握:

  1. MSA attention
  2. Pair-biased attention
  3. Outer Product Mean
  4. Triangle Multiplicative Update
  5. Triangle Attention

其中:

Triangle Update 是 AlphaFold 2 非常关键的创新。


十二、为什么需要 Triangle Update?

假设:

代码语言:javascript
复制
A
|\
| \
|  \
B---C

三个 residue:

代码语言:javascript
复制
A
B
C

如果:

代码语言:javascript
复制
A-B
B-C

的空间关系已经比较明确,那么:

代码语言:javascript
复制
A-C

也不能随便。

这就是三角形约束。

蛋白质三维空间中的 pair relationships 必须相互一致。

例如:

代码语言:javascript
复制
distance(A,B) = 5 Å
distance(B,C) = 5 Å

那么:

代码语言:javascript
复制
distance(A,C)

不能是:

代码语言:javascript
复制
100 Å

因此 AlphaFold 2 不只是看:

代码语言:javascript
复制
Pair(A,B)

而是让:

代码语言:javascript
复制
Pair(A,B)
Pair(B,C)
Pair(A,C)

互相约束。


十三、Triangle Multiplicative Update

假设:

代码语言:javascript
复制
Z_ij

表示 residue i 和 j 的 pair representation。

网络可以利用:

代码语言:javascript
复制
Z_ik
Z_kj

去更新:

代码语言:javascript
复制
Z_ij

也就是:

代码语言:javascript
复制
i -------- j
 \        /
  \      /
   \    /
      k

因此:

代码语言:javascript
复制
i-k
+
k-j
↓
i-j

这就是 triangle multiplicative update 的核心思想。

它本质上在学习:

三个 residue 之间的几何一致性。

论文中明确将 triangle multiplicative update 和 triangle attention 作为 Evoformer 中 pair representation 的关键更新机制。


十四、Triangle Attention

另一类操作是:

代码语言:javascript
复制
Triangle attention

可以理解成:

在考虑 residue pair 时,不只考虑 i 和 j,而是让第三个 residue k 参与判断。

因此:

代码语言:javascript
复制
Pair(i,j)

的更新依赖:

代码语言:javascript
复制
Pair(i,k)
Pair(k,j)

这使网络可以逐渐构建一个全局一致的三维结构。


十五、Outer Product Mean

这是:

代码语言:javascript
复制
MSA → Pair

非常重要的一条信息通路。

MSA 中两个位置:

代码语言:javascript
复制
i
j

在不同序列中共同发生变化。

网络通过 outer product 等操作把这种信息汇总:

代码语言:javascript
复制
MSA information
       ↓
co-evolution information
       ↓
Pair representation

所以:

代码语言:javascript
复制
MSA
 ↓
Outer Product Mean
 ↓
Pair

这就是把进化信息转换成结构信息的重要机制之一。


十六、Evoformer最终得到什么?

经过很多 Evoformer blocks 后:

代码语言:javascript
复制
MSA representation
        +
Pair representation
        ↓
更加成熟的结构信息

然后进入:

Structure Module


十七、Structure Module是什么?

Evoformer主要解决:

“这个蛋白应该长什么样?”

Structure Module负责:

“把这个抽象的结构信息真正变成三维坐标。”

这是从:

代码语言:javascript
复制
latent representation

到:

代码语言:javascript
复制
3D coordinates

的关键一步。


十八、AlphaFold 2为什么不用直接预测xyz坐标?

这是一个非常重要的深度学习设计。

假设直接预测:

代码语言:javascript
复制
Cα1 = (x1,y1,z1)
Cα2 = (x2,y2,z2)
...

存在一个问题:

如果把整个蛋白旋转:

代码语言:javascript
复制
旋转前:

   protein
     ↓

旋转后:

      /
     /

蛋白质本身没有变化。

但是:

代码语言:javascript
复制
x,y,z

全部变化。

因此神经网络如果直接预测绝对坐标,会遇到:

rotation / translation dependence


十九、AlphaFold 2采用Residue Frame

AlphaFold 2给每一个 residue 建立一个局部坐标系。

可以理解为:

代码语言:javascript
复制
Residue i

        C
       /
      CA -------- N

每个 residue 有:

代码语言:javascript
复制
Rotation R_i
Translation t_i

也就是一个刚体 frame:

代码语言:javascript
复制
Frame_i = (R_i,t_i)

因此:

代码语言:javascript
复制
residue
↓
local coordinate system

这样可以更加自然地描述蛋白质几何。


二十、Invariant Point Attention(IPA)

这是 AlphaFold 2 Structure Module 最关键的创新之一。

IPA:

Invariant Point Attention

它不是普通 Transformer attention。

普通 attention:

代码语言:javascript
复制
Q · K

而 IPA 同时考虑:

代码语言:javascript
复制
sequence features
+
pair features
+
3D geometric points

可以理解成:

代码语言:javascript
复制
residue i
                       │
             ┌─────────┴─────────┐
             ↓                   ↓
       sequence information   3D geometry
             │                   │
             └─────────┬─────────┘
                       ↓
                     IPA
                       ↓
                更新 residue
                的空间位置

关键是:

无论你把整个蛋白质整体旋转还是平移,IPA得到的结果应该保持一致。

这叫:

invariance / equivariance

论文中指出,IPA通过在 residue local frame 中生成 query/key/value points,并通过坐标变换保证对全局旋转和平移的不变性。


二十一、为什么“几何等变”这么重要?

假设真实蛋白:

代码语言:javascript
复制
A
       /
      B
     /
    C

你把它旋转:

代码语言:javascript
复制
C
         \
          B
           \
            A

这两个结构其实完全一样。

所以神经网络应该知道:

代码语言:javascript
复制
Structure 1
=
Structure 2

而不是认为:

代码语言:javascript
复制
Structure 1 ≠ Structure 2

这就是几何深度学习里面非常重要的:

SE(3) invariance/equivariance

AlphaFold 2 的 Structure Module 正是利用这种思想处理三维结构。


二十二、Structure Module如何逐渐产生结构?

可以把它理解成:

代码语言:javascript
复制
初始:

所有 residue
都没有明确位置

      ↓

Iteration 1

粗略形成:
α-helix
β-sheet
loop

      ↓

Iteration 2

调整:
residue-residue distance

      ↓

Iteration 3

调整:
backbone orientation

      ↓

Iteration 4

调整:
side-chain geometry

      ↓

最终结构

也就是说:

不是一步预测完成,而是不断 refinement。


二十三、Recycling:AlphaFold 2非常重要的机制

这是 AlphaFold 2 另一个关键创新。

普通网络:

代码语言:javascript
复制
Input
 ↓
Network
 ↓
Output

AlphaFold 2:

代码语言:javascript
复制
Input
 ↓
Evoformer
 ↓
Structure Module
 ↓
Structure
 ↓
再次进入网络
 ↓
进一步修正
 ↓
Structure
 ↓
再次进入
 ↓
...

这个过程叫:

Recycling


二十四、为什么 Recycling有效?

因为第一次预测可能是:

代码语言:javascript
复制
大致正确

但是:

代码语言:javascript
复制
helix A
helix B
loop C

之间的相对位置可能不正确。

第二轮可以根据第一次的结构:

代码语言:javascript
复制
发现:
A-B距离不合理

↓
修正

B-C角度不合理

↓
修正

整体domain orientation不合理

↓
修正

最终:

代码语言:javascript
复制
粗结构
 ↓
精结构
 ↓
更精细结构

AlphaFold 2 论文显示 recycling 对准确率有显著贡献,而且额外训练成本相对较小。


二十五、AlphaFold 2到底预测什么?

最终主要得到:

1. Backbone

代码语言:javascript
复制
N
CA
C
O

2. Side chain

例如:

代码语言:javascript
复制
ARG
LYS
ASP
GLU
TRP
TYR

每个 residue 的 side-chain χ angles。


3. 3D coordinates

最终输出类似:

代码语言:javascript
复制
ATOM      1  N   ALA A   1 ...
ATOM      2  CA  ALA A   1 ...
ATOM      3  C   ALA A   1 ...
ATOM      4  O   ALA A   1 ...

最终可以生成:

代码语言:javascript
复制
PDB

或者:

代码语言:javascript
复制
mmCIF

二十六、AlphaFold 2如何判断自己预测得准不准?

这是实际科研中非常重要的问题。

AlphaFold 2不会只给你:

代码语言:javascript
复制
structure.pdb

还会给:

代码语言:javascript
复制
pLDDT
pTM
PAE

二十七、pLDDT

全称:

predicted Local Distance Difference Test

它衡量:

局部结构预测有多可靠。

通常可以粗略理解:

pLDDT

含义

>90

非常高

70–90

比较可靠

50–70

低可信

<50

很不可靠

例如:

代码语言:javascript
复制
Residue

1    96
2    95
3    94
...
80   92
81   45
82   32
83   28

那么:

代码语言:javascript
复制
1–80

可能是稳定结构域。

而:

代码语言:javascript
复制
81–83

可能是:

代码语言:javascript
复制
disordered region

二十八、pLDDT为什么重要?

例如你做:

代码语言:javascript
复制
Molecular docking

发现 ligand docking site:

代码语言:javascript
复制
pLDDT = 96

这是比较好的。

但是如果:

代码语言:javascript
复制
binding site pLDDT = 42

那么直接拿这个结构做 docking 就需要非常谨慎。

因为:

AlphaFold 可能根本没有准确预测这个区域。

这和你之前问的 Vina → PyRosetta → MD 工作流非常相关。


二十九、PAE是什么?

PAE:

Predicted Aligned Error

它和 pLDDT 不一样。

pLDDT:

某一个 residue 本身准不准?

PAE:

两个区域之间的相对位置准不准?

例如一个蛋白:

代码语言:javascript
复制
Domain A

Domain B

可能:

代码语言:javascript
复制
Domain A内部:
pLDDT = 95

Domain B内部:
pLDDT = 93

但是:

代码语言:javascript
复制
A ↔ B

相对位置不确定。

那么:

代码语言:javascript
复制
PAE(A,B)

可能很高。


三十、这对于多结构域蛋白特别重要

例如:

代码语言:javascript
复制
Domain 1
   ┌───────────┐
   │           │
   └───────────┘
          \
           \
        linker
             \
        ┌───────────┐
        │ Domain 2  │
        └───────────┘

可能:

代码语言:javascript
复制
Domain 1:高置信度
Domain 2:高置信度

Domain 1 ↔ Domain 2:
低置信度

这并不代表:

Domain 1 和 Domain 2 本身预测错了。

而可能代表:

两个 domain 的相对 orientation 不确定。

这是分析 AlphaFold 结构时非常容易误判的地方。


三十一、AlphaFold 2的Loss是什么?

如果想真正理解 AlphaFold 2 的深度学习机制,需要理解 loss。

最核心的结构损失之一:

FAPE

Frame Aligned Point Error

它不是简单:

代码语言:javascript
复制
predicted xyz
-
true xyz

而是:

代码语言:javascript
复制
预测结构
      ↓
在 residue local frame 下
      ↓
与真实结构比较

因此:

代码语言:javascript
复制
整体旋转
整体平移

不会影响结构误差。


三十二、FAPE可以怎么理解?

假设:

代码语言:javascript
复制
Predicted:

      A
     /
    B

真实:

代码语言:javascript
复制
A
     /
    B

即使整体旋转:

代码语言:javascript
复制
Predicted:

A
 \
  B

从全局 xyz 看:

代码语言:javascript
复制
xyz完全不同

但从 residue local frame 看:

代码语言:javascript
复制
relative geometry

仍然可能完全正确。

因此 FAPE 更符合蛋白质结构的几何本质。

将 FAPE 作为主要结构训练损失之一,并通过多个 residue frames 对预测原子位置进行比较。


三十三、AlphaFold 2还使用哪些Loss?

不是只有 FAPE。

还包括:

Distogram loss

预测:

代码语言:javascript
复制
residue i ↔ residue j

的距离分布。


MSA masked loss

类似 BERT:

代码语言:javascript
复制
M K T I [MASK] A L

预测:

代码语言:javascript
复制
I

帮助模型学习进化关系。


lDDT loss

预测局部结构准确度。


Side-chain loss

帮助预测:

代码语言:javascript
复制
χ1
χ2
χ3
χ4

Structure violation loss

惩罚:

代码语言:javascript
复制
bond length violation
bond angle violation
steric clash

等等。


三十四、AlphaFold 2为什么需要“自蒸馏”?

这是另一个很漂亮的设计。

PDB:

代码语言:javascript
复制
有结构

但是:

代码语言:javascript
复制
蛋白质序列数量
≫
实验结构数量

所以 DeepMind 先训练一个模型:

代码语言:javascript
复制
PDB
 ↓
AlphaFold
 ↓
预测 350,000+ sequences

得到:

代码语言:javascript
复制
sequence
+
predicted structure

然后筛选高置信度结构,用于再次训练。

也就是:

代码语言:javascript
复制
实验结构
 ↓
初始AlphaFold
 ↓
大量预测结构
 ↓
高置信预测
 ↓
pseudo-label
 ↓
重新训练AlphaFold

这就是:

Self-distillation

论文报道这一过程可以显著提升模型性能。


三十五、AlphaFold 2的完整工作流

现在把整个系统串起来:

代码语言:javascript
复制
FASTA
               │
               ↓
       ┌────────────────┐
       │ MSA Search     │
       │ UniRef/BFD/... │
       └───────┬────────┘
               │
               ↓
              MSA
               │
               ├───────────────┐
               │               │
               ↓               ↓
        MSA representation   Templates
               │               │
               └───────┬───────┘
                       ↓
                 Evoformer
                       │
             ┌─────────┴─────────┐
             ↓                   ↓
          MSA repr             Pair repr
             ↑                   ↑
             └───────互相更新─────┘
                       │
                       ↓
                Structure Module
                       │
                       ↓
                  IPA + frames
                       │
                       ↓
                  3D structure
                       │
                       ↓
                   Recycling
                       │
                       └─────────────┐
                                     ↓
                                  Evoformer
                                     ↓
                                  Refinement
                                     ↓
                                  Structure

三十六、AlphaFold 2真正的“灵魂”是什么?

如果把整个 AlphaFold 2 压缩成几个核心概念,我认为最重要的是:

① MSA

告诉模型:

进化上哪些 residue 是相关的。

② Pair representation

告诉模型:

哪些 residue 可能存在空间关系。

③ Evoformer

解决:

如何让进化信息和空间信息相互推理。

④ Triangle update

解决:

三维空间中的几何一致性。

⑤ Structure Module

解决:

如何把抽象 representation 变成真正的 3D structure。

⑥ IPA

解决:

如何在三维空间中进行具有几何不变性的 attention。

⑦ Recycling

解决:

如何不断修正已经预测出来的结构。


三十七、AlphaFold 2和传统同源建模有什么区别?

可以这样比较:

方法

核心思想

Homology modeling

找相似结构模板

Threading

把序列套到已有 fold

Rosetta

搜索/优化构象

MD

根据物理力场模拟

AlphaFold 1

深度学习 + distance/contact

AlphaFold 2

MSA + Evoformer + geometric deep learning + end-to-end structure prediction

AlphaFold 2最大的突破就是:

不再把结构预测拆成很多人工步骤,而是让网络端到端学习从进化信息到三维结构之间的映射。


三十八、AlphaFold 2和Vina有什么关系?

这个非常值得掌握。

代码语言:javascript
复制
PyRosetta
AutoDock Vina
GROMACS

可以把它们放在一个结构生物学工作流里:

代码语言:javascript
复制
Protein sequence
                    │
                    ↓
               AlphaFold 2
                    │
                    ↓
              Protein structure
                    │
             ┌──────┴───────┐
             ↓              ↓
        PyRosetta          Vina
             │              │
       structure       ligand docking
        refinement          │
             │              ↓
             └────────→ binding pose
                            │
                            ↓
                         MD
                       GROMACS
                            │
                            ↓
                 protein-ligand dynamics
                            │
                            ↓
                  MM/PBSA / interaction

所以:

AlphaFold 2负责“蛋白长什么样”。

Vina负责“配体可能怎么进去”。

PyRosetta可以做局部构象优化/结构设计。

GROMACS负责“这个复合物在动力学上是否稳定”。

这几个工具实际上是互补的。


三十九、但AlphaFold 2不是“万能结构预测器”

这一点尤其重要。

AlphaFold 2最擅长的是:

单个蛋白质相对稳定的天然结构。

但是它存在明显局限。

1. Intrinsically disordered regions

例如:

代码语言:javascript
复制
p53

中的一些 intrinsically disordered region。

可能:

代码语言:javascript
复制
pLDDT ↓

2. Domain orientation

两个 domain:

代码语言:javascript
复制
Domain A
+
Domain B

可能分别预测很好,但:

代码语言:javascript
复制
A-B相对位置

不确定。


3. Protein dynamics

AlphaFold主要预测:

一个代表性结构。

而不是完整的:

代码语言:javascript
复制
conformational ensemble

也就是说:

代码语言:javascript
复制
apo
active
inactive
intermediate

这些不同状态并不一定都能正确获得。


4. Ligand binding

经典 AlphaFold 2:

代码语言:javascript
复制
主要针对 protein structure

并不是专门的:

代码语言:javascript
复制
protein-ligand complex prediction

这也是后来 AlphaFold 3 非常重要的升级方向。


5. Protein-protein interaction

AlphaFold-Multimer可以做,但其稳定性和准确性与单体 AlphaFold 2 不完全相同。官方仓库也明确说明 Multimer 的实现与 monomer 系统存在稳定性差异。


四十、AlphaFold 2和AlphaFold 3最本质的区别

你之前已经开始学习 AlphaFold 3,这里正好串起来。

AlphaFold 2:

主要是:

代码语言:javascript
复制
Protein
 ↓
Protein structure

核心:

代码语言:javascript
复制
MSA
Evoformer
Structure Module
IPA

AlphaFold 3:

思路进一步扩展:

代码语言:javascript
复制
Protein
DNA
RNA
Ligand
Ion
Modified residue
        ↓
Complex structure

因此:

代码语言:javascript
复制
AF2
=
protein structure prediction

AF3
=
biomolecular complex structure prediction

这也是为什么 AlphaFold 3 不再简单沿用 AlphaFold 2 的结构模块,而采用了更加统一的 diffusion-based architecture。你前面看的 AlphaFold 3 论文中提到的 diffusion-based architecture,就是理解 AF3 的关键。


四十一、如果你要真正“学懂”AlphaFold 2,建议分成四个层次

考虑到你目前已经在学习:

代码语言:javascript
复制
Python
PyRosetta
AutoDock Vina
GROMACS

我不建议你一开始就直接读 AlphaFold 2 全部源码。

应该这样学:

Level 1:生物学

先掌握:

代码语言:javascript
复制
Protein sequence
↓
secondary structure
↓
tertiary structure
↓
domain
↓
protein folding

然后理解:

代码语言:javascript
复制
MSA
homology
conservation
co-evolution
contact
distance

Level 2:深度学习

掌握:

代码语言:javascript
复制
Transformer
Attention
Self-attention
Embedding
Encoder
Residual connection
LayerNorm

尤其是:

代码语言:javascript
复制
Q
K
V

一定要彻底搞懂。


Level 3:结构生物学 + 几何深度学习

重点学习:

代码语言:javascript
复制
Rotation
Translation
Rigid body
Coordinate system
Frame
SE(3)
Invariant
Equivariant
Quaternion
Rotation matrix

然后理解:

代码语言:javascript
复制
IPA
FAPE

Level 4:AlphaFold源码

最后再进入:

代码语言:javascript
复制
alphafold/
├── data/
├── model/
├── common/
├── protein/
├── residue_constants.py
├── run_alphafold.py
└── ...

官方仓库提供了 AlphaFold 2 inference pipeline 和相关模型实现。(GitHub)

AlphaFold 2 官方 GitHub 源码


四十二、真正需要记住的一张图

如果以后要向别人解释 AlphaFold 2,可以直接画:

代码语言:javascript
复制
FASTA
                      │
                      ↓
              Homologous sequences
                      │
                      ↓
                     MSA
                      │
                      ↓
        ┌─────────────────────────┐
        │       Evoformer         │
        │                         │
        │   MSA representation    │
        │          ↕              │
        │   Pair representation   │
        │                         │
        │  Attention              │
        │  Outer Product          │
        │  Triangle Update        │
        │  Triangle Attention     │
        └────────────┬────────────┘
                     │
                     ↓
             Structure Module
                     │
                     ↓
          Invariant Point Attention
                     │
                     ↓
            Residue rigid frames
                     │
                     ↓
              3D coordinates
                     │
                     ↓
                  FAPE
                     │
                     ↓
                 Recycling
                     │
                     └──────→ 再预测

                     ↓
              Final structure
                     │
          ┌──────────┼──────────┐
          ↓          ↓          ↓
       pLDDT        PAE        pTM

一句话总结 AlphaFold 2:

AlphaFold 2不是简单地从氨基酸序列“猜”三维结构,而是首先利用MSA中的进化信息建立残基之间的关系,再通过Evoformer反复推理MSA与pair关系,利用Triangle Update建立三维几何一致性,最后通过具有几何等变性的Structure Module/IPA生成三维坐标,并通过recycling反复修正结构。 )

接下来真正进入 “AlphaFold 2源码级理解”,最值得继续深入的是 Evoformer 的每一个模块到底怎么计算(MSA Row Attention、MSA Column Attention、Outer Product Mean、Triangle Multiplication、Triangle Attention)以及 Structure Module 中 IPA、FAPE、rigid frame 的数学公式。这部分弄懂之后,AlphaFold 2 的核心算法基本就真正吃透了(当然我是不行了)。

接下来我们看看AlphaFold 3

前面已经把 AlphaFold 2 的 MSA → Evoformer → Structure Module → IPA → Recycling 这条路线理解了一遍,所以这次讲 AlphaFold 3,重点放在:

AF3 相比 AF2 到底改了什么?为什么要改?Diffusion 是怎么工作的?Pairformer 是什么?为什么 AF3 能处理蛋白质–小分子、蛋白质–DNA/RNA、离子、修饰残基?

这也是理解 AF3 的关键。

AlphaFold 3 于 2024 年发表在 Nature。它最大的变化不是简单地“AF2升级版”,而是把预测目标从以蛋白质结构为中心,扩展到整个生物分子复合物,并把最终三维结构生成机制从 AF2 的 Structure Module 改成了 diffusion-based generative model


一、先用一句话理解 AlphaFold 3

如果 AlphaFold 2 可以概括为:

“根据蛋白质序列和进化信息,预测蛋白质三维结构。”

那么 AlphaFold 3 更接近:

“根据蛋白质、DNA、RNA、小分子、离子和修饰残基等输入,直接生成整个生物分子复合物的三维原子结构。”

也就是:

代码语言:javascript
复制
AlphaFold 2

Protein sequence
       ↓
MSA
       ↓
Evoformer
       ↓
Structure Module
       ↓
Protein structure

而:

代码语言:javascript
复制
AlphaFold 3

Protein
DNA
RNA
Ligand
Ion
Modified residue
       ↓
统一的分子表示
       ↓
Pairformer
       ↓
Diffusion module
       ↓
所有原子的3D坐标
       ↓
Biomolecular complex

这是 AF3 最重要的思想转变。论文明确指出,AF3 可以联合预测包含蛋白质、核酸、小分子、离子和修饰残基的复合物结构。


二、为什么 AlphaFold 2 不够?

这其实是理解 AF3 为什么出现的关键。

AF2 最擅长的是:

代码语言:javascript
复制
Protein
   ↓
Protein structure

后来可以通过 AlphaFold-Multimer 做:

代码语言:javascript
复制
Protein A
Protein B
   ↓
Protein-protein complex

但是生命体系远远不只有蛋白质。

例如:

蛋白质 + DNA

代码语言:javascript
复制
Transcription factor
       +
       DNA

蛋白质 + RNA

代码语言:javascript
复制
RNA-binding protein
       +
       RNA

蛋白质 + 小分子

代码语言:javascript
复制
Protein
   +
ATP

或者:

代码语言:javascript
复制
Kinase
 +
small molecule inhibitor

蛋白质 + 金属离子

代码语言:javascript
复制
Protein
  +
Zn2+

抗体 + 抗原

代码语言:javascript
复制
Antibody
   +
Antigen

糖基化蛋白

代码语言:javascript
复制
Protein
  +
Glycan

这些都属于:

biomolecular interactions

而不是单纯的 protein folding。

所以 AF3 的目标发生了变化:

代码语言:javascript
复制
AF2

Protein structure prediction
             ↓
       protein-centric

AF3

Biomolecular structure prediction
             ↓
       complex-centric

三、AF3到底能预测哪些东西?

AF3 的输入可以包括:

分子类型

AF3

Protein

DNA

RNA

Small molecule

Ion

Modified residue

Covalent modification

部分支持

Protein-protein

Protein-DNA

Protein-RNA

Protein-ligand

Antibody-antigen

论文报道 AF3 在 protein–ligand、protein–nucleic acid 和 antibody–antigen 等任务上,相比此前专门方法取得明显提升。


四、AF3最重要的变化:从“预测蛋白结构”变成“生成原子坐标”

这是 AF2 和 AF3 最本质的区别之一。

AF2 Structure Module 的思路是:

代码语言:javascript
复制
residue representation
        ↓
residue frame
        ↓
side-chain torsion
        ↓
atom coordinates

也就是说 AF2 对蛋白质的表示高度依赖:

代码语言:javascript
复制
amino acid
   ↓
backbone frame
   ↓
side-chain torsion

这对于蛋白质非常自然。

但如果你现在突然加入:

代码语言:javascript
复制
ATP
DNA
RNA
Zn2+
small molecule
glycan

问题就来了。

这些分子没有统一的:

代码语言:javascript
复制
protein residue frame
+
χ angles

所以 AF3 选择了一个非常大胆的方案:

不再专门为蛋白质设计坐标生成机制,而是直接预测整个体系的原子坐标。

论文明确指出,AF3 用 diffusion module 直接预测 raw atom coordinates,取代了 AF2 中基于 amino-acid-specific frames 和 side-chain torsion angles 的 Structure Module。


五、这就是 Diffusion 的核心作用

你可以先把 AF3 的 diffusion 理解成:

从一团随机噪声开始,逐渐把它“去噪”成一个合理的生物分子三维结构。

比如最终结构:

代码语言:javascript
复制
Protein + Ligand

     Protein
   ███████████
  █████████████
       ●
       │
     Ligand

AF3 不直接:

代码语言:javascript
复制
sequence
 ↓
xyz

而是:

代码语言:javascript
复制
sequence + molecular information
          ↓
       structural representation
          ↓
   random 3D coordinates
          ↓
       denoising
          ↓
       denoising
          ↓
       denoising
          ↓
     final structure

这就是:

Diffusion-based structure generation


六、什么是Diffusion?

如果之前接触过 Stable Diffusion、图像生成,那么思想其实非常类似。

图像 diffusion:

代码语言:javascript
复制
真实图片
  ↓
不断加噪
  ↓
纯噪声

训练网络学习:

代码语言:javascript
复制
纯噪声
  ↓
去噪
  ↓
图片

AF3:

代码语言:javascript
复制
真实蛋白质复合物结构
        ↓
      加噪声
        ↓
随机原子坐标

训练:

代码语言:javascript
复制
带噪结构
   ↓
Diffusion network
   ↓
真实结构

推理时反过来:

代码语言:javascript
复制
Random noise
     ↓
Denoising
     ↓
Denoising
     ↓
Denoising
     ↓
Denoising
     ↓
3D biomolecular complex

论文明确描述了这一过程:训练时给模型加入噪声的原子坐标,让模型预测真实坐标;推理时从随机噪声开始递归去噪得到最终结构。


七、为什么Diffusion特别适合AF3?

这里是一个非常深的原因。

假设:

代码语言:javascript
复制
Protein + ligand

配体可能有很多合理构象:

代码语言:javascript
复制
Pose 1
Pose 2
Pose 3
Pose 4

蛋白质也可能存在:

代码语言:javascript
复制
Conformation A
Conformation B
Conformation C

所以真实问题并不是:

“唯一正确答案是什么?”

而是:

“给定这些分子,哪些三维结构是合理的?”

这本质上是一个:

多模态分布

问题。

Diffusion model 天然适合:

代码语言:javascript
复制
P(structure | input)

也就是:

给定输入分子,生成可能的结构分布。

因此 AF3 可以通过不同 random seed 得到多个结构样本。


八、AF3的整体架构

可以先记住这一张图:

代码语言:javascript
复制
Input
                      │
        ┌─────────────┼─────────────┐
        ↓             ↓             ↓
     Protein         DNA           RNA
        ↓             ↓             ↓
     MSA/template   sequence      sequence

        ┌─────────────┼─────────────┐
        ↓             ↓             ↓
      Ligand         Ion        Modification
        └─────────────┬─────────────┘
                      ↓
             Input representations
                      │
                      ↓
               Pairformer
                      │
             ┌────────┴────────┐
             ↓                 ↓
       Single representation  Pair representation
             │                 │
             └────────┬────────┘
                      ↓
             Diffusion Module
                      ↑
                noisy coordinates
                      │
              iterative denoising
                      │
                      ↓
              all-atom coordinates
                      │
                      ↓
             Biomolecular complex

AF3 的 Pairformer 有 48 个 block;论文给出的 pair representation channel 为 128、single representation channel 为 384。


九、AF3第一阶段:Input representation

AF3首先需要把各种分子统一转换成机器学习能够处理的 representation。

例如:

代码语言:javascript
复制
Protein
DNA
RNA
Ligand
Ion

它们本身完全不同:

代码语言:javascript
复制
Protein → amino acids

DNA → nucleotides

RNA → nucleotides

Ligand → arbitrary chemical graph

Ion → atom

AF3的一个重要思想就是:

把不同类型的生物分子放到统一的结构建模框架中。


十、Token:AF3非常重要的概念

AF3不像 AF2 那样简单地把:

代码语言:javascript
复制
1 amino acid = 1 residue token

作为唯一核心。

AF3的 token 可以对应:

代码语言:javascript
复制
protein residue
nucleotide
ligand atom

因此一个复杂体系可能:

代码语言:javascript
复制
Protein
300 residues

DNA
30 nucleotides

Ligand
25 atoms

形成一个统一 token 序列。

可以粗略表示:

代码语言:javascript
复制
P1 P2 P3 ... P300
D1 D2 ... D30
L1 L2 ... L25

所以:

代码语言:javascript
复制
N_tokens

是 AF3 一个非常重要的计算规模指标。


十一、为什么Ligand需要特殊处理?

蛋白质的化学组成相对规则:

代码语言:javascript
复制
20 amino acids

RNA:

代码语言:javascript
复制
A U G C

DNA:

代码语言:javascript
复制
A T G C

但是小分子:

代码语言:javascript
复制
Ligand A
Ligand B
Ligand C
...

化学空间极其巨大。

例如:

代码语言:javascript
复制
benzene
ATP
NAD
drug
cofactor
lipid
sugar

每个分子的:

代码语言:javascript
复制
bond
atom type
charge
stereochemistry
ring
functional group

都可能不同。

所以 AF3 需要一个能够处理:

arbitrary chemical components

的结构生成框架。

这也是 diffusion 直接预测原子坐标非常重要的原因。论文特别强调这种设计能够更自然地处理复杂的 ligand 和其他化学组分。


十二、AF3的Pair Representation

这一点和 AF2 是有继承关系的。

AF2:

代码语言:javascript
复制
residue i
    ↕
residue j

Pair(i,j)

AF3:

代码语言:javascript
复制
token i
    ↕
token j

Pair(i,j)

所以 AF3 可以表达:

代码语言:javascript
复制
Protein residue
      ↕
Ligand atom

也可以:

代码语言:javascript
复制
DNA nucleotide
      ↕
Protein residue

甚至:

代码语言:javascript
复制
Ligand atom
      ↕
Ligand atom

因此 AF3 的 pair representation 从:

residue-residue relationship

扩展成:

general molecular token-token relationship

这是非常重要的升级。


十三、AF3为什么叫Pairformer?

AF2:

代码语言:javascript
复制
Evoformer

AF3:

代码语言:javascript
复制
Pairformer

这是一个非常值得注意的变化。

AF2的核心是:

代码语言:javascript
复制
MSA
  ↕
Pair

因此叫:

Evoformer

因为:

Evolutionary information + Transformer

而 AF3 的结构推理不再以 AF2 那种 MSA representation ↔ pair representation 的形式为核心。

它更强调:

代码语言:javascript
复制
Single representation
        +
Pair representation

的迭代更新。

因此:

Pairformer

成为 AF3 的主要 trunk。


十四、AF2 vs AF3的一个核心变化

可以直接记:

代码语言:javascript
复制
AF2

MSA
 ↓
Evoformer
 ↓
Pair
 ↓
Structure Module

而:

代码语言:javascript
复制
AF3

Input features
 ↓
Pairformer
 ↓
Single + Pair
 ↓
Diffusion
 ↓
Atomic coordinates

也就是说:

AF3不是简单地把 AF2 的 Structure Module 换成 diffusion,而是整个结构表示和生成范式都发生了变化。


十五、AF3的Pairformer具体做什么?

Pairformer继续学习:

代码语言:javascript
复制
token i
↔
token j

之间的关系。

例如:

代码语言:javascript
复制
Protein residue 45
      ↕
Ligand atom 7

网络需要学习:

代码语言:javascript
复制
是否接触?
距离可能是多少?
方向如何?
化学环境如何?

类似地:

代码语言:javascript
复制
Protein residue 120
      ↕
DNA nucleotide 8

需要学习:

代码语言:javascript
复制
是否形成 interface?
是否存在氢键?
空间关系?

所以 Pairformer 本质上是在建立:

整个复合物的关系图。


十六、可以把Pairformer理解成“分子关系推理器”

例如:

代码语言:javascript
复制
Protein
         /      |       \
        /       |        \
      DNA     Ligand     RNA
       \        |        /
        \       |       /
              Ion

Pairformer学习:

代码语言:javascript
复制
Protein ↔ DNA
Protein ↔ Ligand
Protein ↔ RNA
Protein ↔ Ion
DNA ↔ RNA
Ligand ↔ Ion
...

最终得到一个:

代码语言:javascript
复制
N × N

的关系矩阵。

因此 AF3 不再只是:

“蛋白质自己折叠成什么样?”

而是:

“整个分子系统中所有组成部分如何组织在一起?”


十七、AF3真正的核心:Diffusion Module

这是 AF3 最值得深入理解的地方。

Pairformer输出:

代码语言:javascript
复制
single representation
+
pair representation

然后进入 diffusion。

同时:

代码语言:javascript
复制
random/noisy coordinates

也输入 diffusion network。

于是:

代码语言:javascript
复制
Pairformer
                  │
          ┌───────┴───────┐
          ↓               ↓
       features      noisy coordinates
          │               │
          └───────┬───────┘
                  ↓
             Diffusion
                  ↓
            denoised coords
                  ↓
            denoised coords
                  ↓
            final coordinates

十八、Diffusion实际上在学习什么?

可以用一个数学表达:

代码语言:javascript
复制
N个原子
每个原子3D坐标

也就是:

训练的时候给它加入噪声: X_t

于是:

代码语言:javascript
复制
真实结构 X0
    ↓
加噪声
    ↓
Xt

网络学习:

即:

根据当前 noisy structure + 分子信息,预测真实结构。


十九、为什么要从“噪声”开始?

因为这样模型就可以学习:

代码语言:javascript
复制
什么结构是合理的

而不是死记:

代码语言:javascript
复制
sequence → 唯一坐标

例如一个 ligand:

代码语言:javascript
复制
O
      |
C — C — N
    /
   C

可能存在多个合理构象。

Diffusion可以:

代码语言:javascript
复制
seed 1
 ↓
pose A

seed 2
 ↓
pose B

seed 3
 ↓
pose C

因此:

AF3本质上具有生成模型属性。

论文也明确强调,diffusion训练过程能够产生结构分布,因此在模型不确定时可以产生不同答案。


二十、AF3的“多尺度”非常重要

这是论文中一个很漂亮的观点。

Diffusion中的不同噪声水平对应不同尺度的结构问题。


高噪声

结构非常乱:

代码语言:javascript
复制
●     ●

   ●

       ●

模型主要需要学习:

代码语言:javascript
复制
整体domain arrangement
protein-protein orientation
protein-ligand placement

也就是:

Global structure


低噪声

已经非常接近真实结构:

代码语言:javascript
复制
Protein
████████
   ● ligand

此时需要修正:

代码语言:javascript
复制
bond geometry
side-chain
local stereochemistry

即:

Local structure

论文明确指出,高噪声阶段更强调大尺度结构,低噪声阶段则更强调局部结构和立体化学。


二十一、这是AF3为什么能处理小分子的关键之一

传统蛋白结构预测可以使用:

代码语言:javascript
复制
residue frame
+
torsion angle

但 ligand:

代码语言:javascript
复制
C
C
N
O
S
P
...

化学结构非常复杂。

如果强行建立:

代码语言:javascript
复制
ligand-specific torsion system

会非常麻烦。

AF3直接:

代码语言:javascript
复制
atom 1 → xyz
atom 2 → xyz
atom 3 → xyz
...

然后通过 diffusion 学习合理的几何结构。

因此:

代码语言:javascript
复制
Protein
DNA
RNA
Ligand
Ion
Glycan

都可以进入同一个坐标生成框架。


二十二、AF3为什么不再像AF2一样强调IPA?

这是一个非常重要的区别。

AF2:

代码语言:javascript
复制
Structure Module
        ↓
IPA
        ↓
rigid frames
        ↓
coordinates

AF3:

代码语言:javascript
复制
Pairformer
        ↓
Diffusion
        ↓
atomic coordinates

论文特别指出,AF3的 diffusion 架构不需要 AF2 那种针对全局旋转和平移的特殊 invariance/equivariance 设计,因此省去了相应架构复杂性。

这是一个很大的架构变化。


二十三、为什么AF3可以去掉很多structure violation loss?

AF2需要专门处理:

代码语言:javascript
复制
bond length
bond angle
steric clash
chirality

因此有:

代码语言:javascript
复制
violation loss

帮助网络产生化学合理的蛋白结构。

AF3 diffusion:

代码语言:javascript
复制
high noise
 ↓
global structure
 ↓
low noise
 ↓
local geometry

模型在低噪声阶段直接学习:

代码语言:javascript
复制
bond geometry
stereochemistry
local structure

因此不再需要 AF2 那种大量专门的 stereochemical violation handling。论文明确提到这一点。


二十四、AF3和Vina的关系:这对你特别重要

你之前一直在学习:

代码语言:javascript
复制
AutoDock Vina
PyRosetta
GROMACS

现在可以看到一个很重要的变化。

传统工作流:

代码语言:javascript
复制
Protein structure
       ↓
Vina
       ↓
Ligand docking

也就是:

蛋白质先固定,再寻找 ligand pose。

而 AF3:

代码语言:javascript
复制
Protein
+
Ligand
 ↓
Joint structure prediction
 ↓
Protein-ligand complex

也就是说:

蛋白质和 ligand 的空间关系可以联合预测。

论文报告 AF3 在蛋白质–配体相互作用预测上明显优于其比较的传统 docking 方法。


二十五、但是:AF3 ≠ Vina升级版

这个一定不要混淆。

Vina的任务:

代码语言:javascript
复制
给定protein
+
给定ligand

搜索binding pose

重点:

代码语言:javascript
复制
docking
scoring
binding mode

AF3:

代码语言:javascript
复制
protein
+
ligand
+
biomolecular context

→
joint structure generation

重点:

代码语言:javascript
复制
structure prediction

因此:

代码语言:javascript
复制
AF3
≠
Vina

更合理的理解是:

代码语言:javascript
复制
AF3
   ↓
预测可能complex结构
   ↓
Vina/其他docking
   ↓
进一步搜索/验证
   ↓
MD
   ↓
动力学验证

不同任务可以互补。


二十六、AF3为什么在Protein-Ligand上提升这么明显?

可以把原因概括成:

AF2思路

代码语言:javascript
复制
protein structure
       ↓
固定protein
       ↓
docking ligand

AF3

代码语言:javascript
复制
protein
+
ligand
+
chemical features
       ↓
joint representation
       ↓
joint diffusion
       ↓
protein-ligand complex

也就是说:

ligand不再是“结构预测之后再加进去”的东西,而是整个结构生成过程的一部分。


二十七、Protein-DNA预测也是同样的逻辑

例如:

代码语言:javascript
复制
Transcription factor
          +
          DNA

AF3不是:

代码语言:javascript
复制
先预测TF
 ↓
再预测DNA
 ↓
再dock

而是:

代码语言:javascript
复制
TF
+
DNA
 ↓
Pairformer
 ↓
joint representation
 ↓
Diffusion
 ↓
TF-DNA complex

所以它可以直接学习:

代码语言:javascript
复制
protein residue
       ↕
DNA nucleotide

之间的空间关系。


二十八、RNA也是一样

例如:

代码语言:javascript
复制
RNA
  +
RNA-binding protein

AF3可以学习:

代码语言:javascript
复制
amino acid
     ↕
nucleotide

之间的 interaction。

这对于:

代码语言:javascript
复制
RNA-binding proteins
ribosomes
RNA enzymes
RNA therapeutics

等体系非常重要。


二十九、抗体-抗原为什么也很重要?

例如:

代码语言:javascript
复制
Antibody
   ↓
CDR loop
   ↓
Antigen

真正的问题不是:

antibody本身是什么结构?

而是:

CDR如何与 antigen epitope 结合?

AF3可以直接预测:

代码语言:javascript
复制
Antibody
    +
Antigen
    ↓
complex

论文报告 AF3 的 antibody-antigen 预测准确率高于 AlphaFold-Multimer v2.3。


三十、AF3输出什么?

AF3最终输出:

代码语言:javascript
复制
mmCIF

而不是单纯依赖 PDB。

官方 inference pipeline 每个 sample/seed 都会输出:

代码语言:javascript
复制
confidence JSON
summary confidence JSON
mmCIF

同时还可以输出 distogram 等中间结果。(GitHub)


三十一、AF3的置信度指标

AF2最熟悉:

代码语言:javascript
复制
pLDDT
PAE
pTM

AF3仍然提供结构置信度信息,但对于复合物问题,更需要关注:

代码语言:javascript
复制
pLDDT
PAE
pTM/ipTM相关指标
界面置信度

尤其是:

不要只看整体平均 pLDDT。

对于 protein-ligand:

代码语言:javascript
复制
Protein内部
pLDDT = 95

Ligand
confidence = 高

但是:
Protein-Ligand interface
confidence = 低

这种情况下:

蛋白质本身预测很好,并不代表 ligand binding pose 可靠。

这是实际做 docking / drug discovery 时非常重要的区别。


三十二、AF3的一个非常重要的能力:生成多个sample

因为 diffusion 是生成模型:

代码语言:javascript
复制
random seed 1
     ↓
structure 1

random seed 2
     ↓
structure 2

random seed 3
     ↓
structure 3

因此:

代码语言:javascript
复制
Sample 1
Sample 2
Sample 3
...

可以反映模型对于:

代码语言:javascript
复制
binding pose
conformation
interaction

的不同可能性。

官方输出目录也按照:

代码语言:javascript
复制
seed-<seed>_sample-<sample>

组织结果。


三十三、这和AF2有什么本质区别?

可以用这张表记:

特征

AlphaFold 2

AlphaFold 3

主要目标

Protein structure

Biomolecular complex

Protein

DNA

有限/非核心

RNA

有限/非核心

Ligand

❌核心能力

Ion

❌核心能力

Modified residue

有限

核心 trunk

Evoformer

Pairformer

MSA

核心

仍使用,但角色改变

Structure module

IPA

Diffusion

坐标生成

residue frame

raw atom coordinates

Side-chain torsion

重要

不再作为核心坐标参数化

Diffusion

多结构生成

有限

天然支持

Protein-ligand

不是核心

核心能力

Protein-DNA/RNA

不是核心

核心能力


三十四、AF2 → AF3最重要的技术演化

我建议你把它理解成下面这条路线:

代码语言:javascript
复制
AlphaFold 2
                      │
                      │
          Protein structure prediction
                      │
          ┌───────────┴───────────┐
          ↓                       ↓
        MSA                    Pair
          └──────────┬────────────┘
                     ↓
                 Evoformer
                     ↓
              Structure Module
                     ↓
                    IPA
                     ↓
             Protein coordinates

                     ↓
                AlphaFold 3
                     │
                     │
          Biomolecular complexes
                     │
        ┌────────────┼────────────┐
        ↓            ↓            ↓
      Protein       DNA/RNA     Ligand
        │            │            │
        └────────────┼────────────┘
                     ↓
               Pairformer
                     ↓
            Single + Pair
                     ↓
               Diffusion
                     ↓
          Raw atomic coordinates
                     ↓
          Complex structure

所以真正的升级不是:

“Evoformer升级了一点。”

而是:

从 protein-centric prediction → general biomolecular structure generation。


三十五、AF3训练阶段到底怎么训练?

可以把训练简化成:

代码语言:javascript
复制
实验结构
   ↓
真实complex
   ↓
加入noise
   ↓
X_t
   ↓
Diffusion network
   ↓
预测X_0
   ↓
与真实结构比较
   ↓
loss
   ↓
更新参数

同时输入:

代码语言:javascript
复制
sequence
MSA
templates
chemical information

让模型学习:

[ P(X \mid S) ]

其中:

代码语言:javascript
复制
X = 3D structure

S = molecular sequence/features

也就是说:

给定分子信息,学习三维结构分布。


三十六、为什么AF3的生成能力非常重要?

假设:

代码语言:javascript
复制
Protein + ligand

真实世界可能:

代码语言:javascript
复制
Pose A  40%
Pose B  35%
Pose C  15%
Pose D  10%

AF2/Vina很多时候更倾向于:

代码语言:javascript
复制
给一个最优pose

而 diffusion 更自然:

代码语言:javascript
复制
sample
 ↓
sample
 ↓
sample
 ↓
sample

从而获得:

代码语言:javascript
复制
structure ensemble

当然:

不同sample并不等于真实概率分布。

不能简单认为:

代码语言:javascript
复制
sample出现4次
=
生物学概率40%

这一点必须谨慎。


三十七、AF3的最大突破可以总结成三个“统一”

第一:统一分子类型

代码语言:javascript
复制
Protein
DNA
RNA
Ligand
Ion
Modified residue

统一框架


第二:统一结构表示

不是:

代码语言:javascript
复制
Protein → residue frame

Ligand → 特殊处理

而是:

代码语言:javascript
复制
general molecular tokens
        ↓
atomic coordinates

第三:统一结构生成

不是:

代码语言:javascript
复制
protein folding
+
docking
+
nucleic acid prediction
+
special chemical handling

而是:

代码语言:javascript
复制
Biomolecular system
               ↓
          Pairformer
               ↓
          Diffusion
               ↓
      Joint structure

这就是 AF3 的真正意义。


三十八、AF3目前最大的局限

AF3非常强,但绝对不能理解成:

“输入蛋白+药物,就能得到真实结合模式。”

这是错误的。


① 不代表真实动力学

AF3预测的是:

代码语言:javascript
复制
structure

不是:

代码语言:javascript
复制
molecular dynamics

它不能直接告诉你:

代码语言:javascript
复制
binding kinetics
kon
koff
ΔG
free energy

所以:

代码语言:javascript
复制
AF3
↓
结构假设

仍然需要:

代码语言:javascript
复制
MD
free-energy calculation
experiment

等验证。


三十九、② 不等于真实binding affinity预测

例如:

代码语言:javascript
复制
Ligand A
Ligand B

AF3可能都能生成:

代码语言:javascript
复制
合理pose

但这并不意味着:

代码语言:javascript
复制
A affinity > B affinity

所以不能直接:

代码语言:javascript
复制
AF3 score
=
binding affinity

四十、③ Flexible protein仍然困难

例如:

代码语言:javascript
复制
IDR
loop
flexible domain
allosteric region

可能存在:

代码语言:javascript
复制
多个构象

AF3可能只给出某一个 plausible structure。


四十一、④ 多状态蛋白依然困难

例如 GPCR:

代码语言:javascript
复制
Inactive
   ↕
Intermediate
   ↕
Active

AF3并不意味着:

自动知道你想要哪一种生物学状态。

如果输入信息不足,模型可能得到某个合理但并非实验目标状态的构象。


四十二、⑤ Cofactor / ligand / protonation等问题

对于药物设计:

代码语言:javascript
复制
ligand protonation
tautomer
charge
metal coordination
water molecules

这些都可能显著影响结构。

因此:

AF3预测结果仍然需要化学合理性检查。


四十三、AF3和你正在学习的PyRosetta/Vina/GROMACS怎么串起来?

如果你的目标最终是:

蛋白质结构预测 → 小分子结合 → docking → refinement → MD

那么可以建立这个体系:

代码语言:javascript
复制
Protein sequence
                        │
                        ↓
                   AlphaFold 3
                        │
              Protein + ligand complex
                        │
                        ↓
                Structure analysis
                        │
              ┌─────────┴─────────┐
              ↓                   ↓
          PyRosetta               Vina
              │                   │
       local refinement       docking poses
              │                   │
              └─────────┬─────────┘
                        ↓
                 Best complex
                        │
                        ↓
                    GROMACS
                        │
                        ↓
                   MD simulation
                        │
              ┌─────────┼─────────┐
              ↓         ↓         ↓
             RMSD      RMSF      H-bond
              │
              ↓
         MM/PBSA/GBSA
              │
              ↓
       binding stability

这其实非常适合你现在正在学习的方向。


四十四、如果你做药物研发,AF3最值得用在哪里?

我会把优先级排成:

① Protein-ligand complex prediction

代码语言:javascript
复制
Target
+
Drug
↓
AF3
↓
complex

② Protein-protein interaction

代码语言:javascript
复制
Protein A
+
Protein B

③ Protein-DNA

代码语言:javascript
复制
TF
+
DNA

④ Protein-RNA

代码语言:javascript
复制
RBP
+
RNA

⑤ Antibody-antigen

代码语言:javascript
复制
Antibody
+
Antigen

⑥ 多组分复合物

代码语言:javascript
复制
Protein
+
DNA
+
RNA
+
ligand
+
ion

这正是 AF3 相比 AF2 最有价值的地方。


四十五、AF3本地部署需要什么?

目前 DeepMind 已公开 AF3 inference code,并提供模型参数申请机制;官方仓库说明可以本地运行 inference

官方安装文档目前要求:

代码语言:javascript
复制
Linux
NVIDIA GPU
Compute Capability >= 8.0

官方验证过:

代码语言:javascript
复制
A100 80GB
H100 80GB

对于最长约 5,120 tokens 的输入,官方说明在单张 A100/H100 80GB 上可以运行;完整数据库需要大量磁盘空间,文档给出的规模最高约 1 TB。

目前官方 GitHub 最新 release 已到 v3.0.3,该版本对代码许可、性能和若干 bug 进行了更新。

AlphaFold 3 官方 GitHub


四十六、最后把AF2和AF3彻底串起来

你现在可以用下面这张图理解整个 AlphaFold 演化:

代码语言:javascript
复制
AlphaFold 1
                     │
          Deep learning + MSA
                     │
                     ↓
              distance/contact
                     │
                     ↓
              protein structure

                     ↓
                AlphaFold 2
                     │
          ┌──────────┴──────────┐
          ↓                     ↓
        MSA                    Pair
          └──────────┬──────────┘
                     ↓
                 Evoformer
                     ↓
              Structure Module
                     ↓
                    IPA
                     ↓
              3D protein structure
                     ↓
                 Recycling

                     ↓
                AlphaFold 3
                     │
       ┌─────────────┼─────────────┐
       ↓             ↓             ↓
    Protein        DNA/RNA       Ligand
       │             │             │
       └─────────────┼─────────────┘
                     ↓
                 Pairformer
                     ↓
            Single + Pair representation
                     ↓
                  Diffusion
                     ↓
            random/noisy coordinates
                     ↓
                iterative denoising
                     ↓
             all-atom coordinates
                     ↓
          Biomolecular complex

最核心的区别只有一句话:

AlphaFold 2解决的是“蛋白质如何折叠”;AlphaFold 3进一步解决“整个生物分子体系如何形成三维复合物”。

而从算法角度:

AF2的核心是 MSA + Evoformer + IPA/Structure Module + Recycling;AF3则转向统一的分子表示 + Pairformer + diffusion-based all-atom structure generation。)

对于 AutoDock Vina → PyRosetta → GROMACS,下一步最值得深入的其实不是再泛泛了解 AF3,而是把 AF3 的 Diffusion Module 从数学和代码层面拆开:包括 noise schedule、coordinate diffusion、denoising、Pairformer、Diffusion Transformer、为什么它能直接生成 ligand 原子坐标,以及 AF3 输出的 pLDDT / PAE / ipTM / ranking score 到底分别意味着什么。这样就能真正把 AF3 和分子对接、PyRosetta、MD 接起来。

生活很好,有你更好。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 作者,Evil Genius
  • AlphaFold经历了三个版本,基本上大课题组做蛋白预测都用的这个。
  • 至于蛋白结构预测为什么如此重要,这个我相信大家比我更清楚。
  • 我们先来看看AlphaFold 2
  • 一、首先搞清楚:AlphaFold 2到底解决什么问题?
  • 二、AlphaFold 2最核心的思想:进化告诉“谁和谁应该靠近”
  • 三、AlphaFold 2整体架构
  • 四、第一步:输入到底是什么?
    • 1. Protein sequence
    • 2. MSA
    • 3. Template
  • 五、MSA到底是什么?
  • 六、AlphaFold 2的第一个核心:MSA Representation
  • 七、第二个核心:Pair Representation
  • 八、Pair representation代表什么?
  • 九、为什么要同时存在 MSA 和 Pair?
    • MSA
    • Pair
  • Evoformer
  • 十、Evoformer到底是什么?
  • 十一、Evoformer最重要的几个操作
  • 十二、为什么需要 Triangle Update?
  • 十三、Triangle Multiplicative Update
  • 十四、Triangle Attention
  • 十五、Outer Product Mean
  • 十六、Evoformer最终得到什么?
  • Structure Module
  • 十七、Structure Module是什么?
  • 十八、AlphaFold 2为什么不用直接预测xyz坐标?
  • 十九、AlphaFold 2采用Residue Frame
  • 二十、Invariant Point Attention(IPA)
  • 二十一、为什么“几何等变”这么重要?
  • 二十二、Structure Module如何逐渐产生结构?
  • 二十三、Recycling:AlphaFold 2非常重要的机制
  • Recycling
  • 二十四、为什么 Recycling有效?
  • 二十五、AlphaFold 2到底预测什么?
    • 1. Backbone
    • 2. Side chain
    • 3. 3D coordinates
  • 二十六、AlphaFold 2如何判断自己预测得准不准?
  • 二十七、pLDDT
  • 二十八、pLDDT为什么重要?
  • 二十九、PAE是什么?
  • 三十、这对于多结构域蛋白特别重要
  • 三十一、AlphaFold 2的Loss是什么?
  • FAPE
  • 三十二、FAPE可以怎么理解?
  • 三十三、AlphaFold 2还使用哪些Loss?
    • Distogram loss
    • MSA masked loss
    • lDDT loss
    • Side-chain loss
    • Structure violation loss
  • 三十四、AlphaFold 2为什么需要“自蒸馏”?
  • Self-distillation
  • 三十五、AlphaFold 2的完整工作流
  • 三十六、AlphaFold 2真正的“灵魂”是什么?
  • ① MSA
  • ② Pair representation
  • ③ Evoformer
  • ④ Triangle update
  • ⑤ Structure Module
  • ⑥ IPA
  • ⑦ Recycling
  • 三十七、AlphaFold 2和传统同源建模有什么区别?
  • 三十八、AlphaFold 2和Vina有什么关系?
  • 三十九、但AlphaFold 2不是“万能结构预测器”
    • 1. Intrinsically disordered regions
    • 2. Domain orientation
    • 3. Protein dynamics
    • 4. Ligand binding
    • 5. Protein-protein interaction
  • 四十、AlphaFold 2和AlphaFold 3最本质的区别
    • AlphaFold 2:
    • AlphaFold 3:
  • 四十一、如果你要真正“学懂”AlphaFold 2,建议分成四个层次
  • Level 1:生物学
  • Level 2:深度学习
  • Level 3:结构生物学 + 几何深度学习
  • Level 4:AlphaFold源码
  • 四十二、真正需要记住的一张图
    • 接下来我们看看AlphaFold 3
  • 一、先用一句话理解 AlphaFold 3
  • 二、为什么 AlphaFold 2 不够?
    • 蛋白质 + DNA
    • 蛋白质 + RNA
    • 蛋白质 + 小分子
    • 蛋白质 + 金属离子
    • 抗体 + 抗原
    • 糖基化蛋白
  • 三、AF3到底能预测哪些东西?
  • 四、AF3最重要的变化:从“预测蛋白结构”变成“生成原子坐标”
  • 五、这就是 Diffusion 的核心作用
  • Diffusion-based structure generation
  • 六、什么是Diffusion?
  • 七、为什么Diffusion特别适合AF3?
  • 多模态分布
  • 八、AF3的整体架构
  • 九、AF3第一阶段:Input representation
  • 十、Token:AF3非常重要的概念
  • 十一、为什么Ligand需要特殊处理?
  • 十二、AF3的Pair Representation
  • 十三、AF3为什么叫Pairformer?
  • Pairformer
  • 十四、AF2 vs AF3的一个核心变化
  • 十五、AF3的Pairformer具体做什么?
  • 十六、可以把Pairformer理解成“分子关系推理器”
  • 十七、AF3真正的核心:Diffusion Module
  • 十八、Diffusion实际上在学习什么?
  • 十九、为什么要从“噪声”开始?
  • 二十、AF3的“多尺度”非常重要
  • 高噪声
  • Global structure
  • 低噪声
  • Local structure
  • 二十一、这是AF3为什么能处理小分子的关键之一
  • 二十二、AF3为什么不再像AF2一样强调IPA?
  • 二十三、为什么AF3可以去掉很多structure violation loss?
  • 二十四、AF3和Vina的关系:这对你特别重要
  • 二十五、但是:AF3 ≠ Vina升级版
  • 二十六、AF3为什么在Protein-Ligand上提升这么明显?
    • AF2思路
    • AF3
  • 二十七、Protein-DNA预测也是同样的逻辑
  • 二十八、RNA也是一样
  • 二十九、抗体-抗原为什么也很重要?
  • 三十、AF3输出什么?
  • 三十一、AF3的置信度指标
  • 三十二、AF3的一个非常重要的能力:生成多个sample
  • 三十三、这和AF2有什么本质区别?
  • 三十四、AF2 → AF3最重要的技术演化
  • 三十五、AF3训练阶段到底怎么训练?
  • 三十六、为什么AF3的生成能力非常重要?
  • 三十七、AF3的最大突破可以总结成三个“统一”
  • 第一:统一分子类型
  • 第二:统一结构表示
  • 第三:统一结构生成
  • 三十八、AF3目前最大的局限
  • ① 不代表真实动力学
  • 三十九、② 不等于真实binding affinity预测
  • 四十、③ Flexible protein仍然困难
  • 四十一、④ 多状态蛋白依然困难
  • 四十二、⑤ Cofactor / ligand / protonation等问题
  • 四十三、AF3和你正在学习的PyRosetta/Vina/GROMACS怎么串起来?
  • 四十四、如果你做药物研发,AF3最值得用在哪里?
    • ① Protein-ligand complex prediction
    • ② Protein-protein interaction
    • ③ Protein-DNA
    • ④ Protein-RNA
    • ⑤ Antibody-antigen
    • ⑥ 多组分复合物
  • 四十五、AF3本地部署需要什么?
  • 四十六、最后把AF2和AF3彻底串起来
    • 生活很好,有你更好。
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档