214

Meeko:Docking 文件准备工具

Meeko 把配体与受体转成 Vina 所需的 PDBQT 并处理大环等细节,是 Vina 对接的标准前处理。这篇给出完整命令与容易出错的化学细节。

Meeko 是 AutoDock 团队维护的对接文件准备工具,负责把常规化学格式(SDF、MOL2、PDB)转换成 AutoDock 系列所需的 PDBQT 格式,并处理可旋转键定义、原子类型分配、大环柔性等细节。它取代了早年基于 Python 2 的 MGLTools 脚本,是现在 Vina 对接的标准前处理。

安装

pip install meeko
mk_prepare_ligand.py --help
mk_prepare_receptor.py --help

配体准备

# 从 SDF 准备(推荐:SDF 含明确键级与立体化学)
mk_prepare_ligand.py -i ligand.sdf -o ligand.pdbqt

# 批量:多分子 SDF 拆成多个 PDBQT
mk_prepare_ligand.py -i library.sdf --multimol_outdir pdbqt/

# 大环柔性(对接大环化合物时很关键)
mk_prepare_ligand.py -i macrocycle.sdf -o out.pdbqt --macrocycle

输入必须已经是正确的 3D 结构且质子化态正确。Meeko 不做构象生成,也不判断质子化态——它忠实转换你给的东西。典型的前置步骤是:

from rdkit import Chem
from rdkit.Chem import AllChem

mol = Chem.MolFromSmiles("CC(=O)Nc1ccc(O)cc1")
mol = Chem.AddHs(mol)
AllChem.EmbedMolecule(mol, randomSeed=0xf00d)   # 固定种子保证可复现
AllChem.MMFFOptimizeMolecule(mol)
Chem.MolToMolFile(mol, "ligand.sdf")

Python API

from meeko import MoleculePreparation, PDBQTWriterLegacy
from rdkit import Chem

mol = Chem.MolFromMolFile("ligand.sdf", removeHs=False)
prep = MoleculePreparation(rigid_macrocycles=False)
mol_setups = prep.prepare(mol)
for setup in mol_setups:
    pdbqt, ok, err = PDBQTWriterLegacy.write_string(setup)
    if ok:
        open("ligand.pdbqt", "w").write(pdbqt)

API 方式适合嵌进批量筛选流程,能直接从 RDKit 分子对象走到 PDBQT,不落地中间文件。

受体准备

mk_prepare_receptor.py -i receptor.pdb -o receptor -p \
  --box_center 11.2 23.4 -5.7 --box_size 22 22 22

受体准备前应先完成结构修复(补缺失原子、加氢、定质子化态),通常用 PDBFixer(见 215《PDBFixer》)或 PyMOL/Schrödinger 完成。Meeko 不修复结构

结果回读

# 把对接输出的 PDBQT 转回带正确键级的 SDF
mk_export.py out.pdbqt -s docked.sdf

这一步经常被忽略但很重要:PDBQT 格式丢失了键级信息,直接用它做后续分析(相互作用指纹、MD、绘图)会出错。用 mk_export.py 借助原始分子的化学信息还原成 SDF,才能安全进入下游。

容易出错的化学细节

  • 质子化态:羧酸、胺、咪唑在 pH 7.4 下的带电状态直接影响静电互补。用 Dimorphite-DL、Epik 等工具先定好,别指望对接工具替你处理。
  • 互变异构体:酮-烯醇、咪唑等互变异构会改变氢键供受体模式,需事先枚举并决定用哪个。
  • 立体化学:手性中心和双键构型必须在输入里明确,SMILES 里写清楚,SDF 里保留。
  • 大环:默认大环被当作刚性处理,会低估其柔性。对接大环化合物务必加 --macrocycle
  • 金属与辅因子:受体里的锌、镁等金属离子通常需要保留并正确设置原子类型,否则金属酶的对接会完全失真。

上手提示

  • Meeko 只做格式转换,不做构象生成、不修复结构、不判断质子化态;
  • 输入用 SDF 而非 PDB,保证键级与立体化学明确;
  • 对接完务必用 mk_export.py 转回 SDF,PDBQT 丢了键级信息;
  • 大环加 --macrocycle,金属酶注意保留并正确设置金属离子。

延伸资源