069

Brenk Alert:结构警示在先导优化中的价值

Brenk 警报识别不适合作为先导化合物的结构基团。这篇讲清它与 PAINS 的区别、各类警报的化学依据与使用尺度。

Brenk 过滤器(Brenk et al. 2008)标记不适合作为先导化合物起点的结构基团。它与 PAINS 解决不同的问题:PAINS 针对「测定干扰导致假阳性」,Brenk 针对「即使活性是真的,这个结构也不适合往下做」

两者的区别

PAINS(见 068《PAINS Filter》 Brenk
关注 活性是不是真的 结构适不适合开发
典型问题 聚集、光学干扰、氧化还原 反应性、毒性、代谢不稳定
后果 浪费时间在假阳性上 后期出现毒性或稳定性问题
使用阶段 命中确认 苗头筛选与先导选择

主要警报类别与化学依据

类别 例子 问题
亲电性基团 迈克尔受体、烷基卤、环氧、异氰酸酯 与蛋白/DNA 共价反应,非特异毒性
不稳定基团 酸酐、酰卤、硫酯、缩醛 水解不稳定
潜在致突变 硝基芳烃、芳香胺、叠氮、肼 可能代谢活化为致突变物
金属与非常规元素 含 Si、B、重金属 代谢与毒性不明
氧化还原活性 醌、儿茶酚、对苯二酚 产生活性氧
过度柔性/大 长脂肪链 成药性差
不常见环系 三元/四元含杂原子环(部分) 稳定性与合成问题
多卤代 全氟烷基链等 持久性、生物蓄积

计算实现

from rdkit import Chem
from rdkit.Chem import FilterCatalog

params = FilterCatalog.FilterCatalogParams()
params.AddCatalog(FilterCatalog.FilterCatalogParams.FilterCatalogs.BRENK)
brenk = FilterCatalog.FilterCatalog(params)

# 也可以同时加载多个目录做综合筛查
params_all = FilterCatalog.FilterCatalogParams()
for cat in [
    FilterCatalog.FilterCatalogParams.FilterCatalogs.BRENK,
    FilterCatalog.FilterCatalogParams.FilterCatalogs.PAINS,
    FilterCatalog.FilterCatalogParams.FilterCatalogs.NIH,
    FilterCatalog.FilterCatalogParams.FilterCatalogs.ZINC,
]:
    params_all.AddCatalog(cat)
catalog_all = FilterCatalog.FilterCatalog(params_all)

def screen_alerts(smiles):
    mol = Chem.MolFromSmiles(smiles)
    if mol is None:
        return None
    return [{"filter": m.GetProp("FilterSet") if m.HasProp("FilterSet") else "?",
             "description": m.GetDescription()}
            for m in catalog_all.GetMatches(mol)]

# 建议:记录命中的具体警报名称,而非只记「是否命中」
# → 不同警报的严重程度差别很大

使用尺度:不要一刀切

结构警报的严重程度差别很大,应该分级对待:

严重度 类型 处理
硬性排除 酰卤、异氰酸酯、环氧(非设计的)、叠氮 直接删除
需要论证 迈克尔受体、硝基芳烃、芳香胺、醌 可能可接受,见下
标记关注 长脂肪链、多卤代、某些杂环 记录并在优化中改善

什么时候警报结构可以接受

  • 共价抑制剂的弹头最典型的例外。丙烯酰胺(迈克尔受体)是最常用的共价弹头,多个上市药物含有它。在共价设计中它是特征而非缺陷(见 379《共价抑制剂设计》);
  • 低剂量药物:结构警报的风险与暴露量相关。每天几毫克的高活性药物,其代谢活化产物的绝对量很小,风险显著低于每天数百毫克的药物;
  • 该位点实际不被代谢:硝基芳烃的风险来自还原代谢,如果实验证明该位点不被代谢,风险大幅降低;
  • 有充分的安全性数据:Ames 阴性、GSH 捕获实验阴性、无肝毒性信号;
  • 已有同类上市药物先例:说明该结构在合适的上下文中可以接受。

核心原则:结构警报是「需要论证」的信号,不是「自动否决」的判决。但论证的责任在你——需要用实验数据说明为什么这个警报在这个分子上不构成问题。

验证警报是否真的构成风险

# 针对不同警报的验证实验
#
# 亲电性基团 → GSH 反应性实验
#   测化合物与谷胱甘肽反应的半衰期
#   反应过快 = 非特异性反应风险高
#   (共价抑制剂需要适度的反应性,太快太慢都不好,见 379)
#
# 潜在致突变(硝基、芳香胺)→ Ames 试验
#   直接测致突变性
#   ICH M7 框架下还可用 (Q)SAR 预测(见 419)
#
# 代谢活化风险 → 反应性代谢产物捕获
#   微粒体孵育 + GSH/氰化物捕获剂
#   质谱检测加合物
#
# 化学稳定性 → 强制降解研究
#   酸、碱、氧化、光照条件下的稳定性
#
# 氧化还原活性 → H2O2 生成检测
#
# 这些实验成本不高,能把「结构警报」这个模糊的担忧
# 变成明确的数据判断

在流程中的位置

  • 虚拟筛选库准备:过滤掉硬性排除类,标记需要论证类;
  • 苗头选择:优先选择无警报的化学系列;
  • 先导优化:如果保留了警报结构,应在优化中尝试替换(用等排体,见 281《Cresset Spark》);
  • 候选提名前:所有保留的警报必须有实验数据支持其可接受性;
  • 生成模型:作为 custom_alerts 组件加入奖励函数(见 347《用 REINVENT4 生成新分子》)。

关键要点

  • Brenk 针对「结构适不适合开发」,PAINS 针对「活性是不是真的」
  • 警报严重程度差别大,应分级处理而非一刀切;
  • 共价弹头是最典型的例外——迈克尔受体在共价设计中是特征而非缺陷;
  • 警报是「需要论证」的信号,用 GSH 反应性、Ames 等实验把担忧变成数据。

延伸资源