LiDMaS+ is an open-source CLI toolkit for reproducible quantum error-correction simulation, decoder benchmarking, and hardware-to-decoder replay. This exists to make QEC experiments reproducible, scriptable, and directly comparable across codes, decoders, and hardware data pipelines.
Current coverage:
- Correction code engines: Surface, CSS family (including custom CSS specs/matrices, repetition, and Shor), and LDPC.
- GKP support: Available in current CLI flows as hybrid/native Surface workflows (
--mode=hybridand--mode=gkp), i.e., CV/GKP behavior integrated into Surface-mode experiments. - Decoders:
mwpm,uf,bp,neural_mwpm, andstub. - Targeted hardware providers: IBM Quantum (live superconducting telemetry), Rigetti/Ankaa workflows (replay), and Xanadu datasets (Aurora/QCA/GKP replay).
- Quantum software stacks: Qiskit IBM Runtime, PennyLane, Qiskit, Cirq, and planned Qibo/Qibolab integration.
It provides:
- a unified CLI for running simulation and replay workflows,
- deterministic runs with explicit seed control,
- reusable examples for thresholds, replay, and analysis outputs.
If you need the full technical depth, use the published docs
Statement of Need
Quantum error-correction studies are often hard to reproduce across teams because workflows, decoder settings, and data formats vary across scripts and hardware sources.
LiDMaS+ addresses this by giving researchers and engineers a single CLI and repeatable workflow surface for:
- deterministic simulation runs,
- consistent decoder comparison,
- hardware-to-decoder replay and artifact generation.
Model-Exact Scope
Let a run scope be
S ∈ 𝒮, S = (C, D, M, Θ, σ, I, V)
where:
C: code family/configuration,D: decoder set,M: execution mode,Θ: algorithm/hyperparameter settings,σ: seed and stochastic controls,I: input stream or dataset identity,V: executable/version identity.
Define the run key as:
K(S) = H(ser(S))
for a canonical serializer ser and collision-resistant hash H. LiDMaS stores K(S) with each result artifact.
Proposition:
∀ S₁,S₂ ∈ 𝒮, S₁ ≠ S₂ ⇒ Pr[K(S₁) ≠ K(S₂)] ≥ 1 − ε for negligible ε.
So, except with negligible probability, artifacts from S₁ and S₂ are scope-distinct.
Proof sketch:
S₁ ≠ S₂ ⇒ ser(S₁) ≠ ser(S₂)(canonical serialization is injective on scope tuples).∀ x ≠ y, Pr[H(x)=H(y)] ≤ εby collision resistance.- Substitute
x=ser(S₁), y=ser(S₂):Pr[K(S₁)=K(S₂)] ≤ ε, hencePr[K(S₁)≠K(S₂)] ≥ 1−ε.
Design-to-Result Workflow
Let experiment design be E = (C, D, 𝒩, T, σ).
Define scoped execution and outputs as:
S = (E, M, Θ, I, V), K = H(ser(S)), R = Φ(S), A = (K, R, μ).
Pipeline:
E →[encode in CLI] S →[Φ (simulate/replay)] R →[persist with K] A →[analyze] Δ →[rerun with S] R′ →[‖R − R′‖ ≤ τ] validated results
Step map:
- Specify
E. - Encode
Sinlidmas ...arguments. - Execute
Φin the selected mode. - Persist
A=(K,R,μ). - Compute comparison/analysis outputs
Δ. - Re-run to get
R′and check‖R − R′‖ ≤ τ. - Promote validated artifacts to reports/plots/paper bundles.
UI status: under active development. For stable workflows today, use the CLI (lidmas) below.
Getting Started
Prerequisites
- C++20 compiler
- CMake >= 3.16
- Python 3.9+ (for PyPI install path and optional scripts)
- Optional: OpenMP
- Optional: CUDA toolkit (GPU sampling path)
Installation
Install from PyPI:
python -m pip install --upgrade lidmas
This installs the lidmas CLI so you can run LiDMaS+ commands directly from your shell.
Or build from source:
cmake -S . -B build
cmake --build build -j
Usage
Show available commands:
lidmas --help
Run a quick smoke check:
lidmas --smoke
Run from source build (without PyPI install):
./build/lidmas --help
./build/lidmas --smoke
For full examples and workflow guides:
Hardware Integrations
| Mode | Integration | Company / Provider | Quantum Software Stack |
|---|---|---|---|
| Live | IBM superconducting stream polling | IBM Quantum | Qiskit IBM Runtime |
| Live (planned) | Qibolab hardware backend integration | Qibo/Qibolab self-hosted labs | Qibo + Qibolab |
| Replay | Ankaa superconducting replay stream | Rigetti (Ankaa workflows) | LiDMaS adapter stream (fixture/HDF5 replay) |
| Replay | Xanadu Aurora/QCA/GKP dataset conversion + replay | Xanadu | Python converter + LiDMaS decoder_io_replay |
| Replay | Simulator framework replay | PennyLane / Qiskit / Cirq ecosystems | PennyLane, Qiskit, Cirq |
Hardware Integration examples and commands are documented here
Contributing
Bug reports, feature requests, and pull requests are welcome.
- Contribution guide: CONTRIBUTING.md
- Code of conduct: CODE_OF_CONDUCT.md
- Security policy: SECURITY.md
Citation
If you use LiDMaS+ in academic work, cite the software release used for your experiments (tag + commit hash).
Paper reference (paper_03):
@misc{wayo2026unifiedhardwaretodecoderarchitecturehybrid,
title={A Unified Hardware-to-Decoder Architecture for Hybrid Continuous-Variable and Discrete-Variable Quantum Error Correction in LiDMaS+},
author={Dennis Delali Kwesi Wayo and Chinonso Onah and Leonardo Goliatt and Sven Groppe},
year={2026},
eprint={2604.15389},
archivePrefix={arXiv},
primaryClass={quant-ph},
url={https://arxiv.org/abs/2604.15389}
}
License
This project is licensed under the MIT License.
See LICENSE.
Release files for lidmas 1.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| lidmas-1.2.2.tar.gz | 5.0 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| lidmas-1.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.17+ x86-64 | Details |
| lidmas-1.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.17+ x86-64 | Details |
| lidmas-1.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.17+ x86-64 | Details |
| lidmas-1.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.9 | CPython 3.9 | Linux glibc 2.17+ x86-64 | Details |
Total release size: 6.9 MB
Release files / lidmas-1.2.2.tar.gz
| Download URL | lidmas-1.2.2.tar.gz |
|---|---|
| Size | 5.0 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
69778b4f15a98ac74d418a45db3165db99401cdf2e4366cadd10eb73175112cf
|
|
BLAKE2b-256 checksum How to use checksums |
3ef922d7408fa0bb8c8d65e1cf87fb9b5317397d035fcfa5f4160186300cecc3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 15, 2026.
Transparency logRelease files / lidmas-1.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | lidmas-1.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 468.2 kB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
9caa66a2f7df7195571534f6a36dccdc1ec6891ce8ee26403a48cbeae359b1ee
|
|
BLAKE2b-256 checksum How to use checksums |
10235d19367b8ac094dddd3777d9e4fda34d5b689a467b155868579e5ccd9e79
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 15, 2026.
Transparency logRelease files / lidmas-1.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | lidmas-1.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 468.2 kB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
2bebcadd864e91d851ce3654b90c08133ebfa98dc70ad9f6d0ed613600c04896
|
|
BLAKE2b-256 checksum How to use checksums |
9b96d45f58fdc7f5d74a5c917ea4f9cfa0517f76b72d81653ec396c558f14b12
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 15, 2026.
Transparency logRelease files / lidmas-1.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | lidmas-1.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 468.2 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
64785f311d5a2656dded4f43340263b20e3639dd09cea8a32cd73872f7073941
|
|
BLAKE2b-256 checksum How to use checksums |
eec6fa04746f773d8aa6cc05a818c5f12453ebf4d3c463729d89cc91712ef96e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 15, 2026.
Transparency logRelease files / lidmas-1.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | lidmas-1.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 468.2 kB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
a47497ed6038f63a6e26c9369b788f7394089e005ea32afc9d50a68683e09f78
|
|
BLAKE2b-256 checksum How to use checksums |
187112d3c8368c5833139a1a75e4c705798eddb0b8f1ddb8a9dc74894135872d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 15, 2026.
Transparency log