105

PDBFixer:对接前如何修复蛋白结构

PDB 文件几乎从不能直接用于计算。这篇讲清 PDBFixer 的修复能力、质子化处理与结构准备的完整检查清单。

从 PDB 下载的结构几乎从不能直接用于对接或模拟:缺失残基、缺失侧链原子、无氢原子、多构象、非标准残基——这些问题如果不处理,后续所有计算都建立在错误的结构上。PDBFixer 是处理这些问题最方便的开源工具。

PDB 结构的典型问题

问题 后果 PDBFixer 能否处理
缺失氢原子 无法判断氢键;力场无法用
缺失侧链原子 口袋形状错误
缺失残基(loop) 结构不完整 能(短 loop)
非标准残基 力场无参数 能(替换为标准残基)
多个 altloc 原子重叠 能(保留占有率高的)
结晶助剂分子 干扰对接 能(删除杂原子)
质子化态错误 相互作用判断全错 部分(见下)
翻转的 Asn/Gln/His 氢键方向错误 不能(需 Reduce/PROPKA)

标准流程

pip install pdbfixer   # 或 conda install -c conda-forge pdbfixer

from pdbfixer import PDBFixer
from openmm.app import PDBFile

fixer = PDBFixer(filename="4xyz.pdb")
# 或直接从 PDB 下载:PDBFixer(pdbid="4XYZ")

# 1) 查找缺失残基
fixer.findMissingResidues()
print("缺失残基:", fixer.missingResidues)

# 重要:默认会补齐链末端的缺失残基,
#      但末端的 loop 通常远离结合位点且构象不可靠
#      → 建议只补中间的缺失
chains = list(fixer.topology.chains())
keys = list(fixer.missingResidues.keys())
for key in keys:
    chain = chains[key[0]]
    if key[1] == 0 or key[1] == len(list(chain.residues())):
        del fixer.missingResidues[key]   # 删除末端缺失

# 2) 处理非标准残基
fixer.findNonstandardResidues()
print("非标准残基:", fixer.nonstandardResidues)
fixer.replaceNonstandardResidues()

# 3) 删除杂原子(水、离子、结晶助剂)
#    keepWater=False 删掉所有水
#    → 但结合位点的关键水可能需要保留!(见 091)
fixer.removeHeterogens(keepWater=False)

# 4) 补齐缺失的重原子
fixer.findMissingAtoms()
print("缺失原子:", fixer.missingAtoms)
fixer.addMissingAtoms()

# 5) 加氢(指定 pH)
fixer.addMissingHydrogens(pH=7.4)

# 6) 输出
with open("fixed.pdb", "w") as f:
    PDBFile.writeFile(fixer.topology, fixer.positions, f)

质子化态:最容易出错的环节

# PDBFixer 的加氢基于「标准 pKa」,
# 但残基在蛋白环境中的 pKa 可能显著偏移
#
# 关键残基:
#
# His(组氨酸):pKa 约 6.0,接近生理 pH
#   → 可能是中性(HID/HIE,两种互变异构)或质子化(HIP)
#   → 中性时质子在 Nδ 还是 Nε?这决定了它是氢键供体还是受体
#   → 【这是最常见的错误来源】
#
# Asp/Glu:标准 pKa 约 4,通常去质子化
#   → 但埋在疏水环境中可能质子化
#
# Lys:标准 pKa 约 10.5,通常质子化
#   → 埋藏时可能中性
#
# Cys:标准 pKa 约 8.3
#   → 催化位点的 Cys 可能是硫醇盐(活性形式,见 379)
#
# 更好的工具:
#   PROPKA:  预测蛋白中各残基的 pKa
#   H++:     基于泊松-玻尔兹曼的质子化预测(网页服务)
#   Reduce:  优化氢原子位置,并处理 Asn/Gln/His 的翻转
#   PDB2PQR: 整合了 PROPKA,输出带电荷半径的 PQR 文件

# 推荐组合:
#   PDBFixer 补原子 → PDB2PQR/PROPKA 定质子化态
#   → Reduce 优化氢位置与翻转
#
# 验证:
#   检查结合位点残基的质子化态是否与已知的
#   相互作用模式一致(见 108)

Asn/Gln/His 翻转问题

  • 问题根源:X 射线晶体学无法区分 N 与 O(电子数接近),因此 Asn/Gln 的酰胺基、His 的咪唑环可能被建模成翻转 180° 的错误取向
  • 后果:氢键供体与受体的角色互换——相互作用分析会完全错误
  • 发生频率不低:估计有相当比例的 PDB 结构存在这类问题;
  • 解决:用 reduce -FLIP input.pdb > output.pdb,它会根据氢键网络优化判断正确的取向;
  • 这一步常被跳过,但对结合位点分析影响很大

结构准备的完整检查清单

# 对接/模拟前的检查清单
#
# □ 分辨率是否足够?(< 2.5 Å 较可靠)
# □ 结合位点区域的电子密度是否清晰?
#   → 看 PDB 条目的 validation report
# □ 结合位点附近有无缺失残基?
#   → 如果有,补齐的 loop 构象不可靠
# □ 是否有 altloc?保留哪个?
# □ 辅因子(金属、血红素、NAD 等)是否保留?
#   → 参与结合的必须保留
# □ 关键水分子是否保留?(见 091)
# □ 质子化态是否检查过?(尤其 His)
# □ Asn/Gln/His 是否做过翻转优化?
# □ 是否有结晶接触伪影?
#   → 结合位点是否被相邻分子占据
# □ 蛋白是否有多条链?哪条是目标?
# □ 加氢后是否有明显的空间冲突?
#
# 最终验证:
#   用修复后的结构做重对接(见 096)
#   能复现原配体姿势 = 结构准备合格

与其它工具的关系

工具 擅长
PDBFixer 补缺失原子/残基、加氢;与 OpenMM 无缝衔接
PDB2PQR + PROPKA 质子化态预测
Reduce 氢位置优化 + Asn/Gln/His 翻转
Modeller 长 loop 建模;同源建模
PyMOL / ChimeraX 目视检查与手工编辑
商业工具(Schrödinger Protein Prep) 整合流程,一步到位

关键要点

  • PDB 结构几乎从不能直接使用——不修复就计算,结果不可信;
  • His 的质子化态与互变异构是最常见的错误来源,PDBFixer 的默认处理不一定对;
  • Asn/Gln/His 翻转问题常被跳过,但会让相互作用分析完全错误,用 Reduce 处理;
  • 删水前先确认结合位点是否有关键水;补 loop 时不要补末端。

延伸资源