GEO 数据库全景:从仓库到挖掘

各位好,咱们直接开干。GEO 数据库,全称是 Gene Expression Omnibus,说白了就是一个公共的基因表达数据仓库。你上传数据、下载数据、分析数据,都离不开它。我做生信这么多年,每次拿到一个新的芯片或测序项目,第一件事不是跑代码,而是先上 GEO 逛一圈——看看有没有现成的数据集能对比。节省的时间,少说一个礼拜。

1.1 发展历史:一个数据仓库的进化

2000 年,NCBI 推出了 GEO。那个时候,基因芯片刚火起来,大家急需一个地方存放微阵列数据。我那时候还在读书,记得第一次用 GEO 时界面简陋得很,搜索功能也弱。现在二十年过去,GEO 已经收录了超过 200 万个样本、5000 多个平台,还整合了高通量测序数据。进化的核心逻辑就一个:跟着技术走。

关键节点速览

  • 2000 年:GEO 上线,主营芯片数据
  • 2008 年:加入 NGS 测序数据支持
  • 2015 年:整合 RNA-seq 标准流程
  • 2020 年:总样本量突破 200 万

1.2 数据规模到底有多大?

咱们用数字说话。截至 2025 年初,GEO 里大概有:

维度数值说明
Series~200,000一个研究项目的数据集合
Platforms~20,000芯片类型或测序平台
Samples~5,000,000单个实验样本
DataSets~5,000手工整理的精选集
Profiles~2,000,000基因在不同条件下的表达模式

嗯,这里要注意:DataSets 和 Profiles 是 GEO 里比较特殊的概念,后面会细说。很多人只盯着 Series 和 Samples,忽略了 Profiles 的预分析价值。

1.3 五种核心数据类型及其关系

理解这五个东西怎么串起来,是 GEO 挖掘的第一步。我习惯用一张关系图来记:

GEO 核心数据结构关系 Platform (GPL) Sample (GSM) Series (GSE) DataSet (GDS) Profile (GDP) 定义检测方式 属于同一个项目 手工整理子集 每条线=一个基因 注意:DataSet 和 Profile 是 NCBI 预处理的子集,并非每个 Series 都有对应的 GDS。

简单解释一下这张图:一个 Platform(比如 Affymetrix Human Genome U133 Plus 2.0)定义了芯片上检测哪些探针;一个 Sample 用这个平台跑了一个单独的芯片或测序样品;多个相关 Sample 组成一个 Series,代表一个完整的实验项目。而 DataSet 是 NCBI 工作人员从 Series 里挑选并标准化的精简子集,方便跨实验对比;Profile 则是 DataSet 里每个基因在不同样本间的表达量变化线。

避坑指南:我曾经以为 GDS 就是 GSE 的简化版,后来发现不对。GDS 里的数据已经过标准化处理,而且缺失了原始 CEL 文件。如果你想跑自己的差异分析流程,必须去下载 GSE 下的原始数据,而不是直接用 GDS。记住:GDS 更适合快速浏览,GSE 才适合深入挖掘。

1.4 怎么用 ID 区分?

GEO 的 ID 命名规则很固定,看前缀就知道是什么类型:

ID 前缀含义示例
GPLxxxPlatformGPL570
GSMxxxSampleGSM100852
GSExxxSeriesGSE10000
GDSxxxDataSetGDS4105
GDPxxxProfileGDP123456

搜索的时候直接用这些 ID 就能定位。我个人习惯用 GSE 作为入口,因为一个 GSE 里通常包含实验组和对照组的全部样本,拿到直接练手。

1.5 数据结构:从下载到分析

你从 GEO 下载一个 Series 的数据,通常解压后是这样的:

GSE10000_RAW/
├── GSM100852.cel.gz
├── GSM100853.cel.gz
├── GSM100854.cel.gz
├── GSM100855.cel.gz
└── GSE10000_series_matrix.txt.gz

.cel 文件是芯片原始信号文件,series_matrix.txt 是标准化后的表达矩阵。我建议新手先下载矩阵文件快速上手,等熟悉了再挑战原始 CEL 文件的重标准化。

注意:不是所有 Series 都提供原始 CEL 文件。很多只上传了矩阵。如果你买的课程或教程里只教了读取 CEL 文件,遇到没有 CEL 的数据集就傻眼了。最好两种方法都会——矩阵读取和原始文件处理都要练。

1.6 实战小贴士:怎么搜索最有效率?

GEO 官网的搜索框在 https://www.ncbi.nlm.nih.gov/geo/。直接搜关键词,比如 "breast cancer",出来一堆结果。但这样太粗了,我一般用高级搜索:

  • 指定类型:加上 AND "GSE"[Data Type] 只搜 Series
  • 限制平台:比如 AND "GPL570"[Platform]
  • 限制物种:AND "Homo sapiens"[Organism]

举个例子,你如果想找 Affymetrix U133 Plus 2.0 平台下的人类乳腺癌数据,可以这样写搜索词:

breast cancer[Title] AND "Homo sapiens"[Organism] AND "GPL570"[Platform]

嗯,这样出来的结果就精准多了,不会混入小鼠或别的平台数据。

1.7 本章小结

我们理清了 GEO 的五种核心数据实体以及它们的关系。下一步,你就可以用这些知识去搜索感兴趣的数据集了。不过,千万别急——拿到数据后怎么读、怎么处理,才是重头戏。下一章我们会手把手教你用 Python 读取 GEO 矩阵文件,并做初步的质量控制。

好了,这章就到这里。记住:理解数据结构是挖掘的基础。下次你再看到 GSE12345,脑子里应该立刻浮现出 Platform、Sample、Series 那个关系图,而不是两眼一抹黑。