# 4. 准备受体文件:去除水分子、加极性氢、合并电荷 ## 4.1 受体文件预处理——你知道这一步有多重要吗? 说到准备受体文件,我见过不少新手上来就跑AutoDock,结果跑了三天得出个“完美结合”的姿势——实际上那个对接位点泡在水里,根本不可能结合。你想想看,这不就是典型的“数据不干净,结论就靠蒙”? 我个人习惯,在正式对接之前,花30分钟把受体文件好好收拾一下。节省的是后面反复重新跑对接的时间。
重要提醒: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
输出文件:最终文件为.pdbqt格式。这个文件里,非极性氢已经消失,对应的碳原子带上修正后的电荷。
## 4.4 完整工作流 我把以上三步串起来,画了个流程图,你看看就明白了。 受体文件预处理流程 原始PDB文件 ① 去除水分子 ② 加极性氢 ③ 加Gasteiger电荷 合并非极性氢 输出 PDBQT 文件 可用于对接 💡 核心原则 去水 → 加极性氢 → 分配电荷 → 合并非极性氢 每一步都直接影响对接的准确性和效率 ## 4.5 避坑指南——我替你踩过的那些坑 ### 避坑1:别把结构水当垃圾删 有一次在准备激酶类受体的文件时,我把所有水都删了,结果配体怎么也对接不到已知活性位点。后来检查发现,活性口袋里有3个结构水,它们形成了一个“水桥”,连接了配体和蛋白的氢键网络。把那3个水加回来,对接结果一下就对了。 ### 避坑2:电荷分配不能省 有些人图省事,跳过Gasteiger电荷计算,直接拿原始PDB去对接。这种做法会怎样?——活性位点上的带电残基(比如Asp、Glu、Lys)电荷乱飘,配体找到了一个“最低能态”,但这个能态完全是假的。 ### 避坑3:注意氨基酸质子化边界 我记得有一个项目,受体蛋白的活性位点附近有两个组氨酸和一个天冬氨酸。按默认的pH7.4处理,两个组氨酸都设为HID,结果对接一直不收敛。后来发现,那个位点周围的微环境让一个组氨酸变成双质子化形式——改成HIP后,对接结果跟已知的共晶结构完全吻合。
# 用PyMOL或AutoDockTools配置组氨酸质子化
# HID: His δ-质子化
# HIE: His ε-质子化
# HIP: His 双质子化(带正电)

# 推荐:先用Propka预测pKa
propka3 input.pdb
## 4.6 总结一下 准备受体文件这件事,听起来简单,实际上你对结构化学的理解都体现在这里。三步走: 1. **去水**:留结构水、删游离水 2. **加极性氢**:只加N/O/S上的氢,注意His质子化 3. **合并电荷与氢**:分配Gasteiger电荷,把非极性氢“吃掉” 行,按照这个流程处理过的受体文件,基本不会在对接时出幺蛾子。我记得有一次团队里的新人按这个流程走,一次跑出来的对接结果就跟文献里的共晶结构高度吻合——那种感觉,你应该能体会。