Transcriptomics: Profiling the Expressed Genome, Alternative Splicing & Single-Cell Dynamics
Transcriptomics captures the dynamic state of all ribonucleic acid (RNA) molecules active in a cell or tissue. While the genome provides the static hardware blueprint, the transcriptome reflects the real-time software execution of cellular programs, physiological responses, drug treatments, and oncogenic transformations.
📊 Module 1: Biological Foundations of the Transcriptome
Molecular DogmaRNA polymerase II transcribes genomic DNA into primary precursor messenger RNA (pre-mRNA). Through co-transcriptional 5′ capping (7-methylguanosine), 3′ polyadenylation (~200–250 Adenines), and spliceosomal excision of non-coding introns, mature mRNAs are generated.
Alternative Splicing Modes
Over 95% of multi-exon human genes undergo alternative splicing, allowing ~20,000 genes to produce >100,000 distinct transcript isoforms. Canonical modes include:
• Cassette Exon Skipping: Quantified via Percent Spliced-In (Ψ / PSI).
• Alternative 5′ and 3′ Splice Sites.
• Mutually Exclusive Exons & Intron Retention.
Non-Coding RNA Diversity
The transcriptome encompasses functional non-coding RNAs:
• lncRNAs (>200 nt): Chromatin remodeling scaffolds (e.g. XIST, HOTAIR).
• microRNAs (21–23 nt): Post-transcriptional mRNA silencing via the RISC complex.
• circRNAs: Covalently closed non-coding sponges for microRNAs.
Dynamic Range & Turn-over
Unlike the static 2-copy genomic DNA baseline, transcript abundance spans 6 orders of magnitude within a single cell—from single-copy transcription factor mRNAs to >100,000 copies of actin or ribosomal protein transcripts per cell.
🔬 Module 2: Experimental & Single-Cell Chemistries
Assay Architectures| Modality | Enrichment / Chemistry | Resolution | Standard Platforms | Key Applications |
|---|---|---|---|---|
| Bulk Stranded RNA-Seq | Poly(A)+ oligo-dT capture or Ribosomal RNA depletion (Ribo-Zero) + dUTP second strand degradation. | Averaged tissue population (~106 cells) | Illumina NovaSeq X, Element AVITI | Differential gene expression, alternative splicing isoforms, gene fusion detection. |
| Single-Cell RNA-Seq (scRNA-Seq) | Droplet microfluidics: Gel Bead-in-Emulsion (GEM) containing unique cell barcode + Unique Molecular Identifier (UMI). | Individual single cells (~1,000–20,000 cells) | 10x Genomics Chromium, Parse Evercode | Cellular heterogeneity, rare cell types (stem cells, exhausted T-cells), developmental trajectories. |
| Spatial Array Transcriptomics | Positional barcoded capture spots on glass slides with tissue permeabilization. | 55 μm spots (Visium) to subcellular (Visium HD 2 μm) | 10x Genomics Visium, BGI Stereo-seq | Tumor microenvironment architecture, spatial immune infiltration, brain cortex layers. |
| In Situ Optical Imaging | Targeted combinatorial fluorescent in situ hybridization (FISH) or rolling circle amplification. | True subcellular resolution (single RNA molecules) | 10x Xenium, Vizgen MERSCOPE, CosMx | High-plex spatial biomarker validation, cell-cell ligand-receptor physical contact. |
🖼️ Module 3: Visual Flowchart & Transcriptomic Representations
Scientific Diagram💻 Module 4: Computational Pipelines & Production Code
Bulk & Single-Cell# Production R Script: Salmon Pseudoalignment Import & DESeq2 GLM Analysis
library(tximport)
library(DESeq2)
library(apeglm)
library(dplyr)
# 1. Locate Salmon quant.sf output files
samples <- read.csv("sample_metadata.csv", stringsAsFactors = FALSE)
files <- file.path("salmon_quants", samples$sample_id, "quant.sf")
names(files) <- samples$sample_id
stopifnot(all(file.exists(files)))
# 2. Import transcript-level estimates and summarize to gene level
tx2gene <- read.csv("gencode_v44_tx2gene.csv")
txi <- tximport(files, type = "salmon", tx2gene = tx2gene)
# 3. Construct DESeqDataSet with design formula controlling for batch
dds <- DESeqDataSetFromTximport(txi, colData = samples, design = ~ batch + condition)
# 4. Prefilter low-count genes (retain genes with at least 10 counts in >= 3 samples)
keep <- rowSums(counts(dds) >= 10) >= 3
dds <- dds[keep, ]
# 5. Run standard negative binomial generalized linear model
dds <- DESeq(dds)
# 6. Extract results & apply empirical Bayes log2 fold change shrinkage (apeglm)
res <- results(dds, contrast = c("condition", "Treated", "Control"), alpha = 0.05)
res_shrunk <- lfcShrink(dds, coef = "condition_Treated_vs_Control", type = "apeglm")
# 7. Filter significant differentially expressed genes (DEGs)
deg_table <- as.data.frame(res_shrunk) %>%
filter(padj < 0.05 & abs(log2FoldChange) > 1.0) %>%
arrange(padj)
write.csv(deg_table, "significant_degs_padj005_lfc1.csv")# Production R Script: Seurat v5 QC, SCTransform, Clustering & Marker Discovery
library(Seurat)
library(ggplot2)
# 1. Ingest 10x Genomics filtered feature matrix
counts <- Read10X_h5("pbmc_filtered_feature_bc_matrix.h5")
pbmc <- CreateSeuratObject(counts = counts, project = "PBMC_Immune", min.cells = 3, min.features = 200)
# 2. Quality Control: Mitochondrial percentage and doublets
pbmc[["percent.mt"]] <- PercentageFeatureSet(pbmc, pattern = "^MT-")
pbmc <- subset(pbmc, subset = nFeature_RNA > 500 & nFeature_RNA < 5000 & percent.mt < 15)
# 3. SCTransform Normalization (replaces LogNormalize, FindVariableFeatures, and ScaleData)
pbmc <- SCTransform(pbmc, vars.to.regress = "percent.mt", verbose = FALSE)
# 4. Dimensionality Reduction (PCA & UMAP)
pbmc <- RunPCA(pbmc, npcs = 30, verbose = FALSE)
pbmc <- RunUMAP(pbmc, dims = 1:30, verbose = FALSE)
# 5. Shared Nearest Neighbor (SNN) Graph & Leiden Clustering
pbmc <- FindNeighbors(pbmc, dims = 1:30, verbose = FALSE)
pbmc <- FindClusters(pbmc, resolution = 0.6, algorithm = 4, verbose = FALSE)
# 6. Biomarker Discovery per Cluster
markers <- FindAllMarkers(pbmc, only.pos = TRUE, min.pct = 0.25, logfc.threshold = 0.25)
write.csv(markers, "single_cell_cluster_markers.csv", row.names = FALSE)🏥 Module 5: Real-World Case Study
Oncogenic Drug ResistanceCase: Transcriptomic Rewiring Driving Targeted BRAF-Inhibitor Resistance in Melanoma
Biological Background: Metastatic melanoma patients harboring BRAFV600E mutations initially exhibit dramatic tumor regression on vemurafenib (BRAFi). Within 9–12 months, refractory relapse occurs. Longitudinal bulk RNA-seq and scRNA-seq were performed on paired pre-treatment vs post-relapse biopsies.
Downregulated Lineage Marker: MITF (Microphthalmia-Associated TF, log2FC = -3.41, padj = 2.1e-19)
GSEA Pathway Enrichment: HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION (NES = 2.68, FDR < 0.001)
Single-Cell Findings: Emergence of a transcriptionally dedifferentiated AXLhigh/MITFlow neural crest cell state.
Translational Impact: Rather than acquiring secondary genomic point mutations, the tumor underwent an epigenetic/transcriptomic state transition. Combination therapy targeting AXL alongside MAPK inhibition restored apoptotic sensitivity in clinical trial NCT02872259.
📦 Module 6: Essential Software Directory & Official Links
Verified Tool StackSTAR Aligner
Splice AlignmentSpliced Transcripts Alignment to a Reference with ultra-fast sequential maximum mappable prefix search.
Official STAR GitHub →Salmon
QuantificationHighly accurate quasi-mapping and dual-phase optimization for transcript quantification and GC bias correction.
Salmon Documentation →DESeq2
StatisticsBioconductor package for differential gene expression using negative binomial generalized linear models.
Bioconductor DESeq2 →Seurat v5
Single-CellComprehensive R toolkit for quality control, SCTransform normalization, integration, and spatial exploration.
Satija Lab Seurat →Scanpy
Python Single-CellScalable Python package for single-cell gene expression analysis built on AnnData and NumPy.
Scanpy Documentation →rMATS
Alternative SplicingComputational tool for detecting differential alternative splicing events from RNA-seq data with replicates.
rMATS Official Portal →⚠️ Module 7: Bioinformatic Pitfalls & Quality Control Standards
Best Practices1. Never Use FPKM/TPM for Differential Analysis
FPKM and TPM do not account for sample-specific library composition biases. A few extremely expressed transcripts (e.g. globin in blood) distort TPM denominators. Always use raw integer counts in DESeq2/edgeR.
2. Strandedness Mismatch
Misconfiguring library strandedness (unstranded vs forward vs reverse/dUTP) in STAR or featureCounts leads to catastrophic loss of antisense and overlapping gene reads, causing ~30–50% count drops.
3. scRNA-Seq Ambient RNA Contamination
Cell lysis during tissue dissociation releases cell-free mRNA into the droplet suspension. Always execute ambient RNA decontamination (e.g. SoupX, CellBender) before clustering.
📝 Module 8: Self-Assessment Exercises & Practice Datasets
Hands-on MasteryQ1: What statistical distribution does DESeq2 assume for RNA-Seq read counts, and why?
Answer: DESeq2 models counts using the Negative Binomial (Gamma-Poisson) distribution. Unlike Poisson distributions where the mean equals the variance ($\mu = \sigma^2$), biological replicates in RNA-seq exhibit significant overdispersion ($\sigma^2 > \mu$). The Negative Binomial distribution includes an extra dispersion parameter $\alpha$ ($\sigma^2 = \mu + \alpha \mu^2$) that models biological variability between replicates.
Q2: What is the biological significance of a high percentage of mitochondrial reads (>20%) in scRNA-seq?
Answer: Elevated mitochondrial gene expression typically indicates dying, apoptotic, or membrane-ruptured cells. When a cell membrane is compromised during tissue dissociation, cytoplasmic RNA leaks out while mitochondrial transcripts remain trapped within the intact inner mitochondrial membrane, leading to an artificially elevated mitochondrial ratio.
Q3: How does pseudoalignment in Salmon achieve 10× faster execution than standard STAR alignment?
Answer: Rather than performing computationally expensive base-by-base dynamic programming alignment (Smith-Waterman) to find the exact genomic coordinate of every read, Salmon uses a suffix-array or quasi-mapping index to quickly determine which transcripts a read is compatible with (equivalence classes), directly updating abundance likelihoods via expectation-maximization.