2. 筛选库的数据来源与获取

构建虚拟筛选库的第一步不是写代码,而是明确“化合物从哪里来”。不同数据库在覆盖范围、数据质量、可编程接口和许可条款上差异很大,选错来源会直接导致后续过滤、去重和对接结果不可复现。本节围绕四类最常用的化合物数据源——ZINC、PubChem、ChEMBL、DrugBank——说明它们各自适合承担什么角色,以及如何通过 API 或批量文件把数据真正取到本地。

四类数据源的定位差异

这四个库并非互相替代,而是处在筛选流程的不同环节。理解它们的定位,比记住网址更重要。

  • ZINC:专为虚拟筛选设计,提供“可直接对接”的 3D 构象与质子化状态,化合物按 purchasable、drug-like、lead-like、fragment 等子集划分。它解决的是“拿来就能算”的问题,适合作为筛选库的主干来源。
  • PubChem:覆盖面最广的公共化学资源,包含化合物、物质、生物测定等记录,规模达亿级。它适合做广谱检索、补充稀有结构和获取生物活性关联,但原始记录需自行清洗。
  • ChEMBL:以人工审编的生物活性数据为核心,每条活性值都关联靶点、测定类型和文献来源。它适合构建“已知活性参照集”,用于验证筛选方法或做靶点富集分析,而不是直接充当大规模筛选库。
  • DrugBank:聚焦已上市药物、临床试验药物和药物靶点,条目精、注释深。它适合构建阳性对照集、做药物重定位分析,但许可限制严格,商业使用需授权。

一个常见的组合策略是:以 ZINC 的 drug-like 子集作为筛选主体,用 ChEMBL 提取目标靶点的已知活性化合物作为阳性对照,用 DrugBank 补充已上市药物做重定位评估,用 PubChem 在需要时补充特定骨架或罕见结构。

API 与批量下载:两条获取路径

获取数据有两条路径:按需查询的 API 和一次性拉取的批量文件。前者灵活、数据新,后者稳定、适合大规模建库。

PubChem 的 PUG-REST 接口适合按标识符或条件取数。例如按 CID 获取化合物的规范 SMILES,可直接构造请求:

# 获取 CID 2244(阿司匹林)的规范 SMILES
https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/2244/property/CanonicalSMILES/TXT

# 按靶点相关活性筛选并返回 CSV
https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/target/PTGS1/cids/CSV

批量场景下,PubChem 提供 FTP 形式的按需下载,可按 CID 范围或按分类文件获取 SDF、SMILES 等格式,避免逐条请求触发限流。

ChEMBL 的 Web Services以资源路径组织,适合按靶点或活性类型取数:

# 获取靶点 CHEMBL230 的活性数据(JSON)
https://www.ebi.ac.uk/chembl/api/data/activity?target_chembl_id=CHEMBL230&format=json

# 获取该靶点下活性值优于 100 nM 的化合物
https://www.ebi.ac.uk/chembl/api/data/activity?target_chembl_id=CHEMBL230&standard_value__lte=100&standard_units=nM

ChEMBL 同时提供完整的 SQL 数据库转储和定期发布的 SDF 文件,适合需要全量活性记录的场景。

ZINC 主要通过其网站按子集下载预生成的 3D 文件,格式包括 mol2、SDF、SMILES 等,并按 tranche 分片组织。下载时需注意选择正确的子集和质子化状态,否则后续对接的构象基础会不一致。

DrugBank 的开放版本提供结构文件下载,完整版需注册并遵守其许可协议,API 访问通常面向授权用户。使用前必须确认许可范围。

数据许可与版本管理

数据许可是建库中最容易被忽视、后果却最严重的一环。ZINC 采用较宽松的开放许可,适合学术与多数商业前期研究;PubChem 数据多为公共领域,但部分贡献者数据可能有附加条款;ChEMBL 采用 CC BY-SA 类许可,衍生数据需注意共享要求;DrugBank 的完整数据为专有许可,商业使用必须获得授权。建库时应记录每个来源的许可类型,并在库的元数据中标注,避免后续合规风险。

版本管理同样关键。数据库会持续更新,同一化合物在不同版本中的记录、活性值甚至结构都可能变化。若筛选结果需要复现,必须固定数据版本。建议在库的元数据中记录:来源库名称、版本号或下载日期、子集名称、获取方式(API 或批量文件)、过滤条件。这样当结果出现差异时,可以快速定位是数据版本变化还是方法变化所致。

实践建议:为每个数据源单独保存原始下载文件,不要直接覆盖。命名可采用“来源_版本_日期_子集”的格式,例如 zinc_2024_druglike_20250115.smi,便于追溯。

从获取到入库的衔接

数据取到本地后,通常先统一为 SMILES 或 SDF 格式,再做标准化(去盐、中和电荷、统一互变异构体),然后进入去重和过滤环节。不同来源的同一化合物可能以不同盐型或质子化状态出现,若不先标准化,去重会失效,筛选库中会混入大量重复结构。

下面这张图概括了四类数据源在筛选库构建中的角色分工、获取方式与后续处理关系,可作为建库时的来源选择参考。

四类化合物数据源的角色分工与获取路径 ZINC 筛选库主干 3D构象 / 质子化状态 PubChem 广谱补充 亿级记录 / 生物测定 ChEMBL 活性参照集 审编活性 / 靶点关联 DrugBank 阳性对照 / 重定位 上市药物 / 靶点注释 网站按子集下载 mol2 / SDF / SMILES PUG-REST + FTP 按CID/靶点查询 Web Services + SQL转储 按靶点/活性值筛选 注册下载 / 授权API 需确认许可范围 格式统一与标准化 去盐 · 中和电荷 · 统一互变异构体 · 统一SMILES/SDF 去重与过滤 InChIKey去重 · 类药性过滤 · 结构警报剔除 筛选库(含来源与版本元数据)

图中从四个来源出发,经标准化、去重过滤,最终汇入筛选库,并在库中保留来源与版本信息。这条链路说明:数据获取不是孤立的一步,它决定了后续所有处理的上限。来源选得准、版本记得清、许可理得明,筛选库才具备可复现和可合规使用的基础。