Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

qLDPC

qLDPC is a Python toolkit for constructing and analyzing finite-size quantum low-density parity-check codes, as well as stabilizer and subsystem codes more broadly. It aims to make constructions and algorithms from the quantum error-correction literature easier to explore, reproduce, and build on. You can define codes using parity-check matrices or higher-level ingredients such as polynomials, group rings, Tanner graphs, and chain complexes. From there, you can inspect logical operators, compute or bound code distance, choose a decoder, estimate logical error rates, and—for qubit codes—build stim circuits.

Most code-level tools work over arbitrary finite fields. Circuit tools currently only support qubit codes.

✨ A few things to try

  • Code families. Construct surface, toric, Hamming, and Reed–Muller codes, along with hypergraph-product, lifted-product, bivariate-bicycle, quantum Tanner, SHYPS, GALA, and other families.
  • Distance calculations. Compute exact distances of binary codes with an optimized Brouwer–Zimmermann search, or bound code distance using QDistRnd or sqetch.
  • Code structure and analysis. Work with check matrices, Tanner graphs, canonical logical operators, subsystem gauge operators, and code-capacity error estimates.
  • Circuits and decoding workflows. Build memory experiments, encoding circuits, Pauli noise models, and state-preparation diagnostics; use Sinter and sliding-window decoders, or search for transversal Clifford gates.
  • Algebraic tools. Work with finite groups, group rings, lifted matrices, Cayley complexes, chain complexes, and optional GAP integration.

The example notebooks cover (among other things) code construction, custom noise models, and circuit-level logical error rates.

🚀 Quickstart

from sympy.abc import x, y

from qldpc import codes

# The [[144, 12, 12]] bivariate bicycle "gross code".
code = codes.BBCode({x: 12, y: 6}, x**3 + y + y**2, y**3 + x + x**2)

print(code)
print("physical qubits:", len(code))
print("logical qubits:", code.dimension)

The gross code is also available as the named construction, codes.GrossCode().

A subsystem lifted-product code

This example builds a parity-check matrix over the group algebra GF(2)[C₅], lifts each group-ring entry to a 5×5 binary block, and passes the result to SLPCode. The subsystem lifted-product construction produces an 80-qubit CSS subsystem code with 5 logical qubits and 45 gauge qubits.

from qldpc import abstract, codes

group = abstract.CyclicGroup(5)
ring = abstract.GroupRing(group)
x = ring.generators[0]

repetition = abstract.RingArray.build(
    [[1, 1, 0, 0], [0, 1, 1, 0], [0, 0, 1, 1]],
    ring,
)
connections = abstract.RingArray.build(
    [[0, x, 0, 0], [0, 0, x, 0], [0, 0, 0, x]],
    ring,
)
code = codes.SLPCode(repetition + connections)

print("physical qubits:", len(code))            # 80
print("logical qubits:", code.dimension)        # 5
print("gauge qubits:", code.gauge_dimension)    # 45

The library map explains the data model and package structure.

📦 Installation

Standard installation

qLDPC requires Python 3.11 or later:

python -m pip install qldpc

Optional extras

Decoders

qLDPC installs ldpc and pymatching by default, which provide several decoding algorithms. Install the optional decoder integrations published as qLDPC extras for your platform with:

python -m pip install 'qldpc[decoders]'

You can also use individual extras to install a specific optional decoder:

python -m pip install 'qldpc[ilp]'
python -m pip install 'qldpc[relay-bp]'
python -m pip install 'qldpc[tesseract]'

The Tesseract decoder requires CPython 3.12–3.14 on macOS arm64 or Linux x86-64. Frontier is not published on PyPI and is not included in an extra; see the decoder guide for availability and build-time installation guidance.

GAP integration

Some algebra tools, code lookups, and distance estimates require GAP. For the recommended in-process integration, install qLDPC with its maintained libgap extra:

python -m pip install 'qldpc[gap]'

qLDPC uses passagemath-gap when available, so supported GAP operations do not launch a separate process. The in-process binding requires Python 3.13 on a non-Windows platform. If passagemath-gap is unavailable, qLDPC relies on a GAP executable in your PATH (possibly obtainable with conda install -c conda-forge gap), and a manual copy/paste fallback. GAP integration on Windows remains limited; see issue #294.

sqetch distance estimation

You can install the optional sqetch distance-estimation backend with:

python -m pip install 'sqetch[gpu] @ git+https://github.com/a7b/yarn.git@e9ce9d0fcecc973988558bfee27fab6d6b8d7f97#subdirectory=sqetch'

This command installs the upstream version of sqetch that qLDPC is tested against, with GPU support. sqetch is not published on PyPI, so it is not available as a qLDPC extra. For binary CSS codes, you can select this backend with code.get_distance_bound(backend="sqetch").

Troubleshooting

On macOS, you may need to install cvxpy, which the ILP decoder requires, manually by following its installation instructions before installing qldpc[ilp] or qldpc[decoders]. If you use Conda to manage your Python environment, install cvxpy with:

conda install -c conda-forge cvxpy

Development installation

For a development installation:

git clone https://github.com/qLDPCOrg/qLDPC.git
cd qLDPC
python -m pip install -e '.[dev]'

🧭 Find your way around

Goal Start here
Understand code representations and how packages fit together Library map
Learn by running complete workflows Examples
Browse code families, functions, and exact signatures API reference
Construct and analyze a code qLDPC basics
Estimate logical error rates Logical-error-rate examples
Build memory circuits or noise models Circuit examples
Change or extend qLDPC safely Agent and contributor guide

⚠️ Limitations and caveats

qLDPC is research software. Some searches are expensive, some bounds are heuristic, experimental APIs can change, and optional tools may have side effects.

  • Circuit and tableau tools only work with qubit codes, even though other parts of qLDPC support prime-power-dimensional qudits.
  • Circuits returned by get_encoding_circuit are not fault-tolerant. Fault-tolerant encoding is tracked in issue #327.
  • Exact distance calculations and transversal-gate searches can be exponential. When a method returns a bound rather than an exact distance, its docstring explains what kind of bound it is.
  • Features that use GAP may start subprocesses, access online resources, or ask for manual input or permission to install a package.
  • Code lookups such as QuditCode.from_qecdb_id access online resources and cache results on disk; pass refresh=True to fetch the latest data.
  • Everything under qldpc.experimental has an unstable public API and may change without deprecation.
  • Lattice-surgery support in qldpc.experimental.surgery is experimental and unstable, and its implementation is still pending careful expert review. Validate its results independently, and pin the qLDPC version if you depend on it.

📚 Documentation and support

Questions, feedback, and ideas are welcome through GitHub issues or by email at mika.perlin@gmail.com.

⚓ Attribution

If you use this software in your work, please cite with:

@misc{perlin2023qldpc,
  author = {Perlin, Michael A.},
  title = {{qLDPC}},
  year = {2023},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/qLDPCOrg/qLDPC}},
}

This may require adding \usepackage{url} to your LaTeX file header. Alternatively:

Michael A. Perlin. qLDPC. https://github.com/qLDPCOrg/qLDPC, 2023.

qLDPC is distributed under the Apache License 2.0.

Metadata

Release files for qldpc 0.4.2.dev20261023

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for qldpc 0.4.2.dev20261023
File Size Uploaded Provenance
qldpc-0.4.2.dev20261023.tar.gz 656.1 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for qldpc 0.4.2.dev20261023
File Interpreter ABI Platform
qldpc-0.4.2.dev20261023-py3-none-any.whl Python 3 none any Details

Total release size: 1.4 MB

Release files / qldpc-0.4.2.dev20261023.tar.gz

Download URL qldpc-0.4.2.dev20261023.tar.gz
Size 656.1 kB
Tags Source
SHA-256 checksum
How to use checksums
1ef2c2b9738c958b8cfb7e8d903d8d640b5dfee73ac3c8f0b419f92ba051105f
BLAKE2b-256 checksum
How to use checksums
fd565d7f10bc1a7a6caee901efa9dffd6475dcdbf80aa06b58a84fe86760dae1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.12

Release files / qldpc-0.4.2.dev20261023-py3-none-any.whl

Download URL qldpc-0.4.2.dev20261023-py3-none-any.whl
Size 766.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5883c4654652951b8ca7e4b0eb8e74003c4fe58249836d15ee4555f0e6092e76
BLAKE2b-256 checksum
How to use checksums
776639b796c49ad02edb4927214ecccb17bb9af29740b015aa999c387aaf7e77
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.12

Security for qldpc 0.4.2.dev20261023

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page