3、输入文件准备:受体与配体PDB结构获取、加氢与合并非极性氢、准备PDBQT文件
做分子对接,最基础的一步就是准备输入文件。很多人一上来就急着跑Vina,结果跑出来的结果根本没法看。问题出在哪?说白了,就是输入文件没处理好。
我个人习惯把这一章叫做“地基工程”。地基没打好,上面盖的房子再漂亮也是危房。咱们今天就把这个地基讲透。
3.1 获取受体与配体的PDB结构
PDB(Protein Data Bank)文件是分子对接的起点。它描述了分子的三维坐标、原子类型、连接性等信息。你想想看,如果原始结构都有问题,后面的一切都是白搭。
3.1.1 受体的PDB结构获取
我建议你从以下几个途径获取受体结构:
- PDB数据库(rcsb.org):最权威的来源。搜索你感兴趣的蛋白质ID,下载.pdb文件。
- AlphaFold DB:如果目标蛋白没有实验结构,可以考虑使用AlphaFold预测的结构。记住,这只是预测,需要谨慎使用。
- 自己建模:如果上述都没有,同源建模也是一个选择。不过精度会下降不少。
3.1.2 配体的PDB结构获取
配体的来源就更多了:
- ZINC数据库:商业化合物库,小分子种类齐全。
- PubChem:美国国立卫生研究院维护的数据库。
- ChEMBL:偏向药物化学的数据库。
- 自己画:用ChemDraw画出结构,然后用Open Babel转成PDB格式。
获取到PDB文件后,记得检查一下结构是否完整。我曾经在处理一个配体时,发现它的一个苯环少了一个碳原子,结果跑出来的对接位点完全不对。后来发现是数据库下载时出了问题。
3.2 加氢与合并非极性氢
这一步非常重要,但很多人容易忽略。为什么?因为原始PDB文件中的氢原子很少。X射线晶体学在常规分辨率下很难确定氢原子的位置。所以我们需要用工具自动补全氢原子。
加氢有两个关键点:
- 加极性氢:与氮、氧、硫等电负性原子相连的氢,这些氢原子对对接精度影响很大。
- 合并非极性氢:也叫“合并氢”。就是把与碳原子相连的非极性氢合并到碳原子上。这样做是为了简化计算,因为非极性氢在氢键形成中不扮演重要角色。
3.2.1 为什么自动补全?
手动加氢?除非你疯了。我建议你使用MGLTools中的ADT来做这件事。ADT的加氢算法是基于pH值计算的,它会根据化学环境自动分配质子化状态。
在ADT中,加氢的步骤很直观:
ADT → Edit → Add Hydrogen → OK
加氢后,记住把非极性氢合并。ADT → Edit → Merge Non-Polar Hydrogens。就这么两步,别想复杂了。
3.3 准备PDBQT文件(使用MGLTools或ADT)
PDBQT是AutoDock系列的专用输入格式。它比PDB多了两部分信息:
- 原子类型:比如CA(sp2碳)、HD(极性氢)等。
- 电荷信息:基于Gasteiger-Marsili算法计算的部分电荷。
说白了,PDBQT就是你告诉程序:“嘿,这个原子是碳,带0.5个正电荷,位置在(x,y,z)。”
3.3.1 使用ADT生成PDBQT
准备好受体和配体的PDB文件后,我建议你按以下流程操作:
- 打开受体PDB:File → Read PDBS → 选择你的受体.pdb文件。
- 加氢:Edit → Add Hydrogens → 选择 pH=7.4(大多数情况)。
- 合并非极性氢:Edit → Merge Non-Polar Hydrogens。
- 计算电荷:Edit → Compute Gasteiger Charges。这一步会自动完成。
- 检查原子类型:在ADT的右侧面板,你会看到每个原子被分配的AD类型。比如
C代表芳香碳,A代表非芳香碳。如果发现有异常(比如氧原子被标成了碳),你需要手动修正。 - 保存PDBQT:File → Save As → 选择 PDBQT 格式。
配体的操作步骤类似,不过要注意配体通常需要允许可旋转键。
Ligand → Torsion Tree → Choose Torsion可以手动设置。
3.3.2 使用命令行的替代方案
如果你不想用ADT的图形界面,也可以用prepare_receptor4.py和prepare_ligand4.py这两个脚本来完成。这是MGLTools提供的工具。命令行操作的好处是快,适合批量处理。
# 准备受体PDBQT
prepare_receptor4.py -r receptor.pdb -o receptor.pdbqt
# 准备配体PDBQT
prepare_ligand4.py -l ligand.pdb -o ligand.pdbqt
3.4 知识结构总览
下面的SVG图展示了从原始PDB到最终PDBQT的完整流程。我把这个图画出来,方便你记在心里。
3.5 常见问题与避坑指南
| 问题 | 原因 | 解决方法 |
|---|---|---|
| PDBQT文件中出现奇怪的原子类型 | 原始PDB的原子名称不规范 | 手动检查并修正原子类型数,必要时用ADT的Check AD4 type功能 |
| 加氢后结构异常(如键长改变) | 原始结构中缺失某个原子导致立体化学错误 | 用Open Babel或PyMOL修复结构后再加氢 |
| 配体对接结果都是未结合状态 | 配体PDBQT的电荷或原子类型错误 | 重新计算电荷,检查是否有非标准原子 |
| 受体PDBQT文件太大,Vina报错 | 受体包含太多水分子或离子 | 在ADT中手动删除所有水分子和非关键离子 |
核心要点回顾:
- 始终从可靠的PDB数据库获取原始结构。
- 加氢和合并非极性氢是必须步骤,别偷懒。
- 用ADT或命令行脚本准备PDBQT文件。
- 手动检查原子类型和电荷,别完全依赖自动计算。
嗯,到这里,输入文件的准备工作就讲完了。你可能会觉得这一步很繁琐,但其实只要你按流程走一遍,后面跑Vina的时候会特别顺。我曾经帮一个师弟调试对接结果,他的PDBQT文件有问题,我花了半小时才调好。后来他学会了自己准备输入文件,再也没找过我。你看,前期工作做扎实了,后面能省多少事。