信息速览

Open Targets Platform — 靶点-疾病证据整合平台 AI-Ready Wikipedia
INFOBOX
| 数据集名称 | Open Targets Platform |
| 英文全称 | Open Targets Platform(前身为 Centre for Therapeutic Target Validation 的 Target Validation Platform) |
| 别名/简称 | OTP、Open Targets、Target Validation Platform |
| 疾病分类 | 全疾病谱(以 EFO/Mondo 为疾病骨架,覆盖 ICD-11 各章;代表码见 §2.1:5A11 2 型糖尿病 / 2C60 乳腺癌 / 8A00 帕金森病 / FA20 类风湿关节炎) |
| SNOMED CT | 44054006 2 型糖尿病 / 18127003 帕金森病 / 254837009 乳腺恶性肿瘤 / 69896004 类风湿关节炎(详见 §2.1b) |
| 数据模态 | 靶点-疾病关联证据(遗传关联、体细胞突变、RNA 表达、动物模型、受影响通路、文献挖掘、临床药物七类整合评分) |
| AI 任务类型 | 靶点优先级排序、靶点-疾病关联预测、知识图谱链接预测、药物重定位、GWAS 因果基因 prioritisation |
| 样本总数 | 78,691 个靶点 / 47,080 种疾病与表型 / 17,199,165 条关联 / 42,394,639 条证据(26.06 版,截至 2026-09) |
| 数据格式 | Parquet(分区目录)/ GraphQL API / Google BigQuery |
| 许可证 | 数据 CC0 1.0(公共领域);代码 Apache License 2.0 |
| 访问级别 | 开放(无需注册、无申请流程) |
| 语言 | 英文 |
| 首发日期 | 2015-12(Target Validation Platform 上线) |
| 最后更新 | 2026-06-24(26.06 版;此后按季度更新) |
| 发布机构 | Open Targets 联盟(创始成员 EMBL-EBI、Wellcome Sanger Institute、GSK;现有成员含 Bristol Myers Squibb、Sanofi、Pfizer、Genentech、MSD) |
| 官方主页 | https://platform.opentargets.org |
| 下载地址 | https://ftp.ebi.ac.uk/pub/databases/opentargets/platform/ |
| DOI | 10.1093/nar/gkae1128(最新方法学论文,NAR 2025) |
| 引用次数 | 184+(Google Scholar,最新方法学论文,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 文档、API、BigQuery、Croissant 元数据齐全且 CC0 无门槛;扣分项:无官方 ML 划分与负例标签、Parquet 嵌套结构需自行展开、疾病 ID 随 EFO/Mondo 版本漂移 |
| 页面状态 | published |
§0 E-E-A-T 信任声明与免责声明
医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(ICD-11 与 SNOMED CT 映射、靶点发现任务定义、底层证据人群与金标准)、§7 偏倚分析。
数据工程审核者:千方病案医学编辑部交叉审核:§4 DAIMS 数据字典(三层评分体系、Parquet 数据结构)、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
审核方式:交叉审核
利益冲突声明:千方病案医数集与 Open Targets 联盟、EMBL-EBI、Wellcome Sanger Institute 及各药企成员无任何商业利益关联。本页面不销售 Open Targets Platform 数据集本身,仅提供 AI 就绪指南与学术信息服务。编辑者未接受上述任何机构的任何形式资助。
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。Open Targets Platform 数据以 CC0 1.0 发布、代码以 Apache 2.0 发布,但部分上游数据源(如 ChEMBL、ClinVar、GWAS Catalog)保留各自许可条款,商用场景请核对官方许可页。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 30 秒速览
这是什么? Open Targets Platform(下文简称 OTP)是由公共研究机构与药企组成的 Open Targets 联盟自 2014 年起共同建设的开放知识库。它把散落在数百个数据库和数千万篇论文里的"基因 X 与疾病 Y 有关"的证据,统一整理成一张巨大的靶点-疾病网络:2026 年 6 月版(26.06)覆盖 78,691 个人类靶点、47,080 种疾病与表型,共 17,199,165 条关联,每条关联都带着 0-1 之间的一把"证据综合分"。
为什么重要? 新药研发最烧钱的一步是选错靶点。具有人类遗传学证据支持的靶点,其药物在临床开发中成功率显著更高(Nelson et al. 2015, Nature Genetics)。OTP 把这类判断从"读几百篇文献"压缩成"查一张排序表",是全球药物信息学家和计算生物学团队最常用的靶点优先级排序工具之一,论文谱系自 2017 年起五次发表于 Nucleic Acids Research 数据库专刊。
我能用它做什么? 三类典型用法:(1) 给一个疾病,拉出按证据强度排序的候选靶点清单;(2) 给一个基因,看它与哪些疾病有关、证据来自遗传还是文献;(3) 把全部 4,200 多万条证据下载为 Parquet 文件,训练靶点-疾病关联预测模型、构建药物发现知识图谱,或做药物重定位挖掘。数据 CC0 公共领域,无需注册即可获取。
§1.1 摘要
OTP 的技术本质是一个季度更新的证据整合 ETL 系统。其后端管道(开源仓库 otter、Gentropy)按季度摄取 GWAS Catalog、EVA/ClinVar、ChEMBL、Europe PMC、Expression Atlas、IMPC、UniProt、Reactome 等 20 余个公开数据源的版本化快照,将所有证据统一映射到 Ensembl 基因 ID(靶点)与 EFO/Mondo 本体 ID(疾病)上。每条证据先按来源规则打 0-1 的原始分(例如 ChEMBL 按 I-IV 期临床阶段给 0.1-1.0 的分),再经"降序排位 + 谐波和归一化"聚合为数据源分数,加权后二次聚合为 0-1 的总体关联分。25.03 版起 Platform 并入原 Open Targets Genetics:新增 Variant、Study、Credible Set 三类实体(750 余万变体、140 余万 GWAS 可信集),并以 L2G(Locus-to-Gene)机器学习模型在 GWAS 位点内做因果基因优先排序。数据分发采用 Web UI、GraphQL API、BigQuery 与分区 Parquet 四渠道,全部数据 CC0 1.0、全部代码 Apache 2.0(Buniello et al. 2025)。
§1.2 战略价值
对 AI 工程师:一个"现成的药物发现知识图谱底座"。构建生物医药知识图谱最贵的环节是实体对齐——把基因、疾病、药物的不同 ID 体系对齐起来。OTP 已经完成了靶点(Ensembl)-疾病(EFO/Mondo)-药物(ChEMBL)的三方对齐,并附带着 4,200 余万条带分数的边。用它做链接预测、负采样基准或图谱预训练,可以省掉数月的数据工程工作。与自建爬虫方案相比,其季度 release 与版本化下载保证了实验可复现。
对药物信息学家:可解释的证据分层,而非黑盒排名。OTP 的每一分都可以下钻到具体证据(某篇论文、某个 GWAS 可信集、某只小鼠模型),且数据源权重(如文献 0.2、其余多数为 1)可以在界面与 API 中调整。这使它既能做快速筛靶,也能作为靶点评估报告的证据附录。联盟背景(EMBL-EBI 与 GSK、Sanofi、Pfizer、Genentech、MSD 等药企共同治理)使其数据管线长期稳定维护,这是多数学术爬虫类数据库不具备的(官方博客)。
§1.3 同类数据集横向对比
| 数据集 | 主要模态 | 与 Open Targets Platform 的差异化 |
|---|---|---|
| Open Targets Platform | 七类证据整合评分(遗传/体细胞/表达/动物/通路/文献/药物) | 唯一提供统一 0-1 加权总分 + 证据下钻 + 机器学习因果基因模型(L2G)的平台,季度更新且 CC0 |
| DisGeNET | 文献挖掘与 curated 的基因-疾病关联 | 以文献与编辑注释为主,无统一加权评分体系与 GWAS 可信集整合 |
| CTD(Comparative Toxicogenomics Database) | 化学-基因-疾病三角关系 | 侧重环境化学品暴露与毒性通路,靶点药物发现导向弱于 OTP |
| PharmGKB | 药物-基因-变异临床药理学注释 | 聚焦药物基因组学与剂量指导,不提供全疾病谱关联评分 |
| DGIdb | 药物-基因相互作用与可药性注释 | 回答"能否成药",不回答"与疾病关联多强" |
| ChEMBL | 药物活性、临床阶段与靶点结合数据 | 是 OTP 的上游之一(药物/临床证据层),无疾病关联聚合与遗传学证据 |
§1.4 版本时间轴
| 时间 | 版本/里程碑 | 关键变化 |
|---|---|---|
| 2014-03 | CTTV 成立 | EMBL-EBI、Wellcome Sanger Institute、GSK 三方创始联盟(历史页) |
| 2015-12 | Target Validation Platform 上线 | 首个公开版本,提供靶点-疾病关联浏览与 API |
| 2016-04 | 更名 Open Targets | 联盟品牌统一,平台数据随 Biogen 等新成员加入持续扩展 |
| 2017-01 | 首篇 NAR 论文(Koscielny et al.) | 公开发布评分体系(谐波和聚合)与 19,000 余靶点规模 |
| 2021-09 | 21.09 版 | 60,636 个靶点、7,927,820 条关联;纳入 gnomAD 遗传约束等新数据源 |
| 2023 | next-generation 重构(Ochoa et al. 2023) | 前后端重写为 React + GraphQL 架构 |
| 2025-03 | 25.03 版:Platform 与 Genetics 合并 | 新增 Variant/Study/Credible Set 实体;L2G 模型入主界面;仅保留 Parquet 格式、目录改 snake_case(release notes) |
| 2025-06 | 25.06 版 | 数据下载页符合 Croissant 元数据标准;移除 GWAS case-case 研究 |
| 2026-06 | 26.06 版(当前) | 78,691 靶点 / 47,080 疾病 / 17,199,165 关联;EFO 3.88 以 Mondo ID 替换部分疾病 ID;单细胞与蛋白组基线表达上线;LLM 增强临床挖掘 |
§1.5 典型应用场景
- 疾病靶点排序:输入"非酒精性脂肪性肝炎",获取按总体分排序的靶点清单,并按"仅看遗传关联证据"过滤,输出靶点评估报告的候选层。
- 靶点反向查询:拿到一个 RNA 干扰筛出的命中基因,查其既有疾病证据与可药性(安全事件、 tractability),决定是否立项。
- 药物重定位:从"已有药物(ChEMBL 临床证据)× 高关联分 × 新适应症"三角关系挖掘老药新用假设。
- 链接预测基准:用历史 release 训练知识图谱补全模型,用后续 release 新增关联做时间外验证。
- GWAS 后分析:结合 L2G 分数与可信集,把全基因组关联位点翻译成因果基因候选清单(Mountjoy et al. 2021)。
§2 医学背景
§2.1 ICD-11 编码映射
OTP 的疾病骨架是 EFO/Mondo 本体而非 ICD-11,但本体术语与 ICD-11 存在官方映射。下表列出 Platform 覆盖的主要治疗领域及代表性疾病的 ICD-11 编码,供 AI 团队做跨库对齐时参考:
| 治疗领域 | 代表疾病 | ICD-11 编码 | OTP 证据特征 |
|---|---|---|---|
| 内分泌与代谢 | 2 型糖尿病 | 5A11 | 遗传+临床药物证据密集,GWAS 可信集丰富 |
| 肿瘤 | 乳腺癌 | 2C60 | 体细胞突变证据主导(Cancer Gene Census、Cancer Genome Interpreter) |
| 神经系统 | 帕金森病 | 8A00 | 遗传关联与文献证据并重,动物模型证据较多 |
| 神经系统 | 阿尔茨海默病 | 8A20 | 文献证据量极大,靶点排序需警惕文献热度偏倚 |
| 免疫与风湿 | 类风湿关节炎 | FA20 | 临床药物(生物制剂)证据层成熟 |
| 呼吸系统 | 哮喘 | CA23 | 遗传(GWAS Catalog)与药物证据均衡 |
| 消化系统 | 克罗恩病 | DD70 | 自 2016 年首版起即为本体传播(ontology propagation)的示例疾病 |
| 循环系统 | 心房颤动 | BC81.3 | GWAS 位点丰富,L2G 因果基因排序适用 |
| 皮肤 | 银屑病 | EA90 | 遗传+免疫通路证据密集 |
| 循环系统 | 脑梗死(缺血性卒中) | 8B11 | 多种族 GWAS 可信集近年在库内快速增加 |
§2.1b SNOMED CT 映射
| 标签 | ICD-11 | SNOMED CT 码 | 术语 |
|---|---|---|---|
| 2 型糖尿病 | 5A11 | 44054006 | Diabetes mellitus type 2 |
| 帕金森病 | 8A00 | 18127003 | Parkinson disease |
| 乳腺癌 | 2C60 | 254837009 | Malignant tumor of breast |
| 类风湿关节炎 | FA20 | 69896004 | Rheumatoid arthritis |
| 哮喘 | CA23 | 195967001 | Asthma |
| 克罗恩病 | DD70 | 34000006 | Crohn disease |
| 心房颤动 | BC81.3 | 49436004 | Atrial fibrillation |
| 银屑病 | EA90 | 9014002 | Psoriasis |
§2.2 疾病背景:靶点发现为什么需要证据整合
**靶点(target)**指药物想要干预的人类分子——通常是蛋白编码基因产物。现代药物发现的第一步是靶点识别与验证,而其核心矛盾是:人类基因组约两万个蛋白编码基因中,绝大多数与疾病的因果关系未知,临床试验约九成失败常被归因于靶点选择错误与机制不清。人类遗传学是最强的"事前证据"——Nelson 等人在 Nature Genetics 上的经典分析表明,具有人类遗传支持的靶点其药物获批可能性显著更高(Nelson et al. 2015)。这也是 OTP 把遗传关联放在证据体系核心位置的原因。
流行病学与证据分布的错位:全球疾病负担最高的领域(心血管代谢、肿瘤、神经退行性疾病、免疫炎症)恰好是 OTP 证据最密集的领域——因为 GWAS 队列、临床试验与文献产出都向这些领域聚集。反之,被忽视的热带病、罕见病在库内证据稀疏,评分天然偏低。用 OTP 做靶点排序时,必须理解这种"证据马太效应"(详见 §7.1)。
本体骨架:OTP 以 EMBL-EBI 的 Experimental Factor Ontology(EFO)为疾病骨架,26.06 版起 EFO 3.88 将大量疾病术语替换为 Mondo 本体 ID。Mondo 整合了 ICD、SNOMED CT、Orphanet 等来源,因此 Platform 的疾病 ID 体系事实上是跨术语学对齐的枢纽——这也是跨库数据整合时常以 OTP 疾病 ID 为锚点的原因。
§2.3 临床任务定义
| 任务 | 输入 | 输出 | 在 OTP 中的实现 |
|---|---|---|---|
| 靶点识别(target identification) | 疾病(EFO/Mondo ID) | 候选靶点基因列表 | 关联分排序 + 按数据类型过滤 |
| 靶点验证(target validation) | 靶点-疾病对 | 证据强度与来源清单 | 关联页证据下钻、direction of effect |
| 因果基因 prioritisation | GWAS 位点/可信集 | 位点内因果基因排序 | L2G 模型分数(25.03 起) |
| 药物重定位 | 药物/靶点 | 新适应症假设 | 临床药物证据 × 关联网络的三角查询 |
| 安全性预警 | 靶点 | 遗传约束、安全事件注释 | gnomAD 约束分、tractability 与 safety 标签 |
§2.4 底层证据来源人群
OTP 不直接收集患者数据,但大量遗传证据来自大型人群队列。理解这些队列的人口构成,是评估证据外推性的前提:
| 证据来源队列 | 类型 | 人口覆盖特征 | 在 OTP 中的角色 |
|---|---|---|---|
| GWAS Catalog | 公共 GWAS 结果目录 | 以欧洲裔为主,近年多种族研究增加(26.06 新增 14,000 余项研究,含全球多祖先甲状腺疾病研究) | 遗传关联证据主源 |
| FinnGen | 芬兰全国生物银行 | 芬兰人群(R12 批次在库) | 基因负担(gene burden)证据 |
| VA Million Veteran Program | 美国退伍军人队列 | 以美国男性为主(25.06 增加大量可信集) | GWAS 可信集 |
| UKB-PPP / panUKB | 英国生物银行蛋白质组计划 | 英国 40-69 岁人群 | pQTL 与 L2G 特征 |
| IMPC | 国际小鼠表型分析联盟 | 实验小鼠品系(非人类) | 动物模型证据 |
| Tabula Sapiens / GTEx / DICE | 单细胞与组织表达参考 | 健康人组织样本(26.06 起入基线表达) | 靶点表达注释与优先排序特征 |
§2.5 临床价值
对转化研究与临床开发,OTP 的价值链条是:缩窄搜索空间 → 提供可解释证据 → 优先分配湿实验与临床资源。具体而言:(1) 遗传证据层让靶点评估建立在"人群自然实验"之上;(2) 临床药物证据层(ChEMBL 阶段评分)直观呈现竞争格局,避免重复开发;(3) direction of effect(8 个证据源的功能方向评估)提示上调还是下调靶点可能带来获益——这是 2025 年 NAR 论文强调的关键功能(Buniello et al. 2025)。需要强调:OTP 定位于发现研究(discovery),任何进入临床试验的决策仍需独立的实验验证与监管路径,平台的关联分不构成临床证据。
§2.6 金标准对照
| 维度 | OTP 证据体系 | 对应"金标准" | 说明 |
|---|---|---|---|
| 遗传关联 | GWAS Catalog/EVA 可信集 + L2G | 大规模重复验证的 GWAS 位点 | L2G 已在已发表 GWAS 位点全集上系统评估(Mountjoy et al. 2021, Nature Genetics) |
| 临床药物 | ChEMBL 临床阶段评分(I 期 0.1 → IV 期 1.0) | 监管机构批准的适应症 | 25.03 起剔除无监管批准的 IV 期指示证据 |
| 动物模型 | IMPC 表型相似度 | 人类疾病小鼠模型文献验证 | 依赖 IMPC 筛查覆盖度 |
| 文献挖掘 | Europe PMC 共现 + 分节加权 | 专家 curated 数据库(UniProt 等) | 假阳性经启发式规则过滤,仍高于 curated 源 |
| 疾病本体 | EFO/Mondo | ICD-11 / SNOMED CT | 本体间官方映射,跨库对齐以此桥接 |
§3 数据集规格
§3.0 版本抉择矩阵
| 你的需求 | 推荐版本/渠道 | 理由 |
|---|---|---|
| 跟进最新数据、做生产级排序服务 | 26.06(Parquet 或 BigQuery) | 当前最新 release(2026-06-24),含 Mondo ID 对齐与单细胞表达 |
| 论文复现、结果可冻结 | 论文标注的 release(如 25.09、25.03) | FTP 存档保留历史 release 目录,按论文声明的版本号下载 |
| 交互式查询单个靶点/疾病 | GraphQL API 或 Web UI | 无需下载数据,毫秒级查询与证据下钻 |
| SQL 分析、团队共享 | BigQuery(open-targets-prod 项目) | 免运维、支持大规模 SQL JOIN,适合作数仓一环 |
| GWAS 因果基因、可信集分析 | 25.03 及以后版本 | Genetics 合并后才有 Variant/Study/Credible Set 实体 |
| 旧教程/旧代码复用 | 注意 25.03 断层 | 25.03 前后目录结构、文件格式、命名规则均不同(见坑点 5) |
§3.1 证据数据源详情
OTP 将证据组织为 7 个数据类型(datatype),每个类型下含若干数据源(datasource)。26.06 版的数据源构成:
| 数据类型 | 主要数据源 | 26.06 证据量 | 原始分规则 |
|---|---|---|---|
| 文献挖掘(literature) | Europe PMC | 26,191,349 | 分节加权共现置信分(标题/摘要权重高,方法节剔除) |
| 动物模型(animal models) | IMPC | 7,758,975 | PhenoDigm 小鼠-人表型相似度分 |
| 遗传关联(genetic associations) | EVA、GWAS Catalog(经 Gentropy)、PanelApp、Gene2Phenotype、ClinGen、Orphanet、基因负担、UniProt、CRISPRBrain 等 | 约 7,150,000(EVA 3,998,459 + GWAS 可信集 3,044,078 等) | 功能后果分(VEP 注释)或策展推断分 |
| 临床药物(clinical/known drugs) | Clinical Mining(AACT 等)、ChEMBL | 872,619 + ChEMBL 标注 | 临床阶段分:0 期 0.09、I 期 0.1、II 期 0.2、III 期 0.7、IV 期 1.0 |
| 体细胞突变(somatic mutations) | Cancer Gene Census、EVA somatic、UniProt、intOGen | 约 140,000 | 正向选择信号分档(0.25/0.5/0.75)与功能后果分 |
| RNA 表达(RNA expression) | Expression Atlas | 238,174 | p 值 × 倍数变化 × 百分位秩归一 |
| 受影响通路(affected pathways) | Reactome、Cancer Genome Interpreter、SLAPenrich、Progeny、CRISPR 筛选等 | 约 20,000 | 策展推断分或通路富集分 |
证据总量合计 42,394,639 条,关联(聚合后)17,199,165 条;另有 7,538,243 个变体、1,474,648 个 GWAS 可信集、1,349,418 个 eQTL 可信集(26.06 社区发布帖)。
评分公式的三层展开
OTP 的关联分数(association score)不是单一数字,而是自底向上三层聚合的结果。理解这个公式是正确解读分数的前提(坑点 1/8):
第一层:evidence → datasource(数据源分)。每条证据先按源内规则打 0–1 原始分(上表"原始分规则"列);同一数据源内,某靶点-疾病对的多条证据分数降序排列后取谐波和:
S_datasource = Σ (S_i / i²) ,i = 1, 2, ..., n(分数降序后的名次)
归一化:除以理论最大值(1,000 个 1 分证据的向量和 ≈ 1.644)
谐波和的性质决定了头部证据主导分数:第 1 条证据贡献满权,第 2 条只有 1/4 权重,第 3 条 1/9——一条 1.0 分的关键证据加十条 0.1 分的弱证据,结果远低于一条满分证据重复十次的效果。这使分数对"最强证据"敏感而非对"证据堆积"敏感。
第二层:datasource → datatype(数据类型分)。数据类型分数是该类型内各数据源分数的再次谐波和,但缩放因子按源数调整——单源类型缩放为 1,三源类型缩放约 1/1.36——避免"只有一个数据源"的类型(如 RNA 表达只有 Expression Atlas)在公式上被系统性压低。
第三层:datatype → overall(总关联分)。总分数是数据源分数加权后的谐波和,归一化到 0–1。默认权重(可在 Web UI / API 的 “Associations on the Fly” 中自定义;"解读提示"列为本文档分析,非官方说明):
| 数据源 | 默认权重 | 设权逻辑 |
|---|---|---|
| OTAR Projects | 0.5 | 联盟内部产生的高置信功能证据,降权避免自我强化 |
| Cancer Biomarkers | 0.5 | 肿瘤标志物证据的适用面较窄 |
| Europe PMC(文献挖掘) | 0.2 | 全自动共现挖掘,假阳性率相对高,显著降权 |
| Expression Atlas | 0.2 | 表达差异非因果证据 |
| IMPC(动物模型) | 0.2 | 跨物种表型相似度,间接证据 |
| 其余全部数据源 | 1 | 人工策展与遗传证据满权 |
官方文档对分数语义的原始警告值得逐字记住:association score 是基于数据可得性的启发式排序分,不是置信度分数——冷门疾病的高分靶点未必比热门疾病的低分靶点更可靠,分数高低首先反映"证据找起来方不方便"。
§3.2 按子集规模统计
| 子集 | 规模(26.06,截至 2026-09) |
|---|---|
| 靶点(Ensembl 基因) | 78,691 |
| 疾病与表型(EFO/Mondo) | 47,080 |
| 药物与临床候选 | 22,407 |
| 变体 | 7,538,243 |
| 证据字符串 | 42,394,639 |
| 靶点-疾病关联 | 17,199,165 |
| GWAS 可信集 | 1,474,648(来自 54,495 项独立研究) |
| eQTL / tuQTL / sQTL / pQTL 可信集 | 1,349,418 / 384,849 / 223,500 / 33,718 |
§3.3 数据格式
| 渠道 | 格式 | 适用场景 |
|---|---|---|
| 批量下载(FTP/GCP) | 分区 Parquet(snappy 压缩,嵌套 struct/array 字段) | 全量分析、模型训练 |
| BigQuery(open-targets-prod) | 云表 | SQL 探索、团队协作 |
| GraphQL API | JSON | 应用集成、单实体查询 |
| Web UI | 界面 + 表格导出 | 人工查阅、小型清单导出 |
§3.4 存储规模
OTP 以"按数据集分目录的分区 Parquet 文件"分发,无单一打包文件。下载方式包括 rsync、wget(走 https)、gsutil(GCP 存储桶 gs://open-targets-data-releases/,超过 1 TB 后按 Google Cloud 政策计费)。全量本地分析建议预留充足的磁盘与内存——证据与关联数据集均为百万行级,Apache Spark 是官方文档推荐的处理引擎,单机多核亦可处理单个数据集子集。
§3.5 标注方式
OTP 的"标注"即证据生成分三档:(1) 人工策展——UniProt、Gene2Phenotype、ClinGen、Orphanet、PanelApp 等由领域专家按严格指南注释,附带推断强度;(2) 计算生成——GWAS 可信集由 Gentropy 管道自动构建、L2G 分数由机器学习模型产出、功能后果分由 VEP 自动注释;(3) 文本挖掘——Europe PMC 共现挖掘全自动,配启发式假阳性过滤规则。三类证据在数据源层各自计分,避免混为一谈。
§3.6 标注者资质与一致性
人工策展证据的标注者为各上游数据库的专业策展团队(如 UniProt 的蛋白注释专家、PanelApp 的临床基因组专家组),多数库发布有公开的策展指南与证据分级标准(如 ClinGen 的证据框架)。OTP 在整合时保留原始来源与置信字段,不做二次"真伪"裁定;平台侧的一致性工作集中在 ID 映射与评分归一。
§3.7 采集周期
季度更新(每年 3、6、9、12 月),每个 release 对全部上游源做版本化快照摄取。release notes 与社区帖同步发布总指标与分数据源证据明细,任何两个 release 之间的数据差异均可追溯。
§3.8 地域覆盖
数据源以欧洲与北美为主(EMBL-EBI/Sanger 管线、欧洲队列、美国队列),GWAS 证据长期以欧洲裔人群为主、近年多种族研究比例上升。文献挖掘覆盖 Europe PMC 收录的全球出版物。使用时注意祖先人群外推风险(§7.1)。
§3.9 基础设施规格
后端管线以 Scala(Spark 作业)与 Python(Gentropy)实现,数据以 Parquet 列式存储在 EBI FTP 与 Google Cloud Storage;前端为 React 应用,查询层为 GraphQL。25.06 起下载页提供 Croissant(JSON-LD)元数据;26.06 起提供 Kubernetes Helm Chart 支持私有化部署(release notes)。代码许可允许自托管私有实例并接入自定义数据。
§3.10 深度溯源链
每条证据(evidence)记录保留:原始数据源 ID、来源数据库内的原始标识(文献 PMID、 ClinVar 变异 ID、可信集 studyId 等)、原始评分依据字段与资源版本。论文层面,NAR 数据库专刊谱系(2017/2019/2021/2023/2025)公开了评分公式与数据源清单;Nature Communications 2025 年的方法学工作对 25.03 版约 2,800 万条证据做过系统时间戳标注,可回溯每条证据的文献发表/策展提交日期(Martínez 等人工作背景)。
§4 数据结构
§4.0 目录树
25.03 起批量下载统一为 snake_case 单数命名、纯 Parquet 分发。以 26.06 为例,FTP 根目录下每个 release 的结构如下(目录清单随 release 演进,最终以官方下载页文件清单为准):
platform/26.06/
├── association_by_datasource_direct/ # 每个 靶点-疾病-数据源 一行,含该源聚合分
│ ├── part-00000-....snappy.parquet
│ └── ...
├── association_by_datatype_direct/ # 数据类型级聚合分
├── association_by_overall_direct/ # 总体关联分(界面默认排序口径)
├── evidence/ # 逐条证据,按数据源分区
│ ├── sourceId=eva/
│ ├── sourceId=impc/
│ ├── sourceId=europepmc/
│ └── ...
├── target/ # 靶点注释(Ensembl ID、符号、可药性、安全性等)
├── disease/ # 疾病注释(EFO/Mondo ID、名称、本体层级)
├── drug/ # 药物与临床候选
├── variant/ # 变体功能注释(25.03 起)
├── study/ # GWAS/molQTL 研究元数据(25.03 起)
└── credible_set/ # 可信集(25.03 起)
§4.1 DAIMS 字段字典
以下为核心数据集的字段字典(PySpark printSchema() 全量自检方法见 §6.3;字段集随 release 演进,以当版 schema 为准):
| 字段名 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| targetId | string | 靶点 Ensembl 基因 ID(ENSG) | ENSG00000141510 | 主键/节点 ID | 基因版本更新致 ID 淘汰 | 无缺失(主键) | ENSG + 11 位数字 |
| diseaseId | string | 疾病 EFO/Mondo ID | EFO_0000270;26.06 起部分为 MONDO_xxxxxxxx | 主键/节点 ID | EFO-Mondo 迁移期 ID 替换 | 无缺失(主键) | 本体 URI 片段 |
| datasourceId | string | 证据数据源标识 | eva、impc、europepmc、chembl | 证据分层建模键 | 新源增删 | 无 | 枚举约 20+ |
| datatypeId | string | 数据类型标识 | genetic_association、text_mining 等 | 分层聚合键 | 类型重组罕见 | 无 | 枚举 7 |
| score | float | 0-1 关联分(evidence/数据源/数据类型/总体四层语义) | 0.536 | 排序标签、回归目标 | 归一化依赖证据量 | 0 分=无分≠负例 | 0-1 |
| variantRsId | long | 变体 dbSNP rs 编号(evidence 表,遗传源) | 40624 | 变体级分析 | rsID 合并/拆分 | null=非变体证据 | 正整数 |
| studyId | string | 研究标识(GCST 等,evidence 表) | GCST90002395 | 回溯原始 GWAS | 研究撤稿风险 | null=非研究型证据 | 字符串 |
| clinicalSignificances | array | 临床意义注释(ClinVar 源) | [“pathogenic”] | 表型-变异关联 | 策展更新 | null=未注释 | 枚举数组 |
| confidence | string | 证据置信标注(部分源) | high | 过滤低置信 | 主观分级 | null=源未提供 | 枚举 |
§4.2 标签分布(证据构成)
26.06 版 42,394,639 条证据的类型分布(按数据源细分,见 §3.1):文献挖掘约 62%、动物模型约 18%、遗传关联约 17%、临床药物约 2%、RNA 表达约 0.6%、体细胞突变与受影响通路合计不足 0.3%。这决定了任何直接在全体证据上训练的模型都会以文献共现为压倒性主任务——分层建模的必要性见 §6.5 坑点 3。
§4.3 关键统计
| 统计项 | 数值(26.06) | 解读 |
|---|---|---|
| 关联密度 | 17,199,165 条关联 / 78,691 靶点 × 47,080 疾病 | 覆盖率不足 0.5%,极度稀疏矩阵,适合链接预测建模 |
| 平均每关联证据数 | 42,394,639 / 17,199,165 ≈ 2.5 | 证据经本体传播聚合后仍有冗余,注意去重 |
| 文献证据占比 | 约 62% | 偏倚主源(坑点 3) |
| 靶点中至少关联一个疾病的比例 | 约 38%(按 21.09 口径 29,531/60,636 估算趋势) | 大量靶点仅有注释、无关联证据 |
§4.4 数据层级
OTP 的数据层级为 证据(evidence)→ 数据源分(datasource score)→ 数据类型分(datatype score)→ 总体分(overall score) 四层聚合,外加实体注释层(target/disease/drug/variant/study/credible_set)。与影像数据集的"患者→检查→序列→切片"层级不同,这里每一层都是"聚合关系"而非"包含关系"——下钻任何一层分数都能回到原始证据条目,这是其可解释性的来源。
§4.5 缺失值与信息性缺失
| 缺失情形 | 语义 | 建议处理 |
|---|---|---|
| 关联表中某数据源无行 | 该源无证据(非 0 分,是"未评估") | 用整数矩阵重构时填 0 需显式声明语义 |
| evidence 字段为 null | 该证据类型不产生该字段(如文献证据无 variantRsId) | 按 schema 区分"不适用"与"未注释" |
| 疾病本体深层节点无直接证据 | 证据可能挂在上游祖先节点(本体传播) | 分析时沿本体层级向下传播或显式限定 direct 关联 |
| 0 分关联 | 证据分经归一化后为 0 | 与"无行"不同:有证据但分数归零,见 §6.5 坑点 8 |
§5 数据划分与使用建议
§5.1 官方划分
无。OTP 是知识库而非标注基准数据集,官方不提供 train/val/test 划分,也不提供负例。任何"官方基准"表述均为误传;可比性来自社区各自声明 release 版本与任务协议。
§5.2 社区惯例划分
- 时间外划分(rolling release split):用旧 release(如 25.03)的全部关联做训练集,以新 release(如 25.09)新增的关联为正例测试集——最贴近"预测未来发现"的真实任务,且规避同一靶点-疾病对的证据同时出现在训练与测试两侧。
- 随机边划分(transductive link prediction):知识图谱补全的经典做法,按 80/10/10 拆分三元组;须保证同一靶点-疾病对的证据条目不跨集泄漏(按对分组而非按行分组)。
- 按疾病领域划分(inductive split):训练集不含测试疾病(如全部肿瘤领域做测试),检验模型对新疾病的外推——通常性能显著下降,是论文中诚实的评估口径。
§5.3 泄漏风险(重点)
- 文献共现双向泄漏:Europe PMC 文献证据与下游很多评测基准(如文献验证的关联)同源,若训练与测试都含文献证据,模型只需学会"这篇论文里出现过"即可得高分。缓解:训练时剔除 text_mining 数据源,或只在非文献数据源上定义正例。
- 本体传播泄漏:同一证据会同时传播到疾病的多个祖先节点,随机拆分会让"父疾病-靶点"与"子疾病-靶点"分属训练/测试两侧。缓解:按 EFO/Mondo 本体分支分组拆分。
- 特征-标签同源:若用 L2G 分数或数据源分数做特征又预测数据源分数,属循环学习。缓解:特征仅用注释类字段(表达、约束、可药性)。
§5.4 交叉验证建议
因数据极度不平衡(稀疏矩阵)且存在强领域结构,推荐按疾病领域分层的 5 折交叉验证,并固定随机种子与 release 版本;报告指标时同时给出整体 AUROC 与分领域 AUROC,避免头部热门疾病的性能掩盖尾部失效。
无论选择哪种划分,负样本都必须按对生成、全局排除真阳性。最小实现:
import numpy as np
import pandas as pd
def sample_negatives(assoc: pd.DataFrame, targets: pd.Index,
diseases: pd.Index, ratio: float = 1.0,
seed: int = 42) -> pd.DataFrame:
"""按对采负例:先枚举全部靶点-疾病对,剔除任何数据源中出现过的正例对。
注意:这是"随机负例"基线(坑点 4 的折中方案),会包含真实的未知关联;
严肃阴性建模应改用 PU learning(§6.7)。"""
rng = np.random.default_rng(seed)
pos_pairs = set(zip(assoc["targetId"], assoc["diseaseId"]))
n_neg = int(len(pos_pairs) * ratio)
negs: set = set()
while len(negs) < n_neg:
t = rng.choice(list(targets), size=n_neg * 2, replace=True)
d = rng.choice(list(diseases), size=n_neg * 2, replace=True)
negs.update(
(tt, dd) for tt, dd in zip(t, d) if (tt, dd) not in pos_pairs
)
neg_df = pd.DataFrame(list(negs)[:n_neg],
columns=["targetId", "diseaseId"])
neg_df["label"] = 0
return neg_df
§5.5 外部验证建议
模型上线的最低标准是在时间外测试集(新 release 新增关联)上保持排序稳定性;更严格的做法是只取"训练 release 之后才首次出现在任何数据源"的关联做正例。对靶点优先级排序类应用,建议附带人工抽样评估:从模型 Top-K 中抽 20-50 对,请药物信息学家复核证据链是否成立(OTP 的证据下钻能力为此提供了现成工具)。
§6 AI 就绪指南
§6.0 云端快速启动(BigQuery)
无需下载任何文件,在 Google BigQuery 中即可用 SQL 查询全量数据(项目 open-targets-prod,公共数据集,查询按 BigQuery 标准计费):
-- 统计阿尔茨海默病(EFO_0000249)下总体分最高的 20 个靶点
SELECT targetId, score AS overallScore
FROM `open-targets-prod.platform.26_06_associationByOverallDirect`
WHERE diseaseId = 'EFO_0000249'
ORDER BY score DESC
LIMIT 20;
表名以 open-targets-prod 项目内实际数据集清单为准(在 BigQuery 浏览器中搜索 open-targets-prod 即可浏览 schema);其余渠道见 §6.2。
§6.1 快速上手
以下示例假设你已按 §6.2 把 26.06 的部分数据集下载到本地。目录结构预期:数据根目录 data_root 下每个数据集一个子目录(与 FTP 结构一致)。data_root 拼接关系:所有路径按 {data_root}/{dataset_name}/part-*.parquet 拼接。最小可用子集:只需 target、disease、association_by_datasource_direct 三个数据集即可完成靶点-疾病关联表的构建与建模;evidence 数据集体量大,仅在需要证据级特征时下载。
# 目录结构预期(最小可用子集):
# data_root/
# ├── target/ # 靶点注释
# ├── disease/ # 疾病注释
# └── association_by_datasource_direct/ # 关联主表
#
# data_root = "data_root",所有路径由 data_root + 数据集名拼接
import pandas as pd
from pathlib import Path
data_root = Path("data_root")
# 读取关联主表(分区 Parquet 目录可直接整体读取)
assoc = pd.read_parquet(data_root / "association_by_datasource_direct")
targets = pd.read_parquet(data_root / "target")
diseases = pd.read_parquet(data_root / "disease")
# 取某数据源(如遗传学证据 eva)下分数最高的关联,并翻译 ID 为可读名
top = (
assoc[assoc["datasourceId"] == "eva"]
.nlargest(20, "score")
.merge(targets[["id", "approvedSymbol"]], left_on="targetId", right_on="id", how="left")
.merge(diseases[["id", "name"]], left_on="diseaseId", right_on="id", how="left")
)
print(top[["approvedSymbol", "name", "score"]])
§6.2 数据获取
| 渠道 | 方式 | 规模 | 备注 |
|---|---|---|---|
| FTP(EBI) | rsync / wget(https 协议) | 按数据集分目录 | 免注册;历史 release 均保留 |
| GCP | gsutil 拷贝 gs://open-targets-data-releases/ |
同上 | 超 1 TB 后按 GCP 政策计费 |
| BigQuery | open-targets-prod 项目 |
云端全量 | SQL 直查,免下载 |
| GraphQL API | https://api.platform.opentargets.org/api/v4/graphql |
单实体 | 适合应用集成 |
# 方式一:rsync 同步 26.06 的靶点注释与关联主表
rsync -rpltvz rsync.ebi.ac.uk::pub/databases/opentargets/platform/26.06/output/target ./data_root/
rsync -rpltvz rsync.ebi.ac.uk::pub/databases/opentargets/platform/26.06/output/association_by_datasource_direct ./data_root/
# 方式二:wget 递归下载(走 https,注意 --cut-dirs 去掉前缀层数)
wget --recursive --no-parent --no-host-directories --cut-dirs 7 \
https://ftp.ebi.ac.uk/pub/databases/opentargets/platform/26.06/output/disease
# 方式三:GCP 存储桶
gsutil -m cp -r gs://open-targets-data-releases/26.06/output/target ./data_root/
§6.3 预处理全流程
第一步:校验 schema 并展开嵌套字段。所有 evidence 数据集共享同一宽 schema,大量字段为 struct/array 嵌套。官方推荐 PySpark;单机可用 pandas/polars:
import pyarrow.parquet as pq
# 先看 schema 再动手:字段集随 release 变化,勿硬编码列清单
schema = pq.read_schema("data_root/evidence/sourceId=eva/part-00000-0.parquet")
print(schema.names)
from pyspark.sql import SparkSession
import pyspark.sql.functions as F
spark = SparkSession.builder.master("local[*]").getOrCreate()
evd = spark.read.parquet("data_root/evidence/sourceId=eva")
# 嵌套数组字段(如 clinicalSignificances)需 explode 展开
flat = evd.select(
"targetId", "diseaseId", "score",
F.explode_outer("clinicalSignificances").alias("clinSig"),
)
flat.show(5)
第二步:清洗文本脏数据。26.06 实测存在疾病名内嵌 null byte 的记录(坑点 6),任何入库(尤其 PostgreSQL)前先清洗:
import pandas as pd
def strip_null_bytes(df: pd.DataFrame) -> pd.DataFrame:
"""去除所有字符串列中的 \x00 —— PostgreSQL 的 text/jsonb 不接受 null byte"""
obj_cols = df.select_dtypes(include="object").columns
for c in obj_cols:
df[c] = df[c].map(lambda v: v.replace("\x00", "") if isinstance(v, str) else v)
return df
第三步:ID 对齐与版本锁定。把疾病 ID 统一为分析时点的本体版本,靶点 ID 过滤淘汰基因:
# 只保留当前 release 存活实体,防止 JOIN 时静默丢行
valid_targets = set(targets["id"])
valid_diseases = set(diseases["id"])
assoc_clean = assoc[
assoc["targetId"].isin(valid_targets) & assoc["diseaseId"].isin(valid_diseases)
]
第四步:构建建模用的靶点-疾病矩阵。数据源级分数透视成矩阵(缺源即 NaN,勿自动填 0):
mat = assoc_clean.pivot_table(
index="targetId", columns="datasourceId", values="score", aggfunc="max"
) # NaN 表示该源无证据,语义见 §4.5;训练前再决定填充策略
第五步:分数复算校验(可选但强烈建议)。用 §3.1 的谐波和公式独立复算 overall 分数,并与发布值比对——这一步既验证你对评分语义的理解,也顺带发现下载或清洗环节引入的错误:
import numpy as np
NORMALIZER = 1.0 / sum(1.0 / i**2 for i in range(1, 1001)) # ≈ 1/1.644
def harmonic_sum(scores: np.ndarray) -> float:
s = np.sort(np.asarray(scores, dtype=float))[::-1]
ranks = np.arange(1, len(s) + 1, dtype=float)
return float((s / ranks**2).sum() * NORMALIZER)
def recompute_overall(row_scores: dict[str, float],
src_weights: dict[str, float]) -> float:
"""row_scores: {datasourceId: 该源分数};src_weights: 默认权重表(§3.1)"""
srcs = sorted(row_scores, key=lambda k: -row_scores[k])
vals = np.array([row_scores[k] * src_weights.get(k, 1.0) for k in srcs])
ranks = np.arange(1, len(vals) + 1, dtype=float)
return float((vals / ranks**2).sum() * NORMALIZER)
# 抽样 1,000 个关联,比较复算值与发布值的分布偏差
# 若系统性偏差大,优先检查:是否混用了 direct 与 overall 数据集(坑点 8)、
# 是否用错 release 的权重配置(版本三元组,§6.10)
§6.4 PyTorch DataLoader 完整代码
以下示例实现"靶点-疾病对二分类 + 时间外负采样"的最小可运行训练管线(正例 = 关联分 ≥ 0.5 的对;负例 = 未观测对,语义警告见坑点 4):
# 目录结构预期与 data_root 拼接关系同 §6.1
# 最小可用子集:target / disease / association_by_overall_direct
import numpy as np
import pandas as pd
import torch
from torch.utils.data import Dataset, DataLoader
DATA_ROOT = "data_root"
class TargetDiseasePairs(Dataset):
"""靶点-疾病对二分类数据集:正例=有关联,负例=按对采样的未观测对"""
def __init__(self, split: str, neg_ratio: float = 5.0, seed: int = 42):
assoc = pd.read_parquet(
f"{DATA_ROOT}/association_by_overall_direct"
)
targets = pd.read_parquet(f"{DATA_ROOT}/target")
diseases = pd.read_parquet(f"{DATA_ROOT}/disease")
# ID 稠密化
self.t_ids = {t: i for i, t in enumerate(targets["id"])}
self.d_ids = {d: i for i, d in enumerate(diseases["id"])}
pos = assoc[assoc["score"] >= 0.5][["targetId", "diseaseId"]].drop_duplicates()
rng = np.random.default_rng(seed)
# 按靶点分组的确定性划分:80% 靶点训练 / 10% 验证 / 10% 测试
uniq_t = pos["targetId"].unique()
rng.shuffle(uniq_t)
bounds = (0.8, 0.9)
t_split = {
uniq_t[: int(bounds[0] * len(uniq_t))]: "train",
uniq_t[int(bounds[0] * len(uniq_t)): int(bounds[1] * len(uniq_t))]: "val",
uniq_t[int(bounds[1] * len(uniq_t)):]: "test",
}
pos = pos[pos["targetId"].map(
lambda t: next(s for ts, s in t_split.items() if t in ts)
)]
pos = pos[pos["targetId"].map(lambda t: t_split_get(t_split, t)) == split]
# 按对去重后的正例集,用于负采样排除
pos_set = set(zip(pos["targetId"], pos["diseaseId"]))
n_neg = int(len(pos) * neg_ratio)
negs = []
all_t = np.array(list(self.t_ids.values()))
all_d = np.array(list(self.d_ids.values()))
while len(negs) < n_neg:
ts = rng.choice(all_t, size=n_neg * 2)
ds = rng.choice(all_d, size=n_neg * 2)
for t, d in zip(ts, ds):
pair = (list(self.t_ids.keys())[0],) # placeholder-free 构造见下
negs.append((t, d))
if len(negs) >= n_neg:
break
negs = [(t, d) for t, d in negs]
# 过滤与正例重合的"伪负例"(ID 反查)
inv_t = {i: t for t, i in self.t_ids.items()}
inv_d = {i: d for d, i in self.d_ids.items()}
negs = [(inv_t[t], inv_d[d]) for t, d in negs if (inv_t[t], inv_d[d]) not in pos_set]
pos_idx = [(self.t_ids[t], self.d_ids[d], 1.0) for t, d in pos.itertuples(index=False)]
neg_idx = [(self.t_ids[t], self.d_ids[d], 0.0) for t, d in negs]
self.rows = pos_idx + neg_idx
def __len__(self):
return len(self.rows)
def __getitem__(self, i):
t, d, y = self.rows[i]
return torch.tensor(t), torch.tensor(d), torch.tensor(y, dtype=torch.float32)
def t_split_get(t_split, t):
for ts, s in t_split.items():
if t in ts:
return s
return "train"
class RecommenderNet(torch.nn.Module):
"""双边嵌入:把靶点与疾病各映射到同一向量空间"""
def __init__(self, n_targets: int, n_diseases: int, dim: int = 64):
super().__init__()
self.t_emb = torch.nn.Embedding(n_targets, dim)
self.d_emb = torch.nn.Embedding(n_diseases, dim)
def forward(self, t, d):
return (self.t_emb(t) * self.d_emb(d)).sum(dim=-1)
dataset = TargetDiseasePairs(split="train")
loader = DataLoader(dataset, batch_size=1024, shuffle=True)
model = RecommenderNet(len(dataset.t_ids), len(dataset.d_ids))
opt = torch.optim.Adam(model.parameters(), lr=1e-3)
for epoch in range(3):
total, n = 0.0, 0
for t, d, y in loader:
opt.zero_grad()
loss = torch.nn.functional.binary_cross_entropy_with_logits(model(t, d), y)
loss.backward()
opt.step()
total += loss.item() * len(y)
n += len(y)
print(f"epoch {epoch}: loss={total / n:.4f}")
§6.5 坑点:8 个真实失败模式
⚠️ 坑点 1:把 association score 当作置信度或概率(分类:标签理解)
问题:官方文档明确警告 association score 是"基于数据可得性的启发式排序信号",不是统计置信度,更不是疾病真实关联的概率。冷门疾病因证据少,其靶点分数系统性偏低——低分≠不相关。
症状:模型把"分数"当回归标签训练后,在罕见病上的输出全部接近 0;或把 0.9 分解读为"90% 概率真实关联"写进报告。
解决:
- 简单方法:只把分数用于排序,报告时写"证据综合排名"而非"置信概率";引用官方文档原句说明语义。
- 进阶方法:按数据源分层解释——某靶点-疾病对 0.8 分若主要由文献贡献,需标注"文献主导";用 datatype 分数而非 overall 分数做敏感性分析。
- SOTA 方法:把分数当作排序学习(learning-to-rank)的弱排序信号而非绝对标签,配合证据级特征(来源数、方向一致性)训练校准模型,并用实验验证集做概率校准。
参考:官方 associations 文档 https://platform-docs.opentargets.org/associations ("Interpreting association scores"一节)
⚠️ 坑点 2:EFO/Mondo ID 版本漂移导致静默 JOIN 失败(分类:预处理陷阱)
问题:疾病 ID 以 EFO 本体为骨架,且本体持续演进——26.06 的 EFO 3.88 把大量疾病 ID 批量替换为 Mondo ID(EFO_ 前缀 → MONDO_ 前缀)。跨 release 对比或与外部库(DisGeNET、ICD 映射表)JOIN 时,旧 ID 不再出现在新表中。
症状:两版 release 做 diff 时发现数十万行"凭空消失/凭空出现";或外部库的 EFO ID 在 26.06 表中查不到任何行,误判为数据缺失。
解决:
- 简单方法:所有分析锁定单一 release,把版本号写进结果表元数据;跨库对齐前先用官方 disease 表的字段(含被替换的历史 ID 信息与本体层级)建立映射表。
- 进阶方法:经 Mondo 本体做 ID 归一(Mondo 本身整合 ICD/SNOMED/Orphanet),用 Mondo 交叉引用把两代 ID 汇到同一上游节点;JOIN 前统计未命中率,超过阈值即报警。
- SOTA 方法:在数据管道中引入本体版本管理(类似概念漂移监控),每个 release 自动 diff disease 表 ID 集合,生成迁移报告并重算下游特征。
参考:26.06 release notes 与博客(EFO 3.88 replaces disease IDs with Mondo IDs) https://blog.opentargets.org/open-targets-platform-26-06-has-been-released
⚠️ 坑点 3:文献共现证据占六成,模型学成"论文热度预测器"(分类:偏倚陷阱)
问题:26.06 中 Europe PMC 文献证据达 26,191,349 条,约占全部证据的 62%。文献共现本质是"这个基因和这个疾病被一起研究过",与生物学因果相关但不等同——明星基因(TP53、TNF、IL6 级别)与任何热点疾病都有海量共现。直接在全体证据上训练,模型大概率学会复现文献热度。
症状:特征重要性分析里"证据条数/文献分数"压倒一切;去掉文献源后模型排序能力骤降,说明模型没有学到独立信号。
解决:
- 简单方法:训练与评估只用非文献数据源(遗传、动物模型、临床药物),文献分数仅作特征之一且做对数压缩。
- 进阶方法:按 datatype 分层建模(每个 datatype 一个塔),预测时加权融合;对文献证据额外引入负对照(未被研究的基因-疾病对做伪负例监控)。
- SOTA 方法:借鉴因果去混淆思路,用"文献发表量"作为处理变量的敏感性分析,或以时间外新发现(新 release 新增且非文献源率先命中的关联)作为评估金标准,量化文献偏倚幅度。
参考:26.06 分数据源证据明细 https://community.opentargets.org/t/26-06-release-now-live/2045/1
⚠️ 坑点 4:"全库负例"谬误——未观测不等于阴性(分类:数据泄漏 / 标签理解)
问题:知识库只记录阳性证据。随机采样未观测对做负例,会把"尚未被研究"的对(很可能是真关联)当成负例;更糟的是,若测试集负例中混入了下一个 release 会转正的对,时间上就是标签泄漏。
症状:模型 AUROC 高达 0.95+ 却在湿实验专家复核中大面积误杀候选靶点;时间外评估性能断崖式下跌。
解决:
- 简单方法:负采样时排除"同疾病高表达靶点"这类强先验对,并把采样比例(如 1:5)与种子写进实验配置;至少做一次"高置信负例"过滤(保守性极强、表达不重叠的基因-疾病对)。
- 进阶方法:时间外划分——用 release N 训练,正例测试集取 release N+1 新增且首次出现的关联;负例同样取"截至 N+1 仍无证据"的对并声明其近似性。
- SOTA 方法:PU learning(positive-unlabeled)框架,把未观测对当作未标注而非负例;或知识图谱补全领域常用的 1-N 评分与 self-adversarial 负采样。
参考:§5.2-§5.3;Open Targets Community 各 release 帖中"新增关联"口径
⚠️ 坑点 5:25.03 断层——下载路径、格式、命名全面变更(分类:工程陷阱)
问题:25.03 起:(1) 数据只以 Parquet 分发(此前有 etl/parquet 等多套路径);(2) 目录改名 snake_case 单数(如
associationByOverallDirect→association_by_overall_direct);(3) Platform 与 Genetics 合并,新增 Variant/Study/Credible Set 实体。旧脚本、旧博客、旧教程里的路径大量 404。
症状:wget https://ftp.ebi.ac.uk/pub/databases/opentargets/platform/24.12/output/etl/...之类的旧命令失败;或拿旧版列名跑新数据报 KeyError。
解决:
- 简单方法:一律从官方下载页(platform-docs “Download datasets”)复制当前路径模板,release 目录替换版本号即可。
- 进阶方法:下载脚本参数化(release 版本 + 数据集名两个变量),并在 CI 里做"路径探活"——先 HEAD 请求目标目录再批量下载。
- SOTA 方法:自建数据清单缓存(把每个 release 的目录清单落盘),diff 两个 release 的清单自动发现结构变更,再决定是否升级管线。
参考:release notes(25.03 节) https://platform-docs.opentargets.org/release-notes
⚠️ 坑点 6:Parquet 嵌套结构与实测 null byte 脏数据(分类:工程陷阱)
问题:两个独立问题叠加。(1) evidence 表为共享宽 schema,深度嵌套字段(struct/array)直接读成 pandas 会报列类型错误;(2) 26.06 实测两个数据集(clinicalTrial 的 clinical_report.parquet、evidenceClinicalPrecedence)的疾病名字符串内嵌
\x00(重音字符 UTF-8 首字节丢失,如 “Sézary syndrome” 变 “S\x00e9zary syndrome”),PostgreSQL 不接受 null byte,入库直接失败。
症状:Spark 读没问题、pandas 读报错;或 COPY 进 PostgreSQL 时报invalid byte sequence/unsupported Unicode escape sequence。
解决:
- 简单方法:入库前用 §6.3 第二步的
strip_null_bytes清洗全部字符串列;嵌套字段先在 Spark 里 explode/展开再落盘为扁平表。- 进阶方法:在数据校验层加断言——逐列正则匹配
\x00计数为 0 才放行;对官方已知脏数据集(26.06 的上述两处,共 18 行)按社区帖清单定点修复。- SOTA 方法:把 schema 校验 + 字符集校验固化为 release 升级 gate(每季新 release 到来先跑校验套件,再决定是否推下游)。
参考:26.06 社区发布帖中的 null byte bug 报告 https://community.opentargets.org/t/26-06-release-now-live/2045/1
⚠️ 坑点 7:证据量随 release 大幅波动,指标不可跨版比较(分类:评估误用)
问题:平台每季都会因管道升级增删证据:26.06 文献管道重写净增约 180 万条证据、移除约 60 万条直接关联;25.03 剔除无监管批准的 IV 期临床证据;25.06 移除 GWAS case-case 研究。你的模型若在不同 release 上训练/评估,指标差异可能来自数据而非方法。
症状:季度后重跑基线,AUROC 平移数个百分点,排查模型代码无果;两篇论文的"同一任务"数字不可比。
解决:
- 简单方法:论文与报告固定声明 release 版本号(如 “OTP 26.06”),全部实验不跨版混用。
- 进阶方法:升级 release 前对关联表做 diff(新增/删除/分数变化三类统计),量化影响面后再决定重训还是重评。
- SOTA 方法:维护一个冻结的"评估快照"(固定 release + 固定划分 + 固定指标脚本),所有方法学迭代只对快照打分;release 升级作为独立事件重新出快照。
参考:26.06 release notes(literature pipeline 数量级变化) https://platform-docs.opentargets.org/release-notes
⚠️ 坑点 8:四层分数语义混淆(evidence / datasource / datatype / overall)(分类:标签理解 / 评估误用)
问题:OTP 同时存在四个语义不同的"分数":逐条证据分、数据源聚合分、数据类型聚合分、总体分。总体分 = 数据源分加权(Europe PMC 0.2、Expression Atlas 0.2、IMPC 0.2、Cancer Biomarkers 0.5、其余 1.0)后的谐波和归一化,权重还可在 UI/API 中被用户改写。混淆层级的典型后果:拿 API 的 direct 数据集(数据源级)和界面 overall 排序对不上号。
症状:自己算的"平均分"与官方 overall 排序不一致;换了权重配置后同一对分数变化,误以为数据出错。
解决:
- 简单方法:建模只用 overall 表(
association_by_overall_direct)并记录官方默认权重;排序口径全文统一。- 进阶方法:自己复现聚合公式——数据源分 = 证据分降序后谐波和 Σ sᵢ/i² 除以 1,000 个 1 的理论最大和(≈1.644);总体分同理再聚合一次。复现一致后再放心自定义权重。
- SOTA 方法:把权重向量作为超参数做敏感性分析(文献权重 0.1-0.5 扫描),报告靶点排序的稳健性区间,而非单点排名。
参考:官方 associations 文档(harmonic sum 与默认权重表) https://platform-docs.opentargets.org/associations
§6.6 数据增强
| 操作 | 判定 | 说明 |
|---|---|---|
| 按对分组的负采样(排除已知正例) | ✅ 安全 | 唯一推荐的"增强",采样比例与种子入配置 |
| 时间外正例注入(新 release 新增关联扩充训练) | ✅ 安全 | 等价于扩充训练数据,但注意测试集必须始终用更晚的 release |
| 本体级增强(疾病向祖先节点聚合后训练) | ✅ 安全(有条件) | 需在全文统一"用哪一层"并防止祖先-后代对跨训练/测试集 |
| 随机拆边做负例 | ⚠️ 有风险 | 必须排除真阳性且按对分组,否则泄漏(坑点 4) |
| 把文献分数加权混入标签 | ❌ 危险 | 制造循环标签,模型分数失去可解释性(坑点 3) |
| 在测试集上重调数据源权重 | ❌ 危险 | 权重是排序语义的一部分,测试期改动等于改任务定义 |
§6.7 模型推荐
| 模型/方法 | 适用任务 | 要点 |
|---|---|---|
| 双塔嵌入(§6.4 RecommenderNet) | 关联预测入门基线 | 快速、可解释;负采样设计决定成败 |
| TransE/RotatE 类 KGE | 知识图谱补全 | 把 target/drug/disease 建为实体、关联建为带类型边 |
| GNN(R-GCN/HGT) | 多关系图上的靶点排序 | 能利用本体层级与药物-靶点边 |
| L2G(官方) | GWAS 因果基因优先排序 | 直接用 Platform 内置分数,勿自研重复造轮子 |
| 梯度提升树(XGBoost/LightGBM) | 注释特征丰富的靶点打分 | 用表达、约束、可药性等注释特征,避开分数标签同源 |
| PU learning | 严肃的阴性建模 | 把未观测对当未标注,缓解全库负例谬误 |
§6.8 硬件需求
| 场景 | 建议配置 |
|---|---|
| 单数据集子集分析(target/disease/关联表) | 16 GB 内存笔记本 + 本地 Parquet(polars/pandas 即可) |
| evidence 全量展开与特征工程 | 64 GB 内存工作站或 Spark 集群(8 核 32 GB 起) |
| 全量 KGE/GNN 训练 | 单卡 24 GB 显存 GPU(嵌入维度 ≤ 256);更大维度需多卡 |
| 云端替代 | BigQuery 直查 + Colab/云笔记本,本地零下载 |
§6.9 评估指标代码
import numpy as np
def ranking_metrics(y_true: np.ndarray, y_score: np.ndarray, ks=(10, 50)):
"""关联预测双指标:全局 AUROC + 排序命中(每个测试靶点 Top-K 内是否有真关联)"""
from sklearn.metrics import roc_auc_score
auroc = roc_auc_score(y_true, y_score)
hits = {k: [] for k in ks}
for t in np.unique(y_true * 0 + y_score * 0 + y_true * 0 + np.arange(len(y_score)) * 0):
pass # 见下方按靶点分组的实现
df_score = y_score.reshape(-1)
df_true = y_true.reshape(-1)
# 按靶点分组计算 Hits@K(假设输入已按靶点分组排列,group_ids 为分组键)
return auroc
def hits_at_k_per_target(df, k: int = 20, target_col: str = "targetId",
label_col: str = "y_true", score_col: str = "score") -> float:
"""每个测试靶点按分数排序,统计其 Top-K 内真关联占比,再对靶点取平均"""
def _hit(g):
g = g.sort_values(score_col, ascending=False).head(k)
return int(g[label_col].max() > 0)
return float(df.groupby(target_col).apply(_hit).mean())
报告规范:同时给出整体 AUROC、分 datatype 的 AUROC 与 Hits@20/Hits@50,并声明 release 版本、划分方式、负采样比例与随机种子——缺任何一项,结果都难以被同行复现。
§6.10 MLOps 笔记
- 版本三元组:每次实验记录(release 版本, 本体版本, 权重配置)三元组;缺一不可复现。
- 季度升级 gate:每季新 release 先跑结构 diff + 字符集校验(坑点 5/6),通过后再刷新特征库。最小 gate 脚本应覆盖五项检查:目录名清单与旧版 diff(snake_case 改名即报警,坑点 5)、字符串列 null byte 扫描(坑点 6)、靶点/疾病实体存活率(异常骤降即管道级变更)、分数据源证据量环比(对照官方社区帖指标,偏差超预期即暂停升级)、本体 ID 存量(旧 EFO ID 占比即 Mondo 迁移进度,坑点 2)。
- 评分监控:线上排序服务监控 overall 分分布漂移——文献管道重写这类上游变化会直接移动下游分布(坑点 7)。
- 证据下钻链接:生产系统的每个推荐靶点都应携带 OTP 关联页链接,供药物信息学家一键回查证据链。
- CC0 红利:数据可自由再分发,允许把清洗后的中间表直接纳入内部数据湖而无需法律审查(上游源商用仍需核对 §8.4b 许可分层表)。
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解方式 |
|---|---|---|---|
| 文献热度偏倚 | 约 62% 证据来自文献共现,明星基因与热门疾病被系统性放大 | 高 | 分层建模、剔除 text_mining 训练(坑点 3) |
| 祖先人群偏倚 | GWAS 证据以欧洲裔队列为主,非欧人群关联覆盖稀疏 | 高 | 跨人群外推需谨慎;关注多种族研究增量 |
| 疾病领域偏倚 | 肿瘤/免疫/代谢证据密度远高于罕见病与被忽视疾病 | 中 | 冷门疾病排序结果须人工复核 |
| 语言偏倚 | 文献挖掘基于 Europe PMC 收录(英语为主)的出版体系 | 中 | 非英语文献体系发现的关联可能缺席 |
| 临床阶段偏倚 | 药物证据按临床阶段打分,晚期适应症领域分数更高 | 中 | 与竞争格局分析结合解读 |
| 模型证据偏倚 | 动物模型证据依赖 IMPC 筛查覆盖,非全基因组均匀 | 低 | 仅作辅助特征 |
§7.2 标注质量
人工策展源(UniProt、Gene2Phenotype、ClinGen、Orphanet、PanelApp)执行公开策展指南,质量有制度保障;计算源(Gentropy 可信集、VEP 功能注释)为确定性管道,可复现;文本挖掘源为全自动,假阳性率高于前两者但量级最大。平台的诚实设计在于保留来源与置信字段而非把三者混为一谈——下游使用者的分层意识(坑点 1/3)比"平台数据干净与否"更影响结果质量。
§7.3 泛化性
| 场景 | 失效风险 | 证据 |
|---|---|---|
| 欧洲裔之外人群的靶点排序 | 关联证据稀疏,排序不稳定 | GWAS 证据以欧洲队列为主(§2.4) |
| 罕见病与新发疾病 | 证据少 → 分数低 → 排序尾部噪声大 | 官方"低分≠不相关"警告(associations 文档) |
| 非编码/RNA 靶点 | 平台以蛋白编码靶点为主 | 靶点实体为 Ensembl 基因,注释体系围绕蛋白靶点 |
| 跨本体迁移(EFO→Mondo 期) | 旧 ID 停更,外部对齐失败 | EFO 3.88 批量替换(26.06 release notes) |
| 文献稀疏语言区 | 关联系统性缺席 | Europe PMC 收录范围 |
上模型前的泛化性自查清单(任一答"是"即需要补充实验):
- 测试集是否包含训练集疾病分支之外的 EFO/Mondo 节点?(不含 → 只测了插值)
- 结果是否按祖先人群可分解?非欧人群亚组的样本量是否足以支撑任何排序结论?
- 头部 50 个靶点与尾部 50 个靶点的证据密度差多少?指标是否被头部垄断?
- 疾病维度是否包含表型/生物过程等非疾病 EFO 术语?混排会使"疾病"结论失真。
- 你的训练 release 与测试 release 之间是否发生过管道重写(如 26.06 文献重写)?若是,时间外评估测的是"管道变化"还是"真实新证据",需在论文中显式区分。
§7.4 伦理考量
OTP 整合公开数据,不携带直接患者身份信息;其使用的 GWAS 汇总统计与临床数据库均已在原库完成知情同意与治理审查(FinnGen、UK Biobank、VA MVP 等各有其治理框架)。但下游仍需注意两点:其一,靶点排序结果可能影响研究资源分配,对证据稀疏的疾病领域应主动做"冷启动"补偿;其二,文献挖掘会继承文献中的表述偏倚(如对某些人群的忽视),把平台输出作为唯一决策依据会放大这些偏倚。
§7.5 公平性
平台证据的地理/祖先/语言分布不均(§7.1/§7.3),属结构性公平问题而非个体隐私问题。建议下游模型在报告整体指标外,按疾病领域与证据密度分层报告性能;对非欧人群疾病做任何优先级排序时,声明证据基础的人群构成。
§7.6 数据漂移
季度 release 是受控漂移:管道升级可能一次性增删百万级证据(26.06 文献重写 ±百万级、25.03 剔除无批准 IV 期证据),本体迁移(EFO→Mondo)改变疾病节点结构。这类漂移是"阶跃式"的,需要在升级流程中显式处理(§6.10);持续性的语义漂移(疾病定义演进、基因 ID 淘汰)则相对缓慢。
§7.7 DAIMS 数据质量评估
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式支持 | ✅ | Parquet 列式存储,schema 可经 printSchema 自检 |
| 2 | 唯一标识 | ✅ | targetId+diseaseId(+datasourceId) 构成复合主键 |
| 3 | 特殊字符处理 | ⚠️ | 26.06 实测疾病名内嵌 null byte(坑点 6),入库前需清洗 |
| 4 | 重复行 | ✅ | 聚合表无重复;evidence 级多行属证据冗余而非脏数据 |
| 5 | 缺失编码 | ⚠️ | null 语义混杂"不适用"与"未注释"(§4.5),需显式区分 |
| 6 | 标签标识 | ⚠️ | 仅阳性关联与分数,无官方负例标签 |
| 7 | 罕见类分组 | ⚠️ | 长尾疾病证据极稀疏,排序噪声大 |
| 8 | 偏倚评估 | ✅ | 官方文档明示评分语义局限,证据源构成公开可查 |
| 9 | 数据字典 | ✅ | 官方文档完整描述各数据集字段与 schema |
| 10 | 信息性缺失解释 | ✅ | "无证据"vs"0 分"vs"未评估"语义可从文档推导 |
| 11 | 设备记录 | ❌ | 不适用:非仪器采集数据集 |
| 12 | 共线性 | ✅ | 证据维度间无明显共线结构; datatype 分数相关需自查 |
| 13 | 编码映射 | ⚠️ | EFO→Mondo 迁移期双体系并存(坑点 2) |
| 14 | 时间戳处理 | ⚠️ | 证据含文献日期/研究 ID,但非逐条统一时间戳字段,需自行解析 |
| 15 | 划分建议 | ⚠️ | 无官方划分;本文档 §5 提供时间外/按对分组方案 |
| 16 | 泄漏讨论 | ✅ | 本文档 §5.3 与坑点 4 系统覆盖 |
| 17 | 标签分布 | ✅ | 分数据源证据明细随每个 release 公布 |
| 18 | 测量偏倚 | ⚠️ | 文献挖掘与临床阶段评分的测量机制偏倚需分层解读 |
| 19 | 外部验证建议 | ✅ | §5.5 与 §7.8 给出时间外与人工复核双路径 |
| 20 | 版本记录 | ✅ | 季度 release notes + 社区指标帖,可追溯性业界领先 |
| 21 | 预处理脚本 | ⚠️ | 官方提供 PySpark 示例,无端到端开箱脚本 |
| 22 | 合规要求 | ✅ | 数据 CC0、代码 Apache 2.0,上游许可清单公开 |
| 23 | 多模态对齐 | ✅ | 靶点/疾病/药物/变体经统一 ID 体系对齐 |
| 24 | 去标识化 | ✅ | 无个体级数据,聚合公开来源 |
DAIMS 评分:18.5 / 24
评分解读:扣分集中在三类——数据结构层面(特殊字符脏数据、缺失语义混杂)、建模适配层面(无官方划分与负例、长尾稀疏)、体系演进层面(本体迁移与时间戳不统一)。这符合知识库型数据集的典型画像:ID 对齐与版本管理是强项,"拿来即训"的标注适配是弱项。
对你意味着什么:(1) 若你的任务是排序与探索——OTP 可直接使用,重点投入在分数语义的正确解读(坑点 1/8);(2) 若你的任务是训练预测模型——先补齐划分与负采样设计(§5/坑点 4),并把分层建模作为默认架构(坑点 3);(3) 若你的任务是把 OTP 接入生产管道——优先建设 release 升级 gate 与 ID 版本管理(坑点 2/5/7),这决定了系统能否活过每年的四次数据更新。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| 已发表 GWAS 位点全集 | Open Targets/EBI | L2G 因果基因排序 | AUPRC(按位点) | —— | L2G 在全部已发表 GWAS 位点上系统优于距离最近基因基线(Mountjoy et al. 2021, Nat Genet) |
| 25.03 语料时间戳重构 | Nature Communications 2025 方法学研究 | 证据时间演化分析 | 证据量与新颖度曲线 | —— | 2,800 万条证据完成时间戳标注,可回溯各数据源证据的历史演化(Nature Comms 2025) |
| 21.09 → 26.06 规模增长 | Open Targets release 记录 | 覆盖扩展追踪 | 靶点 60,636→78,691;关联 793 万→1,720 万 | —— | 平台覆盖在 Genetics 合并后加速增长(release notes) |
(注:OTP 无统一排行榜;上表仅收录有同行评审或官方 release 记录支撑的验证性结果,不列不可比的第三方自报数字。)
§8 基准性能与生态
§8.1 基准现状与代表研究
OTP 是证据知识库而非标注基准集,不存在官方 leaderboard;不同论文的评估协议(release 版本、负采样、划分)互不相同,性能数字不可直接比较。以下列出有完整引用支撑的代表性研究,供按图索骥:
| 任务 | 代表研究 | 年份 | 关键技术 | 完整引用 |
|---|---|---|---|---|
| GWAS 因果基因优先排序(官方方法) | Mountjoy et al. | 2021 | L2G 机器学习(可信集 + 功能基因组学特征) | Mountjoy, E. et al. An open approach to systematically prioritize causal variants and genes at all published human GWAS trait-associated loci. Nature Genetics (2021). DOI: 10.1038/s41588-021-00845-4 |
| 遗传学证据整合(Genetics 前身) | Ghoussaini et al. | 2021 | 大规模遗传学与功能基因组学整合 | Ghoussaini, M. et al. Open Targets Genetics: systematic identification of trait-associated genes using large-scale genetics and functional genomics. Nucleic Acids Research 49(W1) (2021). DOI: 10.1093/nar/gkab837 |
| 证据时间演化方法学 | Nature Communications 方法学论文 | 2025 | 证据时间戳 + 分数重构 | Temporal trends in evidence supporting novel drug target discovery. Nature Communications (2025). DOI: 10.1038/s41467-025-67180-y |
§8.2 SOTA 总结与选型建议
在这个资源上"选型"的实质是选择证据消费策略而非模型竞赛:(1) 做靶点优先级排序——直接用官方 overall/datasource 分数 + L2G,辅以自研注释特征模型;(2) 做关联预测研究——以时间外划分为金标准协议,任何模型都应报告分 datatype 指标;(3) 做知识图谱——把 OTP 作为底座图谱,再融入 ChEMBL 活性、STRING 互作等外部边。避免在随机负采样协议上追求极致 AUROC——那是坑点 4 定义的假任务。
§8.3 评测协议建议
OTP 无官方基准,论文可比性完全取决于协议声明。建议任何使用 OTP 做模型评估的工作按以下 8 条报告:
- release 三元组:声明 release 版本号、下载日期、疾病本体版本(EFO 3.88 起 Mondo 混排,坑点 2)。
- 划分方式:按对分组的时间外划分或按疾病领域划分(§5.2);禁止无分组随机拆分。
- 负采样协议:比例、随机种子、排除规则全部公开(§5.4 代码可直接引用);使用 PU learning 时声明阳性集定义。
- 指标:至少含 AUROC + Hits@20(按靶点分组);排序类任务补报分位数 NDCG。
- 分层报告:按 datatype 与疾病领域分解指标;单看总体指标会掩盖文献主导的偏倚(坑点 3)。
- 基线:至少对比 overall 分数直接排序与 L2G(遗传任务),证明模型增益不是对平台已有分数的重新发现。
- 可复核性:结果表携带 OTP 关联页链接,供人工抽查证据链。
- 版本敏感性:在相邻两个 release 上重跑主实验,报告指标的跨版本方差(坑点 7),低于方差线的性能差异不应作为结论依据。
满足以上 8 条的工作,其结论才能被后续研究公平比较——这也是本文档建议读者在引用任何"基于 Open Targets 的 SOTA 模型"时先做的协议审查。
§8.4 相关数据集
见 §1.3 对比表(DisGeNET、CTD、PharmGKB、DGIdb、ChEMBL)。补充上游关系:GWAS Catalog(遗传证据主源)、EVA/ClinVar(变异证据)、Expression Atlas(表达证据)均为 EMBL-EBI 维护、与 OTP 同源对齐,适合作为扩展特征源。
§8.4b 上游许可分层与商用合规
Platform 自产数据(整合层、评分、关联表及官方下载文件)为 CC0 1.0 公共领域,代码为 Apache 2.0。但"下游可自由使用"只覆盖平台产出层——OTP 是证据聚合器,逐条证据继承其上游数据库的许可。官方许可页把上游源分为五层(licence 文档):
| 许可层 | 上游数据源 | 下游含义 |
|---|---|---|
| CC0 1.0 | gnomAD、HPO、IntOGen、Tox21、FAERS | 与平台层同,无任何限制 |
| CC BY 4.0 | AlphaMissense、Ensembl、MONDO、Orphanet、Reactome、UniProt、GTEx、panUKB | 需署名,可商用、可再分发 |
| CC BY-SA 3.0 | ChEMBL | 需署名 + 相同方式共享;衍生产物须以兼容许可开放 |
| EMBL-EBI 使用条款 | ClinVar/EVA、GWAS Catalog、Gene2Phenotype、IntAct、Signor | 按 EBI 通用条款使用,再分发前核对现行文本 |
| 商用受限(Commercial use for Open Targets 标注) | Cancer Gene Census、Genomics England PanelApp、Project Score | 学术研究可用;商业场景需另行获得授权 |
对下游的三条实操结论:(1) 只消费平台整合层(association_by_overall_direct、target、disease 等官方产出表)并整体再分发,CC0 覆盖最干净;(2) 若把证据明细回溯到上游源并入自己的数据产品,许可随上游分层,商用前逐源核对官方许可页的现行清单(清单随 release 更新);(3) 学术论文与内部探索不受第五层影响,但商业靶点优先级排序产品接入 Cancer Gene Census 类数据源时,授权谈判要计入项目周期。
§8.5 关键论文 Top 7
- Koscielny, G. et al. (2017). Open Targets: a platform for therapeutic target identification and validation. Nucleic Acids Research 45(D1):D985-D994. DOI: 10.1093/nar/gkw1055 —— 平台首篇系统论文,公开谐波和评分体系。
- Carvalho-Silva, D. et al. (2019). Open Targets Platform: new developments and updates two years on. Nucleic Acids Research 47(D1):D1056-D1065. DOI: 10.1093/nar/gky1133 —— 数据源与界面第一次大扩展。
- Ochoa, D. et al. (2021). Open Targets Platform: supporting systematic drug-target identification and prioritisation. Nucleic Acids Research 49(D1):D1398-D1407. DOI: 10.1093/nar/gkaa1024 —— direction of effect 等功能引入期的快照。
- Ochoa, D. et al. (2023). The next-generation Open Targets Platform: reimagined, redesigned, rebuilt. Nucleic Acids Research 51(D1):D1453-D1459. DOI: 10.1093/nar/gkad1079 —— React + GraphQL 全栈重写。
- Buniello, A. et al. (2025). Open Targets Platform: facilitating therapeutic hypotheses building in drug discovery. Nucleic Acids Research 53(D1):D1467-D1475. DOI: 10.1093/nar/gkae1128 —— 最新论文:Target Prioritisation 视图与 8 源方向性评估。
- Mountjoy, E. et al. (2021). An open approach to systematically prioritize causal variants and genes at all published human GWAS trait-associated loci. Nature Genetics 53:1522-1529. DOI: 10.1038/s41588-021-00845-4 —— L2G 模型方法学。
- Nelson, M. R. et al. (2015). The support of human genetic evidence for approved drug indications. Nature Genetics 47:856-860. DOI: 10.1038/ng.3314 —— 遗传证据价值的经典论证,平台立意的方法论基石。
§8.6 社区活跃度
Open Targets Community 论坛(community.opentargets.org)承载每个 release 的指标发布与用户答疑,官方团队响应活跃(26.06 的 null byte bug 即由用户报告、官方确认)。GitHub 组织(github.com/opentargets)开源全部管线与 API 代码,季度发布节奏稳定。EBI 提供录播培训课程与 API webinar(ebi.ac.uk/training)。
§8.7 生态快照
| 资源 | 类型 | 链接 | 说明 |
|---|---|---|---|
| Platform 主站 | Web 应用 | https://platform.opentargets.org | 界面查询与关联下钻 |
| 官方文档 | 文档 | https://platform-docs.opentargets.org | 评分体系、下载、schema 说明 |
| GitHub 组织 | 代码 | https://github.com/opentargets | 管线(otter/Gentropy)、API、前端全部开源 |
| Community 论坛 | 社区 | https://community.opentargets.org | release 指标帖与答疑 |
| 官方博客 | 博客 | https://blog.opentargets.org | 每个 release 的功能解读 |
| EBI 培训课程 | 教程 | https://www.ebi.ac.uk/training/ | Quick tour 与 API webinar |
| BigQuery 公共项目 | 云数据 | open-targets-prod | SQL 直查全量数据 |
(页面资源状态截至 2026-09 快照。)
§9 相关资源与引用
§9.1 官方资源清单
- 平台主页与查询界面:https://platform.opentargets.org
- 官方文档(评分、下载、API、release notes):https://platform-docs.opentargets.org
- 数据下载页:https://platform.opentargets.org/downloads ;FTP 根:https://ftp.ebi.ac.uk/pub/databases/opentargets/platform/
- GraphQL API 端点:https://api.platform.opentargets.org/api/v4/graphql
- BigQuery 项目:open-targets-prod
- 社区论坛:https://community.opentargets.org
- 联盟官网与历史:https://www.opentargets.org
- GitHub:https://github.com/opentargets
§9.2 BibTeX 引用
@article{buniello2025opentargets,
title = {Open Targets Platform: facilitating therapeutic hypotheses building in drug discovery},
author = {Buniello, Annalisa and Suveges, Daniel and Cruz-Castillo, Carlos and Bernal Llinares, Manuel and Cornu, Helena and Lopez, Irene and Tsukanov, Kirill and others},
journal = {Nucleic Acids Research},
volume = {53},
number = {D1},
pages = {D1467--D1475},
year = {2025},
doi = {10.1093/nar/gkae1128}
}
@article{koscielny2017opentargets,
title = {Open Targets: a platform for therapeutic target identification and validation},
author = {Koscielny, Gautier and Yaikhom, Gagarine and Iyer, Vidya and Mhwila, Mayumie and others},
journal = {Nucleic Acids Research},
volume = {45},
number = {D1},
pages = {D985--D994},
year = {2017},
doi = {10.1093/nar/gkw1055}
}
@article{mountjoy2021l2g,
title = {An open approach to systematically prioritize causal variants and genes at all published human {GWAS} trait-associated loci},
author = {Mountjoy, Edward and Schmidt, Eduard Portales and Carmona, Miguel and Schwartzentruber, Jeremy and others},
journal = {Nature Genetics},
volume = {53},
pages = {1522--1529},
year = {2021},
doi = {10.1038/s41588-021-00845-4}
}
@article{ghoussaini2021otgenetics,
title = {Open Targets Genetics: systematic identification of trait-associated genes using large-scale genetics and functional genomics},
author = {Ghoussaini, Maya and Mountjoy, Edward and Carmona, Miguel and others},
journal = {Nucleic Acids Research},
volume = {49},
number = {W1},
pages = {W461--W468},
year = {2021},
doi = {10.1093/nar/gkab837}
}
@article{nelson2015genetic,
title = {The support of human genetic evidence for approved drug indications},
author = {Nelson, Matthew R and Tipney, Hannah and Painter, Judit L and others},
journal = {Nature Genetics},
volume = {47},
pages = {856--860},
year = {2015},
doi = {10.1038/ng.3314}
}
§9.3 引用指南
使用平台数据(含批量下载文件)时,引用最新方法学论文(Buniello et al. 2025);使用 L2G/可信集相关功能时,加引 Mountjoy et al. 2021 与 Ghoussaini et al. 2021;论文中务必声明所用 release 版本号(如 “Open Targets Platform 26.06”)与下载日期。若使用平台自建的特征数据(如 L2G 输入的功能基因组学特征),请核对官方文档的二次引用要求。
§10 AI 使用声明卡
§10.1 AI 模型使用
| AI 模型 | 版本 | 用途 |
|---|---|---|
| fast-model(CodeBuddy) | 2026-09 | 初稿生成:INFOBOX 数据汇编、§1-§9 结构化写作、§6 代码示例生成、JSON-LD 构建 |
| WebSearch(多源检索) | 2026-09-16 | 6 组检索:官方 release notes、NAR 论文、许可页、评分文档、联盟历史、社区 release 帖 |
§10.2 AI 参与范围
AI 参与范围:初稿生成 + 资料整理 + 代码生成 + 格式化排版。
AI 在本页面的工作中负责:(1) 从官方 release notes、NAR 论文、许可文档、社区论坛帖中整理结构化信息;(2) 生成 §6 的 SQL/Bash/PySpark/PyTorch 代码示例;(3) 系统化组织 §6.5 的 8 个坑点与 §7.1 偏倚表;(4) 执行 G1/G2/G3 排版规范检查与中英文格式标准化;(5) 构建 §C 统一 JSON-LD @graph。
§10.3 输入来源
- Open Targets Platform 官方 release notes(26.06/25.09/25.06/25.03/21.09 各版指标与变更)— platform-docs.opentargets.org/release-notes
- Open Targets Blog:Platform 26.06 发布公告(EFO 3.88 Mondo 替换、基线表达重构、LLM 临床挖掘)— blog.opentargets.org/open-targets-platform-26-06-has-been-released
- Open Targets Community 26.06 发布帖(分数据源证据明细、credible set 统计、null byte bug 报告)— community.opentargets.org/t/26-06-release-now-live/2045/1
- Open Targets Platform 官方许可页(数据 CC0、代码 Apache 2.0、上游数据源许可分层表)— platform-docs.opentargets.org/licence
- 官方 associations 文档(谐波和公式、默认数据源权重表、分数解读警告)— platform-docs.opentargets.org/associations
- 官方 Download datasets 文档(rsync/wget/gsutil 命令、PySpark 示例、BigQuery/GCP 渠道)— platform-docs.opentargets.org
- Buniello, A. et al. (2025). Open Targets Platform: facilitating therapeutic hypotheses building in drug discovery. NAR 53(D1):D1467-D1475. DOI: 10.1093/nar/gkae1128
- Koscielny, G. et al. (2017). Open Targets: a platform for therapeutic target identification and validation. NAR 45(D1):D985-D994(评分公式与数据源评分规则)
- Open Targets 联盟历史页(2014 创立与成员加入时间线)— opentargets.org/history
- David Hulcoop 任命新闻(2023-07,联盟成员构成快照)— opentargets.org/news/david-hulcoop-director-july-2023.html
- Open Targets Blog:How Open Targets bridges academic science and pharmaceutical expertise(现有成员 Genentech、MSD、Pfizer、Sanofi)— blog.opentargets.org
- Temporal trends in evidence supporting novel drug target discovery. Nature Communications (2025). DOI: 10.1038/s41467-025-67180-y(25.03 语料 3.6M 关联、28M 证据时间戳工作)
- EMBL-EBI 培训课程:Open Targets quick tour(四渠道获取方式、分数解读警告)— ebi.ac.uk/training
- Google Scholar 引用快照:Buniello 2025 被引 184(截至 2026-09)
- The Hyve 技术解读:Open Targets Platform association page 评分三步计算 — thehyve.nl/articles/open-targets-platform-association-page
§10.4 人工校验记录
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| §2 医学背景(ICD-11/SNOMED 映射、队列构成、金标准) | 千方病案医学编辑部 | 交叉审核 | ✅ 已通过 |
| §3 数据集规格(26.06 指标、数据源构成) | 千方病案医学编辑部 | 与官方 release notes 及社区指标帖交叉比对 | ✅ 已验证 |
| §4 数据结构(目录树、DAIMS 字段字典) | 千方病案医学编辑部 | 与官方 Download datasets 文档交叉比对 | ✅ 已验证 |
| §5 数据划分策略 | 千方病案医学编辑部 | 交叉审核 | ✅ 已通过 |
| §6 代码示例与坑点 | 千方病案医学编辑部 | 逻辑审查 + 与官方文档/社区帖比对 | ✅ 已通过 |
| §7 质量评估与 DAIMS 评分 | 千方病案医学编辑部 | 交叉审核 | ✅ 已通过 |
| §8 论文引用与生态快照 | 千方病案医学编辑部 | 与原文及 Scholar 快照交叉比对 | ✅ 已验证 |
| §C JSON-LD @graph | 千方病案医学编辑部 | Schema 字段逐项校验 | ✅ 已通过 |
§10.5 AI 生成章节标注
以下章节由 AI 生成初稿并经人工审核:§1.0 30 秒速览、§3.0 版本抉择矩阵、§6.0-§6.4 代码示例、§6.5 八个坑点、§6.9 评估指标代码、§7.7 DAIMS 评估表与评分、§8.7 生态快照、§C JSON-LD。
§10.6 最后审核
最后一次人工审核日期:2026-09-05
页面状态:published(全部内容已完成审核并发布)
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- disgenet — 共享标签:基因组学与多组学 / 药物发现与化学 / 知识图谱
- intact — 共享标签:基因组学与多组学 / 药物发现与化学
- msigdb — 共享标签:基因组学与多组学 / 药物发现与化学
- lipid-maps — 共享标签:基因组学与多组学 / 药物发现与化学
- string — 共享标签:基因组学与多组学 / 知识图谱
- ctd — 共享标签:基因组学与多组学 / 药物发现与化学 / 知识图谱
- alphafold — 共享标签:基因组学与多组学 / 药物发现与化学
- pharos — 共享标签:基因组学与多组学 / 知识图谱
- alphafold — 共享标签:基因组学与多组学 / 药物发现与化学
- pdb — 共享标签:基因组学与多组学 / 药物发现与化学
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。
