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)
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
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. Si prevede che ili-esimo Pauli inmsmt_basescorrisponda allai-esima sezione dibool_arraylungo ilmeas_basis_axis. - dict : La
i-esima chiave rappresenta una base di misura che si presume corrisponda allai-esima sezione 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 tra i 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 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 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 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 esserebool_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 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 (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 inbasis_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
- ValueError –
avg_axiscontiene valori negativi. - ValueError –
meas_basis_axisèNonemalen(basis_mapping) != 1. - ValueError – Il numero di elementi in
basis_mappingnon è uguale alla lunghezza dibool_arraylungomeas_basis_axis. - ValueError – Un osservabile non rientra nelle basi di misura.
get_measurement_bases
get_measurement_bases(observables, bases_in_int_format=True)
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)
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
- isa_observable (Pauli |SparsePauliOp |SparseObservable) – Un oggetto di Pauli, SparsePauliOp, o SparseObservable.
- canonical_qubits (Sequence[int]) – Una sequenza che specifica il qubit fisico per ogni 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 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)
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
- isa_observable (Pauli |SparsePauliOp |SparseObservable) – Un oggetto di 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