exp_vals
qiskit_addon_utils.exp_vals
Werkzeuge zur Berechnung von Erwartungswerten.
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)
Berechnet Erwartungswerte aus Aufnahmedaten und qiskit_ibm_runtime.Executor Metadaten.
basis_dict``basis_dictVerwendet Daten in bool_array, die mit den in den Schlüsseln von bestellten Messbasen erfasst wurden, um die in den Werten von kodierten Observablen zu berechnen.
Ermöglicht optional die Mittelwertbildung über zusätzliche Achsen von bool_array, wie beispielsweise beim Drehen.
Unterstützt optional Messungszwirbeln, PEC und Nachselektion.
Parameter
-
bool_array (ndarray[tuple[int, ...], dtype[bool]]) – Boolesches Array, das vermutlich Daten von gemessenen Qubits darstellt. Die letzten beiden Achsen stellen die Anzahl der Schüsse bzw. die Anzahl der klassischen Bits dar. Es wird davon ausgegangen, dass sich das niedrigstwertige Bit am Index
0der Bitachse befindet. Ist gegeben, someas_basis_axisindiziert diese Achse vonbool_arraydie Messbasen mit der Längelen(basis_mapping). -
basis_mapping (dict[Pauli, list[SparsePauliOp | None]] |tuple[Sequence[SparsePauliOp], Sequence[str] | PauliList]) –
Die gemessenen Pauli-Observablen und die zugehörigen Basen.
{basis: commuting_observables}Es kann eintuple,(observables, msmt_bases), oder eindict, sein.(observables, msmt_bases)Tupel : Ein Tupel vom Typ „ length-2 “, das enthält, wobeiobservableseine Folge vonSparsePauliOpInstanzen ist, für die die einzelnen Erwartungswerte berechnet werden sollen, undmsmt_baseseine Folge von Pauli-Observablen ist.meas_basis_axisEs wird erwartet, dass deri. Pauli inmsmt_basesdemi. Schnitt vonbool_arrayentlang der entspricht.- dict : Der
ite Schlüssel ist eine Maßbasis, von der angenommen wird, dass sie demiten Schnitt vonbool_arrayentlang dermeas_basis_axis-Achse entspricht. Die Werte sind Listen von Observablen (SparsePauliOp) mit einer Länge, die der Anzahl der Observablen entspricht.NoneDiese Werte kommen zum Einsatz, wenn eine Observable nicht qubitweise mit der Basis kommutiert. Diese Methode geht davon aus, dass jede Observable nur einmal in den Werten vorkommt, selbst wenn sie mit mehr als einer Basis kommutiert.
-
meas_basis_axis (int | None) – Achse von
bool\_array, die die Messbasen indiziert. Die Reihenfolge muss mit der Reihenfolge inbasis_mapping. übereinstimmen.1WennNone, dannlen(basis_mapping)muss sein, undbool_arrayes wird angenommen, dass der einzigen Messbasis entspricht. -
avg_axis (int |tuple[int, ...] | None) – Optionale Achse(n) von
bool\_array, über die bei der Berechnung von Erwartungswerten gemittelt werden soll. In der Regel handelt es sich dabei um die „Drehachse“. Muss nichtnegativ sein. (Die Schussachse, die sich vermutlich am Index-2im Booleschen Array befindet, wird stets gemittelt.) -
measurement_flips (ndarray[tuple[int, ...], dtype[bool]] | None) – Optionales Boolesche Array, das beim „Measurement Twirling“ verwendet wird. Gibt an, welche Bits bei Messungen erfasst wurden, denen Bit-Flip-Gates vorausgingen.
bool_arrayBei der Datenverarbeitung wird das Ergebnis der XOR-Verknüpfung dieses Arrays mit verwendet. Muss dieselbe Form haben wiebool_array. -
pauli_signs (ndarray[tuple[int, ...], dtype[bool]] | None) – Optionales Boolesche Array, das bei der probabilistischen Fehlerkompensation (PEC) verwendet wird. Es wird davon ausgegangen, dass die letzte Achse alle verrauschten Felder im Schaltkreis indexiert. Der Wert von
Truedeutet darauf hin, dass das Gesamtvorzeichen von-1mit der verrauschten Box in Verbindung stehen sollte, typischerweise weil bei der angegebenen Schaltungsrandomisierung eine ungerade Anzahl von Inverse-Noise-Fehlern in diese Box eingefügt wurde. Die letzte Achse wird sofort als Summe modulo 2 zusammengefasst, um das mit jeder Schaltungsrandomisierung verbundene Gesamtvorzeichen zu erhalten.pauli_signs.shape[:-1] == bool_array.shape[:-2]Die verbleibende Form muss. sein. Beachten Sie, dass dieses Array keine „shots“-Achse hat. -
postselect_mask (ndarray[tuple[int, ...], dtype[bool]] | None) – Optionales boolesches Array, das für die Nachauswahl verwendet wird.
True(False) kennzeichnet eine Aufnahme, die bei der Nachauswahl akzeptiert (oder abgelehnt) wurde.bool_array.shape[:-1]Die Form muss. sein. -
gamma_factor (float | None) – Skalierungsfaktor Gamma, der auf die durch PEC gemilderten Erwartungswerte anzuwenden ist. In
Nonediesem Fall werden die Skalierungsfaktoren als Differenz zwischen der Anzahl der positiven und der Anzahl der negativen Proben berechnet, und zwar wie folgt:1/(np.sum(~pauli_signs, axis=avg_axis) - np.sum(pauli_signs, axis=avg_axis)). Dies kann aufgrund einer Division durch Null fehlschlagen, wenn die Anzahl der positiven und negativen Messwerte gleich ist. Beachten Sie außerdem, dass dadurch jeder Erwartungswert mit einem anderen Faktor neu skaliert wird. (TODO: Die Angabe eines Arrays mit Gamma-Werten ermöglichen). -
rescale_factors (Sequence[Sequence[Sequence[float]]] | None) – Skalierungsfaktor für jeden Pauli-Term in jeder Observable in jeder Basis in dem gegebenen
basis_mapping. Wird in der Regel für Korrekturfaktoren zur Minderung von Ausleseverzerrungen („TREX“) verwendet. Jeder Eintrag in der Liste entspricht einer anderen Basis und enthält eine Liste von Listen mit Faktoren für jeden Term in jeder Beobachtungsgröße, die sich auf diese Basis bezieht. Die Reihenfolge der Basen und der Observablen innerhalb jeder Basis sollte dieselbe sein wie inbasis_mapping. Für leere Observables bei einigen der Basen sollte eine leere Liste geführt werden. InNonediesem Fall wird der Skalierungsfaktor nicht angewendet.
Rückgabe
Eine Liste von (exp. val, variance) 2-Tupel, eines für jede gewünschte Beobachtungsgröße.
Anmerkung: Kovarianzen zwischen summierten Termen in jeder Beobachtungsgröße werden derzeit nicht in der
zurückgemeldete Abweichungen. # Unerledigte Aufgabe
Erhöht
- ValueError –
avg_axisenthält negative Werte. - ValueError –
meas_basis_axisistNoneaberlen(basis_mapping) != 1. - ValueError – Die Anzahl der Einträge in
basis_mappingentspricht nicht der Länge vonbool_arrayentlangmeas_basis_axis. - ValueError – Eine Observable wird von den Messbasen nicht abgedeckt.
get_measurement_bases
get_measurement_bases(observables, bases_in_int_format=True)
Wählen Sie die Basen für die Stichprobe aus, um die Erwartungswerte für alle gegebenen Beobachtungen zu berechnen.
Hier bezieht sich eine "Basis" auf die Messung eines vollgewichtigen oder hochgewichtigen Paulis, aus dem mehrere Qubit-weise pendelnde Paulis geschätzt werden können.
Die Basen werden durch Gruppierung der pendelnden Paulis über die verschiedenen Beobachtungsgrößen hinweg ausgewählt.
Parameter
- observables (SparsePauliOp |list[SparsePauliOp]) – Die mit dem Quantencomputer zu berechnenden Observablen.
- bases_in_int_format (bool) – Falls wahr, gib die Basen als Array von Ganzzahlen zurück, wobei die „Samplomatic“-Konvention zu beachten ist: I=0, Z=1, X=2, Y=3. Die Reihenfolge der Ganzzahlen richtet sich nach dem Index des jeweiligen Pauli-Teilchens in der Zeichenkette. Beispielsweise würde die Basis „IXYZ“ als [1, 3, 2, 0] zurückgegeben werden. Falls „false“, werden die Basen als Array von Zeichenfolgen zurückgegeben.
Rückgabe
- Liste der Pauli-Basen, die in einer Liste von „ uint8 “ kodiert sind, wobei „ 0=I,1=Z,2=X,3=Y “ oder eine Liste von Zeichenfolgen (basierend auf dem Parameter „bases_in_int_format“) verwendet wird.
- Diktat, das jede gemessene Basis auf die entsprechenden Paulis und ihre Koeffizienten für jede Beobachtungsgröße abbildet. Mit den gemessenen Basen als Schlüssel gibt es für jede Beobachtungsgröße eine SparsePauliOp, die sie repräsentiert.
Rückgabetyp
Tupel [ Liste [ ndarray [ Tupel [ 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)
Abbildung einer Beobachtungsgröße, die in Bezug auf den transponierten Stromkreis definiert ist, auf die kanonische Kastenordnung.
Bei der transpilierten (oder ISA-) Anordnung werden die Qubits auf der Grundlage der "physischen" Anordnung der Qubits im Gerät indiziert.
Informationen zu den gängigen Konventionen für die Anordnung von Qubits finden Sie in der Samplomatic-Dokumentation.
Parameter
- isa_observable (Pauli |SparsePauliOp |SparseObservable) – Ein Pauli-, SparsePauliOp, - oder SparseObservable -Objekt.
- canonical_qubits (Sequence[int]) – Eine Sequenz, die das physikalische Qubit für jedes kanonische Qubit angibt.
Rückgabe
Ein gemappter Operator vom gleichen Typ wie isa_observable
Rückgabetyp
map_observable_virtual_to_canonical
map_observable_virtual_to_canonical(virt_observable, layout, canonical_qubits)
Abbildung einer Beobachtungsgröße mit virtueller Qubit-Ordnung auf die kanonische Box-Ordnung.
Informationen zu den gängigen Konventionen für die Anordnung von Qubits finden Sie in der Samplomatic-Dokumentation.
Parameter
- virt_observable (Pauli |SparsePauliOp |SparseObservable) – Ein Pauli-, SparsePauliOp, - oder SparseObservable -Objekt.
- layout (Sequence[int]) – Die Liste der physikalischen Qubits, die für die isa-Schaltung verwendet werden.
- canonical_qubits (Sequence[int]) – Ein Wörterbuch, das die kanonischen Qubits innerhalb eines Feldes den physischen Qubits im Layout zuordnet.
Rückgabe
Ein gemappter Operator vom gleichen Typ wie virt_observable
map_observable_isa_to_virtual
map_observable_isa_to_virtual(isa_observable, layout)
Abbildung einer Beobachtungsgröße, die in Bezug auf die umgesetzte Schaltung definiert ist, auf die virtuelle Ordnung.
Bei der transpilierten (oder ISA-) Anordnung werden die Qubits auf der Grundlage der "physischen" Anordnung der Qubits im Gerät indiziert.
Parameter
- isa_observable (Pauli |SparsePauliOp |SparseObservable) – Ein Pauli-, SparsePauliOp, - oder SparseObservable -Objekt.
- layout (Sequence[int]) – Die Liste der physikalischen Qubits, die für die isa-Schaltung verwendet werden.
Rückgabe
Ein gemappter Operator vom gleichen Typ wie isa_observable
Rückgabetyp