Overview¶
Introduction¶
qecsim is a Python 3 package for simulating quantum error correction using stabilizer codes.
It is lightweight, modular and extensible, allowing additional codes, error models and decoders to be plugged in.
Components¶
qecsim includes three key abstract classes: qecsim.model.StabilizerCode, qecsim.model.ErrorModel and
qecsim.model.Decoder.
StabilizerCode |
|---|
n_k_d
stabilizers
logical_xs
logical_zs
logicals
validate()
|
ErrorModel |
|---|
probability_distribution(probability):tuple
generate(code, probability):error
|
Decoder |
|---|
decode(syndrome):recovery
|
A simulation run is executed by passing implementations of the key classes, along with an error_probability to the
function qecsim.app.run_once().
app |
|---|
run_once(code, error_model, decoder, error_probability):run_data
1. \(S \leftarrow\) code.stabilizers
2. \(L \leftarrow\) code.logicals
3. \(e \leftarrow\) error_model.generate(code, error_probability)
4. \(y \leftarrow e \odot S^T\)
5. \(r \leftarrow\) decoder.decode(code, \(y\))
6. sanity check \(r \odot S^T = y\)
7. success \(\iff (r \oplus e) \odot L^T = 0\)
run(code, error_model, decoder, error_probabilities, max_runs, max_failures):runs_data
merge(runs_data_list, …):runs_data_list
|
Notes¶
The binary symplectic product \(\odot\) is defined as \(A \odot B \equiv A \Lambda B \bmod 2\) where \(\Lambda = \left[\begin{matrix} 0 & I \\ I & 0 \end{matrix}\right]\).
Pauli operators -
stabilizers,logicals,error,recovery- are represented in binary symplectic form by NumPy arrays:numpy.array([0, 0, 1, 1, 0, 1, 1, 0]) # [0 0 1 1 | 0 1 1 0] = IZYX
The
qecsim.appmodule also includes functions to execute fault-tolerant simulations, seeqecsim.app.run_once_ftp()andqecsim.app.run_ftp(), which delegate to a fault-tolerant decoder implementation ofqecsim.model.DecoderFTP.The
qecsim.paulitoolsmodule provides utility functions for manipulating Pauli operators in string and binary symplectic form.The
qecsim.graphtoolsandqecsim.tensortoolsmodules provide support for graph matching and tensor network contraction as used by some decoder implementations.
Implementations¶
Stablizer code implementations include:
5-qubit code
qecsim.models.basic.FiveQubitCode7-qubit Steane code
qecsim.models.basic.SteaneCodeColor 6.6.6 code
qecsim.models.color.Color666CodePlanar code
qecsim.models.planar.PlanarCodeRotated planar code
qecsim.models.rotatedplanar.RotatedPlanarCodeRotated toric code
qecsim.models.rotatedtoric.RotatedToricCodeToric code
qecsim.models.toric.ToricCode
Error model implementations include:
Biased-depolarizing error model
qecsim.models.generic.BiasedDepolarizingErrorModelBiased-Y-X error model
qecsim.models.generic.BiasedYXErrorModelBit-flip error model
qecsim.models.generic.BitFlipErrorModelBit-phase-flip error model
qecsim.models.generic.BitPhaseFlipErrorModelCenter slice error model
qecsim.models.generic.CenterSliceErrorModelDepolarizing error model
qecsim.models.generic.DepolarizingErrorModelFile error model
qecsim.models.generic.FileErrorModelPhase-flip error model
qecsim.models.generic.PhaseFlipErrorModel
Decoder implementations include:
Color 6.6.6 MPS decoder
qecsim.models.color.Color666MPSDecoderNaive decoder
qecsim.models.generic.NaiveDecoderPlanar Converging MWPM decoder
qecsim.models.planar.PlanarCMWPMDecoderPlanar MPS decoder
qecsim.models.planar.PlanarMPSDecoderPlanar MWPM decoder
qecsim.models.planar.PlanarMWPMDecoderPlanar Rotated MPS decoder
qecsim.models.planar.PlanarRMPSDecoderPlanar Y-noise decoder
qecsim.models.planar.PlanarYDecoderRotated planar MPS decoder
qecsim.models.rotatedplanar.RotatedPlanarMPSDecoderRotated planar Rotated MPS decoder
qecsim.models.rotatedplanar.RotatedPlanarRMPSDecoderRotated planar Symmetry MWPM decoder
qecsim.models.rotatedplanar.RotatedPlanarSMWPMDecoderRotated toric Symmetry MWPM decoder
qecsim.models.rotatedtoric.RotatedToricSMWPMDecoderToric MWPM decoder
qecsim.models.toric.ToricMWPMDecoder
Further implementations can be added by extending the key abstract models.