qiskit-advocate/qamp-fall-21

QEC: Extend qtcodes

amirebrahimi opened this issue · 11 comments

Description

The purpose of this project is to take the great work done on qtcodes and extend it to:

  • Add support for rectangular geometry
  • Build topological circuits using qubits of varying code types and sizes
  • Allow for specifying the overall topology of many logical qubits

As a stretch goal, we'd like to:

  • Demonstrate magic state distillation
  • Implement support for twist-based lattice surgery

Mentor/s

James Wootton

Participants

Amir Ebrahimi
Jeffrey Gong
Shantanu Jha

Deliverable

Improvements to the qtcodes project.

@Phionx would you like to work with @amirebrahimi under the mentorship project to extend your qtcodes project? @quantumjim Would you like to be a mentor if this is an extension of qtcodes?

Sure! The more collaborators on qtcodes the better :)
Feel free to explore https://github.com/yaleqc/qtcodes/issues for potential ideas or open issues with new ideas!

My last project was based on designing a surface code for an asymmetric error channel that could correct 2 Z errors and single X errors. I would love to work on this project if it is on similar lines. @amirebrahimi
I am still exploring qtcodes, but I would love to contribute if you ever wish to implement https://arxiv.org/abs/1808.03927 @quantumjim

@Phionx @amirebrahimi Can you please upload your presentation here by the end of today? Thank you!

@HuangJunye - Here's an updated version
#30 QEC Extend qtcodes.pdf

Checkpoint 2:
We have completed extending the library to have rectangular surface code encoding/decoding with yaleqc/qtcodes#58
We have a PR in-flight (yaleqc/qtcodes#53) for allowing different logical qubit types to be used in a circuit together.

Additionally, we removed a previous dependency on pydot for qtcodes and now use matplotlib drawing via retworkx (yaleqc/qtcodes#57)

checkpoint_2_resized

@amirebrahimi Can you please link the PRs you have done during QAMP here? A quick search showed 6 PRs on the qtcodes repo, but it would be good to have your confirmation: https://github.com/yaleqc/qtcodes/pulls?q=is%3Apr+is%3Aclosed+author%3Aamirebrahimi

Sure thing, @HuangJunye.

yaleqc/qtcodes#51 (fixed some tutorial issues)
yaleqc/qtcodes#57 (removed pydot dependency)
yaleqc/qtcodes#58 (added rectangular surface code geometry support)
yaleqc/qtcodes#69 (refactored repetition qubit to be an XXZZ surface code and also added a phase-flip protected version)
yaleqc/qtcodes#72 (consolidated various tests throughout the project to use common code)