Blog

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.

Research Guide

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.

Abdullah Shahid ·
rna-seq bioinformatics
Bioinformatics

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.

Abdullah Shahid ·
tutorial rna-seq bioinformatics
Research Guide

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.

Abdullah Shahid ·
rna-seq differential-expression bioinformatics
Bioinformatics

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.

Abdullah Shahid ·
rna-seq announcement bioinformatics
Tutorial

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.

Abdullah Shahid ·
tutorial rna-seq bioinformatics
Research Guide

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.

Abdullah Shahid ·
rna-seq differential-expression bioinformatics
Tutorial

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.

Abdullah Shahid ·
tutorial rna-seq bioinformatics
Research Guide

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.

Abdullah Shahid ·
rna-seq differential-expression bioinformatics
Research Guide

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.

Abdullah Shahid ·
rna-seq bioinformatics
Tutorial

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.

Abdullah Shahid ·
tutorial rna-seq differential-expression
Bioinformatics

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.

Abdullah Shahid ·
rna-seq announcement bioinformatics
Bioinformatics

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.

Abdullah Shahid ·
rna-seq differential-expression bioinformatics
Tutorial

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.

Abdullah Shahid ·
tutorial rna-seq differential-expression
Research Guide

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.

Abdullah Shahid ·
rna-seq bioinformatics
Tutorial

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.

Abdullah Shahid ·
tutorial rna-seq differential-expression
Bioinformatics

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.

Abdullah Shahid ·
rna-seq announcement bioinformatics
Research Guide

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.

Abdullah Shahid ·
rna-seq differential-expression bioinformatics
Bioinformatics

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.

Abdullah Shahid ·
tutorial rna-seq bioinformatics
Bioinformatics

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.

Abdullah Shahid ·
rna-seq bioinformatics
Tutorial

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.

Abdullah Shahid ·
tutorial rna-seq bioinformatics
Tutorial

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.

Abdullah Shahid ·
tutorial rna-seq bioinformatics
Tutorial

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.

Abdullah Shahid ·
rna-seq tutorial differential-expression
Bioinformatics

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.

Abdullah Shahid ·
rna-seq bioinformatics
Tutorial

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.

Abdullah Shahid ·
tutorial rna-seq bioinformatics
Tutorial

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.

Abdullah Shahid ·
tutorial rna-seq differential-expression
Tutorial

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.

Abdullah Shahid ·
tutorial rna-seq differential-expression
Tutorial

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.

Abdullah Shahid ·
rna-seq tutorial differential-expression
Tutorial

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.

Abdullah Shahid ·
tutorial rna-seq bioinformatics
Bioinformatics

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.

Abdullah Shahid ·
rna-seq bioinformatics
Tutorial

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.

Abdullah Shahid ·
tutorial rna-seq differential-expression
Bioinformatics

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.

Abdullah Shahid ·
rna-seq bioinformatics
Tutorial

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.

Abdullah Shahid ·
rna-seq tutorial differential-expression
Tutorial

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.

Abdullah Shahid ·
rna-seq tutorial differential-expression
Tutorial

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.

Abdullah Shahid ·
rna-seq tutorial bioinformatics
Tutorial

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.

Abdullah Shahid ·
rna-seq tutorial bioinformatics
Tutorial

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.

Abdullah Shahid ·
rna-seq tutorial bioinformatics
Tutorial

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.

Abdullah Shahid ·
rna-seq tutorial bioinformatics
Tutorial

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.

Abdullah Shahid ·
rna-seq tutorial bioinformatics
Tutorial

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.

Abdullah Shahid ·
rna-seq tutorial differential-expression
Tutorial

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.

Abdullah Shahid ·
rna-seq tutorial bioinformatics
Tutorial

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.

Abdullah Shahid ·
rna-seq tutorial differential-expression
Tutorial

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.

Abdullah Shahid ·
rna-seq tutorial differential-expression
Tutorial

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.

Abdullah Shahid ·
rna-seq tutorial bioinformatics
Tutorial

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.

Abdullah Shahid ·
rna-seq tutorial bioinformatics
Tutorial

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.

Abdullah Shahid ·
rna-seq tutorial differential-expression
Research Guide

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.

Abdullah Shahid ·
rna-seq bioinformatics differential-expression
Research Guide

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.

Abdullah Shahid ·
rna-seq bioinformatics tutorial
Research Guide

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.

Abdullah Shahid ·
rna-seq differential-expression bioinformatics
Research Guide

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.

Abdullah Shahid ·
rna-seq bioinformatics tutorial
Bioinformatics

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.

Abdullah Shahid ·
rna-seq differential-expression bioinformatics
Research Guide

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.

Abdullah Shahid ·
rna-seq bioinformatics
Bioinformatics

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.

Abdullah Shahid ·
rna-seq differential-expression bioinformatics
Research Guide

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.

Abdullah Shahid ·
rna-seq bioinformatics differential-expression
Research Guide

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.

Abdullah Shahid ·
rna-seq bioinformatics differential-expression
Research Guide

Experimental Design Mistakes in Differential Expression

Replicates, confounders, paired designs, and pseudoreplication: the experimental design decisions that decide whether your DESeq2 results hold up.

Abdullah Shahid ·
rna-seq bioinformatics differential-expression
Research Guide

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.

Abdullah Shahid ·
rna-seq bioinformatics differential-expression
Tutorial

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.

Abdullah Shahid ·
rna-seq bioinformatics tutorial
Tutorial

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.

Abdullah Shahid ·
rna-seq bioinformatics tutorial
Research Guide

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.

Abdullah Shahid ·
rna-seq bioinformatics tutorial
Research Guide

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.

Abdullah Shahid ·
rna-seq bioinformatics differential-expression
Announcement

Welcome to the NotchBio Blog

Introducing the NotchBio blog — your source for RNA-seq analysis insights, bioinformatics tutorials, and platform updates.

Abdullah Shahid ·
announcement