071

配体效率 Ligand Efficiency:小分子优化不能只看 IC50

配体高效性衡量每个重原子的结合贡献,比绝对活性更能预示优化潜力。这篇讲清计算、判读与在决策中的用法。

配体高效性(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 是主要排序指标,因为绝对活性都很弱。

延伸资源