Skip to main content
IBM Quantum Platform

Utilità

qiskit_mitigation.utils

Strumenti di mitigazione di Qiskit.

load_tasks_from_result

load_tasks_from_result(result, return_trex=False)

GitHub

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')

GitHub

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. Se None viene 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)

GitHub

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 0 dell’asse dei bit. Se meas_basis_axis è dato, quell’asse di bool_array indicizza le basi di misura, con lunghezza len(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 un dict, {basis: commuting_observables}.

    • tupla : una tupla di tipo length-2 contenente (observables, msmt_bases), dove observables è una sequenza di SparsePauliOp istanze per le quali devono essere calcolati i valori attesi individuali, e msmt_bases è una sequenza di osservabili di Pauli. msmt_bases Si prevede che il -esimo i Pauli in corrisponda alla -esima i sezione di lungo bool_array il meas_basis_axis.
    • dict : La -esima i chiave rappresenta una base di misura che si presume corrisponda alla -esima i sezione di bool_array lungo l'asse meas_basis_axis . I valori sono elenchi di osservabili (SparsePauliOp) la cui lunghezza è pari al numero di osservabili. None I 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.
  • meas_basis_axis (int | None) – Asse di bool_array che indicizza le basi di misura. L'ordine deve corrispondere a quello presente in basis_mapping. Se None, allora len(basis_mapping) deve essere 1, e bool_array si 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 -2 nell'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 di bool_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 True indica che il segno complessivo di -1 dovrebbe 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 essere pauli_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 essere bool_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 come 1/(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_axis valori negativi, assi ripetuti o uno degli ultimi due assi (scatti, bit).
  • ValueError – contiene avg_axis meas_basis_axis.
  • ValueError – è meas_basis_axis ma None len(basis_mapping) != 1.
  • ValueError – è meas_basis_axis negativo oppure indica uno degli ultimi due assi (scatti, bit) di bool_array.
  • ValueError – Il numero di elementi in non basis_mapping è uguale alla lunghezza di lungo bool_array meas_basis_axis.
  • ValueError – Un osservabile non rientra nelle basi di misura.

get_measurement_bases

get_measurement_bases(observables)

GitHub

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)

GitHub

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

Pauli | SparsePauliOp | SparseObservable

map_observable_virtual_to_canonical

map_observable_virtual_to_canonical(virt_observable, layout, canonical_qubits)

GitHub

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

Pauli | SparsePauliOp | SparseObservable

map_observable_isa_to_virtual

map_observable_isa_to_virtual(isa_observable, layout)

GitHub

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

Risultati

Un operatore mappato dello stesso tipo di isa_observable

Tipo di restituzione

Pauli | SparsePauliOp | SparseObservable

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.