RNA-seq Explorer — Guide
RNA-seq Explorer Guide
R setup Cheat sheet Trouble? Open the app ↗
Bulk RNA-seq · differential expression

From count files to real DESeq2 figures.

A single HTML file that runs the whole workflow in your browser — and hands the heavy statistics to genuine DESeq2 in R when you need publication numbers.

Volcano plot from RNA-seq Explorer
Volcano · the signature view up down

Level 1 In-browser

Instant, nothing to install. A fast DESeq2-style approximation for exploring your data — QC, volcano, PCA, heatmap, pathways.

Level 2 Real DESeq2

Export your data, run authentic DESeq2 in R, and import the results back so your volcano, table, PCA and heatmap use genuine DESeq2 values.

Part 01

Open the tool and load your data

The tool is one self-contained HTML file. Double-click rnaseq_explorer….html and it opens in your browser. Everything runs on your machine — your count data never leaves your computer.

Demo data

It opens with 6 built-in demo samples (WT_M, WT_F) so you can try it right away. These are synthetic — delete them before a real analysis (Part 5).

Choose one of three ways to load data

Near the top of the left sidebar there's an upload area.

  1. Upload count files — one file per sample. Click Drag & drop count files or drop them in. Each file is two columns: an Ensembl gene ID and a raw count (ENSMUSG00000000001  3451). The filename becomes the sample name.
  2. Load a saved session — drag a .json session onto the upload box, or use 📂 Load Session. Restores samples, groups and settings at once.
  3. Import existing DESeq2 output — already ran DESeq2 elsewhere? Use ⬆ Import DESeq2 output to load a results table (and/or a VST matrix); the tool auto-detects each from its columns.
Groups

Open ⊕ Manage Samples to name samples and assign each to a group (e.g. WT, Treated). Replicates share a group name. You need at least 2 samples per group.

Part 02

Run the in-browser analysis

  1. Set Control group (ref) and Treatment group to the two groups you're comparing. A positive log₂FC means "up in treatment vs control."
  2. Optionally tune the thresholds — |log₂FC| cutoff, FDR cutoff, Min. total count, Cook's outlier handling, and the Shrink low-count log₂FC option.
  3. Click ▶ Run Analysis.

Explore the tabs

  • QC — per-sample quality: library size, detected genes, size factors, mitochondrial %.
  • Volcano — significant genes; hover, search, and label.
  • PCA — how all your samples cluster.
  • Heatmap — expression patterns across samples.
  • Scatter · DEG Table — control-vs-treatment means, and a sortable results table.
  • Pathways · TF Analysis — enrichment and transcription-factor activity (these query online databases).

This is enough for everyday exploration. For publication numbers, continue below.

Which am I seeing?

Every view shows a small badge just under the tabs, so you always know the source of the figure in front of you:

● Real DESeq2 once you've imported R results or a VST matrix  ·  ● In-browser analysis for the fast approximation  ·  Quality control on the QC tab (straight from raw counts).

Part 03

One-time R setup

You only do this once per computer, and only if you want the real-DESeq2 features.

  1. Install R from cran.r-project.org (RStudio optional).
  2. In R, install DESeq2:
R · one-time install
# run once in R
if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager")
BiocManager::install(c("DESeq2", "apeglm"))
Shortcut

apeglm is optional (it enables fold-change shrinkage; scripts run fine without it). And if you use Claude Code, you can skip this entirely — it installs DESeq2 for you.

Part 04

Real DESeq2 for every view

After this, every tab looks exactly like the in-browser version but with genuine DESeq2 numbers — volcano, DEG table, scatter, pathways and TF (from the DE results) plus PCA and heatmap (from the VST). One export, one R run, one import.

  1. (Recommended) Delete the demo samples first so they don't enter the analysis — ⊕ Manage Samples.
  2. Set the Control and Treatment groups (as in Part 2).
  3. Click 🧬 Run real DESeq in R. The panel then offers three files to download — the contrast counts, the all-sample counts, and one R script.
  4. Save all three into the same folder, then run the script there:
Terminal
Rscript deseq2_run.R
  1. It writes both results_….csv and vst_all_samples.csv.
  2. Back in the tool, click ⬆ Import DESeq2 output and select both files at once — the tool auto-detects which is which.
  3. Done. The badge under the tabs reads ● Real DESeq2 and every figure uses your real data.
Changing cutoffs later

With real DESeq2 results loaded, adjusting the |log₂FC| or FDR cutoff and clicking ▶ Run Analysis pops a choice: Keep real DESeq2 data re-applies the new cutoffs to your imported numbers (badge stays real), while Use in-browser analysis recomputes with the fast approximation. Cutoffs only threshold what's shown — to change the DESeq2 computation itself (e.g. the count filter or Cook's handling), re-export and re-run in R.

In RStudio

Running it in RStudio (the Source button, or selecting lines and running them)? R's working directory isn't the script's folder, so it can't find the counts files even when they're side by side. Point R at the folder first:

  1. Click the script's editor tab so it's active.
  2. Session → Set Working Directory → To Source File Location
  3. Click Source (or select all, then Run).

The script tries to do this automatically; the menu step is the reliable fallback. From a terminal, Rscript deseq2_run.R in the folder just works.

Claude Code

Rather than running it yourself, click ⧉ Copy Claude Code prompt and paste it into your Claude Code terminal. It runs deseq2_run.R (installing DESeq2 if needed) and tells you when both outputs are ready to import.

Good to know

The DE results are one contrast (change groups and re-export for another); the VST is contrast-independent, so you export it once. The VST file is large (tens to 100+ MB) — that's normal. Real VST switches on only when it covers every sample in the session. 💾 Save Session stores everything as a small .json.

Part 05

Export figures & tables

  • Every plot tab has SVG (vector, for Illustrator / Inkscape) and PNG export.
  • The Volcano, PCA and Scatter tabs have a Plot size W × H control — the SVG/PNG exports at exactly that size, so a figure can be made to fit a journal panel. ↺ Default restores the panel-filling size.
  • The Scatter tab also takes explicit X range / Y range axis limits (blank = auto-fit). Plot sizes and ranges are saved with the session.
  • ↓ Export Avg. Expression saves size-factor-normalized counts as CSV.
  • The DEG Table exports to CSV, and 💾 Save Session stores your whole session as a small .json.

Button cheat-sheet

ButtonWhat it does
▶ Run AnalysisIn-browser DESeq2-style DE — instant.
🧬 Run real DESeq in RWrites 3 files (contrast counts, all-sample counts, one R script) → real DE and VST.
⬆ Import DESeq2 outputLoad results_….csv and/or vst_all_samples.csv (both at once) → every view goes real.
⧉ Copy Claude Code promptHand the R step to Claude Code, one paste.
💾 Save · 📂 Load SessionSave and restore your whole session.
⊕ Manage SamplesRename samples, assign groups, delete samples.

Two "Import" buttons — don't mix them up

The single ⬆ Import DESeq2 output button takes both R outputs (select them together) and routes each automatically:

results_….csv

The DE results table → Volcano, DEG Table, Scatter, Pathways, TF.

vst_all_samples.csv

The vst matrix → PCA and Heatmap.

Troubleshooting

No such file

cannot open file '…counts_….csv' means R can't find the counts files. Make sure all three downloaded files are in the same folder and run from there. The script auto-switches to its own folder; if it can't, cd into that folder first (e.g. cd ~/Downloads) or, in RStudio, Session → Set Working Directory → To Source File Location.

  • Scatter/heatmap look wrong after import? → make sure your raw counts are still loaded (or a saved session with them). Import overlays real stats onto your counts — it needs them present.
  • Rscript: command not found → R isn't installed or isn't on your PATH (Part 3). On Mac it's usually /usr/local/bin/Rscript.
  • Group-name note in R ("levels contain characters other than letters/numbers") → harmless; the script still runs.
  • Pathways / TF blank → those tabs need internet. Everything else works fully offline.