Notes from the bench

Bioinformatics, with the receipts.

Specific troubleshooting, tool comparisons, and workflow notes from real client projects. No "intro to RNA-seq" — only the parts that actually trip people up.

A five step diagram of the batch diagnosis recipe: VST transform, plotPCA coloured by batch and by condition, read the pattern, add batch to the DESeq2 design, removeBatchEffect for plots only
2026-07-31

PCA for Batch Diagnosis: What the Plot Is Telling You and What to Do Next

A practical recipe for reading PCA plots to diagnose batch effects in RNA sequencing, with the right fix depending on your experimental design.

#rnaseq#batch effects#pca#deseq2#quality control
An IDR rank-rank scatter plot showing a tight diagonal of reproducible ChIP-seq peaks in teal and a diffuse noise cloud in slate, on a white background with ink-navy axis labels.
2026-07-24

ChIP-seq IDR reproducibility explained

IDR (Irreproducibility Discovery Rate) tells you which ChIP-seq peaks are real across biological replicates. Here is how to run it, what input it needs, and how to read the output.

#chipseq#IDR#reproducibility#ENCODE#MACS3
A factor-weight heatmap showing RNA-seq, ATAC-seq, and proteomics features loading on two MOFA2 latent factors, rendered in the OmicsDesk teal-to-ink gradient on a clean white background.
2026-07-20

MOFA2 Explained: Integrating RNA-seq, Proteomics, and ATAC-seq in One Model

MOFA2 finds shared and modality-specific axes of variation across your omics layers. Here is how the model works, when to use it over DIABLO, and a minimal R walkthrough.

#multi-omics#MOFA2#integration#RNA-seq#proteomics
Distribution of localization probability scores in a DDA phosphoproteomics dataset, with a threshold line at 0.75 marking the Class I cutoff
2026-07-10

Class I phosphosites: the filter that changes everything in phosphoproteomics

Localization probability tells you whether the phospho group is assigned to the right residue. Filtering to Class I sites (LP > 0.75) before differential analysis is the single most important quality step in phosphoproteomics.

#phosphoproteomics#class-i-sites#localization-probability#mass-spectrometry#differential-analysis
A schematic showing STAR memory loading stages and the three common failure points
2026-07-03

STAR alignment failed: the three memory errors and how to fix each one

STAR needs ~28 GB RAM for human hg38. When it fails with an OOM error, the cause is almost always one of three problems, each with a specific flag fix.

#rna-seq#alignment#troubleshooting#bioinformatics
Side-by-side schematic: per-cell DE with inflated n of 3000 cells vs pseudobulk DE with n of 6 donors per group and a well-calibrated FDR.
2026-06-26

Pseudobulk DE in single-cell RNA-seq: why per-cell Wilcoxon gives you too many hits

Per-cell differential expression inflates your false discovery rate by treating cells as independent replicates. Pseudobulk aggregation fixes this. Here is how to run it and read the results.

#scrna-seq#differential-expression#pseudobulk#deseq2#statistics
Two stacked panels on a white background. Top, labelled GSEA: a teal running-enrichment curve climbs to a peak score of 0.63, with a barcode of pathway-gene positions clustered toward the top of the ranking. Bottom, labelled ORA: the same 42 genes shown as dots, with a vertical significance-cutoff line near the far left; only 3 of the 42 fall inside the cutoff and the other 39 are greyed out.
2026-06-19

GSEA vs over-representation analysis in RNA-seq: why your DEG list misses pathways GSEA still finds

Over-representation analysis throws away every gene below your cutoff. GSEA ranks all of them. When that difference decides whether you see the biology, and the two settings that make or break the result.

#rna-seq#gsea#enrichment-analysis#pathway-analysis#fgsea
Volcano plot of a real mouse-heart TAC contrast with two pairs of vertical threshold lines at log2FC of 1 and 0.585. Genes recovered by the lower 1.5-fold cutoff are highlighted in teal; genes already kept by the 2-fold cutoff are in deep purple.
2026-05-29

The DESeq2 log fold change threshold: when |log2FC| > 1 is the wrong ruler

The 2-fold cutoff is a cell-line habit that quietly discards real signal in clinical RNA-seq. When to lower it, why lfcShrink matters, and how to test against a threshold instead of filtering after the fact.

#rna-seq#deseq2#differential-expression#lfcshrink#statistics
Horizontal pipeline diagram showing seven RNA-seq stages: FASTQ, QC, align, quantify, DE, pathways, report.
2026-05-22

RNA-seq from FASTQ to DE: what a reproducible pipeline actually looks like in 2026

End-to-end RNA-seq workflow: QC, alignment, quantification, DESeq2, pathway analysis, reporting. The five stages, the real tool choices, and what production looks like in Snakemake.

#rna-seq#snakemake#deseq2#workflow#bioinformatics
Two PCA plots side by side: same samples coloured by biological condition on the left and by library prep date on the right, both separating along PC1.
2026-05-14

PCA before DESeq2: the 30-second sanity check that catches what DE misses

Running PCA before differential expression takes 30 seconds and catches batch effects, mislabeled samples, and outliers that silently destroy DESeq2 results. How to read it.

#rna-seq#deseq2#qc#pca#batch-effects
OmicsDesk
2026-05-12

Tumor-only WGS variant calling without matched normal: what actually works in 2026

Why tumor-only somatic calling is harder than the docs admit, and a layered filter strategy that keeps false-positive rate manageable: PoN, gnomAD AF, and signature-based germline cleanup.

#wgs#somatic#mutect2#tumor-only#ffpe