OMEGA 是 OpenEye 的构象生成工具。构象生成看起来是个技术细节,实际上是所有三维方法的地基——形状筛选、药效团匹配、刚性对接、三维 QSAR,全都依赖输入构象的质量。构象生成得不好,后面所有计算都是在错误的几何上进行。
构象生成难在哪
- 组合爆炸:一个有 8 个可旋转键的分子,每个键取 3 个常见二面角,就有 3⁸ ≈ 6,561 种组合;实际的柔性分子远不止于此。
- 覆盖与数量的矛盾:既要覆盖到「生物活性构象」,又不能生成太多(下游计算成本随构象数线性增长)。
- 生物活性构象不是最低能构象。这是最关键的一点:配体结合时通常处于比全局最低能高数 kcal/mol 的构象(这部分能量由结合能补偿)。只保留低能构象会系统性地漏掉真正的结合构象。
- 环系与立体化学:柔性环(如七元环、大环)的构象搜索特别困难。
关键参数
| 参数 | 作用 | 典型设置 |
|---|---|---|
| 最大构象数 | 每个分子保留多少构象 | 筛选 50~200;精细分析 500+ |
| 能量窗口 | 相对最低能多少以内的构象保留 | 10~25 kcal/mol(不能太窄) |
| RMSD 去重阈值 | 多相似的构象算重复 | 0.5~1.0 Å |
| 大环处理 | 是否启用专门的大环采样 | 大环分子必须开启 |
能量窗口设得太窄是最常见的错误。为了「只要合理构象」把窗口设成 5 kcal/mol,往往会把生物活性构象排除在外。
开源方案:RDKit ETKDG
from rdkit import Chem
from rdkit.Chem import AllChem
mol = Chem.AddHs(Chem.MolFromSmiles(smiles))
# ETKDGv3:结合距离几何与实验扭转角偏好的知识
params = AllChem.ETKDGv3()
params.randomSeed = 0xf00d # 固定种子保证可复现
params.pruneRmsThresh = 0.5 # 去重阈值
params.numThreads = 0 # 用所有核
params.useSmallRingTorsions = True
params.useMacrocycleTorsions = True # 大环支持
cids = AllChem.EmbedMultipleConfs(mol, numConfs=200, params=params)
# 力场优化(推荐 MMFF94)
res = AllChem.MMFFOptimizeMoleculeConfs(mol, numThreads=0, maxIters=2000)
# 按能量筛选,注意窗口不要设太窄
energies = [e for (conv, e) in res]
emin = min(energies)
keep = [cid for cid, e in zip(cids, energies) if e - emin < 20.0] # 20 kcal/mol
print(f"生成 {len(cids)} 个构象,能量窗口内保留 {len(keep)} 个")
ETKDGv3 是 RDKit 当前推荐的方法,它在距离几何的基础上加入了从剑桥结构数据库(CSD)统计的扭转角偏好知识,质量比早期方法明显提升。
开源与商业的实际差距
- 覆盖率:在复现晶体构象的基准测试上,商业工具的成功率通常略高,尤其是柔性大、构象空间复杂的分子。
- 大环:大环构象生成是差距最明显的地方之一,虽然 RDKit 已加入大环扭转支持。
- 速度:商业工具经过高度优化,处理百万级分子时差距明显。
- 结论:对多数常规分子,RDKit ETKDGv3 + MMFF 优化的质量已经够用;差距主要出现在大环、高柔性分子和超大规模场景。
质量怎么判断
- 用共晶结构做回测:取一批有共晶结构的配体,生成构象,看能否复现晶体构象(最小 RMSD < 1.0 Å 算成功)。这是最直接的质量评估。
- 检查几何合理性:键长键角是否正常、有无原子重叠、立体化学是否保持。
- 看构象多样性:如果生成的构象彼此都很像,说明采样不足。
- 固定随机种子:不固定则每次结果不同,实验不可复现。
提示
商业软件功能与定价变动较快,本文为方向性介绍。关键提醒:生物活性构象通常不是能量最低构象,能量窗口设得太窄会系统性漏掉正确答案。
延伸资源
- 形状筛选:278《OpenEye ROCS》;平台:277《OpenEye Orion》;
- 底层工具:171《RDKit》;构象概念见「分子表示」模块。