Utilità
qiskit_mitigation.utils
Strumenti di mitigazione di Qiskit.
load_tasks_from_result
load_tasks_from_result(result, return_trex=False)
Carica gli oggetti MitigationTask da un risultato di esecuzione utilizzando i dati passthrough_data salvati nel risultato.
Parametri
- result (QuantumProgramResult) – L'oggetto "resul" da cui caricare le attività.
- return_trex (bool) – Se True, includere l'elemento di calibrazione TREX nell'elenco restituito degli oggetti
MitigationTask.
Risultati
Elenco degli oggetti MitigationTask che hanno generato il programma che ha prodotto il risultato indicato.
Tipo di restituzione
elenco [ MitigationTask ]
find_combined_unique_layers
find_combined_unique_layers(circuits, mitigation_types=None, custom_boxing_options=None, box_types='all')
Restituisce i livelli "boxed" univoci individuati nei circuiti specificati, utilizzando le opzioni di "boxing" specificate.
L'elenco restituito contiene un'istanza di ciascun livello incapsulato distinto (rappresentato come CircuitInstruction) presente nei circuiti di input. Alcuni metodi di mitigazione impongono l'uso di opzioni di boxing pertinenti. Fornendo i metodi di mitigazione desiderati, queste opzioni vengono applicate durante il raggruppamento dei circuiti per individuare livelli univoci. Si raccomanda di fornire i metodi di mitigazione richiesti per garantire che i livelli univoci utilizzati per l'apprendimento siano gli stessi utilizzati in fase di esecuzione. È possibile filtrare i riquadri restituiti in modo da ottenere solo quelli contenenti misure, solo quelli contenenti esclusivamente porte logiche oppure tutti i tipi di riquadri.
Parametri
- circuits (list[QuantumCircuit]) – Il circuito per individuare gli strati univoci.
- mitigation_types (list[MitigationTask] | None) – Elenco delle classi di mitigazione avviate con cui verranno mitigati i circuiti. Ciascun metodo di mitigazione potrebbe imporre opzioni di boxing che influiranno sui singoli livelli. Se specificato, l'elenco deve avere la stessa lunghezza di
circuits. - custom_boxing_options (dict |list[dict] | None) – Le opzioni di raggruppamento personalizzate che verranno utilizzate dalla funzione
generate_boxing_pass_manager()per individuare i livelli univoci. Se viene specificato un solo dizionario, per tutte le attività verrà utilizzata la stessa opzione di boxing personalizzata. SeNoneviene specificato, verrà utilizzata l'opzione di boxing predefinita. - box_types (Literal['gates', 'measurement', 'all']) – Può essere
"gates", o"measurements""all", corrispondenti rispettivamente a caselle di filtro con soli strati di gate, soli strati di misurazione o tutti gli strati.
Risultati
Strati con incasamento univoci individuati nei circuiti specificati utilizzando le opzioni di incasamento indicate.
Tipo di restituzione
elenco[CircuitInstruction]
executor_expectation_values
executor_expectation_values(bool_array, basis_mapping, /, meas_basis_axis=None, *, avg_axis=None, measurement_flips=None, pauli_signs=None, postselect_mask=None, gamma_factor=None, rescale_factors=None)
Calcola i valori attesi a partire dai dati di misurazione e qiskit_ibm_runtime.Executor dai metadati.
Utilizza i dati contenuti in bool_array, acquisiti tramite le basi di misura specificate nelle chiavi di basis_mapping, per calcolare le grandezze osservabili codificate nei valori di basis_mapping.
Consente, se lo si desidera, di calcolare la media su assi aggiuntivi di bool_array, come nel caso del twirling.
Supporta, se desiderato, il “twirling” delle misurazioni, il PEC e la post-selezione.
Parametri
-
bool_array (ndarray[tuple[int, ...], dtype[bool]]) – Array booleano, che presumibilmente rappresenta i dati provenienti dai qubit misurati. Gli ultimi due assi rappresentano rispettivamente il numero di scatti e il numero di bit classici. Si presume che il bit meno significativo si trovi all’indice
0dell’asse dei bit. Semeas_basis_axisè dato, quell’asse dibool_arrayindicizza le basi di misura, con lunghezzalen(basis_mapping). -
basis_mapping (dict[Pauli, list[SparsePauliOp | None]] |tuple[Sequence[SparsePauliOp], Sequence[str] | PauliList]) –
Le osservabili di Pauli e le basi associate che sono state misurate. Può essere un
tuple,(observables, msmt_bases), oppure undict,{basis: commuting_observables}.- tupla : una tupla di tipo length-2 contenente
(observables, msmt_bases), doveobservablesè una sequenza diSparsePauliOpistanze per le quali devono essere calcolati i valori attesi individuali, emsmt_basesè una sequenza di osservabili di Pauli.msmt_basesSi prevede che il -esimoiPauli in corrisponda alla -esimaisezione di lungobool_arrayilmeas_basis_axis. - dict : La -esima
ichiave rappresenta una base di misura che si presume corrisponda alla -esimaisezione dibool_arraylungo l'assemeas_basis_axis. I valori sono elenchi di osservabili (SparsePauliOp) la cui lunghezza è pari al numero di osservabili.NoneI valori vengono utilizzati quando un osservabile non commuta, a livello di qubit, con la base. Questo metodo presuppone che ogni osservabile compaia una sola volta nei valori, anche se commuta con più di una base.
- tupla : una tupla di tipo length-2 contenente
-
meas_basis_axis (int | None) – Asse di
bool_arrayche indicizza le basi di misura. L'ordine deve corrispondere a quello presente inbasis_mapping. SeNone, alloralen(basis_mapping)deve essere1, ebool_arraysi suppone che corrisponda all'unica base di misura. -
avg_axis (int |tuple[int, ...] | None) – Asse o assi opzionali di bool_array su cui calcolare la media durante il calcolo dei valori attesi. Di solito si tratta dell’asse di “rotazione”. Deve essere un numero non negativo. (L'asse degli scatti, che si presume si trovi all'indice
-2nell'array booleano, viene sempre considerato nella media). -
measurement_flips (ndarray[tuple[int, ...], dtype[bool]] | None) – Array booleano opzionale utilizzato con il "twirling" delle misurazioni. Indica quali bit sono stati acquisiti con misurazioni precedute da porte di inversione di bit. L'elaborazione dei dati utilizzerà il risultato dell'operazione XOR tra questo array e
bool_array. Deve avere la stessa forma dibool_array. -
pauli_signs (ndarray[tuple[int, ...], dtype[bool]] | None) – Array booleano opzionale utilizzato con la cancellazione probabilistica degli errori (PEC). Si ipotizza che l’asse finale indici tutte le caselle con rumore presenti nel circuito. Il valore di
Trueindica che il segno complessivo di-1dovrebbe essere associato al blocco rumoroso, in genere perché in quel blocco è stato inserito un numero dispari di errori di rumore inverso nell'ambito della randomizzazione del circuito specificata. L'asse finale viene immediatamente ridotto a una somma modulo 2 per ottenere il segno complessivo associato a ciascuna randomizzazione del circuito. La forma residua deve esserepauli_signs.shape[:-1] == bool_array.shape[:-2]. Si noti che questo array non presenta un asse "shots". -
postselect_mask (ndarray[tuple[int, ...], dtype[bool]] | None) – Array booleano facoltativo utilizzato per la post-selezione.
True(False) indica un’immagine accettata (rifiutata) dalla post-selezione. La forma deve esserebool_array.shape[:-1]. -
gamma_factor (float | None) – Fattore di riscalatura gamma da applicare ai valori attesi mitigati mediante PEC. In tal caso
None, i fattori di riscalatura saranno calcolati come il numero di campioni positivi meno il numero di campioni negativi, calcolato come1/(np.sum(~pauli_signs, axis=avg_axis) - np.sum(pauli_signs, axis=avg_axis)). L'operazione potrebbe fallire a causa della divisione per zero se il numero di campioni positivi e negativi è uguale. Si noti inoltre che ciò comporta una riscalatura di ciascun valore atteso con un fattore diverso. (Da fare: consentire di specificare un array di valori gamma). -
rescale_factors (dict[str, float] | None) – Fattore di scala per ciascun termine di Pauli unico rilevato nelle grandezze osservabili calcolate. Utilizzato in genere per i fattori di correzione finalizzati alla mitigazione degli errori di lettura (“TREX”). In tal caso
None, il fattore di scala non verrà applicato.
Risultati
Un elenco di (ad es. (val, varianza) coppie a due elementi, una per ciascuna grandezza osservabile desiderata.
Nota: le covarianze tra i termini sommati in ciascuna grandezza osservabile non sono attualmente prese in considerazione nel
varianze restituite. # Attività da svolgere
Aumenti
- ValueError – contiene
avg_axisvalori negativi, assi ripetuti o uno degli ultimi due assi (scatti, bit). - ValueError – contiene
avg_axismeas_basis_axis. - ValueError – è
meas_basis_axismaNonelen(basis_mapping) != 1. - ValueError – è
meas_basis_axisnegativo oppure indica uno degli ultimi due assi (scatti, bit) dibool_array. - ValueError – Il numero di elementi in non
basis_mappingè uguale alla lunghezza di lungobool_arraymeas_basis_axis. - ValueError – Un osservabile non rientra nelle basi di misura.
get_measurement_bases
get_measurement_bases(observables)
Scegliere le basi da campionare per calcolare i valori attesi di tutte le grandezze osservabili specificate.
In questo contesto, per “base” si intende la misurazione di un operatore di Pauli a peso pieno o ad alto peso, a partire dalla quale è possibile stimare diversi operatori di Pauli commutanti a livello di qubit.
Le basi vengono scelte raggruppando i Pauli in movimento tra le diverse grandezze osservabili.
Parametri
observables (SparsePauliOp |list[SparsePauliOp]) – Le grandezze osservabili da calcolare utilizzando il computer quantistico.
Risultati
- Elenco delle basi di Pauli da campionare, codificate in un elenco di uint8 dove 0=I,1=Z,2=X,3=Y.
- Dizionario che associa ciascuna base misurata ai rispettivi Pauli e ai relativi coefficienti per ogni osservabile. Utilizzando le basi misurate come chiavi, per ogni grandezza osservabile esiste un " SparsePauliOp " che la rappresenta.
Tipo di restituzione
tuple [ ndarray [ tuple [ int, …], dtype[uint8]], dict [ Pauli, list [ SparsePauliOp ]]]
map_observable_isa_to_canonical
map_observable_isa_to_canonical(isa_observable, canonical_qubits)
Mappare un osservabile definito in relazione al circuito transpilato nell'ordine canonico delle caselle.
Nell'ordinamento transpilato (o ISA), i qubit sono indicizzati in base alla disposizione “fisica” dei qubit nel dispositivo.
Per informazioni sulle convenzioni canoniche di ordinamento dei qubit, consultare la documentazione di Samplomatic.
Parametri
- isa_observable (Pauli |SparsePauliOp |SparseObservable) – Un oggetto di tipo Pauli, SparsePauliOp, o SparseObservable.
- canonical_qubits (Sequence[int]) – Una sequenza che specifica il qubit fisico corrispondente a ciascun qubit canonico.
Risultati
Un operatore mappato dello stesso tipo di isa_observable
Tipo di restituzione
map_observable_virtual_to_canonical
map_observable_virtual_to_canonical(virt_observable, layout, canonical_qubits)
Mappare un osservabile con ordinamento virtuale dei qubit all’ordinamento canonico “box-order”.
Per informazioni sulle convenzioni canoniche di ordinamento dei qubit, consultare la documentazione di Samplomatic.
Parametri
- virt_observable (Pauli |SparsePauliOp |SparseObservable) – Un oggetto di tipo Pauli, SparsePauliOp, o SparseObservable.
- layout (Sequence[int]) – L'elenco dei qubit fisici utilizzati per il circuito ISA.
- canonical_qubits (Sequence[int]) – Una sequenza che specifica il qubit fisico corrispondente a ciascun qubit canonico.
Risultati
Un operatore mappato dello stesso tipo di virt_observable
Tipo di restituzione
map_observable_isa_to_virtual
map_observable_isa_to_virtual(isa_observable, layout)
Mappa un osservabile definito in relazione al circuito transpilato nell'ordine virtuale.
Nell'ordinamento transpilato (o ISA), i qubit sono indicizzati in base alla disposizione “fisica” dei qubit nel dispositivo.
Parametri
- isa_observable (Pauli |SparsePauliOp |SparseObservable) – Un oggetto di tipo Pauli, SparsePauliOp, o SparseObservable.
- layout (Sequence[int]) – L'elenco dei qubit fisici utilizzati per il circuito ISA.
Risultati
Un operatore mappato dello stesso tipo di isa_observable
Tipo di restituzione