GEO 数据库检索入门
跟完这篇,您能用一条检索式加三个筛选器,在 GEO 里快速锁定符合课题的公共表达数据集;会用网页和命令行两种方式检索,并在动手下载之前就判断出它到底能不能用。
GEO 是什么
GEO(Gene Expression Omnibus)是 NCBI 维护的公共功能基因组学数据仓库,全世界大量已发表研究的原始与处理后数据都存放在这里,免费、可检索、可下载。芯片表达、RNA-seq、ChIP-seq、甲基化等类型都能找到。
您常打交道的其实是三个入口:
- 主页与帮助:https://www.ncbi.nlm.nih.gov/geo/ ,介绍和文档在这里。
- 检索页(GEO DataSets):https://www.ncbi.nlm.nih.gov/gds ,真正用来搜数据集的就是它,下面讲的检索都在这个页面做。
- 按编号直查:如果您已经从论文里看到某个编号(比如 GSE 号),用 https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi 输入编号能直接打开它的页面。
GSE / GSM / GPL 三个概念
看懂 GEO,先分清三个前缀。它们是层层包含的关系:
| 编号 | 全称 | 是什么 | 一句话记住 |
|---|---|---|---|
| GSE | Series | 一整项研究 | 您通常要找、要下载的就是它 |
| GSM | Sample | 单个样本 | 一个 GSE 里含多个 GSM |
| GPL | Platform | 测序仪或芯片平台 | 说明数据是用哪种技术、哪块芯片产生的 |
三者的关系是:一个 GSE(研究)下面挂着多个 GSM(样本),这些 GSM 都基于某一个或几个 GPL(平台)。举例,一项对比「10 例肿瘤 vs 10 例癌旁」的研究是一个 GSE,里面就有 20 个 GSM;如果都用同一块 Illumina 测序仪测,那它们共享同一个 GPL。
还有一类 GDS(DataSet),是 GEO 早年人工整理过的数据集,覆盖并不全,新数据基本不再收录。实际检索以 GSE 为准即可,遇到 GDS 当作「被整理过的老数据」看待。
检索页怎么用
打开 GEO DataSets 检索页(https://www.ncbi.nlm.nih.gov/gds),页面分三块,用起来就照着这个顺序:
- 顶部搜索框:输入关键词或检索式,回车。
- 左侧筛选栏(facets):物种、研究类型、条目类型等过滤器都在这里,勾一下就即时收窄结果。
- 中间结果列表:每一条是一个数据集,显示标题、物种、样本数、平台、编号。点标题进入详情页。
如果一次搜出成千上万条,别急着翻页——先用检索式和左侧筛选把范围压下来,再逐条看,这是最省时间的做法。想拼更精细的条件,搜索框右上角还有 Advanced(高级检索),能按字段一项项搭出检索式。
检索式怎么写(关键词 + 物种 + 研究类型)
一条好检索式一般由三部分组成:主题关键词 + 物种 + 研究类型/平台。用字段标签(写在方括号里)把每个条件钉死,结果最干净。
一个可直接套用的例子——找人类肝癌的 RNA-seq 数据:
hepatocellular carcinoma AND "Homo sapiens"[Organism] AND "Expression profiling by high throughput sequencing"[DataSet Type]
拆开看每一段:
| 想限定的东西 | 字段标签 | 写法示例 |
|---|---|---|
| 主题(不加标签即在所有字段里搜) | 无 / [Title] | hepatocellular carcinoma |
| 物种 | [Organism] | "Homo sapiens"[Organism] |
| 研究类型 | [DataSet Type] | "Expression profiling by array"[DataSet Type] |
| 条目类型 | [Entry Type] | gse[Entry Type] |
| 样本数区间 | [Number of Samples] | 6:500[Number of Samples] |
| 发表时间 | [Publication Date] | 2018:2024[Publication Date] |
几个写检索式的习惯:
- 词组用英文双引号包起来,如
"Homo sapiens",否则会被拆成两个词分别搜。 AND/OR/NOT要大写,这是布尔逻辑词;同义词之间用OR,比如(NASH OR NAFLD OR "fatty liver")。- 关键词优先用英文:GEO 的标题、描述几乎都是英文,中文关键词基本搜不到。
- 平台的限定:如果您在意具体某块芯片或测序仪,把它的 GPL 编号当关键词加进去(例如加上
GPL570)就会筛到用该平台的记录;如果只在乎「是芯片还是测序」,交给下一节的筛选器更省事。
三个关键筛选器(物种 / Study type / Entry type)怎么设
检索式之外,左侧筛选栏里有三个过滤器几乎每次都要设,设好了噪声会少一大半。
1. Organism(物种)。 选定您研究的物种,最常见是 Homo sapiens(人)、Mus musculus(小鼠)。不设的话,人和鼠、甚至细胞系跨物种的结果会混在一起。
2. Study type(研究类型)。 这个筛选器决定了数据是怎么产生的,也直接决定您后面怎么分析。两类最常用:
| 选项 | 含义 | 后续分析走向 |
|---|---|---|
| Expression profiling by array | 表达芯片 | 通常拿到的是归一化后的强度值,走 limma 一类流程 |
| Expression profiling by high throughput sequencing | 高通量测序(RNA-seq) | 若能拿到原始 counts,可走 DESeq2 一类流程 |
注意一个小坑:左侧界面上写的是「Study type」,但在检索式里对应的字段标签叫 [DataSet Type],两个名字指的是同一件事,别被绕晕。
3. Entry type(条目类型)。 强烈建议勾 Series(即 GSE)。因为一个研究会拆成很多 GSM 样本,如果不限定,搜索结果会被成百上千条单样本记录淹没。锁定 Series,一条结果就是一项完整研究,看起来清爽得多。
走一遍:网页版找人类肝癌 RNA-seq 数据
把上面几步串起来实操一次,您就有肌肉记忆了:
-
搜索框里粘贴检索式,回车:
hepatocellular carcinoma AND "Homo sapiens"[Organism] AND "Expression profiling by high throughput sequencing"[DataSet Type] -
左侧 Entry type 勾选 Series,把结果收窄到研究层级。
-
扫一眼结果列表,重点看每条的样本数(Samples)和发表年份,挑几个样本量像样、年份较新的点进去。
-
进入某个 GSE 详情页,按「怎么判断能不能用」一节的清单逐项核对。
-
选定后,记下 GSE 编号,进入下载环节。
整个过程一般三五分钟,就能从「想找肝癌数据」缩到「锁定两三个候选 GSE」。
用命令行可复现地检索(EDirect)
网页点选适合探索,但换台电脑、过段时间就难以复现。NCBI 官方的 Entrez Direct(EDirect) 把同一套检索搬到命令行,一条命令就能把结果落成一份 GSE 清单,方便存档、复现和批量处理。检索式和网页搜索框里写的完全一样,所以上面学到的写法可以直接搬过来。
安装(macOS / Linux,一次即可):
sh -c "$(curl -fsSL https://ftp.ncbi.nlm.nih.gov/entrez/entrezdirect/install-edirect.sh)"
用 esearch 检索,-db gds 指定 GEO DataSets 这个库:
# 这一步只回一个命中数量,先确认范围合不合适
esearch -db gds -query 'hepatocellular carcinoma AND "Homo sapiens"[Organism] AND "Expression profiling by high throughput sequencing"[DataSet Type] AND gse[Entry Type]'
命中数合理后,把结果接给 efetch 取详情,再用 xtract 抽出您关心的字段,拉成一张表:
esearch -db gds \
-query 'hepatocellular carcinoma AND "Homo sapiens"[Organism] AND "Expression profiling by high throughput sequencing"[DataSet Type] AND gse[Entry Type]' \
| efetch -format docsum \
| xtract -pattern DocumentSummary -element Accession n_samples title \
> hcc_gse.tsv
hcc_gse.tsv 大致是「编号 + 样本数 + 标题」三列,导进表格软件就能按样本数排序、按关键词筛选,比在网页里一页页翻快得多。
两个小提示:
- 字段名以实际输出为准:docsum 里到底有哪些字段,先看一眼再决定
-element抽哪几个——esearch -db gds -query '...' | efetch -format docsum | head -40。 - 想直接拿下载地址:docsum 里的
FTPLink字段给的就是该 GSE 的 FTP 目录,补充文件都在那儿。
怎么判断一个数据集能不能用
搜到不等于能用。点进 GSE 详情页后,照下面四条逐项核对,任何一条不过关都要谨慎。
1. 样本量与重复数。 看 Samples 列表,数清每组各有几个生物学重复。做差异表达分析,每组至少 3 个生物学重复是常被采用的最低门槛(是常用惯例、按数据调,不是铁律;样本越多结论越稳,临床样本受限时也有更少的,但结果要更保守地看待)。只有 1、2 个重复的组,差异分析的统计力很弱。
2. 分组信息清不清楚。 一份能用的数据,得让您看得出「谁是实验组、谁是对照组」。重点看两处:
- Overall design(总体设计):作者用一段话描述了实验怎么分组、比什么。
- 每个样本的 Characteristics(样本特征):分组、处理、时间点等标签是否齐全、写得规整。
如果分组只能靠猜样本名,或关键的临床/处理信息缺失,整理起来会很费劲,甚至没法分组。
3. 平台对不对路。 在详情页的 Platforms 一栏确认技术类型:
- RNA-seq:更通用,注释也好处理,多数情况下的首选。
- 表达芯片:也能用,但要注意该平台(GPL)有没有配套的探针到基因注释;老旧或冷门芯片的注释可能难找。
4. 有没有拿得到的表达量数据。 这是最容易翻车的一条。往详情页最下方看 Supplementary files(补充文件),判断您能不能直接拿到可分析的矩阵:
| 页面上能看到什么 | 意味着 | 好不好用 |
|---|---|---|
补充文件里有原始 counts 矩阵(如 GSExxxxx_raw_counts.txt.gz) | RNA-seq 的原始计数已备好 | 好,可直接接差异分析 |
| 只有 Series Matrix File | 处理后的矩阵(芯片多为归一化强度;测序则看作者放了什么) | 视情况,需确认里面是不是您要的数值 |
| 只有指向 SRA 的原始测序数据(FASTQ/SRA) | 没有现成矩阵,得自己比对定量 | 能用但工作量大,要额外跑比对流程 |
一句话总结这条:RNA-seq 优先找有没有原始 counts;只有 SRA 原始数据时,要预留自己比对定量的时间和算力。
用 R 批量核对元数据(可选)
候选多的时候,一个个点详情页很慢。R 的 GEOquery(Bioconductor)能把某个 GSE 的样本表型和矩阵维度一次拉下来,几行就看清分组和样本数:
library(GEOquery)
# 把 GSExxxxx 换成您的编号;getGPL = FALSE 跳过下载平台注释,更快
gse <- getGEO("GSExxxxx", GSEMatrix = TRUE, getGPL = FALSE)
eset <- gse[[1]] # getGEO 返回列表:一个平台对应一个 ExpressionSet
pheno <- pData(eset) # 样本表型:分组、处理等信息都在这里
dim(exprs(eset)) # 矩阵维度:基因数 × 样本数
table(pheno$characteristics_ch1) # 看分组标签是否清楚、每组几个样本
想确认能不能直接拿到表达量文件,先只列出补充文件、别急着下载:
# fetch_files = FALSE 只列清单,不下载,先看看有没有原始 counts
getGEOSuppFiles("GSExxxxx", fetch_files = FALSE)
# 确认后再下载,可用 filter_regex 只取需要的文件
getGEOSuppFiles("GSExxxxx", filter_regex = "counts")
把这四条过一遍,您就能在下载前把「样本太少」「没分组」「拿不到矩阵」这些坑筛掉,避免下完才发现用不了。
在平台上跑一遍
检索和下载在 GEO 完成,但拿到数据之后的整理与分析,在百沐一下不用写代码:把从 GSE 下载到的表达矩阵(或原始 counts)传上来,用一句话说清您想比哪两组、对照是谁,平台会零代码替您核对样本、整理矩阵、接着做差异分析。
从上传到出结果的完整流程见 /docs/omics-agent,或直接开始:https://app.baimuyixia.com
相关
- /tutorials/matrix-prep — 把下下来的数据整理成规范的表达矩阵与分组表
- /tutorials/deseq2 — 拿到原始 counts 之后,怎么做 RNA-seq 差异表达分析
- /tutorials/scrna-workflow — 如果搜到的是单细胞数据,走这条分析主线
- /docs/formats — 平台支持哪些数据格式、矩阵和分组表怎么摆