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

control-aware noise model application

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

説明

**Describe the feature you'd like**

Add a control-aware flag for `noise_model.apply(circ)`. Let us use the following example to illustrate

```
from braket.circuits import Circuit
from braket.aws import AwsDevice

device = AwsDevice("arn:aws:braket:eu-north-1::device/qpu/iqm/Garnet")
noise_model =device.emulator().noise_model

circ1 = Circuit().cz(1,2)
circ2 = Circuit().z(control=1, target=2)

noisy_circ1 = noise_model.apply(circ1)
noisy_circ2 = noise_model.apply(circ2)

print(noisy_circ1)
print(noisy_circ2)
```

We have

```
T : │ 0 │
┌────────────┐
q1 : ───●───┤ DEPO(0.02) ├─
│ └─────┬──────┘
┌─┴─┐ ┌─────┴──────┐
q2 : ─┤ Z ├─┤ DEPO(0.02) ├─
└───┘ └────────────┘
T : │ 0 │

T : │ 0 │

q1 : ───●────────────────────

┌─┴─┐ ┌──────────────┐
q2 : ─┤ Z ├─┤ DEPO(0.0011) ├─
└───┘ └──────────────┘
T : │ 0 │

```

Clearly `circ2` is unsatisfactory because the application of noise model is not aware of the fact that the "single-qubit Z" is controlled by another qubit.

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

Add a flag `noise_model.apply(circ, control_aware=True)` such that `noisy_circ1 = noisy_circ2` for the above example

**Describe alternatives you've considered**
None

**Additional context**
None

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

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

評価

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

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

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