Skip to content

Commit 2a1d1d2

Browse files
committed
docs: add DOI and clean PyPI README links
1 parent 625a387 commit 2a1d1d2

1 file changed

Lines changed: 29 additions & 130 deletions

File tree

PYPI_README.md

Lines changed: 29 additions & 130 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22

33
**Source-available Rust/Python quantum error correction decoding platform.**
44

5-
QECTOR Decoder v3 provides a Python package backed by a native Rust extension for quantum error correction research and validation workflows. It includes PyMatching-compatible MWPM validation, Union-Find decoding, belief-matching experiments, BP-OSD/qLDPC workflows, batch decoding, and optional GPU backend checks where the release build and target machine support them.
5+
QECTOR Decoder v3 provides a Python package backed by a native Rust extension for quantum error correction research and validation workflows.
66

77
Website: https://www.qector.store
8-
Repository: https://github.com/GuillaumeLessard/qector-decoder
98
PyPI: https://pypi.org/project/qector-decoder-v3/
9+
DOI: https://doi.org/10.5281/zenodo.20825980
10+
Repository: https://github.com/GuillaumeLessard/qector-decoder
1011
Commercial licensing: https://www.qector.store
1112

1213
---
@@ -25,50 +26,51 @@ Verify the install:
2526
python -c "from qector_decoder_v3 import UnionFindDecoder, BlossomDecoder; print('QECTOR OK')"
2627
```
2728

28-
Optional research and validation extras:
29+
Optional extras:
2930

3031
```bash
31-
# Stim, Sinter, PyMatching, LDPC and belief-matching ecosystem
3232
pip install "qector-decoder-v3[stim]"
33-
34-
# Benchmark and plotting harness
3533
pip install "qector-decoder-v3[bench]"
36-
37-
# Full validation environment
3834
pip install "qector-decoder-v3[all]"
3935
```
4036

4137
---
4238

43-
## Supported public wheels
44-
45-
QECTOR v0.5.x public releases target standard CPython wheels for:
39+
## Windows note
4640

47-
| Platform | Wheel status |
48-
|---|---|
49-
| Linux x86_64 | Published |
50-
| Windows x64 | Published |
51-
| macOS arm64 / Apple Silicon | Published |
52-
| macOS Intel x86_64 | Not published in v0.5.x public CI |
53-
| CPython free-threaded builds such as `cp313t` | Not published in v0.5.x |
41+
Use the `pip` bound to your active standard Python environment. Do not force `py -m pip` unless you have checked which interpreter the Windows launcher selected.
5442

55-
Supported Python classifiers are standard CPython 3.9 to 3.13.
43+
On some systems, `py` can select a free-threaded interpreter such as `python3.13t.exe`. QECTOR v0.5.x publishes standard CPython wheels, not `cp313t` free-threaded wheels. If pip cannot find a matching wheel, it may fall back to a source build and fail because the public repository does not ship the proprietary Rust core.
5644

57-
Windows note: do not force `py -m pip` unless you have checked which interpreter the Windows launcher selected. If `py` selects a free-threaded interpreter such as `python3.13t.exe`, pip may fall back to a source build and fail because the public repository does not ship the proprietary Rust core. Use the standard active Python environment instead:
45+
Working Windows command:
5846

5947
```powershell
6048
pip install qector-decoder-v3
6149
python -c "from qector_decoder_v3 import UnionFindDecoder, BlossomDecoder; print('QECTOR OK')"
6250
```
6351

64-
Check your Python launcher targets with:
52+
Check launcher targets with:
6553

6654
```powershell
6755
py -0p
6856
```
6957

7058
---
7159

60+
## Supported public wheels
61+
62+
| Platform | Wheel status |
63+
|---|---|
64+
| Linux x86_64 | Published |
65+
| Windows x64 | Published |
66+
| macOS arm64 / Apple Silicon | Published |
67+
| macOS Intel x86_64 | Not published in v0.5.x public CI |
68+
| CPython free-threaded builds such as `cp313t` | Not published in v0.5.x |
69+
70+
Supported Python classifiers are standard CPython 3.9 to 3.13.
71+
72+
---
73+
7274
## Quick start
7375

7476
```python
@@ -79,8 +81,8 @@ check_to_qubits = [[0, 1], [1, 2], [2, 3], [3, 4]]
7981
n_qubits = 5
8082
syndrome = np.array([0, 1, 0, 0], dtype=np.uint8)
8183

82-
fast = UnionFindDecoder(check_to_qubits, n_qubits)
83-
print(fast.decode(syndrome))
84+
uf = UnionFindDecoder(check_to_qubits, n_qubits)
85+
print(uf.decode(syndrome))
8486

8587
mwpm = BlossomDecoder(check_to_qubits, n_qubits)
8688
print(mwpm.decode(syndrome))
@@ -90,121 +92,18 @@ Batch decoding:
9092

9193
```python
9294
import numpy as np
93-
from qector_decoder_v3 import BatchDecoder, CUDABatchDecoder
95+
from qector_decoder_v3 import BatchDecoder
9496

9597
checks = [[0, 1], [1, 2], [2, 3], [3, 4]]
9698
syndromes = np.random.randint(0, 2, size=(4096, 4), dtype=np.uint8)
9799

98100
cpu = BatchDecoder(checks, n_qubits=5)
99101
corrections = cpu.parallel_batch_decode(syndromes)
100-
101-
if CUDABatchDecoder.is_available():
102-
gpu = CUDABatchDecoder(checks, n_qubits=5)
103-
corrections = gpu.batch_decode(syndromes)
102+
print(corrections.shape)
104103
```
105104

106-
Stim workflow:
107-
108-
```python
109-
import stim
110-
from qector_decoder_v3 import BlossomDecoder
111-
from qector_decoder_v3.stim_compat import stim_circuit_to_check_matrix
112-
113-
circuit = stim.Circuit.generated(
114-
"surface_code:rotated_memory_z",
115-
distance=5,
116-
rounds=5,
117-
after_clifford_depolarization=0.005,
118-
)
119-
120-
checks, n_qubits = stim_circuit_to_check_matrix(circuit)
121-
decoder = BlossomDecoder(checks, n_qubits)
122-
```
123-
124-
---
125-
126-
## Included decoder families
127-
128-
| Module | Primary use | Status |
129-
|---|---|---|
130-
| `UnionFindDecoder` | Fast approximate decoding | Stable public API |
131-
| `FastUnionFindDecoder` | Optimized Union-Find path | Stable public API |
132-
| `BlossomDecoder` | Exact MWPM / PyMatching-parity validation | Stable public API |
133-
| `SparseBlossomDecoder` | Faster near-optimal matching | Experimental |
134-
| `BeliefMatching` | Correlated-noise accuracy experiments | Research/accuracy mode |
135-
| `BpOsdDecoder` | LDPC and qLDPC workflows | Experimental |
136-
| `BatchDecoder` / `CPUBatchDecoder` | CPU Monte Carlo sweeps | Stable public API |
137-
| `CUDABatchDecoder` | CUDA batch decoding | Runtime/build dependent |
138-
| `OpenCLBatchDecoder` | OpenCL batch decoding | Runtime/build dependent |
139-
| `stim_compat` | Stim circuit and DEM conversion | Stable utility |
140-
| `sinter_compat` | Sinter custom decoder integration | Stable utility |
141-
| `rest_api` | Local decoding service | Local/partner review only |
142-
143-
---
144-
145-
## Evidence-backed positioning
146-
147-
QECTOR Decoder v3 is positioned as a source-available QEC R&D platform, not as a blanket replacement for every mature decoder in every workload.
148-
149-
The repository includes public benchmark artifacts and reproduction scripts for:
150-
151-
- PyMatching-parity logical-error-rate checks on selected surface-code workloads
152-
- belief-matching accuracy experiments on selected workloads
153-
- GPU bit-identity checks against CPU output on a tested NVIDIA machine
154-
- native memory profiling for selected decoder paths
155-
156-
Important boundaries:
157-
158-
- PyMatching remains faster for standard MWPM latency in the checked-in comparison artifacts.
159-
- Belief-matching is an accuracy/research mode and is much slower in the provided experiments.
160-
- GPU availability and performance depend on wheel build features, drivers, hardware, and runtime checks.
161-
- OpenCL support must be confirmed on the target machine or built under the appropriate licensed/custom configuration.
162-
- REST/API surfaces are for local experiments or controlled review unless separately hardened.
163-
164-
Full methodology, reproducibility notes, and benchmark artifacts are in the GitHub repository:
165-
166-
https://github.com/GuillaumeLessard/qector-decoder
167-
168105
---
169106

170-
## GPU availability check
171-
172-
```python
173-
from qector_decoder_v3 import CUDABatchDecoder, OpenCLBatchDecoder
107+
## License
174108

175-
print("CUDA:", CUDABatchDecoder.is_available())
176-
print("OpenCL:", OpenCLBatchDecoder.is_available())
177-
```
178-
179-
Do this before making any hardware-specific performance claim.
180-
181-
---
182-
183-
## Licensing
184-
185-
QECTOR Decoder v3 is source-available.
186-
187-
Personal, academic, educational and non-commercial research use is allowed under the repository license. Company use, funded institutional work, SaaS, hosted API deployment, OEM integration, redistribution, paid consulting, or commercial benchmarking requires a commercial license.
188-
189-
Website and commercial licensing:
190-
191-
https://www.qector.store
192-
193-
Contact:
194-
195-
admin@qector.store
196-
197-
---
198-
199-
## Citation
200-
201-
```bibtex
202-
@software{lessard2026qector,
203-
author = {Guillaume Lessard},
204-
title = {{QECTOR Decoder v3}: Rust/Python Quantum Error Correction Decoding Platform},
205-
year = {2026},
206-
version = {0.5.0},
207-
url = {https://www.qector.store},
208-
note = {Source-available. Commercial license required for commercial use.}
209-
}
210-
```
109+
Source-available. Commercial use requires written licensing through https://www.qector.store.

0 commit comments

Comments
 (0)