The single most consequential decision in a multi-subject single-cell study is how differential expression is tested. This is that decision, run both ways on the same cells, on public data (GEO GSE96583 (Kang et al. 2018) — 8 donors, control vs IFN-β) — so you can see exactly how much the answer moves.
Do this on your own data: the size of the disagreement shown here belongs to this dataset — on yours it depends on how many donors you have, not how many cells. Upload your matrix and the free QC report tells you how many cells survive per sample, which is what a pseudobulk design actually rests on: omics.hstgenomics.com/qc-check. How many donors a single-cell differential-expression study needs: omics.hstgenomics.com/guides/how-many-donors-for-single-cell-de.
Want it done rather than shown? We do analysis only — send a count matrix, an h5ad or a Seurat object, Cell Ranger output or a public accession and get the analysis back with the code that produced it, at a fixed price agreed before any work starts: omics.hstgenomics.com/quote.
Eight donors, each sampled with and without interferon-β. The real sample size is eight per group, not 2,658 cells per group — and the two methods differ entirely in which of those numbers they believe.
| Donor | Condition | Cells aggregated |
|---|---|---|
| 101 | ctrl | 202 |
| 101 | stim | 244 |
| 1015 | ctrl | 779 |
| 1015 | stim | 653 |
| 1016 | ctrl | 369 |
| 1016 | stim | 320 |
| 1039 | ctrl | 126 |
| 1039 | stim | 161 |
| 107 | ctrl | 209 |
| 107 | stim | 164 |
| 1244 | ctrl | 415 |
| 1244 | stim | 284 |
| 1256 | ctrl | 390 |
| 1256 | stim | 370 |
| 1488 | ctrl | 295 |
| 1488 | stim | 336 |
Left: counts aggregated per donor and condition, then DESeq2 with donor in the model (a paired design). Right: every cell treated as an independent observation, Wilcoxon, BH-corrected — the default in most tutorials.
| Comparison | Genes |
|---|---|
| Called by both methods | 781 |
| Only by the per-cell test | 345 |
| Only by pseudobulk | 1,336 |
| Disagreement | 68.3% of all calls |
The usual warning about per-cell tests is that they inflate the gene list. Here — a very strong, very consistent treatment effect with a paired design — the honest result is more interesting than the cliché: the per-cell test returns fewer genes overall, uniquely calls 345 that the design-aware analysis does not support, and misses 1,336 that it does. Two thirds of the final list depends on a methodological choice that is rarely stated in a paper.
Interferon-β has a known signature. All ten canonical interferon-stimulated genes come out significantly up in the pseudobulk analysis — 10/10 — with fold changes in the range you would expect. A method that cannot recover a known biology should not be trusted with an unknown one, and this is the check we build into every project.
| Gene | Pseudobulk log2FC | Pseudobulk padj | Per-cell log2FC |
|---|---|---|---|
ISG15 | 7.74 | 2.1e-86 | 8.76 |
IFI6 | 4.98 | 6.8e-35 | 5.23 |
IFIT1 | 8.64 | 1.7e-45 | 8.8 |
IFIT3 | 7.85 | 5.2e-88 | 8.25 |
MX1 | 6.23 | 1.2e-53 | 6.27 |
OAS1 | 5.22 | 2.7e-52 | 5.26 |
IFI44L | 6.22 | 1.6e-18 | 5.34 |
RSAD2 | 8.38 | 7.2e-37 | 8.59 |
CXCL10 | 9.79 | 4.9e-41 | 10.65 |
STAT1 | 2.32 | 2.7e-34 | 1.99 |
→ Get a quote · single-cell sample · spatial sample · bulk RNA-seq sample