-
Notifications
You must be signed in to change notification settings - Fork 49
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ECC decoder pipeline #209
ECC decoder pipeline #209
Conversation
Added multiple methods: code_generation: - Methods for creating Bicycle and Unicycle codes - Methods for assembling CSS codes - Utility methods for working with codes code_evaluation: - Methods for evaluating codes with a belief propagation decoder
Added the following dependencies: CairoMakie LDPCDecoders SparseArrays Statistics
During discussion with Anthony, he mentioned that he would add his code himself later on
- Fixed naming and organization issued identified. - Limited exports - Added additional methods to easily create unicycle and bicycle codes
- Fixed issues with typing in bicycle gen methods - Fixed issue with incorrectly copied methods for unicycle generation - Fixed imports for Nemo methods
Fixed bugs preventing the generation of Bicycle and Unicycle codes
Remove LDPCDecoders import Co-authored-by: Stefan Krastanov <[email protected]>
Remove LDPCDecoders import Co-authored-by: Stefan Krastanov <[email protected]>
Updated use case description Co-authored-by: Stefan Krastanov <[email protected]>
Remove unused import Co-authored-by: Stefan Krastanov <[email protected]>
Update use case of Bicycle matrix Co-authored-by: Stefan Krastanov <[email protected]>
Updated CSS struct to use Hx and Hz instead of just the full tableau form. Updated CSS methods to work with the new struct form
Instead of adding the widths of the two CSS sub-matrices, instead adds the heights
Added decoder pipeline, still needs to be tested as this is just an initial commit to build off of
Benchmark ResultJudge resultBenchmark Report for /home/runner/work/QuantumClifford.jl/QuantumClifford.jlJob Properties
ResultsA ratio greater than
Benchmark Group ListHere's a list of all the benchmark groups executed by this job:
Julia versioninfoTarget
Baseline
Target resultBenchmark Report for /home/runner/work/QuantumClifford.jl/QuantumClifford.jlJob Properties
ResultsBelow is a table of this job's results, obtained by running the benchmarks.
Benchmark Group ListHere's a list of all the benchmark groups executed by this job:
Julia versioninfo
Baseline resultBenchmark Report for /home/runner/work/QuantumClifford.jl/QuantumClifford.jlJob Properties
ResultsBelow is a table of this job's results, obtained by running the benchmarks.
Benchmark Group ListHere's a list of all the benchmark groups executed by this job:
Julia versioninfo
Runtime information
Architecture: x86_64
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is great, thank you for taking care of it! I left in a bunch of comments, mostly stylistic, nothing significant.
We need to add tests to this functionality. Some possible options are:
- Create a few small CSS codes and verify that the
parity_check
tableaux look fine. There is aQuantumClifford.stab_looks_good
private function that can be used for such tests. - Run the decoder on some small codes with known results, and explicitly check what they say.
- Run the decoder pipeline for a particular noise level and do a statistical test of the result, e.g. "some reasonably small bound < calculated logical error rate < some reasonably large bound"
@@ -0,0 +1,228 @@ | |||
abstract type AbstractSyndromeDecoder end |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have not reviewed this file yet.
To fix the test failures you need to add |
…ruct -Added tests for each of the methods used in creating bicycle or unicycle ECCs. - Fixed the final return step of some CSS methods, specifically the constructor and boolean_tableau - Changed name of `code_m` to `code_s`
I ran the stab_looks_good method for some small codes, and while the Bicycle code worked, the Unicycle code did not. What are some reasons that the stabilizer would not look good? I have yet to test these codes with the pipeline, but I will as soon as I'm happy with the Unicycle code Additionally, you mentioned adding something to a bibtex file, and it's probably super obvious, but could you point out where it is located? Thank you for the reviews! |
Check the content of the function -- it is a few relatively simple lines of checking whether rows commute, etc.
It is in docs/src
Thank you for contributing this! |
- remove unrelated files and update .gitignore - add an auto-generated API documentation for the ECC submodule - remove unused `boolean_tableau` - remove docstrings for already documented functions - remove a redundant function definition (code_k is already defined in terms of code_n and code_s) - minor stilystic cleanup in simple_sparse_codes - add some rudimentary CSS tests
The evaluate_decoder method should be the only public-facing method as the rest should only need to be called by evaluate_classical_decoder.