4. 靶点与化合物库准备

分子对接的结果质量,在上机运行之前就已经被两件事决定了大半:受体(靶点)结构是否干净、构象与质子化状态是否合理,以及配体库是否格式统一、去重彻底、参数可解析。本节把这两条准备链路拆开讲清楚,并给出可直接照做的操作细节与判断依据。

一、蛋白结构获取:优先实验结构,缺失处再补

靶点结构的首选来源是 RCSB PDB 中的实验结构(X 射线晶体或冷冻电镜)。选择时不要只看分辨率,还要看几个关键点:是否包含目标活性位点的完整残基、是否有共结晶配体或辅因子、是否有缺失环区(missing residues)、以及突变或标签是否影响结合口袋。例如某激酶靶点,PDB 条目分辨率 1.8 Å 但 ATP 结合口袋的甘氨酸富集环缺失 6 个残基,这种结构直接对接会得到假阳性极高的结果,应优先换用同源结构中口袋完整的条目,或用同源建模补齐。

若没有实验结构,可用 AlphaFold DB 预测模型,但要注意 pLDDT 置信度:口袋区域残基 pLDDT 低于 70 时,侧链朝向不可靠,建议只做初步筛选,不做精确打分排序。获取结构后统一转成 PDB 或 mmCIF,并记录来源、分辨率/置信度、缺失残基范围,作为后续可追溯的元数据。

二、清洗、加氢与质子化状态

清洗的目标是去掉对接软件不认识的“噪声”,同时不破坏口袋化学环境。典型处理顺序如下:

  1. 去水:多数对接需移除结晶水,但若某个水分子与口袋残基形成稳定氢键桥且在多条结构中保守,可保留为“结构水”,在部分软件中作为可旋转/固定水处理。
  2. 去配体与辅因子:移除共结晶配体;金属离子(如 Zn²⁺、Mg²⁺)通常保留,因为它们常参与配位,删除会导致口袋电荷分布错误。
  3. 补缺失原子与残基:用 PDBFixer、Modeller 或 Schrödinger Prime 补齐缺失侧链与环区,补全后检查是否与邻近残基产生原子碰撞。
  4. 加氢与质子化:生理 pH 7.4 下,Asp/Glu 去质子化(−1)、Lys/Arg 质子化(+1)、His 需按局部环境判断。可用 PROPKA 预测 pKa,或用 H++、PDB2PQR 生成质子化状态。His 的 Nδ/Nε 选择直接影响氢键网络,建议对口袋内 His 逐一确认。
  5. 能量最小化:仅对氢原子和侧链做约束最小化(如 500 步最陡下降 + 1000 步共轭梯度),避免整体骨架漂移。
判断清洗是否合格的一个实用检查:口袋内不应出现两个原子间距小于 1.2 Å 的“重叠”,也不应出现孤立电荷(如无配位对象的裸金属离子)。

三、活性位点定义:三种常用方式

活性位点定义决定了搜索空间(grid box / binding site),直接影响采样效率与假阳性率。常用方式有三类:

  • 基于共结晶配体:以原配体几何中心为盒中心,盒边长通常取配体最大跨度 + 8~10 Å 余量。例如原配体跨度约 12 Å,可取 22 Å × 22 Å × 22 Å 的立方盒。
  • 基于已知关键残基:如激酶取 hinge 区与 DFG 基序,蛋白酶取催化三联体,用这些残基的 Cα 或侧链原子计算质心。
  • 基于口袋检测:用 fpocket、SiteMap 等自动识别,再人工核对是否覆盖关键氢键供受体。

盒过大(如 40 Å 以上)会显著增加搜索空间与计算量,且容易把配体引到非特异表面;盒过小则可能截断配体构象。建议先用原配体做一次重对接(redocking),RMSD ≤ 2.0 Å 视为参数合理,再用于大规模筛选。

靶点准备与化合物库准备双链路 受体(靶点)链路 ① 结构获取 PDB 实验结构 / AlphaFold 预测 ② 清洗 去水 / 去配体 / 保留金属离子 补缺失残基与侧链 ③ 加氢与质子化 pH 7.4:Asp/Glu −1,Lys/Arg +1 His 按局部环境定 Nδ/Nε ④ 活性位点定义 共结晶配体 / 关键残基 / 口袋检测 盒边长 ≈ 配体跨度 + 8~10 Å 验证:原配体重对接 RMSD ≤ 2.0 Å 配体(化合物库)链路 ① 库来源与格式 SDF / SMILES / MOL2 / CSV ② 标准化 去盐 / 中和电荷 / 统一互变异构 生成 3D 构象与加氢 ③ 去重 InChIKey 骨架 + 立体层比对 保留 MW / 电荷更优者 ④ 过滤与拆分 MW 150~600,logP −2~5 按 1000~5000 分子/批拆分 输出:PDBQT / SDF 统一格式,可追溯 ID 对接输入

四、大规模化合物库的格式转换与去重

真实筛选场景中,化合物库常来自多个供应商,格式混杂:SDF、SMILES、MOL2、CSV 各占一部分,且同一分子可能以盐、不同互变异构体或不同立体异构形式重复出现。处理流程建议如下。

格式统一:以 SMILES 或 SDF 作为中间格式,用 RDKit 或 Open Babel 批量转换。示例命令:

# SDF 转 SMILES,并保留标题
obabel input.sdf -osmi -O output.smi

# 用 RDKit 批量标准化并生成 3D
from rdkit import Chem
from rdkit.Chem import AllChem
suppl = Chem.SDMolSupplier('raw.sdf', removeHs=False)
writer = Chem.SDWriter('clean.sdf')
for mol in suppl:
    if mol is None:
        continue
    mol = Chem.RemoveHs(mol)
    Chem.SanitizeMol(mol)
    mol = Chem.AddHs(mol)
    AllChem.EmbedMolecule(mol, randomSeed=42)
    writer.write(mol)
writer.close()

去重策略:最可靠的是用 InChIKey 的前 14 位(骨架层)加后段立体层共同判断。仅用分子量或 SMILES 字符串去重会漏掉互变异构体和盐形式。实际操作中,先按 InChIKey 完全匹配去重,再对骨架相同但立体不同的分子保留全部(若对接需要考虑立体选择性),对盐形式统一去盐后合并。

过滤与拆分:按类药性规则过滤,常用阈值为分子量 150~600、logP −2~5、可旋转键 ≤ 10、氢键供体 ≤ 5、受体 ≤ 10。过滤后按每批 1000~5000 个分子拆分,便于并行调度与失败重跑。每个分子保留唯一 ID(如 ZINC ID 或自增编号),并记录来源库、原始 SMILES、标准化后 SMILES,保证结果可追溯。

常见坑:直接用 Open Babel 批量加氢时,若未指定 pH,羧酸和胺的质子化状态可能随机;建议先用 RDKit 的 StandardizeSmiles 或 Fixer 模块统一处理,再生成 3D。

五、准备阶段的验收清单

检查项合格标准不合格的后果
受体口袋完整性关键残基无缺失,无原子重叠假阳性升高,打分失真
质子化状态His/Asp/Glu/Lys 与 pH 7.4 一致氢键网络错误
盒尺寸原配体重对接 RMSD ≤ 2.0 Å采样不足或非特异结合
配体去重InChIKey 唯一,盐形式已合并重复计算,浪费算力
格式与字段统一 PDBQT/SDF,含唯一 ID调度失败,结果无法回溯

把上述两条链路都走通之后,受体文件与配体批次就具备了进入对接引擎的条件。准备阶段多花的一小时,往往能省下后续几天的无效计算与人工复核。