A major barrier to reusing public RNA-seq data has been that every submitter processes raw reads differently — different aligners, references, and counting rules — so counts from two studies are rarely directly comparable. To address this, NCBI computes a uniform set of RNA-seq quantifications for many GEO Series using a single consistent pipeline. This article explains what those are and how GEOquery retrieves them.
NCBI-computed quantifications vs. submitter files
There are two distinct things you might mean by “the counts” for a GEO RNA-seq study:
-
Submitter-provided processed files — whatever the authors uploaded as supplementary files. Formats and gene models vary by study; GEOquery lists and downloads them (
getGEOSuppFiles()) but does not interpret them. - NCBI-computed quantifications — a raw-count matrix (and accompanying annotation) that NCBI generated uniformly from the study’s SRA runs. These are comparable across studies and are what the GEOquery RNA-seq functions target.
Not every Series has NCBI quantifications; you can check first.
Checking availability and loading
# Does this Series have NCBI-computed quantifications?
hasRNASeqQuantifications("GSE164073")
#> [1] TRUE
# Load them as a SummarizedExperiment
se <- getRNASeqData("GSE164073")
se
#> class: SummarizedExperiment
#> dim: 39376 18
#> metadata(5): experimentData annotation protocolData genomeInfo
#> created_at
#> assays(1): counts
#> rownames(39376): 100287102 653635 ... 4576 4571
#> rowData names(18): GeneID Symbol ... GOProcess GOComponent
#> colnames(18): GSM4996084 GSM4996085 ... GSM4996100 GSM4996101
#> colData names(45): title geo_accession ... time.point.ch1 tissue.ch1The result is a SummarizedExperiment: assay(se) is the raw count matrix, rowData(se) carries gene annotation, and colData(se) the sample metadata. Because it is a SummarizedExperiment, it drops straight into the differential expression workflows described in the downstream analysis article.
assay(se)[1:5, 1:3]
#> GSM4996084 GSM4996085 GSM4996086
#> 100287102 2 5 3
#> 653635 244 236 337
#> 102466751 25 17 34
#> 107985730 1 1 1
#> 100302278 0 0 0Why raw counts (and what to do with them)
The NCBI quantifications are deliberately raw counts, not normalized values, because the correct normalization depends on your downstream method. Count-based differential expression tools expect raw counts and model the counting noise themselves:
See downstream analysis for a worked sketch.
When you need the submitter’s files instead
If a study has no NCBI quantifications, or you specifically need the authors’ processed output (e.g. TPM, or a custom gene model), fall back to the supplementary files and read them yourself:
getGEOSuppFiles("GSE164073", fetch_files = FALSE) # inspect first
#> fname
#> 1 GSE164073_Eye_count_matrix.csv.gz
#> url
#> 1 https://ftp.ncbi.nlm.nih.gov/geo/series/GSE164nnn/GSE164073/suppl/GSE164073_Eye_count_matrix.csv.gzWhere to go next
- Finding and downloading data — search for RNA-seq studies and cache large downloads.
-
From GEO to downstream analysis — DESeq2 / edgeR / limma-voom from a count
SummarizedExperiment.