Skip to content
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

Add stability experiment #93

Open
3 tasks
MarcSerraPeralta opened this issue Oct 12, 2024 · 2 comments
Open
3 tasks

Add stability experiment #93

MarcSerraPeralta opened this issue Oct 12, 2024 · 2 comments
Labels
enhancement New feature or request
Milestone

Comments

@MarcSerraPeralta
Copy link
Owner

MarcSerraPeralta commented Oct 12, 2024

TODO:

  • Add stability Layout. The "code distance" property will not be populated as it depends on the number of QEC rounds. The logical operators will be now defined in terms of the ancilla measurements, not the data qubit measurements.
  • Add experiments for all rotated surface codes. Remember that we cannot give the DEM the logical information that we want to protect, thus I believe we have to not define detectors for the first QEC cycle (but double-check that).
  • Add test that checks that the logical performance of the experiments make sense (i.e. it is not 0 or 1/2).
@MarcSerraPeralta MarcSerraPeralta added the enhancement New feature or request label Oct 12, 2024
@MarcSerraPeralta MarcSerraPeralta added this to the v0.4.0 milestone Oct 13, 2024
@MarcSerraPeralta
Copy link
Owner Author

Regarding the creation of the layout, I believe it should be added as e.g. rot_surface_code_stability inside the surface_sim.layouts.library.rot_surface_code.

@MarcSerraPeralta
Copy link
Owner Author

The Layout class is built having in mind that it corresponds to a QEC code. In an stability experiment, one does not need the layout to define a code, one only needs that a set of stabilizers is redundant (i.e. their product equals the identity).
Therefore, it can be difficult to use the Layout class to define the layout for a stability experiment.
The problem is that the observable we want to protect is not a Pauli string.
One option that does not require to change the Layout class would be to store the set of ancillas whose "product" equals the identity in the log_z and log_x attributes. However, this might be confusing.
Another option would be to create a new attribute to the layout class called e.g. logical_observable, but the problem with that is that it is not going to be stored or loaded to the Layout class unless one creates a new Layout class (which we do not want).
Another option would be to store the information about this redundancy in the qubits by adding a new attribute to them, e.g. "stability_obs", which can be True or False. Then, the experiment class will check if the qubits have this attribute (if not then it will report that the layout needs this information) and then build the observable from the ancilla qubits with attribute "stability_obs" = True.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant