Giter VIP home page Giter VIP logo

eczoo_data's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

eczoo_data's Issues

Contribute code worth THREE POINTS

  1. Go to the "trophy list" code spreadsheet: https://docs.google.com/spreadsheets/d/1LEXD9diTZNDugK_Q6ntiuhnbRUCIaVp45i5oxRKgjT4/edit#gid=1940680866
  2. Skim through the first three sheets of the file; the 1st sheet lists classical codes and the 2nd and 3rd list quantum codes.
  3. Pick a code that is not crossed out and that is worth THREE POINTS (with points listed in column D).
  4. Contribute that code to the zoo by creating a code yml file (following template.yml) and doing a pull request.

Fixing notation

Various code families will overlap in terms of notation used. As we expand, we may need to consider how to standardize notation for, e.g., codespace projectors, error operators.

How do I add a circuit diagram or circuit link?

I have a [5,1,3] encoder with fewer two-qubit-gates than the referenced papers. How do I add it to the [5,1,3] page? Specifically, how do I add images and external URLs and code blocks?

image

Quirk link

import stim

print(stim.Circuit("""
    # Input: qubit 0
    # Output: A [5,1,3] code over qubits 0,1,2,3,4
    Y 0
    R 1 2 3 4
    H 2 3 4
    CZ 2 3
    CX 0 1 3 1 4 1
    CX 2 0
    CZ 0 1
    CX 3 0
    H 2 3 4
""").diagram())
q0: -Y---@-----X-@-X---
         |     | | |
q1: -R---X-X-X-|-@-|---
           | | |   |
q2: -R-H-@-|-|-@---|-H-
         | | |     |
q3: -R-H-@-@-|-----@-H-
             |
q4: -R-H-----@-------H-

There are also many highly symmetrical ZX graphs of the encoder (up to permutation and single qubit basis change of the outputs). Examples:

image

image

Presumably there are ways to add linkable versions of these things, instead of just references to books and papers? Books and papers are great and all, but it's often difficult to find the specific figure and the representation is usually not computer parseable.

Qubit CSS code and Clifford group

The statement ' All CSS codes admit transversal Pauli and CNOT gates [16]. Self-dual CSS codes admit a transversal Hadamard, completing the Clifford group.' seems wrong. One is still missing the S gate at this point.

Contribute code worth ONE POINT

  1. Go to the "trophy list" code spreadsheet: https://docs.google.com/spreadsheets/d/1LEXD9diTZNDugK_Q6ntiuhnbRUCIaVp45i5oxRKgjT4/edit#gid=1940680866
  2. Skim through the first three sheets of the file; the 1st sheet lists classical codes and the 2nd and 3rd list quantum codes.
  3. Pick a code that is not crossed out and that is worth ONE POINT (with points listed in column D).
  4. Contribute that code to the zoo by creating a code yml file (following template.yml) and doing a pull request.

Data scheme for threshold values

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? :)

Generate all ancestors of a given code

The EC zoo data is set of structured YML files, with each file corresponding to a code family. Inside each file are "parent" links to other codes. Given a particular file (labeled by a particular "code_id"), generate a table (i.e., ancestor family tree) of all of the code's parents, along with their "physical" and "logical" parameters.

Ideally, I'd like to have a script that runs in bash so I can just pull the eczoo_data repo and run the script. The script would take one argument, the code_id corresponding to the code whose ancestors I want to determine. The script should spit out a table, where each row is an ancestor, its physical, and its logical parameters.

Many codes have multiple parents, the generating the list of all parents should probably be done recursively. I don't have strong preferences as to which order the ancestors are presented in the table.

Galois

Galois-qudit stabilizer codes to be named [[n,k,d]]{GF(q)}
Cyclic-qudit stabilizer codes to be named [[n,k,d]]
{q}
Prime-qudit stabilizer codes to be named [[n,k,d]]_{p}

Correspondingly, rename Z_n --> cyclic.

Contribute code worth TWO POINTS

  1. Go to the "trophy list" code spreadsheet: https://docs.google.com/spreadsheets/d/1LEXD9diTZNDugK_Q6ntiuhnbRUCIaVp45i5oxRKgjT4/edit#gid=1940680866
  2. Skim through the first three sheets of the file; the 1st sheet lists classical codes and the 2nd and 3rd list quantum codes.
  3. Pick a code that is not crossed out and that is worth TWO POINTS (with points listed in column D).
  4. Contribute that code to the zoo by creating a code yml file (following template.yml) and doing a pull request.

Provide acknowledgments to Github editors of each code

We'd like to edit all YaML code files to include information about their contributors in a new meta field. Currently, this information is stored in the git commits of those files.

The solution is to write a one-time script that crawls through the code files and performs the necessary changes automatically.

Requirements:

  • add a field in all YaML code files in the eczoo_data repository:
_meta:
  contributors:
    - name: ...
       githubusername: ...
    - name: ...
       githubusername: ...
  • The contributors should be extracted from the git history of that file, by examining the authors of commits to that file. Contributors should be listed in chronological order of their contributions. Contributors that contributed only typos or minimal edits should not be listed. (Let's say fixing a typo -> no; adding a few sentences -> yes. We might have to decide on a more precise rule.)
  • The full name of the contributor should also be listed along their github user name. This is to ensure that even if the user deletes their github account, we still at least have the name of the contributor that is listed in the meta field.

Smallest stabilizer code with transversal T

The transversal gates section of the 15 qubit code claims that it is the smallest qubit stabilizer code with a transversal gate outside the Clifford group. Maybe this should either read "strongly transversal gate" or "weakly transversal T-gate" since there is an 8 qubit code with weakly transversal CCZ.

I don't know much about gates, so maybe I am misunderstanding

Contribute code worth ONE POINT

  1. Go to the "trophy list" code spreadsheet: https://docs.google.com/spreadsheets/d/1LEXD9diTZNDugK_Q6ntiuhnbRUCIaVp45i5oxRKgjT4/edit#gid=1940680866
  2. Skim through the first three sheets of the file; the 1st sheet lists classical codes and the 2nd and 3rd list quantum codes.
  3. Pick a code that is not crossed out and that is worth ONE POINT (with points listed in column D).
  4. Contribute that code to the zoo by creating a code yml file (following template.yml) and doing a pull request.

Contribute code worth TWO POINTS

  1. Go to the "trophy list" code spreadsheet: https://docs.google.com/spreadsheets/d/1LEXD9diTZNDugK_Q6ntiuhnbRUCIaVp45i5oxRKgjT4/edit#gid=1940680866
  2. Skim through the first three sheets of the file; the 1st sheet lists classical codes and the 2nd and 3rd list quantum codes.
  3. Pick a code that is not crossed out and that is worth TWO POINTS (with points listed in column D).
  4. Contribute that code to the zoo by creating a code yml file (following template.yml) and doing a pull request.

Find unlinked code names and attach links to them

Each code in the zoo has a "name", "short_name" and "code_id" parameter in the YML file. However, the description and other parameters where there is lots of text describing a given code may link to other codes via the hyperref protocol (see template.yml). The protocol includes a "name" of the other code and its code ID, but not all code IDs have been put in. The goal is to find every instance of the "name" of a code and replace it with the corresponding hyperref command linking to its code_id.

I was hoping you could write a script that does this for me so that I can re-run it as I populate the zoo later on. The script should

  • collect all code_id's, code_names, and code short_names from the eczoo_data repo and store them in a list (of roughly 550x3 entries). If a code does not have a short name, then define code_short_name to be code_name without the "code" string at the end if there is such a string, and otherwise define code_short_name to be code_name. For example code_name = "Repetition code", code short_name should be "repetition".
  • In the YML file of each code X, and for each code Y in the above list excluding X, case-insesitive-find all instances of "Y code name" and "Y code short name" within the descriptive parameters of the YML file of X ("description", "protection", all "features", "realizations", "notes", and any "detail" sub-parameter inside "relations"; DO NOT change code_id parameters).
  • Print out the few lines in which the script has found something to be replaced and ask for input (Y/N) from the command line as to whether the script should replace it. If Y, then replace with \hyperref[code:Y_code_id]{Y code name}. If N, move onto the next instance.
  • Take care not to ask to double link already linked codes, e.g., \hyperref[code:Y_code_id]{\hyperref[code:Y_code_id]{Y code name}}. In other words, once the script runs once, then next time it runs it should ideally be prompting about newly added potential references.

For example, find every instance of "repetition code" inside the descriptive parameters of the text and replace it with \hyperref[code:quantum_repetition]{repetition code}.

Having a precise definition of mathematical symbols appear on the desctription

Hi,
I was thinking
if one could put the definitions of
Theta(n), Omega(n), carly O(n)
and so on which appears in various places, it would be great. I konw they are somehow differentiated by upper bound, lower bound and so on, but it get's very hard to keep track of, when I'm not familiar with the field enough. Any help on this will be greatly appreciated!

Contribute code worth ONE POINT

  1. Go to the "trophy list" code spreadsheet: https://docs.google.com/spreadsheets/d/1LEXD9diTZNDugK_Q6ntiuhnbRUCIaVp45i5oxRKgjT4/edit#gid=1940680866
  2. Skim through the first three sheets of the file; the 1st sheet lists classical codes and the 2nd and 3rd list quantum codes.
  3. Pick a code that is not crossed out and that is worth ONE POINT (with points listed in column D).
  4. Contribute that code to the zoo by creating a code yml file (following template.yml) and doing a pull request.

Contribute code worth ONE POINT

  1. Go to the "trophy list" code spreadsheet: https://docs.google.com/spreadsheets/d/1LEXD9diTZNDugK_Q6ntiuhnbRUCIaVp45i5oxRKgjT4/edit#gid=1940680866
  2. Skim through the first three sheets of the file; the 1st sheet lists classical codes and the 2nd and 3rd list quantum codes.
  3. Pick a code that is not crossed out and that is worth ONE POINT (with points listed in column D).
  4. Contribute that code to the zoo by creating a code yml file (following template.yml) and doing a pull request.

Manual citation format

I might be wrong, but can someone confirm that the manual citation seems to require \cite{manual_citation_minilatex: ...}, instead of simply \cite{manual: ...}? Check this line.

machine readable code information

It would be neat if besides human readable description, there is some more formal (maybe executable) description of the code, e.g. as a parity check matrix.

I am setting up some simulation tools for QEC with QuantumClifford.jl and instead of creating a whole new database of codes in that library, it would be neat if I can just query this database in order to construct a parity check matrix for a given code.

Would that be considered "in scope" for the eczoo project?

Quantum double codes are incorrectly listed as descendants of stabilizer codes

Quantum double codes are not stabilizer in general (only in the Abelian case), and so should not be classed as a descendent of stabilizer codes, assuming that A is a child of B iff A is a subset of B. It looks like this issue stems from the claim that group-GKP codes have CSS codes as a parent, then that quantum double codes are a child of group-GKP codes. Group-GKP codes should not have CSS codes as parents, if my assumption about subset-inclusion is correct.

I have not made the change myself as a pull request, as I am unfamiliar with the ECZoo and I may have misunderstood the intended child/parent structure.

Quantum Reed-Muller Codes

The page on Quantum Reed-Muller codes codes/quantum/qubits/rm/quantum_reed_muller.yml claims that

Additionally, CSS codes formed from binary Reed-Muller codes achieve channel capacity on erasure channels [2].

This cites a result about classical Reed-Muller codes on classical erasure channels. I'm not sure how this could follow in a straightforward way from this paper. It's worth noting that the capacity of the quantum erasure channel isn't even positive for erasure fraction greater than 1/3

Contribute code worth TWO POINTS

  1. Go to the "trophy list" code spreadsheet: https://docs.google.com/spreadsheets/d/1LEXD9diTZNDugK_Q6ntiuhnbRUCIaVp45i5oxRKgjT4/edit#gid=1940680866
  2. Skim through the first three sheets of the file; the 1st sheet lists classical codes and the 2nd and 3rd list quantum codes.
  3. Pick a code that is not crossed out and that is worth TWO POINTS (with points listed in column D).
  4. Contribute that code to the zoo by creating a code yml file (following template.yml) and doing a pull request.

Contribute code worth THREE POINTS

  1. Go to the "trophy list" code spreadsheet: https://docs.google.com/spreadsheets/d/1LEXD9diTZNDugK_Q6ntiuhnbRUCIaVp45i5oxRKgjT4/edit#gid=1940680866
  2. Skim through the first three sheets of the file; the 1st sheet lists classical codes and the 2nd and 3rd list quantum codes.
  3. Pick a code that is not crossed out and that is worth THREE POINTS (with points listed in column D).
  4. Contribute that code to the zoo by creating a code yml file (following template.yml) and doing a pull request.

arXiv vs doi citation format issue

There is a slight caveat when using the \cite{arXiv:...} instead of \cite{doi:...}.

I just encountered an interesting case where the arXiv is not able to provide the correct doi:
\cite{arXiv:1604.04062} will lead to the same citation as \cite{doi:10.26421/QIC16.15-16} as stated on arxiv.org, which results in:
“[]”, Quantum Information and Computation 16, (2016). DOI,
while the correct citation should be:
\cite{doi:10.26421/QIC16.15-16-1}, which gives
B. Criger and B. Terhal, “Noise thresholds for the [4,2,2]-concatenated toric code”, Quantum Information and Computation 16, 1261 (2016). DOI
The DOI is wrong (or not specific enough) on the arXiv website in the first place. So it seems citing using DOI can give a consistently reliable result.

Tex commands

Implement tex command \ket{...} = \left|...\right\rangle

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.