4、受体准备:去除水分子、加氢、修复缺失残基、PDBQT格式生成
说实话,做高通量对接这么多年,我见过最惨的失败案例,十有八九都是受体准备没做到位。你想想看,受体本身就是"靶心",如果靶心都歪了,后面打分筛得再漂亮也是白搭。这一章我就把受体准备的核心操作拆开揉碎来讲,每步都带点我实际踩过的坑。
核心观点:受体准备的本质,是把晶体结构或冷冻电镜结构"翻译"成对接程序能理解的语言。翻译错了,对接就是个笑话。
4.1 受体准备的四个关键步骤
整个流程可以归纳为下图。我习惯把它当作一条流水线,每个环节都有明确的输入和输出。千万别跳步,也别随意调换顺序。
4.2 去除水分子:哪些该留,哪些该删
晶体结构里通常有大量水分子。但对接时,大部分水是要删掉的。为什么呢?因为对接程序默认把受体当刚性或半刚性处理,水分子会占据本来配体可能结合的位置,限制搜索空间。
但有个例外:结合位点的保守水。 我在做激酶项目时遇到过,某个催化水如果删了,对接完全找不到活性构象。后来查文献才发现,那个水分子参与了氢键网络,是结合必需的一部分。
我建议保留以下几类水:
- 与残基主链或侧链形成≥2个氢键的水
- 在多个同源结构中保守出现的水
- 文献明确提及参与结合或催化的水
实际操作中,我的做法是先用PyMOL或VMD把受体结构打开,手动查看结合位点周围5Å内的水。不确定的,跑一下 waterswap 或参考同源结构。别偷懒,这一步省不了。
我曾经犯过的错:有次做虚拟筛选,为了省事一键删了所有水。结果富集因子直接腰斩。后来花了两周重新跑才找到原因——催化水没了。从那以后,我每次去水都会单独列一个"保留水清单"。
4.3 加氢处理:质子化状态决定成败
蛋白质的加氢不是简单地把氢原子补上。关键在于质子化状态——也就是在当前的pH环境下,每个可电离残基到底带几个氢。
你想想看,His、Asp、Glu、Lys、Arg 这些残基的pKa不同,pH一变,电荷状态就全变了。对接程序需要知道正确的电荷分布才能算对静电作用。
我习惯用 reduce 或 PDB2PQR 做加氢。如果体系pH明确(比如7.4),我会直接设pH值,让工具自动推断。如果不确定,我会跑一下 PROPKA 预测pKa。
# 使用 reduce 加氢(经典做法)
reduce -Trim tmp.pdb > receptor_noH.pdb
reduce -HIS receptor_noH.pdb > receptor_addH.pdb
# 使用 PDB2PQR 加氢并指定 pH
pdb2pqr --ff=AMBER --ph=7.4 receptor.pdb receptor_pqr.pdb
重点:加氢后必须手动检查His的三种质子化状态(HID、HIE、HIP)。这是高频出错点。我见过很多人跑完对接才发现His电荷设反了,白白浪费算力。
还有个细节:水分子上的氢也要加对。如果保留了关键水,它的氢原子取向会影响氢键网络。我一般用 haddock 或 gromacs 的工具来优化水分子取向。
4.4 修复缺失残基:让结构完整起来
晶体结构里经常有缺失的残基——尤其是柔性loop区域。对接时如果结合位点附近有缺失,那结果基本没法用。为什么呢?因为缺失的主链会让局部结构变形,配体可能"钻"进不该去的空腔。
修复缺失残基分两种情况:
| 缺失类型 | 推荐工具 | 注意事项 |
|---|---|---|
| 侧链缺失(≤5残基) | Modeller / SCWRL4 | 用同源模板做约束,避免过度优化 |
| 主链缺失(loop) | Modeller / Rosetta | 生成≥10个候选,选能量最低且结构合理的 |
| 大片段缺失(>10残基) | 建议重新解析或找更好模板 | 算法修复的置信度极低,慎用 |
我个人的做法:对于结合位点5Å以内的缺失,我会用Modeller做多模板修复,然后跑一轮短能量最小化。对于远离结合位点的缺失,如果实在修复不了,我会在对接时把那个区域设为柔性,或者直接截掉。
小技巧:修复完跑一下 PROCHECK 或 MolProbity 检查立体化学质量。拉氏图里 outliers 太多的结构,对接结果不可信。
4.5 PDBQT格式生成:最后一道工序
PDBQT是AutoDock系列的专用格式。它在PDB的基础上加了原子类型、Gasteiger电荷和扭转信息。说白了,就是把受体"翻译"成AutoDock能算分的语言。
生成PDBQT最常用的工具是 prepare_receptor4.py(AutoDock Tools 自带的脚本)。基本命令如下:
# 生成受体 PDBQT
prepare_receptor4.py -r receptor_addH.pdb -o receptor.pdbqt
# 如果需要指定 pH 或保留水
prepare_receptor4.py -r receptor_addH.pdb -o receptor.pdbqt \
-p pH=7.4 -x waters.pdb
跑完命令后,千万别直接拿去用。打开PDBQT文件,检查以下几项:
- 原子类型字段(第5列): 确保没有出现 "NA" 或 "Unknown" 的类型。
- 电荷总和: 所有原子的部分电荷加起来应该是整数(或接近整数)。我见过有人拿到的受体电荷总和是 -0.83,明显有问题。
- 根原子(ROOT)定义: 确认根原子选在合理的位置,通常是结合位点附近的骨架原子。
我曾经踩过的坑:有次处理一个金属蛋白,prepare_receptor4.py 把Zn²⁺的原子类型设成了 "A"(碳),电荷也完全不对。后来手动改成金属原子类型并重新分配电荷才解决。金属蛋白的PDBQT生成,一定要人工复核。
4.6 受体准备质控清单
最后,我把自己平时用的质控清单整理成表。每次准备完受体,按这个单子过一遍,能挡住90%的低级错误。
| 检查项 | 检查内容 | 通过标准 |
|---|---|---|
| 水分子 | 结合位点保守水是否保留 | 已确认并记录保留水清单 |
| 加氢状态 | His、Asp、Glu 质子化是否与pH一致 | His 已指定 HID/HIE/HIP |
| 残基完整性 | 缺失残基是否修复,修复质量如何 | 拉氏图 outliers ≤ 2% |
| PDBQT格式 | 原子类型、电荷总和、ROOT位置 | 无 "NA" 类型,电荷总和为整数 |
| 金属离子 | 配位关系和原子类型是否正确 | 金属原子类型已手动核对 |
一句话总结:受体准备没有捷径。去水、加氢、修残基、转格式,每步都值得花时间做扎实。高通量对接的批次里,一个没准备好的受体,会让你整个筛选结果都脏掉。