← All posts

Spike-in normalisation: when does it change the answer?

Most ChIP-seq, CUT&Tag and CUT&RUN comparisons don't need a spike-in. Ordinary normalisation works well when most regions stay the same between conditions. A spike-in matters when your treatment may change a mark across the whole genome, for example when a drug blocks the enzyme that makes the mark, or when cells change state. Then ordinary normalisation hides the change, and only a spike-in shows it.

Why ordinary normalisation can't see a global change

A sequencing library doesn't measure how much of a mark a sample holds. Labs make libraries of similar size, and the sequencer reads a similar number of fragments from each. A sample with half as much H3K27me3 still gives about as many reads: they just come from fewer marked molecules.

Normalisation methods such as RLE (DESeq2's default), TMM and library size then make the samples comparable. They all assume that most regions don't change, and they scale each sample so that the typical region looks the same everywhere. When the mark drops everywhere, there is no unchanged typical region, and the scaling removes the loss. A treatment that removes much of a mark can then look as if it changed nothing (Orlando et al. 2014; Chen et al. 2016).

A spike-in is a fixed amount of material from another species, added to every sample at the start: for example, the same number of fly cells in every reaction. It goes through every step with the sample, so its reads show how much those steps scaled each sample. A sample with less of the mark has a larger share of spike-in reads, and is scaled down more.

Three questions before you rely on one

1. Could the treatment change the mark everywhere? Think about the biology: is the enzyme that writes or removes the mark the target of the experiment? Does the cell type change? If the answer is clearly no, ordinary normalisation is the safer choice: a spike-in brings its own sources of error, described below.

2. Was the same amount added to every sample, at the start? A spike-in corrects the data only if it went in equally. As one review puts it, "Spike-in normalization typically makes use of a single scalar to normalize genome-wide data, making the approach particularly vulnerable to errors in implementation" (Patel et al. 2024). A pipetting error shifts every region of that sample.

The E. coli DNA that comes with the CUT&Tag enzyme is a special case. It needs no extra step, but its amount depends on the enzyme batch and on how the enzyme was handled (Kaya-Okur et al. 2019). It works as a spike-in only within one series of samples made with the same enzyme, handled in the same way.

3. Is there enough of it? With few spike-in reads, the scale factor is noisy. The PerCell authors leave out samples whose spike-in share is below 0.5 %, and warn that below about 2 %, "small variations in spike-in content would drastically impact normalization" (Tallan et al. 2025). Too much spike-in, on the other hand, spends sequencing on the other species.

What a global change looks like

A CUT&Tag study of H3K27me3 in mouse spermatogonia gives a clear example (GEO GSE221942; Hu et al. 2024). Each reaction held twice as many fly cells as mouse cells, and there were two replicates of undifferentiated and of differentiating cells. We analysed it with EpiNexus 1.2.3, with the fly genome as the spike-in.

  • The libraries looked alike. Each had 2.0–2.2 million reads in the regions tested, so ordinary normalisation would have treated the four samples as equal.
  • The spike-in told them apart. The fly share was 8.3–8.7 % in undifferentiated cells and 11.7 % in differentiating cells. The same number of fly cells went into every reaction, so the differentiating cells gave less H3K27me3 signal. Per spike-in fragment, they had about a quarter fewer reads.
  • The result was a global loss. With spike-in size factors, 84.5 % of the regions had less H3K27me3 in differentiating cells, and 5,897 regions were called lost against 456 gained.

With ordinary normalisation, the middle of that cloud would have been moved back to zero. The loss would have disappeared, and regions that lost less than most would have looked like gains.

Signs to check in your own results

  • The MA plot. With spike-in normalisation, a global change shows as a cloud of regions that sits above or below zero. With ordinary normalisation the cloud is centred on zero by design, so a centred cloud says nothing about a global change.
  • The spike-in share. Compare it between conditions. A consistently larger share in one condition means less of the mark there, if equal amounts went in.
  • The replicates. After spike-in scaling, replicates should still agree, for example in the sample principal component analysis (PCA). If one replicate lies apart, look at its spike-in share first.
  • Reads that fit both genomes. Closely related species, such as human and mouse, share sequence. Reads that align to both must not be counted twice (Patel et al. 2024).

How EpiNexus handles spike-ins

In the run wizard, Use spike-in normalization is in the Advanced Parameters of the Parameters step. It is on by default for CUT&Tag and CUT&RUN, with E. coli as the spike-in genome. For other spike-ins, choose the species you added from the installed genomes. If the GEO records of imported samples mention a spike-in, the wizard suggests it.

During the run, EpiNexus:

  • gives each read to the genome it aligns to better, and drops reads that fit both equally well. This rule comes from sequencing human tumours grown in mice (Ahdesmäki et al. 2016);
  • for ChIP-seq where every sample has its own input, corrects each factor by the spike-in ratio in the input (Fursova et al. 2019; Patel et al. 2024); otherwise uses the spike-in counts alone;
  • notes a spike-in share below 0.5 % or 2 % (from PerCell; not for E. coli, whose share is usually small), above 20 %, or with more than 5 % of spike-in reads fitting both genomes. The last two are EpiNexus rules;
  • calibrates only samples with at least 1,000 spike-in fragments, an EpiNexus rule. If any sample in a comparison has fewer, that comparison falls back to RLE, and the run says so.

The Quality Control page lists each sample's spike-in fragments, share and calibration, and the Differential page names the normalisation that was actually used. To see what the spike-in changes in your own data, start a second run with the same samples and the spike-in switched off, and compare the two MA plots.

The book covers spike-ins in more depth, with the full example: Spike-in normalisation. EpiNexus is in an invite-only pilot: ask for access.

Sources