Insights & Updates
The latest on RNA-seq analysis, bioinformatics workflows, and NotchBio product updates.
The NotchBio blog is a practical library of bulk RNA-seq and bioinformatics guides for wet-lab biologists and computational researchers alike. We cover the full analysis pipeline end to end: quality control with FastQC and fastp, alignment and quantification with STAR, HISAT2, and Salmon, differential expression with DESeq2, edgeR, and PyDESeq2, and pathway analysis with GSEA and ORA.
Every tutorial is written to be reproducible, with working R and Python code, real example data, and the reasoning behind each parameter choice. Alongside the hands-on walkthroughs, we publish field notes on reproducibility, experimental design, and how modern labs are restructuring their RNA-seq workflows. Browse by topic below, or start with a foundational guide and follow the internal links from there.
From Wet Lab to Dry Lab: A Realistic Map of What to Learn First
A practical skill sequence for wet-lab biologists learning RNA-seq analysis: what to prioritise, what to safely skip, and what to outsource while you build.
What FastQC Reports Actually Tell You (And What Beginners Miss)
A senior bioinformatician walks through the FastQC sections that real beginners miss, with screenshots and decisions to make at each step.
Why Most Published GO Analyses Are Statistically Wrong
A 2022 PLOS Computational Biology study found 43% of GO enrichment analyses skip multiple test correction. Here is what that means and how to do it right.
Self-Service RNA-Seq For Labs Without A Bioinformatician
If your lab sequences more than it analyzes, here is what self-service RNA-seq looks like, what is safe to automate, and where you still need a human.
STAR vs Salmon vs HISAT2: A Hands-On Benchmark
A hands-on RNA-seq aligner benchmark: working STAR, Salmon, and HISAT2 commands, real runtime and memory numbers, and how much the DEG list actually changes.
How To Submit RNA-Seq Results That Reviewers Cannot Reject
Reviewers reject RNA-seq papers for predictable reasons: missing FDR correction, version-less methods, inaccessible data. A checklist that prevents it.
Salmon From FASTQ to Counts: A Complete Tutorial
A complete Salmon tutorial with decoy-aware indexing, quantification flags explained, tximport into R, DESeq2 integration, and QC checks at every step.
How To Write an RNA-Seq Methods Section Reviewers Accept
A reviewer-proof RNA-seq methods section is shorter than you think but far more specific. Templates, required elements, and what reviewers always flag missing.
The Reproducibility Crisis in Bulk RNA-Seq
Half of published RNA-seq pipelines fail when someone else tries to run them. A practitioner view of what breaks and how to build for reproducibility.
PyDESeq2 vs R DESeq2: Validation and the scanpy Workflow
Does PyDESeq2 really match R DESeq2? A tutorial on validating results against R, running PCA with scanpy and AnnData, and exporting DEGs for enrichment.
Why Reproducibility Should Not Be Optional in RNA-Seq Pipelines
Run snapshots, version pinning, and locked parameters should be the default, not a feature. A practitioner case for reproducibility-first RNA-seq platforms.
Bulk RNA-Seq for Bacteria: Operons and Why nf-core Breaks
Most bulk RNA-seq pipelines fail silently on bacterial data. Here is what changes for operons, GTF feature mismatches, and DE analysis in prokaryotes.
Publication-Ready RNA-Seq Plots in ggplot2
Reviewer-ready RNA-seq plots in R: volcano with gene labels, z-score heatmap with annotation bars, PCA with variance explained, and journal export settings.
The One-Bioinformatician Problem: Stop Being The Bottleneck
If you are the only bioinformatician serving multiple PIs, you are the bottleneck. Here is how to scale with templates, self-service, and clear handoffs.
ORA vs GSEA: A Side-by-Side Tutorial in R with clusterProfiler
ORA and GSEA answer different questions. A working clusterProfiler tutorial with FDR correction, proper backgrounds, and side-by-side result interpretation.
Nextflow vs No-Code Platforms: The Right Tool For Your Lab
Nextflow is powerful and steep. No-code platforms are fast and constrained. A clear decision framework for which fits your lab today, and when to use both.
Why Your DESeq2 Log2 Fold Change Cutoff Of Zero Is Wrong
Filtering DEGs at log2FC greater than zero returns half your genome. How to choose a defensible cutoff, apply lfcShrink, and avoid the GO-term explosion.
GTF and GFF Files: Why They Hurt and How To Tame Them
GTF and GFF files from the same database often disagree, prokaryotic files lack exon features, AGAT fixes some and breaks others. A practical field guide.
Industrial Bioinformatics Is Still In Its Infancy
Most commercial bioinformatics runs on academic instincts. A senior practitioner view on what industry needs and the engineering practices that close the gap.
Your First Nextflow Pipeline for RNA-Seq
A minimal Nextflow DSL2 RNA-seq pipeline in under 80 lines: three processes, channel wiring, Docker config, and how to read the execution report and DAG output.
Reducing GO Term Redundancy: simplify, rrvgo, and What Works
After enrichment you get hundreds of overlapping GO terms. A tutorial on clusterProfiler simplify, rrvgo, REVIGO, and a custom uniqueness-score fallback.
Pathway Enrichment Analysis: GSEA and ORA in R and Python
Pathway enrichment end to end: GSEA and ORA in R with clusterProfiler and fgsea, plus the Python equivalent with gseapy, across MSigDB, KEGG, and GO sets.
Why Deterministic Pipelines Beat AI-Generated Ones for RNA-Seq
AI bioinformatics pipelines feel fast until you check the outputs. Here is when to trust AI, when to verify it, and when to use a deterministic platform.
fastp vs Trimmomatic vs BBDuk: A Benchmark on RNA-Seq Reads
A side-by-side benchmark of fastp, Trimmomatic, and BBDuk on paired-end RNA-seq data: speed, post-trim quality, mapping rate, and downstream DEG impact.
DESeq2 Contrasts: Multiple Conditions and Multi-Factor Designs
Three conditions, paired designs, two-factor experiments, and time courses: how to build the design formula, specify contrasts, and avoid common mistakes.
From Count Matrix to Volcano Plot: A DESeq2 Walkthrough in R
A complete DESeq2 tutorial in R: loading counts, building the design formula, running DE, applying lfcShrink, generating a volcano plot, and exporting results.
RNA-Seq Plots: Volcano, MA, and Heatmap in R and Python
Publication-ready RNA-seq plots in R and Python: volcano with ggplot2/ggrepel, MA plots, and DEG heatmaps with pheatmap and seaborn, plus 300 dpi export.
Bulk RNA-Seq Deconvolution: CIBERSORTx and MuSiC Tutorial
Estimate cell type proportions from bulk RNA-seq using CIBERSORTx and MuSiC. Reference selection, batch correction, validation, and result interpretation.
Bulk RNA-Seq Is Not Dead: When To Use It Over scRNA-Seq
Single-cell RNA-seq dominates conferences but bulk RNA-seq remains the right tool for most experiments. A decision framework for choosing your modality.
Batch Effect Correction Tools: ComBat-Seq vs RUVSeq vs sva
How to choose a batch-effect correction tool: ComBat-Seq, RUVSeq, and sva compared, including unknown batch sources and reporting it in your methods.
What the 2025-2026 Bioinformatics Hiring Shift Means
Entry-level pipeline jobs are vanishing and AI-skilled senior roles are rising. What the 2025-2026 hiring shift signals about structuring RNA-seq work.
From Salmon Output to DEGs in Python with PyDESeq2
A pipeline-focused PyDESeq2 tutorial: load Salmon quant.sf into a count matrix, fit a DeseqDataSet, run Wald tests, apply apeGLM shrinkage, export DEGs. No R.
How to Run DESeq2 in R: From Salmon Counts to DEG Results
DESeq2 in R from Salmon counts: import quant.sf with tximeta, build a DESeqDataSet, run the Wald test, apply apeglm shrinkage, and export a ranked DEG table.
Build a Counts Matrix from featureCounts and Salmon
Python tutorial: parse featureCounts output, aggregate Salmon quant.sf, build a tx2gene map, and save a DESeq2-ready integer count matrix with pandas.
How to Run STAR Alignment for Bulk RNA-Seq (Step-by-Step)
Complete STAR tutorial: download genome and GTF, build an index with the right sjdbOverhang, run paired-end alignment, and load GeneCounts into R for DESeq2.
How to Build a Salmon Index and Quantify Bulk RNA-Seq Reads
Step-by-step Salmon tutorial: download GENCODE references, build a decoy-aware index, run salmon quant with gcBias and seqBias, and verify mapping rates.
FASTQ Quality Control with FastQC, fastp, and MultiQC
Bulk RNA-seq QC end to end: run FastQC on raw reads, trim adapters with fastp, rerun QC, and aggregate everything into one MultiQC report, with parallel runs.
Download RNA-Seq Data from GEO and SRA with sra-tools
Download bulk RNA-seq FASTQ files from GEO and SRA: prefetch, fasterq-dump, pysradb metadata, batch downloads, and fixes for the most common errors.
How to Make Volcano and MA Plots in R with ggplot2
Publication-quality volcano and MA plots from DESeq2 results in R: ggplot2 from scratch, ggrepel gene labels, EnhancedVolcano, and how to read them.
PCA and Clustering for RNA-Seq QC in Python
Python tutorial: normalize RNA-seq counts, run PCA with scikit-learn, build a sample distance heatmap, and spot outliers before differential expression.
PyDESeq2 Tutorial: Differential Expression in Python
The complete PyDESeq2 reference in Python: DeseqDataSet, DeseqStats, apeglm shrinkage, multi-factor designs, multiple contrasts, and pandas result filtering.
How to Run DESeq2: From Count Matrix to Results
Step-by-step DESeq2 in R: build a DESeqDataSet, understand size factors and dispersion, run DESeq(), interpret the results columns, then shrink and filter DEGs.
Set Up a Bulk RNA-Seq Environment on Ubuntu and macOS
Install Miniforge, conda, bioconda, R 4.4, and DESeq2 for bulk RNA-seq: reproducible environments, version pinning, and fixes for common install errors.
How to Quantify RNA-Seq Reads with Salmon
Step-by-step Salmon tutorial: build a decoy-aware index, run salmon quant on paired-end reads, read the quant.sf output, and import into DESeq2 with tximport.
Import Salmon Output into R with tximeta and tximport
Import Salmon quant.sf into R with tximeta and tximport: build a tx2gene table, fix ID-mismatch errors, and set up a DESeqDataSet for multi-factor designs.
Why Cell Line RNA-Seq Experiments Fail
Passage drift, undetected mycoplasma, serum lot changes, and pseudoreplication silently corrupt cell line RNA-seq. What each looks like and how to prevent it.
STAR vs HISAT2 vs Salmon: Which Aligner Should You Use?
STAR aligns to the genome, HISAT2 uses less memory, Salmon skips alignment. What each approach means for your RNA-seq results and when each is the right call.
What Is GSEA and Why Does It Beat a Simple DEG List
How GSEA finds coordinated pathway signals a DEG list misses: how the algorithm works, what NES and the leading edge mean, and how to run it with fgsea in R.
What Actually Happens to Your RNA Sample Before It Becomes Data
From tissue extraction to FASTQ file: a clear breakdown of RNA-seq library prep, sequencing chemistry, and what goes wrong at each step.
When to Use edgeR vs DESeq2 vs limma-voom
DESeq2, edgeR, and limma-voom all test differential expression but use different models, normalization, and assumptions. Here is when each one wins.
Understanding Your QC Report: FastQC and MultiQC
A module-by-module guide to reading FastQC and MultiQC output for RNA-seq data — what each plot means, which failures matter, and which you can safely ignore.
How DESeq2 Actually Works (Without the Math Overload)
The negative binomial model, size factors, dispersion shrinkage, and what each output column really means: DESeq2 explained for working researchers.
Detecting Batch Effects with PCA and Correcting Them in DESeq2
How to detect batch effects with a PCA plot and correct them in DESeq2 using a design covariate, ComBat-seq, and limma removeBatchEffect for visualization.
What Is a Count Matrix and Why Does It Matter
Raw counts, TPM, FPKM, and DESeq2-normalized values each represent expression differently. What each one is, why it matters, and which to use downstream.
Experimental Design Mistakes in Differential Expression
Replicates, confounders, paired designs, and pseudoreplication: the experimental design decisions that decide whether your DESeq2 results hold up.
Why Your Choice of Reference Genome Changes Your Results
GENCODE, Ensembl, UCSC, and RefSeq annotate the same genome differently. How that choice changes RNA-seq alignment, quantification, and your DEG list.
Trimming Adapters with Trimmomatic and fastp
When adapter trimming helps, when it hurts, and how to run Trimmomatic and fastp on RNA-seq data with the parameter choices that actually matter.
How to Run FastQC and MultiQC on Raw RNA-Seq Reads
A hands-on guide to automating RNA-seq QC across dozens of samples using FastQC and MultiQC, with bash and Python scripts for parsing and flagging failures.
Raw Reads to Counts: The Bulk RNA-Seq Pipeline Explained
Every computational step in bulk RNA-seq, explained: from FASTQ quality control through trimming, alignment, and quantification to your final count matrix.
What Are Batch Effects in RNA-Seq (and Why They Ruin Results)
What batch effects are, why they happen in bulk RNA-seq, and how they quietly corrupt your differential expression results — the concepts to grasp first.
Welcome to the NotchBio Blog
Introducing the NotchBio blog — your source for RNA-seq analysis insights, bioinformatics tutorials, and platform updates.