amazon-braket-sdk-python icon indicating copy to clipboard operation
amazon-braket-sdk-python copied to clipboard

Support verbatim boxes in `from_ir`

Open speller26 opened this issue 9 months ago • 0 comments

Describe the feature you'd like Right now, verbatim boxes are ignored altogether when translating OpenQASM to Circuit objects via the Circuit.from_ir method:

from braket.circuits import Circuit

oq = """
OPENQASM 3.0;
#pragma braket verbatim
box {
  h $0;
  cnot $0, $1;
}
"""
Circuit.from_ir(oq)
T  : │  0  │  1  │
      ┌───┐       
q0 : ─┤ H ├───●───
      └───┘   │   
            ┌─┴─┐ 
q1 : ───────┤ X ├─
            └───┘ 
T  : │  0  │  1  │

Verbatim boxes need to be supported for faithful translation of OpenQASM, particularly for programs with both verbatim and non-verbatim components.

Note: Implementing this feature will require expanding the OpenQASM parsing functionality in the default simulator package.

How would this feature be used? Please describe. As mentioned above, this would allow OpenQASM programs with verbatim boxes to be translated correctly.

Describe alternatives you've considered Entirely verbatim circuits, can be wrapped manually

verbatim_circuit = Circuit().add_verbatim_box(Circuit.from_ir(openqasm))

but this fails for programs with verbatim boxes in between non-verbatim instructions.

speller26 avatar May 09 '24 07:05 speller26