化合物与活性数据检索:ChEMBL 与 PubChem
化合物活性数据检索,是从公共数据库中把「哪个分子、在哪个靶点、用什么实验、测得多大活性」整理成一张干净的表。ChEMBL 由 EMBL-EBI 维护,主要从药物化学文献和专利中人工整理活性数据,字段规范,适合按靶点拉取 IC50、Ki、Kd、EC50 等定量结果;PubChem 由 NCBI 维护,收录化合物数量更多,BioAssay 部分包含大量高通量筛选的活性/非活性结论,也是核对化合物名称、结构和标识符的常用入口。整理好的数据集是 SAR 分析、QSAR 建模、虚拟筛选验证和老药新用的起点,数据清洗的质量往往比后面模型的选择更影响结论。
什么时候用
- 为某个靶点收集已知抑制剂及其 IC50、Ki,用来训练 QSAR 或分类模型
- 给虚拟筛选准备已知活性分子和非活性分子,评估富集效果
- 查一个候选化合物在哪些靶点上有报道活性,评估选择性和脱靶风险
- 核对文献或供应商给出的化合物名称、CAS 号与结构是否对应同一分子
- 汇总某类骨架在多个靶点上的活性,为构效关系分析准备数据
不适合的情况
- 把不同实验类型、不同测定条件的 IC50 直接混在一起比较绝对强弱
- 把数据库里没有记录的组合当作「无活性」,缺失数据不等于阴性结果
- 需要专有或未公开数据的项目,公共库只覆盖已发表和已提交的部分
需要准备的数据
- 靶点标识
- UniProt 登录号或 ChEMBL target ID;用基因名检索时注意同源蛋白和物种,避免把小鼠靶点混进人源数据
- 化合物标识
- 名称、SMILES、InChIKey、PubChem CID 或 ChEMBL ID 均可,结构标识比名称更可靠
- 活性类型与阈值
- 明确要哪些 standard_type(如 IC50、Ki、Kd),以及活性/非活性的划分阈值
- 本地化合物列表(可选)
- CSV 或 SDF,至少含一列 SMILES 或标识符,用于批量查询和身份核对
分析步骤
- 1
确定靶点与物种
用 UniProt 登录号映射到 ChEMBL target,优先选 target_type 为 SINGLE PROTEIN 的条目,按研究问题决定是否纳入复合物和家族条目。做对的标志:靶点物种与亚型和研究对象一致。
- 2
拉取活性记录
用 ChEMBL 网页、REST API 或 Python 客户端下载 activity 记录,保留活性类型、关系符、数值、单位、pChEMBL、实验类型、assay ID 和文献来源,并记下所用数据库版本号。
- 3
筛选实验与可信度
按 assay_type 区分结合实验与功能实验,通常不混用;只保留直接指定到单一蛋白的记录;剔除带 data_validity_comment 标记的数据。做对的标志:每条记录的实验含义能说清楚。
- 4
统一单位与活性值
把 nM、µM 等统一换算后转成负对数(pIC50、pKi),或直接使用 pchembl_value。对带「>」「<」的删失值单独处理,不要当作精确值。做对的标志:数值分布集中在合理区间,没有因单位错误产生的离群峰。
- 5
标准化结构并去重
用 RDKit 等工具去盐、中和电荷、规范化互变异构体,生成 InChIKey 或规范 SMILES 作为唯一键。同一分子多次测量时取中位数或几何平均,并记录测量次数和极差。
- 6
补充与身份核对
通过 PubChem PUG-REST 按名称或 InChIKey 查询 CID,核对同义名、分子式和结构;需要高通量筛选结论时查对应 BioAssay(AID)的活性判定。名称对应多个 CID 时要人工确认。
- 7
导出数据集与说明
输出清洗后的活性表、被剔除记录及原因、数据来源与版本说明。检查活性分子和非活性分子的比例、骨架多样性,判断是否足以支撑后续建模。
关键参数与决策
活性类型取舍
Ki 和 Kd 反映结合亲和力,IC50 依赖底物浓度等实验条件,同一化合物的 IC50 和 Ki 不能直接等同。建模时通常按类型分开,或只在同一类型内合并。
活性阈值
常用经验做法是把 pChEMBL ≥ 6(约 1 µM 及更强)视为活性,也有用 5 或 7 的。阈值决定正负样本比例,应结合靶点已知活性分布选择,并在报告中写明。
重复测量的合并方式
多次测量取中位数比均值更抗离群值;若同一分子测量值跨度超过约 1 个对数单位,提示实验条件差异大,可考虑剔除或单独标记。
删失值处理
「> 10000 nM」这类记录只说明活性弱于阈值,可在分类任务中作为非活性样本,在回归任务中通常剔除,避免模型学到人为截断值。
靶点范围
只用单一蛋白条目数据最干净;纳入蛋白家族或复合物条目能增加数据量,但活性归属会变模糊,适合探索性分析而不适合精细 SAR。
常见错误
- 直接用 standard_value 做均值而不看单位:nM 与 µM 混在一起会让部分分子的活性被放大或缩小 1000 倍,模型和排序都会错。
- 把 standard_relation 为「>」的记录当精确数值:大量截断在 10 µM 的值会在分布上形成假峰,回归模型会被拉向这个值。
- 只按化合物名称合并数据:同一名称可能对应盐型、立体异构体或不同批次结构,应以标准化后的 InChIKey 为准。
- 混合不同物种的同源靶点:人源与鼠源蛋白的活性可能差异明显,混用会让构效关系看起来不一致。
- 同一篇文献的系列化合物占数据集大部分:随机划分训练集和测试集会高估模型泛化能力,应考虑按文献或骨架划分。
- 忽略 PubChem BioAssay 中「非活性」的含义:高通量筛选通常只测单一浓度,非活性只说明在该浓度下未达到阈值。
结果怎么看
清洗后的活性数据表
每行一个化合物-靶点对,含标准化结构、InChIKey、合并后的 pActivity、测量次数和来源。重点看测量次数为 1 的比例和合并前后的极差;极差普遍很大说明实验来源过杂,需要收紧筛选条件。
活性值分布图
pIC50 或 pKi 的直方图。正常情况下呈单峰或略偏态;若在某个整数值处出现尖峰,多半是删失值或单位换算问题;分布过窄则说明数据集难以支撑回归建模。
剔除记录清单
列出被去掉的记录及原因,如单位缺失、可疑标记、非单一蛋白靶点、删失值。剔除比例异常高时,应回头检查是否选错了靶点条目或活性类型。
化合物身份核对表
输入名称或编号与 PubChem CID、ChEMBL ID、分子式和 InChIKey 的对应关系。标记一对多、找不到结构和结构冲突的条目,这些需要人工确认后才能进入分析。
和相近方法怎么选
ChEMBL 与 PubChem
ChEMBL 以文献整理的定量活性为主,字段统一,适合按靶点拉取 IC50 和 Ki;PubChem 化合物覆盖面更广,BioAssay 中高通量筛选结果多,适合核对身份。建模取数通常以 ChEMBL 为主,PubChem 用于补充。
ChEMBL 与 BindingDB
BindingDB 侧重测定的结合亲和力数据,与 ChEMBL 有较多重叠,也各有独有条目。需要尽量完整的数据时可合并两者,但要先按结构去重,并统一活性类型和单位。
活性数据检索与 QSAR 建模
本页解决的是数据从哪里来、怎么清洗;拿到干净数据之后的描述符计算、模型训练和适用域评估属于 QSAR 建模。数据阶段的去重、划分方式会直接影响模型评估是否可信。
常见问题
pChEMBL 值是什么,怎么算的?
pChEMBL 是 ChEMBL 对部分活性类型(如 IC50、Ki、Kd、EC50 等)给出的标准化值,等于以摩尔浓度表示的活性值取负常用对数,例如 1 µM 对应 6。它只在关系为等号、单位可换算时才给出,方便跨记录比较,但不消除实验条件差异。
ChEMBL 数据怎么批量下载?
少量靶点可在网页导出活性表;需要批量或可复现时用 REST API 或 Python 客户端按 target ID 查询 activity;数据量很大时可下载整库的关系数据库版本在本地查询。无论哪种方式都应记录数据库版本号。
IC50 和 Ki 能放在一起建模吗?
一般不建议直接混用。Ki 是抑制常数,较少依赖实验条件;IC50 会随底物浓度、酶浓度等变化。若数据量不足必须合并,至少应在模型中加入活性类型作为区分,或只在相同实验体系内比较。
同一个化合物在 ChEMBL 里有多个活性值怎么办?
先确认这些值是否来自同一活性类型和相同实验类型,再取中位数或几何平均合并,并保留测量次数。若数值相差超过约一个对数单位,说明测定条件差异较大,应查看原始文献,决定剔除还是单独标注。
PubChem 的 CID 和 SID 有什么区别?
SID 是数据提交者提交的物质记录,同一分子可能有许多 SID;CID 是 PubChem 对结构标准化后合并得到的唯一化合物编号。做结构层面的分析和去重应使用 CID 或 InChIKey,追溯来源时才需要看 SID。
在 Codar 里怎么做
在 Codar 中描述靶点或化合物清单后,会先确认靶点条目、活性类型和阈值,再从 ChEMBL 等公共库检索药物-靶点结合活性数据,并通过 PubChem 等来源核对化合物名称、结构与标识符。交付清洗后的活性表、剔除记录清单、活性分布图、化合物身份核对表,以及可复现的检索与清洗脚本。
帮我从 ChEMBL 拉取人源 EGFR 的 IC50 和 Ki 数据,统一成 pActivity 并去重,再核对附件 20 个化合物名称对应的结构