ChEMBL

ChEMBL — 药物发现生物活性数据库 AI-Ready Wikipedia | 千方病案医数集

来源 EMBL-EBI url: https://www.ebi.ac.uk/chembl/发布时间: 2026-08-10最后更新: 2026-08-10 阅读 1

信息速览

数据集名称ChEMBL
数据类型约250万化合物,约2100万生物活性,约16000靶点,SQL/SDF/RDF/API
规模化合物-靶点数据库,非患者数据
接入方式EMBL-EBI url: https://www.ebi.ac.uk/chembl/
AI 就绪度

INFOBOX

| 字段 | 值 |
||-|
| 数据集名称 | ChEMBL (formerly StARlite) |
| 维护机构 | EMBL-EBI (European Molecular Biology Laboratory - European Bioinformatics Institute) |
| 创建年份 | 2009 (ChEMBL_01, Oct 28) |
| 当前版本 | ChEMBL 37 (May 2026) |
| 化合物数 | 2,496,335 (v35, Dec 2024) |
| 生物活性测量 | 21,123,501 (v35) |
| 实验检测数 | 1,740,546 (v35) |
| 靶点总数 | 16,003 (v35) |
| 蛋白质靶点 | ~10,600 (v33) |
| 人类蛋白质靶点 | ~5,300 (v33) |
| 文档总数 | 92,121 (v35) |
| 文献覆盖期刊 | ~230 种期刊 |
| 文献时间跨度 | 1974-2024 |
| 存储数据集 | 420+ 个 (v33) |
| 获批药物 | 2,993 (v33) |
| ATC/ICD-11 映射 | ATC (Anatomical Therapeutic Chemical Classification) |
| 化学标识符 | SMILES, InChI, InChI Key |
| 活性类型 | IC50, Ki, Kd, EC50, Potency, Inhibition, 等 |
| 实验类型 | Binding (B), Functional (F), ADME (A), Toxicity (T) |
| 作用类型 | 32 种 (inhibitor, blocker, inverse agonist, 等) |
| 许可证 | CC BY-SA 3.0 (Creative Commons Attribution-Share Alike 3.0) |
| DUO 标签 | 无限制(商业用途允许,衍生作品须同许可证) |
| 下载格式 | SQLite, MySQL, PostgreSQL, SDF, FASTA, RDF (Turtle), FPSim2 |
| API | RESTful API (JSON/XML) + Python SDK (chembl_webresource_client) |
| 月均访问量 | ~53,000 会话 / ~25,000 用户 / ~531,000 页面浏览 |
| DAIMS 就绪度 | 19/24 ⭐⭐⭐⭐ |
| 基金来源 | Wellcome Trust (£4.7M), EMBL 成员国, BBSRC, NIH, EU (IMI 2/EUbOPEN/RESOLUTE), ELIXIR |

§0 E-E-A-T 信任声明与免责声明

维度 声明
经验 (Experience) ChEMBL 自 2009 年首次发布以来已运行 17 年,经历 37 个版本迭代,累计从 ~26,000 篇文献(v01)增长至 92,000+ 篇文档(v35),是全球运行时间最长、规模最大的开放药物发现生物活性数据库之一
专业知识 (Expertise) ChEMBL 团队由 EMBL-EBI 的化学生物学/化学生物信息学专家组成;团队负责人:John Overington 博士(2008-2015,ChEMBL 创始人)、Andrew Leach 博士(2016-至今);数据策展由受过训练的化学信息学家和药物化学家执行;化学结构标准化管道基于 FDA/IUPAC 指南
权威性 (Authoritativeness) ChEMBL 是 ELIXIR 认定的欧洲核心数据资源之一;被 NAR (Nucleic Acids Research) 数据库专刊收录(2012, 2014, 2017, 2019, 2024);每版本分配独立 DOI;被全球 ~230 种药物化学期刊引用;PubMed 中提及 “ChEMBL” 的文章在过去 10 年稳步增长
可信度 (Trustworthiness) 数据三步标准化管道(Checker → Standardizer → GetParent)公开于 GitHub;药物安全数据(撤市、黑框警告)含监管文件引用;生物活性单位持续归一化(AUC 91% 统一,Cmax 97% 统一);蛋白质变异体数据经人工整理(2,443 个变异体);存储数据集有正式提交检查清单和错误处理指南
透明度 版本变更日志公开可查;每个版本分配独立 DOI;FTP 服务器保留从 ChEMBL_01 到最新版本的全部下载;代码开源(GitHub: chembl/ChEMBL_Structure_Pipeline, chembl/FPSim2)

[千方病案医学编辑部]交叉审核:审核范围包括数据集基本事实、技术规格描述、许可证信息、版本统计数据的准确性。本页面基于 ChEMBL 33 NAR 2024 论文(Zdrazil et al., 2024)及 ChEMBL 官方文档编写。

免责声明:ChEMBL 数据来自公开发表的文献、专利和存储数据集。生物活性数据可能因原始实验条件差异而存在噪声。化学结构标准化管道虽经过严格质控,仍可能存在个别错误。使用 ChEMBL 数据进行 AI 模型训练时,应进行独立的数据质量检查和交叉验证。千方病案医数集不对因使用本百科信息而产生的任何后果承担责任。ChEMBL 是 EMBL-EBI 的服务,主要资金来自 EMBL 成员国政府。

页面状态:published

§1 数据集概览

§1.0 📌 30 秒速览

ChEMBL 是什么?
ChEMBL 是由 EMBL-EBI(欧洲分子生物学实验室-欧洲生物信息学研究所)维护的手工策展药物发现生物活性数据库。它收录了 250 万 个药物样小分子化合物、2100 万 条生物活性测量数据、16000 个靶点,数据来自 ~230 种药物化学期刊(覆盖 1974-2024 年)、专利(通过 SureChEMBL)和 420+ 个存储数据集。

为什么重要?

  • 全球最大的开放获取药物发现生物活性数据库,CC BY-SA 3.0 许可证允许商业使用
  • AI/ML 药物发现领域的标准训练数据源——PubMed 中 “ChEMBL AND machine learning” 的文章在过去 10 年稳步增长
  • 覆盖从靶点筛选到临床批准的完整药物发现链条:2,993 个获批药物,8,415 个进入至少早期 I 期临床试验的化合物
  • 提供化学结构标准化管道、单位归一化、靶点分类层级——AI Ready 程度极高

谁应该关注?

  • AI/ML 研究者:QSAR 模型训练、分子性质预测、药物-靶点相互作用预测
  • 药物化学家:结构-活性关系分析、先导化合物优化
  • 计算生物学家:多药理学分析、药物重定位
  • 生物技术公司:靶点筛选、命中化合物识别

快速获取数据

# 方法 1: Python SDK (推荐)
pip install chembl_webresource_client
from chembl_webresource_client.new_client import new_client
activity = new_client.activity
for a in activity.filter(target_chembl_id=''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''CHEMBL205'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''', standard_type=''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''IC50'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''')[:5]:
    print(a[''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''molecule_chembl_id''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''], a[''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''standard_value''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''], a[''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''standard_units''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''])
# 方法 2: FTP 下载完整数据库
wget https://ftp.ebi.ac.uk/pub/databases/chembl/ChEMBLdb/latest/chembl_sqlite.tar.gz

§1.1 摘要

ChEMBL(原称 StARlite)是一个手工策展的药物样生物活性分子数据库,由 EMBL-EBI 在 Wellcome Trust 基金会 £470 万战略奖支持下于 2009 年 10 月首次发布。数据库的前身是英国生物技术公司 Inpharmatica Ltd. 开发的 StARlite 系统,后者于 2006 年被 Galapagos NV 收购后,于 2008 年通过 Wellcome Trust 的资助转移至 EMBL-EBI 公开运营。

ChEMBL 的核心价值在于将分散在 ~230 种药物化学期刊中的结构-活性关系(SAR)数据进行系统性提取、策展和标准化。数据库覆盖的文献时间跨度从 1974 年到 2024 年,涵盖药物发现的全生命周期:从靶点筛选到临床批准。当前版本(ChEMBL 35,2024 年 12 月)收录 2,496,335 个唯一化合物、21,123,501 条生物活性测量、1,740,546 个实验、16,003 个靶点和 92,121 篇文档(包括论文、专利、存储数据集和书籍)。

ChEMBL 在 AI/ML 药物发现领域具有不可替代的地位。它是 QSAR(定量构效关系)模型的标准训练数据源,也是深度学习分子性质预测、药物-靶点相互作用预测和药物重定位研究的基础数据集。数据库提供的 RESTful API、Python SDK 和多种下载格式(SQLite/MySQL/PostgreSQL/SDF/FASTA/RDF)使其能够被无缝集成到各类 AI 工作流中。

§1.2 为什么重要:五大核心价值

  1. 规模与覆盖的不可替代性:2,500 万化合物 × 2,100 万活性 × 16,000 靶点,覆盖 1974-2024 年 50 年的药物化学文献,是全球最大的开放获取药物发现生物活性数据库

  2. 数据质量的系统性保障:三步化学结构标准化管道(Checker → Standardizer → GetParent)基于 FDA/IUPAC 指南,163 种盐和 9 种溶剂的标准化处理,生物活性单位持续归一化(AUC 91%、Cmax 97% 统一)

  3. AI Ready 的全方位设计:标准化的 InChI Key 化学标识符、统一的活性类型(IC50/Ki/Kd/EC50→nM)、pChEMBL 负对数变换值、预计算的 FPSim2 指纹数据库、Python SDK 无缝集成

  4. 时间维度的独特价值:文献数据覆盖 1974-2024 年,支持时间序列分析、趋势分析和 ML 时间分割验证——这对避免数据泄露的模型评估至关重要

  5. 生态系统的中心枢纽:与 UniChem(>1.78 亿结构交叉引用)、SureChEMBL(专利数据)、PubChem、DrugBank 等数据库互连,是化学信息学生态系统的核心节点

§1.3 与同类数据库对比

特征 ChEMBL PubChem BioAssay DrugBank BindingDB ZINC
化合物数 2.5M 119M ~14K ~2.4M ~1.4B ( purchasable )
生物活性数 21.1M 295M ~8K ~2.5M
靶点数 16,000 ~5K ~9K
策展方式 手工策展 自动提交 手工策展 半自动 自动
单位标准化 ✅ (IC50/Ki→nM) ❌ (原始格式)
结构标准化 ✅ (三步管道)
许可证 CC BY-SA 3.0 公共领域 CC BY-NC 4.0 CC BY 4.0 免费
商业使用 ✅ 允许 ✅ 允许 ❌ 禁止 ✅ 允许 ✅ 允许
API RESTful + Python SDK REST (PUG-REST) REST (需注册) 有限 REST
下载格式 SQL/SDF/RDF/FASTA FTP/SDF XML/SQL TSV/Excel SDF/SMILES
ML 适用性 ⭐⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐
时间覆盖 1974-2024

选择建议:ChEMBL 是 QSAR 模型训练和深度学习分子性质预测的首选数据源,其手工策展质量和单位标准化程度远超 PubChem 的自动提交数据。DrugBank 适合药物信息查询但不适合大规模 ML 训练(规模小 + 非商业许可证限制)。PubChem 适合大规模化合物搜索和筛选,但生物活性数据质量参差不齐。

§1.4 数据集时间轴

2008    Wellcome Trust £4.7M 战略奖,StARlite 从 Galapagos NV 转移至 EMBL-EBI
  │     John Overington 组建 ChEMBL 化学基因组学团队
  │
2009    ChEMBL_01 (Oct 28): 440K 化合物, 1.9M 活性, 26K 文档, 5.7K 靶点
  │     仅 15 张公开表,覆盖 12 种药物化学期刊
  │
2010    ChEMBL_03-08: 引入 SRC_ID (多来源支持), 首批存储数据集 (NTD 筛选数据)
  │     GSK/Novartis/St. Jude 疟原虫筛选数据存入
  │
2011    ChEMBL_09-10: 首次纳入 PubChem 确证实验数据,化合物数突破 100 万
  │     ChEMBL-NTD 服务器上线,ChEMBL-Malaria 数据服务发布
  │
2013    ChEMBL_15-16: 引入细胞系 (CELL-LINE) 靶点类型
  │     化合物数达 130 万
  │
2014    NAR 2014 论文发表 (Davies et al.)
  │     Oracle 数据库支持,网站月均访问量突破 3 万
  │
2015    ChEMBL_20: 引入药物适应症 (Drug Indications) 数据
  │     化合物数达 146 万
  │
2016    ChEMBL_22: 引入组织 (TISSUE) 靶点类型,蛋白质变异体数据
  │     Andrew Leach 接任团队负责人
  │
2017    NAR 2017 论文发表 (Gaulton et al.)
  │     前端从 Backbone.js 开始迁移至 Vue.js + Nuxt.js
  │
2018    ChEMBL_24: 引入体内实验分类 (In Vivo Experiment Classification)
  │     FPSim2 相似性搜索工具开发
  │
2019    NAR 2019 论文发表
  │     部署迁移至 Kubernetes 集群
  │
2020    ChEMBL_26-27: Conformal Prediction 靶点预测模型上线
  │     FPSim2 替代 RDKit PostgreSQL cartridge
  │
2021    ChEMBL_28-29: 引入药物警告 (Drug Warnings) 数据
  │     前体药物 active_molregno 关联字段, Oracle dump 停止主下载
  │
2022    ChEMBL_30-31: 毒性实验 (Toxicity) 从 ADME 中独立分离
  │     SARS-CoV-2 大规模药物重定位筛选数据纳入
  │
2023    ChEMBL_32-33: NAR 2024 论文发表 (Zdrazil et al.)
  │     ACTION_TYPE 32 种作用类型注释 (~270K 活性)
  │     CHEMBL_RELEASE 发布版本表, FPSim2 纳入 FTP 下载
  │     存储数据集生物活性首次超过文献提取
  │
2024    ChEMBL_34-35: Oracle 19c 按需支持终止, 化合物突破 250 万
  │     "ChEMBL 15 周年"综述发表 (J Cheminformatics)
  │
2025+   ChEMBL_36-37: 持续增长,月均 5.3 万会话
  │     1.78 亿+ UniChem 交叉引用结构

§1.5 典型用例

用例 描述 难度 ChEMBL 优势
QSAR 模型训练 从 ChEMBL 提取特定靶点的 IC50 数据,训练回归模型预测新化合物活性 ⭐⭐ 标准化单位 + pChEMBL 值 + 时间分割支持
药物-靶点相互作用预测 利用化合物-靶点对训练分类/回归模型 ⭐⭐⭐ 16,000 靶点 + 多活性类型覆盖
药物重定位 识别已有药物的新适应症靶点 ⭐⭐⭐ 获批药物 (2,993) + 多靶点活性数据
多药理学分析 分析药物在多个靶点上的活性谱 ⭐⭐⭐⭐ 同一化合物对多靶点的完整活性谱
ADMET 预测 预测吸收/分布/代谢/排泄/毒性 ⭐⭐ ADME + Toxicity 实验类型分类
化学空间映射 使用分子指纹可视化化学空间分布 ⭐⭐ SDF 格式 + FPSim2 预计算指纹
天然产物发现 筛选和识别天然产物来源的活性化合物 ⭐⭐ ~64K 天然产物标记 + NP 相似性评分
药物安全分析 分析药物撤市原因和黑框警告 ⭐⭐ 202 撤市药物 + 592 黑框警告 + EFO 映射

§2 药学背景

§2.1 ICD-11 / ATC / ChEBI 标准映射

ChEMBL 作为药物发现数据库,其标准映射体系与临床医学数据集不同,主要使用以下三套标准:

标准体系 用途 ChEMBL 中的应用
ATC (Anatomical Therapeutic Chemical Classification) WHO 药物分类系统 获批药物和临床候选药物的解剖/治疗/化学分类;药物适应症映射
ChEBI (Chemical Entities of Biological Interest) 化学生物学本体 化合物角色分类(如抑制剂、激动剂);化学实体语义标注
EFO (Experimental Factor Ontology) 实验因子本体 药物撤市原因映射(如 “cardiac arrhythmia”);高级毒性类别映射(如 “cardiotoxicity”)
NCBI Taxonomy 生物分类法 靶点来源生物体分类(Tax ID),覆盖人类、大鼠、小鼠、细菌、病毒等
UniProt 蛋白质序列数据库 蛋白质靶点与 UniProt 条目交叉引用;变异体序列关联
ChEMBL Target Classification ChEMBL 内部靶点分类 三级分类:蛋白质靶点 → 非蛋白质分子靶点 → 非分子靶点

ATC 分类示例

  • 阿司匹林 (CHEMBL25):N02BA01 (神经系统 > 镇痛药 > 水杨酸及其衍生物 > 水杨酸类 > 乙酰水杨酸)
  • 布洛芬 (CHEMBL521:M01AE01 (肌肉骨骼系统 > 抗炎/抗风湿药 > 非甾体抗炎药 > 丙酸衍生物 > 布洛芬)

§2.2 临床任务

ChEMBL 支持的药物发现任务覆盖完整药物发现链条:

阶段 任务 ChEMBL 数据支持
靶点识别 确定疾病相关靶点 16,000 靶点 + 蛋白质序列 + 生物体分类
命中化合物识别 筛选对靶点有活性的化合物 21.1M 生物活性测量 + 多活性类型 (IC50/Ki/EC50)
先导化合物优化 改善先导化合物的活性和性质 SAR 数据 + 化学结构 + 计算属性 (logP/MW/Ro5)
选择性评估 评估化合物对非靶标蛋白的选择性 同一化合物对多靶点的活性谱
ADMET 评估 预测药代动力学和毒性 ADME (A) + Toxicity (T) 实验类型分类
临床转化 评估临床候选药物的进展 MAX_PHASE 分类 (4=获批, 3=III期, 2=II期, 1=I期)
药物安全监测 监测上市后药物安全 撤市药物 + 黑框警告 + EFO 映射毒性
药物重定位 发现已有药物的新适应症 药物适应症 (55,442 条, v35) + 多靶点活性

§2.3 化合物分类与靶点谱系

化合物分子类型分布 (v33):

  • 小分子 (Small molecule):~80%(主导类型)
  • 抗体 (Antibody):v32 起显著增加
  • 蛋白质 (Protein):v32 起显著增加
  • 寡核苷酸 (Oligonucleotide):增长类别
  • 寡糖 (Oligosaccharide):少数
  • 基因治疗 (Gene):v28 引入

靶点三级分类体系

层级 类型 数量 (v33) 子类型
蛋白质靶点 ~10,600 SINGLE PROTEIN, PROTEIN COMPLEX, PROTEIN FAMILY, PROTEIN COMPLEX GROUP, PROTEIN-PROTEIN INTERACTION, CHIMERIC PROTEIN, SELECTIVITY GROUP
非蛋白质分子靶点 ~200 NUCLEIC-ACID (44种), PROTEIN NUCLEIC-ACID COMPLEX, SMALL MOLECULE, MACROMOLECULE, LIPID, METAL, OLIGOSACCHARIDE
非分子靶点 ~4,500 CELL-LINE, TISSUE, ORGANISM, SUBCELLULAR, PHENOTYPE

人类蛋白质靶点:~5,300(约占蛋白质靶点的一半),是药物发现的主要关注对象

§2.4 生物活性数据类型与标准化

核心活性类型

活性类型 含义 典型单位 标准化后
IC50 半数抑制浓度 nM, μM, mM nM
Ki 抑制常数 nM, μM nM
Kd 解离常数 nM, μM nM
EC50 半数有效浓度 nM, μM nM
Potency 效价 nM, μM nM
Inhibition 抑制率 (%) % %
AUC 药时曲线下面积 ng·h/mL ng·h/mL (91% 统一)
Cmax 最大血药浓度 nM, ng/mL nM (97% 统一)

pChEMBL 值:ChEMBL 提供负对数变换值 pChEMBL = -log10(standard_value × 1e-9),范围通常 1-12,值越高表示化合物越有效。此变换将不同量级的活性值统一到可比较的对数空间,是 ML 模型的标准输入格式。

实验类型分类 (v33):

  • Binding (B):结合实验,测量化合物与靶点的结合亲和力
  • Functional (F):功能实验,测量化合物的功能效应
  • ADME (A):吸收/分布/代谢/排泄实验
  • Toxicity (T):毒性实验(v30 从 ADME 中独立分离,增长 6 倍)

作用类型 (v33):32 种不同作用类型,包括 inhibitor(抑制剂)、blocker(阻断剂)、inverse agonist(反向激动剂)等。约 270,000 个活性数据已注释作用类型(v33 作为测试集发布)。

§3 数据集规格

§3.0 版本抉择矩阵

ChEMBL 的版本选择对 AI 模型训练至关重要。以下矩阵帮助用户选择最适合的版本:

版本 发布日期 化合物 活性 关键特性 推荐用途
ChEMBL 35 2024-12 2,496,335 21,123,501 最新完整统计版本;Oracle 支持终止 ⭐ 推荐:最新研究
ChEMBL 33 2023-05 2,399,743 20,334,684 NAR 2024 论文描述版本;ACTION_TYPE 测试集 ⭐ 推荐:可复现论文
ChEMBL 32 2023-01 2,354,965 20,038,828 INN 申请化合物首次纳入;FPSim2 纳入 FTP 过渡版本
ChEMBL 30 2022-02 2,157,379 19,286,751 Toxicity 实验类型独立 Toxicity 分析基线
ChEMBL 28 2021-01 2,086,898 17,276,334 Drug Warnings + Prodrug 关联 药物安全分析
ChEMBL 27 2020-05 1,961,462 16,066,124 Conformal Prediction 靶点预测 靶点预测研究
ChEMBL 24 2018-05 1,828,820 15,207,914 体内实验分类引入 体内实验研究
ChEMBL 20 2015-02 1,463,270 13,520,737 药物适应症引入 适应症分析基线
ChEMBL 01 2009-10 440,055 1,936,969 初始版本,仅文献数据 历史对比

时间分割建议:对于需要时间分割验证的 ML 模型,建议使用 ChEMBL 27 (2020-05 之前) 作为训练集,ChEMBL 33 (2023-05) 作为测试集,利用文献日期字段 (docs.year) 实现严格的时间分割,避免数据泄露。

§3.1 数据模态

ChEMBL 的数据模态与医学影像数据集截然不同,以化学结构和生物活性测量为核心:

模态 描述 格式 字段/列
化学结构 2D 分子结构 SMILES, InChI, InChI Key canonical_smiles, standard_inchi_key
分子属性 计算的物理化学性质 数值 molecular_weight, alogp, psa, ro3_pass, ro5_violations
生物活性 化合物-靶点活性测量 数值 + 单位 standard_type, standard_value, standard_units, pchembl_value
实验信息 实验检测元数据 结构化文本 assay_type, assay_organism, assay_tax_id, bao_format
靶点信息 蛋白质/细胞/组织靶点 结构化文本 target_type, pref_name, organism, tax_id
文档信息 来源文献/专利/数据集 元数据 doc_type, journal, year, authors, doi, patent_id
药物标注 临床进展和安全信息 分类标签 max_phase, molecule_type, natural_product, chemical_probe, prodrug
药物安全 撤市/黑框警告 结构化文本 drug_warning_type, warning_year, efo_term
药物适应症 批准适应症 结构化文本 mesh_disease, efo_disease, max_phase_for_ind
蛋白质序列 靶点氨基酸序列 FASTA target_sequence, variant_sequences

§3.2 数据来源与组成

ChEMBL 的数据来源分为四大类,自 v33 起存储数据集的生物活性首次超过文献提取:

来源类型 代码 v33 活性数 占比 描述
存储数据集 (DATASET) DATASET ~10.9M 54% 药企/学术机构捐赠、整合自其他公共数据库
文献提取 (PUBLICATION) PUBLICATION ~9.0M 44% 从 ~230 种期刊手工提取
专利 (PATENT) PATENT ~380K 2% 通过 SureChEMBL 和 BindingDB 提取
书籍 (BOOK) BOOK ~600 <0.1% 参考书籍中的活性数据

核心文献来源 (Top 5 期刊, v33):

期刊 文档数 实验数 生物活性数
J Med Chem 24,505 569,146 2,848,595
Bioorg Med Chem Lett 23,763 291,472 1,743,896
Eur J Med Chem 9,410 246,065 1,460,323
Bioorg Med Chem 8,873 147,680 909,607
J Nat Prod 8,410 77,131 302,822

主要存储数据集来源 (v33):

来源 Source ID 数据量 描述
专利生物活性 38 99,948 活性 / 1,322 靶点 SureChEMBL 提取,381 个新专利
SGC 化学探针 54 70,800 测量 / 1,435 靶点 206 个捐赠化学探针
EUbOPEN 化学基因组学库 55 ~400,000 活性 / 180 靶点 933 个化合物的全靶点筛选
CO-ADD 抗菌筛选 40 ~100,000 活性 31 个数据集,抗药性感染
Kuster 激酶化学蛋白质组学 48 ~70,500 活性 / 320 靶点 243 个临床激酶药物
疟原虫筛选 ~400,000 活性 / 78,000 化合物 v28 特殊发布

§3.3 化学结构标准化管道

ChEMBL 的化学结构标准化是数据质量的核心保障,管道代码完全开源(GitHub: chembl/ChEMBL_Structure_Pipeline):

Step 1: Checker(检查器)

  • 输入:原始化学结构
  • 功能:验证化学结构,识别问题
  • 输出:惩罚评分(2=低优先级 → 6=入库但无结构 → 7=致命错误,不入库)

Step 2: Standardizer(标准化器)

  • 输入:通过检查的化学结构
  • 功能:基于 FDA/IUPAC 预定义规则修正结构(参考 FDA Global Substance Registration System)
  • 输出:标准化后的化学结构

Step 3: GetParent(获取母体)

  • 输入:标准化后的化学结构
  • 功能:基于 USAN Council 药理学盐类列表创建母体分子
  • 包含 163 种盐和 9 种溶剂
  • 盐和溶剂文件可在 GitHub 获取
  • 输出:母体分子结构(去除盐和溶剂)

§3.4 数据库 Schema 与核心表

ChEMBL 数据库采用关系型数据库设计,核心表结构如下:

MOLECULE_DICTIONARY (2.5M 行)
├── molregno (PK)
├── chembl_id (e.g., CHEMBL25)
├── pref_name
├── max_phase (4=approved, 3=Phase III, ...)
├── molecule_type (Small molecule, Antibody, ...)
├── natural_product (BOOL)
├── chemical_probe (BOOL)
├── prodrug (BOOL)
├── oral (BOOL)
├── parent_type
└── active_molregno (FK → MOLECULE_DICTIONARY, for prodrugs)
    │
    ├── COMPOUND_PROPERTIES
    │   ├── molregno (FK)
    │   ├── molecular_weight
    │   ├── alogp
    │   ├── psa (极性表面积)
    │   ├── ro3_pass
    │   ├── ro5_violations (0-4)
    │   ├── np_likeness_score (-5.0 to 5.0)
    │   └── full_mwt
    │
    ├── COMPOUND_STRUCTURES
    │   ├── molregno (FK)
    │   ├── canonical_smiles
    │   ├── standard_inchi
    │   └── standard_inchi_key
    │
    └── ACTIVITIES (21.1M 行)
        ├── activity_id (PK)
        ├── assay_id (FK → ASSAYS)
        ├── molregno (FK → MOLECULE_DICTIONARY)
        ├── standard_type (IC50, Ki, Kd, EC50, ...)
        ├── standard_relation (=, <, >)
        ├── standard_value
        ├── standard_units (nM, %, ...)
        ├── pchembl_value (-log10)
        ├── activity_type (B, F, A, T)
        ├── action_type (inhibitor, blocker, ...)
        └── activity_comment
            │
            └── ASSAYS (1.74M 行)
                ├── assay_id (PK)
                ├── doc_id (FK → DOCS)
                ├── tid (FK → TARGETS)
                ├── assay_type (B, F, A, T)
                ├── assay_organism
                ├── assay_tax_id
                ├── bao_format
                └── confidence_score (1-9)
                    │
                    ├── TARGETS (16,003 行)
                    │   ├── tid (PK)
                    │   ├── chembl_id (e.g., CHEMBL205)
                    │   ├── pref_name
                    │   ├── target_type (SINGLE PROTEIN, CELL-LINE, ...)
                    │   ├── organism
                    │   ├── tax_id
                    │   └── tid_components (FK, for complexes)
                    │
                    └── DOCS (92,121 行)
                        ├── doc_id (PK)
                        ├── doc_type (PUBLICATION, DATASET, PATENT, BOOK)
                        ├── journal
                        ├── year
                        ├── authors
                        ├── doi
                        ├── patent_id
                        └── chembl_release_id (FK → CHEMBL_RELEASE, v33+)

  CHEMBL_RELEASE (v33+ 新增)
  ├── chembl_release_id (PK)
  ├── creation_date
  └── release_name

  DRUG_WARNINGS (1,676 行)
  ├── warning_id (PK)
  ├── molregno (FK)
  ├── warning_type (Black Box Warning, Drug Withdrawal, ...)
  ├── warning_year
  └── efo_term (e.g., ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''cardiac arrhythmia'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''')

  DRUG_INDICATIONS (55,442 行)
  ├── drugind_id (PK)
  ├── molregno (FK)
  ├── mesh_disease
  ├── efo_disease
  └── max_phase_for_ind

  DRUG_MECHANISMS (7,330 行)
  ├── mec_id (PK)
  ├── molregno (FK)
  ├── tid (FK → TARGETS)
  ├── action_type
  └── mechanism_comment

  VARIANT_SEQUENCES (2,443 整理变异体)
  ├── variant_id (PK)
  ├── tid (FK → TARGETS)
  ├── mutation
  ├── natural_variant
  └── sequence

§3.5 下载格式与存储

格式 文件 大小 适用场景
SQLite chembl_35_sqlite.tar.gz ~5 GB 本地快速查询,无需数据库服务器;Python/JS 直接读取
PostgreSQL chembl_35_postgresql.tar.gz ~10-15 GB 生产环境部署;支持复杂 SQL 查询;RDKit cartridge 扩展
MySQL chembl_35_mysql.tar.gz ~10 GB MySQL 环境部署
SDF chembl_35.sdf.gz ~8 GB 化学结构处理(RDKit/OpenBabel 读取);批量计算分子指纹
FASTA chembl_35.fasta.gz ~50 MB 蛋白质靶点序列分析;生物信息学工具链
RDF (Turtle) chembl_35_rdf.ttl.gz ~15 GB 语义 Web 应用;SPARQL 查询;Linked Data 集成
FPSim2 chembl_35_fpsim2.h5 ~2 GB 高速相似性搜索(Morgan r=2, 2048-bit);v32 起纳入 FTP

FTP 下载https://ftp.ebi.ac.uk/pub/databases/chembl/ChEMBLdb/releases/

§3.6 API 与 SDK

RESTful API

  • 基础 URL:https://www.ebi.ac.uk/chembl/api/data/
  • 返回格式:JSON / XML
  • 支持实体:molecules, targets, assays, activities, documents, cell_lines, tissues
  • 高级功能:相似性搜索、子结构搜索、连接性搜索
  • 速率限制:合理使用(无硬性限制,建议每秒 <3 请求)
  • 文档:https://chembl.gitbook.io/chembl-interface-documentation

Python SDK (chembl_webresource_client)

pip install chembl_webresource_client
from chembl_webresource_client.new_client import new_client

# 获取化合物信息
molecule = new_client.molecule
m = molecule.get(''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''CHEMBL25'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''')  # 阿司匹林
print(m[''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''molecule_structures''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''][''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''canonical_smiles''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''])

# 按靶点筛选活性数据
activity = new_client.activity
results = activity.filter(
    target_chembl_id=''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''CHEMBL205'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',  # Carbonic anhydrase II
    standard_type=''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''IC50''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
)[:10]
for a in results:
    print(a[''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''molecule_chembl_id''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''], a[''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''standard_value''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''], a[''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''standard_units''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''])

chembl-downloader 包(用于可复现的大规模下载):

pip install chembl-downloader

§3.7 许可证与数据使用

许可证:Creative Commons Attribution-Share Alike 3.0 Unported (CC BY-SA 3.0)

权限 状态 说明
商业使用 ✅ 允许 可用于商业药物发现项目
修改 ✅ 允许 可修改和适配数据
分发 ✅ 允许 可再分发数据
归属 ⚠️ 必须 必须注明 ChEMBL 数据来源
ShareAlike ⚠️ 必须 衍生作品必须以相同许可证 (CC BY-SA 3.0) 发布

重要提示:CC BY-SA 3.0 的 ShareAlike 条款要求衍生作品使用相同许可证。如果您的 AI 模型训练数据集基于 ChEMBL 构建,且计划公开发布该数据集,则数据集也需以 CC BY-SA 3.0 许可。

§3.8 基金来源与机构

ChEMBL 的运营资金来自多个来源:

资助方 贡献 类型
Wellcome Trust £4.7M 战略奖 (2008),初始数据获取 创始资助
EMBL 成员国 核心运营资金(20+ 成员国政府) 核心资助
BBSRC (UK) 生物技术和生物科学研究委员会 持续资助
NIH (USA) 美国国立卫生研究院 持续资助
Wellcome Sanger Institute 基因组学合作 合作机构
EU IMI 2 EUbOPEN 项目 (5 年公私合作) 项目资助
EU H2020 RESOLUTE (SLC 基因家族) 项目资助
ELIXIR 欧洲生命科学基础设施,核心数据资源认定 基础设施

托管机构:EMBL-EBI,位于英国剑桥 Hinxton 的 Wellcome Trust Genome Campus

§4 数据结构详解

§4.1 完整目录树(PostgreSQL/SQLite 导入后)

chembl_35/
├── molecule_dictionary          # 2,496,335 行 — 化合物主表
├── compound_properties          # 2,496,335 行 — 计算属性
├── compound_records             # 3,106,257 行 — 化合物记录(含来源信息)
├── compound_structures          # 2,496,335 行 — SMILES/InChI 结构
├── activities                   # 21,123,501 行 — 生物活性测量
├── assays                       # 1,740,546 行 — 实验检测
├── targets                      # 16,003 行 — 靶点
├── target_components            # 靶点组分(蛋白复合体)
├── target_relations             # 靶点关系层级
├── docs                         # 92,121 行 — 文档来源
├── chembl_release               # 发布版本信息 (v33+)
├── action_type                  # 32 种作用类型定义
├── assay_parameters             # 实验参数
├── activity_properties           # 活性属性
├── activity_stereo_lookup       # 立体化学注释
├── variant_sequences            # 2,443 整理变异体
├── sequences                    # 蛋白质靶点序列
├── component_sequences           # 组分序列
├── component_synonyms           # 组分同义词
├── cell_dictionary              # 2,129 细胞系
├── tissue_dictionary            # 782 组织
├── drug_warnings                # 1,676 药物警告
├── drug_indications             # 55,442 药物适应症
├── drug_mechanisms              # 7,330 药物机制
├── Formulation_index            # 制剂索引
├── molecule_atc_classifications # ATC 分类
├── molecule_hrac_classifications # HRAC 分类
├── molecule_synonyms            # 化合物同义词
├── predicted_binding_domains    # 预测结合域
├── source                       # 数据来源定义 (SRC_ID)
├── docs_references              # 文献交叉引用
├── docs_attachments             # 文档附件
└── version                      # 版本信息

§4.2 DAIMS 标准化数据字典

ChEMBL 作为药物发现数据库,DAIMS 检查清单适配如下:

DAIMS 项 ChEMBL 适配 状态 说明
#1 数据来源标识 通过 source 表 + SRC_ID 字段,每个数据点可溯源至具体文档/数据集
#2 数据收集协议 通过 手工策展 + 三步标准化管道,流程公开于 GitHub
#3 数据格式标准化 通过 SMILES/InChI Key 化学标识符 + nM 单位归一化 + pChEMBL 值
#4 时间戳与版本控制 通过 docs.year (1974-2024) + chembl_release 表 (v33+) + 每版本独立 DOI
#5 IAA (标注者间一致性) ⚠️ 部分 手工策展但无正式 IAA 指标;存储数据集有提交检查清单
#6 数据完整性与缺失值 通过 standard_relation (=, <, >) 处理不确定值;~11% 活性缺单位
#7 数据质量指标 通过 惩罚评分系统 + 单位归一化率 (AUC 91%, Cmax 97%)
#8 元数据完整性 通过 每个活性记录关联实验、靶点、文档、来源完整元数据
#9 格式与互操作性 通过 SQL/SDF/RDF/FASTA/API 多格式 + FAIR 原则
#10 可追溯性 通过 FTP 保留全部 37 版本 + 每版本 DOI
#11 标准化标识符 通过 ChEMBL ID + InChI Key + NCBI Tax ID + ATC 代码
#12 人口统计信息 N/A 不适用 非患者数据,无人口统计信息
#13 标注协议 通过 化学结构标准化协议公开于 GitHub
#14 纵向数据 ⚠️ 部分 文献时间覆盖 1974-2024 支持时间分析,但化合物无纵向追踪
#15 数据大小与存储 通过 SQLite ~5GB / PostgreSQL ~15GB / SDF ~8GB / RDF ~15GB
#16 采样策略 通过 文献手工策展 + 存储数据集筛选 + 专利提取
#17 伦理审批 N/A 不适用 公开发表文献和专利数据,无人体研究
#18 知情同意 N/A 不适用 无人体受试者数据
#19 隐私保护 通过 无个人/患者级数据
#20 真值质量 通过 三步标准化 + 人工审核 + 蛋白质变异体人工整理
#21 公平性与代表性 ⚠️ 部分 人类蛋白靶点过度代表;小分子化合物占 80%;哺乳动物靶点主导
#22 数据偏倚评估 通过 文献发表偏倚、化合物类型偏倚、靶点物种偏倚已识别
#23 长期追踪 ⚠️ 部分 版本持续更新但无化合物临床进展追踪
#24 临床部署准备 N/A 不适用 研究数据库,非临床决策工具

§4.3 生物活性数据分布统计

按实验类型分布 (v33):

实验类型 代码 占比 说明
Binding B ~50% 结合实验,IC50/Ki/Kd 为主
Functional F ~30% 功能实验,EC50 为主
ADME A ~15% 药代动力学实验
Toxicity T ~5% 毒性实验 (v30 独立,6 倍增长)

按活性类型分布 (Top 5):

活性类型 典型范围 说明
IC50 0.1 nM - 100 μM 半数抑制浓度,最常见
Ki 0.01 nM - 10 μM 抑制常数(热力学)
EC50 0.1 nM - 100 μM 半数有效浓度
Kd 0.01 nM - 10 μM 解离常数
Potency 0.1 nM - 100 μM 效价(混合指标)

按文档类型分布 (v33):

  • DATASET(存储数据集):~10.9M 活性 (54%)
  • PUBLICATION(文献提取):~9.0M 活性 (44%)
  • PATENT(专利):~380K 活性 (2%)
  • BOOK(书籍):~600 活性 (<0.1%)

按靶点生物体分布 (v33):

  • 真核生物靶点:主导来源,在存储数据集中占比更高
  • 细菌靶点:文献数据中占相当比例
  • 真菌、病毒、古菌靶点:文献数据中占较小但恒定比例

§4.4 化合物属性统计

属性 范围 说明
分子量 (MW) 100-1000 Da (典型) 药物样化合物主要范围
计算 logP (ALogP) -2 到 6 (典型) 脂溶性指标
极性表面积 (PSA) 20-150 Ų (典型) 药物吸收相关
Ro5 违规数 0-4 Lipinski 五规则违规数
NP 相似性评分 -5.0 到 5.0 天然产物相似性 (基于 Ertl et al. 方法)
MAX_PHASE 分布 4=获批 (2,993) / 3=III期 / 2=II期 / 1=I期 / 0.5=早期I期 临床进展阶段
USAN/INN 化合物 11,544 (v33) 获美国药典/国际非专利药名申请的化合物
至少早期I期临床 8,415 (v33) 进入临床试验的化合物
天然产物标记 ~64,000 (v33) 标记为天然产物的化合物
化学探针标记 388 (v33) chemicalprobes.org 评定 ≥3 星
前体药物 400 个家族 (v33) 有活性成分关联的 prodrug

§5 数据划分与使用建议

§5.1 官方数据组织

ChEMBL 不提供标准的 train/validation/test 划分——它是一个数据库而非比赛数据集。但 ChEMBL 提供了构建高质量划分的元数据:

划分维度 字段 说明 推荐策略
时间分割 docs.year 文献发表年份 (1974-2024) ⭐ 推荐:训练≤2020,测试>2020
文档类型 docs.doc_type PUBLICATION / DATASET / PATENT 按来源类型分层
实验类型 assays.assay_type B / F / A / T 按实验类型分层
靶点类型 targets.target_type SINGLE PROTEIN / CELL-LINE / … 按靶点类型分层
活性类型 activities.standard_type IC50 / Ki / EC50 / … 按活性类型筛选
生物体 targets.organism Homo sapiens / Rattus norvegicus / … 按物种筛选
分子类型 molecule_dictionary.molecule_type Small molecule / Antibody / … 按分子类型筛选
临床阶段 molecule_dictionary.max_phase 4=approved / 3=Phase III / … 按临床进展筛选

§5.2 QSAR 数据集构建最佳实践

# === 标准 QSAR 数据集构建流程 ===
import pandas as pd
from rdkit import Chem
from rdkit.Chem import AllChem
import sqlite3

# Step 1: 从 ChEMBL SQLite 提取特定靶点的 IC50 数据
conevent-blocked= sqlite3.connect(''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''chembl_35.db'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''')
query = """
SELECT
    m.chembl_id,
    cs.canonical_smiles,
    a.standard_value,
    a.standard_units,
    a.pchembl_value,
    d.year,
    t.pref_name as target_name,
    t.organism
FROM activities a
JOIN assays ass ON a.assay_id = ass.assay_id
JOIN molecule_dictionary m ON a.molregno = m.molregno
JOIN compound_structures cs ON m.molregno = cs.molregno
JOIN docs d ON ass.doc_id = d.doc_id
JOIN targets t ON ass.tid = t.tid
WHERE a.standard_type = ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''IC50''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  AND a.standard_units = ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''nM''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  AND a.standard_relation = ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''=''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  AND a.standard_value > 0
  AND a.standard_value < 100000   排除 >100μM 的非活性
  AND t.organism = ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''Homo sapiens''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  AND t.target_type = ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''SINGLE PROTEIN''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  AND d.year IS NOT NULL
"""
df = pd.read_sql_query(query, conn)

# Step 2: 去重 — 同一化合物取中位数
df = df.groupby(''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''chembl_id'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''').agg({
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''canonical_smiles'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''': ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''first'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''pchembl_value'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''': ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''median'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''year'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''': ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''max'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''target_name'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''': ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''first''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
}).reset_index()

# Step 3: 时间分割 (避免数据泄露!)
train = df[df[''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''year''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''] <= 2020]
test = df[df[''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''year''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''] > 2020]
print(f"Train: {len(train)}, Test: {len(test)}")

# Step 4: 计算分子指纹 (Morgan r=2, 2048-bit, 与 FPSim2 一致)
def smiles_to_fp(smiles, radius=2, nbits=2048):
    mol = Chem.MolFromSmiles(smiles)
    if mol is None:
        return None
    return AllChem.GetMorganFingerprintAsBitVect(mol, radius, nBits=nbits)

train[''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''fp''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''] = train[''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''canonical_smiles''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''].apply(smiles_to_fp)
train = train.dropna(subset=[''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''fp''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''])

§5.3 使用建议

使用场景 推荐数据范围 筛选条件 注意事项
特定靶点 QSAR 单一靶点,IC50 数据 target_type=SINGLE PROTEIN + organism=Homo sapiens 同一化合物多次测量取中位数
多靶点模型 多个靶点 target_type IN (SINGLE PROTEIN, PROTEIN COMPLEX) 注意靶点间序列相似度导致的泄露
ADMET 预测 ADME/T 实验 assay_type IN (''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''A'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''', ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''T'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''') ADMET 数据量较少,注意类别不平衡
药物重定位 获批药物 max_phase=4 仅 2,993 个获批药物,样本量有限
化学空间探索 全量化合物 无筛选 (SDF 格式) 使用 FPSim2 预计算指纹加速
靶点预测 全量活性 activity_type=B 使用 Conformal Prediction 框架

§6 AI 就绪指南

§6.0 云端快速启动

# === Google Colab 一键启动 ===
# Cell 1: 安装依赖
!pip install chembl_webresource_client rdkit scikit-learn

# Cell 2: 查询特定靶点的生物活性数据
from chembl_webresource_client.new_client import new_client
import pandas as pd

activity = new_client.activity
# 获取 Carbonic anhydrase II 的 IC50 数据
results = activity.filter(
    target_chembl_id=''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''CHEMBL205'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',
    standard_type=''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''IC50'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',
    standard_units=''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''nM''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
)[:100]

df = pd.DataFrame.from_records(results)
print(f"获取 {len(df)} 条 IC50 数据")
print(df[[''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''molecule_chembl_id'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''', ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''standard_value'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''', ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''pchembl_value'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''']].head())
# === 本地 SQLite 快速启动 ===
import sqlite3
import pandas as pd

# 下载 SQLite 文件后(~5GB)
conevent-blocked= sqlite3.connect(''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''chembl_35.db'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''')

# 查看数据库大小
print("总化合物数:", conn.execute("SELECT COUNT(*) FROM molecule_dictionary").fetchone()[0])
print("总活性数:", conn.execute("SELECT COUNT(*) FROM activities").fetchone()[0])
print("总靶点数:", conn.execute("SELECT COUNT(*) FROM targets").fetchone()[0])

# 获取特定靶点的活性分布
query = """
SELECT a.standard_type, COUNT(*) as count, 
       AVG(a.pchembl_value) as avg_pchembl
FROM activities a
JOIN assays ass ON a.assay_id = ass.assay_id
JOIN targets t ON ass.tid = t.tid
WHERE t.chembl_id = ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''CHEMBL205''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
GROUP BY a.standard_type
ORDER BY count DESC
"""
print(pd.read_sql_query(query, conn))

§6.1 PyTorch DataLoader(QSAR 回归模型)

import torch
import torch.nn as nn
from torch.utils.data import Dataset, DataLoader
from rdkit import Chem
from rdkit.Chem import AllChem
import numpy as np
import sqlite3

class ChEMBLQSARDataset(Dataset):
    """
    PyTorch Dataset for ChEMBL QSAR regression.
    Predicts pChEMBL value from Morgan fingerprints.
    """
    def __init__(self, db_path, target_chembl_id=''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''CHEMBL205'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',
                 activity_type=''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''IC50'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''', radius=2, nbits=2048,
                 year_split=2020, split=''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''train''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''):
        self.radius = radius
        self.nbits = nbits

        conevent-blocked= sqlite3.connect(db_path)
        query = """
        SELECT cs.canonical_smiles, a.pchembl_value, d.year
        FROM activities a
        JOIN assays ass ON a.assay_id = ass.assay_id
        JOIN molecule_dictionary m ON a.molregno = m.molregno
        JOIN compound_structures cs ON m.molregno = cs.molregno
        JOIN docs d ON ass.doc_id = d.doc_id
        JOIN targets t ON ass.tid = t.tid
        WHERE t.chembl_id = ?
          AND a.standard_type = ?
          AND a.standard_units = ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''nM''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
          AND a.standard_relation = ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''=''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
          AND a.pchembl_value IS NOT NULL
          AND d.year IS NOT NULL
        """
        df = pd.read_sql_query(query, conn, params=(target_chembl_id, activity_type))
        conn.close()

        # 去重
        df = df.groupby(''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''canonical_smiles'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''').agg({
            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''pchembl_value'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''': ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''median'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',
            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''year'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''': ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''max''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        }).reset_index()

        # 时间分割
        if split == ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''train'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''':
            df = df[df[''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''year''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''] <= year_split]
        else:
            df = df[df[''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''year''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''] > year_split]

        self.smiles = df[''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''canonical_smiles''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''].values
        self.targets = df[''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''pchembl_value''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''].values.astype(np.float32)

    def __len__(self):
        return len(self.smiles)

    def __getitem__(self, idx):
        mol = Chem.MolFromSmiles(self.smiles[idx])
        fp = AllChem.GetMorganFingerprintAsBitVect(mol, self.radius, nBits=self.nbits)
        fp_array = np.zeros((self.nbits,), dtype=np.float32)
        from rdkit.DataStructs import ConvertToNumpyArray
        ConvertToNumpyArray(fp, fp_array)
        return torch.from_numpy(fp_array), torch.tensor(self.targets[idx])

# 使用示例
train_ds = ChEMBLQSARDataset(''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''chembl_35.db'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''', split=''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''train'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''')
test_ds = ChEMBLQSARDataset(''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''chembl_35.db'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''', split=''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''test'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''')
train_loader = DataLoader(train_ds, batch_size=256, shuffle=True, num_workers=4)

# 简单 MLP 模型
model = nn.Sequential(
    nn.Linear(2048, 512),
    nn.ReLU(),
    nn.Dropout(0.3),
    nn.Linear(512, 128),
    nn.ReLU(),
    nn.Linear(128, 1)
)
optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)
criterion = nn.MSELoss()

for epoch in range(50):
    for X, y in train_loader:
        pred = model(X).squeeze()
        loss = criterion(pred, y)
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()

§6.2 RDKit + scikit-learn Pipeline

from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import r2_score, mean_squared_error
from rdkit import Chem
from rdkit.Chem import AllChem, Descriptors
from rdkit.DataStructs import ConvertToNumpyArray
import numpy as np

def compute_descriptors(smiles_list):
    """计算 Morgan 指纹 + 描述符"""
    fps, desc = [], []
    for smi in smiles_list:
        mol = Chem.MolFromSmiles(smi)
        if mol is None:
            continue
        fp = AllChem.GetMorganFingerprintAsBitVect(mol, 2, nBits=2048)
        fp_arr = np.zeros((2048,))
        ConvertToNumpyArray(fp, fp_arr)
        fps.append(fp_arr)
        desc.append([
            Descriptors.MolWt(mol),
            Descriptors.MolLogP(mol),
            Descriptors.TPSA(mol),
            Descriptors.NumHDonors(mol),
            Descriptors.NumHAcceptors(mol),
            Descriptors.NumRotatableBonds(mol),
            Descriptors.NumAromaticRings(mol),
        ])
    return np.hstack([fps, desc])

# 训练
X_train = compute_descriptors(train_smiles)
y_train = train_pchembl.values
X_test = compute_descriptors(test_smiles)
y_test = test_pchembl.values

rf = RandomForestRegressor(n_estimators=500, n_jobs=-1, random_state=42)
rf.fit(X_train, y_train)
pred = rf.predict(X_test)
print(f"R²: {r2_score(y_test, pred):.3f}")
print(f"RMSE: {np.sqrt(mean_squared_error(y_test, pred)):.3f}")

§6.3 预处理与数据清洗最佳实践

步骤 操作 原因 代码
1. 筛选标准单位 standard_units = ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''nM'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 消除单位不一致 SQL WHERE 子句
2. 筛选确定关系 standard_relation = ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''='''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 排除 <> 的不等式值 SQL WHERE 子句
3. 排除异常值 standard_value > 0 AND < 100000 排除 >100μM 的非活性数据 SQL WHERE 子句
4. 去重 按 chembl_id 分组取中位数 同一化合物可能有多次测量 groupby().median()
5. 去除无效 SMILES RDKit 解析验证 文献中可能有错误结构 Chem.MolFromSmiles() != None
6. 时间分割 docs.year 字段 避免 ML 数据泄露 训练 ≤ 2020, 测试 > 2020
7. pChEMBL 变换 -log10(value × 1e-9) 对数空间更利于回归 字段已预计算
8. 靶点去重 排除高序列相似度靶点 避免同源靶点间泄露 BLAST 聚类 (>90% 一致)

§6.4 数据增强策略

策略 方法 适用场景
SMILES 枚举 对同一分子生成多种 SMILES 字符串表示 Transformer/SMILES-based 模型
分子图增强 随机遮蔽原子/键特征 GNN (图神经网络) 模型
混合训练 结合 ChEMBL + PubChem BioAssay 增加数据多样性
迁移学习 先在大规模未标注分子上预训练,再在 ChEMBL 有标注数据上微调 小样本靶点
多任务学习 同时预测多个靶点的活性 利用靶点间相关性

§6.5 已知坑点与解决方案

坑点 1:数据泄露(Data Leakage)⚠️ 最严重

问题:同一化合物的多种活性数据可能来自同一实验室/同一论文,如果不做时间分割,训练集和测试集可能包含来自同一来源的高度相关数据,导致模型在测试集上表现虚高。

解决方案

# 严格的时间分割 — 按 docs.year 划分
train = df[df[''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''year''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''] <= 2020]  # 2020 年及之前的文献
test = df[df[''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''year''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''] > 2020]    # 2021 年及之后的文献

# 更严格:按文档 (doc_id) 划分,确保同一论文的数据不会同时出现在训练和测试中
train_docs = df[df[''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''year''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''] <= 2020][''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''doc_id''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''].unique()
test_docs = df[df[''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''year''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''] > 2020][''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''doc_id''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''].unique()
坑点 2:活性数据噪声与不一致

问题:同一化合物对同一靶点的不同实验可能报告差异较大的 IC50 值(实验条件不同),直接使用可能引入噪声。

解决方案

  • 同一化合物-靶点对取中位数(比均值更鲁棒)
  • 检查 activity_comment 字段,排除标注为 “inconclusive” 或 “unspecified” 的数据
  • 使用 confidence_score 字段(1-9)筛选高置信度实验
坑点 3:存储数据集与文献数据的质量差异

问题:自 v33 起,存储数据集的生物活性(54%)首次超过文献提取(44%),但不同来源的数据质量标准可能不同。

解决方案

  • 使用 source 表的 SRC_ID 字段区分数据来源
  • 对存储数据集使用 Supplementary File S2 中的检查清单
  • 混合训练时注意来源分层验证
坑点 4:靶点去复杂化丢失生物上下文

问题:ChEMBL 将 PROTEIN COMPLEX 等复杂靶点分解为 SINGLE PROTEIN 组分时,可能丢失重要的生物上下文(如异源二聚体的协同结合)。

解决方案

  • 检查 target_components 表获取复合体组分信息
  • 使用 target_relations 表理解靶点间的层级关系
  • 对需要完整生物上下文的任务,保留原始 target_type 而非仅用 SINGLE PROTEIN
坑点 5:单位归一化不完整

问题:尽管 ChEMBL 持续归一化单位,但仍有约 9% 的 AUC 数据和 3% 的 Cmax 数据未统一。部分活性数据缺少 standard_units

解决方案

# 排除无单位数据
df = df[df[''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''standard_units''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''].notna()]
# 仅使用已归一化的活性类型
df = df[df[''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''standard_type''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''].isin([''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''IC50'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''', ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''Ki'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''', ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''Kd'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''', ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''EC50'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''', ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''Potency''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''])]
df = df[df[''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''standard_units''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''] == ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''nM'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''']
坑点 6:CC BY-SA 3.0 的 ShareAlike 限制

问题:CC BY-SA 3.0 要求衍生作品使用相同许可证。如果基于 ChEMBL 构建的数据集计划公开发布,数据集也需以 CC BY-SA 3.0 发布。这对于商业产品可能构成限制。

解决方案

  • 内部研究使用:无限制
  • 发布衍生数据集:以 CC BY-SA 3.0 许可证发布
  • 商业产品:仅使用 ChEMBL 数据进行模型训练,不直接分发原始数据
  • 替代方案:考虑 PubChem(公共领域)用于无限制商业场景

§6.6 模型推荐与硬件配置

模型类型 推荐方法 数据量 硬件需求
传统 QSAR Random Forest / XGBoost + Morgan 指纹 1K-100K CPU 即可
深度 QSAR MLP / DNN + Morgan 指纹 10K-1M 单 GPU (8GB+)
GNN GraphSAGE / GAT / MPNN 10K-1M 单 GPU (12GB+)
Transformer ChemBERTa / MolBERT (SMILES) 100K-10M 多 GPU 或 A100
多任务 Multi-task DNN (多靶点同时预测) 100K-10M 单 GPU (16GB+)
迁移学习 预训练 SMILES 模型 + 微调 1K-100K 单 GPU (8GB+)

§6.7 评估指标推荐

任务类型 推荐指标 说明
pChEMBL 回归 R², RMSE, MAE 标准回归指标
活性/非活性分类 AUC-ROC, AUC-PR, F1 阈值通常 pChEMBL ≥ 6 (1μM)
多靶点预测 per-target R²/AUC + 总体平均 注意低数据靶点的指标波动
排名任务 Spearman ρ, NDCG@k 虚拟筛选中的化合物排名
命中富集 EF@1%, EF@5% 早期富集因子

§7 质量评估与局限性

§7.1 数据偏倚

偏倚类型 描述 影响程度 缓解策略
发表偏倚 文献倾向于发表阳性结果,负数据(无活性化合物)未被报告 ⭐⭐⭐ 高 结合存储数据集(含部分负数据);注意模型对活性化合物的过拟合
化合物类型偏倚 ~80% 为小分子,抗体/蛋白质/寡核苷酸严重不足 ⭐⭐ 中 对非小分子类型谨慎使用
靶点物种偏倚 人类蛋白靶点 (~5,300) 过度代表,细菌/病毒/真菌靶点不足 ⭐⭐ 中 对非人类靶点模型验证需额外数据
时间偏倚 近年文献过度代表,1970s-1990s 数据较少 ⭐ 低 利用时间跨度分析数据趋势
实验类型偏倚 Binding 实验占 ~50%,Toxicity 仅 ~5% ⭐⭐ 中 对 ADMET/T 预测任务注意数据不足
期刊偏倚 Top 5 期刊贡献 >40% 活性数据 ⭐ 低 注意特定期刊数据的系统性差异
活性类型偏倚 IC50 占主导,Ki/Kd/EC50 数据量较少 ⭐ 低 使用 pChEMBL 值统一不同活性类型

§7.2 标注质量与策展流程

化学结构标准化质量

  • 三步管道(Checker → Standardizer → GetParent)基于 FDA/IUPAC 标准
  • 惩罚评分系统:2(低优先级问题)→ 6(入库但无结构)→ 7(致命错误,不入库)
  • 163 种盐和 9 种溶剂的标准化处理
  • 管道代码完全开源,可复现

生物活性数据质量

  • 单位归一化持续改进:AUC 91% 统一(之前 62%),Cmax 97% 统一(之前 37%)
  • ~11% 活性数据仍缺 standard_units(需在使用前筛选)
  • confidence_score 字段(1-9)标注实验-靶点关联的置信度

药物安全数据质量

  • 撤市药物:每个药物含监管文件引用
  • 撤市原因映射到 EFO(如 ‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘‘cardiac arrhythmia’’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’)
  • 高级毒性类别映射到 EFO(如 ‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘‘cardiotoxicity’’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’)
  • 黑框警告:FDA 严重或危及生命副作用的药物持续整理

蛋白质变异体数据

  • 2,443 个整理的变异体(v33)
  • 13,323 个实验(0.83%)评估变异蛋白
  • 未来计划:进一步分类突变类型(自然、获得性、耐药性)和功能

§7.3 泛化性

维度 泛化性评估 说明
靶点覆盖 ⭐⭐⭐⭐ 16,003 个靶点覆盖主要药物靶点家族,但仍有未覆盖的靶点空间
化学空间 ⭐⭐⭐⭐⭐ 250 万化合物覆盖广泛的药物样化学空间
物种覆盖 ⭐⭐⭐ 人类靶点主导,非人类物种覆盖有限
时间覆盖 ⭐⭐⭐⭐⭐ 1974-2024 年,50 年文献覆盖
活性类型 ⭐⭐⭐⭐ IC50/Ki/Kd/EC50/Potency 全面覆盖,但 ADME/T 不足
临床阶段 ⭐⭐⭐⭐⭐ 从靶点筛选到临床批准全覆盖
分子类型 ⭐⭐ 小分子主导,大分子严重不足

§7.4 伦理与隐私

ChEMBL 不涉及人体受试者数据,所有数据来自公开发表的文献、专利和存储数据集:

  • 无个人/患者数据:不涉及个人可识别信息 (PII) 或受保护健康信息 (PHI)
  • 无伦理审批需求:公开发表文献数据无需 IRB 审批
  • 无知情同意问题:不涉及人体实验
  • 数据归属清晰:CC BY-SA 3.0 许可证明确数据使用权限

§7.5 公平性评估

ChEMBL 的公平性主要体现在数据覆盖的代表性上:

公平性维度 现状 评估
疾病覆盖 覆盖主要治疗领域,但被忽视的热带病 (NTD) 数据较少 ⚠️ ChEMBL-NTD 子库部分弥补
物种公平 人类靶点过度代表,热带病原体靶点不足 ⚠️ CO-ADD 抗菌筛选数据部分弥补
化合物类型公平 小分子主导,新型分子(PROTAC、mRNA)覆盖起步 ⚠️ PROTAC 从 85→6,942 数据点 (v33)
地理公平 文献来自全球,但英语期刊过度代表 ⚠️
时间公平 1974-2024 覆盖,近年过度代表 ✅ 时间跨度较长

§7.6 外部验证与交叉引用

ChEMBL 通过 UniChem 与全球主要化学数据库建立交叉引用:

交叉引用数据库 UniChem Source ID 关系类型
PubChem 22 双向映射
DrugBank 16 双向映射
ChEBI 7 双向映射
KEGG 14 双向映射
CHEBI 7 双向映射
BindingDB 17 双向映射
FDA SRS 26 双向映射
FDA Orange Book 27 双向映射

UniChem 目前维护 >1.78 亿唯一结构的交叉引用映射,覆盖 21+ 个化学数据库来源。

§7.7 DAIMS 24 项数据就绪度评估表

# DAIMS 检查项 状态 证据/说明
1 数据来源标识 source 表 + SRC_ID,每数据点可溯源
2 数据收集协议 手工策展 + 三步标准化管道 (GitHub 开源)
3 数据格式标准化 SMILES/InChI Key + nM 单位归一化 + pChEMBL 值
4 时间戳与版本控制 docs.year (1974-2024) + chembl_release 表 + 37 版本 DOI
5 标注者间一致性 (IAA) ⚠️ 手工策展但无正式 IAA 指标
6 数据完整性与缺失值 standard_relation 处理不确定值;~11% 缺单位
7 数据质量指标 惩罚评分 + 单位归一化率 (AUC 91%, Cmax 97%)
8 元数据完整性 活性→实验→靶点→文档完整关联链
9 格式与互操作性 SQL/SDF/RDF/FASTA/API,FAIR 原则
10 可追溯性 FTP 保留全部 37 版本 + DOI
11 标准化标识符 ChEMBL ID + InChI Key + NCBI Tax ID + ATC
12 人口统计信息 N/A 非患者数据
13 标注协议 化学结构标准化协议公开于 GitHub
14 纵向数据 50 年文献时间跨度 + 37 版本迭代
15 数据大小与存储 SQLite ~5GB / PostgreSQL ~15GB / SDF ~8GB
16 采样策略 文献策展 + 存储数据集筛选 + 专利提取
17 伦理审批 N/A 公开发表文献,无人体研究
18 知情同意 N/A 无人体受试者
19 隐私保护 无个人/患者级数据
20 真值质量 三步标准化 + 人工审核 + 变异体人工整理
21 公平性与代表性 ⚠️ 人类靶点过度代表,小分子主导
22 数据偏倚评估 发表偏倚、化合物/靶点/物种偏倚已识别
23 长期追踪 37 个版本 17 年持续运营
24 临床部署准备 N/A 研究数据库,非临床工具

DAIMS 评分:19/24 ⭐⭐⭐⭐ (排除 4 个 N/A 项后有效评分 19/20 = 95%)

扣分项

  • #5 IAA:手工策展但无正式标注者间一致性指标(-1 分)
  • #21 公平性:人类靶点和小分子化合物过度代表(-1 分)

评分说明:ChEMBL 作为数据库而非临床数据集,在数据来源标识、格式标准化、可追溯性、元数据完整性等方面表现卓越。4 个 N/A 项反映了其与临床数据集的本质区别。

§7.8 外部验证矩阵

验证维度 验证方法 结果 来源
化学结构正确性 与 PubChem 交叉验证 ✅ InChI Key 匹配率 >99% UniChem
生物活性准确性 与 BindingDB 交叉验证 ✅ IC50/Ki 值一致性 >95% UniChem + BindingDB
靶点标注准确性 与 UniProt 交叉验证 ✅ 蛋白质靶点序列匹配 UniProt 映射
药物信息完整性 与 DrugBank 交叉验证 ✅ 获批药物信息一致 UniChem
结构标准化效果 与 FDA SRS 交叉验证 ✅ 标准化后结构一致 FDA SRS 映射
API 可靠性 月均 531K 页面浏览 ✅ 99.9% 可用性 EMBL-EBI 监控
引用影响力 PubMed 引用趋势 ✅ “ChEMBL AND ML” 持续增长 PubMed

§8 基准性能与生态

§8.1 ChEMBL 在 AI 药物发现中的角色

ChEMBL 不是传统意义上的竞赛数据集,没有官方排行榜。但它是 AI 药物发现领域的标准训练数据源,以下是基于 ChEMBL 数据的代表性研究:

研究方向 代表方法 使用方式 ChEMBL 角色
分子性质预测 ChemBERTa, MolBERT 预训练 + 微调 预训练数据源
QSAR 建模 Random Forest, XGBoost, DNN 直接训练 标准训练集
药物-靶点预测 DeepDTA, GraphDTA 化合物-靶点对训练 活性数据源
靶点预测 Conformal Prediction 多任务分类 内置预测模型 (v26+)
药物重定位 Network-based methods 多靶点活性谱分析 活性矩阵来源
ADMET 预测 DeepTox, ADMET-AI ADME/T 活性训练 ADME/T 数据子集
虚拟筛选 Docking + ML reranking 化合物库筛选 化合物库来源

§8.2 ChEMBL 内置靶点预测模型

自 ChEMBL 26 (2020) 起,ChEMBL 提供内置的靶点预测功能:

特性 说明
模型类型 从单一多类多项式朴素贝叶斯 → 单任务分类随机森林模型组
预测框架 Conformal Prediction(保形预测)
输出 每个化合物获得预测蛋白质靶点列表 + 置信度
可用性 网页界面 + API
版本 随每个 ChEMBL 版本更新

§8.3 关键论文与引用

年份 论文 期刊 意义
2025 Fifteen years of ChEMBL and its role in cheminformatics and drug discovery J Cheminformatics 15 周年综述
2024 The ChEMBL Database in 2023 (Zdrazil et al.) Nucleic Acids Research 最新 NAR 数据库专刊论文
2019 ChEMBL 25 (Mendez et al.) Nucleic Acids Research 上一次 NAR 更新
2017 ChEMBL 23 (Gaulton et al.) Nucleic Acids Research NAR 更新
2014 ChEMBL 19 (Bento et al.) Nucleic Acids Research NAR 更新
2012 ChEMBL: a large-scale bioactivity database (Gaulton et al.) Nucleic Acids Research 首次 NAR 论文
2011 Collation and data-mining of literature bioactivity data (Bellis et al.) Biochem Soc Trans 早期描述

§8.4 全球使用统计

ChEMBL 33 的月均使用统计(2023 年 5-8 月):

指标 数值
月均会话数 ~53,000
月均用户数 ~25,000
月均页面浏览 ~531,000

用户地理分布 (Top 10 国家/地区):

排名 国家/地区 月均用户数
1 美国 ~14,000
2 中国 ~10,000
3 塞尔维亚 ~7,000
4 印度 ~7,000
5 英国 ~3,000
6 日本 ~2,000
7 德国 ~2,000
8 芬兰 ~2,000
9 韩国 ~2,000
10 意大利 ~2,000

§8.5 相关数据集与生态系统

资源 描述 URL
SureChEMBL 专利生物活性数据提取,biweekly 更新 https://www.surechembl.org/
UniChem 化学数据库交叉引用,>1.78 亿结构,21+ 来源 https://www.ebi.ac.uk/unichem/
ChEMBL-NTD 被忽视热带病筛选数据 https://chembl.gitbook.io/chembl-ntd/
ChEMBL-Malaria 疟原虫筛选数据服务 https://www.ebi.ac.uk/chembl/malaria/
EUbOPEN Gateway EUbOPEN 项目化学基因组学数据平台 https://gateway.eubopen.org/
RESOLUTE SLC 基因家族研究数据 https://re-solute.eu
CO-ADD 开放抗菌筛选(昆士兰大学) https://www.co-add.org/
SGC Chemical Probes 捐赠化学探针资源 https://www.thesgc.org/donated-chemical-probes
chemicalprobes.org 化学探针评估(≥3 星标准) https://www.chemicalprobes.org/
MAIP 疟疾预测工具 EMBL-EBI LSF 集群
Kinase SARfari 激酶化学基因组学工作台 EMBL-EBI
GPCR SARfari GPCR 化学基因组学工作台 EMBL-EBI

§8.6 软件与工具生态

工具 描述 GitHub
ChEMBL Structure Pipeline 三步化学结构标准化管道 chembl/ChEMBL_Structure_Pipeline
FPSim2 高速相似性搜索(Morgan r=2, 2048-bit) chembl/FPSim2
chembl_webresource_client Python SDK chembl/chembl_webresource_client
chembl-downloader 可复现的大规模下载工具
GLaDOS ChEMBL 网站后端(Django + Vue.js + Nuxt.js) chembl/GLaDOS
RDKit 化学信息学工具包(子结构搜索) rdkit/rdkit
UniChem 化学数据库交叉引用服务 chembl/UniChem

§8.7 生态快照

                         ┌─────────────────┐
                         │    ChEMBL 核心   │
                         │  2.5M compounds  │
                         │  21M activities  │
                         │  16K targets     │
                         └────────┬────────┘
                                  │
          ┌───────────────────────┼───────────────────────┐
          │                       │                       │
  ┌───────▼───────┐    ┌──────────▼──────────┐   ┌───────▼───────┐
  │  数据来源层    │    │    消费者/应用层      │   │  交叉引用层    │
  │                │    │                      │   │               │
  │ • 文献 (~230)  │    │ • QSAR 模型训练      │   │ • UniChem     │
  │ • 专利 (SC)    │    │ • 深度学习分子预测    │   │   (>178M)     │
  │ • 存储数据集    │    │ • 药物-靶点预测      │   │ • PubChem     │
  │   (420+)       │    │ • 药物重定位        │   │ • DrugBank    │
  │ • 书籍          │    │ • ADMET 预测       │   │ • ChEBI       │
  └────────────────┘    │ • 化学空间映射      │   │ • KEGG        │
                        │ • 天然产物发现      │   │ • BindingDB   │
  ┌────────────────┐    └──────────────────────┘   └───────────────┘
  │   工具/SDK 层   │
  │                │     ┌──────────────────────┐
  │ • Python SDK   │     │     基础设施层        │
  │ • RESTful API  │     │                      │
  │ • RDKit 集成   │     │ • EMBL-EBI 托管      │
  │ • FPSim2 指纹  │     │ • Kubernetes 集群    │
  │ • Structure    │     │ • Memcached 缓存     │
  │   Pipeline     │     │ • LSF 异步任务       │
  │ • chembl-      │     │ • Elasticsearch      │
  │   downloader   │     │ • Vue.js + Nuxt.js   │
  └────────────────┘     └──────────────────────┘

§9 相关资源与引用

§9.1 官方资源

资源 URL
ChEMBL 主站 https://www.ebi.ac.uk/chembl/
ChEMBL API 文档 https://chembl.gitbook.io/chembl-interface-documentation
ChEMBL 下载 https://www.ebi.ac.uk/chembl/downloads/
ChEMBL FTP https://ftp.ebi.ac.uk/pub/databases/chembl/ChEMBLdb/releases/
ChEMBL GitHub https://github.com/chembl
ChEMBL 帮助 chembl-help@ebi.ac.uk
ChEMBL 博客 https://chembl.blogspot.com/
ChEMBL 邮件列表 chembl-announce@ebi.ac.uk

§9.2 引用格式

引用 ChEMBL 数据库 (NAR 2024):

@article{zdrazil2024chembl,
  title={The ChEMBL Database in 2023: a drug discovery platform spanning 
         multiple bioactivity data types and time periods},
  author={Zdrazil, Barbara and Pinto, Ines and Papadatos, George and 
          Mendez, David and Bento, A. Patricia and others},
  journal={Nucleic Acids Research},
  volume={52},
  number={D1},
  pages={D1180D1192},
  year={2024},
  doi={10.1093/nar/gkad1042}
}

引用特定版本 (ChEMBL 35):

@misc{chembl35,
  title={ChEMBL Database Release 35},
  howpublished={\url{https://doi.org/10.6019/CHEMBL.database.35}},
  year={2024},
  monevent-blocked={December}
}

引用 15 周年综述 (2025):

@article{zdrazil2025fifteen,
  title={Fifteen years of ChEMBL and its role in cheminformatics and drug discovery},
  author={Zdrazil, Barbara and others},
  journal={Journal of Cheminformatics},
  volume={17},
  pages={32},
  year={2025},
  doi={10.1186/s13321-025-00963-z}
}

§9.3 相关数据库

数据库 关系 比较
PubChem 互引 更大规模(119M 化合物)但数据质量参差不齐,公共领域许可
DrugBank 互引 药物信息更详细但规模小(~14K),非商业许可限制
BindingDB 互引 专注结合亲和力数据,规模相近(~2.4M),CC BY 4.0
ZINC 无直接互引 商业可购买化合物库(~1.4B),免费使用
ChEBI 互引 化学生物学本体,化学实体语义标注
STITCH 下游 化合物-蛋白相互作用网络,使用 ChEMBL 数据
BindingMOAD 独立 蛋白-配体复合体结构数据库

§9.4 推荐阅读

  1. Zdrazil et al. (2024) — “The ChEMBL Database in 2023” — NAR 最新论文,全面描述 ChEMBL 33 的数据内容、新特性和技术架构
  2. Zdrazil et al. (2025) — “Fifteen years of ChEMBL” — J Cheminformatics 15 周年综述,回顾历史和展望未来
  3. Gaulton et al. (2012) — “ChEMBL: a large-scale bioactivity database for drug discovery” — 首次 NAR 论文,奠定 ChEMBL 在药物发现领域的地位
  4. Davies et al. (2015) — “ChEMBL 19” — 描述 ChEMBL 早期版本的标准化管道和数据模型

§10 AI 使用声明卡

§10.1 数据集标识

字段
数据集名称 ChEMBL
版本 ChEMBL 35 (2024-12) / ChEMBL 37 (2026-05, latest)
DOI https://doi.org/10.6019/CHEMBL.database.35
URL https://www.ebi.ac.uk/chembl/
许可证 CC BY-SA 3.0
千方页面 https://www.qianfanghub.com/ai-ready-dataset/chembl/85

§10.2 AI 使用建议

使用方式 建议 注意事项
模型训练数据 ✅ 推荐 使用 pChEMBL 值 + 时间分割
模型验证数据 ✅ 推荐 使用 >2020 年数据作为测试集
生产部署 ⚠️ 谨慎 模型预测仅用于辅助决策,不可替代实验验证
学术研究 ✅ 推荐 标准数据源,广泛引用
商业应用 ✅ 允许 CC BY-SA 3.0 允许商业使用,注意 ShareAlike 条款
数据再分发 ⚠️ 注意 衍生数据集需以 CC BY-SA 3.0 发布

§10.3 已知局限

  1. 发表偏倚:文献数据倾向于阳性结果,负数据不足
  2. 化合物类型偏倚:小分子占 80%,大分子覆盖不足
  3. 靶点物种偏倚:人类蛋白靶点过度代表
  4. 实验类型偏倚:Binding 实验占 50%,Toxicity 仅 5%
  5. 单位归一化不完整:~9% AUC 和 ~3% Cmax 数据未统一
  6. 存储数据集质量差异:不同来源的数据策展标准可能不同

§10.4 人工校验表

检查项 状态 说明
数据集基本事实 ✅ 已通过 化合物/活性/靶点/文档数量与 v35 统计一致
许可证信息 ✅ 已通过 CC BY-SA 3.0 确认于官方 About 页面
版本统计数据 ✅ 已通过 版本历史与 Biopragmatics 历史分析和 FTP 版本 DOI 列表一致
技术规格描述 ✅ 已通过 下载格式、API、SDK 信息与官方文档一致
基金来源 ✅ 已通过 Wellcome Trust £4.7M + EMBL + BBSRC + NIH 确认
页面状态 published 无未定稿字样
返回 AI Ready 数据集