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

control-aware noise model application

Abierto
#1,336 0 comentarios 0 reacciones 0 asignados Ver en GitHub
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

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.