QEC results, with the working shown.

Point Nuclei at the sinter CSVs and Stim circuits you already have. It turns them into statistics you can defend: rates with their units, Λ fits that say what they left out, and decoders compared with their intervals.

Free and open source under MIT. No account, no install for the browser version.

Bring the files you have

No new format and no import script. Nuclei reads sinter's own CSV, groups rows by their metadata, and merges repeated runs of the same point.

shots,errors,discards,seconds,decoder,strong_id,json_metadata
200000,1902,0,2.400,pymatching,3-0.001-…,{"d":3,"r":3,"p":0.001,…}
200000,540,0,2.400,pymatching,5-0.001-…,{"d":5,"r":5,"p":0.001,…}
200000,135,0,2.400,pymatching,7-0.001-…,{"d":7,"r":7,"p":0.001,…}
200000,33,0,2.400,pymatching,9-0.001-…,{"d":9,"r":9,"p":0.001,…}
Figure 1. Four rows of a sinter CSV, exactly as sinter writes it.

Read it correctly

Every plot states what its y-axis counts, per shot or per round, and every point carries its interval. Thin statistics look thin.

curves cross 110⁻¹10⁻²10⁻³10⁻⁴ 0.1%0.2%0.4%0.6% physical error rate p logical error rate, per shot d=3d=5d=7d=9
Figure 2. Rotated surface code memory, PyMatching, 200,000 shots per point. Example data.

Fit Λ, and say what was left out

Λ is fitted from per-round rates. Points above threshold, where the logical error rate saturates at one half, are listed as dropped instead of quietly skipped.

p3→55→77→9Λ
0.1%5.95.65.35.6
0.2%2.92.82.92.9
0.4%1.31.41.41.4
0.6%dropped: d ≥ 5 saturate at ½, no ratio exists
Figure 3. Error suppression per step of two in distance, from the data in Figure 2.

Compare decoders without fooling yourself

Put two decoders side by side on the same points, each with its interval, before you call one of them better.

PointPyMatchingFusion Blossom95% intervals
d=7, p=0.2%2,1542,127overlap
d=9, p=0.1%3323overlap; too few errors to rank
Figure 4. Logical errors out of 200,000 shots. A 43% gap that means nothing yet.

Also in the desktop app

Stim circuits, drawn
Timeline, code lattice and detector error graph for any .stim file.
sinter campaigns
Run, resume and extend a campaign without re-sampling what you have.
Noise models as files
SI1000 and friends as YAML in your repo, compared channel by channel.
Experiments with manifests
Parameter sweeps as YAML; every run records its seed, backend and environment.
Resource estimates
Azure's estimator over Q# or OpenQASM 3, without leaving the project.
Circuits in four SDKs
Qiskit, Cirq, CUDA-Q and Q#, on the local simulator or IBM, IonQ, Quantinuum, Braket and Azure hardware.

Get Nuclei

Start in the browser with a CSV. Take the desktop app when you want campaigns, circuits and hardware.

Downloads
BrowserCSV analysis · no installOpen
macOSApple SiliconDownload .dmg
Windowsx64Download .msi
Linuxx64Download .deb