4. 数据源识别与接入

在药物研发数据整合工程中,数据源识别与接入是整个数据流水线的起点。如果源头没有理清,后续的清洗、标准化和建模都会建立在不可靠的基础上。本节聚焦三类典型数据源:以活性数据为核心的 ChEMBL、以化合物结构与属性为核心的 PubChem、以三维结构为核心的 PDB,以及企业内部的实验记录系统(如电子实验记录本 ELN、LIMS 中的检测结果)。目标不是简单罗列接口,而是建立一套可复用的对接方法:先识别数据源的类型与边界,再确定接入方式,最后把外部数据与内部记录在实体层面关联起来。

一、先识别数据源的类型与边界

不同数据源在“数据形态”和“更新方式”上差异很大,接入策略必须据此区分。ChEMBL 是经过人工审编的活性数据库,核心实体是化合物(molecule)、靶点(target)、活性测定(assay)和活性值(activity),提供 REST API 与批量下载(如 chembl_34 的 SQLite/PostgreSQL dump)。PubChem 更偏向化合物与生物测定的公共仓库,包含 CID、SID、AID 等标识体系,适合做结构检索、属性补全和交叉引用。PDB 则以实验解析的三维结构为单位,核心是 PDB ID、链、配体、分辨率与方法,适合结构生物学场景。内部实验记录系统通常是事务型数据库或 ELN 导出文件,字段命名自由、单位不统一,但包含最关键的“本企业实测数据”。

识别阶段要回答三个问题:该源提供的主键是什么?它覆盖哪些实体?它的更新频率和许可约束如何?例如 ChEMBL 的活性记录以 activity_id 为主键,关联 molecule_chembl_id 与 target_chembl_id;PubChem 的化合物以 CID 为稳定标识;PDB 以 4 字符 PDB ID 为入口。内部系统往往以实验编号或样品编号为主键,需要额外建立映射。

公共数据库与内部实验记录系统的对接架构 公共数据库 ChEMBL 活性 / 靶点 / assay / molecule PubChem CID / SID / AID / 属性 PDB PDB ID / 链 / 配体 / 分辨率 接入方式 REST API 增量拉取 批量 dump 全量导入 文件解析(mmCIF / SDF) 内部实验记录系统 ELN 实验记录 实验编号 / 样品 / 条件 LIMS 检测结果 纯度 / 收率 / 分析值 内部化合物注册表 内部ID / SMILES / 批次 实体映射与整合层 InChIKey 结构匹配 跨库化合物对齐 靶点 / 序列映射 UniProt / 基因名 内部ID ↔ 公共ID 映射表持久化 统一整合数据集 化合物 · 靶点 · 活性 · 结构 · 内部实验记录 注:箭头方向表示数据流入方向;映射层负责跨源实体对齐与标识转换

二、接入方式的选择与实现

接入方式取决于数据量、更新频率和实时性要求。对于 ChEMBL,如果只需要特定靶点或特定化合物的活性数据,用 REST API 按条件查询更高效;如果需要全库分析,则下载官方 dump 导入本地 PostgreSQL 更合适。以下是一个 ChEMBL API 查询示例,按靶点获取活性记录:

GET https://www.ebi.ac.uk/chembl/api/data/activity.json
    ?target_chembl_id=CHEMBL203
    &standard_type=IC50
    &limit=100
    &offset=0

返回的 JSON 中每条记录包含 molecule_chembl_id、standard_value、standard_units、assay_chembl_id 等字段。接入时要注意分页(limit/offset)和速率限制,建议在客户端做重试与缓存。PubChem 的接入可以通过 PUG-REST 按 CID 获取属性,例如:

GET https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/2244/property/
    MolecularFormula,MolecularWeight,CanonicalSMILES/JSON

PDB 的接入通常以文件为单位,通过 https://files.rcsb.org/download/1ABC.cif 下载 mmCIF 文件,再用 Bio.PDB 或 gemmi 解析链、配体和分辨率。内部实验记录系统的接入则更依赖具体系统:如果 ELN 提供数据库只读账号,可以直接查询;如果只有导出文件,则需要约定 CSV/Excel 模板,固定列名和单位。

三、实体映射:把外部数据和内部记录连起来

接入的难点不在“取到数据”,而在“把同一实体在不同源中认出来”。化合物层面,最可靠的做法是用 InChIKey 做结构匹配。InChIKey 是 InChI 的固定长度哈希,前 14 位对应骨架连接性,后 10 位对应立体化学和同位素信息。内部注册表中的 SMILES 可以先转成 InChIKey,再与 ChEMBL、PubChem 中的 InChIKey 比对。如果内部记录只有化合物名称,则需要先做名称到结构的解析,这一步往往需要人工复核。

靶点层面,ChEMBL 使用 target_chembl_id,PDB 使用 PDB ID 和链标识,内部实验记录可能只写基因名或蛋白名。建议建立一张映射表,字段包括:内部靶点编号、基因名、UniProt AC、ChEMBL target ID、PDB ID、物种、备注。映射表一旦建立,后续接入就可以自动关联。

实践建议:在接入初期,先选取 20~50 个内部化合物和 3~5 个靶点做小规模映射验证。用 InChIKey 匹配成功率、靶点映射覆盖率作为判断指标。如果化合物匹配率低于 80%,说明内部结构数据质量或名称解析存在问题,应先修复再扩大接入范围。

四、对接流程中的关键检查点

一个可复用的对接流程通常包含以下检查点。第一,确认主键与标识体系:ChEMBL 用 chembl_id,PubChem 用 CID,PDB 用 PDB ID,内部系统用内部编号,四者不能混用。第二,确认单位与量纲:ChEMBL 活性值可能以 nM、uM 或 % 表示,内部实验记录可能用 mg/mL 或 % inhibition,接入时必须统一到同一单位体系并记录原始单位。第三,确认时间戳与版本:公共数据库会更新,内部记录也会修订,接入时要保留 source_version 和 fetch_time,便于追溯。第四,确认许可与合规:ChEMBL 和 PubChem 数据可公开使用,但内部实验记录涉及企业机密,接入后的存储和访问必须符合内部数据分级要求。

数据源 主键 推荐接入方式 关键映射字段 注意事项
ChEMBL activity_id / molecule_chembl_id REST API 或 dump 导入 InChIKey、target_chembl_id 注意 standard_value 单位与 assay 类型
PubChem CID PUG-REST 按 CID 查询 InChIKey、CanonicalSMILES 区分 CID 与 SID,避免混用
PDB PDB ID mmCIF 文件下载解析 UniProt AC、配体 CCD ID 注意分辨率与链选择
内部 ELN/LIMS 实验编号 / 样品编号 数据库只读查询或模板导出 内部化合物ID、内部靶点ID 单位不统一,需人工确认

五、一个可执行的对接示例

假设内部有一个化合物 INT-001,SMILES 为 CC(=O)Oc1ccccc1C(=O)O(阿司匹林)。对接步骤如下:第一步,用 RDKit 将 SMILES 转为 InChIKey,得到 BSYNRYMUTXBXSQ-UHFFFAOYSA-N。第二步,用该 InChIKey 查询 ChEMBL API,获取对应的 molecule_chembl_id 和活性记录。第三步,用同一 InChIKey 查询 PubChem,获取 CID 和分子属性。第四步,将内部实验记录中的活性值(例如某次酶抑制实验的 IC50)与 ChEMBL 中同靶点活性记录放在同一张表中,保留来源标识。第五步,把映射结果写入内部映射表,后续新化合物可以复用同一流程。

常见问题:内部实验记录中的化合物名称可能是研发代号而非化学名,直接做名称匹配容易失败。建议优先使用结构信息(SMILES 或 InChIKey)做匹配;如果只有名称,应建立人工审核队列,不要自动写入映射表。

数据源识别与接入不是一次性任务,而是持续维护的过程。公共数据库会更新版本,内部实验记录会新增批次,映射表也需要随之维护。把接入流程脚本化、把映射关系持久化、把异常记录留痕,才能让后续的数据整合和建模建立在稳定可靠的基础上。