Skip to main content
IBM Quantum Platform

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)

GitHub

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 0 der Bitachse befindet. Ist gegeben, so meas_basis_axis indiziert diese Achse von bool_array die Messbasen mit der Länge len(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 ein tuple, (observables, msmt_bases), oder ein dict, sein.

    • (observables, msmt_bases)Tupel : Ein Tupel vom Typ „ length-2 “, das enthält, wobei observables eine Folge von SparsePauliOp Instanzen ist, für die die einzelnen Erwartungswerte berechnet werden sollen, und msmt_bases eine Folge von Pauli-Observablen ist. meas_basis_axisEs wird erwartet, dass der i . Pauli in msmt_bases dem i . Schnitt von bool_array entlang der entspricht.
    • dict : Der i te Schlüssel ist eine Maßbasis, von der angenommen wird, dass sie dem i ten Schnitt von bool_array entlang der meas_basis_axis -Achse entspricht. Die Werte sind Listen von Observablen (SparsePauliOp) mit einer Länge, die der Anzahl der Observablen entspricht. None Diese 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 in basis_mapping. übereinstimmen. 1Wenn None, dann len(basis_mapping) muss sein, und bool_array es 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 -2 im 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 wie bool_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 True deutet darauf hin, dass das Gesamtvorzeichen von -1 mit 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 in basis_mapping. Für leere Observables bei einigen der Basen sollte eine leere Liste geführt werden. In Nonediesem 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_axis enthält negative Werte.
  • ValueError – meas_basis_axis ist None aber len(basis_mapping) != 1.
  • ValueError – Die Anzahl der Einträge in basis_mapping entspricht nicht der Länge von bool_array entlang meas_basis_axis.
  • ValueError – Eine Observable wird von den Messbasen nicht abgedeckt.

get_measurement_bases

get_measurement_bases(observables, bases_in_int_format=True)

GitHub

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)

GitHub

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

Pauli | SparsePauliOp | SparseObservable

map_observable_virtual_to_canonical

map_observable_virtual_to_canonical(virt_observable, layout, canonical_qubits)

GitHub

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)

GitHub

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

Pauli | SparsePauliOp | SparseObservable

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.