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,金属酶注意保留并正确设置金属离子。
延伸资源
- 对接引擎:182《AutoDock Vina》、183《GNINA》;结构修复:215《PDBFixer》;
- 格式转换:216《OpenBabel》;构象生成见「分子表示」模块。