yaleqc/qtcodes

[TCirc] Allow topological registers/circuits to hold qubits of different types and sizes

Closed this issue · 0 comments

Let's allow users to create topological circuits composed of logical qubits of different types and sizes.

Here are some steps to guide you in this task:

  1. Create a new branch on this repo named "feature/49/generalize-tcirc-qubit-type". Please regularly merge changes from master into this branch as you work on this task to keep the branch up to date.
  2. Start by reading circ.py to see how TopologicalRegister and TopologicalCircuit stores and manipulates a set of topological qubits.
  3. Begin by allowing TopologicalRegister to store logical qubits of different types, and then test that single logical qubit gates work as expected on circuits composed of logical qubits of different types.
  4. Then, get the parity measurement based cx gate (already implemented for same type qubits) to work between logical qubits of different types.
  5. Track/demonstrate your changes in a Jupyter Notebook stored under tutorials/.
  6. Add unittests to tests/.
  7. Once you have completed the above steps and there are no obvious bugs/broken code, please make a PR to merge your branch changes into master.
  8. After getting reviewed and undergoing changes, the PR will be merged into master.

(Very Rough) Estimated Time: 2-3 weeks

Other things to keep in mind:

  1. Please use the black python formatter (tutorial using vscode).
  2. Please add typing hints and docstrings to any new code you write and wherever you find these missing.