信息速览

Pharos — 可成药基因组靶点知识库 AI-Ready Wikipedia
INFOBOX
| 数据集名称 | Pharos |
| 英文全称 | Pharos: Illuminating the Druggable Genome(IDG 计划靶点知识库,底层数据库 TCRD) |
| 别名/简称 | Pharos、TCRD/Pharos、IDG KMC Knowledgebase、Pharos 2023 |
| 疾病分类 | 多疾病域覆盖 13,704 种疾病关联(ICD-11:02 肿瘤 / 05 内分泌、营养或代谢疾病 / 08 神经系统疾病 / 11 循环系统疾病 / 12 呼吸系统疾病等;详见 §2.1) |
| SNOMED CT | 363346000 Malignant neoplastic disease / 73211009 Diabetes mellitus / 195967001 Asthma / 26929004 Alzheimer’s disease / 49436004 Atrial fibrillation(详见 §2.1b) |
| 数据模态 | 蛋白靶点注释、小分子生物活性、疾病/表型关联、蛋白-蛋白相互作用、基因表达、GWAS、文本挖掘、生物医学本体 |
| AI 任务类型 | 靶点优先级排序、可成药性预测、TDL 四级分类、靶点-疾病关联预测、药物重定位、富集分析、知识图谱构建 |
| 样本总数 | 20,412 个人类蛋白靶点 / 339,220 个配体 / 13,704 种疾病 / 79 个数据源 |
| 数据大小 | MySQL 全库 SQL dump(latest.sql.gz,大小以官方下载页为准) |
| 数据格式 | MySQL dump(.sql.gz)/ GraphQL API(JSON)/ 网页查询构建器导出 CSV |
| 许可证 | 开放获取;底层数据遵循各原始来源许可,平台代码开源(NCATS GitHub) |
| 访问级别 | 开放(无需注册,无 DUA) |
| DUO 标签 | NRES(无限制;不含人类受试者个体数据) |
| 语言 | 英文 |
| 首发日期 | 2017-01(NAR 45(D1) 数据库专刊,2016-11 线上发表) |
| 最后更新 | 2022-11(TCRD 6.13.4 / Pharos v3.14.1,Pharos 2023 论文时点) |
| 发布机构 | NIH NCATS 牵头 IDG 知识管理中心(KMC):NCATS、新墨西哥大学、迈阿密大学、西奈山伊坎医学院、EMBL-EBI、哥本哈根大学 |
| 官方主页 | https://pharos.nih.gov/ |
| 下载地址 | http://juniper.health.unm.edu/tcrd/download/ |
| DOI | 10.1093/nar/gkw1072(2017 初版论文)/ 10.1093/nar/gkac1033(2023 更新论文) |
| 引用次数 | 226+(Europe PMC,截至 2026-08,初版论文 gkw1072) |
| AI 就绪度评分 | ⭐⭐⭐(3/5)— 数据本身以 ML-ready 格式组织、GraphQL API 灵活;扣分项:需自行通过 SQL/GraphQL 提取转换、无官方训练划分、无一键预处理脚本、TDL 标签随版本漂移 |
| 页面状态 | published |
§0 E-E-A-T 与审核声明
医学审核:[千方病案医学编辑部] 交叉审核:§2 医学背景(可成药基因组与 TDL 分类体系、ICD-11/SNOMED CT 映射)、§7 偏倚分析。
数据工程审核:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。Pharos 数据开放获取、无需注册,但其整合的底层数据来自 ChEMBL、UniProt、DrugCentral 等多个原始来源,再分发与商用前需核对各原始来源的许可条款;DUO 标签仅供参考,具体使用限制以数据集官方说明(pharos.nih.gov/help)为准。
§1 数据集概览
§1.0 30 秒速览
这是什么? Pharos 是美国 NIH Common Fund「Illuminating the Druggable Genome(IDG,照亮可成药基因组)」计划的官方靶点知识库(pharos.nih.gov)。它把 20,412 个人类蛋白靶点、339,220 个配体和 13,704 种疾病关联整合进一个统一界面与数据库(TCRD),并给每个蛋白贴上 Tclin(已批准药物靶点)、Tchem(高活性小分子已知)、Tbio(生物学研究充分)、Tdark(几乎无人研究)四级"开发水平"标签——名字里的 Pharos 正是古代灯塔,寓意照亮那些从未被研究过的"暗"蛋白。
为什么重要? 生物医学研究高度集中于少数"明星"蛋白——约 10% 的人类蛋白吸走了约 75% 的研究关注,而剩下约三分之一的人类蛋白组(Tdark)几乎无人问津,新药靶点因此长期在"灯柱下找钥匙"。Pharos 用统一的知识分类把这片黑暗区域地图化,是靶点优先级排序、可成药性预测和药物重定位研究的基础数据设施。
我能用它做什么? 三类典型用途:一是做监督学习——用 Tclin/Tchem 标签训练可成药性分类器(如 PINNED 模型测试集 AUC 0.950);二是做靶点-疾病关联挖掘与知识图谱;三是为"暗"靶点研究选题——直接下载 5,679 个 Tdark 蛋白清单,结合家族、表达与疾病关联筛选值得实验验证的候选。
§1.1 摘要
Pharos 于 2017 年随 NAR 数据库专刊论文上线(Nguyen et al., Nucleic Acids Research 2017, 45(D1):D995–D1002, DOI: 10.1093/nar/gkw1072),是 IDG 知识管理中心(KMC)面向公众的 Web 界面与 API;其底层数据库为 TCRD(Target Central Resource Database),由新墨西哥大学团队维护,历经 v3.0 → v6.7 → v6.13.4 多代演进,当前整合 79 个数据源。数据整合策略是"按值导入或按引用外联",对每个靶点、配体、疾病做跨源标识符归一,并按家族特异的活性阈值(GPCR ≤100 nM、激酶 ≤30 nM、离子通道 ≤10 μM、其他 ≤1 μM)判定 Tchem。KMC 于 2020 年发布 Current Protocols 操作手册,2021 年(Sheils et al., DOI: 10.1093/nar/gkaa993)与 2023 年(Kelleher et al., DOI: 10.1093/nar/gkac1033)两次在 NAR 数据库专刊发表更新论文,新增富集分析、热图与 UpSet 图等分析工具。截至 2022-11(Pharos 2023 论文接收时点),Pharos 月均独立用户约 3,300,TCRD 全库月均下载约 140 次;2020 年起引入版本化发布机制(Pharos v3.14.1 对应 TCRD 6.13.4),为机器学习研究的可复现性提供了版本锚点。
§1.2 战略价值
维度一:为"研究空白"建立可计算的地图。 TDL 四级分类把"这个蛋白被研究得多不多"从主观印象变成可查询、可统计、可建模的结构化标签:Tclin 704 个、Tchem 1,971 个、Tbio 12,058 个、Tdark 5,679 个(TCRD 当前版本,见 UNM TCRD 官方页)。对 AI 研究者而言,这意味着"研究热度"本身成了监督信号——可以训练模型预测哪些 Tdark 蛋白最值得投入实验资源,这正是 IDG 计划"照亮暗基因组"的核心方法论。
维度二:知识图谱式的多源整合基础设施。 TCRD 把 79 个异构数据源归一到以蛋白为中心的统一 schema:靶点-配体活性(ChEMBL/DrugCentral)、靶点-疾病关联(OMIM/文本挖掘/表达)、靶点-靶点相互作用(含病毒-人类 PPI)、表达与 GWAS 数据一应俱全,且明确声明以"machine learning ready format"组织数据(Sheils et al., 2021)。对于需要构建药物发现知识图谱、做多模态融合或做迁移学习的团队,它省去了数十个数据源的清洗与对齐成本。
维度三:版本化与开放性保障研究可复现。 与许多"黑箱"商业数据库不同,Pharos 的前后端代码开源(ncats/pharos_frontend、ncats/pharos-graphql-server)、MySQL 全库可下载、GraphQL API 无需注册,且 2020 年起有明确版本号。论文声明 TCRD 为 open source database(Data Availability 条款),商业使用需核查的是各原始数据源的许可而非 Pharos 本身。
§1.3 同类数据集横向对比
| 数据集 | 规模 | 模态/标注 | 差异化定位 |
|---|---|---|---|
| Pharos/TCRD | 20,412 靶点、339,220 配体、13,704 疾病、79 源 | 靶点注释 + TDL 四级标签 + 多源关联 | 唯一以 TDL 知识分类为核心、聚焦"研究不足"靶点的知识库;IDG 官方基础设施 |
| ChEMBL | 百万级化合物-靶点活性记录 | 生物活性测定数据 | 活性数据深度远超 Pharos,但无知识分类与"暗靶点"视角;Pharos 的上游源之一 |
| Open Targets Platform | 数万靶点-疾病关联 | 靶点-疾病关联评分(多证据链加权) | 侧重关联评分与遗传学证据,无 TDL 分类;Pharos 与其数据源大量重叠但组织哲学不同 |
| DrugCentral | 5,000+ 药物 | 已批准药物结构与作用机制 | KMC 自建子项目,Tclin 判定的核心依据;深度在"药"不在"靶点全景" |
| Harmonizome | 66+ 资源的基因-属性关联 | 预处理后的功能关联矩阵 | Mount Sinai 团队(IDG 成员)出品,Pharos 雷达图数据即来自它 |
| Guide to Pharmacology (GtoPdb) | 数千靶点配对 | 专家人工审校的药理学数据 | 高置信、小规模;Tchem 判定的三个活性来源之一 |
读表要点:Pharos 的不可替代性不在任何单项数据的深度(活性深度不及 ChEMBL、关联评分不及 Open Targets),而在它是唯一以"研究状态分类(TDL)"为第一公民、且把"研究不足"当作待解决问题的官方基础设施;横向对比时应把"有没有 Tdark 视角"作为首要差异维度。
§1.4 版本时间轴
| 时间 | 版本/事件 | 说明 |
|---|---|---|
| 2014 | IDG 计划启动 | NIH Common Fund 立项,KMC 与 DRGC(数据与资源生成中心)并行 |
| 2016-11 / 2017-01 | TCRD v3.0 / Pharos 1.0 上线 | 初版论文发表于 NAR 2017 数据库专刊(gkw1072) |
| 2017 → 2020 | TCRD 演进至 v6.7 | 新增/扩展 25 个数据源;纳入人-病毒 PPI、疾病/表型关联、药物诱导基因签名等 |
| 2020 | Current Protocols 操作手册 + 版本化发布 | Sheils et al., DOI: 10.1002/cpbi.92;Pharos 开始引入版本号 |
| 2020-11 | Sheils 2021 论文线上 | TCRD v6.7、78 数据源;新增 GraphQL API(gkaa993) |
| 2022-11 | TCRD 6.13.4 / Pharos v3.14.1 | Pharos 2023 论文(gkac1033):富集分析、热图、UpSet 图;79 数据源 |
§1.5 典型应用场景
- 暗靶点优先级排序:以 Tdark 蛋白为对象,用文本挖掘分数、Gene RIF 计数、抗体可得性、疾病关联等特征训练排序模型,输出最值得实验研究的候选清单(IDG 官方明确支持此用途,见 Kelleher et al., 2023)。
- 可成药性/成药状态分类:以 Tclin/Tchem 为正例、其余为负例训练蛋白分类器——PINNED 模型(2023)用 AlphaFold 结构与多网络特征达到测试集 AUC 0.950(PMC10354961)。
- 药物重定位假设生成:利用配体-靶点活性与疾病关联数据,为老药寻找新靶点;Pharos 2023 版的富集分析工具直接支持"某疾病关联靶点列表中哪些家族/通路过度代表"这类问题。
- 知识图谱与链接预测:以靶点-疾病-配体为节点构建异构图,预测缺失边;数据自带证据类型(dataType)与来源字段,便于分层建模。
- 研究布局与政策分析:TDL 计数随版本的漂移本身就是"照亮进程"的量化指标,可用于科研政策、基金布局与文献计量研究(Tdark 从约 31% 降至 27.8%)。
版本与命名速记:文献中"Pharos"指 Web 平台 + API,"TCRD"指底层数据库;两套版本号并行(如 Pharos v3.14.1 ↔ TCRD 6.13.4),引用数据时建议同时写明(详见 §6.5 坑点 8)。对外链接靶点页用 UniProt 登录号或基因符号(如 /targets/ACE2),疾病页用名称或 MONDO ID——这些寻址规范自 2017 年起保持稳定,适合做持久链接。
§2 医学背景
§2.1 ICD-11 疾病域映射表
Pharos 不是单一疾病数据集:其 13,704 种疾病关联横跨 ICD-11 多个章节。下表按"靶点家族 → 主要疾病域"组织,给出与本库 AI 任务最相关的 ICD-11 顶层章节映射(章节级编码;具体条目级编码请经 Pharos 疾病页的 MONDO/DO 标识符对接 ICD-11)。
| 任务域(标签视角) | ICD-11 章节 | 章节名 | 代表靶点家族 |
|---|---|---|---|
| 肿瘤靶向治疗 | 02 | 肿瘤 | 蛋白激酶(Tclin 68 / Tchem 387 个) |
| 内分泌与代谢 | 05 | 内分泌、营养或代谢疾病 | GPCR(代谢类受体)、核受体相关通路 |
| 神经与精神 | 08 | 神经系统疾病 | 离子通道、GPCR(神经递质受体) |
| 心血管 | 11 | 循环系统疾病 | 离子通道(心律失常)、GPCR(血压调节) |
| 呼吸 | 12 | 呼吸系统疾病 | GPCR(如哮喘相关,Pharos 官方示例查询即以 asthma 为例) |
| 免疫与炎症 | 04 | 免疫系统疾病 | 激酶(JAK 家族等)、GPCR(趋化因子受体) |
§2.1b SNOMED CT 映射表
| 疾病域 | ICD-11 章节 | SNOMED CT 码 | SNOMED 术语 |
|---|---|---|---|
| 恶性肿瘤(激酶靶点主战场) | 02 | 363346000 | Malignant neoplastic disease |
| 糖尿病(GPCR/代谢) | 05 | 73211009 | Diabetes mellitus |
| 哮喘(GPCR/呼吸) | 12 | 195967001 | Asthma |
| 阿尔茨海默病(神经退行) | 08 | 26929004 | Alzheimer’s disease |
| 心房颤动(离子通道) | 11 | 49436004 | Atrial fibrillation |
说明:Pharos 内部疾病本体采用 MONDO 与 Disease Ontology(DO),并通过 MONDO ID 提供疾病页寻址(/diseases/{mondo_id});将其映射到 ICD-11 与 SNOMED CT 时建议以 MONDO 官方映射文件为桥,避免手工对齐引入误差。
§2.2 医学背景简介
"可成药基因组(druggable genome)"概念由 Hopkins 与 Groom 于 2002 年提出,指编码产物能够与小分子药物结合并被其调节的蛋白家族集合,主要包含 G 蛋白偶联受体(GPCR)、离子通道(IC)、蛋白激酶与核受体等家族。生物医学研究对这些家族的投入极不均衡:Pharos 2023 论文引用的估计是,约 10% 的人类蛋白获得了约 75% 的研究关注,且这种偏倚主要由 20 世纪 80-90 年代的早期发现路径固化,而非由各基因的生理或临床重要性决定。为系统性纠正这一偏倚,NIH Common Fund 于 2014 年启动 IDG 计划,其中知识管理中心(KMC)负责整合数据、建立知识分类,数据与资源生成中心(DRGC)负责针对 GPCR 等家族开展实验筛查。
从流行病学与药物市场视角看,这三大 IDG 家族恰恰是现代药物的主力作用面:FDA 已批准药物的作用机制靶点(Tclin,704 个)绝大多数落在 GPCR、激酶与离子通道之内;而 5,679 个 Tdark 蛋白中相当一部分同属这些家族(如 GPCR 家族内 Tdark 30 个、激酶 19 个、离子通道 19 个),意味着"已验证商业模式 + 未知功能"的交叉地带存在系统性研究空白。Tdark 并非"不可成药"的证据——2019 年的一项分析显示,Tdark 蛋白与 UniProt 化学交叉引用的交集远超预期(144 个 Tdark 已有专家审校的配体注释),提示其中相当比例可能只是"未被照亮"而非"不可照亮"。
§2.3 临床任务定义
Pharos 支撑的 AI 任务位于药物发现临床转化链的上游,典型任务定义如下:
| 任务 | 定义 | 输入 | 输出 | 临床意义 |
|---|---|---|---|---|
| 可成药性分类 | 判断蛋白是否具有结合高活性小分子的理化/结构特征 | 序列、结构(AlphaFold)、GO、PPI、定位特征 | 二分类概率(druggable/undruggable) | 缩小候选靶点空间,指导化合物筛选投入 |
| 暗靶点优先级排序 | 对 5,679 个 Tdark 蛋白按"研究价值"排序 | 文献分数、RIF、抗体数、疾病关联、表达 | 排序列表/分数 | 为实验验证与基金布局提供证据 |
| 靶点-疾病关联预测 | 预测未记录的蛋白-疾病因果或相关关系 | PPI、共表达、文本挖掘、GWAS | 关联对 + 置信度 | 药物重定位与适应症扩展 |
| TDL 升级预测 | 预测哪些 Tdark/Tbio 蛋白最可能"被照亮"进入 Tchem/Tclin | 版本间 TDL 变迁历史 + 多模态特征 | 升级概率 | 评估研究趋势、发现被低估靶点 |
§2.4 数据对象构成表
Pharos 的分析对象是人类蛋白组而非患者队列,故以"数据对象构成表"替代传统患者人群表(下表为 TCRD 当前版本的 TDL × 家族官方计数,来源:UNM TCRD 官方页):
| 对象类别 | 总数 | Tclin | Tchem | Tbio | Tdark |
|---|---|---|---|---|---|
| 全部靶点 | 20,412 | 704 | 1,971 | 12,058 | 5,679 |
| GPCR 家族 | 406 | 102 | 171 | 103 | 30 |
| 激酶家族 | 635 | 68 | 387 | 161 | 19 |
| 离子通道家族 | 344 | 127 | 90 | 108 | 19 |
| 配体 | 339,220 | — | — | — | — |
| 疾病 | 13,704 | — | — | — | — |
注:嗅觉 GPCR 作为独立家族处理;上表家族计数不含非 IDG 家族靶点,故家族行之和小于全部靶点行。
§2.5 临床价值
Pharos 的临床价值通过缩短"靶点验证 → 化合物优化 → 适应症确认"链条间接实现。其一,Tclin 层提供了已批准药物作用机制的完整清单,是药物重定位的"ground truth"参考集;其二,Tchem 层的高活性配体信息(家族特异阈值判定)为化合物优化提供了起点活性数据,KMC 自建的 DrugCentral 补充了作用机制与兽医药物注释;其三,Tdark 层直接把"研究空白"变成可行动的候选清单——对预算有限的课题组与资助机构,这相当于一张带优先级建议的研究地图。Pharos 2023 版新增的富集计算与 UpSet 图分析进一步支持"给定一组靶点,找出过度代表的疾病/通路"这类转化研究问题。
§2.6 标注(金标准)来源表
| 维度 | 内容 |
|---|---|
| 划分 | Tclin / Tchem / Tbio / Tdark 四级,逐靶点唯一标签(判定规则见 §3.5) |
| 标注方式 | 规则自动判定 + 跨源证据整合(非人工逐条标注);规则与阈值公开于 TCRD 官方页 |
| 标注者 | IDG 知识管理中心(KMC)团队:NCATS 校内团队 + 新墨西哥大学(Oprea/Mathias/Bologa 等)+ 合作机构 |
| 性质 | 知识状态标签(knowledge-based classification),随版本滚动更新;本质是对"研究热度"的操作化定义,而非生物学属性 |
| 版本锚点 | TCRD v3.0(2017 首发论文)→ v6.7(2021 论文)→ v6.13.4(2023 论文,Pharos v3.14.1) |
使用这张表做监督学习时的定位建议:TDL 是"知识状态"金标准,适合训练"研究热度/照亮潜力"模型;若研究目标是蛋白内在可成药性,建议只取 Tclin/Tchem 两个"有直接化学证据"的层级作为正例锚点,并对 Tbio/Tdark 采用未标注池假设(§5.3、坑点 7)。
§3 数据集规格
§3.0 版本抉择矩阵
| 你的需求 | 推荐版本 | 获取方式 | 理由 |
|---|---|---|---|
| 复现 2017 年代靶点文献 | TCRD v3.0 时期数据 | 官方历史版本下载页 | 与初版论文(gkw1072)的 TDL 计数口径一致 |
| 复现 2021 年论文/课程 | TCRD v6.7 | 官方历史版本下载页 | 与 Sheils 2021 论文一致(78 数据源) |
| 当前研究与模型训练 | TCRD 6.13.4(Pharos v3.14.1) | MySQL 全库下载 | 最新 TDL 计数与 79 数据源;Pharos 2023 论文口径 |
| 轻量探索/原型验证 | 当前版 GraphQL API | pharos.nih.gov/api | 无需本地数据库,按需取数 |
| 与他人结果可比对 | 任意版本,但必须记录版本号 | 全部途径 | TDL 计数随版本漂移(见 §6.5 坑点 1) |
§3.1 模态详情
| 模态 | 内容 | 主要来源 | AI 用途 |
|---|---|---|---|
| 靶点注释 | 蛋白标识(UniProt/Ensembl)、基因符号、家族、TDL、novelty 分数 | UniProt、DTO、PANTHER | 标签与特征主干 |
| 小分子活性 | 靶点-配体结合活性(p 值单位标准化)、已批准药物标记 | ChEMBL、DrugCentral、GtoPdb | Tchem 判据、活性预测、重定位 |
| 疾病关联 | 靶点-疾病关联(多证据类型)+ 表型关联 | OMIM、Jensen Lab DISEASES、DisGeNET、Expression Atlas | 关联预测、富集分析 |
| 蛋白-蛋白相互作用 | 人类 PPI + 病毒-人类 PPI(含预测分数) | P-HIPSTer 等来源 | 网络 embedding、传播算法 |
| 基因组/表达 | RNA 与蛋白表达、转录因子、表观关联、组织分布 | GTEx 相关资源、Harmonizome | 特征工程、靶点组织特异性分析 |
| 表型/GWAS | 小鼠表型、人鼠同源、GWAS 关联(TIGA 工具支持) | MGI、GWAS 目录 | 遗传学证据加权 |
| 文本 | GeneRIF 计数、Jensen Lab 文献挖掘分数、相关文献 | PubMed、Jensen Lab | 研究热度量化、Tdark 判据 |
| 本体 | Drug Target Ontology、MONDO、DO、PANTHER、GO | U. Miami DTO 等 | 语义分层、特征编码 |
§3.2 按子集样本数表
核心子集的精确规模(TCRD 当前版本,截至 Pharos 2023 论文时点):
| 子集 | 数量 | 说明 |
|---|---|---|
| 人类蛋白靶点 | 20,412 | 覆盖 UniProt 人工审校(Swiss-Prot)的人类蛋白组 |
| Tclin | 704 | 有已批准药物以之为作用机制靶点 |
| Tchem | 1,971 | 有满足家族阈值的结合活性(非 Tclin) |
| Tbio | 12,058 | 生物学研究充分但无高活性小分子 |
| Tdark | 5,679 | 约占 27.8%,研究信息匮乏 |
| 配体 | 339,220 | 含已批准药物与生物活性化合物 |
| 疾病 | 13,704 | 关联到至少一个靶点 |
| 数据源 | 79 | 经 TCRD 归一整合 |
| IDG 家族靶点(GPCR+激酶+IC) | 1,385 | 406 + 635 + 344 |
历史对照(版本间漂移,用于理解标签动态性):2019-10 版本为 20,244 蛋白、226,829 个 ChEMBL 化合物、60+ 资源;2020-10 时点 Tclin 为 704;2019 年时点 Tclin 为 613、Tdark 为 6,368。
§3.3 数据格式表
| 格式 | 获取途径 | 适用场景 | 说明 |
|---|---|---|---|
| MySQL dump(.sql.gz) | TCRD 下载页 | 全量分析、本地建模 | 关系库完整 schema,含 Pharos 未展示的数据(如 ClinVar、RDO) |
| GraphQL API(JSON) | pharos-api.ncats.io/graphql | 增量取数、Web 应用 | 交互式 IDE 与示例查询见 pharos.nih.gov/api |
| CSV | 网页查询构建器导出 | 快速导出靶点列表 | 支持字段勾选与 10 行预览,复杂查询会显示原始 SQL |
| schema.org 结构化数据 | 外部 API 对接 | 数据提供方 | Pharos 2023 引入的外部数据接入机制(返回 @Protein 等对象) |
§3.4 存储大小
官方以 MySQL 全库 dump(latest.sql.gz)形式分发 TCRD,解压导入后的关系库规模以官方下载页标注为准;建议本地预留 10 GB 磁盘空间以容纳导入后的数据与索引。20,412 个靶点、339,220 个配体与 13,704 种疾病的关联规模属于单机可承载量级——一台 16 GB 内存的工作站即可完成导入与全表分析,无需分布式存储。
工作流建议:全量分析走"dump → 本地 MySQL → 只读账号 → 分析直连"路线,把 API 留给线上服务与增量监控;每次下载后先记录文件大小与 SHA256 再导入,作为版本指纹(配合 §6.10 MLOps 门禁)。若团队无 MySQL 运维能力,可用 Docker 一行拉起 mysql 镜像导入;导出为 Parquet 后下游 pandas/Polars 直接消费,避免反复查询关系库。
§3.5 标注方式
TDL 标注为规则驱动的自动分类 + 跨源证据整合(知识工程式标注,非人工逐条阅读文献)。官方判定规则(TCRD 官方页原文归纳):
- Tclin:在 DrugCentral 中存在以该靶点为已知作用机制(MoA)的已批准药物活性。
- Tchem:非 Tclin,且在 ChEMBL、Guide to Pharmacology 或 DrugCentral 中存在满足家族特异活性阈值的活性:GPCR ≤100 nM;激酶 ≤30 nM;离子通道 ≤10 μM;非 IDG 家族 ≤1 μM。
- Tbio:无满足阈值的药物/小分子活性,且满足以下之一:高于 Tdark 判定阈值;存在带实验证据代码(EXP 类)的 GO 分子功能或生物过程 leaf term 注释。
- Tdark:几乎无已知信息,且满足以下至少两项:Jensen Lab PubMed 文本挖掘分数 < 5;Gene RIF ≤ 3 条;Antibodypedia 可用抗体 ≤ 50。
活性值需可标准化为 -log 摩尔单位方可参与 TDL 判定。
§3.6 标注者资质与一致性
TDL 判定由算法规则完成,规则的设计与维护者为 IDG KMC 团队(NCATS 校内研究人员与新墨西哥大学转化信息学团队,核心作者含 Oprea、Mathias、Bologa、Sheils、Kelleher 等,成果经 NAR 数据库专刊三度同行评审)。一致性保障来自三方面:规则公开可复现(任何人可按阈值重算)、证据源本身经过专家审校(UniProt/ChEMBL/DrugCentral 均有内置质控)、版本间计数变化被论文显式追踪(v3.0 → v6.7 → v6.13 的 TDL 变迁图)。需要注意:规则依赖的外部源(如 Antibodypedia 抗体计数、PubMed 分数)会独立漂移,故同一靶点的 TDL 可能随外部数据更新而变化。
§3.7 采集与更新周期
TCRD 采用滚动整合模式:上游数据源(ChEMBL、UniProt 等)按各自节奏更新,KMC 定期执行导入-归一-重分类流水线并发布新版本。Pharos 于 2020 年起引入正式的版本化发布机制(Pharos v3.x 对应 TCRD 6.x),截至 Pharos 2023 论文时点最新版本为 Pharos v3.14.1 / TCRD 6.13.4(2022-11 论文接收)。三篇 NAR 论文(2017/2021/2023)构成版本历史的三个里程碑锚点。
§3.8 地域覆盖
数据对象为人类蛋白组(无地域属性);数据来源机构集中于美国(NCATS、UNM、Miami、Mount Sinai)与欧洲(EMBL-EBI、哥本哈根大学),上游数据源为国际公共数据库。用户群全球分布——截至 2020-09 月均约 1,600 名新访客,截至 2022-11 月均约 3,300 名独立用户。
§3.9 API 服务规格
| 项目 | 规格 | 依据 |
|---|---|---|
| API 风格 | GraphQL(单端点) | pharos.nih.gov/api |
| 端点 | https://pharos-api.ncats.io/graphql | 官方论文与 API 页 |
| 交互环境 | 内置 GraphQL Playground/IDE(DOCS + SCHEMA 两个面板) | pharos.nih.gov/api |
| 分页 | batch 查询支持 skip/top 参数 |
API 示例查询 |
| 实践批大小 | 建议 100 条/chunk;更大易超时;全量 2 万靶点约需数千 chunk、约 30 分钟 | pypath 库实现文档 |
| 无需认证 | 开放访问,无 API key | 官方 Data Availability 声明 |
§3.10 深度溯源链
每个数据点可沿"Pharos 页面/字段 → TCRD 表 → 上游数据源 → 原始文献"四层回溯:网页靶点页为每类数据标注来源并可跳转原始资源;TCRD 整合策略区分"按值导入"与"按引用外联"两类(导入值落库,外联值实时指向源站);GraphQL 查询结果继承字段级来源信息(如疾病关联的 dataType 与 evidence 字段);各数据源的原始论文在 KMC 文档与 NAR 论文补充材料中列表化。对 AI 工程而言,关键是把 dataType/evidence 字段当作一等公民保留到下游特征中(见 §6.5 坑点 4)。
溯源实操检查清单(新项目接入时过一遍):
- 记录 dump/API 快照版本号与日期(TCRD 6.13.4 / Pharos v3.14.1 或更新)。
- 抽查 5 个已知靶点(如 ACE2 应为 Tclin),核对 tdl/fam 与官方页面一致。
- 确认每条疾病关联都带 dataType;无 dataType 的合并表应退回重建。
- 核对 TDL 计数与 UNM TCRD 官方页表格逐值一致。
- 保存官方 help 页(许可与数据范围说明)到项目文档,作为合规依据附件。
§4 数据结构
§4.0 目录树
TCRD 全库获取后的本地组织(MySQL dump 导入路径 + 代码仓库):
pharos_workspace/
├── data/
│ └── tcrd/
│ └── latest.sql.gz # TCRD MySQL 全库 dump(下载页 latest.sql.gz)
├── db/
│ └── tcrd/ # mysql 导入后的库(InnoDB)
│ ├── target # 20,412 个靶点主表(sym/tdl/fam/novelty 等)
│ ├── ligand # 339,220 个配体(ligid/isdrug/smiles)
│ ├── disease # 13,704 种疾病(MONDO/DO 标识)
│ ├── activity # 靶点-配体活性(type/value,-log 摩尔单位)
│ ├── disease_association # 靶点-疾病关联(dataType/evidence)
│ ├── ppi # 蛋白-蛋白相互作用(含病毒-人类)
│ ├── expression # 组织/细胞表达
│ ├── ortholog # 物种同源
│ └── xref # 跨源标识符交叉引用
├── code/
│ ├── pharos_frontend/ # 官方前端(github.com/ncats/pharos_frontend)
│ └── pharos-graphql-server/ # 官方后端(github.com/ncats/pharos-graphql-server)
└── notebooks/
└── 01_explore_tdl.ipynb # 探索性分析
表名以 TCRD 实际 schema 为准(官方 ERD 文档 TCRDv6_ERD.pdf 随发布提供);上表为经 GraphQL schema 与论文归纳的核心实体,字段级细节以
mysql> DESCRIBE <table>输出为准。部分数据(ClinVar、RDO 等)仅存在于 TCRD 而 Pharos 网页不展示。
§4.1 DAIMS 字段字典
以靶点主实体为核心字段(经 GraphQL API 验证的字段名),共 12 行:
| 字段名 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
uniprot_id |
string | UniProt 登录号,主键 | P0DTC2 (ACE2) | 实体唯一链接 | 极低(人工审校源) | 无缺失 | UniProt 现行 accession |
sym |
string | 基因符号(HGNC) | ACE2 | 检索与展示键 | 偶有别名冲突 | 无缺失 | HGNC 符号 |
tdl |
string | 目标开发水平标签 | Tclin | 监督标签 | 随版本漂移 | 无(四级完备) | Tclin/Tchem/Tbio/Tdark |
fam |
string | 靶点家族 | GPCR | 分层特征 | 嗅觉 GPCR 单列 | 无缺失 | GPCR/Kinase/IC/OLGPCR/其他 |
name |
string | 蛋白全名 | Angiotensin-converting enzyme 2 | 文本特征 | 源间命名差异 | 无缺失 | 自由文本 |
description |
string | 功能描述 | 文本摘要 | NLP 特征 | 源自 UniProt 注释深度不一 | 短文本=信息少 | 自由文本 |
novelty |
numeric | 新颖性/研究热度分 | 0.0-1.0 区间值 | 排序特征 | 依赖文献计量 | 低值≈研究不足 | 0-1 连续 |
activities.type |
string | 活性类型 | IC50/Ki/EC50 | 活性建模 | 测定协议异质 | 无记录=无活性数据 | 枚举 |
activities.value |
numeric | 活性值(-log 摩尔) | 7.8(≈15.8 nM) | Tchem 复算、QSAR | 跨实验室测定差异 | 无缺失=有值 | 连续(-log M) |
diseaseAssociationDetails.dataType |
string | 关联证据类型 | OMIM/Text mining/Expression Atlas | 证据分层 | 文本挖掘噪声高 | 无缺失 | 多值枚举 |
ppi.score |
numeric | 相互作用置信度 | 0-1 | 网络建模 | 预测源分数校准不一 | 无缺失=有边 | 0-1 连续 |
knowledge_value |
numeric | "关于该靶点的知识量"维度分 | 0.49(transcription factor) | 暗靶点画像 | 维度覆盖不均 | 0=该维度空白 | 0-1 连续 |
§4.2 标签分布
TDL 标签高度不均衡,是所有监督建模的首要背景事实(TCRD 当前版本):
| 标签 | 计数 | 占比 | 建模影响 |
|---|---|---|---|
| Tdark | 5,679 | 27.8% | 多数任务中作"未标注池"而非负例 |
| Tbio | 12,058 | 59.1% | 绝对多数,直接训练会向其坍缩 |
| Tchem | 1,971 | 9.7% | 中等正例池 |
| Tclin | 704 | 3.5% | 稀有正例,需过采样或焦点损失 |
交叉视角:激酶家族的 Tchem 浓度最高(387/635 ≈ 61%),离子通道家族的 Tclin 浓度最高(127/344 ≈ 37%),GPCR 居中——家族先验对标签预测有强信息量,也意味着模型可能主要在学家族身份而非蛋白内在性质。
§4.3 关键统计
- 整合广度:79 个数据源,自 2017 年初版以来新增或扩展 25 个(Sheils 2021)。
- 活性数据:2019-10 时点含 226,829 个 ChEMBL 化合物;当前配体总量 339,220。
- 关联密度:13,704 种疾病对应 19,880 条疾病/表型关联(2019-10 时点),平均每种疾病约 1.5 个已记录关联,提示关联覆盖本身是稀疏的、可挖掘的。
- 使用规模:月均 3,300 独立用户、TCRD 月均 140 次下载(截至 2022-11);累计全库下载超 20,000 次(截至 2020-09-03)。
- 被主流资源反向链接:PDB、UniProt、ChEMBL、Reactome、KEGG、GtoPdb 等。
- 疾病关联证据分层示例:同一靶点页面上,OMIM 关联(人工审校)、Expression Atlas(组学)、DisGeNET(文献聚合)并列展示,dataType 字段可直接区分。
- 蛋白覆盖口径:库内靶点对应 UniProt 人工审校(Swiss-Prot)序列记录,含全长与同工型标识符差异(见坑点 6)。
§4.4 数据层级
人类蛋白组(20,412 targets)
└── target(uniprot_id 主键)
├── activity ── ligand(339,220 配体;通过活性边连接)
├── disease_association ── disease(13,704 疾病;MONDO/DO 层级树)
├── ppi ── target(自连接;含病毒蛋白外联)
├── expression / phenotype / ortholog(属性层)
└── tdl 标签 + knowledge_value 分数(知识状态层)
建模建议把"实体层"(target/ligand/disease)与"证据层"(activity/association/ppi 及其 dataType、evidence、score)分开处理:实体层做节点特征,证据层做边标签或训练样本,证据类型字段必须进入样本元数据。
§4.5 缺失值与信息性缺失
| 情形 | 表现 | 是否信息性 | 处理建议 |
|---|---|---|---|
| 无活性记录 | activities 为空 |
✅ 信息性——正是 Tbio/Tdark 判定依据 | 编码为显式特征 has_activity=0,勿当作随机缺失填充 |
| 无疾病关联 | 疾病关联列表为空 | ✅ 信息性——Tdark 判据组成部分 | 保留"零关联"信号,可用于排序 |
| 文本挖掘分数 < 5 | 计数型低值 | ✅ 信息性——Tdark 三判据之一 | 原值保留 + 阈值二值化双列 |
| knowledge_value 维度 = 0 | 该证据维度空白 | ✅ 信息性 | 作为"维度缺失"类别变量而非 0 填充 |
| 描述文本极短 | description 少于一句 | ✅ 信息性——UniProt 注释深度差异 | 文本长度单独成特征 |
核心原则:Pharos 的"缺失"绝大多数不是采集事故,而是知识状态的直接测量——这正是该库以 ML-ready 形式组织的含义。任何"填均值/删行"式标准缺失处理都会系统性破坏 TDL 信号。
§5 数据划分与使用建议
§5.1 官方划分
无。 Pharos 是知识库而非竞赛数据集,官方不提供 train/val/test 划分,也没有排行榜协议。所有划分需研究者自行构建并明确报告 TCRD 版本号。
§5.2 社区惯例划分
- PINNED 式二分(可成药性任务):Tclin 为正例(696 个,与 AlphaFold 结构取交集后),其余 19,177 个为负例;训练/验证 5 折交叉验证 + 20% 独立测试集(PINNED, 2023)。
- 家族分层切分:按
fam(GPCR/激酶/IC/其他)分层抽样,保证各 fold 家族比例一致;更严格的版本做"家族级 leave-one-out"(整个家族做测试),检验模型对未见家族的泛化。 - 版本时间切分:以 TCRD v6.7 快照训练、用 6.13 快照中"新进入 Tchem 的蛋白"做前瞻测试集——模拟"预测下一个被照亮的靶点"这一真实任务。
§5.3 划分策略建议与泄漏风险 ⭐
- 同靶点多证据聚合导致的样本泄漏:同一靶点的数十条疾病关联/活性记录若被随机分散到训练与测试两侧,模型只需记住靶点即可"答对"。任何以靶点为中心的任务都必须按
uniprot_id做组级切分(GroupSplit)。 - PPI 网络邻近泄漏:相互作用蛋白往往共享功能注释与疾病标签;随机切边会使测试边两端节点已在训练中见过。网络任务需按节点集切分(如 80/20 节点诱导子图)。
- 文本挖掘回声:疾病关联的 Text mining 证据与 Tdark 判据同源于 PubMed 文献——若用文本挖掘关联做特征又用 TDL 做标签,两个变量共享信息基底,形成隐性泄漏(详见 §6.5 坑点 4)。
- 家族捷径:家族特征预测力过强,建议至少报告一组"隐藏家族特征"的消融结果。
- 活性证据的时间回声:某靶点"进入 Tchem"所依据的活性测定可能晚于你特征中该靶点的部分记录;严格版本下,活性证据也应带测定年份过滤(结合坑点 1 的时间切面策略)。
§5.4 交叉验证建议
对 Tclin 稀有类任务采用分层 5 折 + GroupShuffleSplit(groups=uniprot_id) 组合;对排序/优先级任务采用按家族分组的 Leave-One-Family-Out;所有 fold 内标签分布与整体分布的偏差应写入实验记录。
§5.5 外部验证建议
- 用 DrugCentral 独立核验 Tclin 预测:预测为"可成药"的靶点是否出现在 DrugCentral 已批准药物 MoA 清单中(注意 DrugCentral 本身参与 Tclin 判定,故只能作一致性检查而非独立金标准)。
- 跨库验证:Open Targets 关联评分、GtoPdb 专家审校配对作为外部参照。
- 时间外部验证:用新版本 TCRD 的 TDL 变迁做准前瞻评估(无需等待新实验数据)。
- 实验端验证参照:DRGC(IDG 数据与资源生成中心)针对 GPCR 的实验筛查产出可作为独立评估源。
§6 AI 就绪指南 ⭐
§6.0 运行环境与快速启动
Pharos 为单机量级知识库,无需 GPU 集群或分布式设施。两条路径任选:路径 A(全量)= 下载 MySQL dump 导入本地 MySQL/MariaDB;路径 B(轻量)= 直接调用 GraphQL API。本章代码假定工作目录结构为:
pharos_workspace/
├── data/tcrd/latest.sql.gz # 路径 A:全库 dump
├── code/ # 预处理与训练脚本
└── notebooks/ # 探索分析
§6.1 快速上手
<details>
<summary>点击展开完整快速上手代码(约 40 行)</summary>
# ============================================================================
# 快速上手:用 GraphQL API 拉取 TDL 标签分布(最小可用子集 = 靶点主表 4 字段)
# 目录结构预期:本脚本位于 pharos_workspace/code/,无需本地数据文件
# data_root 拼接关系:路径 A 时 data_root = ../data/tcrd/,dump 文件为
# f"{data_root}/latest.sql.gz";路径 B(本例)不依赖 data_root
# 运行要求:requests(pip install requests),无认证、无 API key
# ============================================================================
import requests
API = "https://pharos-api.ncats.io/graphql"
def gql(query: str) -> dict:
"""执行一次 GraphQL 查询并返回 JSON。"""
r = requests.post(API, json={"query": query}, timeout=60)
r.raise_for_status()
return r.json()
# 查询 1:单个靶点详情(官方示例——ACE2)
result = gql("""
query targetDetails {
target(q: {sym: "ACE2"}) { name tdl fam sym description novelty }
}
""")
print(result["data"]["target"])
# 期望输出:{'name': 'Angiotensin-converting enzyme 2', 'tdl': 'Tclin', ...}
# 查询 2:按 TDL 分面统计全库靶点(一次调用拿到 20,412 个靶点的标签分布)
facets = gql("""
query facetsForAllTargets {
targets { facets { facet values { name value } } }
}
""")
for facet in facets["data"]["targets"]["facets"]:
if facet["facet"] == "Target Development Level":
print(facet["values"]) # Tclin/Tchem/Tbio/Tdark 四组计数
</details>
§6.2 数据获取
| 途径 | 入口 | 产出 | 适用 |
|---|---|---|---|
| MySQL 全库 | http://juniper.health.unm.edu/tcrd/download/ | latest.sql.gz | 全量建模、含网页不展示字段 |
| GraphQL API | https://pharos-api.ncats.io/graphql | JSON | 增量、原型 |
| 网页导出 | 靶点列表页下载按钮 | CSV | 快速清单 |
| 代码仓库 | github.com/ncats/pharos_frontend 与 ncats/pharos-graphql-server | 源码 | 部署私有实例 |
# 路径 A:全量导入(约数分钟至数十分钟,取决于磁盘)
mkdir -p pharos_workspace/data/tcrd && cd pharos_workspace/data/tcrd
wget http://juniper.health.unm.edu/tcrd/download/latest.sql.gz
gunzip latest.sql.gz
mysql -u root -p -e "CREATE DATABASE tcrd CHARACTER SET utf8mb4;"
mysql -u root -p tcrd < latest.sql
# 路径 B:GraphQL 分批拉取全部靶点(官方 batch 查询模式)
# 路径 B:分批拉取全部靶点核心字段(实践批大小 = 100,更大易超时)
import requests, json, time
API = "https://pharos-api.ncats.io/graphql"
BATCH = 100 # pypath 实践:>100 极易触发超时
QUERY = """
query batchTargets($skip: Int!, $top: Int!) {
targets(skip: $skip, top: $top) {
count
targets { name sym tdl fam uniprot novelty }
}
}
"""
def fetch_all_targets(chunk=100):
"""分页遍历全部靶点;返回记录列表(全量约 20,412 条)。"""
first = requests.post(API, json={"query": QUERY, "variables": {"skip": 0, "top": chunk}}, timeout=60).json()
total = first["data"]["targets"]["count"]
rows = first["data"]["targets"]["targets"]
for skip in range(chunk, total, chunk):
time.sleep(0.5) # 礼貌性限速
payload = requests.post(API, json={"query": QUERY, "variables": {"skip": skip, "top": chunk}}, timeout=60).json()
rows += payload["data"]["targets"]["targets"]
print(f"{skip + chunk}/{total}")
return rows
with open("../data/targets_raw.json", "w") as f:
json.dump(fetch_all_targets(), f)
按疾病取靶点(关联预测任务的样本源):
# 场景:给定疾病名,取其关联靶点及证据类型——构建靶点-疾病训练对
# 注意保留 dataType/evidence 字段(见 §6.5 坑点 4:证据分层是一等公民)
QUERY_DISEASE = """
query associatedTargets {
targets(filter: {associatedDisease: "asthma"}) {
targets(top: 5) {
name sym tdl
diseaseAssociationDetails { name dataType evidence }
}
}
}
"""
resp = requests.post(API, json={"query": QUERY_DISEASE}, timeout=60).json()
for t in resp["data"]["targets"]["targets"]:
for assoc in t["diseaseAssociationDetails"]:
print(t["sym"], t["tdl"], assoc["dataType"], assoc["name"])
# 示例输出:SYM tdl OMIM <疾病名> / Text mining <疾病名>
# 场景:取某靶点相互作用最强的 5 个蛋白——PPI 网络构建的边采样入口
QUERY_PPI = """
query interactingProteins {
targets(filter: {associatedTarget: "CAMKK1"}) {
targets(top: 5) {
sym
ppiTargetInteractionDetails {
dataSources: ppitypes { score interaction_type evidence }
}
}
}
}
"""
§6.3 预处理全流程
流程:JSON/SQL 提取 → ID 归一 → 活性单位统一 → 特征矩阵构建 → 标签对齐版本快照。
# 依赖:pandas, scikit-learn
# 输入:../data/targets_raw.json(§6.2 路径 B 产出)
# 输出:features.parquet(特征矩阵)+ labels.parquet(TDL 标签)
import json
import pandas as pd
with open("../data/targets_raw.json") as f:
rows = json.load(f)
df = pd.DataFrame(rows)
# ---- 步骤 1:ID 归一(一靶多 accession 场景需去重聚合,见 §6.5 坑点 6)----
df = df.drop_duplicates(subset=["uniprot"]).reset_index(drop=True)
# ---- 步骤 2:家族 one-hot(fam 为层级枚举)----
fam_onehot = pd.get_dummies(df["fam"], prefix="fam")
# ---- 步骤 3:novelty 与 knowledge 信号显式化(信息性缺失,见 §4.5)----
df["has_novelty"] = df["novelty"].notna().astype(int)
df["novelty"] = df["novelty"].fillna(0.0)
# ---- 步骤 4:组装特征矩阵并落盘 ----
features = pd.concat([df[["novelty", "has_novelty"]], fam_onehot], axis=1)
features.to_parquet("../data/features.parquet")
labels = df[["uniprot", "tdl"]]
labels.to_parquet("../data/labels.parquet")
print(labels["tdl"].value_counts(normalize=True).round(3))
# 期望输出(TCRD 当前版本口径):Tbio ≈ 0.591, Tdark ≈ 0.278, Tchem ≈ 0.097, Tclin ≈ 0.035
活性数据标准化(构建 Tchem 复算特征时):ChEMBL 原始活性(nM)先转为 pAct = -log10(M),再按家族阈值(GPCR ≤100 nM → pAct ≥ 7;激酶 ≤30 nM → pAct ≥ 7.52;离子通道 ≤10 μM → pAct ≥ 5)二值化;切勿用全局阈值。
§6.4 PyTorch DataLoader 完整代码
任务示例:TDL 四分类(可用作暗靶点优先级模型的主干)。
<details>
<summary>点击展开完整 PyTorch 训练代码(约 65 行)</summary>
# ============================================================
# 目录结构预期:脚本位于 pharos_workspace/code/
# data_root 拼接:DATA_ROOT = "../data/",读取 §6.3 产出的 parquet
# 最小可用子集:features.parquet + labels.parquet(约 20,412 行)
# 运行要求:torch >= 2.0, pandas, scikit-learn;CPU 即可训练
# ============================================================
import pandas as pd
import torch
from torch.utils.data import Dataset, DataLoader
from sklearn.model_selection import GroupShuffleSplit
DATA_ROOT = "../data/"
class TcrdTdlDataset(Dataset):
"""Pharos/TCRD 靶点 TDL 分类数据集。
按靶点(uniprot)为组切分,防止同靶点多记录跨集泄漏。
标签编码:Tdark=0, Tbio=1, Tchem=2, Tclin=3。
"""
LABEL2ID = {"Tdark": 0, "Tbio": 1, "Tchem": 2, "Tclin": 3}
def __init__(self, features: pd.DataFrame, labels: pd.DataFrame):
merged = labels.merge(features, left_on="uniprot", right_index=True, how="inner")
self.X = torch.tensor(merged.drop(columns=["uniprot", "tdl"]).values, dtype=torch.float32)
self.y = torch.tensor(merged["tdl"].map(self.LABEL2ID).values, dtype=torch.long)
self.groups = merged["uniprot"].values
def __len__(self):
return len(self.y)
def __getitem__(self, idx):
return self.X[idx], self.y[idx]
features = pd.read_parquet(DATA_ROOT + "features.parquet")
labels = pd.read_parquet(DATA_ROOT + "labels.parquet")
gss = GroupShuffleSplit(n_splits=1, test_size=0.2, random_state=42)
train_idx, test_idx = next(gss.split(labels, groups=labels["uniprot"]))
train_ds = TcrdTdlDataset(features.iloc[train_idx], labels.iloc[train_idx])
test_ds = TcrdTdlDataset(features.iloc[test_idx], labels.iloc[test_idx])
# 类别极不均衡(Tclin 3.5%):加权采样替代朴素 shuffle
weights = 1.0 / torch.bincount(train_ds.y)
sampler = torch.utils.data.WeightedRandomSampler(weights[train_ds.y], len(train_ds.y))
train_loader = DataLoader(train_ds, batch_size=256, sampler=sampler)
test_loader = DataLoader(test_ds, batch_size=512, shuffle=False)
model = torch.nn.Sequential(
torch.nn.Linear(train_ds.X.shape[1], 128), torch.nn.ReLU(), torch.nn.Dropout(0.3),
torch.nn.Linear(128, 64), torch.nn.ReLU(),
torch.nn.Linear(64, 4), # 4 个 TDL 类
)
optimizer = torch.optim.AdamW(model.parameters(), lr=1e-3, weight_decay=1e-4)
loss_fn = torch.nn.CrossEntropyLoss() # 配合加权采样处理不均衡
model.train()
for epoch in range(20):
for X, y in train_loader:
optimizer.zero_grad()
loss = loss_fn(model(X), y)
loss.backward()
optimizer.step()
print("epoch", epoch, "loss", float(loss))
</details>
§6.5 坑点清单 ⭐
⚠️ 坑点 1:TDL 是知识状态标签,随版本漂移——用错版本即标签泄漏(分类:标签理解)
问题:Tclin/Tchem/Tbio/Tdark 描述"人类当前知道了多少",不是蛋白的固有属性。Tclin 从 2019 年的 613 个涨到 2022-10 的 704 个,Tdark 占比从约 31% 降到 27.8%——同一蛋白在不同 TCRD 版本可能标签不同。若混用多版本数据或不记录版本号,训练集里"未来知识"会渗入特征(如 2024 版的活性数据预测 2017 版标签),评估虚高且不可复现。
症状:复现他人论文时标签计数对不上;同一模型两次实验结果差异巨大;测试集指标显著优于训练期合理预期。
解决:
- 简单方法:每次下载/查询时记录 TCRD 版本号(如 6.13.4)与下载日期,写入实验配置并冻结数据快照。
- 进阶方法:用官方历史版本页获取与目标论文一致的版本(复现 2021 论文用 v6.7);构建
version → 计数校验表,加载数据后先断言len(df) == 20412且 TDL 计数与官方页一致。- SOTA 方法:把"版本时间切分"变成任务本身——以旧版本训练、新版本 TDL 变迁做前瞻评估,量化"照亮预测"能力;用 DVC 或数据快照工具管理每个版本的数据指纹(hash),实现实验级可追溯。
参考:Kelleher et al., 2023(gkac1033)TDL changes over time 图;UNM TCRD 官方页当前计数表。
⚠️ 坑点 2:Tclin/Tchem 正例继承文献偏倚——模型学会的是"研究热度"而非"可成药性"(分类:偏倚陷阱)
问题:约 10% 人类蛋白获得 75% 研究关注,Tclin/Tchem 的确定高度依赖既有文献与测定投入。用它们做正例训练可成药性分类器时,模型特征中的 GO 注释数、PPI 度、文献分数都与"被研究程度"纠缠,模型输出实质是"这个蛋白像不像已被研究的药靶"。
症状:加入文献计量类特征后 AUC 大涨;模型对 Tdark 集几乎全部输出"不可成药"高分;换到新家族(测试期未见过 GPCR 之外的家族)性能骤降。
解决:
- 简单方法:报告两组结果——全特征 vs 去除文献计量特征(RIF、抗体数、PubMed 分数)的消融,诚定量化捷径成分。
- 进阶方法:按家族分层评估 + 家族留一(Leave-One-Family-Out)交叉验证;对正例池做家族内匹配采样(每个 Tclin 匹配同家族 Tdark 负例)。
- SOTA 方法:采用"阴性学习"(learning from label proportions)或 PU learning(positive-unlabeled),把 Tdark 当未标注池而非真负例;参照 Stoeger et al., 2018(PLoS Biology, e2006643)对"被忽视基因"的偏倚量化框架做反事实校正。
参考:Kelleher et al., 2023(gkac1033)引言部分;Stoeger et al., 2018。
⚠️ 坑点 3:活性阈值家族特异——全局合并活性数据引入系统性偏移(分类:预处理陷阱)
问题:Tchem 判定阈值按家族差异化设定:GPCR ≤100 nM、激酶 ≤30 nM、离子通道 ≤10 μM、非 IDG 家族 ≤1 μM——同样是"高活性",离子通道的标准比激酶宽松三个数量级以上。若用全局单一阈值(如常见错误:一律 30 nM)复算 Tchem 或构造活性特征,离子通道靶点会被系统性低估、激酶被高估。
症状:复算的 Tchem 集合与官方标签在离子通道上大量不一致;家族消融实验中离子通道子集表现异常;活性直方图呈家族分层峰。
解决:
- 简单方法:活性特征一律先转 pAct(-log10 M),再按
fam字段查阈值表逐行二值化(GPCR ≥7.0 / 激酶 ≥7.52 / IC ≥5.0 / 其他 ≥6.0)。- 进阶方法:构建
activity_clean中间表,保留原始值、pAct、家族、来源(ChEMBL/DrugCentral/GtoPdb)四元组,任何下游使用都从该表出发。- SOTA 方法:对跨家族模型改用"家族内分位归一"(在家族内把 pAct 转为分位数),使"高活性"语义跨家族可比;并检查测定类型(IC50/Ki/EC50)异质性,必要时按测定类型再加一层标准化。
参考:UNM TCRD 官方页 Activity Thresholds 节;Sheils et al., 2021(gkaa993)。
⚠️ 坑点 4:文本挖掘数据的双重身份——特征与标签共享信息基底(分类:数据泄漏)
问题:Tdark 判据之一是 Jensen Lab PubMed 文本挖掘分数 < 5;同时 Pharos 的疾病关联证据中也有 Text mining 类型。若用"疾病关联数/文本挖掘关联"做特征、TDL 做标签,特征与标签都来自同一 PubMed 文献池——模型等价于用"文献多不多"预测"文献少不少",评估指标虚高且无科学内容。
症状:只加文献类特征后性能从接近随机跳到 AUC > 0.95;移除文献特征后性能崩塌;错误传播分析发现"预测正确"的样本几乎都是文献量极端的靶点。
解决:
- 简单方法:把特征分为"文献计量族"与"非文献族"(结构/序列/表达),分别报告性能。
- 进阶方法:构建时间切面——文献特征只允许使用标签快照日期之前的数据(如预测 2022 版 TDL 只用 ≤2019 文献计数),切断同源回声。
- SOTA 方法:用因果图显式建模"文献量 → 特征与标签"的共同原因结构;或改用与文献无关的物理特征(AlphaFold 结构 pLDDT、序列嵌入)作为主特征,把文献特征仅用于 stratification。
参考:UNM TCRD 官方页 Tdark 判据;Jensen Lab DISEASES 方法论文(Pletscher-Frankild et al., 2015, Methods 74:83–89)。
⚠️ 坑点 5:GraphQL 全量拉取分页超时——批大小超过 100 极易失败(分类:工程陷阱)
问题:官方 API 对复杂查询在大分页参数下会超时。pypath 库的实现文档明确:chunk_size 建议保持 100,更大"极可能引发超时错误";全量 2 万靶点需数千次请求、约 30 分钟。一次性
top: 20000的天真写法会稳定失败。症状:请求偶发 502/超时;进度在某个 skip 值附近反复失败;拉全量数据耗时远超预期。
解决:
- 简单方法:固定 chunk=100 + 每请求间
time.sleep(0.5);失败即指数退避重试 3 次。- 进阶方法:字段瘦身——只请求必需字段(GraphQL 的优势即客户端定制返回结构);把
targets { ... }拆成多次小查询分别落盘后再 pandas merge。- SOTA 方法:大批量需求直接改走 MySQL 全库 dump(一次性下载,几分钟导入),API 只用于增量更新与线上服务;用 tenacity 库实现可配置重试策略并把每次响应落盘做断点续拉。
参考:pypath
pharos_targets文档;pharos.nih.gov/api 示例查询。
⚠️ 坑点 6:同一蛋白多标识符/多 accession——合并前不做归一必然重复计数(分类:预处理陷阱)
问题:Pharos 覆盖 UniProt 人工审校蛋白组,同一基因可能存在多个 UniProt accession(isoform/历史版本),靶点-疾病-配体证据分散在不同标识符上;跨源合并(UniProt ↔ Ensembl ↔ ChEMBL target_id ↔ MONDO)若不加归一,会把同一靶点当多个样本,GroupSplit 也会失效。
症状:靶点总数超过 20,412;训练/测试集出现"同一基因符号"的样本对;标签分布统计轻微偏移。
解决:
- 简单方法:以
sym(HGNC 基因符号)为主键先去重,再检查uniprot多值情况。- 进阶方法:利用 TCRD 内置的 xref 交叉引用表(UniProt/Ensembl/ChEMBL/MONDO 映射已在库内归一),以官方主 accession 为规范键;外部数据对接时先过 xref 再 join。
- SOTA 方法:对历史 accession 做映射表版本管理(UniProt ID mapping API 定期刷新);在数据管线入口强制"ID 归一门禁"——任何外部表 join 前必须通过覆盖率断言(如 ≥99% 样本能映射到规范键)。
参考:TCRD 官方说明(identifier harmonization 为其核心功能之一);Kelleher et al., 2023(gkac1033)。
⚠️ 坑点 7:Tdark ≠ 不可成药——把它当负例会系统性污染模型(分类:评估误用)
问题:Tdark 的定义是"关于它几乎一无所知"(文献分数低、RIF 少、抗体少),而非"已被证明不可成药"。2019 年分析显示 144 个 Tdark 蛋白竟已有 UniProt 化学交叉引用中的专家审校配体注释。把 5,679 个 Tdark 全部当"不可成药"负例,等于把"缺乏证据"当"存在反证"训练,模型在 Tdark 上的低分是自我实现的循环——这正是 IDG 计划要打破的偏倚。
症状:模型对 Tdark 几乎全部输出"不可成药";“发现的不可成药蛋白"清单与文献计量指标高度相关;实验合作方反馈"预测的暗蛋白其实有活性数据”。
解决:
- 简单方法:训练可成药性模型时把 Tdark 从训练集剔除,仅保留 Tclin/Tchem(正例)与 Tbio(负例)。
- 进阶方法:PU learning——正例 = Tclin/Tchem,未标注池 = Tdark + Tbio,用两步法或 elkan-noto 修正估计真负例分布。
- SOTA 方法:构建"升级监督"——利用版本间 TDL 变迁(v3.0 → v6.7 → v6.13 中从 Tdark 升级的蛋白)作为稀有正例信号,训练"照亮潜力"模型;评估时报告 top-k 命中率而非全量 AUC。
参考:Southan & Oprea 关于 Tdark 与 UniProt 化学交叉引用交集的分析;Kelleher et al., 2023。
⚠️ 坑点 8:TCRD 全库 ≠ Pharos 网页可见数据——字段范围与版本对应关系被忽视(分类:工程陷阱)
问题:TCRD 包含网页不展示的数据(官方明确举例 ClinVar 与 RDO);反向地,网页的部分展示数据可能来自外部 API 实时拉取而非 TCRD 落库值。此外 Pharos 版本(v3.14.1)与 TCRD 版本(6.13.4)编号体系不同步,混用版本描述会让复现者拿错快照。
症状:本地 SQL 查出的字段比网页多/少;对照官方页面复算某统计时数值对不上;论文评审质疑数据版本描述混乱。
解决:
- 简单方法:明确声明数据口径——“TCRD 6.13.4 MySQL dump"或"Pharos v3.14.1 网页/API”,二者择一并全文一致。
- 进阶方法:需要 ClinVar/RDO 等扩展字段时走 SQL dump 路径;需要网页一致性时走 GraphQL 路径,并在脚本头注释写明选择理由。
- SOTA 方法:建立双源校验任务——对随机 100 个靶点,比对 SQL 值与 API 值的一致性并生成差异报告,纳入持续集成;文档中维护"Pharos 版本 ↔ TCRD 版本"对照表。
参考:pharos.nih.gov/help(Pharos License 与数据范围说明);Kelleher et al., 2023(gkac1033)版本表述。
§6.6 数据增强
| 策略 | 操作 | 判定 |
|---|---|---|
| 特征噪声注入 | 对连续特征(novelty、pAct)加高斯噪声做一致性正则 | ✅ 安全 |
| 家族平衡重采样 | 按家族分层过采样稀有类 | ✅ 安全 |
| 文本特征 dropout | 训练时随机屏蔽描述文本 token(对 NLP 主干) | ✅ 安全 |
| 图边 dropout | PPI 网络中随机删边(DropEdge) | ✅ 安全 |
| 随机翻转 TDL 标签 | 任何形式的标签扰动 | ❌ 危险——标签本身是稀缺金标准 |
| 跨家族移植活性阈值 | 用激酶阈值套离子通道数据 | ❌ 危险——见坑点 3 |
| 用未来版本数据增补特征 | 版本时间旅行式合并 | ❌ 危险——见坑点 1 |
§6.7 模型推荐表
| 任务 | 推荐模型 | 理由 |
|---|---|---|
| 可成药性/TDL 分类 | 可解释 MLP(四子网络集成) | PINNED 用此架构达测试集 AUC 0.950 且每个子网络可单独解释 |
| 序列特征建模 | 预训练蛋白语言模型(如 ESM 系列嵌入 + 轻量头) | 补充 Pharos 特征之外的理化信息 |
| 关联预测/重定位 | 异构图神经网络(靶点-疾病-配体三方图) | 天然利用证据类型边;富集分析可作后验过滤 |
| 暗靶点排序 | 学习排序(LambdaMART 类)+ 特征消融 | 排序输出比分类概率更贴近选题决策 |
| 快速基线 | 逻辑回归 + 家族 one-hot + novelty | 任何复杂模型必须先击败此基线 |
§6.8 硬件需求表
| 配置项 | 最低 | 推荐 | 说明 |
|---|---|---|---|
| 内存 | 8 GB | 16 GB | 全库导入后全表扫描可容纳 |
| 磁盘 | 10 GB | 50 GB | dump + 导入库 + 快照 |
| CPU | 4 核 | 8 核 | 特征构建与 GBDT 训练 |
| GPU | 无 | 可选 | 本数据规模 MLP/GBDT 用 CPU 足够;GNN/蛋白语言模型微调时需单卡 |
§6.9 评估指标代码
# 面向极不均衡 TDL 分类的指标套件:Macro-F1 + 每类 PR-AUC + top-k 召回
import numpy as np
from sklearn.metrics import f1_score, precision_recall_curve, auc, top_k_accuracy_score
def evaluate_tdl(y_true, prob, label_order=("Tdark", "Tbio", "Tchem", "Tclin")):
"""prob: (N,4) softmax 概率,列顺序同 label_order。"""
y_pred = np.array(label_order)[prob.argmax(1)]
macro_f1 = f1_score(y_true, y_pred, average="macro")
pr_auc = {}
for i, lbl in enumerate(label_order):
precision, recall, _ = precision_recall_curve((y_true == lbl).astype(int), prob[:, i])
pr_auc[lbl] = auc(recall, precision)
topk = top_k_accuracy_score(y_true, prob, k=2, labels=list(range(4)))
return {"macro_f1": round(float(macro_f1), 4),
"pr_auc_per_class": {k: round(v, 4) for k, v in pr_auc.items()},
"top2_accuracy": round(float(topk), 4)}
选型提示:Tclin 类的 PR-AUC 比 accuracy 有信息量得多(基线占比仅 3.5%);暗靶点排序任务报告 top-100/500 命中率更具行动价值。
§6.10 MLOps 笔记
- 版本即数据契约:把
tcrd_version、download_date、row_count、tdl_counts四元组写入每次训练的 config,并加载数据后立即断言与官方页一致(见坑点 1)。 - 数据指纹:对 dump 文件与导出 parquet 计算 SHA256 存入实验跟踪(MLflow/W&B)。
- 特征血缘:保留
dataType/evidence字段到特征表,任何特征聚合都可回溯证据类型。 - 增量更新策略:API 拉取仅做监控性统计(TDL 计数漂移告警),训练数据统一以年度快照滚动,避免"数据慢慢变"导致模型静默退化。
- 可复现门禁:CI 中固定随机种子 + 固定快照,跑通 §6.4 最小训练脚本作为数据管线冒烟测试。
§7 质量评估与局限性
§7.1 已知偏倚表
| 偏倚类型 | 描述 | 严重程度 | 缓解建议 |
|---|---|---|---|
| 文献偏倚 | 约 10% 蛋白获 75% 研究关注;Tdark 在基金、专利、文献、抗体上系统性地少 | 高 | PU learning 处理 Tdark;文献特征消融(坑点 2) |
| 家族偏倚 | IDG 聚焦 GPCR/激酶/IC,非 IDG 家族注释密度低;家族特征预测力过强 | 高 | 家族分层评估;Leave-One-Family-Out |
| 阈值偏倚 | Tchem 活性阈值家族特异(100 nM/30 nM/10 μM/1 μM),家族间"高活性"语义不可比 | 中 | pAct + 家族内分位归一(坑点 3) |
| 证据类型偏倚 | 疾病关联混合 OMIM 人工审校与文本挖掘自动抽取,噪声水平悬殊 | 中 | 按 dataType 分层建模(坑点 4) |
| 版本漂移偏倚 | TDL 计数随版本变动(Tdark 31%→27.8%),跨版本混合造成标签不一致 | 中 | 版本冻结 + 计数断言(坑点 1) |
| 结构测定偏倚 | 有晶体/AlphaFold 高置信结构的蛋白更可能已有配体,特征与标签共线 | 中 | 结构置信度分层报告 |
§7.2 标注质量
TDL 标签由公开规则自动判定,优势是零标注者间差异、完全可复算;弱点是规则输入(文献分数、抗体计数)本身随时间漂移,且规则边界(如恰好 3 条 RIF)附近的蛋白标签脆弱。三度同行评审(2017/2021/2023 NAR)构成对规则体系的外部质检。使用者应把 TDL 视为"对知识状态的可靠测量"而非"对蛋白本质的测量"。
边界样本的脆弱性值得单独一提:一个 Tdark 蛋白只要再获得 1 条 Gene RIF 或 1 个高活性配体记录就可能跨过阈值升入 Tbio/Tchem——官方 TDL 变迁图显示的正是这种阈值驱动的批量迁移。对建模者的含义是:靠近判定阈值(RIF=3、抗体=50、PubMed 分数=5)的样本标签噪声最大,做误差分析时优先检查这些边界带。
§7.3 泛化性评估表
| 场景 | 失效风险 | 证据 |
|---|---|---|
| 跨家族预测(训练激酶、预测离子通道) | 高——活性阈值与注释密度家族差异大 | 官方阈值表四档差异达三个数量级 |
| 跨版本时间外推 | 中——TDL 迁移方向总体为"照亮",旧标签会系统性低估 | TDL changes over time 图(gkac1033) |
| 非 IDG 家族靶点 | 高——注释密度低于三大 IDG 家族 | IDG 三家族合计仅 1,385/20,412 |
| 病毒-人类 PPI 外推 | 高——P-HIPSTer 为计算预测源,置信度结构不同于实验 PPI | Sheils 2021 新增数据类型说明 |
| 低资源物种迁移 | 不适用——库内为人类蛋白组,跨物种需经 ortholog 表 | 官方数据类型清单 |
§7.4 伦理考量
Pharos 不含个体人类受试者数据,无隐私风险;疾病关联与 GWAS 数据为群体级证据。使用中需注意的伦理点:暗靶点优先级结果可能引导研究资源分配,模型若继承文献偏倚会进一步边缘化已处劣势的研究对象(“马太效应”),建议在成果发布时同时报告偏倚消融分析。靶点-疾病关联属科学假设而非临床结论,禁止未经功能验证即进入临床叙事。
§7.5 公平性
作为知识库,公平性主要体现为"研究对象公平":Tdark 集合中蛋白的功能未知状态部分源于全球科研资源的历史分布。下游模型不应把这种分布固化为"不可成药"判断(坑点 7 的伦理面)。Pharos 本身即是对该不公平的机构级纠正设施(NIH Common Fund 设立动机)。
§7.6 数据漂移
TDL 分布随版本系统性迁移(照亮进程),上游源(ChEMBL、UniProt)各自滚动更新。生产化使用建议:以年度快照冻结训练数据;监控 TDL 计数与官方页的偏差作为漂移告警;版本切换时重新校验特征覆盖率。
最小漂移监控表(建议纳入定时任务,每周执行):
| 监控项 | 数据源 | 告警条件 | 处置 |
|---|---|---|---|
| 全库靶点总数 | GraphQL targets { count } |
≠ 20,412(快照基线) | 冻结训练任务,评估是否升版 |
| Tclin 计数 | facets 查询 | 偏差 > ±2% | 检查新增 MoA 药物,重训稀有类模型 |
| Tdark 占比 | facets 查询 | 单周下降 > 0.5 个百分点 | 排查上游源批量更新 |
| API 可用性 | target(q:{sym:"ACE2"}) 探活 |
连续 2 次失败 | 切换 dump 快照路径 |
§7.7 DAIMS 数据质量评估(24 项)
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ✅ | 以靶点为主键的单行宽表可直接组装 |
| 2 | 唯一标识 | ✅ | UniProt accession 主键 + TCRD 内置 xref 归一表 |
| 3 | 特殊字符 | ✅ | 基因符号/蛋白名编码规范,UTF-8 导入无损坏 |
| 4 | 重复行 | ⚠️ | 同基因多 accession/isoform 需先归一去重(坑点 6) |
| 5 | 缺失编码 | ✅ | "无活性/无关联"是显式知识状态而非随机缺失 |
| 6 | 标签标识 | ✅ | TDL 四级标签显式字段(tdl),规则公开 |
| 7 | 罕见类分组 | ⚠️ | Tclin 仅 3.5%,需加权采样/焦点损失自行处理 |
| 8 | 偏倚评估 | ✅ | 论文显式讨论文献偏倚与照亮进程 |
| 9 | 数据字典 | ⚠️ | GraphQL schema 在线可查、SQL ERD 文档存在;SQL 层字段文档密度一般 |
| 10 | 信息性缺失解释 | ✅ | Tdark 判据即缺失编码机制,官方文档完整 |
| 11 | 设备记录 | ⚠️ | 知识库无仪器采集概念,该项不适用(无设备元数据需求) |
| 12 | 共线性 | ⚠️ | 家族特征与 TDL 强共线,需消融验证 |
| 13 | 编码映射 | ✅ | DTO/MONDO/DO/GO/PANTHER 本体映射完备 |
| 14 | 时间戳处理 | ⚠️ | 提供版本级时间锚点,无记录级更新时间戳 |
| 15 | 划分建议 | ⚠️ | 无官方划分;本条目 §5 提供社区惯例与策略 |
| 16 | 泄漏讨论 | ⚠️ | 官方未显式讨论;本条目 §5.3/§6.5 系统补充 |
| 17 | 标签分布 | ✅ | 四级计数官方公开且可 API 校验 |
| 18 | 测量偏倚 | ⚠️ | 活性跨实验室/跨测定类型异质,需标准化 |
| 19 | 外部验证建议 | ⚠️ | 官方被反链生态健全,但无官方外部验证协议 |
| 20 | 版本记录 | ✅ | 2020 起版本化发布(Pharos v3.x ↔ TCRD 6.x) |
| 21 | 预处理脚本 | ❌ | 无官方一键预处理/训练脚本(代码仓库为平台工程代码) |
| 22 | 合规要求 | ✅ | 开放获取、无 DUA;各源许可清晰可查 |
| 23 | 多模态对齐 | ✅ | 以靶点为中心统一 schema,跨源实体已归一 |
| 24 | 去标识化 | ✅ | 不含个体人类数据,无去标识化需求 |
DAIMS 评分:18 / 24
评分解读:18/24 属"结构化与治理优秀、工程配套欠缺"型——数据本身的知识工程质量(标识、本体、标签、版本)接近满分,扣分集中于三处:无官方预处理脚本(❌ 项 21)、无官方划分与泄漏讨论(⚠️ 项 15/16)、记录级时间戳与测定元数据缺失(⚠️ 项 14/18)。这意味着上手成本在"数据理解"侧很低(官方文档与本条目已覆盖),在"建模工程"侧需自建(划分、归一、标准化)。
对你意味着什么:第一,可以直接信任 tdl/fam/uniprot 三元组作为建模主干,不必重复质量审计;第二,开工前先落地三件工程件——版本冻结断言、GroupSplit 切分器、家族阈值标准化表(§6.3/§6.4 已给模板);第三,向团队/期刊报告结果时主动补齐 DAIMS 中两个 ⚠️ 洞(划分方案 + 泄漏消融),这是该数据集论文复现中的常见审稿质疑点。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| PINNED 模型(Pharos Tclin 标签 + AlphaFold 结构/GO/PPI/定位特征) | PINNED 研究团队(同行评审,2023,PMCID: PMC10354961) | 可成药性二分类(Tclin vs 其余) | 测试集 AUC 0.950 | 与 5 折交叉验证结果一致 | 生物功能子网络贡献最大(单独 AUC 0.924);对 III 期临床成败样本有超越原发表基线的排序能力,作者同时提示此可能反映数据偏倚 |
注:Pharos 无官方排行榜;上表仅收录有同行评审支撑的下游验证。跨论文数值不可直接比较(标签快照版本、特征集与切分协议各异)。
§8 基准性能与生态
§8.1 下游基准与"排行榜"现状
Pharos 作为知识库不存在官方 leaderboard。社区可复现的下游基准以"可成药性分类"为代表:
| 排名 | 模型 | 性能 | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1(参考基线) | PINNED(可解释四子网络神经网络) | 测试集 AUC 0.950 | 2023 | 序列/结构、定位、生物功能、网络信息四分支集成 + 过采样 | Azizi et al., 2023(PINNED: identifying characteristics of druggable human proteins using an interpretable neural network),PMCID: PMC10354961 | 论文提供 |
为何数值不可直接比较:各下游工作的 TCRD 快照版本不同(Tclin 计数从 613 到 704 不等)、特征工程与负例定义(是否纳入 Tdark)各异、切分协议(是否按家族分组)不统一。任何新模型应对比 §6.7 的"快速基线"并声明数据版本,而非对标历史数字。
§8.2 SOTA 总结与选型建议
当前可复现最佳实践是"可解释特征 + 中等容量模型":PINNED 证明四类特征分支的加性集成已能逼近 0.95 AUC,其中生物功能特征贡献最大——这与坑点 2 的偏倚警告互为表里:性能越依赖功能注释,越要警惕文献偏倚。工程选型建议:先跑逻辑回归基线锁定数据版本与切分,再用 GBDT(XGBoost/LightGBM)做特征消融主线,最后视需要引入 GNN/蛋白语言模型;解释性需求高(选题决策场景)优先 PINNED 式结构。
两点经验性提醒:其一,PINNED 训练时对正例做过采样才避免模型坍缩为"全判负例",这与 §6.4 的加权采样等价,复现时不可省略;其二,PINNED 把 20,412 蛋白与 AlphaFold 结构取交集后损失了少量样本(19,873),说明跨源合并的覆盖率损耗是常态,报告结果时应同时给出合并前后的样本量。
§8.3 评测协议建议
复现或发表时请固定并报告五要素:① TCRD 版本号与下载日期;② 标签快照计数(与官方页核对);③ 切分协议(GroupSplit 键、是否家族分层);④ 证据类型过滤规则(是否剔除 Text mining);⑤ 指标(Macro-F1 + 稀有类 PR-AUC + top-k)。缺任何一项,结果都将难以与社区对比。
§8.4 相关数据集表
| 数据集 | 关系 | 互补性 |
|---|---|---|
| ChEMBL | 上游活性源 | 提供 Pharos 之外的原始测定记录与文献细节 |
| DrugCentral | KMC 自建子项目 | Tclin 判定依据;药物标签与作用机制权威源 |
| Open Targets Platform | 平行资源 | 遗传学证据加权评分体系更细,可交叉验证关联 |
| Harmonizome | IDG 成员出品 | 基因-属性关联矩阵,Pharos 雷达图数据来源 |
| Guide to Pharmacology | Tchem 活性源之一 | 专家审校药理学配对,高置信小规模 |
| DGIdb | 引用 Pharos 的下游整合器 | 药物-基因相互作用视角 |
§8.5 关键论文 Top 7
- Nguyen D.-T. et al., 2017, Nucleic Acids Research 45(D1):D995–D1002. DOI: 10.1093/nar/gkw1072 —— Pharos 与 TCRD 的奠基论文,提出"偶然性浏览(serendipitous browsing)"设计理念。
- Oprea T.I. et al., 2018, Nature Reviews Drug Discovery 17:317–332 —— TDL 四级分类体系的方法学源头,系统论证未开发治疗机会。
- Sheils T.K. et al., 2020, Current Protocols in Bioinformatics 69(1). DOI: 10.1002/cpbi.92 —— 官方操作手册,逐协议演示检索与解读。
- Sheils T.K. et al., 2021, Nucleic Acids Research 49(D1):D1334–D1344. DOI: 10.1093/nar/gkaa993 —— 2021 更新:GraphQL API、25 个新数据源、ML-ready 组织。
- Kropiwnicki E. et al., 2022, Current Protocols 2(1). DOI: 10.1002/cpz1.355 —— IDG KMC 工具全家桶(含 Harmonizome、batch 查询实战)入门。
- Kelleher K.J. et al., 2023, Nucleic Acids Research 51(D1):D1405–D1416. DOI: 10.1093/nar/gkac1033 —— 2023 更新:富集分析、热图/UpSet 图、外部数据接入机制;TDL 版本变迁图。
- Azizi et al., 2023, PINNED(PMCID: PMC10354961)—— 基于 Pharos 标签的可解释可成药性模型,当前最具参考性的下游基准。
§8.6 社区活跃度
- 使用规模:月均 3,300 独立用户(截至 2022-11);此前 2020-09 时点为月均约 1,600 新访客、累计约 425,000 次页面浏览。
- 数据消费:TCRD 全库月均下载 140 次(截至 2022-11),累计全库下载超 20,000 次(截至 2020-09-03)。
- 学术影响:初版论文被引 226+(Europe PMC,截至 2026-08);2023 更新论文被引约 48(Semantic Scholar,2026-09 查询)。
- 生态整合:PDB、UniProt、ChEMBL、Reactome、KEGG、GtoPdb、GlyGen、MARRVEL 等主流资源反向链接 Pharos。
- 反馈渠道:官方联系邮箱 pharos@mail.nih.gov;代码仓库接受 issue。
§8.7 生态快照表
| 资源 | 类型 | 链接 | 推荐理由 |
|---|---|---|---|
| Pharos Web | 检索/浏览界面 | https://pharos.nih.gov/ | 靶点详情、富集分析、查询构建器 |
| Pharos API | GraphQL IDE | https://pharos.nih.gov/api | 官方示例查询集,交互式调试 |
| TCRD 下载 | 全库 dump | http://juniper.health.unm.edu/tcrd/ | 全量分析唯一正道 |
| pharos_frontend | 开源代码 | https://github.com/ncats/pharos_frontend | 私有部署前端参考 |
| pharos-graphql-server | 开源代码 | https://github.com/ncats/pharos-graphql-server | schema 与集成逻辑权威来源 |
| IDG 计划门户 | 计划主页 | https://commonfund.nih.gov/idg/ | 资助背景与 DRGC 资源入口 |
| druggablegenome.net | 联盟站点 | https://druggablegenome.net/ | ProteinTimeLine 等计划级资源 |
| pypath | 第三方客户端库 | https://pypath.omnipathdb.org/api/pypath.inputs.pharos.pharos_targets.html | 经实战校准的批量拉取参数(chunk=100) |
§9 相关资源与引用
§9.1 官方资源列表
- 官方主页与关于页(数据类型/来源/许可权威说明):pharos.nih.gov 与 pharos.nih.gov/help
- API 交互文档:pharos.nih.gov/api(GraphQL Playground,DOCS/SCHEMA 面板)
- 全库下载:juniper.health.unm.edu/tcrd(Downloads 标签页含 latest.sql.gz 与历史版本)
- 靶点/疾病/配体寻址规范:
/targets/{uniprot 或 gene_symbol}、/diseases/{name 或 MONDO ID}、/ligands/{name 或 ChEMBL ID} - 官方引用建议:Kelleher, K., Sheils, T. et al., “Pharos 2023: an integrated resource for the understudied human proteome”, Nucl. Acids Res., 2023(官方 help 页指定)
- 计划级资源:NIH Common Fund IDG 页、druggablegenome.net(含 ProteinTimeLine)
§9.2 BibTeX 完整引用块
@article{nguyen2017pharos,
author = {Nguyen, Dac-Trung and Mathias, Stephen and Bologa, Cristian and Brunak, Soren and Fernandez, Nicolas and Gaulton, Anna and Hersey, Anne and Holmes, Jayme and Jensen, Lars Juhl and Karlsson, Anneli and Liu, Guixia and Ma'ayan, Avi and Mandava, Geetha and Mani, Subramani and Mehta, Saurabh and Overington, John and Patel, Juhee and Rouillard, Andrew D. and Sch{\"u}rer, Stephan and Sheils, Timothy and Simeonov, Anton and Sklar, Larry A. and Southall, Noel and Ursu, Oleg and Vidovic, Dusica and Waller, Anna and Yang, Jeremy and Jadhav, Ajit and Oprea, Tudor I. and Guha, Rajarshi},
title = {Pharos: Collating protein information to shed light on the druggable genome},
journal = {Nucleic Acids Research},
year = {2017},
volume = {45},
number = {D1},
pages = {D995--D1002},
doi = {10.1093/nar/gkw1072}
}
@article{oprea2018unexplored,
author = {Oprea, Tudor I. and Bologa, Cristian G. and Brunak, Soren and others},
title = {Unexplored therapeutic opportunities in the human genome},
journal = {Nature Reviews Drug Discovery},
year = {2018},
volume = {17},
pages = {317--332}
}
@article{sheils2020howto,
author = {Sheils, Timothy K. and Mathias, Stephen L. and Kelleher, Keith J. and others},
title = {How to Illuminate the Druggable Genome Using Pharos},
journal = {Current Protocols in Bioinformatics},
year = {2020},
volume = {69},
number = {1},
doi = {10.1002/cpbi.92}
}
@article{sheils2021tcrd,
author = {Sheils, Timothy K. and Mathias, Stephen L. and Siramshetty, Vishal B. and others},
title = {TCRD and Pharos 2021: mining the human proteome for disease biology},
journal = {Nucleic Acids Research},
year = {2021},
volume = {49},
number = {D1},
pages = {D1334--D1344},
doi = {10.1093/nar/gkaa993}
}
@article{kropiwnicki2022getting,
author = {Kropiwnicki, Eryk and Binder, Jessica and Yang, Jeremy J. and others},
title = {Getting Started with the IDG KMC Datasets and Tools},
journal = {Current Protocols},
year = {2022},
volume = {2},
number = {1},
doi = {10.1002/cpz1.355}
}
@article{kelleher2023pharos,
author = {Kelleher, Keith J. and Sheils, Timothy K. and Mathias, Stephen L. and Yang, Jeremy J. and Metzger, Vincent T. and Siramshetty, Vishal B. and Nguyen, Dac-Trung and Jensen, Lars Juhl and Vidovi{\'c}, Du{\v{s}}ica and Sch{\"u}rer, Stephan C. and Holmes, Jayme and Sharma, Karlie R. and Pillai, Ajay and Bologa, Cristian G. and Edwards, Jeremy S. and Math{\'e}, Ewy A. and Oprea, Tudor I.},
title = {Pharos 2023: an integrated resource for the understudied human proteome},
journal = {Nucleic Acids Research},
year = {2023},
volume = {51},
number = {D1},
pages = {D1405--D1416},
doi = {10.1093/nar/gkac1033}
}
@article{azizi2023pinned,
author = {Azizi and others},
title = {PINNED: identifying characteristics of druggable human proteins using an interpretable neural network},
year = {2023},
note = {PMCID: PMC10354961}
}
§9.3 引用指南
- 引用数据集本身:优先官方 help 页指定的 Pharos 2023 论文(kelleher2023pharos);涉及 TDL 体系方法学时加引 oprea2018unexplored。
- 引用具体计数/阈值:注明 TCRD 版本与 UNM TCRD 官方页 URL(计数随版本漂移,见坑点 1)。
- 引用 API/架构细节:引 sheils2021tcrd(GraphQL 引入)与 kelleher2023pharos(富集分析)。
- BibTeX 中作者列表含 “et al.” 的条目(oprea2018unexplored 等)建议引用前核对原文补全,本条目以正文引用链接为准绳。
§10 AI 使用声明卡
§10.1 AI 模型列表
本页面由大语言模型辅助撰写,用于资料整合、结构组织与代码示例起草;所有事实性内容经人工交叉核对后定稿。
§10.2 AI 参与范围
- 参与:初稿起草、章节结构生成、代码示例编写、表格排版。
- 不参与:事实核查的最终裁定、医学与数据工程审核结论、页面发布决定。
§10.3 输入来源列表
- Nguyen D.-T. et al., 2017, Nucleic Acids Research 45(D1):D995–D1002. DOI: 10.1093/nar/gkw1072(https://pubmed.ncbi.nlm.nih.gov/27903890)
- Sheils T.K. et al., 2021, Nucleic Acids Research 49(D1):D1334–D1344. DOI: 10.1093/nar/gkaa993(https://academic.oup.com/nar/article/49/D1/D1334/5958490)
- Kelleher K.J. et al., 2023, Nucleic Acids Research 51(D1):D1405–D1416. DOI: 10.1093/nar/gkac1033(https://pmc.ncbi.nlm.nih.gov/articles/PMC9825581/)
- Oprea T.I. et al., 2018, Nature Reviews Drug Discovery 17:317–332(TDL 体系;经 4/5 号文献引用核实)
- Sheils T.K. et al., 2020, Current Protocols in Bioinformatics 69(1). DOI: 10.1002/cpbi.92(https://staging.europepmc.org/backend/articlerender.fcgi?accid=PMC7818358)
- Kropiwnicki E. et al., 2022, Current Protocols. DOI: 10.1002/cpz1.355(https://currentprotocols.onlinelibrary.wiley.com/doi/full/10.1002/cpz1.355)
- Pharos 官方关于页与许可说明(https://pharos.nih.gov/help)
- Pharos API 示例查询页(https://pharos.nih.gov/api)
- UNM TCRD 官方页(TDL 判据、活性阈值与计数)(https://datascience.unm.edu/tcrd)
- TCRD 全库下载页(http://juniper.health.unm.edu/tcrd/)
- PINNED 论文(可成药性基准)(https://pmc.ncbi.nlm.nih.gov/articles/PMC10354961/)
- Kelleher et al., 2024, Drug Discovery Today(KMC 总览综述)(https://www.sciencedirect.com/science/article/pii/S1359644624000072)
- Pharos and TCRD 章节(规模统计:20,412/339,220/13,704/79)(https://www.vmsci.com/en/articles/5577362__Pharos_and_scpTCRDscp__Informatics_Tools_for_Illuminating_Dark_Targets)
- pypath Pharos 客户端文档(API 分页实践)(https://pypath.omnipathdb.org/api/pypath.inputs.pharos.pharos_targets.html)
- NCATS GitHub 代码仓库(pharos_frontend / pharos-graphql-server)
§10.4 人工校验表
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| §2 医学背景与 ICD-11/SNOMED 映射 | 千方病案医学编辑部 | 逐条比对 NAR 论文与官方文档 | ✅ 已通过/已验证 |
| §3/§4 规模数字与字段字典 | 千方病案医学编辑部交叉审核 | 对照 UNM TCRD 官方页与 API schema 逐值核对 | ✅ 已通过/已验证 |
| §5 划分策略与泄漏分析 | 千方病案医学编辑部交叉审核 | 医疗 AI 数据工程师评审 | ✅ 已通过/已验证 |
| §6 代码示例 | 千方病案医学编辑部交叉审核 | 静态审查 + 官方 API 文档比对 | ✅ 已通过/已验证 |
| §7 DAIMS 与偏倚分析 | 千方病案医学编辑部 | 24 项逐项复核 | ✅ 已通过/已验证 |
| §8/§9 基准与引用 | 千方病案医学编辑部 | 引用逐条溯源 | ✅ 已通过/已验证 |
§10.5 AI 生成章节标注
全篇初稿由 AI 辅助生成;§2 医学背景、§7.7 DAIMS 逐项结论与 §10.3 引用清单经人工逐条核实修订;代码示例经人工静态审查。
§10.6 最后人工审核日期
2026-09-05(与 §0 审核日期一致)
页面状态:published(全部内容已完成审核并发布)
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- omim — 共享标签:基因组学与多组学 / 医疗NLP / 知识图谱
- reactome — 共享标签:基因组学与多组学 / 医疗NLP / 知识图谱
- gene-ontology — 共享标签:基因组学与多组学 / 医疗NLP / 知识图谱
- hgnc — 共享标签:基因组学与多组学 / 医疗NLP
- mondo — 共享标签:基因组学与多组学 / 医疗NLP / 知识图谱
- s2orc — 共享标签:医疗NLP / 知识图谱
- pharmgkb — 共享标签:基因组学与多组学 / 医疗NLP / 知识图谱
- cometa — 共享标签:医疗NLP / 知识图谱
- string — 共享标签:基因组学与多组学 / 知识图谱
- disgenet — 共享标签:基因组学与多组学 / 知识图谱
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

