amazon-braket / amazon-braket/amazon-braket-sdk-python
control-aware noise model application
- Lenguaje dominante
- Python
- Estrellas
- 373
- Forks
- 195
- Merge medio
- 4 d 15 h
- PR fusionados (30 d)
- 8
Descripción
**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
Guía de contribución
Evaluación
Este issue todavía no se ha evaluado.