Chapter 0 — Bulk vs Single-Cell RNA-seq: An Overview

Author

Single Cell RNA-seq Workshop

Note

Where this chapter sits. Companion to Lecture 00. This is the chapter you read before starting the workshop. Prerequisites: Appendix A — Single-Cell Biology Refresher if your molecular biology is rusty.

Note🔑 Key concept — what scRNA-seq measures

Single-cell RNA-seq measures the abundance of mRNA transcripts in each individual cell, producing a gene × cell count matrix where each entry is an integer UMI count. Unlike bulk RNA-seq, which averages expression across thousands of cells in a sample, scRNA-seq resolves heterogeneity: every cell gets its own transcriptome profile. This resolution comes at the cost of sparsity (90–95% zeros), shallower per-cell coverage, and a radically more complex analytical workflow — but it makes phenomena like rare cell types, developmental trajectories, and cell-type-specific responses to treatment directly observable.

0.1 What this workshop teaches

By the end of this workshop, you will be able to take a 10x Cell Ranger output for your own dataset and run it end-to-end:

  1. Load the counts matrix
  2. QC the cells, removing empty droplets, doublets, and damaged cells
  3. Normalize, reduce dimensions, and cluster to find populations
  4. Annotate cell types using markers and reference atlases
  5. Integrate multiple samples without erasing biology
  6. Compare conditions with pseudobulk DESeq2 + functional enrichment + differential abundance
  7. Apply the same toolkit to spatial transcriptomics, scATAC-seq, and (with adaptation) WGCNA
  8. Deposit the result in CELLxGENE / GEO / SRA following FAIR principles

You’ll also know enough to defend every choice you made — to a reviewer, a collaborator, or yourself in three years. The field has matured to the point that there are well-articulated community best practices for the whole pipeline1,2, and a sobering literature on where the methods still fail3,4 — both are worth reading alongside this workshop.

0.2 Why single-cell?

Bulk RNA-seq pools mRNA from many cells in a tissue and gives you one expression profile per sample. It’s cheap, mature, and statistically well-understood. If your question is “does gene X change with treatment, averaged across the tissue?”, bulk is still the right tool.

Bulk cannot tell you:

  • How many cell types are in the tissue, and in what proportions
  • Whether an “up” gene reflects a within-cell-type change or a composition shift
  • Rare populations, transitional states, developmental trajectories
  • Cell–cell communication patterns

scRNA-seq measures one expression profile per cell. Heterogeneity becomes visible. Rare populations become detectable. Lineage trajectories become traceable. The cost is that the measurement is sparse, noisy, and operationally complex — which is why preprocessing (Chapter 1) is one of the longest chapters in this book.

The first single-cell transcriptome was published in 2009 from a single manually picked cell5; the field has since scaled exponentially, from one cell to millions, as droplet and combinatorial chemistries arrived6. That scaling is what turned single-cell from a boutique technique into the default way to survey a tissue.

A useful mental model is to think of bulk RNA-seq and scRNA-seq as different focal lengths on the same microscope. Bulk gives you the whole-tissue average — a blurred image that is precise about that average. scRNA-seq gives you a cellular resolution — a sharper image of each individual cell, but noisier per cell because of how few molecules are sampled from each one. Neither is superior in the abstract; the choice depends entirely on whether your question requires cellular resolution. A study of cell-type composition, rare populations, or cell-type-specific responses to treatment needs the cellular focal length; a study of pathway activity averaged across a tissue, or a study where the cell-type composition is known and constant, often doesn’t.

Note🔑 Key concept — the resolution trade-off

Single-cell resolution answers questions that are genuinely invisible to bulk approaches, but it creates two new problems that bulk doesn’t have. First, each cell is measured at far lower depth than a bulk sample, so genes expressed at low levels are frequently undetected in any given cell (“dropout”). Second, the biological units of replication are donors (or animals), not cells — and a 10x experiment can yield thousands of cells per donor, tempting analysts to treat cells as independent replicates and generating severely anti-conservative statistics. Understanding both problems before you start is what separates reliable scRNA-seq from results that fall apart at review.

0.3 What carries over from bulk RNA-seq

Most analyses you’ve done on bulk RNA-seq apply at a new resolution to scRNA-seq:

  • The basic measurement is count of reads / UMIs per gene
  • Statistical concerns — normalization, batch effects, multiple testing, replication — are the same
  • DE analyses (Chapter 6) reuse the bulk DESeq2 model7 after pseudobulk aggregation
  • WGCNA (Chapter 13) was a bulk method; it adapts to single-cell with care
  • Functional enrichment (Chapter 7) is unchanged — same tools, same gene sets

If you’ve done bulk RNA-seq, much of scRNA-seq is the same scaffolding at a new resolution.

0.4 What’s genuinely new

Four things scRNA-seq adds that bulk doesn’t have. Each was identified early as a defining analytical challenge of the modality4.

0.4.1 Sparsity

A typical droplet scRNA-seq counts matrix is 90–95% zeros. Most (gene, cell) pairs are zero — partly because the cell didn’t express the gene, partly because the chemistry sampled only a fraction of expressed transcripts (technical “dropout”). The measurement regime sets the sparsity: bulk is essentially dense (~5% zeros), plate-based full-length protocols like Smart-seq2 sit in between (~50–60%), and 3′ droplet data is the sparsest (~90–95%)8. Every tool has to handle this:

  • Storage: sparse matrix formats (dgCMatrix in R, scipy.sparse in Python). A dense 30,000 gene × 14,000 cell matrix in double is 3.4 GB; the sparse equivalent is 150 MB.
  • Normalization: log-normalize handles zeros via the +1 term; SCTransform handles them via NB regression9
  • Statistics: per-gene tests on sparse vectors require care; clustering can’t use squared-Euclidean distance directly

Bulk has none of this. Bulk is dense; the smallest non-zero counts are still comfortably above zero. Whether the zeros should be modeled as “zero-inflation” or simply as low-rate Poisson/NB sampling has been a live debate; current consensus leans toward the latter for UMI data (Appendix B).

0.4.2 Cells are not statistical replicates

In bulk RNA-seq, your samples (donors, mice, replicates) are independent observations. Statistical tests on them are honest as long as N is reasonable.

In scRNA-seq, you have cells (millions per study) and donors (tens). The cells from one donor share genetics, dissociation batch, library prep — they are not independent. Treating cells as replicates inflates effective N by ~1000× and produces anti-conservative p-values for any cross-donor question. This is now well documented: methods that test across conditions using cells as replicates produce large numbers of false discoveries, and aggregating to one profile per donor (pseudobulk) before testing largely fixes it10.

This is the cardinal sin of scRNA-seq and it shows up in many forms:

  • Per-cell DE between conditions (wrong; use pseudobulk — Chapter 6)
  • Cluster-level Fisher tests for differential abundance (wrong; use neighborhoods — Chapter 8)
  • “Deep” power calculations using cell counts (wrong; use donor counts)

Every chapter that involves cross-donor inference references this rule. See Appendix B § 8 for the empirical demonstration.

Note🔑 Key concept — pseudoreplication and why it matters

The statistical unit in any cross-donor question is the donor (or biological replicate), not the cell. When you have 5,000 cells from one donor, those cells are technical observations of the same biological entity — they are pseudoreplicates of each other. Naive per-cell tests compute a p-value as if you had 5,000 independent measurements of the gene-expression difference, when in truth you have one. The result is p-values near zero for essentially any gene, regardless of whether the difference is real. The solution — pseudobulk aggregation, summing or averaging per-gene counts within each donor/cluster before applying a bulk DESeq2 model — recovers the correct denominator for the test, restores calibrated p-values, and is now the field-wide recommendation10.

0.4.3 Cell type is a latent variable

In bulk RNA-seq, you know what your samples are — they’re labeled at the bench. In scRNA-seq, the cell types in your dataset are something you have to discover from the data. Clustering (Chapter 2), markers (Chapter 3), and reference annotation (Chapter 4) all exist to address this. Half the analytical effort in scRNA-seq is recovering this latent variable; the other half is using it.

The latent nature of cell identity also means that your annotation is always a hypothesis, not a ground truth. A cluster labeled “CD14+ Monocyte” in your dataset is the best guess that the combination of community detection, canonical markers, and (optionally) reference mapping can support. That hypothesis can be wrong in several ways: the cluster may contain two closely related types that your resolution didn’t separate; it may be a technical artifact (doublets, ambient contamination); or it may represent a novel state not covered by your reference. Best-practice annotation (Chapter 3 + 4) is explicitly designed to catch these failure modes, which is why the two-step manual-plus-automated reconciliation is more robust than either alone.

0.4.4 Integration is a first-class problem

In bulk RNA-seq, batch effects exist but are usually handled by including batch as a covariate in DESeq2’s design matrix. The fix is one line of code.

In scRNA-seq, batch effects are spatial — they corrupt PCA and UMAP and clustering before DESeq2 ever runs. Multi-sample analyses that don’t integrate produce per-sample islands; analyses that integrate too aggressively erase biology. Integration (Chapter 5) is its own substantial topic, with a large benchmarking literature devoted to it11. The distinction between “batch effect” and “biological difference between samples” is not always clear-cut: the IFN-β stimulation in the workshop ifnb dataset is both a real biological perturbation (which you want to preserve) and the source of the dominant PC1 axis (which you want to correct). Integration methods must walk this line, and diagnosing whether they have done so correctly is a substantial part of Chapter 5.

Note🔑 Key concept — the scRNA-seq workflow as a linear chain

The eight core modules of this workshop form a strict dependency chain: each step takes the output of the previous one as input, and mistakes early in the chain — wrong QC thresholds, wrong normalization, wrong number of PCs — propagate silently into every downstream result. You cannot fix a bad normalization by choosing a better clustering algorithm; you cannot recover a rare population that was filtered away by a too-aggressive QC gate. This is why the workflow is presented in the order it is, and why the chapters on preprocessing (1) and dimensionality reduction (2) are foundational to everything that follows. Read them before skipping ahead.

0.5 How the data are generated

0.5.1 The 10x Chromium chemistry, in one paragraph

The dominant single-cell platform in 2026 is 10x Genomics’ Chromium controller12. Cells in suspension are encapsulated one-per-droplet alongside a barcoded gel bead (a “GEM”). Each bead carries primers with the same cell barcode (16 bp, identifying the droplet) and unique UMIs (identifying the molecule; UMI length is chemistry-dependent — 10 bp in 3’ v2, 12 bp in 3’ v3). Inside the droplet, mRNA is reverse-transcribed using the bead’s primer; cDNA inherits both the cell barcode and the UMI. After PCR and Illumina sequencing, every read carries: a cell barcode (which cell), a UMI (which original molecule — collapse PCR duplicates), and a cDNA sequence (which gene). The result, after cellranger count runs, is a cell × gene UMI counts matrix — the input to Chapter 1. The droplet-barcoding idea was introduced by Drop-seq and inDrops13,14 and commercialized by 10x. See Appendix A §§ 4–5 for the full chemistry detail and Chapter 11 for what Cell Ranger does to the reads.

0.5.2 Major technology families

Category Examples Strengths Trade-offs
Plate-based, full-length Smart-seq2/3 Full transcript coverage, isoforms, high sensitivity Low throughput, expensive per cell
Droplet-based, 3′/5′ 10x Chromium, Drop-seq, inDrops High throughput (1k–100k+ cells) 3′ or 5′ only, shallower per cell
Combinatorial barcoding Parse Evercode, SPLiT-seq No specialized instrument, fixable samples Protocol complexity, more bench labor
Nuclei (snRNA-seq) 10x Nuclei Works on frozen / difficult tissue Fewer transcripts, no cytoplasmic RNA

A head-to-head benchmark of six protocols found they differ substantially in sensitivity, cost, and the cell populations they recover — the platform is not a neutral choice8. Combinatorial split-pool barcoding (SPLiT-seq, commercialized as Parse Evercode) labels cells by repeated rounds of split → barcode → pool rather than one-cell-one-droplet; it needs no microfluidic instrument, works on fixed cells and nuclei, and scales by adding barcode rounds, at the cost of more hands-on labor and (currently) no ATAC kit. Instrument-light droplet alternatives (e.g. Fluent PIP-seq) also exist.

0.5.3 Two capture chemistries: polyA vs. probe

Even within 10x, the capture chemistry constrains what you can study:

3′ / 5′ gene expression Flex (probe capture)
How RNA is captured polyA tail → reverse transcription hybridization probes against a fixed panel
Sample state fresh / cryopreserved cells or nuclei fixed cells/nuclei, incl. FFPE
Species any species with a transcriptome human & mouse only (probe panels)
Best for non-model systems, novel/unannotated genes banked clinical material, high multiplexing

A polyA-capture catch worth knowing: 3′ capture piles reads up at the 3′ end / 3′ UTR, so counting depends on accurate 3′ UTR annotation. If a gene’s 3′ UTR is missing or truncated in the reference, its reads land in “intergenic” space and the gene is under-counted or invisible — a major problem in non-model organisms whose UTRs are poorly annotated. Fixes include extending 3′ UTR annotations with long-read Iso-Seq data before quantifying. Probe/Flex chemistry sidesteps this (it targets defined gene models) but exists only for human and mouse, so for non-model species the polyA chemistry — and the annotation work — is effectively unavoidable.

0.5.4 Cells vs. nuclei, and multi-omic readouts

Cells capture mature cytoplasmic mRNA (richer counts; required for surface-protein readouts). Nuclei (snRNA-seq) work on frozen / hard-to-dissociate tissue and large or fragile cell types, and are required for snATAC — but yield fewer transcripts. On the Chromium, the same partitioning chemistry can add modalities to the same cells: ATAC (open chromatin, alone or jointly with RNA as Multiome — Chapter 15), cell-surface protein (CITE-seq), immune repertoire (5′ V(D)J), and CRISPR perturbations (Perturb-seq). Sample multiplexing (CellPlex/hashing, or natural-genotype demultiplexing — the design used by the workshop’s ifnb dataset15) pools several samples in one run to cut per-sample cost and share a doublet/batch structure.

0.5.5 Platform choice changes results, not just cost

Cost shapes design: a single core-facility library prep can run ~$120 for bulk RNA-seq vs ~$2,000+ for a 10x lane, which is why scRNA-seq experiments often have few biological replicates. Roughly: ~2 replicates can suffice for a descriptive atlas; differential-expression questions need more (Chapter 6); chasing rare transcripts needs more sequencing depth. Crucially, the platform is not neutral — matched-sample benchmarks report different QC distributions and even cell populations recovered by one platform but missed by another8. Report your platform and chemistry (3′ vs 5′ vs Flex, cells vs nuclei, multiplexing scheme) in methods: downstream defaults (ambient correction, doublet rate, mito thresholds, even whether a cluster appears) all depend on them.

Note⚙️ Key parameter — CreateSeuratObject(min.cells, min.features)

CreateSeuratObject(counts, min.cells = 3, min.features = 200). Defaults: min.cells = 3, min.features = 200. min.cells drops any gene detected in fewer than 3 cells across the entire dataset — reducing the count matrix to only those genes that have at least sparse information for downstream analysis. min.features drops any barcode with fewer than 200 detected genes, removing the emptiest droplets immediately. Raising min.cells further shrinks the gene universe and can remove tissue-specific or low-expression markers; lowering min.features lets in more empty droplets, which then require stricter QC filtering. For most 10x experiments the defaults are sensible starting points, but for shallow-sequencing protocols, fixed cells, or tissues with many small cell types, both values may need adjustment.

Note🔑 Key concept — why 10x chemistry produces 3′-biased, UMI-deduplicated counts

In a 10x Chromium run, reverse transcription begins from the 3′ end of each mRNA (in 3′ GEX chemistry) using a bead primer that deposits a cell barcode and a unique molecular identifier (UMI) on each captured molecule. The resulting count matrix entry for gene \(g\) in cell \(c\) is the number of distinct UMIs that mapped to gene \(g\)’s reads in cell \(c\) — not the number of reads. UMI deduplication is the step that converts PCR-amplified read counts into molecule counts, which is why the data is called a “UMI count matrix” rather than a “read count matrix.” The 3′ bias means reads pile up at the 3′ end of each transcript; genes whose 3′ UTR is poorly annotated in the reference are systematically under-counted. For well-annotated genomes (human, mouse) this rarely matters; for non-model organisms it is a serious concern that can render a gene effectively invisible even when it is highly expressed.

0.6 From reads to a count matrix

The raw output of the sequencer is BCL files, converted to FASTQ (R1 = cell barcode + UMI, R2 = transcript). A quantifier turns those into the cell × gene matrix. The main tools are Cell Ranger (10x’s official pipeline, built on the STAR aligner16), STARsolo17, alevin-fry / salmon18, and kb-python (kallisto | bustools)19. They reimplement the same core logic — barcode correction, UMI deduplication20, and count assignment — with different speed and flexibility trade-offs, and all converge on a counts matrix that Seurat or Scanpy can read. cellranger count itself is a fixed sequence (trim → STAR align → barcode correction → UMI correction → count assignment → unfiltered matrix → cell calling with OrdMag + EmptyDrops21 → filtered matrix); the details are in Chapter 11. The filtered matrix is where Chapter 1 (QC) picks up — but Cell Ranger’s cell-calling is not the last word, and you still QC afterward.

0.7 The data object you analyze

The counts matrix (genes × cells, sparse) is wrapped in an object — Seurat’s SeuratObject22,23 in R or Scanpy’s AnnData24 in Python — that also holds per-cell metadata, normalized layers, dimensional reductions (PCA/UMAP), neighbour graphs, and cluster/label columns. Every later step reads and writes slots of that one object. The Bioconductor ecosystem uses an equivalent SingleCellExperiment container25.

library(Seurat)
counts <- Read10X(data.dir = "filtered_feature_bc_matrix/")
seu    <- CreateSeuratObject(counts = counts, project = "workshop",
                             min.cells = 3, min.features = 200)

min.cells = 3 and min.features = 200 are defaults, not gospel — they drop genes seen in fewer than 3 cells and droplets with fewer than 200 detected genes, which is sensible for whole-tissue 10x data but sometimes too aggressive for very rare cell types or shallow protocols.

0.7b The analysis object and the five-assay mental model

A recurring source of confusion throughout the workshop is that a single Seurat object can simultaneously hold multiple representations of the same cells: the raw counts (@assays$RNA$counts), the normalized values (@assays$RNA$data), the scaled HVG matrix (@assays$RNA$scale.data), the integrated batch-corrected values (@assays$integrated$data), and any additional modalities (ATAC peaks, surface proteins from CITE-seq). Each downstream step assumes it operates on the right representation. PCA uses the scaled data; clustering uses PC coordinates; UMAP uses the same; marker tests use normalized RNA expression; pseudobulk DE uses raw counts aggregated per donor. Getting this wrong — for instance, running FindMarkers on the integrated assay — produces silently biased results. The DefaultAssay(seu) accessor controls which assay is used by most Seurat functions. At the top of every analysis step, it is worth printing DefaultAssay(seu) as a sanity check. The discipline of “integrated assay for geometry, RNA assay for expression” (Chapter 5 §5.9) generalizes to the entire workflow.

0.8 Numbers to keep in your head

Order-of-magnitude landmarks for a typical 10x scRNA-seq study:

Quantity Typical
Genes in human genome (protein-coding) ~20,000
Genes annotated in Cell Ranger reference ~36,000
Cells per 10x channel 1,000–10,000
UMIs per cell, 10x 3’ v3 5,000–30,000
Genes detected per cell 500–5,000
Sparsity (% zeros) 90–95%
Doublet rate, well-loaded 5–10%
Mitochondrial fraction in healthy cells 1–15%
Cost per 10x channel (Chromium) ~$2–4 K

A two-condition study with 4 donors per group typically uses 16 channels = ~$50 K of 10x consumables, before sequencing.

0.9 The workshop’s pedagogical structure

The core analysis modules (01–08) are paired 1:1 across lectures, tutorials, and book chapters:

Lecture Tutorial Book chapter Topic
01 01 01 Preprocessing
02 02 02 Dim Reduction & Clustering
03 03 03 Markers & Manual Annotation
04 04 04 Reference-based Annotation
05 05 05 Multi-Sample Integration
06 06 06 DESeq2: Bulk + Pseudobulk DE
07 07 07 Functional Analysis
08 08 08 Differential Abundance

After the core, the Talapas HPC track runs the same analysis on UO’s cluster — Module 09 (SLURM Basics) and Module 10 (the analysis pipeline as R scripts) — and the self-paced bonus modules extend it: 11 Cell Ranger (raw RNA → counts) and 12 cellranger-atac (raw scATAC → peaks) upstream of the core; 13 WGCNA, 14 Trajectory & Cell–Cell Communication, 15 scATAC analysis (Signac), 16 Spatial Transcriptomics, and 17 FAIR & Data Sharing downstream. Appendices A–G provide background reading (single-cell biology, statistics, computing fundamentals, regex & shell, Git, file formats, and a methods-section template).

0.9.1 Tooling: RStudio (or VS Code) on your laptop

The tutorials are Quarto .qmd notebooks. Module 00 and the core modules (01–08) are run locally — in RStudio or VS Code on your own laptop — against the small ifnb dataset; no cluster account is needed for the main workshop sequence. The step-by-step local setup lives in Tutorial 00.

Connecting VS Code to Talapas over Remote-SSH, working with the Lmod module system, and submitting SLURM batch jobs is the Friday track — covered entirely in Chapter 09 — VS Code & SLURM Basics on Talapas.

For each topic, the recommended order is: read the lecture (sets up the concepts) → read the chapter (the longer-form story) → do the tutorial (hands-on) → consult the appendices as you hit gaps.

0.10 What you need to bring

The minimum: a laptop with R ≥ 4.4, RStudio, ~10 GB free disk; comfort with dplyr (filter / select / mutate / summarise / pipe); some command-line experience (cd, ls, wget); and a GitHub account. Optional but useful: prior bulk RNA-seq exposure (most concepts will be familiar) and prior molecular biology (the refresher in Appendix A handles this if rusty). The Software Setup page is a one-button install that gets you from a fresh laptop to “ready to run Tutorial 01” in 30–60 minutes.

0.11 Where to start

  • Day 1 reading: Lecture 00 + this Chapter 0 + Appendix A if your bio is rusty
  • Day 2: Lecture 01 + Chapter 1 + Tutorial 01
  • Day 3 onward: one lecture/tutorial pair per session, in numerical order

0.12 Where this material is also discussed

0.13 Going further

The single best next read is a community best-practices reference: the original end-to-end tutorial1 and its modern, modality-spanning successor2 (companion to the sc-best-practices book). For the toolkits, see the Seurat22,23,26 and Scanpy24 papers and the Bioconductor workflow25. For historical and platform context, the first scRNA-seq paper5, the droplet methods1214, and the protocol benchmark8 are the key sources; the grand-challenges and limitations reviews3,4 are the reality checks. Large reference atlases such as the Human Cell Atlas27 and Tabula Sapiens28 show where the field is heading. The full curated list is on Key Papers, Reviews & Benchmarks.

References

1.
Luecken, M. D. & Theis, F. J. Current best practices in single-cell RNA-seq analysis: A tutorial. Molecular Systems Biology 15, e8746 (2019).
2.
Heumos, L. et al. Best practices for single-cell analysis across modalities. Nature Reviews Genetics 24, 550–572 (2023).
3.
Kharchenko, P. V. The triumphs and limitations of computational methods for scRNA-seq. Nature Methods 18, 723–732 (2021).
4.
Lähnemann, D. et al. Eleven grand challenges in single-cell data science. Genome Biology 21, 31 (2020).
5.
Tang, F. et al. mRNA-seq whole-transcriptome analysis of a single cell. Nature Methods 6, 377–382 (2009).
6.
Svensson, V., Vento-Tormo, R. & Teichmann, S. A. Exponential scaling of single-cell RNA-seq in the past decade. Nature Protocols 13, 599–604 (2018).
7.
Love, M. I., Huber, W. & Anders, S. Moderated estimation of fold change and dispersion for RNA-seq data with DESeq2. Genome Biology 15, 550 (2014).
8.
Ziegenhain, C. et al. Comparative analysis of single-cell RNA sequencing methods. Molecular Cell 65, 631–643 (2017).
9.
10.
Squair, J. W. et al. Confronting false discoveries in single-cell differential expression. Nature Communications 12, 5692 (2021).
11.
Luecken, M. D. et al. Benchmarking atlas-level data integration in single-cell genomics. Nature Methods 19, 41–50 (2022).
12.
Zheng, G. X. Y. et al. Massively parallel digital transcriptional profiling of single cells. Nature Communications 8, 14049 (2017).
13.
14.
15.
Kang, H. M. et al. Multiplexed droplet single-cell RNA-sequencing using natural genetic variation. Nature Biotechnology 36, 89–94 (2018).
16.
Dobin, A. et al. STAR: Ultrafast universal RNA-seq aligner. Bioinformatics 29, 15–21 (2013).
17.
Kaminow, B., Yunusov, D. & Dobin, A. STARsolo: Accurate, fast and versatile mapping/quantification of single-cell and single-nucleus RNA-seq data. bioRxiv https://doi.org/10.1101/2021.05.05.442755 (2021) doi:10.1101/2021.05.05.442755.
18.
Srivastava, A., Malik, L., Smith, T., Sudbery, I. & Patro, R. Alevin efficiently estimates accurate gene abundances from dscRNA-seq data. Genome Biology 20, 65 (2019).
19.
Melsted, P. et al. Modular, efficient and constant-memory single-cell RNA-seq preprocessing. Nature Biotechnology 39, 813–818 (2021).
20.
Smith, T., Heger, A. & Sudbery, I. UMI-tools: Modeling sequencing errors in unique molecular identifiers to improve quantification accuracy. Genome Research 27, 491–499 (2017).
21.
22.
Satija, R., Farrell, J. A., Gennert, D., Schier, A. F. & Regev, A. Spatial reconstruction of single-cell gene expression data. Nature Biotechnology 33, 495–502 (2015).
23.
Hao, Y. et al. Dictionary learning for integrative, multimodal and scalable single-cell analysis. Nature Biotechnology 42, 293–304 (2024).
24.
Wolf, F. A., Angerer, P. & Theis, F. J. SCANPY: Large-scale single-cell gene expression data analysis. Genome Biology 19, 15 (2018).
25.
Amezquita, R. A. et al. Orchestrating single-cell analysis with Bioconductor. Nature Methods 17, 137–145 (2020).
26.
Stuart, T. et al. Comprehensive integration of single-cell data. Cell 177, 1888–1902 (2019).
27.
Regev, A. et al. The human cell atlas. eLife 6, e27041 (2017).
28.
Tabula Sapiens Consortium. The tabula sapiens: A multiple-organ, single-cell transcriptomic atlas of humans. Science 376, eabl4896 (2022).
Back to top