amazon-braket / amazon-braket/amazon-braket-sdk-python

Simplify add and remove verbatim box

オープン
#1,236 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Python
スター
373
フォーク
195
平均マージ
4日 15時間
マージ済み PR(30日)
8

説明

**Describe the feature you'd like**

Creating a verbatim box needs `target_circuit = Circuit().add_verbatim_box(target_circuit)`, which is the only instruction with this pattern. There is also is no way to easily remove a verbatim box from a circuit, besides creating a new circuit. This is questionable for partial verbatim boxes as well.

**How would this feature be used? Please describe.**

1. Custom or piece-wise compilation
2. Running verbatim on particular simulators (i.e. with noise models)
3. Modifying nativized or previously modified circuits
4. Simplifying creating verbatim circuits

There are a few options:

1. Add self as an argument `target_circuit.add_verbatim_box()`, since it is always implied that we have access to the targeted instructions of interest
2. Simplify the call, potentially to a ; `target_circuit.verbatim()` with a flag for removal, or even to target particular ranges of instruction
3. Add a remove verbatim method, or add a remove flag to a .verbatim method could either (1) remove all verbatim boxes, or (2) remove the k-th box.

**Describe alternatives you've considered**
Current behavior for a single verbatim:
```
new = Circuit()
for ins in target_circuit.instructions:
if "verbatim" not in ins.name.lower():
new.add_instruction(ins)
```
or
```
from braket.circuis.compiler_directives import StartVerbatimBox, EndVerbatimBox
new = Circuit()
for ins in target_circuit.instructions:
if not isinstance(ins, (StartVerbatimBox, EndVerbatimBox)):
new.add_instruction(ins)
```
This is okay for removing all boxes, but it is slightly more complicated if you want to remove only a single box.

**Additional context**
Should require no changes to the existing serialization.

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。