Lesson · 40 min · Free
From Tissue to Counts: scRNA-seq Experiment Design
From Tissue to Counts: scRNA-seq Experiment Design Single-cell RNA sequencing (scRNA-seq) allows researchers to measure gene expression in thousands of individual cells simultaneously, revealing cell types and states tha
From Tissue to Counts: scRNA-seq Experiment Design
Single-cell RNA sequencing (scRNA-seq) allows researchers to measure gene expression in thousands of individual cells simultaneously, revealing cell types and states that bulk RNA-seq averages away. Before any computational analysis begins, however, the quality of your results is determined by decisions made at the experimental design stage. Understanding how a tissue becomes a matrix of gene counts helps you plan experiments, troubleshoot problems, and critically evaluate published datasets. The workflow begins with tissue dissociation. A fresh tissue sample is enzymatically and mechanically disrupted into a single-cell suspension. This step is a common source of bias: fragile cells (such as neurons or immune cells under stress) may lyse, while dissociation itself can induce stress-response genes that confound downstream interpretation. Alternatives such as nuclei isolation (snRNA-seq) or cold-active protease protocols can mitigate these issues, particularly for frozen or delicate samples. Next, individual cells are captured and barcoded, most commonly using droplet-based platforms such as 10x Genomics Chromium. Each cell is encapsulated in a droplet together with a gel bead carrying barcoded oligonucleotides. mRNA from each cell is reverse-transcribed into cDNA tagged with a unique cell barcode and a unique molecular identifier (UMI). After library preparation and sequencing, the raw output is millions of short reads that must be processed into a count matrix : rows representing genes, columns representing cells, and entries representing the number of UMIs observed for each gene in each cell. Converting raw sequencing data (typically FASTQ files) into this count matrix is called alignment and quantification . Tools such as Cell Ranger (10x Genomics) or the open-source combination of STARsolo and UMIDedup perform read alignment to a reference genome, UMI deduplication, and cell calling. The result is stored in the Matrix Market exchange format, which efficiently encodes the sparse matrix — most entries are zero because each cell expresses only a fraction of the genome. Below is an example of how the output directory of a Cell Ranger run is organized. The matrix.mtx file contains the sparse count matrix, while barcodes.tsv and features.tsv list the cells and genes, respectively: outs/ ├── barcodes.tsv # Cell barcodes (one per line) ├── features.tsv.gz # Gene names and IDs ├── matrix.mtx # Sparse count matrix (Matrix Market format) ├── filtered_feature_bc_matrix/ # Matrix for called cells only └── metrics_summary.csv # QC metrics (reads per cell, mapping rate, etc.) Key design parameters directly shape the count matrix. Sequencing depth (total reads per cell) determines sensitivity for detecting lowly expressed genes; typical droplet experiments target 20,000–50,000 reads per cell. The number of cells recovered determines statistical power for identifying rare populations. Critically, these choices interact with your biological question: a study of rare immune subpopulations in tumor tissue demands more cells than a broad cell-type survey. Replication also matters — biological replicates (independent donors or samples) should be planned from the outset, since computational tools cannot rescue a design confounded by batch effects. The following Python snippet loads a count matrix into an AnnData object using the popular Scanpy framework, a standard first step in any single-cell analysis pipeline: import scanpy as sc # Read the Cell Ranger output directory adata = sc.read_10x_mtx( "sample1/outs/filtered_feature_bc_matrix", var_names="gene_symbols", cache=True ) # Inspect the dimensions: cells x genes print(adata.shape) # e.g., (7139, 33538) # Basic summary of counts per cell sc.pp.calculate_qc_metrics(adata, percent_top=None, log1p=False, inplace=True) print(adata.obs["total_counts"].describe()) Once loaded, the count matrix becomes the foundation for quality control, normalization, dimensionality reduction, and clustering — the topics of subsequent lessons. But always remember: garbage in, garbage out. A well-designed experiment with appropriate replicates, adequate depth, and careful sample handling is the single most important determinant of biologically meaningful results. scRNA-seq converts a dissociated tissue into a sparse gene-by-cell count matrix via cell capture, barcoding, and sequencing. Tissue dissociation introduces bias; fragile or stress-sensitive cells may be lost or artifactually activated. UMIs allow molecules to be counted rather than reads, reducing amplification bias. Sequencing depth and cell number are trade-offs that should be matched to the biological question, especially when detecting rare cell populations. Biological replicates must be planned experimentally; batch effects cannot be fixed computationally after the fact. Tools such as Cell Ranger or STARsolo produce the count matrix, typically stored in sparse Matrix Market format. Practice exercise: You are designing an scRNA-seq study to identify rare drug-resistant tumor subclones, estimated at roughly 0.5% of cells, in samples from six patients. Using what you have learned, write a short experimental design plan (200–300 words) that justifies your choice of sequencing depth, minimum number of cells per sample, number of biological replicates, and how you would handle the six patient samples to avoid confounding patient identity with processing batch. Then sketch, on paper, what the rows, columns, and entries of your expected count matrix would represent, and estimate roughly how many cells you would need in total to capture at least 30 cells from the rare subclone per patient.
Watch the full lesson — free
This topic is part of Computational Biomedicine: From Command Line to Single-Cell, a complete AI-narrated video course. Press play once and watch the entire lecture like a movie.
Start the course free →