070

Lead-like 与 Drug-like:先导物和药物样分子的区别

先导化合物与药物样分子的性质要求不同。这篇讲清 lead-like 的理念、具体范围与为什么筛选库要用它。

Lead-like(先导样)与 drug-like(药物样)是两个不同的性质区间。理解它们的区别,是虚拟筛选与库设计中最重要的策略判断之一——用错区间会系统性地损害项目的后续优化空间

核心洞察:优化会增重

# 从苗头到候选药物的典型演变
#
#   苗头(hit)      →  先导(lead)  →  候选药物
#   MW  250~350         350~420          400~500
#   cLogP 1~3           2~4              2~4.5
#   活性 μM 级          100 nM 级        < 10 nM
#
# 为什么会增重?
#   提高活性通常需要:
#     - 增加与靶点的接触点(加基团)
#     - 填充口袋(加体积)
#     - 提高选择性(加特异性相互作用)
#   这些都会增加分子量与脂溶性
#
# 经验规律:
#   从苗头到候选,MW 常增加 80~150 Da,cLogP 增加 1~2
#
# 关键推论:
#   如果苗头已经是 MW 480、cLogP 4.5,
#   优化后必然突破可接受范围
#   → 苗头必须比药物「更小更亲水」

各阶段的性质范围

阶段 MW cLogP 其它
片段(fragment) < 300 < 3 HBD ≤ 3(Rule of 3)
Lead-like 250~350 ≤ 3.5 可旋转键 ≤ 7
Drug-like(Ro5) ≤ 500 ≤ 5 HBD ≤ 5、HBA ≤ 10
已上市口服药(中位) 约 350~400 约 2.5

虚拟筛选应该用哪个

  • 先导发现应该筛 lead-like 库这是最实用的一条策略建议。ZINC 等库都提供 lead-like 子集(见 230《ZINC》);
  • 直接筛 drug-like 库的问题
    • 大而油的分子在对接中天然得分更高(打分函数偏好疏水接触与更多接触点,见 095《Docking Score》);
    • 结果是筛出的都是接近性质上限的分子,后续优化空间被压缩;
    • 这类分子的配体高效性通常较低,「性价比」差。
  • 片段筛选是另一个极端:从极小的分子起步,优化空间最大,但起始亲和力很弱(mM 级),需要更长的优化路径与结构信息支持。

用配体高效性验证

from rdkit import Chem
from rdkit.Chem import Descriptors, Crippen

def efficiency_metrics(smiles, pic50):
    """计算效率指标,判断优化潜力"""
    mol = Chem.MolFromSmiles(smiles)
    hac = mol.GetNumHeavyAtoms()
    clogp = Crippen.MolLogP(mol)

    le = 1.37 * pic50 / hac        # 配体高效性(见 071)
    lle = pic50 - clogp            # 亲脂高效性(见 072)

    return {
        "MW": round(Descriptors.MolWt(mol), 1),
        "HAC": hac, "cLogP": round(clogp, 2),
        "pIC50": pic50,
        "LE": round(le, 3), "LLE": round(lle, 2),
    }

# 对比两个「同样 1 μM」的苗头:
#
# A: MW 300, HAC 22, cLogP 2.0, pIC50 6.0
#    LE = 1.37 × 6.0 / 22 = 0.37  ← 高效
#    LLE = 6.0 - 2.0 = 4.0
#    → 还有增重与增脂空间,优化潜力大
#
# B: MW 480, HAC 34, cLogP 4.8, pIC50 6.0
#    LE = 1.37 × 6.0 / 34 = 0.24  ← 低效
#    LLE = 6.0 - 4.8 = 1.2        ← 很差
#    → 「预算」已用尽,再优化必然突破性质边界
#
# 结论:A 是好得多的起点,尽管活性相同
#      这就是 lead-like 策略的量化依据

lead-like 的实际操作

# 1) 用现成的 lead-like 子集
#    ZINC 提供按性质切好的子集(见 230)
#    直接下载 lead-like + in-stock 的组合

# 2) 自己过滤
from rdkit import Chem
from rdkit.Chem import Descriptors, Crippen

def is_lead_like(smiles):
    mol = Chem.MolFromSmiles(smiles)
    if mol is None:
        return False
    return (
        250 <= Descriptors.MolWt(mol) <= 350 and
        Crippen.MolLogP(mol) <= 3.5 and
        Descriptors.NumRotatableBonds(mol) <= 7 and
        Descriptors.NumHDonors(mol) <= 3 and
        Descriptors.TPSA(mol) <= 90
    )

# 3) 用平滑评分而非硬过滤(更好)
#    在 MPO 中给 MW 与 logP 设置 lead-like 的目标区间
#    → 避免阈值悬崖,同时引导筛选方向

什么时候不用 lead-like

  • 靶点本身需要大分子:PPI 界面、某些大口袋,小分子根本无法覆盖(见 382《PPI 抑制剂》);
  • 做药物重定位:直接筛已上市药物,性质已定;
  • 非口服给药:静脉给药的性质约束宽松得多;
  • 非常规模态:大环、多肽、降解剂有自己的性质空间(见 362《降解剂成药性》373《大环化合物 Macrocycle》);
  • 片段筛选路线:起点更小。

在优化中监控「性质预算」

# 把 MW 与 cLogP 当作「预算」来管理
#
# 假设 TPP 要求最终分子 MW < 480、cLogP < 4
# 当前先导:MW 380、cLogP 3.0
#
# 剩余预算:MW 100 Da、cLogP 1.0
#
# 每次改造前问:
#   这个基团带来的活性提升,值得消耗多少预算?
#
# 量化方法:
#   加一个基团后,LE 与 LLE 是上升还是下降?
#   → 上升 = 这次改造是「高效」的
#   → 下降 = 用性质换活性,预算在消耗
#
# 这个思维方式能有效防止「不知不觉把分子做大」
# —— 而这是先导优化中最常见的失控模式

关键要点

  • 优化过程必然增重(典型 +80~150 Da、+1~2 logP),苗头必须留出空间;
  • 虚拟筛选应该用 lead-like 库,直接筛 drug-like 会得到接近性质上限的分子;
  • 用 LE 与 LLE 量化「优化潜力」,而非只看绝对活性;
  • 把 MW 与 cLogP 当作预算管理,每次改造前评估「性价比」。

延伸资源