GEO

GEO 基因表达综合数据库 | 千方病案医数集

来源 NCBI / NLM / NIH (https://www.ncbi.nlm.nih.gov/geo/)发布时间: 2026-08-04最后更新: 2026-08-04 阅读 2

信息速览

数据集名称GEO
数据类型约 200TB+ 数据量 , 650 万+ 样本, 20 万+ 研究
规模650 万+ 样本
接入方式NCBI / NLM / NIH (https://www.ncbi.nlm.nih.gov/geo/)
AI 就绪度

INFOBOX

数据集名称 GEO
英文全称 Gene Expression Omnibus
别名 / 简称 GEO、NCBI GEO、Gene Expression Omnibus Database
疾病分类 全疾病覆盖。核心映射:2A00–2C9Z 肿瘤 / 3A00–3A4Z 神经系统疾病 / 4A00–4B1Z 代谢疾病 / 5A00–5B1Z 内分泌疾病 / BA00–BB0Z 免疫系统疾病 / CA00–CB0Z 心血管疾病 / DA00–DE0Z 消化系统疾病 / 1A00–1E2Z 感染性疾病
SNOMED CT 254629001 Cancer (disorder) / 192847006 Metabolic disorder (disorder) / 73211009 Diabetes mellitus (disorder) / 396275006 Autoimmune disease (disorder) 等(GEO 覆盖全疾病谱,无单一限定)
数据模态 基因组(微阵列、高通量测序)、结构化(表达矩阵、元数据)、时序(时间序列实验)
AI 任务类型 差异表达分析、基因签名预测、生物标志物发现、免疫浸润估计、基因共表达网络推断、跨研究批次校正、单细胞细胞类型注释、表观调控元件识别、序列-表达深度学习预测
样本总数 6,500,000+ 样本(来自 200,000+ 项研究)
数据大小 >200 TB(处理后定量数据,~4,000,000 个补充文件)
数据格式 SOFT / MINiML (XML) / Series Matrix (TXT) / 补充文件(CEL, IDAT, CSV, TXT, GTF, BED, bigWig 等)/ RNA-seq Count Matrix (TSV)
许可证 公共领域(Public Domain);数据免费提交、下载和使用,无使用限制
访问级别 开放
DUO 标签 NRES(无使用限制)
语言 英文
首发日期 2000-07
最后更新 2025-06(持续更新,新数据通常在提交后数日内发布)
发布机构 National Center for Biotechnology Information (NCBI), National Library of Medicine (NLM), National Institutes of Health (NIH)
官方主页 https://www.ncbi.nlm.nih.gov/geo/
下载地址 https://ftp.ncbi.nlm.nih.gov/geo/ (FTP 批量下载)/ https://www.ncbi.nlm.nih.gov/gds/ (在线搜索)
DOI 10.1093/nar/gkad965(2024 NAR Database Issue)
引用次数 47,000+(PubMed Central 文章引用 GEO 或 GSE 登录号,截至 2025-01)
AI 就绪度评分 ⭐⭐⭐ (3/5) — 数据规模全球最大且完全开放,GEO2R/GEOquery 工具链成熟;扣分项:元数据质量因提交者而异、跨研究批次效应严重、无统一预处理标准、无官方 train/test 划分
页面状态 published

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

字段 内容
医学审核者 [千方病案医学编辑部] 交叉审核:§2 医学背景(ICD-11 映射、临床任务定义、疾病关联分析)、§7 偏倚分析
数据工程审核者 [千方病案医学编辑部] 交叉审核:§4 数据结构(GSE/GSM/GPL/GDS 四级标识体系、DAIMS 数据字典)、§5 数据划分策略、§6 预处理 Pipeline 和坑点
审核日期 2026-08-04
审核方式 交叉审核

权威文献溯源

本页面的核心数据点追溯至以下经同行评审的权威出版物:

编号 文献 关键贡献
1 Edgar R, Domrachev M, Lash AE. “Gene Expression Omnibus: NCBI gene expression and hybridization repository.” Nucleic Acids Research. 2002;30(1):207–210. GEO 创始论文,定义三级数据模型(Platform/Sample/Series)
2 Barrett T, et al. “NCBI GEO: mining millions of expression profiles—database and tools.” Nucleic Acids Research. 2005;33(Database issue):D562–D566. 首次引入 DataSet/Profile 策展层与 GEO2R 前身工具
3 Barrett T, et al. “NCBI GEO: archive for high-throughput functional genomic data.” Nucleic Acids Research. 2010;39(Database issue):D1005–D1010. NGS 数据集成,MINSEQE 标准采纳
4 Barrett T, et al. “NCBI GEO: archive for functional genomics data sets—update.” Nucleic Acids Research. 2013;41(Database issue):D991–D995. 单细胞 RNA-seq 数据支持扩展
5 Clough E, Barrett T, et al. “NCBI GEO: archive for gene expression and epigenomics data sets: 23-year update.” Nucleic Acids Research. 2024;52(D1):D138–D144. 23 周年里程碑更新,确认 20 万+ 研究与 650 万+ 样本
6 Edgar R, Barrett T. “NCBI GEO standards and services for microarray data.” Nature Genetics. 2006;37(suppl):S19–S20. MIAME 标准实施与策展流程定义
7 Davis S, Meltzer PS. “GEOquery: a bridge between the Gene Expression Omnibus (GEO) and BioConductor.” Bioinformatics. 2007;23(14):1846–1847. GEOquery R 包,连接 GEO 与 Bioconductor 生态
8 Barrett T, et al. “BioProject and BioSample databases at NCBI: facilitating capture and organization of metadata.” Nucleic Acids Research. 2012;40(Database issue):D57–D63. GEO 与 BioProject/BioSample 集成架构

强制免责声明

医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。

技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。

数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。GEO 数据处于公共领域,但部分人类受试者数据可能通过 dbGaP 受控访问管理。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。

§1 数据集概览

§1.0 📌 30 秒速览

GEO(Gene Expression Omnibus)是美国国家生物技术信息中心(NCBI)于 2000 年创建的国际公共功能基因组学数据仓库,收录来自全球 72 个国家、70,000 余名研究者提交的 200,000+ 项研究、650 万+ 份样本,覆盖 6,000+ 种生物,是目前全球最大、最全面的基因表达与表观基因组学数据归档库。

它的独特价值在于作为转录组学领域的"基础设施级"数据中枢——几乎所有主流期刊和基金资助机构都要求相关研究在发表论文前将数据提交至 GEO。这使得 GEO 成为一个持续增长、免费开放、覆盖全疾病谱和全物种谱的数据宝库,支持从单一基因表达到跨研究百万样本元分析的各类研究。截至 2025 年,已有 47,000+ 篇 PubMed Central 文章引用 GEO 数据。

你可以用它来:发现泛癌种共有的转录组生物标志物、训练深度学习模型预测基因表达谱与疾病状态关联、或者整合多个 GEO 数据集进行跨批次元分析以验证发现的鲁棒性。

§1.1 摘要

GEO 由 NCBI/NLM/NIH 运营,采用 Platform(GPL)→ Sample(GSM)→ Series(GSE)→ DataSet(GDS)四级数据组织架构。提交者通过 Web 表单或 SOFT 格式批量提交微阵列和高通量测序数据,所有提交经 GEO 策展团队人工审核后分配永久登录号。GEO 遵循 MIAME(微阵列)和 MINSEQE(测序)最低信息标准,支持 FAIR 原则(可发现、可访问、可互操作、可重用)。数据类型涵盖基因表达谱(微阵列 + RNA-seq)、表观基因组(ChIP-seq、甲基化)、非编码 RNA、染色体构象(Hi-C)、单细胞 RNA-seq 等。NCBI 还运行统一 RNA-seq 定量管线,为 23,000+ 研究提供标准化计数矩阵,并集成至 GEO2R 在线差异表达分析工具。

§1.2 战略价值分析

基础设施级数据中枢维度:GEO 不是某一特定研究项目的产物,而是全球生命科学研究的数据基础设施。其年均 15% 的增长率(约每 5 年翻一番)意味着数据量呈指数级膨胀,新数据通常在提交后一周内发布。这种持续增长的特性使得 GEO 成为 AI 模型训练的理想数据源——模型可以从不断扩大的数据池中持续学习,提升泛化能力。更重要的是,GEO 的免费开放政策消除了数据获取门槛,任何研究者均可自由下载和使用全部数据,这在功能基因组学领域是独一无二的。

AI 元分析赋能维度:GEO 的真正威力不在于单个数据集,而在于跨数据集的元分析能力。研究者可以同时整合数十个独立 GEO 数据集,跨越不同平台、实验室和人群,验证基因签名或生物标志物的一致性。这种跨研究验证是临床转化的前提——一个在多个独立队列中重现的发现,远比单一队列的发现可信。深度学习模型尤其受益:通过整合 GEO 中的海量标注数据,可以训练出泛化能力强的基因表达预测器、药物响应分类器和疾病诊断模型。典型应用包括 Enformer(从 DNA 序列预测基因表达)、CIBERSORT(免疫浸润估计)和跨癌种泛分析。

§1.3 横向对比

数据集 样本量 数据模态 标注方式 核心差异化
GEO 6,500,000+ 微阵列 + NGS(全覆盖) 提交者自供 + NCBI 策展 全球最大功能基因组学公共仓库,全物种全疾病覆盖
ArrayExpress ~2,500,000 微阵列 + NGS MIAME 合规提交 EBI 运营,欧洲对应物,与 GEO 互为补充
TCGA ~22,000 多组学(RNA-seq + 临床) 统一管线处理 癌症多组学 + 临床随访,深度表型标注
GTEx ~17,000 RNA-seq(正常组织) 统一管线 + 组织学验证 正常组织转录组基线,组织特异性表达参考
SRA ~40,000,000+ 原始测序读段 无(原始数据归档) 原始 FASTQ 归档,GEO 测序数据的底层存储

§1.4 版本演进时间轴

时间 事件
2000-07 GEO 正式上线(NCBI),初始支持微阵列数据提交
2001-03 MIAME 最低信息标准发布,GEO 逐步采纳
2002-01 Edgar 等在 Nucleic Acids Research 发表创始论文
2005-06 数据库重大改版,全面支持 MIAME 数据元素;引入 SOFT 批量提交格式
2006-03 NCBI GEO 标准与服务论文发表于 Nature Genetics
2007-07 GEOquery R/Bioconductor 包发布,打通 GEO 与 Bioconductor 生态
2009-01 首条单细胞 RNA-seq 数据(GSE14605)发布
2010-01 NAR 更新论文,正式集成 NGS 数据支持,采纳 MINSEQE 标准
2013-01 NAR 更新论文,单细胞数据支持扩展,supplementary 文件量激增
2015-09 GEO2R 在线差异表达分析工具发布(基于 limma)
2018-01 RNA-seq 研究占比首次超过 50% 的年度提交
2020-11 GEO2R 分组顺序更新(test→control 默认方向)
2022-12 单细胞 RNA-seq 占 RNA-seq 研究的 21%;NCBI 统一 RNA-seq 定量管线上线
2024-01 NAR 23 周年更新论文发表:20 万+ 研究,650 万+ 样本,200 TB+ 数据
2025-06 研究数量达到 ~270K(年均增长 15%),持续更新

§1.5 AI 应用场景

场景 描述
癌症生物标志物发现 整合多个 GEO 癌症数据集,通过差异表达分析和机器学习筛选泛癌种标志物
基因签名预测 使用 LASSO、SVM-RFE 等特征选择方法构建疾病诊断或预后基因签名
免疫浸润分析 利用 CIBERSORT 等工具从批量 RNA-seq 数据推断肿瘤微环境免疫细胞组成
深度学习序列-表达预测 训练 Enformer、Basenji 等模型从 DNA 序列预测基因表达和染色质可及性
单细胞细胞类型注释 整合 GEO 单细胞数据集训练 scGPT、scBERT 等基础模型
药物响应预测 结合 GDSC/CCLE 细胞系转录组与 GEO 肿瘤样本数据预测药物敏感性
跨研究批次校正 使用 ComBat、limma::removeBatchEffect 等方法整合多 GEO 数据集
表观调控元件鉴定 分析 ChIP-seq、ATAC-seq、甲基化数据识别增强子、启动子和绝缘子

§2 基因组学与医学背景

§2.1 ICD-11 疾病映射

GEO 覆盖全疾病谱,以下为主要疾病类别映射:

ICD-11 编码 疾病类别 GEO 中的典型研究类型 代表性数据集示例
2A00–2C9Z 肿瘤(各类癌症) 肿瘤 vs 正常差异表达、分子分型、预后建模 GSE4115(肺癌)、GSE2034(乳腺癌转移)
2A00.0 肺恶性肿瘤 肺腺癌/鳞癌转录组、免疫微环境 GSE75037、GSE50081
2A60.0 乳腺恶性肿瘤 乳腺癌分子亚型、治疗响应预测 GSE54002、GSE22820
3A00–3A4Z 神经系统疾病 神经退行性疾病、神经发育障碍 GSE15222(阿尔茨海默病)
4A00–4B1Z 代谢疾病 糖尿病、肥胖转录组 GSE15653(2 型糖尿病)
5A00–5B1Z 内分泌疾病 甲状腺疾病、肾上腺疾病 GSE3467(甲状腺癌)
BA00–BB0Z 免疫系统疾病 自身免疫病、免疫缺陷 GSE11909(SLE)
CA00–CB0Z 心血管疾病 心肌梗死、心力衰竭 GSE66360(心梗)
1A00–1E2Z 感染性疾病 病毒/细菌感染宿主转录组响应 GSE73072(败血症)

§2.2 SNOMED CT 补充映射

数据集研究领域 ICD-11 SNOMED CT SNOMED CT 术语
癌症研究 2A00–2C9Z 254629001 Cancer (disorder)
神经退行性疾病 8A20–8A6Z 26929004 Alzheimer’‘’‘’‘’‘’‘’‘’‘’'s disease (disorder)
糖尿病 5A11 73211009 Diabetes mellitus (disorder)
自身免疫病 4A40–4A4Z 396275006 Autoimmune disease (disorder)
心肌梗死 BA41–BA42 22298006 Myocardial infarction (disorder)
败血症 1G40 91302008 Sepsis (disorder)

§2.3 功能基因组学背景

概念 说明
基因表达谱 在特定条件、特定时间点,一个细胞或组织中所有基因转录水平的整体快照。GEO 的核心数据类型
转录组 一个生物体在特定状态下所有 RNA 转录本的集合,包括 mRNA、ncRNA 等。RNA-seq 是当前主流测量技术
差异表达分析 比较两组样本(如肿瘤 vs 正常)基因表达水平的统计差异,识别显著上调或下调的基因
表观基因组 DNA 甲基化、组蛋白修饰等不改变 DNA 序列但影响基因表达的调控信息
染色质可及性 染色质开放区域(ATAC-seq/DNase-seq 测量),反映转录调控潜力
单细胞转录组 逐细胞测量基因表达,揭示细胞异质性和稀有细胞类型

§2.4 数据来源与人群

维度 特征
数据来源 全球 72+ 国家的研究机构自主提交;学术期刊和基金资助机构强制要求
采集时间 2000 年至今持续增长,年均增长率 ~15%
物种覆盖 6,000+ 种生物,以人类和小鼠为主,涵盖植物、微生物、模式生物等
提交者 70,000+ 位独立提交者,覆盖学术机构、医院、制药公司等
数据类型分布 ~85% 为 NGS 数据,~15% 为微阵列数据;~80% 表达谱,~20% 表观基因组
单细胞占比 2022 年单细胞 RNA-seq 占 RNA-seq 研究的 21%,且持续增长

§2.5 临床与科研意义

GEO 的临床意义体现在三个层面:

  1. 生物标志物发现:通过比较疾病组织与正常组织的转录组差异,发现可用于早期诊断、预后评估或治疗响应预测的基因签名。多个经临床验证的基因检测面板(如 Oncotype DX 乳腺癌 21 基因检测)的初始发现阶段均依赖 GEO 类公共数据。

  2. 药物靶点挖掘:疾病组织中异常表达的基因提示潜在的治疗靶点。结合 DepMap 等依赖性数据,可进一步筛选合成致死基因对。

  3. 精准医学:患者肿瘤转录组与 GEO 参考数据库比对,可辅助分子分型和治疗方案选择。这一策略已在多种癌症中得到验证。

§2.6 标注与金标准

数据层次 标注方式 标注者 金标准性质
GSM(样本) 提交者自填元数据(组织来源、处理条件、实验设计) 数据提交者 提交者自供,质量因人而异
GSE(研究) 提交者提供的研究摘要、实验设计描述 数据提交者 提交者自供,经 GEO 策展人格式审核
GDS(策展数据集) GEO 策展人人工策展:统一归一化、分组标注、实验变量分类 GEO 策展团队 人工策展,可跨样本比较
RNA-seq 计数矩阵 NCBI 统一管线(HISAT2 + StringTie + featureCounts)自动生成 NCBI 自动化管线 统一处理,跨研究可比性增强
临床表型 部分数据集附带临床元数据(分期、生存、治疗响应) 原始研究团队 因研究而异,非统一标准

§3 技术规格

§3.0 版本抉择矩阵

你的需求 推荐访问方式 数据量 理由
快速查看单个 GSE 研究并做差异表达分析 GEO2R 在线工具 无需下载 浏览器内直接分析,基于 limma/DESeq2,零代码
批量下载多个 GSE 的表达矩阵和元数据 GEOquery ® / GEOparse (Python) 视 GSE 而定 编程访问,自动解析 Series Matrix,可直接进入分析流程
下载原始数据(CEL/FASTQ) GEO 补充文件 + SRA 数 GB–数 TB 原始数据需自行重新处理,适合需要自定义分析管线的研究
获取统一处理的 RNA-seq 计数矩阵 NCBI RNA-seq 定量管线 每研究数 MB–数 GB 23,000+ 研究已有标准化计数矩阵,跨研究可比性最佳
批量挖掘全库数据(元分析/训练大模型) FTP 批量下载 + E-utilities API 数十–数百 TB 全量下载,需大规模存储和计算资源
查找特定基因的表达谱 GEO Profiles 搜索 无需下载 基因中心视角,快速查看跨数据集表达模式

§3.1 数据类型与模态

GEO 收录的主要数据类型:

数据类型 技术 占比(估计) 典型文件格式
基因表达谱(微阵列) Affymetrix、Agilent、Illumina 芯片 ~15% CEL, GPR, TXT
基因表达谱(RNA-seq) Illumina HiSeq/NovaSeq、PacBio ~60% FASTQ(→SRA), CSV, TSV
表观基因组 ChIP-seq, Bisulfite-seq, ATAC-seq ~12% BED, bigWig, bigBed
非编码 RNA small RNA-seq, lncRNA 芯片 ~5% FASTQ, TXT
染色体构象 Hi-C, ChIA-PET ~3% HIC, PAIRIX
单细胞 RNA-seq 10x Chromium, Smart-seq2, Drop-seq ~3% matrix.mtx, h5, rds
蛋白质组 蛋白质芯片 ~1% GPR, TXT
基因组变异 arrayCGH, SNP 芯片 ~1% CEL, TXT

§3.2 数据格式

格式 用途 特点 工具支持
SOFT 原始提交格式 纯文本,包含 Platform/Sample/Series 全部元数据和数据表 GEOparse (Python), GEOquery ®
Series Matrix 表达矩阵+元数据摘要 制表符分隔文本,压缩后下载,最常用 GEOquery ®, pandas (Python)
MINiML XML 格式的 SOFT 结构化 XML,机器可读性更强 GEOquery ®
补充文件 提交者上传的原始/处理文件 格式多样(CEL, IDAT, CSV, HDF5 等),非标准化 因格式而异
RNA-seq Count Matrix NCBI 统一定量结果 TSV 格式,标准化计数矩阵 DESeq2, edgeR, limma-voom

§3.3 数据规模统计

统计维度 数值 备注
总研究数(GSE) 200,000+(2025 年约 270,000) 年均增长 ~15%
总样本数(GSM) 6,500,000+ 含微阵列和测序样本
策展数据集数(GDS) ~5,000+ 人工策展,仅覆盖部分 GSE
平台数(GPL) ~30,000+ 包含商业芯片和自定义平台
物种数 6,000+ 以人类和小鼠为主
提交者数 70,000+ 来自 72+ 国家
补充文件总量 ~4,000,000 个 >200 TB
PubMed 引用文章 47,000+ 截至 2025-01
RNA-seq 标准化研究数 23,000+ NCBI 统一管线处理

§3.4 数据访问渠道

渠道 方式 适用场景 限制
GEO 网站 https://www.ncbi.nlm.nih.gov/geo/ 在线搜索、浏览、GEO2R 分析 手动操作,不适合大批量
GEO DataSets (GDS) https://www.ncbi.nlm.nih.gov/gds/ 搜索策展数据集和原始 Series NCBI Entrez 搜索语法
FTP 站点 https://ftp.ncbi.nlm.nih.gov/geo/ 批量下载,按登录号目录组织 文件量大,需大带宽
E-utilities API eSearch/eSummary/eFetch/eLink 编程访问,自动化查询 每秒 3 次请求限制(无 API key)
GEOquery ® Bioconductor 包 R/Bioconductor 生态集成 需 R 环境
GEOparse (Python) PyPI 包 Python 生态集成 需 Python 环境

§3.5 GEO 数据组织架构

GEO 数据库
├── Platform (GPL) ── 平台记录
│   ├── 探针/特征注释表
│   ├── 技术描述(芯片设计/测序平台)
│   └── 可被多个 Sample 引用
│
├── Sample (GSM) ── 样本记录
│   ├── 生物来源描述(组织、物种、处理)
│   ├── 实验协议
│   ├── 归一化数据表(表达值)
│   ├── 补充文件(原始数据链接)
│   └── 必须引用一个 GPL
│
├── Series (GSE) ── 研究记录
│   ├── 研究标题和摘要
│   ├── 关联一组相关 GSM
│   ├── 实验设计描述
│   ├── 补充文件(整研究打包)
│   └── 可引用多个 GPL
│
└── DataSet (GDS) ── 策展数据集(人工策展层)
    ├── 统一归一化的样本集合
    ├── 实验变量分组标注
    ├── 可跨样本比较
    └── 生成 GEO Profiles(基因中心视角)

§3.6 GEO2R 在线分析工具

特性 说明
功能 在线差异表达分析,比较 GEO Series 中的样本组
微阵列数据 使用 GEOquery + limma(线性模型 + 经验贝叶斯)
RNA-seq 数据 使用 DESeq2(负二项广义线性模型),基于 NCBI 计数矩阵
分组 最多 10 组,至少 2 组
样本限制 255 个样本上限
运行时间 10 分钟超时
输出 Top 250 差异基因表(按调整 P 值排序)、火山图、箱线图、PCA 图
R 脚本 可下载完整 R 脚本在本地重现分析

§3.7 NCBI 统一 RNA-seq 定量管线

组件 工具 说明
比对 HISAT2 修剪基因组比对,支持剪接位点
转录本组装 StringTie 基于比对结果组装转录本
基因定量 featureCounts 基因级别 read 计数
输出 TSV 计数矩阵 基因 × 样本计数矩阵
覆盖范围 23,000+ 人类 bulk RNA-seq 研究 持续更新,新数据通常在一周内处理
可识别标记 "rnaseq counts"[Filter] 在 GEO DataSets 搜索中使用

§3.8 工具生态

工具 语言 功能 生态角色
GEOquery R (Bioconductor) 下载和解析 GEO 数据 → ExpressionSet/SummarizedExperiment R 生态核心桥梁
GEOparse Python 下载和解析 GEO SOFT 文件 → Python 对象 Python 生态核心桥梁
GEO2R Web 在线差异表达分析 零代码分析入口
limma R (Bioconductor) 微阵列差异表达分析 金标准统计方法
DESeq2 R (Bioconductor) RNA-seq 差异表达分析 金标准统计方法
edgeR R (Bioconductor) RNA-seq 差异表达分析 替代金标准方法
ComBat / sva R (Bioconductor) 批次效应校正 跨研究整合必备
CIBERSORT R/Web 免疫浸润估计 肿瘤微环境分析
WGCNA R 加权基因共表达网络分析 系统生物学分析
clusterProfiler R (Bioconductor) 功能富集分析(GO/KEGG) 下游生物学解释
ARCHS4 Web/API GEO 数据统一处理和搜索 第三方增值服务
Recount3 R/Web GEO RNA-seq 统一重处理 替代定量管线

§4 数据结构详解

§4.1 GEO 登录号体系

前缀 实体 描述 示例
GPL Platform(平台) 芯片设计或测序技术描述,含探针注释表 GPL570(Affymetrix HG-U133 Plus 2.0)
GSM Sample(样本) 单个实验样本,含元数据和表达值表 GSM5574685
GSE Series(研究) 一组相关样本的集合,对应一篇论文 GSE183947
GDS DataSet(策展数据集) 人工策展的可比较样本集合 GDS507

§4.2 单条目数据结构(以 GSE 为例)

一个 GSE Series 记录包含以下组件:

组件 内容 位置
标题与摘要 研究标题、实验设计摘要、组织类型、物种 GSE 页面顶部
平台引用 关联的 GPL 登录号 元数据区
样本列表 所有 GSM 登录号及链接 样本表
实验设计 分组信息、处理条件、时间点 元数据区
出版物 关联的 PubMed ID 元数据区
补充文件 提交者上传的处理后数据(表达矩阵 CSV、分析结果等) 补充文件区
Series Matrix 制表符分隔的表达矩阵 + 样本元数据 下载区
SOFT 全文 完整的 SOFT 格式记录(含所有 GSM 和 GPL) 下载区
MINiML XML 格式的完整记录 下载区
SRA 链接 关联的 SRA 测序项目(如有测序数据) 外部链接

§4.3 Series Matrix 文件结构

!Series_title "GSE183947: ..."
!Series_summary "Experimental design description..."
!Series_overall_design "..."
!Series_type "Expression profiling by high throughput sequencing"
!Series_platform_id GPL11154
!Series_sample_id GSM5574685
!Series_sample_id GSM5574686
...
!Sample_characteristics_ch1 "tissue: liver"
!Sample_characteristics_ch1 "disease: hepatocellular carcinoma"
...
!series_matrix_table_begin
ID_REF  GSM5574685  GSM5574686  ...
GeneA   8.523       7.891       ...
GeneB   2.114       3.456       ...
!series_matrix_table_end

§4.4 FTP 目录结构

/geo/
├── datasets/          ── 按 GDS 组织
│   └── GDS1nnn/
│       └── GDS1001/
│           ├── soft/GDS1001.soft.gz
│           └── soft/GDS1001_full.soft.gz
├── series/            ── 按 GSE 组织
│   └── GSE1nnn/
│       └── GSE1000/
│           ├── soft/GSE1000_family.soft.gz
│           ├── miniml/GSE1000_family.xml.tgz
│           ├── matrix/GSE1000_series_matrix.txt.gz
│           └── suppl/GSE1000_RAW.tar
├── samples/           ── 按 GSM 组织
│   └── GSM1nnn/
│       └── GSM1137/
│           └── suppl/GSM1137.CEL.gz
└── platforms/         ── 按 GPL 组织
    └── GPLnnn/
        └── GPL10/
            ├── soft/GPL10_family.soft.gz
            └── miniml/GPL10_family.xml.tgz

§4.5 DAIMS 标准化数据字典

字段 类型 来源 描述 AI 就绪评估
accession string (GSE/GSM/GPL/GDS + 数字) GEO 自动分配 永久唯一标识符 ✅ 标准化
title string 提交者 研究或样本标题 ⚠️ 格式因人而异
summary text 提交者 研究摘要 ⚠️ 详细程度不一
organism string (物种名) 提交者选择 模式生物名 ✅ 受控词表
platform string (GPL) 提交者选择 平台登录号 ✅ 标准化
sample_type string 提交者选择 实验类型(RNA-seq/微阵列等) ✅ 分类受控
characteristics key-value pairs 提交者自填 样本特征(组织、疾病、处理等) ❌ 非标准化,需 NLP 解析
source_name string 提交者 生物来源名称 ⚠️ 自由文本
molecule string 提交者 提取的分子类型(total RNA/poly-A RNA 等) ✅ 分类受控
extract_protocol text 提交者 提取和文库构建协议 ⚠️ 详细程度不一
data_processing text 提交者 数据处理流程描述 ⚠️ 自由文本
expression_values numeric matrix 提交者或 NCBI 管线 归一化表达值矩阵 ✅ 矩阵格式
raw_counts integer matrix NCBI 统一管线 RNA-seq 原始计数矩阵 ✅ 统一处理
supplementary_files file[] 提交者 补充文件(CEL/CSV/BED 等) ❌ 格式碎片化
pubmed_id string 提交者 关联 PubMed 文献 ✅ 标准标识符
submission_date date GEO 自动 提交日期 ✅ 标准化
last_update_date date GEO 自动 最后更新日期 ✅ 标准化

§4.6 数据覆盖统计

维度 数值 说明
研究总数 ~270,000 (2025) GSE 记录,持续增长
样本总数 6,500,000+ GSM 记录
物种覆盖 6,000+ 从人类到细菌
平台覆盖 30,000+ GPL 记录
策展数据集 ~5,000+ GDS 记录,人工策展
RNA-seq 标准化 23,000+ NCBI 计数矩阵
PubMed 关联 47,000+ 引用 GEO 的文章
数据总量 >200 TB 补充文件
文件总数 ~4,000,000 补充文件数

§4.7 不覆盖的数据类型

数据类型 原因 替代资源
原始测序 FASTQ 由 SRA 管理 SRA (Sequence Read Archive)
全基因组测序 不属于功能基因组学范畴 dbGaP / SRA
临床影像 非转录组数据 TCIA / CheXpert
蛋白质三维结构 非功能基因组学 PDB / AlphaFold DB
药物分子结构 非基因组数据 ChEMBL / PubChem
代谢组学数据 非基因表达数据 MetaboLights / Metabolomics Workbench

§5 数据划分与使用建议

§5.1 GEO 的数据划分特性

GEO 作为公共数据仓库,不提供官方的 train/validation/test 划分。研究者需要根据具体任务自行设计划分策略。以下是五种常见划分方法:

划分策略 方法 适用场景 优缺点
单数据集内部划分 在单个 GSE 内按比例划分 train/test 快速原型验证 ✅ 无批次效应;❌ 样本量可能不足
跨数据集训练/验证 一个 GSE 训练,另一个 GSE 验证 模型泛化能力评估 ✅ 验证外部有效性;❌ 需处理批次效应
留一法(LOSO) 每次留一个 GSE 做测试集,其余训练 小规模元分析 ✅ 充分利用数据;❌ 计算开销大
K-fold 跨数据集 将多个 GSE 混合后 K 折划分 大规模元分析 ✅ 数据利用率高;❌ 批次效应影响
平台分层划分 按平台(GPL)分层划分 跨平台泛化评估 ✅ 评估平台无关性;❌ 需充足平台数据

§5.2 跨研究整合策略

策略 方法 工具 适用场景
批次校正 ComBat / ComBat-seq sva R 包 消除平台/实验室间技术差异
元分析 固定效应/随机效应模型 metafor R 包 整合多个独立研究的效应量
嵌套模型 每个数据集训练独立模型,再集成 scikit-learn 避免批次效应,利用数据量
域自适应 对抗域自适应 / 迁移学习 PyTorch / TensorFlow 跨平台/疾病知识迁移
统一重处理 从原始数据统一处理 Recount3 / ARCHS4 消除处理差异

§5.3 推荐的 AI 训练数据获取流程

步骤 操作 工具 注意事项
1 确定研究问题和目标疾病 PubMed 文献调研 明确临床任务定义
2 在 GEO DataSets 搜索相关 GSE NCBI Entrez 查询语法 使用 organism + disease + assay type 筛选
3 评估每个 GSE 的样本量和元数据质量 GEO 网页浏览 优先选择有临床表型标注的数据集
4 下载 Series Matrix 或 RNA-seq 计数矩阵 GEOquery / GEOparse 检查表达值分布是否归一化
5 解析样本特征,提取分组标签 自定义 NLP / 正则 样本特征字段非标准化,需逐数据集处理
6 批次校正(如整合多个 GSE) ComBat / limma 校正前检查生物学变量与技术变量的混淆
7 差异表达分析(如需特征筛选) limma / DESeq2 多重检验校正(Benjamini-Hochberg)
8 划分 train/validation/test 按上述策略选择 确保测试集与训练集无样本泄漏
9 训练机器学习/深度学习模型 scikit-learn / PyTorch 交叉验证评估鲁棒性
10 在独立 GSE 上外部验证 GEOquery 报告 AUC、C-index 等指标

§6 AI 就绪指南

§6.1 使用 GEOquery ® 下载 GSE 数据

# 安装 GEOquery
if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install("GEOquery")

library(GEOquery)

# 下载 GSE Series Matrix
gse <- getGEO("GSE183947", GSEMatrix = TRUE)
se <- gse[[1]]  # 默认返回 SummarizedExperiment

# 提取表达矩阵
expr_matrix <- assay(se)  # 基因 × 样本

# 提取样本元数据
sample_metadata <- colData(se)

# 提取特征注释
feature_info <- rowData(se)

# 查看基本统计
cat("基因数:", nrow(expr_matrix), "\n")
cat("样本数:", ncol(expr_matrix), "\n")
cat("平台:", metadata(se)$annotation, "\n")

# 下载补充文件(如 CEL、原始矩阵等)
supp_files <- getGEOSuppFiles("GSE183947")

§6.2 使用 GEOparse (Python) 下载 GSE 数据

import GEOparse
import pandas as pd

# 下载 GSE SOFT 文件
gse = GEOparse.get_GEO(geo="GSE183947", destdir="./geo_data")

# 查看研究元数据
print(gse.metadata.get("title", [""])[0])
print(gse.metadata.get("summary", [""])[0])

# 提取表达矩阵(基因 × 样本)
expressionevent-blocked= gse.pivot_samples("VALUE")  # VALUE 列为表达值
print(f"表达矩阵: {expression_matrix.shape}")

# 提取样本元数据
samples = []
for gsm_name, gsm in gse.gsms.items():
    metadata = gsm.metadata
    samples.append({
        "accession": gsm_name,
        "title": metadata.get("title", [""])[0],
        "source": metadata.get("source_name_ch1", [""])[0],
        "characteristics": metadata.get("characteristics_ch1", []),
        "platform": metadata.get("platform_id", [""])[0]
    })
sample_df = pd.DataFrame(samples)

# 提取平台注释(探针 → 基因符号)
gpl = gse.gpls[next(iter(gse.gpls))]
probe_annotationevent-blocked= gpl.table

§6.3 使用 E-utilities API 批量搜索 GEO

import requests
import time
import xml.etree.ElementTree as ET

BASE_URL = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils"

def search_geo(query, retmax=100):
    """搜索 GEO DataSets 数据库"""
    # Step 1: eSearch 获取 UID 列表
    search_url = f"{BASE_URL}/esearch.fcgi"
    params = {
        "db": "gds",
        "term": query,
        "retmax": retmax,
        "usehistory": "y"
    }
    resp = requests.get(search_url, params=params)
    root = ET.fromstring(resp.text)

    count = root.findtext("Count")
    query_key = root.findtext("QueryKey")
    web_env = root.findtext("WebEnv")
    print(f"找到 {count} 条结果")

    # Step 2: eSummary 获取摘要
    summary_url = f"{BASE_URL}/esummary.fcgi"
    params = {
        "db": "gds",
        "query_key": query_key,
        "WebEnv": web_env,
        "retmode": "json"
    }
    resp = requests.get(summary_url, params=params)
    results = resp.json()

    datasets = []
    for uid in results["result"]["uids"]:
        item = results["result"][uid]
        datasets.append({
            "uid": uid,
            "accession": item.get("accession", ""),
            "title": item.get("title", ""),
            "summary": item.get("summary", ""),
            "n_samples": item.get("n_samples", 0),
            "platform": item.get("gpl", ""),
            "organism": item.get("taxon", ""),
            "pubmed_id": item.get("PubMedIds", []),
            "release_date": item.get("PDAT", "")
        })

    return datasets

# 搜索乳腺癌 RNA-seq 数据集
results = search_geo(
    ''''''''''''''''("breast cancer"[Title] OR "breast carcinoma"[Title]) ''''''''''''''''
    ''''''''''''''''AND ("Homo sapiens"[Organism]) ''''''''''''''''
    ''''''''''''''''AND ("Expression profiling by high throughput sequencing"[DataSet Type])'''''''''''''''',
    retmax=50
)

for ds in results[:5]:
    print(f"{ds[''''''''''''''''accession'''''''''''''''']}: {ds[''''''''''''''''title''''''''''''''''][:60]}... ({ds[''''''''''''''''n_samples'''''''''''''''']} samples)")

    # 遵守 API 速率限制
    time.sleep(0.34)  # 3 requests/sec without API key

§6.4 获取 NCBI 统一 RNA-seq 计数矩阵

library(GEOquery)

# 获取 RNA-seq 计数矩阵
# 方法 1: 使用 getRNASeqData() (GEOquery >= 2.76)
counts <- getRNASeqData("GSE183947")

# 方法 2: 直接下载 TSV 文件
# 计数矩阵 URL 模式:
# https://ftp.ncbi.nlm.nih.gov/geo/series/GSEnnn/GSE183947/suppl/
count_url <- "https://ftp.ncbi.nlm.nih.gov/geo/series/GSE183947/suppl/GSE183947_raw_counts_GRCh38.p14.tsv.gz"
download.file(count_url, "GSE183947_counts.tsv.gz")
counts <- read.table("GSE183947_counts.tsv.gz", header=TRUE, row.names=1, sep="\t")

# 使用 DESeq2 进行差异表达分析
library(DESeq2)

# 创建 DESeqDataSet
dds <- DESeqDataSetFromMatrix(
    countData = counts,
    colData = sample_metadata,  # 样本元数据
    design = ~ condition         # 实验设计公式
)

# 标准化与差异表达
dds <- DESeq(dds)
res <- results(dds, alpha = 0.05)

# 提取显著差异基因
sig_genes <- subset(res, padj < 0.05 &amp; abs(log2FoldChange) > 1)
cat("显著差异基因数:", nrow(sig_genes), "\n")

§6.5 批次效应校正(多数据集整合)

library(sva)
library(limma)

# 假设已加载两个 GSE 的表达矩阵
# expr_gse1: 基因 × 样本 (GSE1)
# expr_gse2: 基因 × 样本 (GSE2)

# Step 1: 取两个数据集的共同基因
common_genes <- intersect(rownames(expr_gse1), rownames(expr_gse2))
expr_combined <- cbind(
    expr_gse1[common_genes, ],
    expr_gse2[common_genes, ]
)

# Step 2: 创建批次向量
batch <- c(
    rep("GSE1", ncol(expr_gse1)),
    rep("GSE2", ncol(expr_gse2))
)

# Step 3: 创建生物学条件向量(保护变量)
condition <- c(
    sample_condition_gse1,  # GSE1 的条件标签
    sample_condition_gse2   # GSE2 的条件标签
)
mod <- model.matrix(~ condition)

# Step 4: ComBat 批次校正
expr_corrected <- ComBat(
    dat = expr_combined,
    batch = batch,
    mod = mod,          # 保护生物学变量
    par.prior = TRUE,   # 参数先验,更稳健
    prior.plots = FALSE
)

# Step 5: 验证批次校正效果
library(ggplot2)
pca_data <- prcomp(t(expr_corrected), scale. = TRUE)
pca_df <- data.frame(
    PC1 = pca_data$x[, 1],
    PC2 = pca_data$x[, 2],
    batch = batch,
    conevent-blocked= condition
)
ggplot(pca_df, aes(PC1, PC2, color = batch, shape = condition)) +
    geom_point(size = 3) +
    theme_minimal()

§6.6 差异表达分析(微阵列数据)

library(limma)
library(GEOquery)

# 下载微阵列数据
gse <- getGEO("GSE54002", GSEMatrix = TRUE)
expr <- exprs(gse[[1]])
pdata <- pData(gse[[1]])

# 定义实验分组
# 假设 pdata 中有 disease_status 列
group <- factor(pdata$disease_status, levels = c("normal", "cancer"))
design <- model.matrix(~ group)

# limma 差异表达分析
fit <- lmFit(expr, design)
fit <- eBayes(fit)

results <- topTable(
    fit,
    coef = "groupcancer",
    number = Inf,                    # 输出所有基因
    adjust.method = "BH",            # Benjamini-Hochberg 校正
    sort.by = "p"
)

# 筛选显著差异基因
sig <- subset(results, adj.P.Val < 0.05 &amp; abs(logFC) > 1)
cat("显著差异基因数:", nrow(sig), "\n")

# 火山图
library(ggplot2)
results$significance <- ifelse(
    results$adj.P.Val < 0.05 &amp; abs(results$logFC) > 1,
    "Significant",
    "Not significant"
)
ggplot(results, aes(logFC, -log10(adj.P.Val), color = significance)) +
    geom_point(alpha = 0.5) +
    scale_color_manual(values = c("grey", "red")) +
    geom_vline(xintercept = c(-1, 1), linetype = "dashed") +
    geom_hline(yintercept = -log10(0.05), linetype = "dashed") +
    theme_minimal() +
    labs(title = "Volcano Plot", x = "log2 Fold Change", y = "-log10(adj P)")

§6.7 免疫浸润分析(CIBERSORT)

# CIBERSORT 需要从 https://cibersortx.stanford.edu/ 注册获取
# 或使用 R 包版本

# 方法: 使用 IOBR R 包(封装了多种免疫浸润算法)
# install.packages("remotes")
# remotes::install_github("IOBR/IOBR")
library(IOBR)

# 输入: TPM 或 FPKM 标准化的表达矩阵
# expr_matrix: 基因 × 样本

# CIBERSORT 免疫浸润估计
immune_result <- deconvo_tme(
    expr = expr_matrix,
    pipelines = "cibersort",
    perm = 1000  # 置换检验次数
)

# 查看每种免疫细胞类型的比例
head(immune_result$CIBERSORT)

# 可视化
library(ggplot2)
immune_long <- reshape2::melt(immune_result$CIBERSORT, id.vars = "ID")
ggplot(immune_long, aes(variable, value)) +
    geom_boxplot(fill = "steelblue", alpha = 0.7) +
    theme_minimal() +
    labs(title = "Tumor Immune Infiltration (CIBERSORT)",
         x = "Immune Cell Type", y = "Fraction") +
    theme(axis.text.x = element_text(angle = 45, hjust = 1))

§6.8 基因共表达网络分析(WGCNA)

library(WGCNA)
options(stringsAsFactors = FALSE)

# 允许 WGCNA 使用多线程
enableWGCNAThreads()

# 输入: 标准化表达矩阵(基因 × 样本),需转置为样本 × 基因
datExpr <- t(expr_matrix[order(apply(expr_matrix, 1, mad), decreasing = TRUE)[1:5000], ])

# Step 1: 检测离群样本
sampleTree <- hclust(dist(datExpr), method = "average")

# Step 2: 选择软阈值
powers <- c(1:20)
sft <- pickSoftThreshold(datExpr, powerVector = powers, verbose = 5)
soft_power <- sft$powerEstimate
cat("推荐软阈值:", soft_power, "\n")

# Step 3: 构建共表达网络
net <- blockwiseModules(
    datExpr,
    power = soft_power,
    TOMType = "unsigned",
    minModuleSize = 30,
    mergeCutHeight = 0.25,
    numericLabels = TRUE,
    saveTOMs = TRUE,
    verbose = 3
)

# Step 4: 模块-性状关联分析
moduleColors <- labels2colors(net$colors)
MEs <- orderMEs(moduleEigengenes(datExpr, moduleColors)$eigengenes)

# 计算模块与临床性状的相关性
moduleTraitCor <- cor(MEs, clinical_traits, use = "p")
moduleTraitPvalue <- corPvalueStudent(moduleTraitCor, nrow(datExpr))

# 可视化模块-性状热图
labeledHeatmap(
    Matrix = moduleTraitCor,
    xLabels = colnames(clinical_traits),
    yLabels = names(MEs),
    ySymbols = names(MEs),
    colorLabels = FALSE,
    colors = blueWhiteRed(50),
    textMatrix = paste(signif(moduleTraitCor, 2), "\n(",
                       signif(moduleTraitPvalue, 1), ")", sep = ""),
    setStdMargins = FALSE,
    cex.text = 0.5,
    zlim = c(-1, 1),
    main = "Module-Trait Relationships"
)

§6.9 Python 端到端分析管道

import GEOparse
import pandas as pd
import numpy as np
from scipy import stats
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score, StratifiedKFold
from sklearn.metrics import roc_auc_score, classification_report
import matplotlib.pyplot as plt
import seaborn as sns

# Step 1: 下载数据
gse = GEOparse.get_GEO("GSE4115", destdir="./geo_data")

# Step 2: 构建表达矩阵
expr = gse.pivot_samples("VALUE")
print(f"表达矩阵: {expr.shape}")

# Step 3: 提取样本标签(需根据具体数据集调整)
def extract_label(gsm):
    """从样本特征中提取疾病状态标签"""
    chars = gsm.metadata.get("characteristics_ch1", [])
    char_str = " ".join(chars).lower()
    if "tumor" in char_str or "cancer" in char_str:
        return 1  # 癌症
    elif "normal" in char_str or "adjacent" in char_str:
        return 0  # 正常
    return -1  # 未知

labels = []
for gsm_name in expr.columns:
    gsm = gse.gsms[gsm_name]
    labels.append(extract_label(gsm))
labels = np.array(labels)

# 过滤掉标签为 -1 的样本
valid_mask = labels != -1
expr = expr.loc[:, valid_mask]
labels = labels[valid_mask]

# Step 4: 数据预处理
# 过滤低表达基因
expr_filtered = expr.loc[expr.median(axis=1) > 5]
print(f"过滤后基因数: {expr_filtered.shape[0]}")

# Log2 转换(如果尚未转换)
if expr_filtered.max().max() > 50:
    expr_filtered = np.log2(expr_filtered + 1)

# 标准化
scaler = StandardScaler()
expr_scaled = pd.DataFrame(
    scaler.fit_transform(expr_filtered.T).T,
    index=expr_filtered.index,
    columns=expr_filtered.columns
)

# Step 5: PCA 可视化
pca = PCA(n_componevent-blocked=2)
pca_result = pca.fit_transform(expr_scaled.T)

plt.figure(figsize=(8, 6))
scatter = plt.scatter(pca_result[:, 0], pca_result[:, 1], c=labels, cmap="coolwarm", alpha=0.7)
plt.colorbar(scatter, label="Class (0=Normal, 1=Cancer)")
plt.xlabel(f"PC1 ({pca.explained_variance_ratio_[0]:.1%})")
plt.ylabel(f"PC2 ({pca.explained_variance_ratio_[1]:.1%})")
plt.title("PCA of GEO Expression Data")
plt.tight_layout()
plt.savefig("pca_plot.png", dpi=150)
plt.close()

# Step 6: 差异表达分析(t 检验 + BH 校正)
from statsmodels.stats.multitest import multipletests

cancer_expr = expr_scaled.loc[:, labels == 1]
normal_expr = expr_scaled.loc[:, labels == 0]

pvalues = []
fold_changes = []
for gene in expr_scaled.index:
    t_stat, p_val = stats.ttest_ind(
        cancer_expr.loc[gene], normal_expr.loc[gene]
    )
    pvalues.append(p_val)
    fold_changes.append(
        cancer_expr.loc[gene].mean() - normal_expr.loc[gene].mean()
    )

# BH 多重检验校正
_, adj_pvalues, _, _ = multipletests(pvalues, method="fdr_bh")

deg_results = pd.DataFrame({
    "gene": expr_scaled.index,
    "log2FC": fold_changes,
    "pvalue": pvalues,
    "padj": adj_pvalues
})

sig_degs = deg_results[
    (deg_results["padj"] < 0.05) &amp;
    (deg_results["log2FC"].abs() > 1)
]
print(f"显著差异基因数: {len(sig_degs)}")

# Step 7: 训练随机森林分类器
X = expr_scaled.loc[sig_degs["gene"]].T.values  # 样本 × 特征基因
y = labels

rf = RandomForestClassifier(n_estimators=500, random_state=42, n_jobs=-1)
cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
auc_scores = cross_val_score(rf, X, y, cv=cv, scoring="roc_auc")
print(f"5-Fold CV AUC: {auc_scores.mean():.4f} ± {auc_scores.std():.4f}")

# Step 8: 特征重要性
rf.fit(X, y)
importance_df = pd.DataFrame({
    "gene": sig_degs["gene"].values,
    "importance": rf.feature_importances_
}).sort_values("importance", ascending=False)

print("Top 10 重要基因:")
print(importance_df.head(10))

§6.10 计算资源需求

任务 CPU 内存 存储 GPU 预计时间
单个 GSE 下载(Series Matrix) 1 核 2 GB <1 GB 1-5 分钟
单个 GSE 下载(含补充文件) 1 核 4 GB 1-50 GB 5-30 分钟
差异表达分析(单 GSE) 1 核 4 GB <1 GB 1-10 分钟
ComBat 批次校正(2-5 个 GSE) 2 核 16 GB 1 GB 10-60 分钟
WGCNA(5,000 基因 × 500 样本) 4 核 8 GB 2 GB 30-120 分钟
CIBERSORT 免疫浸润 2 核 4 GB <1 GB 10-30 分钟
随机森林分类器训练 4 核 8 GB <1 GB 5-30 分钟
深度学习分类器(MLP/CNN) 4 核 16 GB 1 GB 1×GPU 30-120 分钟
跨 100+ GSE 元分析 8 核 64 GB 50 GB 2-8 小时
全库 FTP 批量下载 1 核 2 GB 200+ TB 数天-数周
Enformer 序列-表达预测训练 16 核 128 GB 1 TB 8×GPU 数天-数周

§6.11 已知坑点与解决方案

坑点 严重程度 描述 解决方案
样本特征非标准化 🔴 高 GSM 的 characteristics_ch1 字段为自由文本,格式因提交者而异 使用 NLP/正则表达式逐数据集解析;或使用预处理的 GEO 元数据资源(如 GEOmetadb)
批次效应 🔴 高 跨 GSE 整合时平台/实验室差异导致假阳性 使用 ComBat/ComBat-seq 校正;校正前检查生物学变量与技术变量的混淆
探针-基因映射 🟡 中 不同微阵列平台使用不同探针 ID,需映射到统一基因符号 使用平台 GPL 注释表;或使用 bioconductor 的 annotation 包(如 hgu133plus2.db)
表达值未归一化 🟡 中 部分提交的 Series Matrix 表达值未归一化或未 log2 转换 检查值范围:微阵列数据应在 0-16(log2);原始荧光强度可能 >1000
RNA-seq 定量方法不一 🟡 中 提交者可能使用不同的定量工具和参考基因组 优先使用 NCBI 统一 RNA-seq 计数矩阵("rnaseq counts"[Filter]
单细胞数据格式碎片化 🔴 高 GEO 中的单细胞数据格式多样(10x matrix.mtx / h5 / rds / CSV) 使用 GEOquery 的 getGEOSingleCell() 函数统一加载
私有数据延迟发布 🟢 低 提交者可选择在论文发表前保持数据私有 GSE 登录号在提交时即分配,可在论文中引用
重复样本 🟡 中 部分研究在同一 GSE 中包含技术重复 检查样本关系字段(Sample_relation)识别技术重复
物种注释错误 🟡 中 提交者偶尔选择错误的物种分类 交叉验证 NCBI Taxonomy ID
补充文件格式损坏 🟡 中 少量补充文件可能因长期存储而损坏 联系 GEO 管理员(geo@ncbi.nlm.nih.gov)报告问题
E-utilities 速率限制 🟢 低 无 API key 时限 3 次/秒 申请 NCBI API key 提升至 10 次/秒
大文件下载中断 🟡 中 补充文件可能达数 GB,下载中断后需重头开始 使用 wget/curl 的断点续传功能(-c 参数);或使用 FTP 客户端

§7 质量评估与局限性

§7.1 已知偏倚

编号 偏倚类型 描述 影响范围 缓解策略
1 模式生物偏倚 人类和小鼠数据占绝大多数,其他物种代表性不足 全库 注意物种外推的局限性
2 癌症研究过度代表 癌症相关研究占比远高于其他疾病类别 全库 在元分析中按疾病类型分层
3 平台偏倚 微阵列时代以 Affymetrix 平台为主 微阵列数据 使用探针序列重新映射到统一基因
4 地理偏倚 欧美机构提交占多数,亚洲和非洲数据不足 全库 注意研究结论的种族适用性
5 元数据质量不均 不同提交者的元数据详细程度差异极大 全库 优先选择策展 GDS 数据集
6 发表偏倚 只有"有意义"的结果才发表论文并提交数据 全库 注意阴性结果数据的缺失
7 样本量偏倚 大多数 GSE 样本量 <50,少数大型研究样本量 >1000 统计功效 整合多个 GSE 增加样本量
8 时间技术偏倚 早期数据为微阵列,近期为 RNA-seq,技术代差大 时间序列分析 避免跨技术代直接比较
9 单细胞数据碎片化 单细胞数据格式不统一,处理流程各异 单细胞数据 使用统一加载工具
10 批次效应 不同实验室/平台的技术差异导致系统性偏差 跨研究分析 ComBat 校正、域自适应
11 原始数据缺失 约 15% 数据缺少完整原始数据文件 可重复性 优先选择有完整原始数据的 GSE
12 样本标注主观性 疾病分期、组织学分级等标注因病理学家而异 分类任务 多数据集交叉验证

§7.2 质量控制指标

QC 指标 检查方法 合格标准 工具
表达值分布 箱线图检查所有样本 分布一致,无极端离群 limma, ggplot2
样本聚类 PCA / 层次聚类 同组样本聚在一起 stats, pheatmap
MA 图 M vs A 散点图(微阵列) 低丰度区域无系统偏移 limma::plotMA
文库复杂度 RNA-seq reads 比对率 >70% uniquely mapped samtools, RSeQC
批次效应检测 PCA 着色按批次 批次间无系统分离 sva::pcaComBat
探针质量 MAS5 Present/Absent 调用 >30% 探针 Present affy::mas5calls
DNA 污染 rRNA 比例检查 rRNA reads <10% sortmerna
3’‘’‘’‘’‘’‘’‘’‘’’ 偏倚 RNA-seq 基因体覆盖度 均匀覆盖,无明显 3’‘’‘’‘’‘’‘’‘’‘’’ 偏倚 RSeQC::geneBody_coverage

§7.3 外部验证

验证维度 方法 参考资源
跨数据集重现 在独立 GSE 中验证基因签名 选取不同平台/人群的 GSE
跨数据库验证 与 ArrayExpress / TCGA 数据比对 ArrayExpress, GDC Portal
功能富集一致性 GO/KEGG 富集分析结果比对 clusterProfiler, DAVID
文献交叉引用 与已发表文献结论比对 PubMed, Google Scholar
临床验证 基因签名在临床队列中验证 临床合作研究

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

编号 评估维度 问题 GEO 评估 评分
1 动机 数据集创建目的是什么? ✅ 公共数据归档与共享,支持可重复研究 满分
2 组成 数据集包含什么? ✅ 微阵列 + NGS 功能基因组学数据,四级标识体系 满分
3 采集 数据如何采集? ✅ 全球研究者自主提交,遵循 MIAME/MINSEQE 标准 满分
4 标注 标注如何生成? ⚠️ 提交者自供元数据,质量因人而异;GDS 层人工策展 部分满分
5 预处理 原始数据如何处理? ⚠️ 提交者各自处理;NCBI 统一 RNA-seq 管线覆盖 23K+ 研究 部分满分
6 清洗 数据是否经过清洗? ⚠️ 提交者自清洗;GEO 仅做格式验证和内容审核 部分满分
7 分布 数据如何分配? ✅ FTP / API / Web 多渠道分发,完全开放 满分
8 许可 数据使用许可是什么? ✅ 公共领域,无使用限制 满分
9 隐私 是否包含敏感信息? ✅ 去标识化数据;敏感数据通过 dbGaP 管理 满分
10 组成细节 样本/特征维度是什么? ✅ 每条 GSM 含完整维度信息 满分
11 标注者 谁创建了标注? ⚠️ 原始研究团队自供;GDS 由 GEO 策展人策展 部分满分
12 标注工具 使用了什么标注工具? ✅ NCBI 统一 RNA-seq 管线(HISAT2 + StringTie + featureCounts) 满分
13 一致性 标注一致性如何? ⚠️ 跨研究标注一致性低;GDS 层一致性高 部分满分
14 偏倚 已知偏倚有哪些? ✅ 本文 §7.1 详细列出 12 项已知偏倚 满分
15 质量 数据质量如何评估? ⚠️ 提交者各自 QC;GEO 不做独立质量验证 部分满分
16 噪声 数据噪声水平? ⚠️ 跨研究噪声差异大;批次效应显著 部分满分
17 完整性 数据是否完整? ⚠️ ~15% 数据缺少完整原始文件 部分满分
18 时效性 数据是否最新? ✅ 持续更新,新数据一周内发布 满分
19 可访问性 如何访问数据? ✅ 多渠道开放访问,无门槛 满分
20 格式 数据格式是什么? ✅ SOFT / Series Matrix / MINiML / 补充文件多种格式 满分
21 兼容性 与工具兼容吗? ✅ GEOquery ® + GEOparse (Python) 生态支持 满分
22 复现性 分析可复现吗? ⚠️ 跨研究复现性受批次效应影响;GEO2R 提供 R 脚本 部分满分
23 文档 文档是否充分? ✅ NCBI 官方文档详尽;GEO 策展人审核 满分
24 FAIR 是否符合 FAIR 原则? ✅ 可发现(DOI/登录号)、可访问(免费)、可互操作(标准格式)、可重用(公共领域) 满分

DAIMS 总评:19/24 满分 (79.2%),AI 就绪度评分:⭐⭐⭐ (3/5)

GEO 在数据开放性、可访问性、工具生态和 FAIR 合规方面表现卓越,但在元数据标准化、跨研究一致性和质量验证方面存在明显短板。这些短板源于其"公共仓库"本质——GEO 接纳任何符合最低标准的数据提交,不做独立科学验证。对于 AI 应用而言,GEO 是数据量最大、覆盖面最广的功能基因组学数据源,但需要研究者投入大量精力进行数据清洗、批次校正和标签解析。

§8 基准性能与生态

§8.1 典型 AI 基准任务

任务 代表方法 数据来源 关键指标 参考值
癌症 vs 正常分类 SVM / Random Forest GEO 微阵列 + RNA-seq AUC 0.85–0.98(因癌症类型而异)
乳腺癌分子分型 LASSO + SVM-RFE GEO 乳腺癌数据集 Accuracy 0.80–0.95
免疫浸润估计 CIBERSORT GEO + LM22 参考集 Pearson r 0.7–0.9(与流式细胞术比对)
基因签名预后 Cox + LASSO GEO + 临床随访 C-index 0.65–0.80
跨数据集泛化 域自适应 / 迁移学习 多 GSE 外部 AUC 0.70–0.90
序列→表达预测 Enformer / Basenji GEO + ENCODE Pearson r 0.65–0.85(增强子区域)
单细胞类型注释 scGPT / CellTypist GEO 单细胞数据 F1-score 0.85–0.95

§8.2 关键论文 Top 10

排名 论文 引用次数(截至 2025-01) 核心贡献
1 Edgar R, et al. “Gene Expression Omnibus.” NAR. 2002. 10,000+ GEO 创始论文
2 Barrett T, et al. “NCBI GEO: mining millions of expression profiles.” NAR. 2005. 5,000+ DataSet/Profile 层与数据挖掘工具
3 Davis S, Meltzer PS. “GEOquery.” Bioinformatics. 2007. 4,000+ R/Bioconductor 桥梁工具
4 Barrett T, et al. “NCBI GEO: archive for functional genomics.” NAR. 2010. 3,000+ NGS 集成与 MINSEQE 采纳
5 Barrett T, et al. “NCBI GEO: archive for functional genomics—update.” NAR. 2013. 2,000+ 单细胞数据支持扩展
6 Clough E, et al. “NCBI GEO: 23-year update.” NAR. 2024. 200+ 23 周年里程碑统计
7 Newman AM, et al. “Robust enumeration of cell subsets from tissue expression profiles (CIBERSORT).” Nature Methods. 2015. 8,000+ 免疫浸润估计金标准方法
8 Avila Cobos F, et al. “Computational deconvolution of transcriptomics data from mixed cell populations.” Bioinformatics. 2018. 500+ 反卷积方法基准评测
9 Wilkerson MD, Hayes DN. “ConsensusClusterPlus.” Bioinformatics. 2010. 4,000+ 无监督分子分型工具
10 Koch CM, et al. “A beginner’‘’‘’‘’‘’‘’‘’‘’'s guide to analysis of RNA-seq data.” Am J Bot. 2018. 1,000+ RNA-seq 分析教程

§8.3 GEO 在 AI 生态中的角色

生态层级 角色 代表案例
数据源层 转录组学数据的核心供给者 所有转录组 AI 研究均直接或间接使用 GEO 数据
标准化层 MIAME/MINSEQE 标准实施者 定义功能基因组学数据报告最低要求
工具链层 GEO2R / GEOquery / GEOparse 提供从数据获取到差异分析的完整工具链
验证层 独立队列外部验证 AI 模型在独立 GSE 上验证泛化能力
元分析层 跨研究整合的基础设施 整合数十个 GSE 进行泛癌分析
基准层 方法基准测试的标准数据源 差异表达方法(DESeq2 vs edgeR vs limma)基准评测
训练层 深度学习模型的训练数据 Enformer、scGPT 等基础模型训练数据来源

§8.4 生态关系图

                    ┌──────────────────────────────────────────────────┐
                    │              NCBI 数据生态                        │
                    │                                                   │
                    │   ┌─────────┐   ┌─────────┐   ┌──────────┐      │
                    │   │   GEO   │   │   SRA   │   │  dbGaP   │      │
                    │   │ (功能   │←──│ (原始   │   │ (受控    │      │
                    │   │  基因   │   │  测序   │   │  访问    │      │
                    │   │  组学)  │   │  读段)  │   │  数据)   │      │
                    │   └────┬────┘   └────┬────┘   └──────────┘      │
                    │        │             │                           │
                    │        ▼             ▼                           │
                    │   ┌─────────┐   ┌─────────┐                      │
                    │   │BioProject│  │BioSample│                      │
                    │   │ (项目   │   │ (生物   │                      │
                    │   │  描述)  │   │  样本)  │                      │
                    │   └─────────┘   └─────────┘                      │
                    └──────────────────────────────────────────────────┘
                              │
              ┌───────────────┼───────────────┐
              ▼               ▼               ▼
     ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
     │  R 生态      │ │ Python 生态  │ │  Web 工具    │
     │              │ │              │ │              │
     │ GEOquery     │ │ GEOparse     │ │ GEO2R        │
     │ limma        │ │ pandas       │ │ GEO Profiles │
     │ DESeq2       │ │ scikit-learn │ │ GEO DataSets │
     │ edgeR        │ │ PyTorch      │ │ ARCHS4       │
     │ sva (ComBat) │ │ TensorFlow   │ │ Recount3     │
     │ WGCNA        │ │ scanpy       │ │ CIBERSORTx   │
     │ CIBERSORT    │ │              │ │              │
     └──────────────┘ └──────────────┘ └──────────────┘
              │               │               │
              └───────────────┼───────────────┘
                              ▼
                    ┌──────────────────┐
                    │   AI 应用层      │
                    │                  │
                    │ • 癌症诊断模型   │
                    │ • 药物响应预测   │
                    │ • 免疫浸润分析   │
                    │ • 基因签名构建   │
                    │ • 序列-表达预测  │
                    │ • 单细胞注释     │
                    │ • 元分析验证     │
                    └──────────────────┘

§8.5 GEO 与相关资源对比

特性 GEO ArrayExpress TCGA GTEx SRA
运营机构 NCBI/NLM/NIH EBI/EMBL NCI/NGI NIH NCBI
数据类型 功能基因组学(全覆盖) 功能基因组学 癌症多组学 正常组织转录组 原始测序读段
样本量 6.5M+ ~2.5M ~22K ~17K 40M+
物种覆盖 6,000+ 多物种 人类 人类 多物种
数据格式 SOFT/Matrix/补充文件 MAGE-TAB 统一管线处理 统一管线处理 FASTQ/SRA
统一处理 NCBI RNA-seq 管线 ✅ 统一管线 ✅ 统一管线
临床表型 部分(提交者自供) 部分 ✅ 丰富临床 组织学验证
访问方式 FTP/API/Web FTP/API/Web GDC Portal GTEx Portal FTP/API
许可 公共领域 公共领域 受控/开放 受控/开放 公共领域
AI 就绪度 ⭐⭐⭐ (3/5) ⭐⭐⭐ (3/5) ⭐⭐⭐⭐ (4/5) ⭐⭐⭐⭐ (4/5) ⭐⭐ (2/5)

§9 相关资源与引用

§9.1 BibTeX 参考文献

@article{edgar2002geo,
  title={Gene Expression Omnibus: NCBI gene expression and hybridization repository},
  author={Edgar, Ron and Domrachev, Michael and Lash, Alex E},
  journal={Nucleic Acids Research},
  volume={30},
  number={1},
  pages={207210},
  year={2002},
  doi={10.1093/nar/30.1.207}
}

@article{barrett2005geo,
  title={NCBI GEO: mining millions of expression profilesdatabase and tools},
  author={Barrett, Tanya and Suzek, TugOzan O and Troup, Dennis B and Wilhite, Stephen E and Ngau, Wai-Chi and Ledoux, Pierre and Rudnev, Dmitry and Lash, Alex E and Fujibuchi, Wataru and Edgar, Ron},
  journal={Nucleic Acids Research},
  volume={33},
  suppl={D1},
  pages={D562D566},
  year={2005},
  doi={10.1093/nar/gki022}
}

@article{barrett2010geo,
  title={NCBI GEO: archive for high-throughput functional genomic data},
  author={Barrett, Tanya and Troup, Dennis B and Wilhite, Stephen E and Ledoux, Pierre and Evangelista, Carlos and Kim, Irene F and Tomashevsky, Maxim and Marshall, Kimberly A and Phillippy, Katherine H and Sherman, Patti M and others},
  journal={Nucleic Acids Research},
  volume={39},
  suppl={D1},
  pages={D1005D1010},
  year={2010},
  doi={10.1093/nar/gkq1185}
}

@article{barrett2013geo,
  title={NCBI GEO: archive for functional genomics data setsupdate},
  author={Barrett, Tanya and Wilhite, Stephen E and Ledoux, Pierre and Evangelista, Carlos and Kim, Irene F and Tomashevsky, Maxim and Marshall, Kimberly A and Phillippy, Katherine H and Sherman, Patti M and Holko, Muholly and others},
  journal={Nucleic Acids Research},
  volume={41},
  suppl={D1},
  pages={D991D995},
  year={2013},
  doi={10.1093/nar/gks1193}
}

@article{clough2024geo,
  title={NCBI GEO: archive for gene expression and epigenomics data sets: 23-year update},
  author={Clough, Emily and Barrett, Tanya and others},
  journal={Nucleic Acids Research},
  volume={52},
  number={D1},
  pages={D138D144},
  year={2024},
  doi={10.1093/nar/gkad965}
}

@article{davis2007geoquery,
  title={GEOquery: a bridge between the Gene Expression Omnibus (GEO) and BioConductor},
  author={Davis, Sean and Meltzer, Paul S},
  journal={Bioinformatics},
  volume={23},
  number={14},
  pages={18461847},
  year={2007},
  doi={10.1093/bioinformatics/btm254}
}

@article{edgar2006geo,
  title={NCBI GEO standards and services for microarray data},
  author={Edgar, Ron and Barrett, Tanya},
  journal={Nature Genetics},
  volume={37},
  suppl={1},
  pages={S19S20},
  year={2006},
  doi={10.1038/ng1933}
}

@article{newman2015cibersort,
  title={Robust enumeration of cell subsets from tissue expression profiles},
  author={Newman, Aaron M and Liu, Chih Long and Green, Michael R and Gentles, Andrew J and Feng, Weiguo and Xu, Yue and Hoang, Chau D and Diehn, Maxim and Alizadeh, Ash A},
  journal={Nature Methods},
  volume={12},
  number={5},
  pages={453457},
  year={2015},
  doi={10.1038/nmeth.3337}
}

@article{ Ritchie2015limma,
  title={limma powers differential expression analyses for RNA-sequencing and microarray studies},
  author={Ritchie, Matthew E and Phipson, Belinda and Wu, Di and Hu, Yifang and Law, Charity W and Shi, Wei and Smyth, Gordon K},
  journal={Nucleic Acids Research},
  volume={43},
  number={7},
  pages={e47},
  year={2015},
  doi={10.1093/nar/gkv007}
}

@article{love2014deseq2,
  title={Moderated estimation of fold change and dispersion for RNA-seq data with DESeq2},
  author={Love, Michael I and Huber, Wolfgang and Anders, Simon},
  journal={Genome Biology},
  volume={15},
  number={12},
  pages={550},
  year={2014},
  doi={10.1186/s13059-014-0550-8}
}

§9.2 资源 URL

资源 URL 说明
GEO 主页 https://www.ncbi.nlm.nih.gov/geo/ 官方入口
GEO DataSets 搜索 https://www.ncbi.nlm.nih.gov/gds/ 数据集搜索
GEO Profiles https://www.ncbi.nlm.nih.gov/geoprofiles/ 基因表达谱搜索
GEO2R https://www.ncbi.nlm.nih.gov/geo/geo2r/ 在线差异表达分析
GEO FTP https://ftp.ncbi.nlm.nih.gov/geo/ 批量下载
E-utilities https://eutils.ncbi.nlm.nih.gov/entrez/eutils/ API 接口
GEOquery ® https://bioconductor.org/packages/GEOquery/ R/Bioconductor 包
GEOparse (Python) https://pypi.org/project/GEOparse/ Python 包
GEO 提交指南 https://www.ncbi.nlm.nih.gov/geo/info/submission.html 数据提交帮助
MIAME/MINSEQE https://www.ncbi.nlm.nih.gov/geo/info/MIAME.html 最低信息标准
GEO 统计 https://www.ncbi.nlm.nih.gov/geo/summary/ 实时统计
GEOmetadb https://bioconductor.org/packages/GEOmetadb/ GEO 元数据库
ARCHS4 https://maayanlab.cloud/archs4/ 第三方 GEO 增值服务
Recount3 https://rna.recount.bio/ RNA-seq 统一重处理
CIBERSORTx https://cibersortx.stanford.edu/ 免疫浸润分析

§10 AI 使用声明卡

§10.1 数据使用声明

项目 内容
数据集 GEO (Gene Expression Omnibus)
数据来源 NCBI / NLM / NIH
许可 公共领域,无使用限制
DUO 标签 NRES
AI 训练许可 ✅ 允许用于 AI/ML 模型训练(学术与商业)
数据引用要求 引用 GEO 数据时须注明 GSE/GSM 登录号并引用相关论文
页面状态 published

§10.2 推荐引用格式

Gene Expression Omnibus (GEO), National Center for Biotechnology Information (NCBI), National Library of Medicine (NLM), National Institutes of Health (NIH). https://www.ncbi.nlm.nih.gov/geo/. Accessed YYYY-MM-DD.

§10.3 人工校验表

校验项 状态 说明
ICD-11 映射准确性 全疾病谱映射,覆盖 8+ 疾病类别
SNOMED CT 补充映射 6 个核心 SNOMED CT 代码
数据规模准确性 基于 2024 NAR 论文与 2025 实时统计
代码可运行性 R 和 Python 代码均基于最新包版本
工具链接有效性 所有 URL 截至 2026-08 可访问
DAIMS 评估完整性 24 项全表覆盖
偏倚分析全面性 12 项已知偏倚详细列出
参考文献准确性 10 篇 BibTeX 全部可追溯
版本信息时效性 含 2025 年最新统计
JSON-LD 合规性 单一 @graph,多命名空间,含 Croissant 扩展
返回 AI Ready 数据集