PAINS(Pan-Assay Interference Compounds,泛测定干扰化合物)是一类在多种不相关的生物测定中反复「命中」的结构。它们的活性通常不是特异性结合,而是各种干扰机制造成的假象。
PAINS 的干扰机制
| 机制 | 说明 | 典型结构 |
|---|---|---|
| 聚集体形成 | 在水中形成胶体,非特异吸附并抑制酶 | 高疏水性分子 |
| 化学反应性 | 与蛋白共价反应 | 迈克尔受体、醌类、烷化剂 |
| 氧化还原循环 | 产生 H₂O₂ 等活性氧 | 儿茶酚、醌、部分酚类 |
| 金属螯合 | 螯合测定体系中的金属 | 邻苯二酚、羟基喹啉 |
| 光学干扰 | 自身荧光或吸光 | 共轭体系、荧光团 |
| 膜破坏 | 破坏细胞膜 | 表面活性剂样结构 |
| 蛋白变性 | 非特异性使蛋白失活 | 某些亲电试剂 |
计算过滤
from rdkit import Chem
from rdkit.Chem import FilterCatalog
# 构建 PAINS 过滤器(A/B/C 三个子集)
params = FilterCatalog.FilterCatalogParams()
for cat in [FilterCatalog.FilterCatalogParams.FilterCatalogs.PAINS_A,
FilterCatalog.FilterCatalogParams.FilterCatalogs.PAINS_B,
FilterCatalog.FilterCatalogParams.FilterCatalogs.PAINS_C]:
params.AddCatalog(cat)
catalog = FilterCatalog.FilterCatalog(params)
def check_pains(smiles):
mol = Chem.MolFromSmiles(smiles)
if mol is None:
return None
matches = catalog.GetMatches(mol)
return [m.GetDescription() for m in matches]
# A/B/C 三个子集的区别:
# PAINS_A: 命中频率最高的模式(最可疑)
# PAINS_B: 中等
# PAINS_C: 较低频率
# → 可以只用 A 做严格过滤,全部三个做宽松标记
正确用法:按场景区分
| 场景 | 建议 | 理由 |
|---|---|---|
| 虚拟筛选的输出 | 删除 | 避免买到假阳性化合物 |
| HTS 数据建模 | 删除 | 否则模型学到的是假阳性模式(见 245《TDC HTS Group》) |
| 训练活性预测模型 | 标记而非删除 | PAINS 也可能有真实活性,删除损失数据 |
| 生成模型的护栏 | 作为惩罚项 | 见 347《用 REINVENT4 生成新分子》 |
| 已确认活性的化合物 | 标记 + 加强验证 | 不因结构直接否定 |
常见的过度解读
- 「PAINS 命中 = 一定是假阳性」。这是最常见的误解。PAINS 过滤器是基于统计频率提取的子结构模式,它标记的是「需要额外验证」而非「一定无效」。有多个上市药物含有 PAINS 模式。
- 过滤器本身有局限:原始 PAINS 模式提取自特定的 AlphaScreen 类测定,对其它测定类型的适用性有限;后续研究也指出某些模式的判别力不如预期。
- 忽略上下文:同一个子结构在不同分子环境中的行为可能不同;
- 把它当唯一判据:更可靠的判断应结合实验证据(见下)。
更可靠的假阳性判断
# 结构过滤只是第一道筛,实验判据更可靠
#
# 1) 频繁命中者分析(最有力)
# 查该化合物在多少个不相关的 assay 中显示活性
# PubChem BioAssay 可以查(见 227)
# → 在十几个不相关靶点上都有活性 = 高度可疑
#
# 2) 去污剂对照(针对聚集体)
# 加 0.01% Triton X-100 或 0.01% Tween-20 重测
# 活性消失或大幅下降 → 聚集体假阳性
# ← 这是最简单也最有效的单一实验
#
# 3) 剂量-响应曲线形状
# Hill 系数异常陡峭(> 2)→ 提示聚集或非特异
# 曲线不达平台 → 可疑
#
# 4) 预孵育时间依赖
# 活性随孵育时间大幅增强 → 可能是共价或缓慢聚集
#
# 5) 正交检测
# 用原理完全不同的方法验证(生化 + SPR + 细胞)
#
# 6) 直接结合验证
# SPR、ITC、NMR 确认真的结合靶点
#
# 7) 结构确证
# 共晶结构是最强证据
与其它过滤器的关系
| 过滤器 | 目标 | 严格度 |
|---|---|---|
| PAINS | 测定干扰 | 中 |
| Brenk(见 069《Brenk Alert》) | 不适合先导化合物的基团 | 较严 |
| NIH 过滤 | 反应性与不稳定基团 | 中 |
| ZINC 过滤 | 综合的类药性 | 中 |
| REOS | 快速排除不良化合物 | 严 |
不同过滤器的目标不同:PAINS 针对「测定干扰」,Brenk 针对「不适合作为先导」(如代谢不稳定、有毒性风险)。它们解决不同的问题,不应混用。
实践建议
- 在筛选流程中标记而非静默删除:保留记录,让决策者知道为什么某个分子被排除;
- 虚拟筛选输出必须过滤:买到 PAINS 化合物、做实验、得到假阳性、浪费数月——这个链条很常见;
- 建模时标记为特征:把 PAINS 命中作为一个特征列,而非删除样本;
- 命中确认阶段做去污剂对照:这是成本最低、判别力最高的实验;
- 不要因为结构像 PAINS 就否定已确证的活性:如果有共晶结构与正交验证,结构警报不足以推翻。
关键要点
- PAINS 命中是「需要额外验证」的提示,不是「一定无效」的判决;
- 虚拟筛选输出与 HTS 建模应删除,活性建模建议标记而非删除;
- 去污剂对照是判断聚集体假阳性最有效的单一实验;
- 「在多个不相关 assay 中都有活性」比结构匹配更能说明问题。
延伸资源
- Brenk 警报:069《Brenk Alert》;命中确认:402《Hit Identification》;
- HTS 数据:245《TDC HTS Group》;生成护栏:347《用 REINVENT4 生成新分子》。