BindingDB — 蛋白质-配体结合亲和力数据库 AI-Ready Wikipedia | 千方医数集

320万结合数据 · 143万化合物 · 1.15万靶点 · 美国专利策展唯一来源 · 25年持续运营

来源 UC San Diego — Skaggs School of Pharmacy & Pharmaceutical Sciences url: https://bindingdb.org发布时间: 2026-08-14最后更新: 2026-08-14 阅读 60

信息速览

数据集名称BindingDB — 蛋白质-配体结合亲和力数据库 AI-Ready Wikipedia | 千方医数集
数据类型 约 324 万条结合数据,约 143 万化合物,约 1.15 万蛋白质靶点,TSV/SDF/MySQL,CC BY 4.0
规模蛋白质-配体结合数据,非患者数据集
接入方式UC San Diego — Skaggs School of Pharmacy & Pharmaceutical Sciences url: https://bindingdb.org
AI 就绪度

数据集封面

INFOBOX

| 字段 | 值 |
||-|
| 数据集名称 | BindingDB |
| 英文全称 | BindingDB: A Public Database of Measured Binding Affinities |
| 别名 / 简称 | BDB、Binding Database |
| 疾病分类 | N/A(药物-靶点结合数据,覆盖全疾病谱药物靶点) |
| SNOMED CT | N/A(非临床诊断数据集) |
| 数据模态 | 结构化(蛋白质-配体结合亲和力数值 + 化学结构 SMILES + 蛋白质序列) |
| AI 任务类型 | 回归预测(结合亲和力预测)、二分类(药物-靶点相互作用预测)、排序(虚拟筛选)、生成(分子生成) |
| 样本总数 | 3,239,327 条结合测量数据(1,433,271 个化合物 × 11,503 个蛋白质靶点) |
| 数据大小 | ~565 MB(TSV 全集压缩)/ ~1.49 GB(SDF 2D)/ ~3.07 GB(SDF 3D)/ ~262 MB(MySQL dump) |
| 数据格式 | TSV / SDF(2D+3D)/ MySQL dump / RESTful API (JSON/XML) |
| 许可证 | CC BY 4.0(BindingDB 策展数据)/ CC BY-SA 3.0(ChEMBL 导入数据) |
| 访问级别 | 开放(无需注册,直接下载) |
| DUO 标签 | GRU(通用研究使用) |
| 语言 | 英文 |
| 首发日期 | 2000-01-01(网站上线)/ 2001(首篇论文) |
| 最后更新 | 2026-07-31(月度发布,最新版本 202608) |
| 发布机构 | University of California San Diego — Skaggs School of Pharmacy & Pharmaceutical Sciences |
| 官方主页 | https://bindingdb.org |
| 下载地址 | https://bindingdb.org/rwd/bind/chemsearch/marvin/Download.jsp |
| DOI | 10.1093/nar/gkae1075(NAR 2025 论文)/ 10.6075/J0VD6ZTZ(数据集存档) |
| 引用次数 | 4,500+(Google Scholar,截至 2026-07) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 月度更新 + TSV 直加载 + RESTful API + TDC 基准预置;扣分项:无官方 train/test 划分、同靶点-化合物多测量冲突、期刊策展范围窄 |
| 页面状态 | published |

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

维度 声明
经验性 (Experience) BindingDB 自 2000 年上线以来持续运营 25 年,是全球首个公开的分子识别数据库,经历 4 次 NAR 数据库专刊收录(2007、2016、2025),累计引用 4,500+ 次
专业性 (Expertise) 由加州大学圣地亚哥分校(UCSD)Skaggs 药学与药物科学学院 Michael K. Gilson 教授(Ph.D., M.D.)团队维护,首席开发者 Tiqing Liu 博士,策展员 Linda Hwang;科学顾问委员会包括 RCSB PDB 主任 Stephen Burley、OpenADMET 首席科学家 Patrick Walters 等
权威性 (Authoritativeness) 被 Nucleic Acids Research 期刊持续收录为数据库专刊条目(2007、2016、2025);FAIRsharing 认证资源;Therapeutics Data Commons (TDC) 标准 DTI 基准数据源;NIH R24GM144232 资助
可信性 (Trustworthiness) 所有数据可追溯到原始论文(PubMed ID)或专利(专利号);半自动化策展流程含双人审核(策展员初审 + 第二策展员复核);UCSD 图书馆数字典藏提供季度版本长期存档(DOI: 10.6075/J0VD6ZTZ),确保 AI 训练可复现性
审核机制 [千方病案医学编辑部]交叉审核:数据集元数据、版本统计数据、许可证信息、技术规格描述
透明度 策展流程公开文档化;数据来源(论文/专利/ChEMBL/PubChem)逐条标注;发布日期与策展日期现在对每条测量提供,便于 AI 训练时间划分

医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。

技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。

数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。BindingDB 策展数据为 CC BY 4.0(允许商业使用,需署名),ChEMBL 导入数据为 CC BY-SA 3.0(衍生作品须同许可证)。使用者须区分各子集许可证。

§1 数据集概览(Overview)

§1.0 📌 30 秒速览

BindingDB 是加州大学圣地亚哥分校(UCSD)于 2000 年上线的全球首个公开蛋白质-配体结合亲和力数据库,收录约 324 万条实验测量的结合数据(Ki、Kd、IC50、EC50),覆盖 143 万个化合物和 1.15 万个蛋白质靶点。

它的独特价值在于独家策展美国专利数据——每周自动解析 USPTO 发布的专利 XML,经人工审核后入库,每年新增约 12.5 万条结合数据,这些专利数据在其他公开数据库中不存在,与 ChEMBL 零重叠。BindingDB 是 Therapeutics Data Commons (TDC) 药物-靶点相互作用预测基准的标准数据源,已被 DeepPurpose、DrugForm-DTA 等数百个 AI 模型用于训练。

你可以用它来:训练一个药物-靶点结合亲和力预测模型(回归任务)、进行虚拟筛选以发现某靶点的潜在命中化合物、或者验证你的分子对接打分函数是否能正确排序已知活性化合物。

§1.1 摘要

BindingDB(www.bindingdb.org)由 UCSD Skaggs 药学院 Michael K. Gilson 教授团队创建并维护,是全球第一个公开的分子识别数据库。其核心数据为实验测量的蛋白质-小分子结合亲和力,包括抑制常数(Ki)、解离常数(Kd)、半数抑制浓度(IC50)、半数有效浓度(EC50)以及动力学参数(kon/koff)。数据来源分为三大类:(1) BindingDB 策展员从科学文献和 US 专利中半自动化提取的原创数据;(2) 从 ChEMBL 导入的具有明确定义蛋白质靶点的条目;(3) 从 PubChem 确认性生物测定和 PDSP Ki 数据库导入的精选数据。

BindingDB 的核心创新在于US 专利策展管道:每周从 USPTO 下载专利 XML(红皮书),使用定制软件按 CPC 分类(C07 有机化学、A61 医药制剂)筛选含 SAR 表格的专利,自动预加载到策展界面,由训练有素的策展员审核并修正。这一管道每年新增约 12.5 万条结合数据,是 BindingDB 区别于 ChEMBL 等其他数据库的标志性特征。截至 2026 年 8 月,专利数据集包含 8,685 件专利、132 万条测量数据、66.6 万化合物和 3,138 个靶点。

§1.2 为什么重要

技术创新维度:BindingDB 首创了从专利文献中半自动化提取 SAR 数据的管道。专利文献中的 SAR 表格格式比学术论文更标准化,更适合自动化处理,且包含大量未在期刊发表的独家数据。这一策展策略使得 BindingDB 在过去十年中获得了与其他数据库零重叠的独特数据流,成为全球蛋白质-配体结合数据进入公共领域的最大单一流量来源。

AI 应用推动维度:BindingDB 是药物-靶点相互作用(DTI)预测领域事实上的标准训练数据源。Therapeutics Data Commons (TDC) 将 BindingDB 拆分为 Kd、IC50、Ki 三个独立子集作为标准 DTI 回归基准,其中 IC50 子集包含 99.1 万对相互作用数据,是迄今最大规模的 DTI 公开基准。DeepPurpose、DrugForm-DTA、Meta-DTA 等代表性 AI 模型均以 BindingDB 为预训练数据源。BindingDB 现在在下载文件和搜索结果中提供每条测量的发表日期和策展日期,专门为 AI 训练的时间划分(temporal split)提供支持。

生态连接维度:BindingDB 与 PDB、PubMed、ZINC、ChEMBL、PubChem、ChEBI、DrugBank、KEGG、IUPHAR/GtoPdb 等核心资源建立双向链接,并提供了 BDBFind 浏览器扩展(Chrome/Firefox),在浏览论文或专利时自动检测 BindingDB 中是否有对应数据。这种"嵌入式"数据发现能力使 BindingDB 成为药物发现知识图谱中的关键枢纽节点。

§1.3 与同类数据集的横向对比

数据集 测量数据量 化合物数 靶点数 核心差异化 许可证
BindingDB 3.24M 1.43M 11,503 独家 US 专利策展 + 双人审核 + 实验条件详情 CC BY 4.0 / CC BY-SA 3.0
ChEMBL ~23M ~2.4M ~15,400 文献策展 + 功能测定 + ADMET + pChEMBL 标准化 CC BY-SA 3.0
PubChem BioAssay ~295M ~119M ~248K 高通量筛选(HTS)原始数据 + 全谱生物测定 公共领域
PDSP Ki ~60K ~10K 746 精神药物筛选专属 公共领域
PDBbind ~23K ~20K ~4K 蛋白-配体复合物 3D 结构 + 亲和力配对 学术免费
Binding MOAD ~38K ~15K ~7K PDB 高分辨率复合物 + 亲和力 学术免费

§1.4 版本演进时间轴

时间 事件
2000 BindingDB 网站上线,全球首个公开分子识别数据库
2001-08 首篇论文:Chen, Liu, Gilson, J. Combi. Chem. High-Throughput Screen 4:719-725
2002 数据管理与界面设计论文:Bioinformatics 18:130-139;概览论文:Biopolymers 61:127-141
2007-01 首次 NAR 数据库专刊收录:~20,000 结合数据,110 靶点,~11,000 化合物(NAR 35:D198-D201)
~2010 开始探索 US 专利策展管道
2015-10 NAR 更新论文:~1.1M 数据,~490K 化合物,~6,400 蛋白质(NAR 44:D1045-D1053)
2017 期刊策展基本完成(12 种期刊,大部分至 2017 卷)
2020-06 专利策展覆盖至 mid-2020 专利
2024-01 NAR 第三次更新论文提交:~2.9M 数据,~1.3M 化合物(NAR 53:D1633-D1644)
2025-02 首场 BindingDB Webinar(Mike Gilson 主讲)
2025-07 长期存档版本 July 1, 2025 发布(DOI: 10.6075/J0VD6ZTZ)
2026-02 第三场 Webinar:Patrick Walters 主讲"Building ML Models Using Data from BindingDB"
2026-07 最新月度版本 202608:3,239,327 数据,1,433,271 化合物,11,503 靶点

§1.5 典型 AI 应用场景

  1. 药物-靶点结合亲和力预测(DTA/DTI):给定化合物 SMILES 和蛋白质氨基酸序列,预测结合亲和力(pKi/pKd/pIC50)— 回归任务
  2. 虚拟筛选:给定靶点,在化合物库中排序潜在活性化合物 — 排序/分类任务
  3. 多药理学预测:给定化合物,预测其潜在脱靶蛋白 — 二分类任务
  4. 分子对接打分函数验证:使用已知亲和力数据评估对接打分的预测能力 — 基准验证
  5. SAR/QSAR 建模:利用同系物系列的亲和力数据建立结构-活性关系模型 — 回归任务

§2 医学背景(Medical Context)

§2.1 疾病与靶点编码映射

BindingDB 是跨疾病谱的药物-靶点结合数据库,不限于特定疾病。其覆盖的蛋白质靶点可通过以下编码体系映射到疾病分类:

编码体系 映射方式 示例
ICD-11 通过靶点名称/UniProt → 疾病通路关联 例:EGFR (P00533) → 2A22 肺腺癌
UniProt 靶点主要标识符 11,503 个靶点均有 UniProt ID(部分需补全)
PDB 蛋白-配体复合物 3D 结构 部分测量关联 PDB ID
PubChem CID 化合物外部标识 大部分化合物映射到 PubChem
ChEMBL ID 化合物外部标识 ChEMBL 导入子集自带
DrugBank ID 药物标识交叉引用 已获批药物可交叉引用
KEGG 通路注释 通过 KEGG 通路 ID 关联靶点
ChEBI 化学实体标识 化合物可映射到 ChEBI

§2.2 临床任务定义

BindingDB 支持的 AI 任务在药物发现管线中的位置:

药物发现阶段 AI 任务 BindingDB 角色
靶点验证 靶点可成药性评估 提供靶点已知配体亲和力分布
命中发现 虚拟筛选 训练 DTI 模型预测新化合物-靶点对
先导物优化 SAR/QSAR 提供同系物系列亲和力数据
选择性评估 脱靶预测 多靶点亲和力数据训练选择性模型
药物重定位 新适应症预测 预测已上市药物的脱靶结合

§2.3 靶点来源与生物分类

BindingDB 的 11,503 个蛋白质靶点来源覆盖多个生物体:

来源生物 占比估计 说明
人类 (Homo sapiens) ~70% 主要药物靶点
小鼠 (Mus musculus) ~10% 同源蛋白,药理学研究
大鼠 (Rattus norvegicus) ~5% 药理学研究
其他哺乳动物 ~5% 牛、兔、猴等
病原微生物 ~5% 细菌、病毒、寄生虫蛋白(抗菌药靶点)
其他 ~5% 植物、酵母等

注意:DTI 预测模型训练时,建议按 Target Source Organism 字段过滤。非人源蛋白的活性数据可能因物种差异而不可直接外推到人类同源蛋白。DrugForm-DTA 等研究已表明,过滤非生理条件和非人源数据后模型性能有显著变化。

§2.4 金标准

数据来源 标注方式 标注者 金标准性质
科学文献 半自动化提取 + 人工审核 BindingDB 策展员 + 第二策展员复核 实验测量值(金标准)
US 专利 自动 XML 解析 + 人工审核 BindingDB 策展员 实验测量值(参考标准)
ChEMBL 导入 ChEMBL 策展流程 ChEMBL 策展员 实验测量值(参考标准)
PubChem BioAssay 确认性测定 PubChem 提交者 实验测量值(参考标准)

§2.5 临床意义

BindingDB 中的结合亲和力数据是药物发现中最基础的实验数据类型之一。结合亲和力(Ki/Kd)反映药物分子与靶点蛋白之间的热力学结合强度,是评估候选药物有效性和选择性的核心指标。IC50 虽然是功能性测定,但通过 Cheng-Prusoff 方程可近似转换为 Ki。这些数据支撑着从靶点验证到先导物优化的整个药物发现流程。

§3 数据集规格(Specifications)

§3.0 版本抉择矩阵

你的需求 推荐下载 大小 理由
DTI 模型训练(回归) BindingDB_All_TSV ~565 MB TSV 格式可直接 pandas 加载,含所有亲和力类型和元数据
化学结构建模(图神经网络) BindingDB_All_2D_SDF ~1.49 GB SDF 含完整 2D 分子结构,RDKit 可直接解析
3D 对接/结构药效团 BindingDB_All_3D_SDF ~3.07 GB 含自动生成的 3D 构象,可用于对接验证
仅用 BindingDB 原创策展数据 BindingDB_BindingDB_Articles_TSV ~17 MB 仅含期刊策展数据,数据质量最高,适合小规模验证
仅用 US 专利数据 BindingDB_Patents_TSV ~129 MB 仅含专利策展数据,独家来源,与其他数据库零重叠
可复现 AI 训练 UCSD 存档版本 ~489 MB DOI 锁定的季度版本,确保时间可复现性
API 实时查询 RESTful API N/A 适合小批量查询(按靶点/化合物),无需下载全库

§3.1 数据模态

BindingDB 核心数据模态为结构化数值数据

  • 结合亲和力数值:Ki (nM)、Kd (nM)、IC50 (nM)、EC50 (nM)、kon (M⁻¹s⁻¹)、koff (s⁻¹)
  • 化学结构:SMILES 字符串(2D)、InChI Key、SDF 分子文件(2D/3D)
  • 蛋白质标识:UniProt ID、PDB ID、靶点名称、氨基酸序列(FASTA)
  • 文献溯源:PubMed ID、DOI、专利号
  • 实验条件(仅 BindingDB 策展数据):温度、pH、缓冲液组成
  • 外部交叉引用:PubChem CID、ChEMBL ID、ZINC ID

§3.2 样本统计

数据来源 测量数据数 化合物数 靶点数
全库总量 3,239,327 1,433,271 11,503
其中:BindingDB 期刊策展 ~1,600,000 ~752,000 ~4,800
其中:US 专利策展 1,322,244 665,925 3,138
其中:ChEMBL 导入 ~1,000,000+ ~500,000+ ~5,000+
其中:PubChem BioAssay 导入 ~200,000+ ~100,000+ ~500+

:上述分类数字存在重叠(同一化合物可能同时出现在期刊和专利中),总量为去重后结果。专利数据截至 2026-05-25 统计。

§3.3 数据格式

格式 文件 大小(压缩后) 说明
TSV (tab-separated) BindingDB_All_202608_tsv.zip 565 MB 全量数据,一行一条测量,pandas 直读
SDF 2D BindingDB_All_2D_202608_sdf.zip 1.49 GB 含 2D 分子结构,RDKit 可解析
SDF 3D BindingDB_All_3D_202608_sdf.zip 3.07 GB 含 3D 构象(自动生成)
TSV (仅期刊) BindingDB_BindingDB_Articles_202608_tsv.zip 17 MB BindingDB 原创策展数据
SDF 2D (仅期刊) BindingDB_BindingDB_Articles_2D_202608_sdf.zip 34 MB 期刊策展 2D 结构
SDF 3D (仅期刊) BindingDB_BindingDB_Articles_3D_202608_sdf.zip 87 MB 期刊策展 3D 构象
TSV (仅 ChEMBL) BindingDB_ChEMBL_202608_tsv.zip ~350 MB ChEMBL 导入子集
SDF 2D (仅 ChEMBL) BindingDB_ChEMBL_2D_202608_sdf.zip 902 MB ChEMBL 子集 2D 结构
SDF 3D (仅 ChEMBL) BindingDB_ChEMBL_3D_202608_sdf.zip 1.67 GB ChEMBL 子集 3D 构象
MySQL dump BDB-mySQL_All_202608_dmp.zip 262 MB 完整数据库 dump (MySQL 8.0.26)
Assays TSV BindingDB_Assays_202608_tsv.zip 9.6 MB Entry ID + Assay ID → 实验描述映射
RSID 映射 TSV BindingDB_rsid_eaids_202608_tsv.zip 7.2 MB Reaction Set ID → Entry ID + Assay ID 映射

§3.4 亲和力类型与数据质量

亲和力类型 物理含义 测量方法 直接比较 推荐用于 AI
Ki (nM) 抑制常数(平衡态) 酶动力学、竞争性结合 ✅ 可跨实验比较 ⭐ 首选
Kd (nM) 解离常数(热力学) ITC、SPR、荧光偏振 ✅ 可跨实验比较 ⭐ 首选
IC50 (nM) 半数抑制浓度(功能) 酶抑制、细胞活性 ❌ 底物浓度依赖 需转换 pIC50
EC50 (nM) 半数有效浓度 细胞功能测定 ❌ 条件依赖 需转换 pEC50
kon (M⁻¹s⁻¹) 结合速率常数 SPR、停流 ✅ 动力学参数 高级分析
koff (s⁻¹) 解离速率常数 SPR、停流 ✅ 动力学参数 高级分析

关键提示:IC50 值取决于实验条件(底物浓度、酶浓度等),不能直接跨实验比较。Cheng-Prusoff 方程可将 IC50 转换为 Ki:Ki = IC50 / (1 + [S]/Km),但需要知道底物浓度 [S] 和 Michaelis 常数 Km,这些信息并不总是可用。建议 AI 模型训练时将 Ki 和 Kd 合并为一个目标变量(pKd/Ki = -log10(Kd或Ki)),IC50 单独处理。

§3.5 策展流程

BindingDB 的数据策展采用半自动化双审流程:

US 专利策展管道(独家):
┌─────────────────────────────────────────────────┐
│  1. USPTO 周下载专利 XML(红皮书)               │
│     ↓                                            │
│  2. CPC 分类筛选 (C07 有机化学 + A61 医药制剂)    │
│     ↓                                            │
│  3. 自动检测 SAR 表格 + 关键词 (IC50, Kd, Ki)     │
│     ↓                                            │
│  4. 自动预加载到策展界面                          │
│     ↓                                            │
│  5. 策展员 A 审核 + 修正(对照专利原文)           │
│     ↓                                            │
│  6. 策展员 B 复核 + 讨论修正                      │
│     ↓                                            │
│  7. 入库(月度发布)                              │
└─────────────────────────────────────────────────┘

期刊策展(12 种期刊,大部分至 2017 卷):
  ACS Chemical Biology | Biochemistry | Bioorganic Chemistry |
  BMC Chemical Biology | ChemBioChem | Chemical Biology & Drug Design |
  Chemistry & Biology | J. Biological Chemistry | J. Chemical Biology |
  J. Enzyme Inhibition & Medicinal Chemistry | Nature Chemical Biology |
  Medicinal Chemistry Research

§3.6 许可证

BindingDB 采用分层许可证体系:

数据子集 许可证 商业使用 衍生作品要求
BindingDB 策展数据(期刊 + 专利) CC BY 4.0 ✅ 允许 需署名
ChEMBL 导入数据 CC BY-SA 3.0 ✅ 允许 需署名 + 相同许可
PubChem 导入数据 公共领域 ✅ 允许 无限制

重要:下载的完整 TSV/SDF 文件中混合了不同许可证的数据。如果你的衍生作品需要再分发,须确保 ChEMBL 子集的衍生作品也遵循 CC BY-SA 3.0。BindingDB 提供了按数据来源分开的下载文件,建议按许可证需求分别下载。

§3.7 基金来源

资助方 项目编号 时期 说明
NIH/NIGMS R24GM144232 当前 主要运营资助
NIH/NIGMS R01GM070064 2004-2020 前期主要资助
NSF 9808318 早期 启动期资助
NIST 早期 标准与技术支持
ChemAxon 学术许可 持续 化学信息学软件
OpenEye 学术许可 持续 分子建模软件

§3.8 深度溯源链

BindingDB 的数据溯源链是化学数据库中最完整的之一:

实验测量(体外生化实验)
  ↓ 发表
文献来源 / 专利来源
  ├→ PubMed ID(期刊论文)
  ├→ DOI(数字对象标识符)
  └→ US 专利号(专利文献)
  ↓ 策展
BindingDB 策展记录
  ├→ 策展员 ID(A 初审 + B 复核)
  ├→ 策展日期
  ├→ 发表日期(2024+ 新增字段)
  └→ 来源分类(article/patent/ChEMBL/PubChem/PDSP/CSAR)
  ↓ 标准化
化学结构标识
  ├→ SMILES(2D)
  ├→ InChI Key(唯一标识)
  ├→ PubChem CID
  ├→ ChEMBL ID
  └→ ZINC ID(可选链接)
蛋白质标识
  ├→ UniProt ID(SwissProt)
  ├→ PDB ID(如有复合物结构)
  └→ 靶点名称 + 来源生物
  ↓ 存档
UCSD 图书馆数字典藏(季度版本)
  └→ DOI: 10.6075/J0VD6ZTZ(永久可引用)

§4 数据结构详解(Data Schema)

§4.0 目录结构预览

BindingDB_202608/
├── BindingDB_All_202608_tsv.zip          # 全量 TSV(565 MB)
│   └── BindingDB_All_202608.tsv          # 解压后,一行一条测量
├── BindingDB_All_2D_202608_sdf.zip       # 全量 2D SDF(1.49 GB)
│   └── BindingDB_All_2D_202608.sdf       # RDKit 可直接解析
├── BindingDB_All_3D_202608_sdf.zip       # 全量 3D SDF(3.07 GB)
├── BindingDB_BindingDB_Articles_202608_tsv.zip   # 期刊策展 TSV(17 MB)
├── BindingDB_BindingDB_Articles_2D_202608_sdf.zip # 期刊策展 2D SDF(34 MB)
├── BindingDB_BindingDB_Articles_3D_202608_sdf.zip # 期刊策展 3D SDF(87 MB)
├── BindingDB_ChEMBL_202608_tsv.zip       # ChEMBL 子集 TSV
├── BindingDB_ChEMBL_2D_202608_sdf.zip    # ChEMBL 子集 2D SDF(902 MB)
├── BindingDB_ChEMBL_3D_202608_sdf.zip    # ChEMBL 子集 3D SDF(1.67 GB)
├── BindingDB_Assays_202608_tsv.zip       # Assay 描述映射(9.6 MB)
├── BindingDB_rsid_eaids_202608_tsv.zip   # RSID → Entry/Assay 映射(7.2 MB)
├── BDB-mySQL_All_202608_dmp.zip          # MySQL dump(262 MB)
├── BindingDB-TSV-Format.pdf              # TSV 格式文档
└── BindingDB-SDfile-Specification.pdf    # SDF 格式文档

§4.1 DAIMS 标准化数据字典

TSV 文件核心字段(一行一条结合测量):

字段名 数据类型 说明 示例值 AI 用途 观测误差 缺失编码 取值范围
React Set ID Text 反应集 ID “50000314” 记录分组
Ligand SMILES Text 配体 SMILES “CC(=O)c1ccc…” 分子图输入 自动生成 3D 误差
Ligand InChI Key Text InChI Key “BSYNRYMUT…SA-N” 化合物去重
Ligand MW Float 分子量 451.47 药物性过滤 100-1000
LogP Float 计算 LogP 3.92 药物性过滤 计算方法差异 -5 to 8
Ki (nM) Float 抑制常数 12.5 回归标签 实验变异 空白/NA 0.01-1e6
Kd (nM) Float 解离常数 8.3 回归标签 实验变异 空白/NA 0.01-1e6
IC50 (nM) Float 半数抑制浓度 150.0 回归标签 条件依赖 空白/NA 0.1-1e6
EC50 (nM) Float 半数有效浓度 320.0 回归标签 条件依赖 空白/NA 0.1-1e6
kon (M-1-s-1) Float 结合速率 1.2e5 动力学分析 空白/NA
koff (s-1) Float 解离速率 3.4e-3 动力学分析 空白/NA
UniProt (SwissProt) Text 靶点 UniProt ID “P00533” 蛋白质标识 ~85K 条缺失 空白
Target Name Text 靶点名称 “Epidermal growth…” 辅助标识
Target Source Organism Text 靶点来源生物 “Homo sapiens” 物种过滤
PDB ID(s) for Ligand-Target Complex Text PDB 复合物 ID “4G5P” 3D 结构关联 空白
PubChem CID Text PubChem CID “5364” 化合物交叉引用 空白
ChEMBL ID of Ligand Text ChEMBL ID “CHEMBL3” 化合物交叉引用 空白
PubMed ID Text PubMed ID “12345678” 文献溯源 空白
Patent Number Text US 专利号 “US20140128376A1” 专利溯源 空白
Publication Date Date 发表日期 “2020-06-15” 时间划分 空白 2000-2026
BindingDB Curation Date Date 策展日期 “2021-03-10” 时间划分 2000-2026

§4.2 标签分布统计

亲和力类型 可用数据条数 占比 典型值范围 (nM) 中位数 (nM)
Ki ~840,000 ~26% 0.1 - 10,000 ~50
Kd ~210,000 ~6.5% 0.1 - 10,000 ~20
IC50 ~1,850,000 ~57% 1 - 100,000 ~500
EC50 ~250,000 ~7.7% 1 - 50,000 ~1,000
kon ~15,000 ~0.5% 1e3 - 1e7
koff ~15,000 ~0.5% 1e-4 - 1e0

注意:上述数字为估计值,实际分布因月度版本而异。一条记录可能同时有多个亲和力类型(如同时报告 Ki 和 IC50)。

§4.3 数据层级关系

BindingDB 的数据层级为:

来源文档(论文/专利)
  └→ Entry(一条来源对应一个 Entry)
       ├→ Assay(一个 Entry 可有多个实验)
       │    └→ 测量数据(一个 Assay 可有多个测量)
       │         ├→ 化合物(SMILES)
       │         ├→ 靶点(UniProt)
       │         ├→ 亲和力(Ki/Kd/IC50/EC50)
       │         └→ 实验条件(温度/pH/缓冲液,仅期刊策展)
       └→ Reaction Set(相关测量的分组)

§4.4 RESTful API

BindingDB 提供 RESTful API,支持 JSON 和 XML 输出:

API 端点 功能 参数 示例
getLigandsByUniprot 按 UniProt ID 查询配体 uniprot, cutoff(nM) ?uniprot=P35355;100
getLigandsByUniprots 批量 UniProt 查询 uniprot(逗号分隔), cutoff ?uniprot=P00176,P00183&cutoff=10000
getLigandsByPDBs 按 PDB ID 查询配体 pdb, cutoff, identity(%) ?pdb=1Q0L,3ANM&cutoff=100&identity=92
getTargetByCompound 按 SMILES 查询靶点 smiles, cutoff(相似度) ?smiles=CC...&cutoff=0.85

API 返回格式:JSON(添加 &responevent-blocked=application/json)或 XML(默认)。无速率限制文档,但建议合理使用。

§4.5 缺失值情况

字段 缺失率估计 原因 处理建议
UniProt ID ~2.6%(~85K 条) 部分靶点未映射 可从 BindingDB 网站补全或使用靶点名称模糊匹配
PDB ID ~90%+ 大部分测量无 3D 结构 仅结构相关任务需要
温度/pH/缓冲液 ~40%(仅期刊策展有) 专利和导入数据缺失 按"标准条件"处理或排除
kon/koff ~99.5% 动力学参数罕见 仅用于动力学建模子集
PubChem CID ~30% 部分化合物未映射 可用 InChI Key 在 PubChem 查询
ChEMBL ID ~50% 仅 ChEMBL 导入子集自带 可用 UniChem 交叉映射

§4.6 生态工具

工具 类型 功能
BDBFind 浏览器扩展 Chrome/Firefox,自动检测论文/专利中的 BindingDB 数据
KNIME Workflows 工作流引擎 预构建数据检索和靶点预测工作流
Google Colab 工具 Python Notebook Patrick Walters 开发的 SAR 分析工具
TDC (Therapeutics Data Commons) AI 基准平台 BindingDB_Kd/IC50/Ki 三个标准 DTI 基准
DeepPurpose Python 库 深度学习 DTI/DTA 预测库,预训练于 BindingDB

§5 数据划分与使用建议

§5.1 官方划分策略

BindingDB 不提供官方 train/val/test 划分。使用者需自行划分。以下是社区常用策略:

划分策略 说明 适用场景 风险
随机划分 (Random) 随机按比例拆分 快速基准 高估性能(数据泄漏)
冷药物划分 (Cold Drug) 测试集化合物不在训练集中 评估新化合物预测 更真实,性能下降
冷蛋白划分 (Cold Protein) 测试集靶点不在训练集中 评估新靶点预测 最难,性能下降最大
双重冷划分 (Double Cold) 化合物和靶点均未见 评估完全新颖场景 最严格
时间划分 (Temporal) 按发表/策展日期分割 评估时间泛化 需处理日期缺失

§5.2 TDC 标准基准

Therapeutics Data Commons 提供了 BindingDB 的三个标准子集:

子集名称 相互作用对数 化合物数 蛋白质数 任务 指标
BindingDB_Kd 52,284 10,665 1,413 回归 MSE / CI
BindingDB_IC50 991,486 549,205 5,078 回归 MSE / CI
BindingDB_Ki 375,032 174,662 3,070 回归 MSE / CI

建议:TDC 提供 harmonize_affinities() 函数处理同一药物-靶点对的重复测量,支持 max_affinity(取最强活性)或 mean(取平均)两种策略。转换为 log 尺度(pKd = -log10(Kd),pIC50 = -log10(IC50))通常使训练更稳定。

§5.3 使用建议

用户类型 推荐子集 划分 预处理
DTI 回归模型训练 BindingDB_All_TSV Cold Drug / Cold Protein Ki+Kd 合并 → pKd,IC50 → pIC50,log 转换
虚拟筛选基准 BindingDB_BindingDB_Articles_TSV Random 70/15/15 仅保留 sub-μM 化合物为活性
专利数据独家分析 BindingDB_Patents_TSV Temporal split 按专利日期分割,评估时间泛化
快速原型验证 TDC BindingDB_Kd (52K) TDC 标准划分 from tdc.multi_pred import DTI
可复现研究 UCSD 存档版本 固定版本 + Random DOI: 10.6075/J0VD6ZTZ

§6 AI 就绪指南(AI-Ready Guide)⭐

§6.0 云端快速启动

🚀 5 分钟极速体验:使用 Therapeutics Data Commons (TDC) 预置 BindingDB 基准,无需下载全库即可开始训练。

# 5 分钟快速启动 — TDC BindingDB_Kd 基准
# 环境: pip install PyTDC DeepPurpose
from tdc.multi_pred import DTI

# 加载 BindingDB Kd 子集(52,284 对,10,665 药物,1,413 蛋白)
data = DTI(name=''''''''''''''''''''''''''''''''BindingDB_Kd'''''''''''''''''''''''''''''''')
df = data.get_data()
split = data.get_split()  # 自动 train/val/test 划分

print(f"Train: {len(split[''''''''''''''''''''''''''''''''train''''''''''''''''''''''''''''''''])} | Val: {len(split[''''''''''''''''''''''''''''''''valid''''''''''''''''''''''''''''''''])} | Test: {len(split[''''''''''''''''''''''''''''''''test''''''''''''''''''''''''''''''''])}")
# 输出示例: Train: 36,598 | Val: 7,842 | Test: 7,844

§6.1 快速上手

# ========================================
# BindingDB 快速上手 — PyTorch 版
# 环境: torch>=2.0, pandas, rdkit, numpy
#
# ⚠️ 目录结构预期:
#   请将下载的 TSV 文件放在 ./data/ 目录下
#   ./data/BindingDB_All_202608.tsv  (解压后)
#
#   TSV 文件每一行为一条结合测量记录
#   关键列: ''''''''''''''''''''''''''''''''Ligand SMILES'''''''''''''''''''''''''''''''', ''''''''''''''''''''''''''''''''UniProt (SwissProt)'''''''''''''''''''''''''''''''', ''''''''''''''''''''''''''''''''Ki (nM)'''''''''''''''''''''''''''''''', ''''''''''''''''''''''''''''''''IC50 (nM)''''''''''''''''''''''''''''''''
# ========================================

import pandas as pd
import numpy as np
from rdkit import Chem
from rdkit.Chem import AllChem, Descriptors
import torch
from torch.utils.data import Dataset, DataLoader

def load_bindingdb_tsv(filepath: str, affinity_type: str = ''''''''''''''''''''''''''''''''Ki'''''''''''''''''''''''''''''''',
                       max_rows: int = None) -> pd.DataFrame:
    """加载 BindingDB TSV 文件,筛选指定亲和力类型"""
    df = pd.read_csv(filepath, sep=''''''''''''''''''''''''''''''''\t'''''''''''''''''''''''''''''''', low_memory=False)
    if max_rows:
        df = df.head(max_rows)

    # 选择亲和力列
    col_map = {''''''''''''''''''''''''''''''''Ki'''''''''''''''''''''''''''''''': ''''''''''''''''''''''''''''''''Ki (nM)'''''''''''''''''''''''''''''''', ''''''''''''''''''''''''''''''''Kd'''''''''''''''''''''''''''''''': ''''''''''''''''''''''''''''''''Kd (nM)'''''''''''''''''''''''''''''''',
               ''''''''''''''''''''''''''''''''IC50'''''''''''''''''''''''''''''''': ''''''''''''''''''''''''''''''''IC50 (nM)'''''''''''''''''''''''''''''''', ''''''''''''''''''''''''''''''''EC50'''''''''''''''''''''''''''''''': ''''''''''''''''''''''''''''''''EC50 (nM)''''''''''''''''''''''''''''''''}
    aff_col = col_map[affinity_type]

    # 过滤有效行
    df = df.dropna(subset=[''''''''''''''''''''''''''''''''Ligand SMILES'''''''''''''''''''''''''''''''', ''''''''''''''''''''''''''''''''UniProt (SwissProt)'''''''''''''''''''''''''''''''', aff_col])
    df[aff_col] = pd.to_numeric(df[aff_col], errors=''''''''''''''''''''''''''''''''coerce'''''''''''''''''''''''''''''''')
    df = df.dropna(subset=[aff_col])
    df = df[df[aff_col] > 0]  # 排除 0 和负值

    # 转换为 pScale (log10)
    df[f''''''''''''''''''''''''''''''''p{affinity_type}''''''''''''''''''''''''''''''''] = -np.log10(df[aff_col] * 1e-9)  # nM → M → -log10

    print(f"Loaded {len(df)} valid measurements ({affinity_type})")
    print(f"  p{affinity_type} range: {df[f''''''''''''''''''''''''''''''''p{affinity_type}''''''''''''''''''''''''''''''''].min():.2f} - "
          f"{df[f''''''''''''''''''''''''''''''''p{affinity_type}''''''''''''''''''''''''''''''''].max():.2f}")
    print(f"  Unique compounds: {df[''''''''''''''''''''''''''''''''Ligand SMILES''''''''''''''''''''''''''''''''].nunique()}")
    print(f"  Unique targets: {df[''''''''''''''''''''''''''''''''UniProt (SwissProt)''''''''''''''''''''''''''''''''].nunique()}")

    return df[[''''''''''''''''''''''''''''''''Ligand SMILES'''''''''''''''''''''''''''''''', ''''''''''''''''''''''''''''''''UniProt (SwissProt)'''''''''''''''''''''''''''''''', f''''''''''''''''''''''''''''''''p{affinity_type}'''''''''''''''''''''''''''''''']]


def harmonize_affinities(df: pd.DataFrame, mode: str = ''''''''''''''''''''''''''''''''mean'''''''''''''''''''''''''''''''') -> pd.DataFrame:
    """处理同一化合物-靶点对的重复测量"""
    pair_col = df[''''''''''''''''''''''''''''''''Ligand SMILES''''''''''''''''''''''''''''''''] + ''''''''''''''''''''''''''''''''|'''''''''''''''''''''''''''''''' + df[''''''''''''''''''''''''''''''''UniProt (SwissProt)'''''''''''''''''''''''''''''''']
    df[''''''''''''''''''''''''''''''''pair''''''''''''''''''''''''''''''''] = pair_col
    if mode == ''''''''''''''''''''''''''''''''max_affinity'''''''''''''''''''''''''''''''':
        # 取最强活性(最高 pScale 值 = 最低 nM 值)
        df = df.loc[df.groupby(''''''''''''''''''''''''''''''''pair'''''''''''''''''''''''''''''''').idxmax().iloc[:, -2]]
    else:
        df = df.groupby(''''''''''''''''''''''''''''''''pair'''''''''''''''''''''''''''''''').mean().reset_index()
    return df.drop(columns=[''''''''''''''''''''''''''''''''pair''''''''''''''''''''''''''''''''])


# 使用
df = load_bindingdb_tsv(''''''''''''''''''''''''''''''''./data/BindingDB_All_202608.tsv'''''''''''''''''''''''''''''''', affinity_type=''''''''''''''''''''''''''''''''Ki'''''''''''''''''''''''''''''''')
df = harmonize_affinities(df, mode=''''''''''''''''''''''''''''''''mean'''''''''''''''''''''''''''''''')

§6.2 数据获取

方式 链接 大小 说明
全量 TSV 下载 https://bindingdb.org/rwd/bind/chemsearch/marvin/Download.jsp ~565 MB 推荐,pandas 直接加载
UCSD 存档(DOI 锁定) https://library.ucsd.edu/dc/collection/bb03870458 ~489 MB 可复现 AI 训练
RESTful API https://bindingdb.org/rwd/bind/BindingDBRESTfulAPI.jsp N/A 小批量查询
TDC 基准 pip install PyTDC ~10 MB 预处理好的子集

§6.3 预处理全流程

# ========================================
# BindingDB 预处理管道
# 从原始 TSV → 训练就绪张量
# ========================================

import pandas as pd
import numpy as np
from rdkit import Chem
from rdkit.Chem import AllChem, DataStructs

def preprocess_bindingdb(df: pd.DataFrame, organism: str = ''''''''''''''''''''''''''''''''Homo sapiens'''''''''''''''''''''''''''''''') -> pd.DataFrame:
    """BindingDB 数据清洗与标准化"""

    # 1. 物种过滤
    if ''''''''''''''''''''''''''''''''Target Source Organism'''''''''''''''''''''''''''''''' in df.columns:
        df = df[df[''''''''''''''''''''''''''''''''Target Source Organism''''''''''''''''''''''''''''''''] == organism]
        print(f"1. Organism filter ({organism}): {len(df)} records")

    # 2. SMILES 验证与规范化
    def validate_smiles(smi: str) -> str:
        mol = Chem.MolFromSmiles(smi)
        if mol is None:
            return None
        return Chem.MolToSmiles(mol)  # canonical SMILES

    df[''''''''''''''''''''''''''''''''SMILES_canonical''''''''''''''''''''''''''''''''] = df[''''''''''''''''''''''''''''''''Ligand SMILES''''''''''''''''''''''''''''''''].apply(validate_smiles)
    df = df.dropna(subset=[''''''''''''''''''''''''''''''''SMILES_canonical''''''''''''''''''''''''''''''''])
    print(f"2. SMILES validation: {len(df)} valid")

    # 3. 亲和力标准化
    # 合并 Ki 和 Kd(均为热力学平衡常数)
    for col in [''''''''''''''''''''''''''''''''Ki (nM)'''''''''''''''''''''''''''''''', ''''''''''''''''''''''''''''''''Kd (nM)'''''''''''''''''''''''''''''''', ''''''''''''''''''''''''''''''''IC50 (nM)'''''''''''''''''''''''''''''''', ''''''''''''''''''''''''''''''''EC50 (nM)'''''''''''''''''''''''''''''''']:
        if col in df.columns:
            df[col] = pd.to_numeric(df[col], errors=''''''''''''''''''''''''''''''''coerce'''''''''''''''''''''''''''''''')

    # 优先使用 Ki > Kd > IC50 > EC50
    df[''''''''''''''''''''''''''''''''affinity_nM''''''''''''''''''''''''''''''''] = df[''''''''''''''''''''''''''''''''Ki (nM)''''''''''''''''''''''''''''''''].fillna(
        df[''''''''''''''''''''''''''''''''Kd (nM)''''''''''''''''''''''''''''''''].fillna(
            df[''''''''''''''''''''''''''''''''IC50 (nM)''''''''''''''''''''''''''''''''].fillna(df[''''''''''''''''''''''''''''''''EC50 (nM)''''''''''''''''''''''''''''''''])
        )
    )
    df = df.dropna(subset=[''''''''''''''''''''''''''''''''affinity_nM''''''''''''''''''''''''''''''''])
    df = df[df[''''''''''''''''''''''''''''''''affinity_nM''''''''''''''''''''''''''''''''] > 0]

    # 转 pScale
    df[''''''''''''''''''''''''''''''''pAffinity''''''''''''''''''''''''''''''''] = -np.log10(df[''''''''''''''''''''''''''''''''affinity_nM''''''''''''''''''''''''''''''''] * 1e-9)
    # clip 到合理范围 [3, 12] (1 mM to 1 pM)
    df[''''''''''''''''''''''''''''''''pAffinity''''''''''''''''''''''''''''''''] = df[''''''''''''''''''''''''''''''''pAffinity''''''''''''''''''''''''''''''''].clip(3, 12)
    print(f"3. Affinity standardization: {len(df)} with valid affinity")

    # 4. UniProt ID 补全
    # 移除没有 UniProt ID 的记录(或从 BindingDB 网站补全)
    df = df.dropna(subset=[''''''''''''''''''''''''''''''''UniProt (SwissProt)''''''''''''''''''''''''''''''''])
    print(f"4. UniProt filter: {len(df)} with UniProt ID")

    # 5. 去重(同一 SMILES + UniProt 对取均值)
    df[''''''''''''''''''''''''''''''''pair_key''''''''''''''''''''''''''''''''] = df[''''''''''''''''''''''''''''''''SMILES_canonical''''''''''''''''''''''''''''''''] + ''''''''''''''''''''''''''''''''|'''''''''''''''''''''''''''''''' + df[''''''''''''''''''''''''''''''''UniProt (SwissProt)'''''''''''''''''''''''''''''''']
    df = df.groupby(''''''''''''''''''''''''''''''''pair_key'''''''''''''''''''''''''''''''').agg({
        ''''''''''''''''''''''''''''''''SMILES_canonical'''''''''''''''''''''''''''''''': ''''''''''''''''''''''''''''''''first'''''''''''''''''''''''''''''''',
        ''''''''''''''''''''''''''''''''UniProt (SwissProt)'''''''''''''''''''''''''''''''': ''''''''''''''''''''''''''''''''first'''''''''''''''''''''''''''''''',
        ''''''''''''''''''''''''''''''''pAffinity'''''''''''''''''''''''''''''''': ''''''''''''''''''''''''''''''''mean''''''''''''''''''''''''''''''''
    }).reset_index()
    print(f"5. Deduplication: {len(df)} unique pairs")

    # 6. 异常值处理 — 去除 99 百分位之外的极端值
    p99 = df[''''''''''''''''''''''''''''''''pAffinity''''''''''''''''''''''''''''''''].quantile(0.99)
    p01 = df[''''''''''''''''''''''''''''''''pAffinity''''''''''''''''''''''''''''''''].quantile(0.01)
    df = df[(df[''''''''''''''''''''''''''''''''pAffinity''''''''''''''''''''''''''''''''] >= p01) & (df[''''''''''''''''''''''''''''''''pAffinity''''''''''''''''''''''''''''''''] <= p99)]
    print(f"6. Outlier removal: {len(df)} after clipping to [{p01:.2f}, {p99:.2f}]")

    return df


# 分子特征化 — ECFP4 指纹
def smiles_to_ecfp(smiles: str, radius: int = 2, n_bits: int = 2048):
    """将 SMILES 转换为 Morgan 指纹 (ECFP4)"""
    mol = Chem.MolFromSmiles(smiles)
    if mol is None:
        return np.zeros(n_bits, dtype=np.float32)
    fp = AllChem.GetMorganFingerprintAsBitVect(mol, radius, nBits=n_bits)
    arr = np.zeros(n_bits, dtype=np.float32)
    DataStructs.ConvertToNumpyArray(fp, arr)
    return arr

§6.4 PyTorch DataLoader

class BindingDBDataset(Dataset):
    """BindingDB PyTorch Dataset for DTI prediction"""
    def __init__(self, df: pd.DataFrame, max_seq_len: int = 1000):
        self.smiles = df[''''''''''''''''''''''''''''''''SMILES_canonical''''''''''''''''''''''''''''''''].values
        self.uniprot = df[''''''''''''''''''''''''''''''''UniProt (SwissProt)''''''''''''''''''''''''''''''''].values
        self.labels = df[''''''''''''''''''''''''''''''''pAffinity''''''''''''''''''''''''''''''''].values.astype(np.float32)
        self.max_seq_len = max_seq_len
        # 预计算分子指纹
        self._precompute_fps()

    def _precompute_fps(self):
        self.fps = np.array([smiles_to_ecfp(s) for s in self.smiles])

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

    def __getitem__(self, idx):
        fp = torch.from_numpy(self.fps[idx])
        label = self.labels[idx]
        return fp, label

# 使用
dataset = BindingDBDataset(df)
loader = DataLoader(dataset, batch_size=256, shuffle=True, num_workers=4)

§6.5 常见坑点

⚠️ 坑点 1:IC50 不可直接跨实验比较(分类:标签理解)

问题:IC50 值取决于实验条件(底物浓度、酶浓度、孵育时间等),不同实验条件下的 IC50 值不能直接比较。将来自不同实验的 IC50 值混用为同一标签会导致模型学习噪声。

症状:模型在验证集上的 MSE 异常高;同一化合物-靶点对不同来源的预测值差异可达 2-3 个 log 单位。

解决

  1. 优先使用 Ki 和 Kd(热力学常数,可跨实验比较)
  2. 如必须使用 IC50,用 Cheng-Prusoff 方程转换为 Ki(需底物浓度信息)
  3. 转换为 pIC50 (=-log10(IC50_M)) 后进行标准化(z-score per target)
  4. 使用 harmonize_affinities() 处理同一对的多重测量

参考:Cheng & Prusoff (1973). Biochem. Pharmacol. 22:3099-3108.

⚠️ 坑点 2:数据泄漏——同一论文数据跨训练/测试集(分类:数据泄漏)

问题:BindingDB 同一来源论文(同一 PubMed ID)可能包含多个化合物-靶点对的测量。随机划分会导致同一论文的数据同时出现在训练集和测试集中,造成数据泄漏。

症状:随机划分性能显著高于 Cold Drug / Cold Protein 划分(>0.05 CI 差距)。

解决

  1. PubMed IDPatent Number 分组划分(group split)
  2. 使用 scikit-learn 的 GroupShuffleSplit
  3. 或按 React Set ID 分组
from sklearn.model_selection import GroupShuffleSplit
splitter = GroupShuffleSplit(n_splits=1, test_size=0.2, random_state=42)
train_idx, test_idx = next(splitter.split(df, groups=df[''''''''''''''''''''''''''''''''PubMed ID'''''''''''''''''''''''''''''''']))

⚠️ 坑点 3:~85,000 条记录缺失 UniProt ID(分类:数据质量)

问题:约 2.6% 的记录没有 UniProt ID,无法进行蛋白质序列特征化。

症状:直接按 UniProt 过滤后数据量骤减;部分靶点只有名称没有 ID。

解决

  1. 从 BindingDB 网站的靶点页面手动查找对应 UniProt ID
  2. 使用靶点名称在 UniProt 网站模糊搜索
  3. 或直接排除这些记录(对总量影响 <3%)

⚠️ 坑点 4:专利数据中的发表偏倚(分类:偏倚陷阱)

问题:专利通常只报告活性较好的化合物(sub-μM 级别),低活性或无活性化合物不会出现在专利中。这导致专利数据的亲和力分布右偏(偏向高 pScale 值),不适合训练需要区分活性和非活性的二分类模型。

症状:仅用专利数据训练的模型在预测弱活性化合物时表现差;阈值选择不当导致假阳性率高。

解决

  1. 合并使用期刊数据(含更多弱活性化合物)
  2. 对二分类任务,使用 ChEMBL 的 inactive 标签作为负样本
  3. 注意报告数据的来源分布,避免训练/测试分布偏移

⚠️ 坑点 5:ChEMBL 导入数据的许可证不一致(分类:工程陷阱)

问题:完整 TSV 文件混合了 CC BY 4.0(BindingDB 策展)和 CC BY-SA 3.0(ChEMBL 导入)两种许可证的数据。如果你的衍生作品需要再分发,CC BY-SA 3.0 的 ShareAlike 条款要求整个衍生数据集也遵循 CC BY-SA 3.0。

症状:商业产品使用了混合数据但未注意 ShareAlike 条款,面临法律风险。

解决

  1. 如需 CC BY 4.0 全覆盖,仅下载 BindingDB_BindingDB_Articles_TSVBindingDB_Patents_TSV
  2. 如可接受 CC BY-SA 3.0,使用完整 TSV 即可
  3. 检查 TSV 中的来源字段区分各条数据的许可证归属

⚠️ 坑点 6:3D SDF 中的自动生成构象质量参差不齐(分类:预处理陷阱)

问题:BindingDB 3D SDF 中的 3D 构象是自动生成的(使用 CORINA/OpenEye OMEGA),并非实验测定的晶体结构。这些构象可能不代表生物活性构象。

症状:使用 3D 特征(如 3D 药效团、距离矩阵)训练的模型性能不如 2D 特征(ECFP)。

解决

  1. 优先使用 2D 特征(ECFP/MolBERT/Graph)而非 3D 特征
  2. 如需 3D 信息,使用 PDB ID 字段筛选有实验晶体结构的子集
  3. 或使用分子对接生成更可靠的 3D 构象(但计算成本高)

§6.6 推荐模型架构

模型类型 推荐方法 化合物编码 蛋白质编码 预期性能 (CI)
基线 DeepDTA SMILES CNN 序列 CNN 0.60-0.65
进阶 DeepPurpose (CNN-CNN) SMILES 编码 序列编码 0.65-0.70
图模型 GraphDTA 分子图 GNN 序列 CNN 0.65-0.72
Transformer MolBERT + ESM-2 化学语言模型 蛋白语言模型 0.70-0.78
融合模型 Dual-Encoder Fusion ChemBERTa+GNN ESM-2 嵌入 0.75-0.90
元学习 Meta-DTA (BindingDB→PDBbind) 预训练+微调 预训练+微调 CASF-2016 基准

§6.7 硬件配置建议

配置 CPU GPU 内存 磁盘 训练时间
最小 4 核 无 (CPU) 8 GB 10 GB ~24h (Kd 子集)
推荐 8 核 RTX 3090 (24GB) 32 GB 20 GB ~2h (Kd 子集)
高性能 16 核 A100 (40GB) 64 GB 50 GB ~30min (Kd 子集)
全量训练 32 核 A100 ×2 (80GB) 128 GB 50 GB ~4h (IC50 全集)

§6.8 评估指标

# DTI 回归任务标准评估指标
from sklearn.metrics import mean_squared_error, r2_score
from scipy.stats import pearsonr, spearmanr

def concordance_index(y_true, y_pred):
    """Concordance Index (C-Index) — DTI 标准排序指标"""
    # CI 衡量预测值与真实值的排序一致性
    # CI = 0.5 随机, CI = 1.0 完美
    n = len(y_true)
    count = 0
    total = 0
    for i in range(n):
        for j in range(i+1, n):
            if y_true[i] != y_true[j]:
                total += 1
                if (y_true[i] < y_true[j] and y_pred[i] < y_pred[j]) or \
                   (y_true[i] > y_true[j] and y_pred[i] > y_pred[j]):
                    count += 1
    return count / total if total > 0 else 0.5

# 使用
mse = mean_squared_error(y_true, y_pred)
rmse = np.sqrt(mse)
r2 = r2_score(y_true, y_pred)
ci = concordance_index(y_true, y_pred)
pearson_r, _ = pearsonr(y_true, y_pred)
spearman_r, _ = spearmanr(y_true, y_pred)

print(f"MSE: {mse:.4f} | RMSE: {rmse:.4f} | R2: {r2:.4f}")
print(f"CI: {ci:.4f} | Pearson: {pearson_r:.4f} | Spearman: {spearman_r:.4f}")

§7 质量评估与局限性

§7.1 已知偏倚

偏倚类型 描述 严重程度 缓解措施
专利发表偏倚 专利仅报告活性较好的化合物,低活性/无活性化合物缺失 合并期刊数据;使用 ChEMBL inactive 标签作负样本
靶点偏倚 激酶和 GPCR 靶点在专利中过度代表 按靶点家族分层评估
物种偏倚 人类蛋白占主导,非人源数据较少 Target Source Organism 过滤
期刊策展范围窄 仅 12 种期刊(至 2017 卷),与 ChEMBL 230+ 相比覆盖窄 使用 ChEMBL 导入数据补充
测量方法偏倚 IC50 占 57% 但条件依赖,Ki/Kd 仅占 32.5% 优先使用 Ki/Kd 子集
US 专利地域偏倚 仅策展 US 专利,EU/JP/CN 专利未覆盖 结合其他数据库补充

§7.2 标注质量评估

数据来源 质量等级 双人审核 实验条件详情 文献溯源
BindingDB 期刊策展 ⭐⭐⭐⭐⭐ ✅ 初审 + 复核 ✅ 温度/pH/缓冲液 ✅ PubMed ID
BindingDB 专利策展 ⭐⭐⭐⭐ ✅ 初审 + 复核 ❌ 无 ✅ 专利号
ChEMBL 导入 ⭐⭐⭐⭐ ChEMBL 流程 ⚠️ 部分有 ✅ PMID/DOI
PubChem 导入 ⭐⭐⭐ 提交者自报 ⚠️ 部分有 ✅ AID

§7.3 泛化性讨论

场景 失效风险 证据
预测全新靶点的配体 高 — Cold Protein 场景 CI 下降 0.15-0.25 Dual-Encoder Fusion 研究 (BMC Bioinformatics 2026)
预测全新骨架化合物 中 — Cold Drug 场景 CI 下降 0.05-0.10 同上
跨物种迁移 高 — 非人源靶点数据不足 DrugForm-DTA 需过滤非人源蛋白
跨亲和力类型迁移 高 — Ki 训练的模型不能直接预测 IC50 物理含义不同
时间泛化 中 — 新靶点/新骨架随时间出现 Temporal split 评估显示性能下降

§7.4 伦理考量

  1. 数据公开性:BindingDB 致力于将药物发现的实验数据公开化,减少学术与商业界的信息不对称
  2. 专利数据策展的伦理基础:US 专利是公开文献,策展不涉及知识产权侵犯
  3. AI 生成药物的合规性:基于 BindingDB 训练的 AI 模型预测的新化合物需经过实验验证和监管审批
  4. 数据质量声明:BindingDB 明确声明不保证任何特定数据的准确性,使用者需自行验证

§7.5 DAIMS 24 项数据就绪度评估

# 检查项 评分 说明
1 数据溯源 每条数据可溯源到 PubMed ID / 专利号
2 文档完整性 TSV/SDF 格式文档 + 网站使用指南 + FAQ
3 数据采集协议 半自动化双审流程文档化
4 预处理说明 标准化流程(SMILES 规范化等)
5 IAA (标注者一致性) ⚠️ 双人审核但无公开 IAA 指标
6 标注协议 策展指南文档化
7 伦理审查 无人体数据,无需 IRB
8 隐私保护 无个人/患者数据
9 知情同意 N/A 无人体受试者
10 IRB 批准 N/A 无人体研究
11 人口统计学 N/A 非患者数据集
12 缺失数据 ⚠️ ~2.6% 缺 UniProt ID;部分缺实验条件
13 数据质量控制 双人审核 + 用户纠错机制
14 纵向追踪 月度更新 + 季度存档
15 版本管理 月度版本号 + DOI 锁定存档
16 访问方式 免注册直接下载 + RESTful API
17 FAIR 合规 FAIRsharing 认证资源
18 元数据标准 UniProt + PubChem + ChEMBL 交叉引用
19 引用机制 DOI + BibTeX
20 真值质量 ⚠️ 实验测量值但跨实验变异大
21 公平性 N/A 非患者数据集
22 数据泄漏 ⚠️ 同一论文数据跨 train/test
23 偏倚 ⚠️ 专利发表偏倚 + 靶点偏倚
24 统计稳健性 ⚠️ 同一对多重测量冲突

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

评分解读良好 — BindingDB 在数据溯源(#1)、文档完整性(#2)、版本管理(#15)和 FAIR 合规(#17)方面表现突出,月度更新和 DOI 锁定存档确保了 AI 训练的可复现性。主要扣分项集中在标注者一致性指标缺失(#5)、跨实验测量变异(#20)、同一对多重测量冲突(#24)和专利数据发表偏倚(#23)。建议使用者优先使用 Ki/Kd 子集(跨实验可比性更好),实施按来源论文分组的数据划分(避免泄漏),并对专利数据子集单独评估偏倚影响。

§7.6 外部验证矩阵

验证集 规模 与 BindingDB 的关系 用途 代表性论文
DAVIS 25,772 对 外部验证(不同策展来源) 激酶-抑制剂特异性 Davis et al. Nat Biotechnol 2011
KIBA 117,657 对 统一 Ki+IC50 (KIBA score) 跨亲和力类型基准 Tang et al. JCIM 2014
PDBbind Refined 5,316 对 蛋白-配体复合物 3D 结构-based 验证 Liu et al. Bioinformatics 2017
CASF-2016 Core 285 对 PDBbind 高质量子集 打分函数评估 Su et al. JCIM 2019
LIT-PCBA ~15K 虚拟筛选基准 VS 富集因子评估 Tran et al. JCIM 2020
DrugBank 已批药物 ~4,500 药物 已上市药物-靶点对 药物重定位验证 DrugBank 6.0 (2024)

§8 基准性能与生态

§8.1 DTI/DTA 基准排行榜

截至 2026-07,基于 BindingDB 训练的代表性 DTI 模型性能

模型 架构 训练集 测试集 CI RMSE 划分类型 论文
DeepDTA CNN+CNN BindingDB_Kd DAVIS 0.629 0.674 Random Öztürk et al. Bioinformatics 2018
DeepPurpose (CNN) CNN+CNN BindingDB DAVIS 0.655 Random Huang et al. Bioinformatics 2021
GraphDTA GNN+CNN BindingDB_Kd DAVIS 0.681 Random Nguyen et al. Molecules 2021
DrugForm-DTA Chemformer+ESM-2 BindingDB (filtered) DAVIS 0.66 Random Comput Struct Biotechnol J 2025
Meta-DTA BindingDB→PDBbind BindingDB CASF-2016 1.44 (log) Cross-val JCIM 2024
Dual-Encoder Fusion ChemBERTa+GNN+ESM-2 BindingDB DAVIS/KIBA 0.87-0.90 Warm/Cold BMC Bioinformatics 2026
ChemFM-3B (预训练) Transformer BindingDB TDC test 0.55 Random 2025 preprint

§8.2 虚拟筛选基准

BindingDB 在 AI 驱动的虚拟筛选中的角色

基准 来源 规模 BindingDB 用途
TrueDecoy Nature Machine Intelligence 2025 ~10K 主动化合物来自 BindingDB + ChEMBL + PubChem
RandomDecoy 同上 ~10K 更接近真实 VS 场景
DUD-E Zihout et al. J Med Chem 2012 102 靶点 ZINC 化合物 + BindingDB 活性数据
LIT-PCBA Tran et al. JCIM 2020 15 靶点 文献挖掘活性数据

§8.3 关键论文

年份 论文 期刊 DOI
2025 BindingDB in 2024: a FAIR knowledgebase NAR 53:D1633-D1644 10.1093/nar/gkae1075
2016 BindingDB in 2015 NAR 44:D1045-D1053 10.1093/nar/gkv1072
2007 BindingDB: web-accessible database NAR 35:D198-D201 10.1093/nar/gkl999
2002 The Binding Database: Overview Biopolymers 61:127-141
2002 The Binding Database: Data Management Bioinformatics 18:130-139
2001 BindingDB: web-accessible molecular recognition J Combi Chem HTS 4:719-725 10.2174/1386207013330670

§8.4 使用统计

指标 2015 (NAR) 2025 (NAR) 趋势
月均会话 ~9,000 ~15,000+
页面/会话 ~6 ~7
下载量 “thousands/year” “tens of thousands/year”
引用次数 (NAR 2025) ~1,015 (Europe PMC 2026-06) ~4,500+ (Google Scholar)
数据量 1.1M 2.9M (论文时) → 3.24M (2026-08) ↑ 3×
专利数据 ~100K 1.32M ↑ 13×

§8.5 相关数据集

数据集 关系 互补性
ChEMBL 导入数据源 + 竞争 ChEMBL 覆盖更广(功能测定+ADMET),BindingDB 专利数据独家
PubChem BioAssay 导入数据源 PubChem 规模更大(HTS 原始数据),BindingDB 质量更高
PDBbind 互补 PDBbind 含 3D 复合物结构,BindingDB 规模更大
DUD-E 基准互补 DUD-E 提供 decoy,BindingDB 提供 active
ZINC 生态链接 ZINC 提供可购买化合物,BindingDB 提供活性数据
DrugBank 生态链接 DrugBank 提供药物信息,BindingDB 提供结合亲和力
UniProt 标识互通 UniProt 提供蛋白质序列,BindingDB 使用 UniProt ID
PDSP Ki 导入数据源 精神药物专属,BindingDB 通用

§8.6 生态快照

BindingDB 在药物发现数据生态中的位置:

          ┌──────────────────────────────────────────────┐
          │            药物发现数据生态                    │
          │                                              │
          │   ┌─────────┐     ┌──────────┐               │
          │   │ ChEMBL  │────→│          │               │
          │   │ 23M act │     │          │    ┌──────┐  │
          │   └─────────┘     │          │    │ ZINC │  │
          │                   │ BindingDB│───→│ 37B  │  │
          │   ┌─────────┐     │  3.24M   │    └──────┘  │
          │   │PubChem  │────→│  binding │              │
          │   │ 295M    │     │  data    │    ┌──────┐  │
          │   └─────────┘     │          │───→│DUD-E │  │
          │                   │          │    │102靶 │  │
          │   ┌─────────┐     │          │    └──────┘  │
          │   │ USPTO   │────→│          │              │
          │   │ patents │     └──────────┘    ┌──────┐  │
          │   └─────────┘          │         │TDC   │  │
          │                        │───→     │DTI   │  │
          │   ┌─────────┐          │         │基准  │  │
          │   │PDBbind  │          │         └──────┘  │
          │   │ 23K 3D  │←─────────┘                    │
          │   └─────────┘                                │
          └──────────────────────────────────────────────┘

§9 相关资源与引用

§9.1 官方资源

资源 链接
官方主页 https://bindingdb.org
数据下载 https://bindingdb.org/rwd/bind/chemsearch/marvin/Download.jsp
RESTful API 文档 https://bindingdb.org/rwd/bind/BindingDBRESTfulAPI.jsp
TSV 格式文档 https://bindingdb.org/rwd/bind/chemsearch/marvin/BindingDB-TSV-Format.pdf
SDF 格式文档 https://bindingdb.org/rwd/bind/chemsearch/marvin/BindingDB-SDfile-Specification.pdf
关于页面 https://www.bindingdb.org/rwd/bind/aboutus.jsp
亲和力统计 https://bindingdb.org/rwd/bind/BindingDB-Stats.pdf
UCSD 存档 https://library.ucsd.edu/dc/collection/bb03870458
BDBFind 扩展 Chrome Web Store / Firefox Add-ons
Webinar 系列 3 场(2025-02 / 2025-09 / 2026-02)
Wikipedia https://en.wikipedia.org/wiki/BindingDB

§9.2 BibTeX 引用

@article{liu2025bindingdb,
  title   = {BindingDB in 2024: a FAIR knowledgebase of protein-small molecule binding data},
  author  = {Liu, Tiqing and Hwang, Linda and Burley, Stephen K. and Nitsche, Carmen I. and Southan, Christopher and Walters, W. Patrick and Gilson, Michael K.},
  journal = {Nucleic Acids Research},
  volume  = {53},
  number  = {D1},
  pages   = {D1633D1644},
  year    = {2025},
  doi     = {10.1093/nar/gkae1075}
}

@article{gilson2016bindingdb,
  title   = {BindingDB in 2015: A public database for medicinal chemistry, computational chemistry and systems pharmacology},
  author  = {Gilson, Michael K. and Liu, Tiqing and Baitaluk, Michael and Nicola, George and Hwang, Linda and Chong, Jenny},
  journal = {Nucleic Acids Research},
  volume  = {44},
  number  = {D1},
  pages   = {D1045D1053},
  year    = {2016},
  doi     = {10.1093/nar/gkv1072}
}

@article{liu2007bindingdb,
  title   = {BindingDB: a web-accessible database of experimentally determined protein-ligand binding affinities},
  author  = {Liu, Tiqing and Lin, Yuhmei and Wen, Xin and Jorissen, Ross N. and Gilson, Michael K.},
  journal = {Nucleic Acids Research},
  volume  = {35},
  number  = {suppl_1},
  pages   = {D198D201},
  year    = {2007},
  doi     = {10.1093/nar/gkl999}
}

@misc{gilson2025bindingdb_dataset,
  title        = {BindingDB Dataset, July 1, 2025},
  author       = {Gilson, Michael K. and Liu, Tiqing and Hwang, Linda},
  year         = {2025},
  howpublished = {UC San Diego Library Digital Collections},
  url          = {https://doi.org/10.6075/J0VD6ZTZ}
}

§9.3 团队与科学顾问

角色 姓名 机构
PI Michael K. Gilson (Ph.D., M.D.) UC San Diego, Skaggs School of Pharmacy
首席开发者/策展员 Tiqing Liu (Ph.D.) UC San Diego
策展员 Linda Hwang UC San Diego
顾问 Stephen Burley Rutgers University / RCSB PDB
顾问 Carmen Nitsche CINforma Consulting
顾问 Christopher Southan Medicines Discovery Catapult, UK
顾问 Patrick Walters OpenADMET

§10 AI 使用声明卡

§10.1 数据集标识

字段
数据集名称 BindingDB
版本 202608(2026 年 8 月发布)
千方页面 /ai-ready-dataset/bindingdb/89
DOI 10.1093/nar/gkae1075(论文)/ 10.6075/J0VD6ZTZ(数据集)
发布状态 published

§10.2 许可证摘要

数据子集 许可证 商业使用 再分发 署名要求
BindingDB 策展数据 CC BY 4.0 ✅(需署名)
ChEMBL 导入数据 CC BY-SA 3.0 ✅(衍生须同许可证)
PubChem 导入数据 公共领域

§10.3 推荐工作流

1. 下载数据 → 下载全量 TSV (565 MB)
2. 加载与过滤 → pandas 加载 + 按物种/亲和力类型过滤
3. 标准化 → SMILES 规范化 + 亲和力转 pScale (log10)
4. 去重 → 同一 SMILES+UniProt 对取均值/最大值
5. 划分 → 按来源论文分组划分 (GroupShuffleSplit)
6. 特征化 → 化合物 ECFP/图 + 蛋白质 ESM-2 嵌入
7. 训练 → 回归模型 (MSE + CI 指标)
8. 验证 → DAVIS/KIBA 外部验证
9. 复现 → 引用 DOI 锁定的 UCSD 存档版本
返回 AI-Ready 数据集