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.0.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.0-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.0-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.0-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.0-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.0.tar.gz.

File metadata

  • Download URL: lidmas-1.1.0.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.0.tar.gz
Algorithm Hash digest
SHA256 cfba1f47a69247aa783bf0a4db93050d7abf716384f0e8397e656bd3fdca5fc1
MD5 bd22251293f2292bbd34155d33ce1bc6
BLAKE2b-256 2838079053ac802581279d88e8f2d48989748345d01269612d5a4db04220ff95

See more details on using hashes here.

Provenance

The following attestation bundles were made for lidmas-1.1.0.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.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lidmas-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7b538bfbe31d4892c31ef16943111c17e3e1dbc5aec936540e5f6c39685c25a3
MD5 9f31677c16450c2eef85726f4455b41e
BLAKE2b-256 27565f3d6c8c31ebc49dd0ac12a27e0c61747f035b0fb4022b1d4c8f1fcc29d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for lidmas-1.1.0-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.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lidmas-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ccb804b55f6b5a8397c443c735c552b87c0fd9aaea2331f10ce3c8f85bb29aa4
MD5 aefc898ae01b43b355c5e2003614afbc
BLAKE2b-256 ca0d1170d3ba9854999cdc5c5f91f6b5cee372b9742f2cf4c6c8f656c0301f90

See more details on using hashes here.

Provenance

The following attestation bundles were made for lidmas-1.1.0-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.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lidmas-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9c5248ae4f2046fa3d2891fe30b5754f8e83cb4b722270ae6681e4072970fa2d
MD5 ee7c2f798c5ee2f7fc87c8477110c3e0
BLAKE2b-256 1dc7cb834a7ec6d637ae411b17195b941fe40ba068fcfe02abd8d0f95873e7d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for lidmas-1.1.0-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.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lidmas-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f36662151f382a24531d0712f648a18045eaee89481afc3d6e80ebdb3cb7d97c
MD5 47c265466e3e19706ab31fc692e210e1
BLAKE2b-256 021f5a3dddd29901ca448a43a9ebf31b2abc92ca259c1e4f91300c4d9ec49f46

See more details on using hashes here.

Provenance

The following attestation bundles were made for lidmas-1.1.0-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