3. 药物分子数据来源与获取
药物文本与分子联合建模的第一步,不是搭模型,而是把“药物—分子—文本”三者的原始数据拿到手。分子数据库承担的角色,是提供可被程序解析的结构标识(SMILES、InChI、InChIKey)、理化性质、靶点与活性记录,以及药物名称、适应证、作用机制等文本线索。本节围绕 ChEMBL、PubChem、DrugBank 三类主流数据源,讲清它们各自“有什么、适合取什么、怎么取”,并给出可复现的检索与下载路径。
三类数据库的定位差异
ChEMBL 由 EMBL-EBI 维护,核心是“化合物—靶点—活性”三元关系。它把文献中提取的生物活性数据(IC50、Ki、EC50 等)结构化,每条记录带标准类型、标准单位、标准值、靶点、测定描述和文献来源。做分子活性预测、靶点关联建模时,ChEMBL 是首选。它的主键是 chembl_id(如 CHEMBL25 为阿司匹林),化合物另有 canonical SMILES。
PubChem 由 NCBI 维护,覆盖面最广,偏向“化合物身份与属性”。它包含 PubChem Compound(结构)、PubChem Substance(提交物质)、PubChem BioAssay(生物测定)三个子库。PubChem 的强项是跨库交叉引用:一个 CID 可以关联到 ChEMBL、DrugBank、KEGG、PDB 等多个外部 ID,非常适合做 ID 映射与数据补全。它的主键是 CID(PubChem Compound ID)。
DrugBank 是药物导向的数据库,区分“已批准药物”和“实验性药物”,字段包含药物名称、CAS 号、UNII、靶点、酶、转运体、通路、相互作用、适应证文本。它的文本字段质量高,适合抽取药物说明、机制描述。注意 DrugBank 完整数据需注册并遵守其许可协议,学术使用通常可申请下载,商业使用受限。
检索与下载的实际操作路径
以 ChEMBL 为例,最直接的方式是使用其 Web 服务。按靶点检索活性数据,可先查靶点 ChEMBL ID,再拉取活性记录。例如查询 EGFR(CHEMBL203)的 IC50 数据,可访问:
https://www.ebi.ac.uk/chembl/api/data/activity.json
?target_chembl_id=CHEMBL203
&standard_type=IC50
&limit=1000
返回 JSON 中每条记录关注 molecule_chembl_id、canonical_smiles、standard_value、standard_units、assay_chembl_id、document_chembl_id。批量下载可改用 ChEMBL 官方 FTP 的 SQLite 或 MySQL 转储,避免逐页请求。下载后建议先按 standard_units 过滤,只保留 nM 或统一换算,再按 standard_relation(=、>、<)决定是否纳入。
PubChem 推荐用 PUG-REST 接口。按名称取 CID:
https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/name/aspirin/cids/JSON
拿到 CID 后取属性,可一次请求多个字段:
https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/2244/property/
CanonicalSMILES,IsomericSMILES,InChIKey,MolecularFormula,
MolecularWeight,XLogP/JSON
若要做 ID 映射,可用 PubChem 的 xrefs/RegistryID 或 synonyms 端点,把 CID 与 ChEMBL、DrugBank ID 关联起来。批量场景下,PubChem 也提供 FTP 上的 Compound 与 BioAssay 全量文件。
DrugBank 的获取以注册下载为主,下载后通常得到 XML。解析时重点提取 drug 节点下的 drugbank-id、name、cas-number、unii、smiles、inchi-key,以及 targets、enzymes、indication、mechanism-of-action 等文本字段。这些文本正是后续与分子结构做联合建模时的“文本侧”输入。
跨库对齐与数据清洗要点
三个库的 ID 体系不同,直接按名称合并会因同义词、盐型、立体异构而产生错误。稳妥做法是:以 InChIKey 的前 14 位(骨架层)做初筛,再结合完整 InChIKey 判断立体与盐型差异。对于同一药物的不同盐型,若建模目标是母体分子,应统一去盐后再生成标准 SMILES。
清洗时需处理几类典型问题:一是活性值单位不统一,需全部换算为 nM;二是同一化合物对同一靶点存在多条测定,需按 assay 或文献去重,或取中位数;三是 SMILES 缺失或非法,需用 RDKit 校验并标准化;四是文本字段含 HTML 标签或转义字符,需先清洗再入模型。
一个可复用的最小数据表结构
把三个库的数据落到本地后,建议至少维护三张表,并用统一键关联。分子结构表以 inchi_key 为主键,字段包括 canonical_smiles、molecular_formula、molecular_weight、xlogp、chembl_id、pubchem_cid、drugbank_id。活性表以 activity_id 为主键,字段包括 inchi_key、target_chembl_id、standard_type、standard_value_nm、assay_id、document_id。文本表以 inchi_key 关联,字段包括 drug_name、indication、mechanism、target_text。
这样组织后,分子侧可直接从 SMILES 生成指纹或图结构,文本侧可从 indication、mechanism 抽取嵌入,活性侧提供监督标签,三者通过 InChIKey 对齐,形成联合建模的输入底座。实际执行时,先用小规模样本(如 50 个药物)跑通全流程,确认 ID 映射率与字段完整率,再扩展到全量下载,能显著降低返工成本。