3. 受体与配体准备:PDB文件处理、加氢、修补氨基酸侧链、格式转换至PDBQT

这一章我想聊聊“准备”这件事。很多人觉得对接就是跑个命令,搞定。但实际项目中,百分之七十的失败都出在“准备”阶段。我调了这么多年的Vina,可以负责任地告诉你——好的准备,等于成功了一大半。你想想看,数据都不干净,结果能靠谱吗?

核心要点: 从原始PDB到干净的PDBQT,这个流程决定了对接的成败。每个步骤都不能省,每一步都有坑。
受体与配体准备流程 原始PDB文件 (实验结构) 结构清洗与修复 (去水、补残基) 加氢与侧链修补 (完整化) 电荷分配与格式转换 (PDBQT) 输出检查 (验证) 💡 关键提示 每一道工序都环环相扣。跳过任何一步,都可能导致对接结果完全偏离。 建议每次准备完,都做一遍输出检查。

3.1 PDB文件的获取与质检

说白了,你的原材料就两种来源:从PDB数据库下载,或者自己通过实验拿到。但无论哪种,到手的第一件事就是“质检”。

  • 分辨率:我一般要求2.5Å以下。更高?更好。更低?你查查是不是有更好结构。
  • 完整性:看它有没有缺失的残基或原子。缺失太多,对接基本白做。
  • 配体与辅因子:原始结构里有没有水、金属离子、或者小分子配体?这些都要记录。
⚠️ 我在项目中遇到过: 有些PDB文件明明标注分辨率1.8Å,但打开后发现电子密度图里配体位点根本就是胡乱建模的。所以,千万别只看分辨率,还得肉眼去看一眼电子密度图。

3.2 结构清洗与修复

拿到PDB后,别急着用。先做“三件事”:去水、去杂、补残基。

操作目的我常用的工具
去水只保留对接位点附近的结构水,其他全删PyMOL、pdb4amber
去杂删掉非标准残基、溶剂分子、离子(除非关键)PyMOL、Biopython
补残基用同源建模或模板补全缺失的loop和侧链Modeller、Swiss-Model

你可能会问:“为什么要补残基?”我的经验是——缺失的侧链如果正好在结合位点附近,那对接的打分直接废了。曾经有一次,我漏补了一个组氨酸侧链,结果对接结果看着挺好,但实验就是验证不了。后来发现,那个组氨酸位置上本该有氢键,因为侧链缺失完全没体现出来。

💡 小技巧: 如果你用PyMOL,可以用 remove solvent 快速删水。但注意,别误删了关键的配体或辅因子。

3.3 加氢与侧链修补

这是最容易出问题的一个环节。原始PDB里基本没有氢原子,因为X射线看不到它们。所以,你得“脑补”上。

  • 加氢:用什么工具?我个人习惯用 reduce 或 OpenBabel。加完要检查:组氨酸的质子化状态对不对?天冬氨酸、谷氨酸的羧基是不是去质子化了?
  • 修补侧链:有些残基可能多个侧链构象,你需要选一个。我一般选占据率最高的那个,然后删掉其他的。
加氢的关键点: 对pH敏感的残基(比如His、Asp、Glu、Cys、Lys)一定要手动确认质子化状态。对接环境是pH 7.4,还是pH 5.5?这个不同,结果完全不同。

3.4 电荷分配与PDBQT转换

Ok,现在结构看起来干净了。下一步就是把它转成AutoDock Vina能吃的格式——PDBQT。这个格式最大的特点就是:它把原子类型、电荷、可旋转键信息都写在了一个文件里。

怎么做?我推荐用 prepare_receptor4.py 和 prepare_ligand4.py,它们是ADT (AutoDock Tools) 的命令行版本。

# 受体转换(例子)
prepare_receptor4.py -r receptor.pdb -o receptor.pdbqt

# 配体转换(例子)
prepare_ligand4.py -l ligand.pdb -o ligand.pdbqt

这里有个坑——默认的电荷分配是基于Gasteiger电荷。对常见有机小分子,够用了。但如果你遇到特殊配体,比如金属配合物,我建议你手动算一下电荷,然后手动改PDBQT。

⚠️ 我曾经遇到: 一个配体里有三价铁离子,默认的Gasteiger电荷算出来铁是+2,我就直接用了。结果对接出来的能量完全不对。后来我手动查文献,把铁改成+3,重新跑了一轮,结论才站得住脚。

3.5 输出检查:这一步决定了你之后省不省心

文件生成出来后,别急着扔进Vina。

  1. 检查PDBQT头信息:是否有正确的原子类型和电荷?
  2. 检查可旋转键:配体里,哪些键被标记为可旋转?全部刚性旋转肯定不对,但可旋转键太多也会导致采样空间爆炸。
  3. 检查盒子(Grid Box):对接范围需要事先定义好,但这一步后面会讲。现在只要确保PDBQT文件没问题就行。
💡 快捷检查: 用文本编辑器打开PDBQT文件,看看最后几行——如果有大量 ATOM 记录以 ROOT、ENDROOT、BRANCH 结尾,那基本就对了。如果只有一行 END,说明可旋转键设置可能漏了。

嗯,到这里,你的受体和配体就已经准备好上场了。下一件事?那就是跑对接了。但跑对接之前,别忘了再确认一下格式——PDBQT里别出现乱码、空行、或者负电荷突然变正之类的怪事。我自己就吃过亏,有一次看到一个配体上所有碳原子都带了正电荷,想了半天才发现是脚本里一个小数点移位。