2. 分子图的数据来源与获取
分子图数据工程的第一步不是建模,而是把“分子从哪来、以什么形式来、能不能用”这三件事弄清楚。分子图通常表示为 G = (V, E):原子是节点,化学键是边,节点和边各自携带特征(元素类型、电荷、杂化、芳香性、键级、立体标记等)。因此,数据源的质量直接决定了后续特征工程与表示学习的上限。本节围绕常见分子数据库、下载接口、许可限制和真实项目采集流程展开。
一、常见分子数据库的定位差异
PubChem、ChEMBL、ZINC 是最常用的三类来源,但它们的定位并不相同,混用前必须理解差异。
- PubChem:由 NCBI 维护,是覆盖面最广的公共化学信息库,包含化合物、物质和生物测定三大子库。它适合做结构检索、属性查询和活性数据补充,但同一化合物可能存在多条记录(不同盐型、立体异构、来源),需要按 CID 去重与规范化。
- ChEMBL:由 EMBL-EBI 维护,核心是“药物化学活性数据”,以靶点—化合物—活性值(如 IC50、Ki、EC50)为核心组织。它适合构建“分子—靶点—活性”监督信号,但活性值单位、测定条件、置信度差异大,必须做标准化与筛选。
- ZINC:面向虚拟筛选的可购买化合物库,强调“可获取、可购买、已去重、已生成多种质子化/互变异构形式”。它适合做大规模筛选与生成模型训练,但活性标签通常缺失。
此外还有 DrugBank(药物与靶点)、PDB(大分子结构)、BindingDB(结合亲和力)、MoleculeNet(基准数据集)等,实际项目常按“结构来源 + 标签来源”组合使用。
二、下载接口与获取方式
三类库都提供批量下载与程序化接口,工程上应优先使用可复现的脚本化方式,而不是手工点击。
# PubChem:按 CID 批量获取 SDF(3D/2D 可选)
https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/2244,5090/SDF?record_type=2d
# ChEMBL:REST API 获取某靶点下的活性记录
https://www.ebi.ac.uk/chembl/api/data/activity?target_chembl_id=CHEMBL203&format=json
# ZINC:按子集下载(如 drug-like、lead-like)
https://files.docking.org/zinc22/2d/ # 按 tranche 分片下载
PubChem 的 PUG-REST 适合小批量精确查询,PUG-View 适合属性获取;ChEMBL 提供 REST API 与批量 FTP 转储(chembl_XX_mysql.tar.gz、chembl_XX_sqlite.tar.gz),大批量场景应下载转储而非逐条请求;ZINC 以分片文件形式发布,需按 tranche 规则拼接。无论哪种方式,都应记录下载日期、版本号、URL 与校验和,保证数据可追溯。
三、数据许可与使用限制
许可是分子数据工程中最容易被忽视、却最容易在发布或商用阶段出问题的环节。
| 数据源 | 典型许可 | 关键限制 |
|---|---|---|
| PubChem | 公共领域(部分子集有单独条款) | 需注明来源;部分第三方贡献数据可能有额外限制 |
| ChEMBL | CC BY-SA 3.0 | 衍生数据需同许可共享,商用需评估 |
| ZINC | 免费学术使用 | 商用或再分发需确认条款,部分子集来自供应商 |
实践原则是:先确认许可,再决定是否入库;对 CC BY-SA 类数据,若与自有数据混合,需明确区分“原始数据”与“衍生数据”的边界;对外发布模型或数据集时,保留来源清单与许可声明。
四、真实项目中的数据采集流程
一个可复现的采集流程通常包含六个环节:需求定义、来源选择、批量获取、清洗规范化、去重与标签对齐、版本固化。下面给出一个面向“靶点活性预测”的示例流程,参数为教学假设值。
- 需求定义:目标为“预测化合物对某激酶的抑制活性”,需要 SMILES 与 IC50 标签,规模约 1 万条。
- 来源选择:结构来自 PubChem,活性来自 ChEMBL,按 InChIKey 对齐。
- 批量获取:ChEMBL 下载 SQLite 转储,筛选
standard_type = 'IC50'、standard_units = 'nM'、standard_relation = '='的记录。 - 清洗规范化:用 RDKit 解析 SMILES,去除盐、标准化电荷、生成标准 InChIKey。
- 去重与标签对齐:按 InChIKey 去重,同一分子多条活性取中位数或几何均值,并记录离散度。
- 版本固化:输出
dataset_v1.parquet,附带来源、日期、过滤条件与统计摘要。
五、采集流程的可视化
下图把上述流程中的关键对象、输入输出与判断关系集中呈现,便于对照执行。
六、工程实践中的关键判断
采集完成后,至少要做三项检查:一是结构有效性,统计 RDKit 解析失败率,通常应低于 1%;二是标签一致性,检查同一分子多条活性的离散程度,若数量级差异过大应剔除或降权;三是覆盖度,确认目标靶点、化学空间与预期分布是否匹配。只有这三项通过,数据才适合进入分子图构建与表示学习阶段。
总结来说,分子图数据获取的核心是:理解各库定位差异,用脚本化接口保证可复现,用许可条款约束使用边界,用清洗、去重与版本固化保证数据可追溯。这四件事做好,后续的图构建与模型训练才有可靠基础。