Analogy between automatic speech recognition and base calling: a current signal is decoded into a nucleotide sequence by a seq2seq model
Base calling as a sequence-to-sequence problem: the input is the nanopore current, the output a sequence over {A, C, G, T/U}.

Results

DNA base calling: match rate on NA12878
34,742 signal-chunk / reference pairs. Highlighted dot = best model.
Match rate by base caller, DNA test set NA1287880%85%90%95%100%Match rate (M, normalized by alignment length)CausalcallCausalcall: 84.30%84.30Guppy v2.3.1Guppy v2.3.1: 86.63%86.63Guppy v4.5.4Guppy v4.5.4: 91.93%91.93Guppy v6.0.1Guppy v6.0.1: 93.60%93.60Bonito v0.7.3Bonito v0.7.3: 93.35%93.35Dorado v0.5.3Dorado v0.5.3: 93.35%93.35Dorado v0.7.0Dorado v0.7.0: 93.47%93.47
RNA base calling: match rate on hek293t_wt
83,681 signal-chunk / reference pairs. Highlighted dot = best model.
Match rate by base caller, RNA test set hek293t_wt80%85%90%95%100%Match rate (M, normalized by alignment length)RodanRodan: 87.72%87.72Guppy v2.3.1Guppy v2.3.1: 85.67%85.67Guppy v4.5.4Guppy v4.5.4: 91.78%91.78Guppy v6.0.1Guppy v6.0.1: 91.78%91.78Dorado v0.5.3Dorado v0.5.3: 93.96%93.96Dorado v0.7.0Dorado v0.7.0: 93.74%93.74

Guppy 6.0.1 and Dorado 0.5.3 achieve the best DNA and RNA results respectively, with match rates of roughly 93–94%. Official ONT basecallers (Guppy, Bonito, Dorado) clearly outperform the community models Causalcall and Rodan, and successive Guppy versions show how much the models have improved since 2019.

DNA base calling on NA12878

ModelVersionNormalized by alignment length (%)Normalized by reference length (%)
M ↑I ↓X ↓D ↓M ↑I ↓X ↓D ↓
Causalcall–84.300.824.1110.7784.410.824.1210.79
Guppyv2.3.186.632.594.346.4488.082.644.366.53
Guppyv4.5.491.931.972.683.4293.272.012.713.48
Guppyv6.0.193.601.512.122.7794.301.542.142.79
Bonitov0.7.393.351.562.232.8694.131.592.252.90
Doradov0.5.393.351.572.242.8593.071.572.232.84
Doradov0.7.093.471.542.182.8193.171.552.172.80

RNA base calling on hek293t_wt

ModelVersionNormalized by alignment length (%)Normalized by reference length (%)
M ↑I ↓X ↓D ↓M ↑I ↓X ↓D ↓
Rodan–87.723.284.914.0885.163.054.173.78
Guppyv2.3.185.673.594.466.2988.063.744.546.43
Guppyv4.5.491.782.392.153.6793.402.482.193.74
Guppyv6.0.191.782.392.153.6793.402.482.193.74
Doradov0.5.393.961.891.812.3495.221.961.842.37
Doradov0.7.093.741.951.922.4095.012.021.942.43

M = match, I = insertion, X = mismatch, D = deletion. ★ marks the best value per column. Rates are percentages normalized by the alignment length (left) or the ground-truth reference length (right).

Ground truth acquisition

Three stages: base calling, genome alignment of the base-called sequence, then segmentation and event alignment to extract matched raw-signal chunks and reference fragments
Ground truth pairs are raw-signal chunks matched to reference-genome fragments.

The ground truth is a one-to-one correspondence between raw-signal segments and reference fragments. Reads are first base called with Guppy 6.0.1, aligned to the reference genome, and processed with Nanopolish eventalign. The matched raw-signal segments and reference-sequence fragments are then extracted and sampled. In total the benchmark contains 34,742 DNA and 83,681 RNA pairs of signal chunks and reference segments.

Because modified bases are written as the same nucleotide but produce different current levels, there is an inherent upper limit on ground-truth accuracy; the labels are an approximation.

Evaluation metrics

Predicted sequences are aligned pairwise to the ground truth with the parasail SIMD aligner. From the alignment we count matches (M), mismatches (X), insertions (I) and deletions (D) and report two normalizations:

rate_align = M | X | I | D / (number of aligned bases) × 100% rate_ref = M | X | I | D / (number of reference bases) × 100%

A higher match rate is better; higher mismatch, insertion or deletion rates are worse. The implementation is base_calling_evaluation.py.

Baseline models

Timeline of base calling model architectures
Architectures of the benchmarked basecallers. All are deep-learning models.

Guppy, Bonito and Dorado are official Oxford Nanopore basecallers; Causalcall (temporal convolutional network) and Rodan (fully convolutional) come from the research community. Several versions of Guppy and Dorado are included because they are the most widely used.

Basecaller configurations

BasecallerVersionSampleConfiguration
Guppy2.3.1DNAdna_r9.4.1_450bps.cfg
Guppy2.3.1RNArna_r9.4.1_70bps.cfg
Guppy4.5.4DNAdna_r9.4.1_450bps_hac.cfg
Guppy4.5.4RNArna_r9.4.1_70bps_hac.cfg
Guppy6.0.1DNAdna_r9.4.1_450bps_hac.cfg
Guppy6.0.1RNArna_r9.4.1_70bps_hac.cfg
Bonito0.7.3DNAdna_r9.4.1_e8_hac@v3.3
Dorado0.5.3 / 0.7.0DNAdna_r9.4.1_e8_hac@v3.3
Dorado0.5.3 / 0.7.0RNArna002_70bps_hac@v3

Download the benchmark data

Each archive contains the fast5 chunks, the ground-truth label.csv, and the outputs of every baseline. Use the base calling dataloader to turn them into training tensors.