qLDPC 0.2.8__tar.gz → 0.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {qldpc-0.2.8 → qldpc-0.3.0}/PKG-INFO +22 -7
- {qldpc-0.2.8 → qldpc-0.3.0}/README.md +18 -4
- {qldpc-0.2.8 → qldpc-0.3.0}/pyproject.toml +5 -6
- qldpc-0.3.0/src/qldpc/abstract/__init__.py +67 -0
- qldpc-0.3.0/src/qldpc/abstract/groups.py +976 -0
- qldpc-0.3.0/src/qldpc/abstract/groups_test.py +297 -0
- qldpc-0.3.0/src/qldpc/abstract/linalg.py +183 -0
- qldpc-0.3.0/src/qldpc/abstract/linalg_test.py +122 -0
- qldpc-0.3.0/src/qldpc/abstract/rings.py +1116 -0
- qldpc-0.3.0/src/qldpc/abstract/rings_test.py +318 -0
- qldpc-0.3.0/src/qldpc/abstract/wedderburn_artin.py +851 -0
- qldpc-0.3.0/src/qldpc/abstract/wedderburn_artin_test.py +172 -0
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/cache_test.py +1 -1
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/circuits/__init__.py +34 -12
- qldpc-0.3.0/src/qldpc/circuits/benchmarking.py +439 -0
- qldpc-0.3.0/src/qldpc/circuits/benchmarking_test.py +152 -0
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/circuits/bookkeeping.py +32 -19
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/circuits/bookkeeping_test.py +11 -9
- qldpc-0.3.0/src/qldpc/circuits/common.py +144 -0
- qldpc-0.3.0/src/qldpc/circuits/common_test.py +105 -0
- qldpc-0.3.0/src/qldpc/circuits/encoding.py +310 -0
- qldpc-0.3.0/src/qldpc/circuits/encoding_test.py +147 -0
- qldpc-0.3.0/src/qldpc/circuits/memory/__init__.py +27 -0
- qldpc-0.3.0/src/qldpc/circuits/memory/alpha_syndrome.py +372 -0
- qldpc-0.3.0/src/qldpc/circuits/memory/alpha_syndrome_test.py +79 -0
- {qldpc-0.2.8/src/qldpc/circuits → qldpc-0.3.0/src/qldpc/circuits/memory}/memory.py +25 -20
- {qldpc-0.2.8/src/qldpc/circuits → qldpc-0.3.0/src/qldpc/circuits/memory}/syndrome_measurement.py +4 -3
- {qldpc-0.2.8/src/qldpc/circuits → qldpc-0.3.0/src/qldpc/circuits/memory}/syndrome_measurement_test.py +40 -11
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/circuits/noise_model_test.py +1 -1
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/circuits/transversal.py +32 -7
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/circuits/transversal_test.py +15 -10
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/codes/__init__.py +14 -2
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/codes/classical.py +62 -29
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/codes/classical_test.py +29 -0
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/codes/common.py +397 -222
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/codes/common_test.py +81 -40
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/codes/distance.py +41 -41
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/codes/distance_test.py +52 -29
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/codes/quantum.py +518 -184
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/codes/quantum_test.py +190 -35
- qldpc-0.3.0/src/qldpc/conftest.py +54 -0
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/decoders/__init__.py +8 -0
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/decoders/custom.py +240 -66
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/decoders/custom_test.py +100 -14
- qldpc-0.3.0/src/qldpc/decoders/dems.py +518 -0
- qldpc-0.3.0/src/qldpc/decoders/dems_test.py +282 -0
- qldpc-0.3.0/src/qldpc/decoders/retrieval.py +314 -0
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/decoders/retrieval_test.py +28 -3
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/decoders/sinter.py +209 -112
- qldpc-0.3.0/src/qldpc/decoders/sinter_test.py +250 -0
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/external/codes.py +68 -14
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/external/codes_test.py +11 -6
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/external/gap.py +19 -10
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/external/gap_test.py +7 -0
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/external/groups.py +266 -30
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/external/groups_test.py +9 -5
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/math.py +46 -24
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/math_test.py +39 -3
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/objects.py +43 -33
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/objects_test.py +8 -2
- qldpc-0.2.8/src/qldpc/abstract.py +0 -1508
- qldpc-0.2.8/src/qldpc/abstract_test.py +0 -399
- qldpc-0.2.8/src/qldpc/circuits/common.py +0 -261
- qldpc-0.2.8/src/qldpc/circuits/common_test.py +0 -127
- qldpc-0.2.8/src/qldpc/decoders/dems.py +0 -227
- qldpc-0.2.8/src/qldpc/decoders/dems_test.py +0 -123
- qldpc-0.2.8/src/qldpc/decoders/retrieval.py +0 -172
- qldpc-0.2.8/src/qldpc/decoders/sinter_test.py +0 -124
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/__init__.py +0 -0
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/cache.py +0 -0
- {qldpc-0.2.8/src/qldpc/circuits → qldpc-0.3.0/src/qldpc/circuits/memory}/memory_test.py +0 -0
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/circuits/noise_model.py +0 -0
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/external/__init__.py +0 -0
- {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/py.typed +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: qLDPC
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: Tools for constructing and analyzing quantum low density parity check (qLDPC) codes.
|
|
5
5
|
Keywords: quantum computing,quantum error correction,low density parity check codes,LDPC
|
|
6
6
|
Author: Michael A. Perlin
|
|
@@ -21,9 +21,10 @@ Requires-Dist: platformdirs>=4.0.0
|
|
|
21
21
|
Requires-Dist: pymatching>=2.1.0
|
|
22
22
|
Requires-Dist: pyperclip>=1.11.0
|
|
23
23
|
Requires-Dist: scipy>=1.14.1
|
|
24
|
-
Requires-Dist:
|
|
24
|
+
Requires-Dist: sinter>=1.16.0
|
|
25
|
+
Requires-Dist: stim>=1.16.0
|
|
25
26
|
Requires-Dist: sympy>=1.12
|
|
26
|
-
Requires-Dist: checks-superstaq>=0.5.
|
|
27
|
+
Requires-Dist: checks-superstaq>=0.5.62 ; extra == 'dev'
|
|
27
28
|
Requires-Dist: jupyter>=1.1.1 ; extra == 'dev'
|
|
28
29
|
Requires-Dist: python-lsp-server[all]>=1.14.0 ; extra == 'dev'
|
|
29
30
|
Requires-Dist: relay-bp[stim]==0.2.1 ; extra == 'dev'
|
|
@@ -43,7 +44,8 @@ In a nutshell, `qLDPC` provides methods to build a variety of built-in and custo
|
|
|
43
44
|
- constructing a canonical basis of logical Pauli operators,
|
|
44
45
|
- computing (or upper-bounding) code distance,
|
|
45
46
|
- computing logical error rates in a code-capacity model,
|
|
46
|
-
-
|
|
47
|
+
- computing the logical error rates and post-selection rates of state preparation circuits,
|
|
48
|
+
- constructing circuits of interest, such as memory experiments and logical encoding circuits,
|
|
47
49
|
- defining custom Pauli noise models,
|
|
48
50
|
- using a decoder of your choice for any of the above (or other, unlisted) tasks.
|
|
49
51
|
|
|
@@ -67,17 +69,24 @@ You can also `pip install -e 'qLDPC[dev]'` to additionally install some developm
|
|
|
67
69
|
|
|
68
70
|
### GAP
|
|
69
71
|
|
|
70
|
-
Some features in `qLDPC` require an installation of the [GAP](https://www.gap-system.org) computer algebra system. If you (a) use linux or macOS, and (b) use a `conda` to manage your python environment, then you can obtain GAP by running
|
|
72
|
+
Some features in `qLDPC` require an installation of the [GAP](https://www.gap-system.org) computer algebra system. If you (a) use linux or macOS, and (b) use a `conda` to manage your python environment, then you can obtain GAP by running
|
|
73
|
+
```
|
|
74
|
+
conda install -c conda-forge gap
|
|
75
|
+
```
|
|
76
|
+
or `conda install -c conda-forge gap-core`. Installations without `conda` should also work, as long as `gap` is a recognized command in the command line. Unfortunately, [GAP](https://www.gap-system.org) integration is clunky in Windows because I have not figured out how to call [GAP](https://www.gap-system.org) from the Windows command prompt. If you figure this out, [please let me know](https://github.com/qLDPCOrg/qLDPC/issues/294)!
|
|
71
77
|
|
|
72
78
|
### macOS
|
|
73
79
|
|
|
74
|
-
If you use macOS you may need to install `cvxpy` manually by following the instructions [here](https://www.cvxpy.org/install) before installing `qLDPC`. If you use `conda` to manage your python environment, you can obtain `cvxpy` by running
|
|
80
|
+
If you use macOS you may need to install `cvxpy` manually by following the instructions [here](https://www.cvxpy.org/install) before installing `qLDPC`. If you use `conda` to manage your python environment, you can obtain `cvxpy` by running
|
|
81
|
+
```
|
|
82
|
+
conda install -c conda-forge cvxpy
|
|
83
|
+
```
|
|
75
84
|
|
|
76
85
|
## 🚀 Features
|
|
77
86
|
|
|
78
87
|
Notable features include:
|
|
79
88
|
- `ClassicalCode`: class for representing classical linear error-correcting codes over finite fields.
|
|
80
|
-
- Various pre-defined classical code families.
|
|
89
|
+
- Various pre-defined classical code families, including `RepetitionCode`, `HammingCode`, `SimplexCode`, `ReedMullerCode`, `ReedSolomonCode`, `TannerCode`, and more.
|
|
81
90
|
- Communication with the [GAP](https://www.gap-system.org)/[`GUAVA`](https://www.gap-system.org/Packages/guava.html) package for [even more codes](https://docs.gap-system.org/pkg/guava/doc/chap5.html).
|
|
82
91
|
- `QuditCode`: class for constructing [Galois-qudit codes](https://errorcorrectionzoo.org/c/galois_into_galois), including both [stabilizer](https://errorcorrectionzoo.org/c/galois_stabilizer) and [subsystem](https://errorcorrectionzoo.org/c/oecc) codes.
|
|
83
92
|
- `QuditCode.get_logical_ops`: method to construct a complete basis of nontrivial logical Pauli operators for a `QuditCode`.
|
|
@@ -87,8 +96,10 @@ Notable features include:
|
|
|
87
96
|
- Common codes such as the `SteaneCode` and `TetrahedralCode`.
|
|
88
97
|
- Common code families such as the `SurfaceCode`, `ToricCode`, `BaconShorCode`, and `QuantumHammingCode`.
|
|
89
98
|
- `TBCode`: [two-block quantum codes](https://errorcorrectionzoo.org/c/two_block_quantum).
|
|
99
|
+
- `QCCode`: quasi-cyclic two-block codes (also known as [multivariate bicycle codes](https://arxiv.org/abs/2406.19151), generalizing the `BBCode` below).
|
|
90
100
|
- `BBCode`: [bivariate bicycle codes](https://errorcorrectionzoo.org/c/quantum_quasi_cyclic), as in [arXiv:2308.07915](https://arxiv.org/abs/2308.07915) and [arXiv:2311.16980](https://arxiv.org/abs/2311.16980). See also [`examples/bivariate_bicycle_codes.ipynb`](https://github.com/qLDPCOrg/qLDPC/blob/main/examples/bivariate_bicycle_codes.ipynb).
|
|
91
101
|
- `HGPCode`: [hypergraph product codes](https://errorcorrectionzoo.org/c/hypergraph_product), first introduced in [arXiv:0903.0566](https://arxiv.org/abs/0903.0566).
|
|
102
|
+
- `CHGPCode` / `CRCode`: cyclic hypergraph product and repeated cyclic hypergraph product codes, as in [arXiv:2511.09683](https://arxiv.org/abs/2511.09683).
|
|
92
103
|
- `SHPCode`: [subsystem hypergraph product codes](https://errorcorrectionzoo.org/c/subsystem_quantum_parity), as in [arXiv:2002.06257](https://arxiv.org/abs/2002.06257).
|
|
93
104
|
- `SHYPSCode`: [subsystem hypergraph product simplex codes](https://errorcorrectionzoo.org/c/shyps), as in [arXiv:2502.07150](https://arxiv.org/abs/2502.07150).
|
|
94
105
|
- `LPCode`: [lifted product codes](https://errorcorrectionzoo.org/c/lifted_product), as in [arXiv:2012.04068](https://arxiv.org/abs/2012.04068) and [arXiv:2202.01702](https://arxiv.org/abs/2202.01702).
|
|
@@ -97,8 +108,12 @@ Notable features include:
|
|
|
97
108
|
- `qldpc.decoders`: module for decoding code and circuit errors.
|
|
98
109
|
- BP-OSD, BP-LSD, and belief-find (via [`ldpc`](https://github.com/quantumgizmos/ldpc)), Relay-BP (via [`relay-bp`](https://pypi.org/project/relay-bp)), minimum-weight perfect matching (via [`pymatching`](https://github.com/oscarhiggott/PyMatching)), lookup-table decoding, and others. Includes an interface for using custom decoders.
|
|
99
110
|
- `SinterDecoder`: class to construct circuit-level decoders that are usable by [`sinter`](https://pypi.org/project/sinter).
|
|
111
|
+
- `SlidingWindowDecoder`: the overlapping-recovery sliding-window decoder of [arXiv:quant-ph/0110143](https://arxiv.org/abs/quant-ph/0110143) and [arXiv:2209.08552](https://arxiv.org/pdf/2209.08552).
|
|
112
|
+
- `SequentialWindowDecoder`: a generalization of the `SlidingWindowDecoder` for arbitrary decoding and commit regions.
|
|
113
|
+
- `DetectorErrorModelArrays`: representation of a `stim.DetectorErrorModel` with `scipy.sparse` and `numpy` arrays (`detector_flip_matrix`, `observable_flip_matrix`, `error_probs`).
|
|
100
114
|
- `qldpc.circuits`: module for [`stim`](https://github.com/quantumlib/Stim) circuits and circuit utilities, including:
|
|
101
115
|
- `get_memory_experiment`: circuit to test the performance of a code as a quantum memory (using various pre-built syndrome measurement strategies), appropriately annotated with detectors and observables.
|
|
116
|
+
- `get_state_prep_diagnostic_circuit`, `get_state_prep_diagnostic_tasks`, `get_logical_error_and_discard_rate`: helper methods for computing the logical error rates and post-selection rates of state preparation circuits.
|
|
102
117
|
- `NoiseModel`: class for constructing expressive Pauli noise models, which map noiseless circuits to noisy circuits. Built-in subclasses include a single-parameter `DepolarizingNoiseModel` and a superconducting-inspired `SI1000NoiseModel`.
|
|
103
118
|
- `get_encoding_circuit`: circuit to encode physical states of qubits into logical states of a code, for example to prepare a logical all-|0> state. (Warning: current encoding circuits are not fault-tolerant. The construction of fault-tolerant encoding circuits is an [open issue](https://github.com/qLDPCOrg/qLDPC/issues/327).)
|
|
104
119
|
- `get_transversal_ops`: logical tableaus and physical circuits for the SWAP-transversal logical Clifford gates of a code, constructed via the code automorphism method of [arXiv:2409.18175](https://arxiv.org/abs/2409.18175). (Warning: exponential complexity.)
|
|
@@ -7,7 +7,8 @@ In a nutshell, `qLDPC` provides methods to build a variety of built-in and custo
|
|
|
7
7
|
- constructing a canonical basis of logical Pauli operators,
|
|
8
8
|
- computing (or upper-bounding) code distance,
|
|
9
9
|
- computing logical error rates in a code-capacity model,
|
|
10
|
-
-
|
|
10
|
+
- computing the logical error rates and post-selection rates of state preparation circuits,
|
|
11
|
+
- constructing circuits of interest, such as memory experiments and logical encoding circuits,
|
|
11
12
|
- defining custom Pauli noise models,
|
|
12
13
|
- using a decoder of your choice for any of the above (or other, unlisted) tasks.
|
|
13
14
|
|
|
@@ -31,17 +32,24 @@ You can also `pip install -e 'qLDPC[dev]'` to additionally install some developm
|
|
|
31
32
|
|
|
32
33
|
### GAP
|
|
33
34
|
|
|
34
|
-
Some features in `qLDPC` require an installation of the [GAP](https://www.gap-system.org) computer algebra system. If you (a) use linux or macOS, and (b) use a `conda` to manage your python environment, then you can obtain GAP by running
|
|
35
|
+
Some features in `qLDPC` require an installation of the [GAP](https://www.gap-system.org) computer algebra system. If you (a) use linux or macOS, and (b) use a `conda` to manage your python environment, then you can obtain GAP by running
|
|
36
|
+
```
|
|
37
|
+
conda install -c conda-forge gap
|
|
38
|
+
```
|
|
39
|
+
or `conda install -c conda-forge gap-core`. Installations without `conda` should also work, as long as `gap` is a recognized command in the command line. Unfortunately, [GAP](https://www.gap-system.org) integration is clunky in Windows because I have not figured out how to call [GAP](https://www.gap-system.org) from the Windows command prompt. If you figure this out, [please let me know](https://github.com/qLDPCOrg/qLDPC/issues/294)!
|
|
35
40
|
|
|
36
41
|
### macOS
|
|
37
42
|
|
|
38
|
-
If you use macOS you may need to install `cvxpy` manually by following the instructions [here](https://www.cvxpy.org/install) before installing `qLDPC`. If you use `conda` to manage your python environment, you can obtain `cvxpy` by running
|
|
43
|
+
If you use macOS you may need to install `cvxpy` manually by following the instructions [here](https://www.cvxpy.org/install) before installing `qLDPC`. If you use `conda` to manage your python environment, you can obtain `cvxpy` by running
|
|
44
|
+
```
|
|
45
|
+
conda install -c conda-forge cvxpy
|
|
46
|
+
```
|
|
39
47
|
|
|
40
48
|
## 🚀 Features
|
|
41
49
|
|
|
42
50
|
Notable features include:
|
|
43
51
|
- `ClassicalCode`: class for representing classical linear error-correcting codes over finite fields.
|
|
44
|
-
- Various pre-defined classical code families.
|
|
52
|
+
- Various pre-defined classical code families, including `RepetitionCode`, `HammingCode`, `SimplexCode`, `ReedMullerCode`, `ReedSolomonCode`, `TannerCode`, and more.
|
|
45
53
|
- Communication with the [GAP](https://www.gap-system.org)/[`GUAVA`](https://www.gap-system.org/Packages/guava.html) package for [even more codes](https://docs.gap-system.org/pkg/guava/doc/chap5.html).
|
|
46
54
|
- `QuditCode`: class for constructing [Galois-qudit codes](https://errorcorrectionzoo.org/c/galois_into_galois), including both [stabilizer](https://errorcorrectionzoo.org/c/galois_stabilizer) and [subsystem](https://errorcorrectionzoo.org/c/oecc) codes.
|
|
47
55
|
- `QuditCode.get_logical_ops`: method to construct a complete basis of nontrivial logical Pauli operators for a `QuditCode`.
|
|
@@ -51,8 +59,10 @@ Notable features include:
|
|
|
51
59
|
- Common codes such as the `SteaneCode` and `TetrahedralCode`.
|
|
52
60
|
- Common code families such as the `SurfaceCode`, `ToricCode`, `BaconShorCode`, and `QuantumHammingCode`.
|
|
53
61
|
- `TBCode`: [two-block quantum codes](https://errorcorrectionzoo.org/c/two_block_quantum).
|
|
62
|
+
- `QCCode`: quasi-cyclic two-block codes (also known as [multivariate bicycle codes](https://arxiv.org/abs/2406.19151), generalizing the `BBCode` below).
|
|
54
63
|
- `BBCode`: [bivariate bicycle codes](https://errorcorrectionzoo.org/c/quantum_quasi_cyclic), as in [arXiv:2308.07915](https://arxiv.org/abs/2308.07915) and [arXiv:2311.16980](https://arxiv.org/abs/2311.16980). See also [`examples/bivariate_bicycle_codes.ipynb`](https://github.com/qLDPCOrg/qLDPC/blob/main/examples/bivariate_bicycle_codes.ipynb).
|
|
55
64
|
- `HGPCode`: [hypergraph product codes](https://errorcorrectionzoo.org/c/hypergraph_product), first introduced in [arXiv:0903.0566](https://arxiv.org/abs/0903.0566).
|
|
65
|
+
- `CHGPCode` / `CRCode`: cyclic hypergraph product and repeated cyclic hypergraph product codes, as in [arXiv:2511.09683](https://arxiv.org/abs/2511.09683).
|
|
56
66
|
- `SHPCode`: [subsystem hypergraph product codes](https://errorcorrectionzoo.org/c/subsystem_quantum_parity), as in [arXiv:2002.06257](https://arxiv.org/abs/2002.06257).
|
|
57
67
|
- `SHYPSCode`: [subsystem hypergraph product simplex codes](https://errorcorrectionzoo.org/c/shyps), as in [arXiv:2502.07150](https://arxiv.org/abs/2502.07150).
|
|
58
68
|
- `LPCode`: [lifted product codes](https://errorcorrectionzoo.org/c/lifted_product), as in [arXiv:2012.04068](https://arxiv.org/abs/2012.04068) and [arXiv:2202.01702](https://arxiv.org/abs/2202.01702).
|
|
@@ -61,8 +71,12 @@ Notable features include:
|
|
|
61
71
|
- `qldpc.decoders`: module for decoding code and circuit errors.
|
|
62
72
|
- BP-OSD, BP-LSD, and belief-find (via [`ldpc`](https://github.com/quantumgizmos/ldpc)), Relay-BP (via [`relay-bp`](https://pypi.org/project/relay-bp)), minimum-weight perfect matching (via [`pymatching`](https://github.com/oscarhiggott/PyMatching)), lookup-table decoding, and others. Includes an interface for using custom decoders.
|
|
63
73
|
- `SinterDecoder`: class to construct circuit-level decoders that are usable by [`sinter`](https://pypi.org/project/sinter).
|
|
74
|
+
- `SlidingWindowDecoder`: the overlapping-recovery sliding-window decoder of [arXiv:quant-ph/0110143](https://arxiv.org/abs/quant-ph/0110143) and [arXiv:2209.08552](https://arxiv.org/pdf/2209.08552).
|
|
75
|
+
- `SequentialWindowDecoder`: a generalization of the `SlidingWindowDecoder` for arbitrary decoding and commit regions.
|
|
76
|
+
- `DetectorErrorModelArrays`: representation of a `stim.DetectorErrorModel` with `scipy.sparse` and `numpy` arrays (`detector_flip_matrix`, `observable_flip_matrix`, `error_probs`).
|
|
64
77
|
- `qldpc.circuits`: module for [`stim`](https://github.com/quantumlib/Stim) circuits and circuit utilities, including:
|
|
65
78
|
- `get_memory_experiment`: circuit to test the performance of a code as a quantum memory (using various pre-built syndrome measurement strategies), appropriately annotated with detectors and observables.
|
|
79
|
+
- `get_state_prep_diagnostic_circuit`, `get_state_prep_diagnostic_tasks`, `get_logical_error_and_discard_rate`: helper methods for computing the logical error rates and post-selection rates of state preparation circuits.
|
|
66
80
|
- `NoiseModel`: class for constructing expressive Pauli noise models, which map noiseless circuits to noisy circuits. Built-in subclasses include a single-parameter `DepolarizingNoiseModel` and a superconducting-inspired `SI1000NoiseModel`.
|
|
67
81
|
- `get_encoding_circuit`: circuit to encode physical states of qubits into logical states of a code, for example to prepare a logical all-|0> state. (Warning: current encoding circuits are not fault-tolerant. The construction of fault-tolerant encoding circuits is an [open issue](https://github.com/qLDPCOrg/qLDPC/issues/327).)
|
|
68
82
|
- `get_transversal_ops`: logical tableaus and physical circuits for the SWAP-transversal logical Clifford gates of a code, constructed via the code automorphism method of [arXiv:2409.18175](https://arxiv.org/abs/2409.18175). (Warning: exponential complexity.)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "qLDPC"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.3.0"
|
|
4
4
|
description = "Tools for constructing and analyzing quantum low density parity check (qLDPC) codes."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "Apache-2.0"
|
|
@@ -31,20 +31,19 @@ dependencies = [
|
|
|
31
31
|
"pymatching>=2.1.0",
|
|
32
32
|
"pyperclip>=1.11.0",
|
|
33
33
|
"scipy>=1.14.1",
|
|
34
|
-
"
|
|
34
|
+
"sinter>=1.16.0",
|
|
35
|
+
"stim>=1.16.0",
|
|
35
36
|
"sympy>=1.12",
|
|
36
37
|
]
|
|
37
38
|
|
|
38
39
|
[project.optional-dependencies]
|
|
39
40
|
dev = [
|
|
40
|
-
"checks-superstaq>=0.5.
|
|
41
|
+
"checks-superstaq>=0.5.62",
|
|
41
42
|
"jupyter>=1.1.1",
|
|
42
43
|
"python-lsp-server[all]>=1.14.0",
|
|
43
44
|
"relay-bp[stim]==0.2.1",
|
|
44
45
|
]
|
|
45
|
-
relay-bp = [
|
|
46
|
-
"relay-bp[stim]==0.2.1",
|
|
47
|
-
]
|
|
46
|
+
relay-bp = ["relay-bp[stim]==0.2.1"]
|
|
48
47
|
|
|
49
48
|
[project.urls]
|
|
50
49
|
Repository = "https://github.com/qLDPCOrg/qLDPC"
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
from .groups import (
|
|
2
|
+
GF2,
|
|
3
|
+
PSL,
|
|
4
|
+
SL,
|
|
5
|
+
AbelianGroup,
|
|
6
|
+
AlternatingGroup,
|
|
7
|
+
CyclicGroup,
|
|
8
|
+
DihedralGroup,
|
|
9
|
+
Group,
|
|
10
|
+
GroupMember,
|
|
11
|
+
ProjectiveSpecialLinearGroup,
|
|
12
|
+
QuaternionGroup,
|
|
13
|
+
SmallGroup,
|
|
14
|
+
SpecialLinearGroup,
|
|
15
|
+
SymmetricGroup,
|
|
16
|
+
TrivialGroup,
|
|
17
|
+
get_coefficient_and_exponents,
|
|
18
|
+
resolve_field,
|
|
19
|
+
)
|
|
20
|
+
from .linalg import (
|
|
21
|
+
block_diag,
|
|
22
|
+
get_howell_dual,
|
|
23
|
+
kron,
|
|
24
|
+
matmul,
|
|
25
|
+
)
|
|
26
|
+
from .rings import (
|
|
27
|
+
Element,
|
|
28
|
+
GroupRing,
|
|
29
|
+
Protograph,
|
|
30
|
+
RingArray,
|
|
31
|
+
RingMember,
|
|
32
|
+
)
|
|
33
|
+
from .wedderburn_artin import (
|
|
34
|
+
WedderburnArtinComponentTransformer,
|
|
35
|
+
WedderburnArtinTransformer,
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
__all__ = [
|
|
39
|
+
"GF2",
|
|
40
|
+
"PSL",
|
|
41
|
+
"SL",
|
|
42
|
+
"AbelianGroup",
|
|
43
|
+
"AlternatingGroup",
|
|
44
|
+
"CyclicGroup",
|
|
45
|
+
"DihedralGroup",
|
|
46
|
+
"Group",
|
|
47
|
+
"GroupMember",
|
|
48
|
+
"ProjectiveSpecialLinearGroup",
|
|
49
|
+
"QuaternionGroup",
|
|
50
|
+
"SmallGroup",
|
|
51
|
+
"SpecialLinearGroup",
|
|
52
|
+
"SymmetricGroup",
|
|
53
|
+
"TrivialGroup",
|
|
54
|
+
"get_coefficient_and_exponents",
|
|
55
|
+
"resolve_field",
|
|
56
|
+
"block_diag",
|
|
57
|
+
"get_howell_dual",
|
|
58
|
+
"kron",
|
|
59
|
+
"matmul",
|
|
60
|
+
"Element",
|
|
61
|
+
"GroupRing",
|
|
62
|
+
"Protograph",
|
|
63
|
+
"RingArray",
|
|
64
|
+
"RingMember",
|
|
65
|
+
"WedderburnArtinComponentTransformer",
|
|
66
|
+
"WedderburnArtinTransformer",
|
|
67
|
+
]
|