This repository provides the simulation code and results accompanying the affine subcode ensemble decoder (aSCED) for degeneracy-aware quantum error correction (QEC) presented in [1].
[1] L. Wursthorn, J. Mandelbaum, S. Miao, H. Liu, H. Jäkel, S. Koutsioumpas and L. Schmalen, "Affine Subcode Ensemble Decoding for Degeneracy-Aware Quantum Error Correction," May 2026, https://arxiv.org/abs/2605.06547
Quantum low-density parity-check codes are promising candidates for low-overhead fault-tolerant quantum computing, but degeneracy is known to impair the convergence of beliefpropagation (BP) decoding of these codes. In this work, we show that appending linearly independent rows to a check matrix of a stabilizer code can reduce the search space for a valid degenerate solution. Motivated by this, we extend the recently proposed affine subcode ensemble decoding technique from the classical to the quantum setting. Moreover, we employ overcomplete matrices for each decoding path. Monte-Carlo simulations on toric and generalized bicycle codes demonstrate improved convergence and reduced logical error rate.
- Multithreaded simulation environment for BSC & Pauli channel
- Python interface for C++ core implementation via Pybind11
- Belief propagation (BP) decoding featuring
- multiple scheduling types (Parallel, Serial-CN/VN)
- multiple CN processing types (MSA, SPA, SPA-Phi)
- binary & quaternary BP algorithms
- Ensemble decoding framework featuring
- multiple pre-/postprocessing types (e.g., for aSCED)
- multiple selection step types (e.g., Minimum-Weight)
- per path ensemble statistics & list error rates
- Framework for joint binary decoding on Pauli channel
- A working install of conda
Clone the repository & its submodules:
git clone --recurse-submodules <REPOSITORY_URL>
Create conda environment from inside repository:
conda env create -f environment.yml
Build & execute the demo script:
conda activate aSCED_QECuv run Examples/demo_bp4.py
Or run script as SLURM batch job:
bash tools/sbatch.sh
Additional packages can be installed with:
uv sync --extra extras(for scripts using external QEC libraries)uv sync --extra dev(for optional tools like Jupyter)
This environment uses a newer C++ toolchain (cxx-compiler from conda-forge) than the system-provided compiler on some machines. To resolve errors like 'GLIBCXX_3.4.31 not found', use source tools/setup.sh instead of activating the environment with conda activate QEC.