2. 药物重定位知识图谱的数据源盘点
构建药物重定位知识图谱,第一步不是写代码,而是把“原料”摸清楚。知识图谱的节点(药物、疾病、基因、靶点、副作用、临床试验)和边(治疗、关联、抑制、诱发、研究)都来自外部数据源,数据源的内容边界、标识体系、许可条款和获取方式,直接决定了后续实体对齐、关系抽取和可发布性的上限。本节按“内容—标识—许可—获取”四个维度,盘点 DrugBank、CTD、SIDER、PubChem、ClinicalTrials.gov、PubMed 六个核心数据源,并给出可落地的获取与入库思路。
六个核心数据源的内容与定位
DrugBank 是药物本体与药物靶点信息的主干源。它同时提供药物结构化记录(通用名、商品名、CAS、适应症、药理作用、靶点、酶、转运体、相互作用)和 DrugCard 文本。对重定位最有价值的是 drug–target、drug–enzyme、drug–transporter 三类关系,以及“适应症”字段——它既是已知适应症,也是新适应症推理的起点。DrugBank 使用 DrugBank ID(如 DB00619,伊马替尼)作为主键,并交叉引用 PubChem CID、ChEMBL、UniProt、KEGG 等。
CTD(Comparative Toxicogenomics Database)的核心价值在于“化学物—基因—疾病”三元关系,且每条关系都标注了证据来源与推断类型(marker/mechanism、therapeutic、diagnostic 等)。它把化学物、基因、疾病、通路、暴露事件组织成可追溯的关联网络,特别适合做“药物—靶点—疾病”路径发现。CTD 使用 MeSH 标识化学物与疾病,基因用 NCBI Gene ID。
SIDER 是药物副作用专用库,从药品说明书抽取“药物—副作用”关系,并保留副作用的发生频率(frequency)与 MedDRA 术语层级。在重定位中,副作用既是安全性约束,也是潜在的“副作用相似性”信号——两药副作用谱相似,可能共享靶点或通路。SIDER 用 PubChem CID 与药物名称标识药物,副作用用 MedDRA 概念 ID。
PubChem 是化合物结构与生物活性的公共仓库,包含 Compound、Substance、BioAssay 三大子库。它提供 CID 主键、SMILES/InChI 结构、理化性质,以及 BioAssay 中的活性数据(如 IC50、EC50)。在知识图谱中,PubChem 主要承担“结构标准化”和“活性证据补充”的角色,是把不同来源药物名称统一到同一化学实体的关键枢纽。
ClinicalTrials.gov 提供临床试验注册信息:研究编号(NCT ID)、干预措施、适应症、研究阶段、入组人数、状态、主要终点。对重定位而言,它反映“某药正在被试验用于某新适应症”的实时证据,是验证假设、评估竞争格局的重要来源。其数据以 JSON/XML 形式批量提供,也可通过 API 按条件检索。
PubMed 是生物医学文献文摘库,提供 PMID、标题、摘要、MeSH 主题词、作者与期刊信息。它是关系抽取的文本来源:从摘要中抽取“药物—疾病”“药物—基因”共现或语义关系,可补充结构化数据库未覆盖的新发现。PubMed 通过 E-utilities 提供检索与批量下载。
标识体系与实体对齐
六个源各用一套主键:DrugBank 用 DB ID,PubChem 用 CID,CTD 用 MeSH,SIDER 用 CID 与 MedDRA,ClinicalTrials.gov 用 NCT,PubMed 用 PMID。要把它们连成一张图,必须建立“同一药物”的映射。实践中常用三级对齐策略:第一级用结构标识(InChIKey)对齐 PubChem 与 DrugBank;第二级用交叉引用字段(DrugBank 记录中的 PubChem CID、ChEMBL ID)做精确匹配;第三级用名称规范化(去盐、去剂量、统一大小写)加人工审核处理剩余歧义。例如伊马替尼在 DrugBank 为 DB00619,在 PubChem 为 CID 5291,在 CTD 中对应 MeSH 的 Imatinib,三者通过 InChIKey 与交叉引用可自动打通。
许可与合规边界
许可是知识图谱能否对外发布、能否商用的硬约束。DrugBank 采用 CC BY-NC 4.0,学术研究免费,商业用途需购买授权;SIDER 为 CC BY-NC-SA 4.0,同样限制商用且要求相同方式共享;CTD 免费但要求引用;PubChem 与 ClinicalTrials.gov 属公共领域,使用最宽松;PubMed 文摘可自由使用,但全文版权归出版商。工程上建议在图中为每条边保留 source 与 license 属性,发布时按许可过滤,避免把 NC 数据混入商业产品。
获取方式与入库示例
不同源的获取方式差异较大,下面给出可直接参考的获取片段(示例参数,非实测结果):
# DrugBank:官网下载 XML 全量包(需注册学术账号)
# 解压后得到 drugs.xml,用 lxml 解析 drug 节点
# PubChem:按 CID 批量取属性
curl "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/5291/property/CanonicalSMILES,InChIKey/JSON"
# ClinicalTrials.gov:按干预措施检索
curl "https://clinicaltrials.gov/api/v2/studies?query.intr=imatinib&pageSize=50"
# PubMed:检索并取摘要
curl "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=imatinib+AND+repurposing&retmode=json"
入库时建议统一为三元组表:(head_id, head_type, relation, tail_id, tail_type, source, evidence, license)。以“伊马替尼—治疗—胃肠道间质瘤”为例,head 为 DB00619,relation 为 treats,tail 为 CTD 中的 MeSH 疾病 ID,source 标 DrugBank,evidence 保留原始适应症文本,license 标 CC BY-NC 4.0。这样既支持图查询,也支持合规审计。
盘点数据源的最终产出,是一份“源—内容—主键—许可—获取方式”的对照清单,以及一套可执行的标识对齐规则。有了这份底账,后续的抽取、融合与推理才有稳定的输入,知识图谱才不会在实体对齐阶段就失去可追溯性。