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 等实验把担忧变成数据。
延伸资源
- PAINS:068《PAINS Filter》;共价设计:379《共价抑制剂设计》;
- Ames:089《Ames 试验》;生成护栏:347《用 REINVENT4 生成新分子》。