Tools for constructing and analyzing quantum low density parity check (qLDPC) codes.
Project description
qLDPC
This package contains tools for constructing and analyzing quantum low density parity check (qLDPC) codes.
📦 Installation
This package requires Python>=3.10, and can be installed from PyPI with
pip install qldpc
To install a local version from source:
git clone git@github.com:Infleqtion/qLDPC.git
pip install -e qLDPC
You can also pip install -e 'qLDPC[dev]'
to additionally install some development tools.
🚀 Features
Notable features include:
ClassicalCode
: class for representing classical linear error-correcting codes over finite fields.- Various pre-defined classical code families.
- Communication with the GAP/GUAVA package for even more codes.
QuditCode
: general class for constructing Galois-qudit codes.CSSCode
: general class for constructing quantum CSS codes out of two mutually compatibleClassicalCode
s.CSSCode.get_logical_ops
: method to construct a complete basis of nontrivial logical operators for aCSSCode
.CSSCode.get_distance
: method to compute the code distance (i.e., the minimum weight of a nontrivial logical operator) of aCSSCode
. Includes options for computing the exact code distance by brute force, as well as an estimate (or upper bound) with the method of arXiv:2308.07915.- Includes options for applying local Hadamard transformations, which is useful for tailoring a
CSSCode
to biased noise (see arXiv:2202.01702). Options to apply more general Clifford code deformations are pending.
GBCode
: class for constructing generalized bicycle codes, as described in arXiv:1904.02703.QCCode
: class for constructing the quasi-cyclic codes in arXiv:2308.07915 and arXiv:2311.16980.- Includes methods to identify "toric layouts" of a
QCCode
, in which the code looks like a toric code augmented by some long-distance checks, as in discussed in arXiv:2308.07915.
- Includes methods to identify "toric layouts" of a
HGPCode
: class for constructing hypergraph product codes out of twoClassicalCode
s.LPCode
: class for constructing lifted product codes out of two protographs (i.e., matrices whose entries are elements of a group algebra). See arXiv:2012.04068 and arXiv:2202.01702.QTCode
: class for constructing quantum Tanner codes out of (a) two symmetric subsetsA
andB
of a groupG
, and (b) twoClassicalCode
s with block lengths|A|
and|B|
. See arXiv:2202.13641 and arXiv:2206.07571.- Random
QTCode
s can be constructed out of a choice of groupG
and oneClassicalCode
only.
- Random
abstract.py
: module for basic abstract algebra (groups, algebras, and representations thereof).- Various pre-defined groups (mostly borrowed from SymPy).
- Communication with the GAP computer algebra system and GroupNames.org for constructing even more groups.
objects.py
: module for constructing helper objects such as Cayley complexes and chain complexes, which are instrumental for the construction of various quantum codes.
🤔 Questions and issues
If this project gains interest and traction, I'll add a documentation webpage and material to help users get started quickly. I am also planning to write a paper that presents and explains this project. In the meantime, you can explore the documentation and explanations in the source code, as well as the examples
directory. Test files (such as qldpc/codes/quantum_test.py
) contain some examples of using the classes and methods described above.
If you have any questions, feedback, or requests, please open an issue on GitHub or email me at michael.perlin@infleqtion.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/Infleqtion/qLDPC}},
}
This may require adding \usepackage{url}
to your LaTeX file header. Alternatively, you can cite
Michael A. Perlin. qLDPC. https://github.com/Infleqtion/qLDPC, 2023.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file qldpc-0.0.13.tar.gz
.
File metadata
- Download URL: qldpc-0.0.13.tar.gz
- Upload date:
- Size: 69.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.11.8 Linux/6.8.0-zen1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 74a51161828847ff058637caf45da0e6d61468f705d605e35e16e7202bd6fcbb |
|
MD5 | 39c5f8968dfb0177d85a834427ad0380 |
|
BLAKE2b-256 | 7c50767988e9331de3716747c1a5408c4e82f8445b36eab62fb5647ae0c3e1ff |
Provenance
File details
Details for the file qldpc-0.0.13-py3-none-any.whl
.
File metadata
- Download URL: qldpc-0.0.13-py3-none-any.whl
- Upload date:
- Size: 80.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.11.8 Linux/6.8.0-zen1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 65f2598d11305dc6f93a1db0b22c7a708fd2e34abeb94b11472333d24236c0e4 |
|
MD5 | 421fabf339494e71d4c76e5be1225eda |
|
BLAKE2b-256 | d41ba36b443d9c73d16418d236f6437a0cae3cd8136519e92d8906b519fbb983 |