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

Fix C3SXGate roundtrip in OpenQASM 2 #9183

Merged
merged 6 commits into from
Feb 7, 2023

Conversation

jakelishman
Copy link
Member

Summary

Qiskit and its version of qelib1.inc give C3SXGate different names: c3sx and c3sqrtx respectively. At this point, changing either of these two names is likely to cause user pain, and it should not be difficult for the OpenQASM 2 exporter to simply know about this remapping, like it knows about other standard gate mappings. In practice, the structure of the exporter makes this rather difficult, but we need not expose that complexity to users.

Details and comments

Fix #7148.
Close #7241 (obsolete).

This PR is a more conservative version of #7148 that does not break backwards compatibility, and does not require changes to either Terra's version of qelib1.inc or the name of C3SXGate, both of which may cause user headaches.

It should have been easier to do this output mapping (the general exporter should know how classes / names need to be mapped to OQ2 equivalents), but as it stands, it needs to be hacked in a little bit. This way is cleaner for the user experience, though.

Qiskit and its version of `qelib1.inc` give `C3SXGate` different names:
`c3sx` and `c3sqrtx` respectively.  At this point, changing either of
these two names is likely to cause user pain, and it should not be
difficult for the OpenQASM 2 exporter to simply know about this
remapping, like it knows about other standard gate mappings.  In
practice, the structure of the exporter makes this rather difficult, but
we need not expose that complexity to users.
@jakelishman jakelishman added Changelog: Bugfix Include in the "Fixed" section of the changelog mod: qasm2 Relating to OpenQASM 2 import or export labels Nov 22, 2022
@jakelishman jakelishman requested a review from a team as a code owner November 22, 2022 18:58
@qiskit-bot
Copy link
Collaborator

Thank you for opening a new pull request.

Before your PR can be merged it will first need to pass continuous integration tests and be reviewed. Sometimes the review process can be slow, so please be patient.

While you're waiting, please feel free to review other open PRs. While only a subset of people are authorized to approve pull requests for merging, everyone is encouraged to review open pull requests. Doing reviews helps reduce the burden on the core team and helps make the project's code better for everyone.

One or more of the the following people are requested to review this:

@coveralls
Copy link

coveralls commented Nov 22, 2022

Pull Request Test Coverage Report for Build 4118341310

  • 8 of 8 (100.0%) changed or added relevant lines in 2 files are covered.
  • 2 unchanged lines in 1 file lost coverage.
  • Overall coverage decreased (-0.005%) to 85.274%

Files with Coverage Reduction New Missed Lines %
qiskit/transpiler/passes/synthesis/unitary_synthesis.py 2 93.97%
Totals Coverage Status
Change from base Build 4118340268: -0.005%
Covered Lines: 67224
Relevant Lines: 78833

💛 - Coveralls

@1ucian0 1ucian0 self-assigned this Nov 25, 2022
Copy link
Member

@1ucian0 1ucian0 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some comments around.

test/python/circuit/test_circuit_qasm.py Show resolved Hide resolved
test/python/circuit/test_circuit_qasm.py Show resolved Hide resolved
test/python/circuit/test_circuit_qasm.py Show resolved Hide resolved
qiskit/circuit/library/standard_gates/x.py Show resolved Hide resolved
@mergify mergify bot merged commit 00b4754 into Qiskit:main Feb 7, 2023
pranay1990 pushed a commit to pranay1990/qiskit-terra that referenced this pull request Feb 9, 2023
* Fix C3SXGate roundtrip in OpenQASM 2

Qiskit and its version of `qelib1.inc` give `C3SXGate` different names:
`c3sx` and `c3sqrtx` respectively.  At this point, changing either of
these two names is likely to cause user pain, and it should not be
difficult for the OpenQASM 2 exporter to simply know about this
remapping, like it knows about other standard gate mappings.  In
practice, the structure of the exporter makes this rather difficult, but
we need not expose that complexity to users.

* Correct namespace lookup

* Break import cycle

---------

Co-authored-by: Luciano Bello <[email protected]>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
@jakelishman jakelishman deleted the fix-c3sxgate-qasm branch April 6, 2023 11:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Changelog: Bugfix Include in the "Fixed" section of the changelog mod: qasm2 Relating to OpenQASM 2 import or export
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Quantum circuits with a C3SX gate fail to convert back from qasm
4 participants