Dienstprogramme
qiskit_mitigation.utils
Qiskit-Tools zur Risikominderung.
load_tasks_from_result
load_tasks_from_result(result, return_trex=False)
Laden Sie Objekte MitigationTask aus einem Ausführungsergebnis mithilfe der im Ergebnis gespeicherten „passthrough_data“-Daten.
Parameter
- result (QuantumProgramResult) – Das „resul“-Objekt, aus dem die Aufgaben geladen werden sollen.
- return_trex (bool) – Falls „True“, wird das TREX-Kalibrierungselement in die zurückgegebene Liste der „ MitigationTask “-Objekte aufgenommen.
Rückgabe
Liste der Objekte MitigationTask , aus denen das Programm mit dem angegebenen Ergebnis erstellt wurde.
Rückgabetyp
Liste [ MitigationTask ]
find_combined_unique_layers
find_combined_unique_layers(circuits, mitigation_types=None, custom_boxing_options=None, box_types='all')
Gibt die eindeutigen „Boxed“-Ebenen zurück, die in den angegebenen Schaltkreisen unter Verwendung der angegebenen „Boxing“-Optionen gefunden wurden.
Die zurückgegebene Liste enthält jeweils eine Instanz jeder einzelnen „boxed layer“ (dargestellt als CircuitInstruction) aus den Eingangsschaltungen. Einige Methoden zur Risikominderung sehen entsprechende Boxing-Optionen vor. Durch die Angabe der gewünschten Abhilfemaßnahmen werden diese Optionen bei der Einrahmung der Schaltkreise zur Ermittlung eindeutiger Schichten berücksichtigt. Es wird empfohlen, die gewünschten Mitigationsmethoden bereitzustellen, um sicherzustellen, dass die für das Training verwendeten spezifischen Schichten mit denen übereinstimmen, die bei der Ausführung verwendet werden. Die zurückgegebenen Boxen können gefiltert werden, sodass entweder nur Boxen mit Messwerten, nur Boxen, die ausschließlich Gates enthalten, oder alle Arten von Boxen zurückgegeben werden.
Parameter
- circuits (list[QuantumCircuit]) – Die Schaltung zur Ermittlung der eindeutigen Schichten.
- mitigation_types (list[MitigationTask] | None) – Liste der initiierten Milderungsklassen, mit denen die Schaltkreise gemildert werden. Jede Abhilfemaßnahme kann möglicherweise Boxing-Optionen erzwingen, die sich auf die jeweiligen Ebenen auswirken. Falls angegeben, muss die Liste dieselbe Länge wie haben
circuits. - custom_boxing_options (dict |list[dict] | None) – Die benutzerdefinierten Box-Optionen, die von der Funktion
generate_boxing_pass_manager()verwendet werden, um die eindeutigen Ebenen zu ermitteln. Wird ein einzelnes Dict angegeben, wird für alle Aufgaben dieselbe benutzerdefinierte Boxing-Option verwendet. Wenn angegebenNonewird, wird die Standardoption für das Boxing verwendet. - box_types (Literal['gates', 'measurement', 'all']) – Es kann sich entweder um
"gates", oder"measurements"handeln"all", was Filterboxen mit ausschließlich Gate-Schichten, ausschließlich Messschichten bzw. allen Schichten entspricht.
Rückgabe
Eindeutige Boxed-Layer, die unter Verwendung der angegebenen Boxing-Optionen in den angegebenen Schaltkreisen gefunden wurden.
Rückgabetyp
Liste[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)
Berechnet Erwartungswerte aus den Aufnahmedaten und qiskit_ibm_runtime.Executor den Metadaten.
Verwendet Daten in bool_array, die mit Messbasen gemäß den Schlüsseln von erfasst wurden basis_mapping, um die in den Werten von kodierten Observablen zu berechnen basis_mapping.
Ermöglicht optional die Mittelwertbildung über zusätzliche Achsen von bool_array, wie beispielsweise beim Drehen.
Unterstützt optional Mess-Twirling, PEC und Postselektion.
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.meas_basis_axisIst gegeben, sobool_arrayindiziert diese Achse von die 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 dazugehörigen Basen. Es kann ein
tuple,(observables, msmt_bases), oder eindict, sein{basis: commuting_observables}.- Tupel : Ein Tupel vom Typ „ length-2 “, das enthält
(observables, msmt_bases), wobei eine Folge vonSparsePauliOpInstanzenobservablesist, für die die einzelnen Erwartungswerte berechnet werden sollen, und eine Folge von Pauli-Observablenmsmt_basesist. Es wirdmsmt_baseserwartet, dass der.iPauli in dem.iAusschnitt von entlangbool_arrayder entsprichtmeas_basis_axis. - dict : Der te
iSchlüssel ist eine Messbasis, von der angenommen wird, dass sie dem teniSchnitt von entlangbool_arrayder -Achsemeas_basis_axisentspricht. 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.
- Tupel : Ein Tupel vom Typ „ length-2 “, das enthält
-
meas_basis_axis (int | None) – Achse von „bool_array“, die die Messbasen indiziert. Die Reihenfolge muss mit der Reihenfolge in
basis_mapping. übereinstimmen. WennNone, dannlen(basis_mapping)muss sein1, 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. Bei der Datenverarbeitung wird das Ergebnis der XOR-Verknüpfung dieses Arrays mit verwendet
bool_array. 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 deutet
Truedarauf hin, dass das Gesamtvorzeichen von mit dem verrauschten Block in Verbindung stehen-1sollte, typischerweise weil bei der angegebenen Schaltungsrandomisierung eine ungerade Anzahl von Inverse-Noise-Fehlern in diesen Block eingefügt wurde. Die letzte Achse wird sofort als Summe modulo 2 zusammengefasst, um das mit jeder Schaltungsrandomisierung verbundene Gesamtvorzeichen zu erhalten. Die verbleibende Form musspauli_signs.shape[:-1] == bool_array.shape[:-2]. sein. Beachten Sie, dass dieses Array keine „Shots“-Achse hat. -
postselect_mask (ndarray[tuple[int, ...], dtype[bool]] | None) – Optionales Boolesche Array, das für die Nachauswahl verwendet wird.
True(False) kennzeichnet eine Aufnahme, die bei der Nachauswahl akzeptiert (oder abgelehnt) wurde. Die Form mussbool_array.shape[:-1]. sein. -
gamma_factor (float | None) – Skalierungsfaktor Gamma, der auf die durch PEC gemilderten Erwartungswerte anzuwenden ist. In diesem Fall werden die Skalierungsfaktoren als Differenz zwischen der Anzahl der positiven und der Anzahl der negativen Proben berechnet
None, 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 skaliert wird. (TODO: Die Angabe eines Arrays mit Gamma-Werten ermöglichen). -
rescale_factors (dict[str, float] | None) – Skalierungsfaktor für jeden einzelnen Pauli-Term, der in den berechneten Observablen gefunden wurde. Wird in der Regel für Korrekturfaktoren zur Minderung von Auslesungsfehlern („TREX“) verwendet. In
Nonediesem Fall wird der Skalierungsfaktor nicht angewendet.
Rückgabe
Eine Liste von (z. B. (val, Varianz) 2-Tupel, jeweils eines für jede gewünschte Messgröße.
Hinweis: Kovarianzen zwischen summierten Termen innerhalb jeder Observablen werden derzeit in der
zurückgemeldete Abweichungen. # Unerledigte Aufgabe
Erhöhungen
- ValueError – enthält
avg_axisnegative Werte, sich wiederholende Achsen oder eine der beiden letzten Achsen (Aufnahmen, Bits). - ValueError – enthält
avg_axismeas_basis_axis. - ValueError – ist
meas_basis_axisNoneaberlen(basis_mapping) != 1. - ValueError – ist
meas_basis_axisnegativ oder verweist auf eine der beiden letzten Achsen (Aufnahmen, Bits) vonbool_array. - ValueError – Die Anzahl der Einträge in
basis_mappingentspricht nicht der Länge von entlangbool_arraymeas_basis_axis. - ValueError – Eine Observable wird von den Messbasen nicht abgedeckt.
get_measurement_bases
get_measurement_bases(observables)
Wählen Sie Basen für die Stichprobenauswahl aus, um die Erwartungswerte für alle gegebenen Observablen zu berechnen.
Hier bezieht sich der Begriff „Basis“ auf die Messung eines Pauli-Operators mit vollem oder hohem Gewicht, aus der sich mehrere qubitweise kommutierende Pauli-Operatoren abschätzen lassen.
Die Basen werden durch Gruppierung kommutierender Pauli-Operatoren über die verschiedenen Observablen hinweg ausgewählt.
Parameter
observables (SparsePauliOp |list[SparsePauliOp]) – Die Observablen, die mit dem Quantencomputer berechnet werden sollen.
Rückgabe
- Liste der Pauli-Basen, die in einer Liste von „ uint8 “ kodiert sind, wobei 0=I,1=Z,2=X,3=Y gilt.
- Ein Diktat, das für jede messbare Basis die entsprechenden Paulis und deren Koeffizienten für jede Observable zuordnet. Mit den gemessenen Basen als Schlüssel gibt es für jede Observable eine „ SparsePauliOp “, die diese repräsentiert.
Rückgabetyp
Tupel [ ndarray [ Tupel [ int, …], dtype[uint8]], dict [ Pauli, list [ SparsePauliOp ]]]
map_observable_isa_to_canonical
map_observable_isa_to_canonical(isa_observable, canonical_qubits)
Ordne eine relativ zum transpilierten Schaltkreis definierte Beobachtungsgröße der kanonischen Box-Reihenfolge zu.
Bei der transpilierten (oder ISA-)Reihenfolge werden die Qubits anhand der „physikalischen“ 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 Objekt von Pauli, SparsePauliOp, oder SparseObservable.
- canonical_qubits (Sequence[int]) – Eine Sequenz, die für jedes kanonische Qubit das physikalische Qubit angibt.
Rückgabe
Ein abgebildeter Operator desselben Typs wie isa_observable
Rückgabetyp
map_observable_virtual_to_canonical
map_observable_virtual_to_canonical(virt_observable, layout, canonical_qubits)
Ordne eine Observable mit virtueller Qubit-Reihenfolge der kanonischen Box-Reihenfolge zu.
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 Objekt von Pauli, SparsePauliOp, oder SparseObservable.
- layout (Sequence[int]) – Die Liste der physikalischen Qubits, die für die ISA-Schaltung verwendet werden.
- canonical_qubits (Sequence[int]) – Eine Sequenz, die für jedes kanonische Qubit das physikalische Qubit angibt.
Rückgabe
Ein abgebildeter Operator desselben Typs wie virt_observable
Rückgabetyp
map_observable_isa_to_virtual
map_observable_isa_to_virtual(isa_observable, layout)
Ordne eine Beobachtbare, die relativ zum transpilierten Schaltkreis definiert ist, der virtuellen Reihenfolge zu.
Bei der transpilierten (oder ISA-)Reihenfolge werden die Qubits anhand der „physikalischen“ Anordnung der Qubits im Gerät indiziert.
Parameter
- isa_observable (Pauli |SparsePauliOp |SparseObservable) – Ein Objekt von Pauli, SparsePauliOp, oder SparseObservable.
- layout (Sequence[int]) – Die Liste der physikalischen Qubits, die für die ISA-Schaltung verwendet werden.
Rückgabe
Ein abgebildeter Operator desselben Typs wie isa_observable
Rückgabetyp