Package: qecp
QEC-PlaygroundA 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.InstallationSee theQEC-Playground Documentation: Installationfor the detailed instructions.
A brief example is below.# Download the Blossom V Library [Optional]wget-chttps://pub.ist.ac.at/~vnk/software/blossom5-v2.05.src.tar.gz-O-|tar-xz
cp-rblossom5-v2.05.src/*backend/blossomV/
rm-rblossom5-v2.05.src# Install the Python Dependencies [Optional]sudoaptinstallpython3python3-pip
pip3installnetworkx# Install the Rust Toolchaincurl--proto'=https'--tlsv1.2-sSfhttps://sh.rustup.rs|shsource~/.bashrc# this will add `~/.cargo/bin` to pathcdbackend/rust/
cargobuild--releasecd../../Command-line InterfaceSee theQEC-Playground Documentation: CLIfor the detailed instructions.
A brief example use case is below.Runcargo run --release -- --helpunderbackend/rust/folder to get all provided commands of backend program.
The option--helpprints 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              toolsTo run a simulation to benchmark the logical error rate of decoder, runcargo run --release -- tool benchmark --help. An example output is below.qecp-tool-benchmark0.1.6
benchmarksurfacecodedecoders

USAGE:qecptoolbenchmark[OPTIONS]<dis><nms><ps>

ARGS:<dis>[di1,di2,di3,...,din]codedistanceofverticalaxis<nms>[nm1,nm2,nm3,...,nmn]numberofnoisymeasurementrounds,musthaveexactlythesamelengthas`dis`;notethataperfectmeasurementisalwayscappedattheend,sotosimulateasingleroundofperfectmeasurementyoushouldsetthisto0<ps>[p1,p2,p3,...,pm]p=px+py+pzunlessnoisemodelhasspecialinterpretationofthisvalue

OPTIONS:--bias_eta<bias_eta>bias_eta=pz/(px+py)andpx=py,px+py+pz=p.defaultto1/2,whichmeanspx=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:cargorun--release--toolbenchmark[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 0Change LogSeeCHANGELOG.mdContributionsYue 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.AttributionWhen using QEC-Playground for research, please cite:TODO: arXiv link for related papers (probably the fusion blossom paper)