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.
Files changed (74) hide show
  1. {qldpc-0.2.8 → qldpc-0.3.0}/PKG-INFO +22 -7
  2. {qldpc-0.2.8 → qldpc-0.3.0}/README.md +18 -4
  3. {qldpc-0.2.8 → qldpc-0.3.0}/pyproject.toml +5 -6
  4. qldpc-0.3.0/src/qldpc/abstract/__init__.py +67 -0
  5. qldpc-0.3.0/src/qldpc/abstract/groups.py +976 -0
  6. qldpc-0.3.0/src/qldpc/abstract/groups_test.py +297 -0
  7. qldpc-0.3.0/src/qldpc/abstract/linalg.py +183 -0
  8. qldpc-0.3.0/src/qldpc/abstract/linalg_test.py +122 -0
  9. qldpc-0.3.0/src/qldpc/abstract/rings.py +1116 -0
  10. qldpc-0.3.0/src/qldpc/abstract/rings_test.py +318 -0
  11. qldpc-0.3.0/src/qldpc/abstract/wedderburn_artin.py +851 -0
  12. qldpc-0.3.0/src/qldpc/abstract/wedderburn_artin_test.py +172 -0
  13. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/cache_test.py +1 -1
  14. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/circuits/__init__.py +34 -12
  15. qldpc-0.3.0/src/qldpc/circuits/benchmarking.py +439 -0
  16. qldpc-0.3.0/src/qldpc/circuits/benchmarking_test.py +152 -0
  17. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/circuits/bookkeeping.py +32 -19
  18. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/circuits/bookkeeping_test.py +11 -9
  19. qldpc-0.3.0/src/qldpc/circuits/common.py +144 -0
  20. qldpc-0.3.0/src/qldpc/circuits/common_test.py +105 -0
  21. qldpc-0.3.0/src/qldpc/circuits/encoding.py +310 -0
  22. qldpc-0.3.0/src/qldpc/circuits/encoding_test.py +147 -0
  23. qldpc-0.3.0/src/qldpc/circuits/memory/__init__.py +27 -0
  24. qldpc-0.3.0/src/qldpc/circuits/memory/alpha_syndrome.py +372 -0
  25. qldpc-0.3.0/src/qldpc/circuits/memory/alpha_syndrome_test.py +79 -0
  26. {qldpc-0.2.8/src/qldpc/circuits → qldpc-0.3.0/src/qldpc/circuits/memory}/memory.py +25 -20
  27. {qldpc-0.2.8/src/qldpc/circuits → qldpc-0.3.0/src/qldpc/circuits/memory}/syndrome_measurement.py +4 -3
  28. {qldpc-0.2.8/src/qldpc/circuits → qldpc-0.3.0/src/qldpc/circuits/memory}/syndrome_measurement_test.py +40 -11
  29. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/circuits/noise_model_test.py +1 -1
  30. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/circuits/transversal.py +32 -7
  31. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/circuits/transversal_test.py +15 -10
  32. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/codes/__init__.py +14 -2
  33. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/codes/classical.py +62 -29
  34. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/codes/classical_test.py +29 -0
  35. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/codes/common.py +397 -222
  36. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/codes/common_test.py +81 -40
  37. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/codes/distance.py +41 -41
  38. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/codes/distance_test.py +52 -29
  39. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/codes/quantum.py +518 -184
  40. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/codes/quantum_test.py +190 -35
  41. qldpc-0.3.0/src/qldpc/conftest.py +54 -0
  42. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/decoders/__init__.py +8 -0
  43. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/decoders/custom.py +240 -66
  44. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/decoders/custom_test.py +100 -14
  45. qldpc-0.3.0/src/qldpc/decoders/dems.py +518 -0
  46. qldpc-0.3.0/src/qldpc/decoders/dems_test.py +282 -0
  47. qldpc-0.3.0/src/qldpc/decoders/retrieval.py +314 -0
  48. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/decoders/retrieval_test.py +28 -3
  49. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/decoders/sinter.py +209 -112
  50. qldpc-0.3.0/src/qldpc/decoders/sinter_test.py +250 -0
  51. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/external/codes.py +68 -14
  52. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/external/codes_test.py +11 -6
  53. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/external/gap.py +19 -10
  54. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/external/gap_test.py +7 -0
  55. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/external/groups.py +266 -30
  56. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/external/groups_test.py +9 -5
  57. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/math.py +46 -24
  58. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/math_test.py +39 -3
  59. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/objects.py +43 -33
  60. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/objects_test.py +8 -2
  61. qldpc-0.2.8/src/qldpc/abstract.py +0 -1508
  62. qldpc-0.2.8/src/qldpc/abstract_test.py +0 -399
  63. qldpc-0.2.8/src/qldpc/circuits/common.py +0 -261
  64. qldpc-0.2.8/src/qldpc/circuits/common_test.py +0 -127
  65. qldpc-0.2.8/src/qldpc/decoders/dems.py +0 -227
  66. qldpc-0.2.8/src/qldpc/decoders/dems_test.py +0 -123
  67. qldpc-0.2.8/src/qldpc/decoders/retrieval.py +0 -172
  68. qldpc-0.2.8/src/qldpc/decoders/sinter_test.py +0 -124
  69. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/__init__.py +0 -0
  70. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/cache.py +0 -0
  71. {qldpc-0.2.8/src/qldpc/circuits → qldpc-0.3.0/src/qldpc/circuits/memory}/memory_test.py +0 -0
  72. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/circuits/noise_model.py +0 -0
  73. {qldpc-0.2.8 → qldpc-0.3.0}/src/qldpc/external/__init__.py +0 -0
  74. {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.2.8
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: stim>=1.16.dev1768963940
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.45 ; extra == 'dev'
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
- - constructing various circuits of interest, such as a quantum memory experiment for obtaining circuit-level logical error rates,
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 `conda install -c conda-forge gap` (or `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)!
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 `conda install -c conda-forge cvxpy`.
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
- - constructing various circuits of interest, such as a quantum memory experiment for obtaining circuit-level logical error rates,
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 `conda install -c conda-forge gap` (or `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
+ 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 `conda install -c conda-forge cvxpy`.
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.2.8"
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
- "stim>=1.16.dev1768963940",
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.45",
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
+ ]