

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Accesso ai gate nativi tramite impulsi
<a name="braket-native-gate-pulse"></a>

I ricercatori spesso hanno bisogno di sapere esattamente come le porte *native* supportate da una particolare QPU vengono implementate come impulsi. Le sequenze di impulsi vengono calibrate con cura dai fornitori di hardware, ma accedervi offre ai ricercatori l'opportunità di progettare gate migliori o di esplorare protocolli per la mitigazione degli errori, come l'estrapolazione a zero rumore mediante l'allungamento degli impulsi di porte specifiche.

Amazon Braket supporta l'accesso programmatico ai gate nativi di Rigetti.

```
import math
from braket.aws import AwsDevice
from braket.circuits import Circuit, GateCalibrations, QubitSet
from braket.circuits.gates import Rx

device = AwsDevice("arn:aws:braket:us-west-1::device/qpu/rigetti/Ankaa-3")

calibrations = device.gate_calibrations
print(f"Downloaded {len(calibrations)} calibrations.")
```

**Nota**  
I fornitori di hardware calibrano periodicamente la QPU, spesso più di una volta al giorno. L'SDK Braket consente di ottenere le calibrazioni dei gate più recenti.

```
device.refresh_gate_calibrations()
```

Per recuperare un determinato gate nativo, come il gate RX o XY, è necessario passare l'`Gate`oggetto e i qubit di interesse. Ad esempio, è possibile controllare l'implementazione a impulsi del RX (π /2) applicato su 0. qubit

```
rx_pi_2_q0 = (Rx(math.pi/2), QubitSet(0))

pulse_sequence_rx_pi_2_q0 = calibrations.pulse_sequences[rx_pi_2_q0]
```

È possibile creare un set filtrato di calibrazioni utilizzando la funzione. `filter` Si passa un elenco di porte o un elenco di. `QubitSet` Il codice seguente crea due set che contengono tutte le calibrazioni per RX (π /2) e per 0. qubit

```
rx_calibrations = calibrations.filter(gates=[Rx(math.pi/2)])
q0_calibrations = calibrations.filter(qubits=QubitSet([0]))
```

Ora puoi fornire o modificare l'azione delle porte native collegando un set di calibrazione personalizzato. Ad esempio, si consideri il seguente circuito.

```
bell_circuit = (
    Circuit()
    .rx(0, math.pi/2)
    .rx(1, math.pi/2)
    .iswap(0, 1)
    .rx(1, -math.pi/2)
)
```

Puoi eseguirlo con una calibrazione di gate personalizzata per il `rx` gate on `qubit 0` passando un dizionario di `PulseSequence` oggetti all'argomento della `gate_definitions` parola chiave. È possibile costruire un dizionario dall'attributo `pulse_sequences` dell'`GateCalibrations`oggetto. Tutte le porte non specificate vengono sostituite con la calibrazione a impulsi del fornitore di hardware quantistico.

```
nb_shots = 50
custom_calibration = GateCalibrations({rx_pi_2_q0: pulse_sequence_rx_pi_2_q0})
task = device.run(bell_circuit, gate_definitions=custom_calibration.pulse_sequences, shots=nb_shots)
```