配体高效性(Ligand Efficiency, LE)把活性归一化到分子大小上。它回答的问题是:「这个分子的每个原子,平均贡献了多少结合能?」 这个视角比绝对活性更能预示一个苗头的优化潜力。
定义与计算
# LE = -ΔG / 重原子数
#
# 由于 ΔG = -RT ln(K) ≈ -1.37 × pKd (kcal/mol,室温)
#
# LE ≈ 1.37 × pIC50 / HAC
#
# HAC = heavy atom count(重原子数,不含氢)
#
# 单位:kcal/mol per heavy atom
from rdkit import Chem
def ligand_efficiency(smiles, pic50):
mol = Chem.MolFromSmiles(smiles)
hac = mol.GetNumHeavyAtoms()
return 1.37 * pic50 / hac
# 例:
# pIC50 = 6.0 (1 μM), HAC = 22 → LE = 0.37
# pIC50 = 9.0 (1 nM), HAC = 45 → LE = 0.27
#
# 后者活性高 1000 倍,但 LE 更低 ——
# 它的活性是「靠体积堆出来的」
判读标准
| LE | 解读 |
|---|---|
| > 0.4 | 很高效,优秀的起点 |
| 0.3~0.4 | 良好,多数成功药物落在此区间 |
| 0.2~0.3 | 可接受,但优化空间有限 |
| < 0.2 | 低效,活性主要靠体积 |
一个有用的参照:如果目标是 MW 约 500(HAC 约 36)、活性 1 nM(pIC50 = 9),需要的 LE 是 1.37×9/36 ≈ 0.34。反过来,如果你的苗头 LE 只有 0.2,要达到 1 nM 就需要 HAC ≈ 62(MW 约 850)——这已经超出常规口服药范围。这个简单的外推,能在早期就判断一个系列是否有前途。
为什么 LE 比绝对活性更有预示性
# 用 LE 反推「达到目标活性需要多大的分子」
def required_size(current_pic50, current_hac, target_pic50):
"""假设 LE 保持不变,达到目标活性需要多少重原子"""
le = 1.37 * current_pic50 / current_hac
required_hac = 1.37 * target_pic50 / le
return {
"current_LE": round(le, 3),
"required_HAC": round(required_hac, 1),
"approx_MW": round(required_hac * 13.5, 0), # 粗略估算
}
# 苗头 A: pIC50=5.5, HAC=20 → LE=0.377
# 要到 pIC50=9: 需要 HAC≈33, MW≈445 ✓ 可行
#
# 苗头 B: pIC50=6.5, HAC=38 → LE=0.234
# 要到 pIC50=9: 需要 HAC≈53, MW≈715 ✗ 太大
#
# 尽管 B 的当前活性高 10 倍,A 才是更好的起点
#
# 注意:这个外推假设 LE 保持不变,
# 实际优化中 LE 通常会下降 ——
# 所以现实比这个估算更严峻
相关的效率指标
| 指标 | 公式 | 衡量 |
|---|---|---|
| LE | 1.37 × pIC₅₀ / HAC | 每原子的结合效率 |
| LLE(见 072《脂溶性配体效率 LLE》) | pIC₅₀ − cLogP | 活性中「非疏水」的成分 |
| LELP | cLogP / LE | 综合,越小越好 |
| BEI | pIC₅₀ × 1000 / MW | 基于分子量的效率 |
| SEI | pIC₅₀ × 100 / TPSA | 基于极性表面积 |
| Fit Quality | LE 相对该尺寸的期望 LE | 校正了 LE 的尺寸依赖 |
LE 的一个已知问题:尺寸依赖
- 小分子天然有更高的 LE:结合能不是简单地与原子数成正比,前几个原子的贡献通常更大(它们占据了最有利的位置);
- 后果:直接用 LE 比较片段(HAC 15)与先导(HAC 35)是不公平的——片段的 LE 天然更高;
- 应对:
- 只在相近尺寸的分子间比较 LE;
- 或用 Fit Quality(FQ):把 LE 除以该尺寸下的期望最大 LE,得到 0~1 的归一化值;
- 跟踪 LE 在同一系列优化过程中的变化趋势,比看绝对值更有意义。
在优化中跟踪 LE
# 每轮优化后画 LE 的变化
#
# 理想情况:活性提升的同时 LE 保持或上升
# → 说明新加的基团「物有所值」
#
# 常见情况:活性提升但 LE 下降
# → 用体积换活性,性质预算在消耗
# → 可以接受,但要监控总预算(见 070)
#
# 危险信号:活性提升很小但 LE 大幅下降
# → 加了很多原子只换来一点活性
# → 这个方向应该停止
import pandas as pd
import matplotlib.pyplot as plt
def plot_optimization_trajectory(df):
"""df 需含 round, pIC50, HAC, cLogP"""
df["LE"] = 1.37 * df["pIC50"] / df["HAC"]
df["LLE"] = df["pIC50"] - df["cLogP"]
fig, axes = plt.subplots(1, 3, figsize=(15, 4))
for ax, col in zip(axes, ["pIC50", "LE", "LLE"]):
df.groupby("round")[col].max().plot(ax=ax, marker="o")
ax.set_title(col)
# 理想的轨迹:三者都上升
# 只有 pIC50 上升而 LE/LLE 下降 → 警示信号
return fig
片段筛选中的特殊价值
- 片段的绝对活性很弱(常在 μM 到 mM 级),单看活性无法判断优劣;
- 但片段的 LE 常常很高(0.4~0.6),因为它们只占据了口袋中最有利的位置;
- 因此片段筛选中 LE 是主要的排序指标——它识别出「每个原子都用在刀刃上」的片段;
- 片段生长的目标是「在增大分子的同时保持 LE」:如果生长过程中 LE 大幅下降,说明新加的部分没有形成有效相互作用。
关键要点
- LE 比绝对活性更能预示优化潜力——可用它外推「达到目标活性需要多大分子」;
- LE 有尺寸依赖,只在相近尺寸的分子间比较,或用 Fit Quality 归一化;
- 优化中跟踪 LE 的变化趋势:活性升而 LE 大幅降是警示信号;
- 片段筛选中 LE 是主要排序指标,因为绝对活性都很弱。
延伸资源
- LLE:072《脂溶性配体效率 LLE》;Lead-like:070《Lead-like 与 Drug-like》;
- Hit-to-Lead:404《Hit-to-Lead》;MPO:415《化合物优先级排序》。