




假设我们有:
我们希望得到:
PD-1 + PD-L1 → 最可能的结合复合物结构
ZDOCK的基本思想是:
PD-1结构
+
PD-L1结构
↓
ZDOCK刚性蛋白-蛋白对接
↓
产生大量候选复合物
↓
打分
↓
得到Top 10 / Top 20 / Top 100
↓
聚类
↓
人工分析结合界面
↓
得到候选PD-1/PD-L1复合物和你之前做的 AutoDock Vina小分子对接相比,最大的区别是:
Vina | ZDOCK | |
|---|---|---|
对接对象 | 蛋白-小分子 | 蛋白-蛋白 |
配体 | 小分子 | 另一个蛋白 |
搜索空间 | 蛋白口袋 | 整个蛋白表面 |
柔性 | 有限 | 经典ZDOCK主要是刚性对接 |
输出 | ligand poses | protein-protein complexes |
核心问题 | 小分子如何进入口袋 | 两个蛋白如何贴合 |
我们假设:
Receptor:PD-1
Ligand:PD-L1
目标:
预测PD-1与PD-L1形成复合物时,两者的空间结合方式。
结构可以从 Protein Data Bank 获取。
例如可以搜索:
PD-1 PD-L1 complex PDB经典PD-1/PD-L1复合物结构可以作为最终验证的参考结构。
这里有一个非常重要的实验设计思想:
如果目标是测试ZDOCK预测能力,应该:
已知PD-1/PD-L1复合物
↓
拆开
↓
PD-1单体
+
PD-L1单体
↓
ZDOCK
↓
预测复合物
↓
与原始实验复合物比较这叫做 docking re-docking / blind docking validation。
例如得到:
PD1.pdb
PDL1.pdb此时不要急着ZDOCK。
先检查PDB。
可以使用:
例如PyMOL:
pymol PD1.pdb观察:
PD-1
├── Chain A
├── ligand?
├── water?
├── antibody?
└── other chains?这是蛋白对接最容易出问题的地方之一。
实验结构PDB往往不是:
一个干净的蛋白而可能是:
Protein
+
Water
+
Ion
+
Ligand
+
Antibody
+
多个Chain
+
晶体添加剂例如:
ATOM
ATOM
ATOM
HETATM ← ligand
HETATM ← water
ATOM
ATOMZDOCK真正需要的是:
纯蛋白结构所以需要预处理。
例如PD-1:
PD1_original.pdb处理以后:
PD1_clean.pdbPD-L1:
PDL1_original.pdb
↓
PDL1_clean.pdb通常需要处理:
例如:
HOH删除。
如果PDB里面存在:
HETATM要判断是不是需要保留。
对于普通蛋白-蛋白对接,一般删除无关小分子。
例如:
PD-1:
Chain A
PD-L1:
Chain B最后最好得到:
PD1_clean.pdb
PDL1_clean.pdb这是非常重要的一步。
比如PDB可能是:
1 2 3 4 5 6 7
A B C D E F G但实际上:
1 2 3 5 6 7
A B C E F GResidue 4缺失。
对于蛋白表面正好参与结合的位置,这可能严重影响对接。
可以使用:
补全。
ZDOCK本质上需要两个蛋白:
Receptor
Ligand例如:
Receptor = PD1_clean.pdb
Ligand = PDL1_clean.pdb这里的“ligand”不是小分子意义上的ligand。
而是:
参与蛋白-蛋白对接的第二个蛋白。
ZDOCK不是简单地:
“把PD-L1放到PD-1表面随机旋转。”
它会进行大量空间搜索。
可以粗略理解成:
PD-L1
↓
旋转
↙ ↓ ↘
多个方向
↓
平移
↓
与PD-1碰撞检测
↓
计算score数学上可以简单理解为:

不同版本/模式的具体打分组成有所不同。
其中最重要的几个概念:
两个蛋白表面是否互补。
类似:
蛋白A:
/\__
___/ \___
蛋白B:
___ ___
\____/如果:
凸 → 凹
凹 → 凸匹配得比较好。
例如:
PD-1表面:++++
PD-L1表面:----静电吸引有利。
反之:
++++
++++通常不利。
ZDOCK命令根据你安装的具体版本略有不同。
典型流程类似:
zdock -R PD1_clean.pdb -L PDL1_clean.pdb或者使用ZDOCK提供的图形界面进行:
Receptor → PD1_clean.pdb
Ligand → PDL1_clean.pdb然后:
Run ZDOCK假设:
ZDOCK
↓
2000 poses也就是说:
Pose 1
Pose 2
Pose 3
...
Pose 2000这些全部都是:
PD-1 + PD-L1的不同空间排列。
例如:
Pose 1
PD-L1
███████
███████████
│
│
███████
PD-1
Pose 2
███████
████████
███████
███████
███
Pose 3
█████
█████████
████████
██████当然真实结构是三维的。
很多初学者会认为:
ZDOCK排名第一 = 正确答案。
不一定。
这是蛋白-蛋白对接非常重要的一点。
例如:
ZDOCK Rank 1
score = 1785
Rank 2
score = 1779
Rank 3
score = 1768
Rank 4
score = 1759并不能简单认为:
Rank 1 = 正确原因是:
蛋白-蛋白对接存在大量局部最优解。
所以后面必须:
聚类 + 界面分析 + 生物学信息 + 结构评价
假设ZDOCK产生:
2000 poses很多pose实际上非常相似。
例如:
Pose 1
Pose 8
Pose 13
Pose 27
Pose 43
Pose 87它们可能都属于同一个结合模式:
Cluster 1另外:
Pose 2
Pose 9
Pose 18
Pose 25属于:
Cluster 2所以:
2000 poses
↓
聚类
↓
Cluster 1
Cluster 2
Cluster 3
...这一步非常重要。
因为:
一个稳定出现的大cluster,往往比单独一个高分pose更值得关注。
举一个极端例子。
Pose数量:
Cluster A = 320
Cluster B = 15
Cluster C = 8最高score:
Cluster B中的某一个pose虽然:
Cluster B有一个最高分,但:
Cluster A有大量相似结构。
这说明:
A可能是一个更稳定的结合模式。
所以ZDOCK结果不能只看:
score而应该综合:
score
+
cluster size
+
interface
+
biological information假设得到:
complex1.pdb
complex2.pdb
complex3.pdb打开:
pymol complex1.pdb然后:
PD-1
PD-L1分别设置不同representation。
例如:
PD-1 → cartoon
PD-L1 → cartoon然后查看interface。
你会看到:
PD-L1
█████████
███████████
||
|| interface
||
█████████
PD-1这一步实际上比“看ZDOCK分数”更重要。
我们需要问:
PD-1和PD-L1到底哪些氨基酸发生了相互作用?
例如:
PD-1
Residue 50
Residue 53
Residue 56
Residue 58
↓
PD-L1
Residue 115
Residue 118
Residue 120
Residue 123可以分析:
PD1 residue
|
| H-bond
|
PDL1 residue例如:
Lys(+)
|
|
Asp(-)例如:
Leu
Ile
Val
Phe
Trp形成疏水核心。
例如使用:
Rosetta
或者:
来分析。
例如:
PD-1 + PD-L1
ΔGbinding = -12.4 kcal/mol通常:
ΔG越负,预测结合越有利。
但注意:
不能简单把不同软件的ΔG直接横向比较。
如果你不是为了学习,而是准备真正用于科研,我建议:
PDB
↓
蛋白结构预处理
↓
┌───────┴────────┐
↓ ↓
Protein A Protein B
↓ ↓
去水/配体 去水/配体
↓ ↓
补缺失残基 补缺失残基
└───────┬────────┘
↓
ZDOCK
↓
2000 docking poses
↓
Clustering
↓
Top 10–20 clusters
↓
界面分析
↓
┌──────┴──────┐
↓ ↓
生物学信息 结构评分
↓ ↓
└──────┬──────┘
↓
Top 1–5 complexes
↓
Rosetta优化
↓
Molecular Dynamics
↓
RMSD/RMSF/Rg
H-bond/SASA
MM/PBSA或MM/GBSA
↓
最终候选复合物这个就非常有意思了。
你之前问过:
Vina对接以后为什么要用PyRosetta优化?
蛋白-蛋白对接也存在类似的问题。
ZDOCK本质上属于:
刚性对接
也就是:
PD-1结构不变
PD-L1结构不变但是现实中的蛋白:
PD-1
↓
侧链可以转动
backbone也可能发生轻微变化
PD-L1
↓
侧链可以转动
backbone也可能发生轻微变化所以ZDOCK得到的:
Rigid docking可以继续:
ZDOCK
↓
PyRosetta local refinement
↓
Side-chain repacking
↓
Minimization
↓
Interface optimization例如:
ZDOCK预测:
PD-1
████████
↓
████████ PD-L1发现interface:
PD1-A52
PD1-Y56
PD1-M64
PDL1-L115
PDL1-F118
PDL1-Y123然后PyRosetta进行:
重新寻找:
Rotamer例如:
Tyr
↓
rotamer 1
rotamer 2
rotamer 3
rotamer 4寻找更合适的侧链构象。
优化:
bond
angle
torsion
van der Waals
electrostatics使interface更加合理。
例如:
Before:
interface energy
= -25 REU
After:
interface energy
= -39 REU说明局部优化后interface更加有利。
如果你想做得更加完整:
ZDOCK
↓
Top 10 complexes
↓
PyRosetta refinement
↓
Top 3
↓
GROMACS
↓
100 ns MD然后分析:
RMSD
RMSF
Radius of gyration
SASA
Hydrogen bonds
Salt bridges
Protein-protein contacts
MM/PBSA例如:
ZDOCK
↓
2000 poses
↓
Cluster分析
↓
Top 10 poses
↓
PyRosetta refinement
↓
Top 3
↓
100 ns MD
┌────────┼────────┐
↓ ↓ ↓
RMSD H-bond MM/PBSA
↓ ↓ ↓
最终候选模型假如你已经知道:
PD-1的binding residues:
A50
Y56
M64那么可以把这些信息加入对接约束。
因为:
整个蛋白表面
↓
寻找结合位置计算空间非常大。
而:
PD-1
↓
指定binding region
PD-L1
↓
指定binding region搜索空间明显缩小。
比如:
抗体
+
HER2如果已知:
CDR那么应该重点关注:
CDR-H1
CDR-H2
CDR-H3
CDR-L1
CDR-L2
CDR-L3而不是让抗体整个表面都参与随机对接。
流程:
Antibody
+
Antigen
↓
ZDOCK
↓
Interface constraint
↓
Cluster
↓
CDR interface
↓
PyRosetta refinement你前面已经在学习Vina,这两个可以放在一起理解:
分子对接
│
┌────────┴────────┐
│ │
小分子-蛋白 蛋白-蛋白
│ │
Vina ZDOCK
│ │
ligand docking protein docking
│ │
↓ ↓
binding pocket protein interface
│ │
↓ ↓
PyRosetta PyRosetta
│ │
↓ ↓
MD MD所以:
Vina解决的是“小分子怎么结合蛋白”,ZDOCK解决的是“两个蛋白怎么结合”。
建议不要一开始就拿自己的课题蛋白。
可以先做这个练习:
PD-1 + PD-L1
完整跑:
1. 下载PDB
↓
2. 拆分两个蛋白
↓
3. 清理PDB
↓
4. ZDOCK
↓
5. 得到2000 poses
↓
6. Clustering
↓
7. 选Top 10
↓
8. PyMOL观察
↓
9. Interface分析
↓
10. 与实验PDB比较
↓
11. 计算RMSD
↓
12. 判断ZDOCK是否成功预测其中最后一步特别关键:
假设实验结构是:
Experimental complexZDOCK预测:
Docking model计算:

例如:
RMSD = 2.1 Å那么说明预测结构和实验结构非常接近。
如果:
RMSD = 15 Å则说明这个pose很可能不是正确的结合模式。
以后你拿到ZDOCK结果,不要只问:
“哪个score最高?”
而应该依次问:
① ZDOCK score怎么样?
↓
② 是否属于大cluster?
↓
③ interface面积是否合理?
↓
④ 有没有明显clash?
↓
⑤ 是否形成合理H-bond / salt bridge?
↓
⑥ 是否符合已知binding site?
↓
⑦ PyRosetta优化后是否稳定?
↓
⑧ MD过程中interface是否稳定?
↓
⑨ MM/PBSA或MM/GBSA是否支持?
↓
⑩ 是否与实验结构/突变数据一致?这才是一个完整的蛋白–蛋白分子对接分析,而不是简单地“跑一次ZDOCK”。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。