SIDER — 药物副作用资源数据库 AI-Ready Wikipedia | 千方医数集

1430药物 · 5868副作用 · 14万药-ADR对 · 全球首个机器可读ADR数据库 · EMBL

来源 EMBL Heidelberg — sideeffects.embl.de url: https://sideeffects.embl.de发布时间: 2026-08-14最后更新: 2026-08-14 阅读 55

信息速览

数据集名称SIDER — 药物副作用资源数据库 AI-Ready Wikipedia | 千方医数集
数据类型1430 种药物,5868 种副作用,约 50MB 总下载,TSV 格式
规模药物-副作用关联数据库,无患者级数据
接入方式EMBL Heidelberg — sideeffects.embl.de url: https://sideeffects.embl.de
AI 就绪度

数据集封面

INFOBOX:SIDER 数据集基本信息卡

字段
全称 SIDER(Side Effect Resource)
当前版本 SIDER 4.1(2015-10-21 发布)
维护机构 EMBL Heidelberg — Bork Group
主要研究者 Michael Kuhn, Ivica Letunic, Lars Juhl Jensen, Peer Bork
创建时间 2010 年(SIDER 1),当前版本 2015 年
数据来源 FDA 药品说明书(package inserts)、公开文件
药物数量 1,430 种上市药物
副作用数量 5,868 种副作用术语
药物-ADR 对 139,756 条关联
频率覆盖 39.9%(55,730 条药物 + 10,748 条安慰剂)
术语体系 MedDRA 16.1(PT + LLT)、UMLS CUI、ATC、STITCH 4.0
数据格式 TSV(gzip 压缩)
总下载量 ~50 MB(全部文件)
许可证 CC BY-SA 4.0(副作用数据)/ CC0(药物名称+ATC)
商业许可 biobyte solutions GmbH(Ivica Letunic, CEO)
基金 Novo Nordisk Foundation (NNF14CC0001) + EMBL Heidelberg
当前状态 停止更新(2015 年数据,无后续资金)
继任者 EBI 计划于 2026 年开发新数据库
GitHub github.com/mkuhn/sider(错误报告)
FTP ftp://xi.embl.de/SIDER/
DUO 标签 CC BY-SA 4.0(无患者数据,无伦理限制)
AI 就绪度 15/24 ⭐⭐⭐

§0 E-E-A-T 信任声明与免责声明

Experience(经验)

SIDER 由 EMBL Heidelberg Bork 团队开发,该团队在生物信息学和药物-蛋白质相互作用领域拥有 20+ 年研究经验。SIDER 的创建源于 2008 年 Campillos 等人在 Science 上发表的利用副作用相似性预测药物靶点的开创性研究(DOI: 10.1126/science.1158140),该论文被引用 1,189 次。团队同时维护 STITCH(化学-蛋白质相互作用网络)数据库,与 SIDER 共享化合物标识体系。

Expertise(专业能力)

  • Michael Kuhn(第一作者):Max Planck Institute of Molecular Cell Biology and Genetics, Dresden — 生物信息学专家,同时负责 STITCH 数据库开发
  • Ivica Letunic(第二作者):Biobyte solutions GmbH CEO(ORCID: 0000-0003-3560-4288)— 负责 SIDER 商业许可和网站开发
  • Lars Juhl Jensen(第三作者):Novo Nordisk Foundation Center for Protein Research, University of Copenhagen(ORCID: 0000-0002-2841-872X)— 蛋白质组学和网络生物学专家
  • Peer Bork(通讯作者):EMBL Structural and Computational Biology Unit + Max-Delbrück-Centre for Molecular Medicine, Berlin(ORCID: 0000-0001-7885-715X)— 欧洲生物信息学领军人物

Authoritativeness(权威性)

  • 发表于 Nucleic Acids Research Database Issue(2016, 44:D1075-D1079, DOI: 10.1093/nar/gkv1075, PMID: 26481350, PMCID: PMC4702794)— 数据库领域顶级期刊
  • 前身论文发表于 Molecular Systems Biology(2010, 6:343, DOI: 10.1038/msb.2009.98, PMID: 20087340)
  • NAR 2016 论文被引用 1,227 次(截至 2026-07);Mol Syst Biol 2010 论文被引用 799 次(Scopus)
  • 被 FAIRsharing 收录(FAIRsharing ID: zzaykv),RRID: SCR_004321
  • 被 re3data 收录(r3d100012791)
  • 被 Database Commons (NGDC) 收录

Trustworthiness(可信度)

  • 数据透明度:所有副作用可追溯到原始药品说明书标签(通过 label 文件),用户可在 SIDER 网站上查看高亮的副作用来源
  • 质量控制:GitHub 仓库(github.com/mkuhn/sider)公开接受用户错误报告,已知的错误可在版本更新前过滤
  • NLP 验证:与 drugs.com 的交叉验证显示仅 1.2% 的药物-ADR 对被误标为适应症(假阳性率极低)
  • 局限性透明:网站明确声明数据来自 2015 年且已过时,无后续资金
  • 基金透明:明确披露 Novo Nordisk Foundation 和 EMBL 资金来源
  • 利益冲突:Ivica Letunic 为 biobyte solutions GmbH CEO,负责 SIDER 商业许可

审核机制

[千方病案医学编辑部]交叉审核:药物安全数据集内容审核 — 重点验证 MedDRA 术语映射准确性、ADR 分级标准一致性、药物-副作用关联逻辑合理性、AI 应用场景安全性。

透明度声明

本页面状态:published。内容基于 SIDER 官方网站、NAR 2016 论文(PMID: 26481350)、Mol Syst Biol 2010 论文(PMID: 20087340)及公开学术文献编写。数据集统计截至 SIDER 4.1(2015-10-21)。

免责声明

SIDER 数据仅供教育和科学研究目的使用,不能替代专业的医疗建议、诊断或治疗。药物副作用信息可能已过时(数据截止 2015 年),不应作为临床决策的唯一依据。使用 SIDER 数据进行 AI 模型训练时,应充分考虑数据的时效性局限和偏倚问题。

§1 数据集概览

§1.0 30 秒速览

维度 关键信息
是什么 全球首个公开机器可读药物不良反应(ADR)数据库
数据量 1,430 药物 × 5,868 副作用 = 139,756 药物-ADR 对
频率覆盖 39.9% 含频率信息,19% 可与安慰剂组对比
术语标准 MedDRA 16.1(PT + LLT)+ UMLS CUI + ATC
许可证 CC BY-SA 4.0(副作用)/ CC0(药物名称)
AI 用途 ADR 预测、药物靶点推断、药物重定位、药物安全评估
核心优势 机器可读、频率标注、安慰剂对比、标签可追溯
核心局限 2015 年数据已过时、仅 1,430 药物、无 API、临床人群偏倚

§1.1 摘要

SIDER(Side Effect Resource)是药物副作用研究领域被引用最多的公开数据库之一。它将分散在 FDA 药品说明书中的不良反应信息提取并结构化为机器可读格式,使用 MedDRA 和 UMLS 标准化术语体系进行编码,使得大规模计算分析成为可能。SIDER 的创建动机源于 2008 年 Campillos 等人发表在 Science 上的研究——该研究证明药物的副作用相似性可以用于预测药物靶点,但当时缺乏公开的机器可读 ADR 数据。SIDER 填补了这一空白,成为 ADR 预测 AI 模型最常用的基准数据集。

SIDER 4.1 的 139,756 条药物-ADR 关联来自 FDA 批准的 1,430 种上市药物的药品说明书。其中 39.9% 包含副作用发生频率信息,按频率分为频繁(frequent)、偶见(infrequent)、罕见(rare)和上市后报告(postmarketing)四类。19% 的频率数据可与安慰剂组直接对比,为评估药物真实风险提供了宝贵基线。此外,SIDER 还通过 NLP 技术从药品说明书中提取了药物适应症信息,用于过滤假阳性(如将适应症误标为 ADR)。

§1.2 为什么重要

药物安全问题的全球负担:在美国,药物不良反应(ADE)是第四大死因,每年造成数千亿美元的医疗成本增加。尽管临床试验在药物批准前监测不良反应,但许多 ADR 仅在上市后的大规模使用中被发现。SIDER 将药品说明书中的 ADR 信息结构化,为系统性药物安全研究提供了基础数据。

AI/ML 的关键角色:SIDER 是药物副作用预测深度学习模型最广泛使用的训练数据集。从传统的机器学习方法(随机森林、SVM、矩阵分解)到最新的图神经网络(GCN、GAT)和 Transformer 模型,SIDER 都提供了标准基准。它在 ADR 预测领域的地位类似于 ImageNet 在图像识别领域的地位。

药物靶点推断的开创性:Campillos 等人 2008 年在 Science 上的研究表明,通过比较药物之间的副作用相似性,可以推断出新的药物靶点。SIDER 的创建正是为了让更多研究者能够进行此类分析。

药物重定位:SIDER 中的副作用数据可用于药物重定位——如果一个药物的副作用恰好是另一种疾病的症状,可能提示该药物对该疾病有治疗潜力。

§1.3 对比表:SIDER 与相关 ADR 数据库

数据集 药物数 ADR 数 对数 数据来源 特色 更新状态
SIDER 4.1 1,430 5,868 139,756 FDA 药品说明书 频率+安慰剂+NLP 适应症 停止(2015)
OFFSIDES 1,332 10,097 438,801 FAERS 数据挖掘 说明书外 ADR 活跃
TWOSIDES 59,220 对 1,301 868,221 FAERS 数据挖掘 药物联用 ADR 活跃
OnSIDES 2,793 3,600,000+ DailyMed 药品标签 PubMedBERT NLP 季度更新
AEOLUS 4,245 17,671 3,766,382 FAERS 标准化 大规模 FAERS 活跃
FAERS 5,000+ 20,000+ 数百万 FDA 自发报告系统 原始数据源 季度更新
CT-ADE 2,497 168,984 对 ClinicalTrials.gov 受控临床试验 新建

SIDER 独特价值

  1. 频率信息:唯一提供精确副作用频率(百分比或区间)的数据库
  2. 安慰剂对比:唯一提供安慰剂组副作用频率的数据库
  3. 标签可追溯:每条 ADR 可追溯到原始药品说明书的具体位置
  4. NLP 适应症:自动提取的药物适应症用于假阳性过滤
  5. MedDRA 标准化:PT + LLT 双层术语,支持不同粒度分析

§1.4 时间轴:SIDER 发展历程

时间 事件 意义
2008-07 Campillos, Kuhn 等人在 Science 发表副作用相似性预测药物靶点 SIDER 创建动机
2010-01-19 SIDER 1 发布,888 药物 × 1,450 副作用 全球首个机器可读 ADR 数据库
2010-01 Kuhn et al. Mol Syst Biol 6:343(PMID: 20087340) 创始论文
2012 SIDER 2 发布,996 药物 基于 STITCH 2 化合物集
2012-03 Tatonetti et al. 发布 OFFSIDES + TWOSIDES 上市后 ADR 补充
2013-04 Kuhn et al. Mol Syst Biol 9:663 — 蛋白质-副作用关联 机制研究
2015-08-06 SIDER 4 发布,1,430 药物 × 5,880 ADR × 140,064 对 40% 数据增长
2015-10-19 Kuhn et al. NAR 44:D1075-D1079(PMID: 26481350) NAR 数据库论文
2015-10-21 SIDER 4.1 发布,MedDRA 16.1 术语 当前版本
2016+ 无后续资金,数据库停止更新 数据冻结在 2015 年
2018+ 多篇 AI 论文使用 SIDER 4.1 作为基准 成为 ADR 预测标准数据集
2020 Nature Comm 发表基于 SIDER 的频率预测模型 频率预测新任务
2023-11 OnSIDES v2/3 发布(3.6M 对,Tatonetti Lab) 继任数据库出现
2025-12 EBI 宣布计划 2026 年开发新数据库 SIDER 精神延续

§1.5 5 个核心用例

  1. ADR 预测模型训练:使用药物化学结构(分子指纹/SMILES)预测其可能引发的副作用。典型流程:从 SIDER 提取 drug-ADR 对 → 转 SMILES → 计算 ECFP4/Morgan 指纹 → 训练多标签分类器(SVM/RF/DNN/GNN)→ 5 折交叉验证 → 评估 AUC/AUPR/F1。SIDER 4.1 的 1,430 药物 × 1,766 PT 级 ADR 是最常用配置。

  2. 药物靶点推断:Campillos 等人的原始方法——计算药物之间的副作用相似性(Jaccard 系数),相似药物可能共享靶点。SIDER 提供副作用向量,结合 STITCH 的药物-蛋白质相互作用数据,可预测新的药物-靶点关系。

  3. 副作用频率预测:Nature Communications 2020 研究使用 SIDER 的频率数据(37,441 条频率记录,759 药物 × 994 副作用),将副作用频率分为 5 个等级(very rare→very frequent),训练回归模型预测新药的副作用频率分布。

  4. 药物重定位:通过分析药物副作用与疾病症状的语义重叠,识别药物的新适应症。SIDER 的 NLP 提取适应症数据可用于验证重定位假设。

  5. 知识图谱构建:将 SIDER 的 drug-ADR 关联与其他数据库(DrugBank 药物-靶点、STITCH 化学品-蛋白质、STRING 蛋白质-蛋白质)整合,构建多关系知识图谱,支持图神经网络进行药物发现推理。

§2 医学背景

§2.1 编码映射体系

SIDER 使用多套标准化术语体系对药物和副作用进行编码:

编码体系 在 SIDER 中的角色 层级 示例
MedDRA 16.1 副作用标准化术语 SOC→HLGT→HLT→PT→LLT(5 级) PT: “Nausea” (C0027497)
UMLS CUI 统一概念标识符 概念级 C0011849 (aspirin)
STITCH 4.0 药物化合物标识符 flat(2D)/ stereo(3D) CID100000085
PubChem CID 化合物唯一标识 源于 STITCH(去前缀) 2244 (aspirin)
ATC 药物分类编码 5 级(L1-L5) N02BA01 (aspirin)
ICD-11 疾病分类映射(跨库) 概念级 CA40 (ADR 导致的损伤)
SNOMED CT 临床术语映射(跨库) 概念级 274538001 (ADR)

MedDRA 层级详解

SOC (System Organ Class)          → "胃肠道系统疾病"
  └─ HLGT (High Level Group Term) → "胃肠道检查异常"
       └─ HLT (High Level Term)   → "消化系统症状"
            └─ PT (Preferred Term)→ "恶心"          ← SIDER 提供此层
                 └─ LLT (Lowest Level Term) → "恶心感"  ← SIDER 也提供此层

SIDER 提供了 PT 和 LLT 两个层级的副作用术语。PT 是分析推荐使用的层级——每个 PT 汇总了多个语义等价的 LLT(如同义词和变体),避免了过度细分。例如 PT “Blood creatinine increased”(C0235431)包含 4 个 LLT:Creatinine increased(149 次)、Blood creatinine increased(100 次)、Serum creatinine increased(93 次)、Plasma creatinine increased(2 次),总计 344 次出现。

STITCH ID 与 PubChem CID 转换

  • STITCH flat ID:CID100000085 → 去掉 CID 前缀 → PubChem CID:100000085
  • STITCH stereo ID:CID000000085 → 包含立体化学信息
  • 两者都是 PubChem CID 的变体,前缀 CID1 表示 flat(2D),CID0 表示 stereo(3D)

§2.2 临床任务定义

SIDER 支持的 AI 临床任务覆盖药物全生命周期:

阶段 任务 AI 方法 SIDER 角色
临床前 化合物毒性筛选 QSAR + 分子指纹 → ADR 多标签分类 训练数据
临床 I 期 首次人体试验风险预测 基于结构相似性预测可能 ADR 预训练数据
临床 II-III 期 试验设计优化 预测需要监测的特定 ADR 参考数据
上市审批 FDA 标签 ADR 预标注 NLP 从试验报告提取 ADR 验证数据
上市后监测 信号检测与验证 与 FAERS/OFFSIDES 对比验证 基准数据
药物重定位 新适应症发现 副作用-疾病语义匹配 核心数据

§2.3 副作用分类体系

MedDRA 的 SOC(System Organ Class)是副作用的最高层级分类,SIDER 中的 5,868 种副作用覆盖全部 27 个 SOC:

SOC 类别 典型 PT 示例 在 SIDER 中的频率
胃肠道系统疾病 恶心、呕吐、腹泻 高频(几乎所有药物)
神经系统疾病 头痛、头晕、嗜睡 高频
全身性疾病 疲劳、发热、疼痛 高频
精神疾病 失眠、焦虑、抑郁 中频
皮肤及皮下组织疾病 皮疹、瘙痒、荨麻疹 中频
心脏器官疾病 心悸、心动过速 中频
血液及淋巴系统疾病 贫血、白细胞减少 中频
肝胆系统疾病 肝酶升高、黄疸 低频但严重
肾脏及泌尿系统疾病 血肌酐升高 低频但重要
免疫系统疾病 过敏反应、过敏性休克 低频但致命

§2.4 金标准

SIDER 的数据来源是 FDA 批准的药品说明书(package inserts),在 ADR 领域具有特殊的"金标准"地位:

  • FDA 标签 ADR:经过 FDA 审核确认的 ADR,来源于临床试验(Phase I-III)和上市后监测报告。在药品说明书中以"不良反应"或"警告"章节列出。
  • 频率标注标准:FDA 标签中副作用频率按以下标准描述:
    • Very common (≥1/10)
    • Common (≥1/100 to <1/10)
    • Uncommon (≥1/1,000 to <1/100)
    • Rare (≥1/10,000 to <1/1,000)
    • Very rare (<1/10,000)
  • SIDER 频率映射:SIDER 将标签中的频率描述标准化为 4 类:frequent、infrequent、rare、postmarketing,并提取精确百分比(如 “3%”)或范围(如 “1-5%”)。

§2.5 临床意义

药物不良反应是全球公共卫生的重大挑战:

  • 死亡率:ADR 是美国第四大死因,每年约 10 万人死于药物不良反应
  • 经济负担:美国每年因 ADE 造成的医疗成本超过 1,000 亿美元
  • 上市后才发现:约 50% 的严重 ADR 在药物上市后才被发现
  • 临床试验局限:Phase III 试验通常仅纳入数千名患者,无法检测罕见 ADR(<1/10,000)
  • 个体差异:性别(女性 ADR 风险是男性的 2 倍)、年龄、基因型、合并用药均影响 ADR 发生

SIDER 的价值在于将这些分散在数千份药品说明书中的 ADR 信息集中、标准化并机器可读化,使得计算方法能够大规模分析药物-ADR 关联模式。

§3 数据集规格

§3.0 版本抉择矩阵

版本 发布日期 药物 ADR 对数 MedDRA 术语 推荐?
SIDER 1 2010-01-19 888 1,450 UMLS ❌ 历史版本
SIDER 2 2012 996 UMLS ❌ 历史版本
SIDER 4 2015-08-06 1,430 5,880 140,064 MedDRA ❌ 已被 4.1 替代
SIDER 4.1 2015-10-21 1,430 5,868 139,756 16.1 MedDRA ✅ 当前版本

选择建议:使用 SIDER 4.1(当前唯一可下载版本)。历史版本可通过 FTP(ftp://xi.embl.de/SIDER/)获取。注意 SIDER 4 和 4.1 之间的差异:4.1 使用 MedDRA 术语命名副作用(4.0 使用 UMLS 术语名),频率提取更精确,移除了不表示副作用的医学概念。

§3.1 数据模态

模态 描述 格式 占比
药物-ADR 关联 STITCH ID + UMLS CUI + MedDRA 类型 + 副作用名称 TSV 核心数据
频率信息 频率描述 + 下界 + 上界 + 安慰剂标记 TSV 39.9%
药物适应症 STITCH ID + UMLS CUI + NLP 方法 + 适应症名称 TSV 辅助数据
药物名称 STITCH flat ID → 药物名称 TSV 元数据
ATC 分类 STITCH flat ID → ATC 代码 TSV 元数据
标签溯源 带来源标签的 ADR 和适应症数据 TSV 可追溯性
MedDRA 参考 UMLS CUI + MedDRA ID + 术语类型 + 名称 TSV 术语参考

§3.2 样本统计

药物来源分布

来源 药物数 占比
FDA 批准上市药物 1,430 100%
└ 有 ATC 分类 ~1,350 ~94%
└ 有 STITCH stereo ID ~1,400 ~98%
└ 可映射到 PubChem CID ~1,430 ~100%

药物-ADR 对分布

频率类别 药物对数(含精确值) 安慰剂对数(含精确值)
frequent(频繁) 24,562 (23,601) 7,133 (7,133)
infrequent(偶见) 16,765 (11,426) 3,294 (3,294)
rare(罕见) 11,784 (6,013) 2,512 (2,512)
postmarketing(上市后) 19,265 0
总计 55,730 10,748

ADR 分布特征

  • 每种药物平均关联 ~98 个副作用(范围 1-500+)
  • 每种副作用平均关联 ~24 种药物(范围 1-200+)
  • 分布不遵循幂律分布(与许多生物医学网络不同)
  • ADR 数量 ≥10 种药物的 PT 级 ADR:1,766 个(用于 AI 建模的常用过滤标准)

§3.3 数据格式

文件名 大小 许可证 描述
README 3.2 KB CC0 文件格式说明
drug_names.tsv 33.9 KB CC0 STITCH flat ID → 药物名称
drug_atc.tsv 32.0 KB CC0 STITCH flat ID → ATC 代码
meddra_all_se.tsv.gz 2.3 MB CC BY-SA 4.0 全部副作用(STITCH, UMLS, MedDRA 类型, SE 名称)
meddra_freq.tsv.gz 2.0 MB CC BY-SA 4.0 副作用频率(含安慰剂)
meddra_all_indications.tsv.gz 336.6 KB CC BY-SA 4.0 全部适应症(NLP 提取)
meddra_all_label_se.tsv.gz 40.6 MB CC BY-SA 4.0 全部副作用 + 来源标签
meddra_all_label_indications.tsv.gz 5.6 MB CC BY-SA 4.0 全部适应症 + 来源标签
meddra.tsv.gz 1.0 MB CC BY-SA 4.0 MedDRA 术语参考表

总下载量:~50 MB(gzip 压缩后)

§3.4 频率分类体系

SIDER 的频率标注是其最独特的功能,分为以下类别:

频率类别 标签含义 FDA 对应范围 精确值示例
frequent 常见 ≥1/100 “10%”, “15-30%”
infrequent 偶见 ≥1/1,000 to <1/100 “0.5%”, “1-2%”
rare 罕见 ≥1/10,000 to <1/1,000 “0.1%”, “0.01%”
postmarketing 上市后报告 上市后发现 无精确值
common 通用频率词 不确定 需根据上下文判断

频率标准化建议(Nature Comm 2020 方法):

  • very rare → 1(<1/10,000)
  • rare → 2(≥1/10,000 to <1/1,000)
  • infrequent → 3(≥1/1,000 to <1/100)
  • frequent → 4(≥1/100 to <1/10)
  • very frequent → 5(≥1/10)

§3.5 数据策展流程

FDA 药品说明书(package inserts)
         │
         ▼
  ┌──────────────────┐
  │  标签文本提取     │ ← FDA DailyMed / 公开文档
  └────────┬─────────┘
           │
           ▼
  ┌──────────────────┐
  │  UMLS 概念映射   │ ← UMLS Metathesaurus
  │  (CUI 提取)      │
  └────────┬─────────┘
           │
           ▼
  ┌──────────────────┐
  │  MedDRA 术语映射  │ ← MedDRA 16.1
  │  (LLT → PT)      │
  └────────┬─────────┘
           │
           ▼
  ┌──────────────────┐
  │  频率信息提取     │ ← 正则表达式 + NLP
  │  (百分比/范围)    │
  └────────┬─────────┘
           │
           ▼
  ┌──────────────────┐
  │  适应症 NLP 提取  │ ← 3 种方法:
  │                  │   NLP_indication (直接)
  │                  │   NLP_precondition (条件)
  │                  │   text_mention (文本提及)
  └────────┬─────────┘
           │
           ▼
  ┌──────────────────┐
  │  假阳性过滤      │ ← 用适应症数据过滤
  │  (适应症≠ADR)    │   非 ADR 医学概念
  └────────┬─────────┘
           │
           ▼
  ┌──────────────────┐
  │  STITCH ID 映射  │ ← STITCH 4.0
  │  (flat + stereo) │
  └────────┬─────────┘
           │
           ▼
  ┌──────────────────┐
  │  质量控制        │ ← GitHub 错误报告
  │  (用户反馈)      │   (github.com/mkuhn/sider)
  └──────────────────┘

§3.6 许可证分层

SIDER 采用分层许可证策略:

数据类型 许可证 商业使用 再分发
药物名称(drug_names.tsv) CC0(公共领域) ✅ 自由 ✅ 无限制
ATC 分类(drug_atc.tsv) CC0(公共领域) ✅ 自由 ✅ 无限制
README CC0(公共领域) ✅ 自由 ✅ 无限制
副作用数据(meddra_all_se.tsv.gz 等) CC BY-SA 4.0 ⚠️ 需联系 biobyte ✅ 需署名+ShareAlike
频率数据(meddra_freq.tsv.gz) CC BY-SA 4.0 ⚠️ 需联系 biobyte ✅ 需署名+ShareAlike
适应症数据 CC BY-SA 4.0 ⚠️ 需联系 biobyte ✅ 需署名+ShareAlike

重要提示

  • MedDRA 字典本身不包含在 SIDER 中,但如需完整 MedDRA 字典进行术语映射,需从 ICH MSSO 获取单独许可
  • 商业使用:biobyte solutions GmbH(CEO: Ivica Letunic)负责 SIDER 的商业许可
  • CC BY-SA 4.0 要求:使用副作用数据需署名 SIDER 和 Kuhn et al. 2016 论文,衍生作品须以相同许可发布

§3.7 基金来源

资助方 基金号 用途 状态
Novo Nordisk Foundation NNF14CC0001 部分研究经费 已结题
EMBL Heidelberg 核心运营经费 持续(但不再用于 SIDER 开发)
SIDER 后续开发 无资金

当前状态:SIDER 网站明确声明"我们已无资金进一步开发 SIDER"。数据冻结在 2015 年。

继任计划:截至 2025 年底,EBI(European Bioinformatics Institute)计划于 2026 年开始开发一个具有类似目标的新数据库。

§3.8 深度溯源链

SIDER 4.1 数据条目
  └─ 来源: FDA 药品说明书
       └─ 来源文件: meddra_all_label_se.tsv.gz(含来源标签列)
            └─ 可在 SIDER 网站上查看:
                 └─ 药物页面 → 点击副作用 → 查看高亮的标签
                      └─ 原始 FDA 标签文本
                           └─ FDA DailyMed / Drugs@FDA

每条副作用记录可通过 meddra_all_label_se.tsv.gz 文件追溯到具体的药品说明书标签。在 SIDER 网站上,用户可以导航到药物页面,点击特定副作用,系统会显示药品说明书原文并高亮所有该副作用的提及位置。这一溯源能力是 SIDER 的核心质量保证机制。

§4 数据结构详解

§4.0 目录树

SIDER_4.1/
├── README                           # 3.2 KB, CC0, 文件格式说明
├── drug_names.tsv                   # 33.9 KB, CC0, 药物名称映射
├── drug_atc.tsv                     # 32.0 KB, CC0, ATC 分类映射
├── meddra_all_se.tsv.gz             # 2.3 MB, CC BY-SA, 全部副作用
├── meddra_freq.tsv.gz               # 2.0 MB, CC BY-SA, 频率数据
├── meddra_all_indications.tsv.gz    # 336.6 KB, CC BY-SA, 适应症
├── meddra_all_label_se.tsv.gz       # 40.6 MB, CC BY-SA, 副作用+来源标签
├── meddra_all_label_indications.tsv.gz  # 5.6 MB, CC BY-SA, 适应症+来源标签
└── meddra.tsv.gz                    # 1.0 MB, CC BY-SA, MedDRA 术语参考

§4.1 DAIMS 标准化数据字典

meddra_all_se.tsv.gz(核心副作用文件)
列号 字段名 数据类型 描述 示例
1 stitch_flat string STITCH 化合物 ID(平面结构) CID100000085
2 stitch_stereo string STITCH 化合物 ID(立体结构) CID000000085
3 umls_label string 标签上的 UMLS 概念 ID C0011991
4 meddra_type enum MedDRA 概念类型(LLT 或 PT) PT
5 umls_meddra string MedDRA 术语的 UMLS 概念 ID C0030193
6 se_name string 副作用名称(MedDRA 术语) Pain
meddra_freq.tsv.gz(频率文件)
列号 字段名 数据类型 描述 示例
1 stitch_flat string STITCH 化合物 ID(平面) CID100000085
2 stitch_stereo string STITCH 化合物 ID(立体) CID000000085
3 umls_label string 标签上的 UMLS 概念 ID C0011991
4 placebo string 安慰剂标记 “placebo” 或空
5 freq_desc string 频率描述 “frequent”, “10%”, “1-5%”
6 lower_bound float 频率下界 0.01
7 upper_bound float 频率上界 0.1
8 meddra_type enum MedDRA 类型(LLT 或 PT) PT
9 umls_meddra string MedDRA UMLS CUI C0030193
10 se_name string 副作用名称 Pain
meddra_all_indications.tsv.gz(适应症文件)
列号 字段名 数据类型 描述 示例
1 stitch_flat string STITCH 化合物 ID CID100000085
2 umls_label string 标签上的 UMLS CUI C0000966
3 method enum 检测方法 NLP_indication
4 concept_name string 概念名称(适应症) Diabetes
5 meddra_type enum MedDRA 类型 PT
6 umls_meddra string MedDRA UMLS CUI C0011847
7 meddra_name string MedDRA 概念名称 Diabetes mellitus
drug_names.tsv(药物名称文件)
列号 字段名 数据类型 描述 示例
1 stitch_flat string STITCH 化合物 ID CID100000085
2 drug_name string 药物名称 aspirin
drug_atc.tsv(ATC 分类文件)
列号 字段名 数据类型 描述 示例
1 stitch_flat string STITCH 化合物 ID CID100000085
2 atc_code string ATC 分类代码 N02BA01

§4.2 标签分布

SIDER 的标签分布具有高度不平衡性,这是 ADR 预测任务的核心挑战:

统计维度 说明
每药平均 ADR 数 ~98 范围 1-500+
每药中位 ADR 数 ~70 分布右偏
每 ADR 平均药物数 ~24 范围 1-200+
每 ADR 中位药物数 ~10 分布右偏
PT 级 ADR(≥10 药物) 1,766 AI 建模常用子集
PT 级 ADR(≥1 药物) 4,314 全部 PT
LLT 级 ADR 总数 5,868 含 LLT+PT
正负样本比 ~1:500 极端不平衡

不平衡处理建议

  • 使用 AUPR(而非 AUC)作为主要评估指标
  • 负采样策略(每正样本采 5 个负样本)
  • 类别加权损失函数
  • 聚合 PT 到 SOC 层级减少标签数

§4.3 数据层级

Level 0: 原始 FDA 药品说明书文本
    │
    ▼
Level 1: UMLS 概念提取(CUI 映射)
    │
    ▼
Level 2: MedDRA 术语映射(LLT + PT)
    │
    ▼
Level 3: 药物-ADR 关联对(stitch_flat + umls_meddra)
    │
    ▼
Level 4: 频率标注(freq_desc + lower/upper bound)
    │
    ▼
Level 5: 安慰剂对比频率(placebo 标记)

§4.4 RESTful API

SIDER 不提供 RESTful API。数据仅通过以下方式获取:

获取方式 地址 用途
网站下载 http://sideeffects.embl.de/download/ 全部 TSV 文件
FTP ftp://xi.embl.de/SIDER/ 历史版本
GitHub(错误报告) github.com/mkuhn/sider 提交错误报告
GitHub(镜像/处理) github.com/dhimmel/SIDER4 社区维护的处理版本

替代方案:Tatonetti Lab 的 OnSIDES 数据库(nsides.io)提供更现代的接口和更大数据量(3.6M 对)。

§4.5 缺失值

缺失项 影响范围 处理建议
无频率信息 60.1% 的 drug-ADR 对 无法用于频率预测任务;二分类任务不受影响
无安慰剂对比 81% 的有频率对 仅药物组频率可用于分析
无 ATC 分类 ~6% 的药物 通过 PubChem CID 交叉映射补充
LLT 无对应 PT 极少数 按 LLT 保留,不影响分析
非 LLT 非 PT 条目 极少数 过滤掉

§4.6 生态工具

工具 类型 描述 链接
STITCH 数据库 化学-蛋白质相互作用网络,提供 SIDER 药物的靶点信息 stitch-db.org
DrugBank 数据库 药物词汇、靶点、SMILES go.drugbank.com
PubChem 数据库 化合物结构和 CID pubchem.ncbi.nlm.nih.gov
UMLS 术语系统 统一医学语言系统,提供 CUI 映射 nlm.nih.gov/research/umls
MedDRA 术语系统 ADR 标准化术语字典 meddra.org
OFFSIDES 数据库 说明书外 ADR(Tatonetti Lab) tatonettilab.org
TWOSIDES 数据库 药物联用 ADR(Tatonetti Lab) tatonettilab.org
OnSIDES 数据库 药品标签 ADR(PubMedBERT NLP) nsides.io
AEOLUS 数据库 FAERS 标准化版本
FAERS 数据库 FDA 不良事件报告系统 open.fda.gov
ADReCS 数据库 ADR 本体分类 bioinf.xmu.edu.cn
GitHub (dhimmel/SIDER4) 代码库 社区维护的 SIDER 处理版本 github.com/dhimmel/SIDER4
GitHub (mkuhn/sider) 代码库 SIDER 错误报告 github.com/mkuhn/sider

§5 数据划分与使用建议

§5.1 划分策略

SIDER 不提供预定义的训练/测试划分。以下是文献中常用的 5 种策略:

策略 描述 优点 缺点 适用场景
随机 5 折 CV 随机打乱 drug-ADR 对 简单、可复现 数据泄漏(同一药物出现在训练和测试集) 快速基线
药物留一法 每次留出一种药物的全部 ADR 测试对新药的泛化 挑战性大(冷启动问题) 新药 ADR 预测
ADR 留一法 每次留出一种 ADR 的全部药物 测试对新 ADR 的泛化 挑战性大 新 ADR 发现
按药物聚类划分 按化学相似性聚类后留出整个簇 减少结构泄漏 实现复杂 严格评估
SIDER→OFFSIDES 外部验证 用 SIDER 训练,用 OFFSIDES 测试 真实世界验证 标签不一致 上市后验证

§5.2 基准数据集配置

文献中常用的 SIDER 基准配置:

配置名 药物数 ADR 数 对数 过滤条件 来源
SIDER 4.1 全量 1,430 5,868 139,756 无过滤 官方
SIDER PT-only 1,430 4,314 136,655 仅 PT 级术语 多数论文
SIDER PT≥10 1,430 1,766 151,501 PT 且 ≥10 药物 Dey et al. 2018
Liu’‘’‘’‘’‘’‘’‘’‘’'s dataset 二分类格式+药物特征 Liu et al. 2012
SIDER-OFFSIDES 977 SIDER∩OFFSIDES 交集 HHAN-DSI 2026

§5.3 使用建议

使用场景 推荐配置 关键注意事项
ADR 二分类预测 SIDER PT≥10 (1430×1766) 使用 AUPR 而非 AUC;处理类别不平衡
频率预测 meddra_freq.tsv (759×994) 仅 39.9% 有频率;标准化为 5 级
药物靶点推断 SIDER 全量 + STITCH 副作用 Jaccard 相似性
药物重定位 SIDER 适应症 + ADR NLP 适应症过滤假阳性
知识图谱 SIDER + DrugBank + STRING STITCH ID 转 PubChem CID
基准对比 SIDER + OFFSIDES + AEOLUS 注意数据集间重叠和版本差异

§6 AI 就绪指南

§6.0 云端快速启动

# 一行命令下载并解压 SIDER 核心文件
wget -qO- http://sideeffects.embl.de/media/download/meddra_all_se.tsv.gz | gunzip > meddra_all_se.tsv
wget -qO- http://sideeffects.embl.de/media/download/meddra_freq.tsv.gz | gunzip > meddra_freq.tsv
wget -qO- http://sideeffects.embl.de/media/download/drug_names.tsv
wget -qO- http://sideeffects.embl.de/media/download/drug_atc.tsv

# 或使用 dhimmel/SIDER4 GitHub 镜像(已处理为标准格式)
git clone https://github.com/dhimmel/SIDER4.git

§6.1 快速上手代码

import pandas as pd
import gzip

def load_sider_side_effects(filepath: str = ''''''''''''''''meddra_all_se.tsv'''''''''''''''') -> pd.DataFrame:
    """加载 SIDER 副作用数据,筛选 PT 级术语"""
    df = pd.read_csv(filepath, sep=''''''''''''''''\t'''''''''''''''', header=None,
                     names=[''''''''''''''''stitch_flat'''''''''''''''', ''''''''''''''''stitch_stereo'''''''''''''''', ''''''''''''''''umls_label'''''''''''''''',
                            ''''''''''''''''meddra_type'''''''''''''''', ''''''''''''''''umls_meddra'''''''''''''''', ''''''''''''''''se_name''''''''''''''''])
    # 仅保留 PT 级术语(建议过滤 LLT 避免过度细分)
    df = df[df[''''''''''''''''meddra_type''''''''''''''''] == ''''''''''''''''PT''''''''''''''''].copy()
    return df

def load_sider_frequency(filepath: str = ''''''''''''''''meddra_freq.tsv'''''''''''''''') -> pd.DataFrame:
    """加载 SIDER 频率数据"""
    df = pd.read_csv(filepath, sep=''''''''''''''''\t'''''''''''''''', header=None,
                     names=[''''''''''''''''stitch_flat'''''''''''''''', ''''''''''''''''stitch_stereo'''''''''''''''', ''''''''''''''''umls_label'''''''''''''''',
                            ''''''''''''''''placebo'''''''''''''''', ''''''''''''''''freq_desc'''''''''''''''', ''''''''''''''''lower_bound'''''''''''''''',
                            ''''''''''''''''upper_bound'''''''''''''''', ''''''''''''''''meddra_type'''''''''''''''', ''''''''''''''''umls_meddra'''''''''''''''',
                            ''''''''''''''''se_name''''''''''''''''])
    return df

def stitch_to_pubchem(stitch_id: str) -> str:
    """将 STITCH flat ID 转换为 PubChem CID"""
    # STITCH flat ID 格式: CID100000085 → PubChem CID: 100000085
    return stitch_id.replace(''''''''''''''''CID'''''''''''''''', '''''''''''''''''''''''''''''''') if stitch_id.startswith(''''''''''''''''CID'''''''''''''''') else stitch_id

# 加载数据
se_df = load_sider_side_effects()
freq_df = load_sider_frequency()
drug_names = pd.read_csv(''''''''''''''''drug_names.tsv'''''''''''''''', sep=''''''''''''''''\t'''''''''''''''', header=None,
                          names=[''''''''''''''''stitch_flat'''''''''''''''', ''''''''''''''''drug_name''''''''''''''''])
drug_atc = pd.read_csv(''''''''''''''''drug_atc.tsv'''''''''''''''', sep=''''''''''''''''\t'''''''''''''''', header=None,
                        names=[''''''''''''''''stitch_flat'''''''''''''''', ''''''''''''''''atc_code''''''''''''''''])

print(f"副作用对数: {len(se_df)}")
print(f"药物数: {se_df[''''''''''''''''stitch_flat''''''''''''''''].nunique()}")
print(f"PT 级 ADR 数: {se_df[''''''''''''''''se_name''''''''''''''''].nunique()}")
# 输出: 副作用对数: ~136,655 / 药物数: 1,430 / PT 级 ADR 数: ~4,314

§6.2 数据获取与处理

import numpy as np
from collections import defaultdict

def build_drug_adr_matrix(se_df: pd.DataFrame, min_drugs: int = 10) -> tuple:
    """
    构建药物-ADR 二分类矩阵
    Args:
        se_df: SIDER 副作用 DataFrame(已过滤 PT 级)
        min_drugs: ADR 最少关联药物数(过滤罕见 ADR)
    Returns:
        drug_list, adr_list, label_matrix (n_drugs × n_adrs)
    """
    # 过滤关联药物数 < min_drugs 的 ADR
    adr_counts = se_df.groupby(''''''''''''''''se_name'''''''''''''''')[''''''''''''''''stitch_flat''''''''''''''''].nunique()
    valid_adrs = adr_counts[adr_counts >= min_drugs].index
    se_filtered = se_df[se_df[''''''''''''''''se_name''''''''''''''''].isin(valid_adrs)]

    # 构建药物和 ADR 列表
    drug_list = sorted(se_filtered[''''''''''''''''stitch_flat''''''''''''''''].unique())
    adr_list = sorted(valid_adrs)

    # 构建标签矩阵
    drug_to_idx = {d: i for i, d in enumerate(drug_list)}
    adr_to_idx = {a: i for i, a in enumerate(adr_list)}

    label_matrix = np.zeros((len(drug_list), len(adr_list)), dtype=np.float32)
    for _, row in se_filtered.iterrows():
        label_matrix[drug_to_idx[row[''''''''''''''''stitch_flat'''''''''''''''']],
                     adr_to_idx[row[''''''''''''''''se_name'''''''''''''''']]] = 1.0

    return drug_list, adr_list, label_matrix

def normalize_frequency(freq_df: pd.DataFrame) -> pd.DataFrame:
    """
    将频率描述标准化为 5 级整数编码
    very rare=1, rare=2, infrequent=3, frequent=4, very frequent=5
    """
    def freq_to_class(desc: str, lower: float, upper: float) -> int:
        if pd.isna(desc):
            return 0
        desc_lower = str(desc).lower()
        if ''''''''''''''''postmarketing'''''''''''''''' in desc_lower:
            return 0  # 无频率等级
        if ''''''''''''''''very frequent'''''''''''''''' in desc_lower or (upper >= 0.1):
            return 5
        if ''''''''''''''''frequent'''''''''''''''' in desc_lower or (lower >= 0.01 and upper < 0.1):
            return 4
        if ''''''''''''''''infrequent'''''''''''''''' in desc_lower or (lower >= 0.001 and upper < 0.01):
            return 3
        if ''''''''''''''''rare'''''''''''''''' in desc_lower or (lower >= 0.0001 and upper < 0.001):
            return 2
        if ''''''''''''''''very rare'''''''''''''''' in desc_lower or (upper < 0.0001):
            return 1
        return 0

    freq_df = freq_df.copy()
    freq_df[''''''''''''''''freq_class''''''''''''''''] = freq_df.apply(
        lambda r: freq_to_class(r[''''''''''''''''freq_desc''''''''''''''''], r[''''''''''''''''lower_bound''''''''''''''''], r[''''''''''''''''upper_bound'''''''''''''''']),
        axis=1)
    return freq_df

§6.3 预处理管道

from rdkit import Chem
from rdkit.Chem import AllChem
import pubchempy as pcp

def get_smiles_from_stitch(stitch_flat: str) -> str:
    """通过 STITCH ID → PubChem CID → SMILES"""
    pubchem_cid = stitch_to_pubchem(stitch_flat)
    try:
        compound = pcp.Compound.from_cid(int(pubchem_cid))
        return compound.canonical_smiles
    except Exception:
        return None

def smiles_to_ecfp(smiles: str, radius: int = 2, n_bits: int = 2048) -> np.ndarray:
    """将 SMILES 转换为 Morgan 指纹 (ECFP4)"""
    mol = Chem.MolFromSmiles(smiles)
    if mol is None:
        return np.zeros(n_bits, dtype=np.float32)
    fp = AllChem.GetMorganFingerprintAsBitVect(mol, radius, nBits=n_bits)
    return np.array(fp, dtype=np.float32)

def preprocess_sider(se_df: pd.DataFrame, drug_names: pd.DataFrame) -> dict:
    """
    完整 SIDER 预处理管道
    Returns: {drug_id: {''''''''''''''''smiles'''''''''''''''': str, ''''''''''''''''ecfp'''''''''''''''': np.array, ''''''''''''''''adrs'''''''''''''''': set}}
    """
    # 合并药物名称
    merged = se_df.merge(drug_names, on=''''''''''''''''stitch_flat'''''''''''''''', how=''''''''''''''''left'''''''''''''''')

    # 按 PT 级过滤
    merged = merged[merged[''''''''''''''''meddra_type''''''''''''''''] == ''''''''''''''''PT'''''''''''''''']

    # 构建药物-ADR 字典
    drug_data = {}
    for stitch_id, group in merged.groupby(''''''''''''''''stitch_flat''''''''''''''''):
        drug_name = group[''''''''''''''''drug_name''''''''''''''''].iloc[0] if not group[''''''''''''''''drug_name''''''''''''''''].isna().all() else ''''''''''''''''Unknown''''''''''''''''
        adrs = set(group[''''''''''''''''se_name''''''''''''''''].unique())

        # 获取 SMILES(通过 PubChem)
        smiles = get_smiles_from_stitch(stitch_id)

        # 计算 ECFP4 指纹
        ecfp = smiles_to_ecfp(smiles) if smiles else np.zeros(2048, dtype=np.float32)

        drug_data[stitch_id] = {
            ''''''''''''''''name'''''''''''''''': drug_name,
            ''''''''''''''''smiles'''''''''''''''': smiles,
            ''''''''''''''''ecfp'''''''''''''''': ecfp,
            ''''''''''''''''adrs'''''''''''''''': adrs
        }

    return drug_data

§6.4 PyTorch DataLoader

import torch
from torch.utils.data import Dataset, DataLoader
import torch.nn as nn

class SIDERDataset(Dataset):
    """SIDER 药物-ADR 多标签分类数据集"""

    def __init__(self, drug_list: list, adr_list: list,
                 label_matrix: np.ndarray, ecfp_features: np.ndarray):
        """
        Args:
            drug_list: 药物 STITCH ID 列表
            adr_list: ADR 名称列表
            label_matrix: (n_drugs, n_adrs) 二值标签矩阵
            ecfp_features: (n_drugs, 2048) ECFP4 分子指纹
        """
        self.drug_list = drug_list
        self.adr_list = adr_list
        self.labels = torch.FloatTensor(label_matrix)
        self.features = torch.FloatTensor(ecfp_features)

    def __len__(self):
        return len(self.drug_list)

    def __getitem__(self, idx):
        return {
            ''''''''''''''''features'''''''''''''''': self.features[idx],
            ''''''''''''''''labels'''''''''''''''': self.labels[idx],
            ''''''''''''''''drug_id'''''''''''''''': self.drug_list[idx]
        }

class ADRPredictionModel(nn.Module):
    """简单的 MLP 模型用于 ADR 多标签预测"""

    def __init__(self, input_dim: int = 2048, hidden_dim: int = 512,
                 n_adrs: int = 1766, dropout: float = 0.3):
        super().__init__()
        self.encoder = nn.Sequential(
            nn.Linear(input_dim, hidden_dim),
            nn.BatchNorm1d(hidden_dim),
            nn.ReLU(),
            nn.Dropout(dropout),
            nn.Linear(hidden_dim, hidden_dim // 2),
            nn.BatchNorm1d(hidden_dim // 2),
            nn.ReLU(),
            nn.Dropout(dropout),
        )
        self.classifier = nn.Linear(hidden_dim // 2, n_adrs)

    def forward(self, x):
        h = self.encoder(x)
        return self.classifier(h)  # 返回 logits (BCEWithLogitsLoss)

def train_adr_model(dataset: SIDERDataset, n_epochs: int = 50,
                    lr: float = 1e-3, batch_size: int = 32):
    """训练 ADR 预测模型"""
    dataloader = DataLoader(dataset, batch_size=batch_size, shuffle=True)
    model = ADRPredictionModel(n_adrs=len(dataset.adr_list))
    criterion = nn.BCEWithLogitsLoss(pos_weight=torch.ones(len(dataset.adr_list)) * 50)
    optimizer = torch.optim.Adam(model.parameters(), lr=lr)

    model.train()
    for epoch in range(n_epochs):
        total_loss = 0
        for batch in dataloader:
            optimizer.zero_grad()
            logits = model(batch[''''''''''''''''features''''''''''''''''])
            loss = criterion(logits, batch[''''''''''''''''labels''''''''''''''''])
            loss.backward()
            optimizer.step()
            total_loss += loss.item()
        if (epoch + 1) % 10 == 0:
            print(f"Epoch {epoch+1}/{n_epochs}, Loss: {total_loss/len(dataloader):.4f}")

    return model

§6.5 6 大坑点与解决方案

# 坑点 严重度 影响 解决方案
1 数据过时(2015 年冻结) 🔴 高 新药缺失、ADR 词汇过时 结合 OnSIDES(2023 数据)或 FAERS 补充;在论文中明确声明版本
2 STITCH ID 需转换 🟡 中 无法直接与其他数据库连接 stitch_flat.replace(''''''''''''''''CID'''''''''''''''','''''''''''''''''''''''''''''''') → PubChem CID;或用 dhimmel/SIDER4 预处理版本
3 MedDRA 许可证陷阱 🟡 中 MedDRA 字典本身不包含在 SIDER 中 如需完整 MedDRA 层级(SOC/HLGT/HLT),需从 ICH MSSO 获取许可;或用 UMLS 替代
4 极端类别不平衡 🔴 高 AUC 虚高(~0.95+),AUPR 更有意义 使用 AUPR/F1 评估;负采样策略;类别加权损失
5 数据泄漏风险 🟡 中 同一药物出现在训练和测试集 使用药物留一法(leave-one-drug-out)或聚类划分
6 频率数据不完整 🟡 中 仅 39.9% 有频率信息 频率预测任务仅使用有频率的子集;二分类任务使用全部数据

§6.6 模型推荐

模型类型 代表方法 SIDER 性能 优点 缺点
分子指纹 + MLP ECFP4 + DNN AUPR ~0.75-0.85 简单高效 忽略靶点信息
神经指纹 Neural FP (Dey 2018) AUPR ~0.87 可解释子结构 训练成本高
图神经网络 GCN-MLP AUPR 0.941 捕获分子拓扑 需分子图
异质图 GNN HHAN-DSI (2026) 准确率 ~0.90+ 整合多关系 复杂度高
Transformer MolBERT + 分类头 AUPR ~0.80-0.88 预训练迁移 数据量需求大
矩阵分解 NMF / SVD AUPR ~0.70-0.80 基线快速 性能有限

§6.7 硬件配置

配置 用途 规格
最低配置 加载 SIDER + 简单模型 8GB RAM, CPU, ~50MB 磁盘
推荐配置 GNN/Transformer 训练 16GB RAM, GPU 8GB VRAM
高性能配置 大规模实验 32GB RAM, GPU 24GB+ VRAM
云端 Colab 免费版 GPU T4 15GB, 够用

§6.8 评估指标

指标 公式 推荐度 SIDER 典型值 说明
AUPR PR 曲线下面积 ⭐⭐⭐⭐⭐ 0.75-0.94 不平衡数据首选
F1 2·P·R/(P+R) ⭐⭐⭐⭐ 0.40-0.70 需设阈值
AUC ROC 曲线下面积 ⭐⭐ 0.90-0.98 虚高,仅供参考
P@10 前 10 预测的精确率 ⭐⭐⭐⭐ 0.60-0.85 排序质量
Recall@K 前 K 预测的召回率 ⭐⭐⭐ 变化大 覆盖率

§7 质量评估与局限性

§7.1 偏倚来源

# 偏倚类型 描述 影响 缓解措施
1 临床人群偏倚 ADR 来自 Phase III 试验,86% 为白人为主 低估非白人群体的 ADR 结合 FAERS 上市后数据
2 性别偏倚 临床试验男性主导 女性特异性 ADR 被低估 参考 AwareDX 性别数据
3 FDA 中心偏倚 仅含美国 FDA 批准药物 缺失其他国家/地区独有药物 结合 EMA/PMDA 数据
4 频率报告偏倚 常见 ADR 更可能被报告 频率分布偏向 frequent 使用安慰剂对比频率校正
5 发表偏倚 标签仅列已确认 ADR 罕见但严重的 ADR 可能缺失 结合 OFFSIDES 上市后信号
6 数据时效偏倚 2015 年数据 2015 后批准药物完全缺失 使用 OnSIDES(2023 数据)补充

§7.2 标注质量

质量维度 评估 详情
术语标准化 ✅ 优秀 MedDRA 16.1 + UMLS CUI 双重映射
来源可追溯 ✅ 优秀 每条记录可追溯到原始药品说明书
假阳性率 ✅ 极低 drugs.com 交叉验证仅 1.2% 误标
频率准确性 ⚠️ 良好 NLP 提取,可能有少量错误
NLP 适应症 ⚠️ 中等 3 种方法,可能产生假阳性
IAA ⚠️ 未报告 无正式标注者间一致性报告
错误修正 ✅ 持续 GitHub 开放错误报告机制

§7.3 泛化性

场景 泛化能力 说明
已知药物 → 新 ADR ⚠️ 中等 受限于标签覆盖
新药物 → 已知 ADR ⚠️ 中等 化学结构相似性可外推
新药物 → 新 ADR ❌ 弱 零样本场景,需要迁移学习
FDA 药物 → 非美国药物 ⚠️ 中等 结构相似可迁移,但标签可能不同
单药 → 联合用药 ❌ 弱 需 TWOSIDES 数据补充
成人 → 儿科 ❌ 弱 需 KidSIDES 数据

§7.4 伦理考量

维度 状态 说明
IRB 审批 N/A 无人类受试者数据,仅使用公开药品说明书
知情同意 N/A 不涉及个体患者数据
隐私保护 ✅ 无风险 完全无患者级数据
公平性 ⚠️ 关注 临床人群代表性不足(白人/男性主导)
透明度 ✅ 高 数据来源、方法、局限性完全公开
利益冲突 ⚠️ 披露 biobyte solutions GmbH 负责商业许可

§7.5 DAIMS 24 项数据就绪度评估

# 评估项 状态 说明
1 数据模态多样性 文本/表格(TSV 格式)
2 数据格式标准化 TSV + MedDRA/UMLS 标准术语
3 数据规模充分性 139,756 对,足够训练
4 版本控制 SIDER 1/2/4/4.1 版本历史清晰
5 标注者间一致性 ⚠️ NLP 提取 + 人工审核,无正式 IAA
6 文档完整性 README + 论文 + 网站文档
7 伦理审查 N/A 无人类受试者
8 知情同意 N/A 无个体数据
9 隐私保护 完全无患者数据
10 数据可访问性 免费下载,无需注册
11 数据来源溯源 可追溯到原始 FDA 标签
12 元数据丰富度 MedDRA/UMLS/ATC/STITCH 多重标识
13 标准遵循 MedDRA + UMLS + ATC + STITCH
14 纵向追踪 静态数据,2015 后无更新
15 完整性 ⚠️ 39.9% 有频率信息
16 准确性 ⚠️ NLP 提取,可能有少量错误
17 一致性 ⚠️ 同一对可能有多个频率值
18 时效性 2015 年数据,已过时
19 可复现性 固定版本,可完全复现
20 真值质量 ⚠️ FDA 标签是权威来源,但非实验真值
21 公平性 临床人群偏倚(白人/男性主导)
22 数据泄露风险 ⚠️ 无预定义划分,需注意泄漏
23 偏倚控制 ⚠️ 多种偏倚未充分控制
24 统计稳健性 ⚠️ 极端类别不平衡

DAIMS 评分:15/24(排除 2 个 N/A 后 15/22 = 68%)⭐⭐⭐

§7.6 外部验证矩阵

验证集 数据量 与 SIDER 重叠 验证目的
OFFSIDES 438,801 对 38.8% SIDER 对被恢复 上市后 ADR 信号
TWOSIDES 868,221 对 无直接重叠 联合用药 ADR
OnSIDES 3.6M 对 部分重叠 现代标签 ADR
AEOLUS 3.77M 对 部分重叠 FAERS 标准化
FAERS 数百万 无直接重叠 自发报告系统
CT-ADE 168,984 对 无直接重叠 受控临床试验

§8 基准性能与生态

§8.1 ADR 预测排行榜

排名 模型 年份 特征 AUPR AUC F1 P@10
1 GCN-MLP 2022 化学+语义+图 0.941 0.98
2 HHAN-DSI 2026 异质图+BERT ~0.95 ~0.85
3 Neural FP (Dey) 2018 神经指纹 ~0.87 ~0.92 ~0.60 ~0.82
4 Circular FP + DNN 2018 ECFP4+MLP ~0.85 ~0.90 ~0.55 ~0.78
5 CNN+药理基因组学 2025 化学+基因+ADR ~0.84 ~0.89
6 NMF+热扩散 2022 矩阵分解 ~0.78 ~0.88
7 Random Forest 2018 2D/3D 分子描述符 ~0.75 ~0.85 ~0.50

注意:不同论文使用的 SIDER 配置不同(药物数、ADR 数、过滤条件),直接比较需谨慎。

§8.2 频率预测基准

Nature Communications 2020 研究建立了 SIDER 频率预测基准:

任务 数据量 方法 性能
频率等级预测(5 级) 37,441 条 (759 药物 × 994 ADR) 签名方法 RMSE ~0.8
上市后 ADR 预测 9,387 条 (SIDER) 频率签名 AUPR ~0.70
OFFSIDES ADR 预测 36,032 条 频率签名 AUPR ~0.65

§8.3 关键论文

# 论文 期刊 年份 DOI 核心贡献
1 Kuhn et al. “A side effect resource…” Mol Syst Biol 2010 10.1038/msb.2009.98 SIDER 创始论文(SIDER 1, 888 药物)
2 Kuhn et al. “The SIDER database…” NAR 2016 10.1093/nar/gkv1075 SIDER 4 论文(1430 药物,频率+适应症)
3 Campillos et al. “Drug target ID…” Science 2008 10.1126/science.1158140 副作用相似性→靶点预测(SIDER 创建动机)
4 Kuhn et al. “Systematic ID of proteins…” Mol Syst Biol 2013 10.1038/msb.2013.10 蛋白质-副作用关联
5 Tatonetti et al. “Data-driven prediction…” Sci Transl Med 2012 10.1126/scitranslmed.3003377 OFFSIDES + TWOSIDES 创建
6 Dey et al. “Predicting ADRs through…” Bioinformatics 2018 10.1093/bioinformatics/bty556 神经指纹 ADR 预测

§8.4 使用统计

指标 来源
NAR 2016 论文引用 1,227 次 Research Portal (2026-07)
NAR 2016 论文引用 821 次 Europe PMC (2026-07-25)
Mol Syst Biol 2010 论文引用 799 次 Scopus
两篇 SIDER 论文总引用 ~2,000+ 累计
FAIRsharing 收录 ✅ (zzaykv)
RRID SCR_004321
re3data r3d100012791
数据集 关系 规模 状态
STITCH 化合物标识来源 化学-蛋白质相互作用网络 活跃
DrugBank 药物词汇和靶点 ~14,000 药物 活跃
OFFSIDES 上市后 ADR 补充 438,801 对 活跃
TWOSIDES 联合用药 ADR 868,221 对 活跃
OnSIDES 现代标签 ADR(继任者) 3.6M 对 季度更新
AEOLUS FAERS 标准化 3.77M 对 活跃
FAERS 原始自发报告 数百万 季度更新
ADReCS ADR 本体分类 活跃

§8.6 生态快照

                    ┌─────────────┐
                    │   FDA 标签   │
                    │ (DailyMed)  │
                    └──────┬──────┘
                           │
                    ┌──────▼──────┐     ┌───────────┐
                    │   SIDER 4.1  │◄───►│  STITCH   │
                    │  (EMBL,2015) │     │  (化-蛋白) │
                    └──────┬──────┘     └───────────┘
                           │
              ┌────────────┼────────────┐
              │            │            │
       ┌──────▼──────┐ ┌──▼──────┐ ┌──▼──────────┐
       │  OFFSIDES   │ │TWOSIDES│ │  OnSIDES    │
       │(Tatonetti)  │ │(联用ADR)│ │(2023,标签ADR)│
       └──────┬──────┘ └─────────┘ └──────┬──────┘
              │                           │
       ┌──────▼──────┐             ┌──────▼──────┐
       │   FAERS     │             │  AEOLUS     │
       │ (FDA 原始)  │             │(FAERS 标准化)│
       └─────────────┘             └─────────────┘

生态角色:SIDER 是 ADR 数据生态的"种子"——OFFSIDES/OnSIDES 使用 SIDER 作为验证基准,TWOSIDES 扩展到联合用药场景,OnSIDES 是现代继任者。SIDER 的 MedDRA 术语体系和 STITCH 化合物标识成为整个生态的通用标准。

§9 相关资源与引用

§9.1 官方资源

资源 URL 说明
SIDER 官网 http://sideeffects.embl.de/ 数据库主页
下载页面 http://sideeffects.embl.de/download/ 全部 TSV 文件
FTP(历史版本) ftp://xi.embl.de/SIDER/ SIDER 1/2/4 旧版本
GitHub(错误报告) github.com/mkuhn/sider 提交已知错误
GitHub(镜像) github.com/dhimmel/SIDER4 社区处理版本
About 页面 http://sideeffects.embl.de/about/ 背景、引用、相关论文
NAR 论文 DOI: 10.1093/nar/gkv1075 SIDER 4 论文
Mol Syst Biol 论文 DOI: 10.1038/msb.2009.98 SIDER 1 论文
PubMed PMID: 26481350 (NAR), 20087340 (MSB) PubMed 收录
PMC PMC4702794 免费全文
FAIRsharing fairsharing.org/10.25504/FAIRsharing.zzaykv FAIR 收录
re3data re3data.org/repository/r3d100012791 数据库注册
Tatonetti Lab tatonettilab.org OFFSIDES/TWOSIDES/OnSIDES
nSIDES nsides.io OnSIDES 下载
EBI 新数据库公告 chembl.blogspot.com/2025/12/new-position-nlp-data.html 2026 年继任计划

§9.2 BibTeX

@article{kuhn2016sider,
  title={The SIDER database of drugs and side effects},
  author={Kuhn, Michael and Letunic, Ivica and Jensen, Lars Juhl and Bork, Peer},
  journal={Nucleic Acids Research},
  volume={44},
  number={D1},
  pages={D1075D1079},
  year={2016},
  doi={10.1093/nar/gkv1075},
  pmid={26481350}
}

@article{kuhn2010sider,
  title={A side effect resource to capture phenotypic effects of drugs},
  author={Kuhn, Michael and Campillos, Monica and Letunic, Ivica and Jensen, Lars Juhl and Bork, Peer},
  journal={Molecular Systems Biology},
  volume={6},
  pages={343},
  year={2010},
  doi={10.1038/msb.2009.98},
  pmid={20087340}
}

@article{campillos2008drug,
  title={Drug target identification using side-effect similarity},
  author={Campillos, Monica and Kuhn, Michael and Gavin, Anne-Claude and Jensen, Lars Juhl and Bork, Peer},
  journal={Science},
  volume={321},
  number={5886},
  pages={263266},
  year={2008},
  doi={10.1126/science.1158140}
}

@article{tatonetti2012data,
  title={Data-driven prediction of drug effects and interactions},
  author={Tatonetti, Nicholas P and Ye, Patrick P and Daneshjou, Roxana and Altman, Russ B},
  journal={Science Translational Medicine},
  volume={4},
  number={125},
  pages={125ra31},
  year={2012},
  doi={10.1126/scitranslmed.3003377}
}

§9.3 团队

成员 机构 角色 ORCID
Michael Kuhn Max Planck Institute, Dresden 第一作者/开发者 0000-0002-2627-833X
Ivica Letunic Biobyte solutions GmbH, Heidelberg 网站开发/商业许可 0000-0003-3560-4288
Lars Juhl Jensen Univ. of Copenhagen (NNF CPR) 共同作者 0000-0002-2841-872X
Peer Bork EMBL Heidelberg + MDC Berlin 通讯作者/PI 0000-0001-7885-715X
Monica Campillos EMBL(2008 时) Science 2008 共同第一

§10 AI 使用声明卡

§10.1 标识

  • 数据集名称:SIDER(Side Effect Resource)
  • 版本:SIDER 4.1
  • 发布日期:2015-10-21
  • DOI:10.1093/nar/gkv1075
  • URLhttp://sideeffects.embl.de/
  • 千方页面:/ai-ready-dataset/sider/90

§10.2 许可证摘要

数据 许可证 商业使用 再分发
副作用/频率/适应症 CC BY-SA 4.0 ⚠️ 需联系 biobyte ✅ 需署名+ShareAlike
药物名称/ATC CC0 ✅ 自由 ✅ 无限制
MedDRA 字典(不含在 SIDER 中) 需 ICH MSSO 许可
  1. 下载 SIDER 4.1 核心文件(meddra_all_se.tsv.gz + drug_names.tsv + drug_atc.tsv
  2. 加载 TSV 文件,按 PT 级过滤副作用
  3. 将 STITCH flat ID 转换为 PubChem CID
  4. 通过 PubChem CID 获取 SMILES 分子结构
  5. 计算 ECFP4/Morgan 分子指纹
  6. 过滤关联药物数 <10 的 ADR(得到 1,766 PT 级 ADR)
  7. 构建药物-ADR 多标签矩阵
  8. 使用药物留一法 5 折交叉验证
  9. 训练模型并使用 AUPR + P@10 评估

§10.4 人工校验表

检查项 状态 说明
数据集名称、版本准确 SIDER 4.1, 2015-10-21
数据规模准确 1430 药物, 5868 SE, 139756 对
许可证信息准确 CC BY-SA 4.0 + CC0 分层
作者和机构信息准确 Kuhn, Letunic, Jensen, Bork (EMBL)
基金信息准确 NNF14CC0001 + EMBL
关键论文引用准确 NAR 2016 + MSB 2010 + Science 2008
数据文件格式准确 TSV 列结构已验证
AI 基准性能准确 来自原始论文
局限性已充分披露 6 大坑点 + 6 种偏倚
页面状态为 published 无未定稿字样
返回 AI-Ready 数据集