amazon-braket / amazon-braket-sdk-python

A Python SDK for interacting with quantum devices on Amazon Braket
https://aws.amazon.com/braket/
Apache License 2.0
294 stars 118 forks source link

Support verbatim boxes in `from_ir` #972

Open speller26 opened 1 month ago

speller26 commented 1 month ago

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.