errorcorrectionzoo/eczoo_data

Data scheme for threshold values

Closed this issue · 1 comments

A cool feature for the error correction zoo would be the possibility to compare threshold values (as well as other metrics) for different codes, noise models and decoders, using some interactive graphs. To do so in a systematic way, we could add some new structures to the tree. Below is our proposition, but we are very open to discussions :)

We could add three new directories in the root folder: thresholds/, noise_models/ and decoders/. In the thresholds directories, we would have one yaml file per threshold value. For instance, we could have the file surface_code_mwpm_depolarizing.yml which would contain something like:

threshold_id: surface_code_mwpm_depolarizing
value: 0.38
std: 0.02
noise_model: 
    noise_id: pauli_error_model
    parameters:
        - X: 0.33
        - Y: 0.33
        - Z: 0.33
decoder:
    decoder_id: mwpm_decoder
    parameters: 
        - num_neighbors: 42
source: [github]
paper: [arxiv]
description: "[More detailed description on how the data was obtained]"

Then, in the yaml file for a given code, we would have something like:

thresholds:
    - surface_code_mwpm_depolarizing
    - surface_code_mwpm_independent_noise
    - surface_code_bp_osd_depolarizing
    - surface_code_bp_osd_independent_noise

We would also have a file decoders/mwpm_decoder.yml:

decoder_id: mwpm_decoder
parameters:
    - num_neighbors: 
        - type: "int"
        - optional: true
description: "The Minimum Weight Perfect Matching Decoder builds a graph out of the syndrome..."
original_paper: [paper link]
example_implementation: [github link]

and a file noise_models/pauli_error_model.yml:

noise_model_id: pauli_error_model
parameters:
    - X: 
        - type: "float"
        - optional: false
    - X: 
        - type: "float"
        - optional: false
    - Y: 
        - type: "float"
        - optional: false
description: "The Pauli error model is one of the most common type of error model for DV QEC. It consists in the following channel..."
reference: [reference link]

This structure naturally adds noise models and decoders into the zoo (we could have a page that lists them), so it's more general than just a way to describe threshold values. They could in principle easily be added by users. For instance, if IBM wants to add a noise model that is natural to their device, that would be easy to do. Creating some data visualization would also be easy to do using this structure.

What do you think? :)

To be continued at eczoo_thresholds repo...