PDBFixer 是 OpenMM 生态里的结构修复工具。晶体结构几乎总是不完整的——缺失侧链原子、缺失整段 loop、没有氢原子、含有实验添加物。直接拿原始 PDB 去做对接或模拟,是最常见也最容易被忽视的错误来源,PDBFixer 就是补这一课的。
安装
mamba install -c conda-forge pdbfixer openmm
pdbfixer --help # 也有命令行与图形界面
标准修复流程
from pdbfixer import PDBFixer
from openmm.app import PDBFile
fixer = PDBFixer(filename="1abc.pdb") # 也可 pdbid="1ABC" 联网下载
# 1) 找缺失残基(整段 loop)
fixer.findMissingResidues()
print("missing residues:", fixer.missingResidues)
# 2) 处理非标准残基(如硒代甲硫氨酸 → 甲硫氨酸)
fixer.findNonstandardResidues()
print("nonstandard:", fixer.nonstandardResidues)
fixer.replaceNonstandardResidues()
# 3) 移除杂原子(保留水与否可选)
fixer.removeHeterogens(keepWater=False)
# 4) 补缺失重原子(侧链)
fixer.findMissingAtoms()
print("missing atoms:", fixer.missingAtoms)
fixer.addMissingAtoms()
# 5) 按 pH 加氢
fixer.addMissingHydrogens(pH=7.4)
# 6) 可选:加溶剂盒子
# fixer.addSolvent(fixer.topology.getUnitCellDimensions())
PDBFile.writeFile(fixer.topology, fixer.positions,
open("fixed.pdb", "w"), keepIds=True)
每一步的判断依据
| 步骤 | 要做的判断 |
|---|---|
| 缺失残基 | 末端缺失通常可不补;结合位点附近的缺失 loop 必须补,否则口袋形状是错的 |
| 杂原子 | 结晶助剂(甘油、DMSO、硫酸根)该删;催化必需的金属、辅因子必须留 |
| 水分子 | 结合位点的保守水常参与桥接,做对接时是否保留需专门决定 |
| 加氢 pH | 默认 7.4;组氨酸的质子化态影响最大,关键位点建议人工核对 |
| 非标准残基 | MSE→MET 这类替换通常安全;翻译后修饰要评估是否与功能相关 |
补 loop 的重要提醒
PDBFixer 补的缺失 loop 是用简单几何方法生成的,不是预测出来的真实构象。它能让拓扑完整、模拟不炸,但那段 loop 的具体构象不可信。所以:
- 如果缺失 loop 远离结合位点,补上即可,不影响结论;
- 如果缺失 loop 就在结合位点旁边,不要直接信任补出来的构象——应改用同源建模、AlphaFold 预测,或做 loop 精修(如 Rosetta loop modeling),并对补出的构象做充分采样。
命令行与批量
# 命令行一步到位
pdbfixer 1abc.pdb --output=fixed.pdb --add-atoms=all \
--keep-heterogens=none --ph=7.4 --replace-nonstandard
# 批量修复
for f in structures/*.pdb; do
pdbfixer "$f" --output="fixed/$(basename $f)" \
--add-atoms=heavy --keep-heterogens=none --ph=7.4
done
修复后的检查清单
- 用 PyMOL 或 NGLView 目视检查一遍,尤其是补出来的部分;
- 确认该保留的金属、辅因子还在;
- 确认结合位点残基完整、质子化态合理;
- 做一次能量最小化,看是否有严重的原子重叠;
- 若用于 MD,先跑短时间约束模拟确认体系不炸。
上手提示
- 原始 PDB 直接拿去对接/模拟是最常见的隐性错误,修复是必经步骤;
- 删杂原子时务必保住催化金属与辅因子;
- 补出的 loop 构象不可信,位于结合位点附近时要另行建模;
- 组氨酸质子化态影响大,关键位点人工核对。
延伸资源
- 模拟引擎:200《OpenMM》;对接准备:214《Meeko》、182《AutoDock Vina》;
- 结构处理:210《Biopython》;可视化检查:211《PyMOL 开源版》、212《NGLView》。