重要提醒:PDB数据库下载的原始文件,绝对不能直接拿去对接。里面藏着水分子、非极性氢、缺失的侧链,还有混乱的电荷分配。每一样都会把你的对接结果带偏。
## 4.2 去除水分子——不是所有水都该删
### 为什么先去水?
PDB结构通常来自X射线晶体衍射,结晶过程会有大量水分子。这些水分子在对接空间中占了位置,会干扰配体与蛋白的真实结合模式。
### 哪些水必须删?
我在项目中遇到过几次“舍不得删水”的教训,悟出这么一条规矩:
| 水分子类型 | 处理策略 | 我犯过的坑 |
|------------|----------|------------|
| 游离水(不与蛋白形成氢键的水) | 直接删除 | 早期我没删,结果配体跑到水的位置上去了 |
| 与蛋白侧链形成氢键的结构水 | 保留 | 有一次把结构水全删了,对接结果与已知活性位点差了2Å |
| 位于活性口袋中心的水 | 保留并仔细评估 | 这种水参与配体结合,删了会失真 |
| 距活性位点超过5Å的水 | 全部删除 | 它们纯属“旁观者” |
实战经验:我觉得最稳妥的做法是——先用PyMOL或VMD把受体和已知配体叠合,看看配体周围哪些水分子可能与配体形成氢键,那些保留。其余水,一刀切,全删。
### 怎么操作删除?
我一般用PyMOL或者OpenBabel来处理:
# 用PyMOL去除水分子
remove resn HOH
save receptor_nosolv.pdb, all
# 或者用OpenBabel一行命令完成
obabel input.pdb -xr -O receptor_dry.pdb
## 4.3 加极性氢——弥补晶体结构的“短板”
### 为什么晶体学不给氢原子?
说白了,X射线衍射的电子密度图里,氢原子太小了,基本看不见。所以PDB里本来就没有氢原子。但是AutoDock做对接时,没有氢原子就没办法计算氢键、盐桥这些关键的相互作用。
### 加什么类型的氢?
我记得刚入行时,有人告诉我“加全氢”,我照着做了,结果对接速度慢得跟蜗牛一样。后来才明白,我们要加的其实是**极性氢**——就是连在N、O、S上的氢。
核心原则:只加极性氢,不加非极性氢。非极性氢(连在碳上的氢)在AutoDock里用“合并电荷”来处理,不会参与氢键计算。
### OpenBabel加氢示例:
obabel receptor_dry.pdb -O receptor_h.pdb -p 7.4 --addpolar
这个-p 7.4是按生理pH值调整质子化状态。嗯,这里有个细节——组氨酸的质子化状态特别重要。它在不同pH下有不同形式,选错了会影响对接。
### 组氨酸的三种状态
| 组氨酸状态 | 适合场景 | 我踩过的雷 |
|------------|----------|------------|
| HID(δ氮质子化) | 中性环境,δ氮和某个负电基团靠近 | 有一次我把所有组氨酸都设成HIE,结果一个氢键方向完全反了 |
| HIE(ε氮质子化) | 中性环境,ε氮参与氢键供体 | |
| HIP(双质子化) | 酸性环境,或与负电基团形成盐桥 | |
我习惯的做法是——先用Propka跑一遍pKa预测,根据结果手动调整His的质子化。
## 4.4 合并电荷——“吃掉”非极性氢的妙招
### 什么叫合并电荷?
AutoDock的原子类型体系区分了氢原子。非极性氢(碳上的氢)如果单独存在,会显著增加原子数,降低对接效率。合并电荷的操作,就是把每个碳上的非极性氢“吸收”到碳原子上,同时调整碳的净电荷。
### 有什么好处?
- 原子数减少30%-50%,对接着实快不少
- 减少了对非极性相互作用的不必要计算
- 保留了静电效应的关键信息
### 怎么操作?
# 用AutoDockTools
# 1. 打开受体文件
# 2. Edit -> Add -> Polar Hydrogens
# 3. Edit -> Add -> Gasteiger Charges
# 4. Edit -> Add -> Merge Non-Polar Hydrogens
输出文件:最终文件为
## 4.4 完整工作流
我把以上三步串起来,画了个流程图,你看看就明白了。
## 4.5 避坑指南——我替你踩过的那些坑
### 避坑1:别把结构水当垃圾删
有一次在准备激酶类受体的文件时,我把所有水都删了,结果配体怎么也对接不到已知活性位点。后来检查发现,活性口袋里有3个结构水,它们形成了一个“水桥”,连接了配体和蛋白的氢键网络。把那3个水加回来,对接结果一下就对了。
### 避坑2:电荷分配不能省
有些人图省事,跳过Gasteiger电荷计算,直接拿原始PDB去对接。这种做法会怎样?——活性位点上的带电残基(比如Asp、Glu、Lys)电荷乱飘,配体找到了一个“最低能态”,但这个能态完全是假的。
### 避坑3:注意氨基酸质子化边界
我记得有一个项目,受体蛋白的活性位点附近有两个组氨酸和一个天冬氨酸。按默认的pH7.4处理,两个组氨酸都设为HID,结果对接一直不收敛。后来发现,那个位点周围的微环境让一个组氨酸变成双质子化形式——改成HIP后,对接结果跟已知的共晶结构完全吻合。
.pdbqt格式。这个文件里,非极性氢已经消失,对应的碳原子带上修正后的电荷。
# 用PyMOL或AutoDockTools配置组氨酸质子化
# HID: His δ-质子化
# HIE: His ε-质子化
# HIP: His 双质子化(带正电)
# 推荐:先用Propka预测pKa
propka3 input.pdb
## 4.6 总结一下
准备受体文件这件事,听起来简单,实际上你对结构化学的理解都体现在这里。三步走:
1. **去水**:留结构水、删游离水
2. **加极性氢**:只加N/O/S上的氢,注意His质子化
3. **合并电荷与氢**:分配Gasteiger电荷,把非极性氢“吃掉”
行,按照这个流程处理过的受体文件,基本不会在对接时出幺蛾子。我记得有一次团队里的新人按这个流程走,一次跑出来的对接结果就跟文献里的共晶结构高度吻合——那种感觉,你应该能体会。