Blog

RNA-Seq and Bioinformatics Tutorials

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.

Troubleshooting

RNA-Seq Read Length: Why Trimming Removes All Your Reads

Why RNA-seq trimming can discard every read, how read length and paired-end mismatches produce empty FASTQ files, and what to check before you run a pipeline.

Abdullah Shahid ·
rna-seq bioinformatics tutorial
Research Guide

How to Learn Bioinformatics as a Wet-Lab Scientist

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

How to Read a FastQC Report: Warnings, Failures, and Fixes

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

GO Enrichment Analysis Mistakes: Backgrounds, FDR, and Bias

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

RNA-Seq Analysis Without a Bioinformatician: What to Automate

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

RNA-Seq Results Checklist for Publication and Peer Review

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: Template and Checklist

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

Why RNA-Seq Analyses Fail to Reproduce—and How to Fix Them

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 DESeq2 in R: Validation and 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

Reproducible RNA-Seq Pipelines: Versions, Tools, and Provenance

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
Tutorial

Publication-Ready RNA-Seq Plots in R with 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
Bioinformatics

Bacterial RNA-Seq Pipeline: Operons, Counts, and DESeq2

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
Research Guide

How One Bioinformatician Can Support Multiple Research Labs

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 in R: clusterProfiler Pathway Analysis Tutorial

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
Research Guide

Why Your DESeq2 Log2 Fold Change Cutoff Of Zero Is Wrong

What log2 FC means in RNA-seq, how to convert it to fold change, choose a defensible DESeq2 cutoff, apply lfcShrink, and avoid noisy DEG lists.

Abdullah Shahid ·
rna-seq differential-expression bioinformatics
Bioinformatics

Nextflow vs No-Code RNA-Seq Pipelines: Which Fits 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
Bioinformatics

GTF vs GFF3 Files: Format Differences and RNA-Seq Fixes

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

Bioinformatics in Industry: Skills and Workflow Standards

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

Nextflow RNA-Seq Tutorial: Build Your First Pipeline

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

Deterministic vs AI-Generated RNA-Seq Pipeline Code

Compare deterministic and AI-generated RNA-seq pipeline code: reproducibility, validation, failure modes, and where AI assistance is safe to use.

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 Tutorial in R: Count Matrix to Volcano Plot

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

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

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
Bioinformatics

Bulk RNA-Seq vs Single-Cell RNA-Seq: Which Should You Use?

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

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
Tutorial

RNA-Seq Batch Correction: 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

How to Get a Bioinformatics Job in 2026: Hiring Trends

How to get a bioinformatics job in 2026: the skills employers want, why entry-level pipeline roles are changing, and how to build a credible portfolio.

Abdullah Shahid ·
rna-seq bioinformatics
Tutorial

Salmon to Differential Expression 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 quant.sf Files

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

How to Build a DESeq2 Count Matrix in Python

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

STAR RNA-Seq Alignment Tutorial: FASTQ to Gene Counts

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 Decoy-Aware Salmon Index for RNA-Seq

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: FastQC, fastp, and MultiQC Workflow

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

How to Download RNA-Seq FASTQ Data from GEO and SRA

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

Volcano and MA Plots in R: DESeq2 and ggplot2 Tutorial

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

RNA-Seq PCA and Sample Clustering in Python: QC Tutorial

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 Analysis 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

DESeq2 Tutorial in R: 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 an RNA-Seq Conda Environment on Ubuntu or 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

Salmon quant.sf Explained: Mapping Rates and DESeq2 Import

Understand Salmon quant.sf columns, mapping rates, effective length, NumReads, TPM, and the correct handoff to tximport, tximeta, and DESeq2.

Abdullah Shahid ·
rna-seq tutorial bioinformatics
Tutorial

tximport vs tximeta: Import Salmon quant.sf into DESeq2

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

Cell Line RNA-Seq Experimental Design: 7 Failure Modes

Seven cell line RNA-seq design failures—including passage drift, mycoplasma, serum lots, and pseudoreplication—with prevention and QC checks.

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? Gene Set Enrichment Analysis Explained

Gene Set Enrichment Analysis explained: ranked gene lists, enrichment scores, NES, FDR, leading-edge genes, and an fgsea tutorial in R.

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

RNA-Seq Sample Preparation: RNA Extraction to FASTQ Files

RNA-seq sample preparation from RNA extraction and quality checks through library preparation, Illumina sequencing, base calling, and FASTQ files.

Abdullah Shahid ·
rna-seq bioinformatics tutorial
Bioinformatics

When to Use edgeR vs DESeq2 vs limma-voom

edgeR vs DESeq2 vs limma-voom for RNA-seq: compare models, normalization, low-count behavior, complex designs, and when to use each method.

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

How to Detect and Correct RNA-Seq Batch Effects 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

RNA-Seq Count Matrix Explained: Raw Counts vs TPM vs FPKM

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

RNA-Seq Experimental Design: 5 Mistakes That Break DESeq2

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

Reference Genome Types for RNA-Seq: Does the Choice Change Results?

Compare GENCODE, Ensembl, RefSeq, and UCSC reference annotations for RNA-seq and learn how genome assembly and GTF choice change counts and DEGs.

Abdullah Shahid ·
rna-seq bioinformatics differential-expression
Tutorial

fastp vs Trimmomatic: RNA-Seq Adapter Trimming Tutorial

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 Multiple FASTQ Files

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

Bulk RNA-Seq Pipeline: FASTQ to Gene Counts Step by Step

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? Causes and Examples

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