SeqBench

CRISPR Editing Efficiency from Sanger — Indel Spectrum Without NGS

Drop in an unedited control trace and your edited pool's trace and get the indel spectrum, the unedited fraction, and the R² that says whether the decomposition means anything.

🌐 Nothing you paste is logged or stored — every tool is also callable via REST & MCP, and in bulk from the batch tools

Predicted, not measured
How good is it?
Every run reports its own R²: how much of the observed window the shifted-control basis actually explains. That is a measured adequacy of the model on YOUR traces, and a low value means the assumption is wrong here rather than that the edit is weak. On accuracy against a reference method for real samples, none is published for this implementation — the underlying decomposition is TIDE's, whose authors report their own concordance with amplicon sequencing, and that number does not transfer to this code so it is not quoted. This implementation's exact recovery of synthetic mixtures is deliberately not offered as validation either: it tests the arithmetic, not whether the model fits a real trace.
Only valid for:
A pool of alleles that differ from one control read by simple insertions or deletions at a known cut site, where both reads come from the same amplicon and chemistry and both extend well past the cut. NOT valid for substitution-only edits — base editing produces a mixed base, not a shift, and this model cannot see it — nor for a knock-in whose insert is novel sequence rather than a frame shift of the control, nor for any run whose R² comes back low.
Fitted on:
Nothing. There are no fitted coefficients anywhere in this tool: the basis is the caller's own control trace, and the only free parameters are the mixing proportions themselves, solved per run under non-negativity and a sum-to-one constraint. The model — that an allele carrying an indel of d bases reads downstream of the cut as the unedited sequence shifted by d — is the decomposition TIDE introduced (Brinkman et al., Nucleic Acids Research 2014).

A pool of edited cells is a mixture, and a Sanger trace of that pool is every allele in it superposed. Downstream of the cut, an allele carrying an indel of d bases reads as the unedited sequence shifted by d — so the observed trace over a window past the break is a combination of shifted copies of the control trace, and the mixing proportions ARE the indel spectrum. That decomposition is solved here as a non-negative least squares problem, which matters: an unconstrained fit will happily report that minus fourteen per cent of the pool carried a three-base deletion, and that is not a smaller error than the truth but a different kind of statement. Both .ab1 files are read in your browser and neither is uploaded. Every run reports its own R² — how much of the window the shifted-control basis actually explains — because that, not the efficiency number, is what tells you whether the model fits your traces at all: a low value means the assumption is wrong here rather than that the edit was weak. One limit is worth knowing before you start: a base editor makes a mixed base rather than a shift, so a CBE or ABE experiment reads as unedited with a confident-looking fit. This is for nuclease editing.

Both files are decoded in your browser; nothing is uploaded.

How to use the CRISPR Editing Efficiency tool

  1. 1Load the unedited control trace and the edited pool's trace, both .ab1 — or click Load example to see the decomposition on a synthetic mixture.
  2. 2Give the cut site: paste the 20 nt protospacer to have it located in the read, or type the position directly.
  3. 3Read the spectrum — the fraction of the pool at each insertion or deletion size — with the unedited fraction as the reference the efficiency is measured against.
  4. 4Check the R² before believing any of it, and widen maxIndel or the window if the fit is poor.

Frequently asked questions

How does this work without sequencing?

Because a Sanger trace of a mixed pool already contains every allele — superposed rather than separated. Past the cut, an allele with an indel of d bases is the unedited sequence shifted by d, so the observed trace is a weighted sum of shifted copies of the control trace and the weights are the spectrum. Recovering them is a constrained least squares problem with one exact solution, not a fit with a free hand. This is the decomposition TIDE introduced (Brinkman et al., Nucleic Acids Research 2014); the model is the same because the physics is.

What does the R² mean, and why is it shown so prominently?

It is how much of the variance in the decomposition window the shifted-control basis explains — in other words, how well the model fits YOUR two traces. It is the honest confidence figure here, and it is a measurement rather than a claim: below about 0.7 you should read the result as “these traces do not fit this model” rather than as a weak edit. A failed trace, the wrong amplicon, a mistaken cut position and a substitution-only edit all land there.

Will it work for base editing?

No, and it will not tell you so by failing. A cytosine or adenine base editor produces a mixed base at one position, not a frame shift, so it contributes nothing to any shifted column: the decomposition returns roughly zero per cent edited with a high R², which looks like a confident negative result. Use this for nuclease editing that makes indels. For a base edit, compare the traces position by position instead — the Sanger vs Reference tool shows the mixed peak directly.

How accurate is it?

No accuracy figure against amplicon sequencing is published for this implementation, and none is quoted. Two things are offered instead. The first is the per-run R² above, which is a measured property of your own data. The second is a limit rather than a strength: at a few per cent channel noise, a genuinely unedited sample still decomposes to a small non-zero edited fraction, so a result of one or two per cent should be read as the method's floor rather than as a real edit. This implementation does recover known synthetic mixtures essentially exactly, but that tests the arithmetic, not whether the model fits a real capillary trace, so it is deliberately not offered as validation.

Are my traces uploaded?

No. Both .ab1 files are decoded and decomposed in your browser, and the trace data never leaves the page — which is also why the calculation runs here rather than through the API. The same computation is available as sanger_indel_spectrum on the REST API and MCP server for programmatic callers, which take the per-base channel intensities directly.

Why does it need a control trace at all?

Because the control IS the model. There are no fitted coefficients anywhere in this tool: the basis it decomposes onto is built entirely out of your own unedited read, so the answer is relative to the exact amplicon, chemistry and instrument you used. That is a strength — nothing is being transferred from someone else's dataset — but it means the control has to be the same amplicon, run the same way, and reaching well past the cut. The result reports the base-call identity it found upstream of the cut so you can see that it was.

Which specific indels does it name?

It resolves indel LENGTH, not sequence: two different three-base deletions are one column of the decomposition and are reported together. That is inherent to the method — both alleles shift the downstream trace by the same amount, so no amount of arithmetic separates them. If you need the actual junction sequences, that is what amplicon sequencing is for.

More