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.
See the QEC-Playground Documentation: Installation for the detailed instructions. A brief example is below.
```bash
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
sudo apt install python3 python3-pip pip3 install networkx
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 ../../
```
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.
```init QECPlayground 0.1.6 Yue Wu yue.wu@yale.edu, Namitha Liyanage (namitha.liyanage@yale.edu) Quantum Error Correction Playground
USAGE:
qecp
OPTIONS: -h, --help Print help information -V, --version Print version information
SUBCOMMANDS: fpgagenerator fpgagenerator 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.
```bash qecp-tool-benchmark 0.1.6 benchmark surface code decoders
USAGE:
qecp tool benchmark [OPTIONS]
ARGS:
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
OPTIONS:
--biaseta
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:
bash
cargo run --release -- tool benchmark [3] [0] [3e-2,2e-2,1e-2]
An example result is below.
init
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
See CHANGELOG.md
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.
When using QEC-Playground for research, please cite:
TODO: arXiv link for related papers (probably the fusion blossom paper)