Skip to main content
IBM Quantum Platform

exp_vals

qiskit_addon_utils.exp_vals

Strumenti per il calcolo dei valori di aspettativa.

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 sulla base dei dati di misurazione e dei qiskit_ibm_runtime.Executor metadati.

Utilizza i dati contenuti in bool_array, acquisiti tramite le basi di misura specificate nelle chiavi di basis_dict, per calcolare le grandezze osservabili codificate nei valori di basis_dict.

Consente, facoltativamente, di calcolare la media su assi aggiuntivi di bool_array, come nel caso del twirling.

Supporta opzionalmente il twirling delle misure, la 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. Si prevede che il i -esimo Pauli in msmt_bases corrisponda alla i -esima sezione di bool_array lungo il meas_basis_axis.
    • dict : La i -esima chiave rappresenta una base di misura che si presume corrisponda alla i -esima 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 tra i 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 facoltativo utilizzato con il twirling delle misurazioni. Indica quali bit sono stati acquisiti con misurazioni precedute da porte di inversione dei 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 degli scatti.

  • 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. NoneIn tal caso, 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 (Sequence[Sequence[Sequence[float]]] | None) – Fattore di scala per ciascun termine di Pauli in ciascun osservabile in ciascuna base nel dato basis_mapping. Utilizzato in genere per i fattori di correzione finalizzati alla mitigazione della lettura (“TREX”). Ogni voce dell'elenco corrisponde a una base diversa e contiene un elenco di elenchi di fattori per ciascun termine di ciascuna grandezza osservabile correlata a tale base. L'ordine delle basi e degli osservabili all'interno di ciascuna base dovrebbe essere lo stesso di quello riportato in basis_mapping. Per gli osservabili vuoti relativi ad alcune delle basi, mantenere una lista vuota. NoneIn tal caso, il fattore di scala non verrà applicato.

Risultati

Un elenco di (exp. val, varianza) 2-tuple, una per ogni osservabile desiderata.

Nota: le covarianze tra i termini sommati in ciascuna osservabile non sono attualmente considerate nel

varianze restituite. # Attività da svolgere

Aumenti

  • ValueErroravg_axis contiene valori negativi.
  • ValueErrormeas_basis_axis è None ma len(basis_mapping) != 1.
  • ValueError – Il numero di elementi in basis_mapping non è uguale alla lunghezza di bool_array lungo meas_basis_axis.
  • ValueError – Un osservabile non rientra nelle basi di misura.

get_measurement_bases

get_measurement_bases(observables, bases_in_int_format=True)

GitHub

Scegliere le basi da campionare per calcolare i valori di aspettativa per tutte le osservabili date.

Qui una "base" si riferisce alla misura di un Pauli a peso pieno o ad alto peso, da cui possono essere stimati più Pauli commutativi a livello di qubit.

Le basi sono scelte raggruppando i paoli pendolari tra le diverse osservabili.

Parametri

  • observables (SparsePauliOp |list[SparsePauliOp]) – Le osservabili da calcolare con il computer quantistico.
  • bases_in_int_format (bool) – Se vero, restituisci le basi come array di interi, seguendo la convenzione di Samplomatic: I=0, Z=1, X=2, Y=3. L'ordine degli interi seguirà l'indice di ciascun Pauli nella stringa. Ad esempio, la base “IXYZ” verrebbe restituita come [1, 3, 2, 0]. Se il valore è falso, restituisce le basi sotto forma di array di stringhe.

Risultati

  • Elenco delle basi di Pauli da campionare, codificate in un elenco di uint8 dove 0=I,1=Z,2=X,3=Y oppure in un elenco di stringhe (in base al parametro bases_in_int_format).
  • Dict che mappa ogni base misurata con i relativi Paulis e i loro coefficienti per ogni osservabile. Con le basi misurate come chiavi, per ogni osservabile esiste un SparsePauliOp che lo rappresenta.

Tipo di restituzione

tupla [ lista [ ndarray [ tupla [ int, …], d[* type uint8*] ]], dict [ Pauli, list [ SparsePauliOp ]]] | tuple [ list [ str ], dict [ Pauli, list [ SparsePauliOp ]]]

map_observable_isa_to_canonical

map_observable_isa_to_canonical(isa_observable, canonical_qubits)

GitHub

Mappare un'osservabile definita rispetto al circuito transpilato in ordine di scatola canonico.

Nell'ordinamento transpiled (o ISA), i qubit sono indicizzati in base alla disposizione "fisica" dei qubit nel dispositivo.

Per informazioni sulle convenzioni di ordinamento dei qubit canonici, consultare i documenti di Samplomatic ).

Parametri

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 l'ordinamento dei qubit virtuali all'ordinamento canonico delle scatole.

Per informazioni sulle convenzioni di ordinamento dei qubit canonici, consultare i documenti di Samplomatic ).

Parametri

  • virt_observable (Pauli |SparsePauliOp |SparseObservable) – Un oggetto di Pauli, SparsePauliOp, o SparseObservable.
  • layout (Sequence[int]) – L'elenco dei qubit fisici utilizzati per il circuito isa.
  • canonical_qubits (Sequence[int]) – Un dizionario che mappa i qubit canonici all'interno di una casella con i qubit fisici all'interno del layout.

Risultati

Un operatore mappato dello stesso tipo di virt_observable

map_observable_isa_to_virtual

map_observable_isa_to_virtual(isa_observable, layout)

GitHub

Mappare un osservabile definito rispetto al circuito transpilato in ordine virtuale.

Nell'ordinamento transpiled (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.