Skip to main content

LiDMaS+ (Logical Injection & Decoding Modeling System) quantum error-correction simulator

Project description

LiDMaS+

Logical Injection & Decoding Modeling System

LiDMaS+ is a C++ research simulator for quantum error-correction studies, with surface-code threshold experiments under discrete Pauli noise and hybrid continuous-variable (CV)-discrete noise models as the primary workflow. It also includes CSS and LDPC engine paths for comparative studies.

Install from PyPI:

pip install lidmas

Then run:

lidmas --help

Statement of Need

Benchmarking decoder behavior and threshold trends requires reproducible, scriptable, and inspectable simulation pipelines. LiDMaS+ provides:

  • deterministic Monte Carlo runs with explicit seed control,
  • multiple decoders under a common interface,
  • confidence-interval-aware threshold outputs,
  • publication-ready CSV and figure workflows in examples/.

This makes it suitable for method development, reproducibility appendices, and comparative decoder studies.

Core Capabilities

  • Surface-code simulation with configurable code distance and trial counts.
  • CSS and LDPC demo/threshold workflows via engine switching.
  • Decoder plugins: mwpm, uf, neural_mwpm.
  • Noise modes:
    • pauli: sweep logical error rate versus physical Pauli error rate p.
    • hybrid: sweep logical error rate versus CV displacement scale sigma using GKP digitization.
  • Optional threshold analysis tools (crossing estimates and scaling fits).
  • Reproducible example suite under examples/.

Requirements

  • C++20 compiler
  • CMake >= 3.16
  • Optional: OpenMP for parallel threshold runs
  • Optional: CUDA toolkit (for GPU-accelerated Pauli surface_threshold sampling)
  • Optional (for plots): Python 3 with matplotlib and pandas

Build

cmake -S . -B build
cmake --build build -j

Primary executable:

  • build/lidmas

Packaging Notes

  • Brand name remains LiDMaS+.
  • PyPI package name is lidmas.
  • CLI command is lidmas.
  • Published wheels are CPU-oriented; CUDA builds are supported from source builds.

Optional CUDA build (Pauli surface_threshold sampling)

cmake -S . -B build -DLIDMAS_ENABLE_CUDA=ON
cmake --build build -j

At runtime, enable with:

./build/lidmas --engine=surface --surface_threshold --mode=pauli --gpu ...

Quick benchmark:

./build/lidmas --gpu_bench
./build/lidmas --gpu_bench_quick
./build/lidmas --gpu_bench_full

Quick Start

Show CLI help:

./build/lidmas --help

Run deterministic smoke test:

./build/lidmas --smoke

Run a Pauli threshold sweep (surface engine):

./build/lidmas --engine=surface --surface_threshold \
  --mode=pauli \
  --decoder=mwpm \
  --d=3,5,7 \
  --p_start=0.01 --p_end=0.15 --p_step=0.01 \
  --trials=2000 \
  --seed=1337 \
  --out=surface_threshold.csv

Run a hybrid CV sweep (surface engine):

./build/lidmas --engine=surface --surface_threshold \
  --mode=hybrid \
  --decoder=mwpm \
  --d=3,5,7 \
  --sigma_start=0.05 --sigma_end=0.60 --sigma_step=0.05 \
  --trials=2000 \
  --seed=1337 \
  --out=surface_threshold.csv

Run a native GKP sweep (surface engine):

./build/lidmas --engine=surface --surface_threshold \
  --mode=gkp \
  --decoder=mwpm \
  --d=3,5,7 \
  --sigma_start=0.05 --sigma_end=0.60 --sigma_step=0.05 \
  --gkp_gate=0.0005 --gkp_meas=0.0005 --gkp_idle=0.0002 \
  --gkp_loss=0.001 \
  --trials=2000 \
  --seed=1337 \
  --out=gkp_surface_threshold.csv

Neural decoder note:

  • --decoder=neural_mwpm requires --neural_model=<path>.
  • A trained reference model is provided at examples/decoder_comparison/trained_model.json.
  • To retrain it, run python3 examples/decoder_comparison/train_neural_model.py.

CSS engine demo / threshold (experimental):

./build/lidmas --engine=css \
  --css_spec=examples/css_codes/steane/spec.yaml

./build/lidmas --engine=css \
  --css_repetition=7
./build/lidmas --engine=css \
  --css_shor

./build/lidmas --engine=css --css_threshold --mode=pauli --trials=2000 \
  --css_spec=examples/css_codes/steane/spec.yaml \
  --out=css_threshold.csv

CSS matrix files are dense 0/1 text (space or comma separated). Logical files can include multiple rows.

--css_repetition=<n> builds a bit-flip repetition code automatically (Hx empty, Hz chain). --css_shor builds the Shor [[9,1,3]] code automatically.

LDPC engine (default):

./build/lidmas --engine=ldpc

Reproducible Examples

The examples/ directory contains ready-to-run scripts for smoke checks, Pauli/hybrid thresholds, scaling workflows, decoder comparison, and plotting.

Setup once:

./examples/setup_env.sh

Run a minimal end-to-end check:

bash examples/quick_smoke/run.sh

Generated artifacts are written to:

  • examples/results/<example_name>/

Output Schema

Threshold CSV output uses:

  • mode,distance,sigma,pauli_p,trials,ler,ci_low,ci_high,defect_mean,weight_mean,decoder_fail_rate,mwpm_weight_scale,mwpm_graph,timestamp

Validation

For quick validation in local or CI environments:

./build/lidmas --smoke

Hardware Integration

See docs/hardware-integration.md for the decoder IO schema, recommended data transport, and adapter API.

Project Layout

include/   # public headers and interfaces
src/       # simulator and decoder implementations
examples/  # reproducible runs and plotting scripts

Release Notes

Detailed release notes and version-specific changes are tracked in Git tags and GitHub Releases.

Citation

If you use LiDMaS+ in academic work, cite the software release used for your experiments (tag + commit hash). If a JOSS/arXiv record is available for your release, cite that record directly.

Paper reference (paper_01):

@misc{wayo2026decoder,
  title={Decoder Performance in Hybrid CV-Discrete Surface-Code Threshold Estimation Using LiDMaS+},
  author={Dennis Delali Kwesi Wayo and Chinonso Onah and Vladimir Milchakov and Leonardo Goliatt and Sven Groppe},
  year={2026},
  eprint={2603.06730},
  archivePrefix={arXiv},
  primaryClass={quant-ph},
  url={https://arxiv.org/abs/2603.06730}
}

Suggested software citation format:

Wayo, D. (Year). LiDMaS+ (Version X.Y.Z) [Computer software].
https://github.com/DennisWayo/lidmas_cpp

License

This project is released under the MIT License (see LICENSE).

Contributing

Issues and pull requests are welcome. Please include:

  • a clear problem statement,
  • reproduction steps,
  • expected versus observed behavior,
  • and, where possible, a minimal test or script.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lidmas-1.1.3.tar.gz (141.2 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

lidmas-1.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (436.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

lidmas-1.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (436.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

lidmas-1.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (436.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

lidmas-1.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (436.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

File details

Details for the file lidmas-1.1.3.tar.gz.

File metadata

  • Download URL: lidmas-1.1.3.tar.gz
  • Upload date:
  • Size: 141.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for lidmas-1.1.3.tar.gz
Algorithm Hash digest
SHA256 994fa65c65d349095492144dfd06935454443e71e806dc290db50d9ea752d484
MD5 a2d08c73e58a682f2be954a8208594c2
BLAKE2b-256 060a60b758d4fd4cbd497043d2483c8e5aaaf3d4f8ec8d34f9847ca2528a432f

See more details on using hashes here.

Provenance

The following attestation bundles were made for lidmas-1.1.3.tar.gz:

Publisher: pypi.yml on DennisWayo/lidmas_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lidmas-1.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lidmas-1.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 225b411080d70a280d9002ae227d480e26a086c18c317cc5422ae002f5154da5
MD5 97b85e03b9e3f95796bb0f0f582ba1a6
BLAKE2b-256 7c7c810f1d7a43a7c0102dffca59fc3d1cba7cd5e816681e7212702d1ffeae15

See more details on using hashes here.

Provenance

The following attestation bundles were made for lidmas-1.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi.yml on DennisWayo/lidmas_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lidmas-1.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lidmas-1.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2507241085b8ea0f9d99edf982482d153b3c9148aabe78812120627e17844c75
MD5 88b57f80cd26c8d313aaba0270f33338
BLAKE2b-256 2fece0dec1da17712bea2fc18f5a5323de6c225e8cb76405720f3d8ac5121c2e

See more details on using hashes here.

Provenance

The following attestation bundles were made for lidmas-1.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi.yml on DennisWayo/lidmas_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lidmas-1.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lidmas-1.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0dec4f6dadc347eedcef09308dc58ad6b809a20e37ceb8d9c3d69d84dce0d82d
MD5 e786118c6dcb1c14cfcfb5ec9702f14a
BLAKE2b-256 7c9d5da5cff36eff2ef39216fea79e4605566613539035385e299f2eb6fc4342

See more details on using hashes here.

Provenance

The following attestation bundles were made for lidmas-1.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi.yml on DennisWayo/lidmas_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lidmas-1.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lidmas-1.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5074627ec20c770b9e93cb5d45720d96bf29de90589729539212ff9f18c7ddf6
MD5 ca270f6bf92d8d811ae5e48377cedd11
BLAKE2b-256 490cc45c22c817dc24aa2a8c1c9b927cb4bc1e5ab449a1b9b07ddf426d64ca98

See more details on using hashes here.

Provenance

The following attestation bundles were made for lidmas-1.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi.yml on DennisWayo/lidmas_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page