公共数据库获取数据:GEO / TCGA / SRA 的检索与下载方法
做RNA-seq分析,第一步就是拿到数据。你可能会问:数据从哪来?
其实最常用的就三个公共仓库:GEO(基因表达综合库)、TCGA(癌症基因组图谱)和SRA(序列读取档案)。它们背后的管理机构不同,检索和下载方式也各有特色。我刚开始接触时也被搞晕过,所以今天就把这三个数据库的用法捋清楚。
核心原则:先检索元数据(研究描述、样本信息),再根据研究编号下载原始测序文件。千万别直接拿项目ID去瞎下,容易下错文件。
1. GEO —— 基因表达综合库
GEO由NCBI维护,主要存储基因表达数据(如芯片、RNA-seq的count表或原始数据)。如果你要找某个疾病相关的公开表达谱,GEO通常是首选。
检索入口
我个人习惯直接用GEO DataSets或GEO Profiles搜索。但更批量化的方式是用R包GEOquery。
举个栗子:搜索“lung adenocarcinoma RNA-seq”并下载表达矩阵。
# 安装Geoquery
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("GEOquery")
# 获取数据集
library(GEOquery)
gse <- getGEO("GSE116959", GSEMatrix = TRUE)
# 查看表达矩阵
exprs_data <- exprs(gse[[1]])
head(exprs_data)
我曾经在项目里直接用这个方法拉了一个GSE系列的全部样本,几分钟搞定。但要注意,getGEO()默认下载的是处理后的表达矩阵,不是原始fastq。如果你需要原始fastq,得去GEO页面看“Supplementary file”列表,或者通过SRA accession跳转。
避坑指南:GEO的SuppFile有时是压缩的CEL或TXT,不一定包含原始测序数据。如果是RNA-seq,通常会在描述里注明对应的SRA号(比如SRPxxx或SRRxxx)。
2. TCGA —— 癌症基因组图谱
TCGA包含33种癌症类型的多组学数据(RNA-seq、WES、甲基化等)。数据可以通过GDC Data Portal网页或命令行工具gdc-client下载。
检索方式
我建议先通过GDC Data Portal(https://portal.gdc.cancer.gov/)按癌症类型、数据类型(RNA-Seq)、实验策略(Stranded或Unstranded)过滤,然后获取manifest文件。
# 用gdc-client下载
gdc-client download -m gdc_manifest.txt -d ./TCGA_data
这个manifest文件里包含所有文件的UUID和md5。gdc-client会自动校验完整性,非常省心。
另外,如果你更喜欢R,可以用TCGAbiolinks包。它封装了查询、下载、预处理的一整套流程。
library(TCGAbiolinks)
query <- GDCquery(project = "TCGA-LUAD",
data.category = "Transcriptome Profiling",
data.type = "Gene Expression Quantification",
workflow.type = "STAR - Counts")
GDCdownload(query)
data <- GDCprepare(query)
嗯,这里要注意:GDCdownload会自动调用gdc-client,所以你得确保机器上装了gdc-client,并且加入了PATH。
3. SRA —— 序列读取档案
SRA是NCBI下的另一个姊妹库,专门存原始测序数据(fastq格式)。许多GEO和TCGA的原始数据最终都在SRA里有备份。
检索与下载
我常用的工具是SRA Toolkit。先用prefetch下载.sra文件,再用fasterq-dump或fastq-dump转成fastq。
# 下载SRA文件
prefetch SRR12345678
# 转成fastq (双端)
fasterq-dump --split-files SRR12345678
如果你在集群上跑,强烈推荐用fasterq-dump而不是fastq-dump,因为它支持多线程,速度能快几倍。我之前在项目中处理200个SRA时,用fasterq-dump把总时间从3小时压缩到了40分钟。
当然,你也可以在浏览器里直接去SRA Run Selector页面可视化选择样本,然后生成下载脚本。但不建议手动一个个点,太累了。
小技巧:如果你只要metadata(比如样本ID、疾病状态、测序平台),可以直接用csvtk或pandas解析NCBI的SRA RunInfo表,远比翻网页快。
4. 三个数据库的对比与选择
为了帮你快速决策,我整理了一张表格,你看看:
| 数据库 | 主要数据内容 | 典型检索工具 | 下载命令 | 适合场景 |
|---|---|---|---|---|
| GEO | 表达矩阵、芯片、已处理数据 | GEOquery(R) | getGEO() | 快速获取表达量做差异分析 |
| TCGA | 多组学原始counts、临床信息 | GDC Data Portal / TCGAbiolinks | gdc-client download | 癌症多组学联合分析 |
| SRA | 原始fastq文件 | SRA Run Selector / SRA Toolkit | prefetch + fasterq-dump | 从头组装、变异检测、自建pipeline |
在实际工作中,我经常会遇到这样一个场景:想用某个GEO数据集做验证,但发现它只提供了原始SRA链接,没有现成的count矩阵。这时就没必要死磕GEO了,直接从SRA拉原始fastq,然后跑一遍我自己的align和count流程,反而更可控。
5. 公共数据库检索与下载流程总览
下面这张SVG图总结了三个数据库的检索和下载核心逻辑,方便你对照操作。
你看,整个路径并不复杂:先确定数据库,用对应的检索工具拿到元数据和文件清单,再用专用客户端或R包下载。说白了,就是“检索 → 清单 → 下载”三步走。
核心经验:我建议你在本地建立一个 metadata/ 目录,把所有研究的SRA表、GEO系列描述、TCGA的manifest都存一份。下次需要相同数据时就不用重新检索了,直接拿manifest重新下载就行。