第2章:癌症药物领域基础
好了,开始进入干货环节。这一章我带你走一遍癌症药物领域的基础地图。说白了,搞知识图谱之前,你得先知道你要描述的世界长什么样。癌症类型、药物分类、常用数据库——这三块是骨架,后面的建模、抽取、融合全得靠它们撑起来。
2.1 癌症类型:不是一种病,是几百种
很多人以为“癌症”是一种病。其实它背后是几百种疾病的总称。按发生部位来分,最常见的也就十几种,但占比超过80%。
我个人习惯把癌症类型先按解剖部位建模,再细分亚型。比如肺癌,就有小细胞和非小细胞两大类。为什么不直接建模成“肺癌”?因为治疗方案完全不同——你想想看,小细胞肺癌首选化疗,非小细胞肺癌早期能手术,晚期则看基因突变类型。
| 常见癌症类型 | 发生部位 | 关键特点 |
|---|---|---|
| 肺癌 | 肺、支气管 | 小细胞/非小细胞,驱动基因突变常见 |
| 乳腺癌 | 乳腺 | 激素受体阳性/阴性,HER2状态分型 |
| 结直肠癌 | 结直肠 | MSI状态、RAS突变影响用药选择 |
| 胃癌 | 胃 | HER2阳性和MSI-H亚型有靶向药 |
| 肝癌 | 肝脏 | 多与病毒性肝炎相关,TKI靶向药为主 |
2.2 药物分类:化疗、靶向、免疫三足鼎立
搞清楚了癌症类型,下一步就是药物。我把它分成三大类——化疗药、靶向药、免疫药物。这三类的机制差别很大,在知识图谱里的关系建模也完全不同。
2.2.1 化疗药:无差别攻击
化疗药是经典老药,核心机制是干扰细胞分裂,对快速分裂的细胞一视同仁。所以你懂为什么副作用大,掉头发、恶心、骨髓抑制。
我在项目中遇到过一件事:把化疗药的实体简单地跟所有癌症类型都连上“治疗”关系。结果知识图谱查询时,一个化疗药关联了上百种癌症,查询路线图成了一团乱麻。后来我加了适应症标签和临床指南分级两个属性,才把关系梳理清楚。
2.2.2 靶向药:精准打击
靶向药就聪明多了。它针对的是癌细胞特有的基因突变或异常蛋白——比如EGFR突变、ALK融合、HER2过表达。靶向药只对携带特定生物标志物的亚型有效。
你想想看,如果一个靶向药的靶点是EGFR,你还能让它跟非小细胞肺癌的所有亚型都连上关系吗?不行。只有EGFR突变阳性亚型才能匹配。这就需要在知识图谱里加入生物标志物节点,用“药物-靶点-生物标志物-组织类型”构建关联链路。
2.2.3 免疫药物:激活自身免疫
免疫药物是近年最火的方向——PD-1/PD-L1抑制剂、CTLA-4抑制剂、CAR-T细胞疗法。它的核心逻辑不是直接杀癌细胞,而是解除肿瘤的免疫逃逸。机制完全不同,副作用也独特(免疫相关不良事件)。
我在建免疫药物知识图谱时,特别区分了单药和联合用药两个维度。PD-1抑制剂单药只在特定瘤种中有效,但与化疗、抗血管生成药联用时,适应症范围就大大扩展了。
| 类别 | 机制 | 代表药物 | 副作用特点 |
|---|---|---|---|
| 化疗药 | 抑制有丝分裂 | 紫杉醇、顺铂 | 骨髓抑制、脱发 |
| 靶向药 | 阻断特定信号通路 | 奥希替尼、曲妥珠单抗 | 皮疹、腹泻 |
| 免疫药物 | 激活免疫检查点 | 帕博利珠单抗 | 免疫相关性炎症 |
2.3 常用数据库:信息不要靠直觉,要靠结构化数据
为什么要先搞清楚数据库?因为在知识图谱构建中,数据源质量决定了图谱的可信度。我这些年跟过不少项目,踩得最深的坑就是把非结构化文献直接塞进图谱——结果一堆矛盾关系,一个药物在A文献说有效,B文献说无效,根本没法用。
所以我的建议是:先用权威结构化数据库作为种子数据,再逐步补充文献信息。
2.3.1 DrugBank
DrugBank是药物知识图谱的王牌。它把药物、靶点、通路、副作用之间的关系都做成了结构化数据,而且有严格的审核机制。我通常用它来构建药物-靶点-基因这组核心三元组。
举个例子,拉取DrugBank数据一般这样操作:
# 下载全量XML文件(约2GB)
wget https://go.drugbank.com/releases/latest/downloads/all-database.xml
# 用Python解析
import xml.etree.ElementTree as ET
tree = ET.parse('all-database.xml')
root = tree.getroot()
ns = {'db': 'http://www.drugbank.ca'}
for drug in root.findall('db:drug', ns):
drugbank_id = drug.findtext('db:drugbank-id', '', ns)
name = drug.findtext('db:name', '', ns)
# 进一步提取靶点关系...
2.3.2 CTD(Comparative Toxicogenomics Database)
CTD的核心强项是化学物-基因-疾病关系。它把药物与靶基因、疾病之间的关联做了精细的标注——是“治疗”关系,还是“毒性”关系,还是仅仅“推测”关系。这对知识图谱的关系类型选择很有参考价值。
我曾经用CTD的数据来验证DrugBank中提取的“药物-疾病”关系。比如甲氨蝶呤,DrugBank标明用于类风湿性关节炎和多种癌症,在CTD里能找到对应的治疗性关联标注,两边一致了,我才敢把这组三元组放进知识图谱。
2.3.3 ClinicalTrials.gov
这是个临床试验注册库。它不是直接告诉你“什么药治什么病”,而是告诉你有多少试验在验证这种组合。它的数据量极大——超过45万个试验,而且每天都在增加。
我的用法是这样的:用ClinicalTrials.gov来确认“药物-适应症”关系的强度。如果一个药物针对某适应症有几十个正在进行的临床试验,那这条关系就是高置信度的。反之,如果只查到两个10年前的试验,那可靠性就要打折扣。
| 数据库 | 核心实体 | 关系类型 | 更新频率 | 访问方式 |
|---|---|---|---|---|
| DrugBank | 药物、靶点、通路 | 靶点、机制、副作用 | 每两年大版本更新 | XML下载 / REST API |
| CTD | 化学物、基因、疾病 | 治疗、毒性、推断关联 | 每月更新 | 官网页面对接 / TSV下载 |
| ClinicalTrials | 试验、干预、条件 | 干预-条件关系 | 每日更新 | API v2 / 每日快照 |
2.4 这一章的知识体系总览
为了让你更清楚地看到这三部分之间的内在联系,我画了一个结构图。它展示了癌症类型、药物分类和数据库如何构成知识图谱的顶层骨架:癌症类型通过生物标志物关联到靶向药物,化疗药通过适应症直接与癌症类型挂钩,数据库则为所有这些实体和关系提供数据来源。
嗯,这张图你得记住。后续建图时,这个三层结构就是你的导航。癌症类型是节点,药物是节点,数据库是数据源,关系线就是治疗、靶向、副作用那些语义通路。
这一章的内容就到这里。核心就三件事:癌症类型分清楚、药物分类记明白、数据库会用。等你自己去拉一次DrugBank的XML,再配一组CTD的TSV数据,上手就很快了。