Skip to main content

Quantum Error Correction Playground for Surface Code Research

Project description

QEC-Playground

A research tool to explore Quantum Error Correction (QEC), primarily surface codes.

[Error] we're working on the documentation of this project, please wait for a formal release (1.0.0) before you want to use this project.

Installation

See the QEC-Playground Documentation: Installation for the detailed instructions. A brief example is below.

# Download the Blossom V Library [Optional]
wget -c https://pub.ist.ac.at/~vnk/software/blossom5-v2.05.src.tar.gz -O - | tar -xz
cp -r blossom5-v2.05.src/* backend/blossomV/
rm -r blossom5-v2.05.src

# Install the Python Dependencies [Optional]
sudo apt install python3 python3-pip
pip3 install networkx

# Install the Rust Toolchain
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.bashrc  # this will add `~/.cargo/bin` to path
cd backend/rust/
cargo build --release
cd ../../

Command-line Interface

See the QEC-Playground Documentation: CLI for the detailed instructions. A brief example use case is below.

Run cargo run --release -- --help under backend/rust/ folder to get all provided commands of backend program. The option --help prints out the information of this command, which can be helpful to find subcommands as well as to understand the purpose of each option. An example output is below.

QECPlayground 0.1.6
Yue Wu <yue.wu@yale.edu>, Namitha Liyanage (namitha.liyanage@yale.edu)
Quantum Error Correction Playground

USAGE:
    qecp <SUBCOMMAND>

OPTIONS:
    -h, --help       Print help information
    -V, --version    Print version information

SUBCOMMANDS:
    fpga_generator    fpga_generator
    help              Print this message or the help of the given subcommand(s)
    server            HTTP server for decoding information
    test              testing features
    tool              tools

To run a simulation to benchmark the logical error rate of decoder, run cargo run --release -- tool benchmark --help. An example output is below.

qecp-tool-benchmark 0.1.6
benchmark surface code decoders

USAGE:
    qecp tool benchmark [OPTIONS] <dis> <nms> <ps>

ARGS:
    <dis>    [di1,di2,di3,...,din] code distance of vertical axis
    <nms>    [nm1,nm2,nm3,...,nmn] number of noisy measurement rounds, must have exactly the
             same length as `dis`; note that a perfect measurement is always capped at the end,
             so to simulate a single round of perfect measurement you should set this to 0
    <ps>     [p1,p2,p3,...,pm] p = px + py + pz unless noise model has special interpretation of
             this value

OPTIONS:
        --bias_eta <bias_eta>
            bias_eta = pz / (px + py) and px = py, px + py + pz = p. default to 1/2, which means px
            = pz = py [default: 0.5]
        ......

For example, to test code-distance-3 standard CSS surface code with depolarizing physical error rates 3%, 2% and 1% only on data qubits (i.e. perfect stabilizer measurements) using the default decoder (MWPM decoder), run:

cargo run --release -- tool benchmark [3] [0] [3e-2,2e-2,1e-2]

An example result is below.

format: <p> <di> <nm> <total_repeats> <qec_failed> <error_rate> <dj> <confidence_interval_95_percent> <pe>
0.03 3 0 567712 10000 0.01761456513161603 3 1.9e-2 0
0.02 3 0 1255440 10000 0.007965334862677627 3 2.0e-2 0
0.01 3 0 4705331 10000 0.002125248999485902 3 2.0e-2 0

Change Log

See CHANGELOG.md

Contributions

Yue Wu (yue.wu@yale.edu): implement 3D GUI. design and implement interactive tutorial. propose and implement naïve decoder. implement MWPM decoder. Implement different variants of surface code and different decoders (see change log 2020.11.8 - 2022.3.20). The major developer and maintainer of this repository.

Guojun Chen: collaborator of CPSC 559 course project: design GUI. design and implement machine learning based weight optimized MWPM decoder.

Namitha Godawatte Liyanage: implement approximate MWPM decoder and FPGA related functionalities.

Neil He: bind library to Python.

Attribution

When using QEC-Playground for research, please cite:

TODO: arXiv link for related papers (probably the fusion blossom paper)

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

qecp-0.2.3.tar.gz (611.1 kB view details)

Uploaded Source

Built Distributions

qecp-0.2.3-cp37-abi3-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.7+ Windows x86-64

qecp-0.2.3-cp37-abi3-win32.whl (1.2 MB view details)

Uploaded CPython 3.7+ Windows x86

qecp-0.2.3-cp37-abi3-musllinux_1_1_x86_64.whl (18.6 MB view details)

Uploaded CPython 3.7+ musllinux: musl 1.1+ x86-64

qecp-0.2.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.6 MB view details)

Uploaded CPython 3.7+ manylinux: glibc 2.17+ x86-64

qecp-0.2.3-cp37-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (3.1 MB view details)

Uploaded CPython 3.7+ macOS 10.9+ universal2 (ARM64, x86-64) macOS 10.9+ x86-64 macOS 11.0+ ARM64

File details

Details for the file qecp-0.2.3.tar.gz.

File metadata

  • Download URL: qecp-0.2.3.tar.gz
  • Upload date:
  • Size: 611.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.12

File hashes

Hashes for qecp-0.2.3.tar.gz
Algorithm Hash digest
SHA256 3c6e110def6622fbe5df03a2b42bf4bdd902eceb7b31525a923288ee1ffc37f8
MD5 c8fcbc58841de076f229d55f05a0b92a
BLAKE2b-256 697faafe3c478eb43a8b5d79d463ef5a55ece0b5c4634654e6fdc2a217696b01

See more details on using hashes here.

File details

Details for the file qecp-0.2.3-cp37-abi3-win_amd64.whl.

File metadata

  • Download URL: qecp-0.2.3-cp37-abi3-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.7+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.12

File hashes

Hashes for qecp-0.2.3-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 6fa5d674c3fce20cdee087cfff5d0793846651b0a571b200b55474dc3bd7979d
MD5 880f8bf783d3d710a921cb24f46fe2e7
BLAKE2b-256 3ad19ef81d8174dd214674a86937db99a870632ac29a4702944a746d4a73ea92

See more details on using hashes here.

File details

Details for the file qecp-0.2.3-cp37-abi3-win32.whl.

File metadata

  • Download URL: qecp-0.2.3-cp37-abi3-win32.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.7+, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.12

File hashes

Hashes for qecp-0.2.3-cp37-abi3-win32.whl
Algorithm Hash digest
SHA256 17da15fc69cda26899e861b9e1cc82229af11e36d8a09ffbe0af03fddbe04121
MD5 c312cb133277844007ce9e601be72fce
BLAKE2b-256 bd634b6436f506fd4cbf5b477447d6fe45cad5a9c52514998ea28b763f791770

See more details on using hashes here.

File details

Details for the file qecp-0.2.3-cp37-abi3-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for qecp-0.2.3-cp37-abi3-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 f64c24ce9fd015f6302b12da911bfd70b425a8c9e940130aff432d89de5cee47
MD5 9142948f257c1a3d932c53d1d001cb5f
BLAKE2b-256 d255180d13b16812375a474690fd1aa741d046d15a170f898e0859e310c6d761

See more details on using hashes here.

File details

Details for the file qecp-0.2.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for qecp-0.2.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7ec1dc81e6eef9956f6ebb4df6e9a3ec905e3d3624d045afb69b81766d8b0c7a
MD5 42cbdbbc8d84e175a18d3dd1469a9c06
BLAKE2b-256 004dac344afbafaeb13d921d7f21df5e455c110c1bcb3975b0dc06bff2308cb3

See more details on using hashes here.

File details

Details for the file qecp-0.2.3-cp37-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for qecp-0.2.3-cp37-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 3d04db979a1a8513c5b96e195c8248b6b3724660c868dc3ced6937cf5a3f7550
MD5 59fee531f5bd82690552d0a058296cd6
BLAKE2b-256 d5961e810d7e3c5092bd4aa983327a7e03a1f7f28c2d6d99ac087142039dd0f0

See more details on using hashes here.

Supported by

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