Qiskit 0.19 Versionshinweise
0.19.6
Terra- 0.14.2
Keine Änderung
Aer- 0.5.2
Keine Änderung
Ignis- 0.3.3
Anmerkungen zu Upgrades
- Eine neue Anforderung scikit-learn wurde der Anforderungsliste hinzugefügt. Diese Abhängigkeit wurde in der Version 0.3.0 hinzugefügt, wurde aber in dieser Version nicht richtig als Abhängigkeit angezeigt. Dies würde zu einer
ImportErrorführen, wenn das Modulqiskit.ignis.measurement.discriminator.iq_discriminatorsimportiert würde. Dies ist nun korrekt als Abhängigkeit aufgeführt, so dassscikit-learnzusammen mit qiskit-ignis installiert wird.
Fehlerkorrekturen
- Behebt ein Problem in qiskit-ignis 0.3.2, das einen
ImportErrorauslöste, wennqiskit.ignis.verification.tomography.fitters.process_fitterimportiert wurde, ohne dasscvxpyinstalliert war.
Aqua- 0.7.3
Keine Änderung
IBM Q Anbieter 0.7.2
Keine Änderung
0.19.5
Terra- 0.14.2
Keine Änderung
Aer- 0.5.2
Keine Änderung
Ignis- 0.3.2
Fehlerkorrekturen
- Die Methode
qiskit.ignis.verification.TomographyFitter.fit()verfügt über eine verbesserte Erkennungslogik für den Standardeinrichter. Zuvor wurde die Methodecvxfitter verwendet, wenn cvxpy installiert war. Es war jedoch möglich, cvxpy ohne einen SDP-Solver zu installieren, der für die Fitter-Methodecvxgeeignet war. Diese Logik wurde überarbeitet, so dass diecvxFitter-Methode nur verwendet wird, wenncvxpyinstalliert ist und ein SDP-Löser vorhanden ist, der verwendet werden kann. Andernfalls wird derlstsqfitter verwendet. - Behebt einen Randfall in
qiskit.ignis.mitigation.measurement.fitters.MeasurementFitter.apply()für Eingaben, die ungültige oder falsche Zustandsbezeichnungen haben, die nicht mit dem Kalibrierungskreis übereinstimmen. Zuvor war dies kein Fehler und lieferte lediglich ein leeres Ergebnis. Stattdessen wird dieser Fall nun korrekt abgefangen und eineQiskitErrorException wird ausgelöst, wenn falsche Bezeichnungen verwendet werden.
Aqua- 0.7.3
Anmerkungen zu Upgrades
- Die cvxpy-Abhängigkeit, die für den svm-Klassifikator erforderlich ist, wurde aus der Liste der Anforderungen entfernt und zu einer optionalen Abhängigkeit gemacht. Der Grund dafür ist, dass die Installation von cvxpy nicht in jeder Umgebung nahtlos verläuft und oft die Installation eines Compilers erfordert, um ausgeführt werden zu können. Um den svm-Klassifikator jetzt zu verwenden, müssen Sie cvxpy installieren, indem Sie entweder
pip install cvxpy<1.1.0ausführen oder es mit aqua unterpip install qiskit-aqua[cvx]installieren.
Fehlerkorrekturen
- Die Methode
composederCircuitOpverwendeteQuantumCircuit.combine, die durchQuantumCircuit.composeersetzt wurde. Die Verwendung von combine führt zu dem Problem, dass ein Operator mit einemCircuitOp, der auf einem benannten Register basiert, die Operatoren nicht verkettet, sondern stapelt. E.g. wenn manZ ^ 2mit einer Schaltung auf der Grundlage eines benannten 2-Qubit-Registers zusammensetzt, erhält man einen 4-Qubit-Operator anstelle eines 2-Qubit-Operators. - Die Methode
MatrixOp.to_instructiongab bisher einen Operator und keine Anweisung zurück. Diese Methode wurde aktualisiert und gibt nun eine Anweisung zurück. Beachten Sie, dass dies nur funktioniert, wenn das Operatorprimitiv unitär ist, andernfalls wird bei der Konstruktion der Anweisung ein Fehler ausgelöst. - Die Methode
__hash__der KlassePauliOpverwendet die Methodeid(), die verhindert, dass Mengenvergleiche wie erwartet funktionieren, da sie auf Hash-Tabellen beruhen und identische Objekte keine identischen Hashes haben. Jetzt verwendet die Implementierung einen Hash der String-Darstellung inline mit der Implementierung in der KlassePauli.
IBM Q Anbieter 0.7.2
Keine Änderung
0.19.4
Terra- 0.14.2
Anmerkungen zu Upgrades
- Die Konverter
circuit_to_gateundcircuit_to_instructionhatten bisher das erzeugte Gatter oder die Anweisung automatisch in das aktiveSessionEquivalenceLibraryaufgenommen. Diese Konverter akzeptieren nun ein optionalesequivalence_librarySchlüsselwortargument, um anzugeben, ob und wo die konvertierten Instanzen registriert werden sollen. Das Standardverhalten ist, die konvertierte Instanz nicht zu registrieren.
Fehlerkorrekturen
- Bei den Implementierungen des mehrfach gesteuerten X-Gate (
MCXGrayCode,MCXRecursiveundMCXVChain) wurden die Eigenschaften vonnamegeändert, um ihre Implementierung genauer zu beschreiben (mcx_gray,mcx_recursivebzw.mcx_vchain) Früher trugen diese Gatter den Namenmcx` with ``MCXGate, was dazu führte, dass diese Gatter falsch transpiliert und simuliert wurden. ControlledGateinstanzen mit einem Satzctrl_statewurden in einigen Fällen nicht als gleich bewertet, selbst wenn die verglichenen Gates gleichwertig waren. Dieses Problem wurde behoben.- Die Umrechnung der SI-Einheiten für
qiskit.pulse.SetFrequencywurde korrigiert. Der BefehlSetFrequencysollte am Frontend in Hz angegeben werden und muss bei der Umwandlung vonSetFrequencyinPulseQobjInstructionin GHz umgewandelt werden. - Offene Kontrollen wurden durch Änderung der Definition eines Gates implementiert. Wenn das Gatter jedoch bereits in der Basis vorhanden ist, wird diese Definition nicht verwendet, was zu falschen Schaltungen führt, die an ein Backend gesendet werden. Dadurch wird die Abrollvorrichtung so verändert, dass sie die Definition ausgibt, wenn sie auf ein kontrolliertes Gate mit offenen Steuerelementen trifft.
Aer- 0.5.2
Keine Änderung
Ignis- 0.3.0
Keine Änderung
Aqua- 0.7.2
Vorspiel
Die VQE-Erwartungsberechnung mit Aer qasm_simulator führt nun standardmäßig zu einer Berechnung, die das erwartete Schrotrauschverhalten aufweist.
Anmerkungen zu Upgrades
- cvxpy ist nun in der Anforderungsliste als Abhängigkeit für qiskit-aqua enthalten. Es wird für den Löser des quadratischen Programms verwendet, das als Teil von
qiskit.aqua.algorithms.QSVMeingesetzt wird. Zuvor warcvxopteine optionale Abhängigkeit, die installiert werden musste, um diese Funktion zu nutzen. Dies ist nicht mehr erforderlich, da cvxpy mit qiskit-aqua installiert wird. - Für die Zustandstomographie, die als Teil von
qiskit.aqua.algorithms.HHLmit einem QASM-Backend ausgeführt wird, wird die Tomographie-Fitter-Funktionqiskit.ignis.verification.StateTomographyFitter.fit()nun explizit aufgerufen, wobei die Methode auflstsqgesetzt ist, um immer die Anpassung nach dem Prinzip der kleinsten Quadrate zu verwenden. Zuvor versuchte er gelegentlich, den Installateurcvxzu verwenden, wenncvxpyinstalliert war. Dercvx-Fitter hängt jedoch von einer speziell konfiguriertencvxpy-Installation mit einem als Teil voncvxpyinstallierten SDP-Solver ab, der in einer Umgebung mitcvxpynicht immer vorhanden ist. - Die VQE-Erwartungsberechnung mit der
qiskit.providers.aer.extensions.SnapshotExpectationValue-Anweisung von qiskit-aer ist nicht mehr standardmäßig aktiviert. Dies wurde in 0.7.0 zur Standardeinstellung gemacht, weil es deutlich schneller ist, aber es führte zu unerwarteten idealen Ergebnissen ohne Schrotrauschen (siehe #1013 für weitere Details). Die Standardeinstellung wurde nun wieder an die Erwartungen der Benutzer angepasst. Die Verwendung der schnelleren Erwartungsberechnung kann nun durch Setzen des neueninclude_customkwarg aufTrueimqiskit.aqua.algorithms.VQEKonstruktor aktiviert werden.
Neue Funktionen
- Ein neuer kwarg
include_customwurde dem Konstruktor fürqiskit.aqua.algorithms.VQEund seine Unterklassen (hauptsächlichqiskit.aqua.algorithms.QAOA) hinzugefügt. Wenn diese Option auf true gesetzt ist und derexpectationkwarg aufNonegesetzt ist (die Voreinstellung), wird die Verwendung der VQE-Erwartungsberechnung mit der Anweisungqasm_simulatorqiskit.providers.aer.extensions.SnapshotExpectationValuevon Aer aktiviert. Die spezielle Aer-Snapshot-basierte Berechnung ist viel schneller, aber mit dem idealen Ausgang ähnlich dem Zustandsvektorsimulator.
IBM Q Anbieter 0.7.2
Keine Änderung
0.19.3
Terra- 0.14.1
Keine Änderung
Aer- 0.5.2
Fehlerkorrekturen
- Fehler behoben, bei dem Statevector- und Unitary-Simulatoren eine der Anzahl der CPU-Threads entsprechende Anzahl von (parallelen) Schüssen ausführten, anstatt nur einen einzigen Schuss auszuführen.
- Behebt die fehlerhafte Anwendung der "diagonalen" qobj-Gate-Anweisungen in der Dichtematrix-Methode des Qasm-Simulators.
- Es wurde ein Fehler behoben, bei dem bedingte Gatter bei der Dichtematrix-Simulationsmethode nicht korrekt angewendet wurden.
- Behebung eines Fehlers in CZ-Gate und Z-Gate für die Methoden "density_matrix_gpu" und "density_matrix_thrust" QasmSimulator.
- Behebt ein Problem, bei dem der Speicherbedarf der Simulation auf QasmSimulator nicht überprüft wurde, wenn eine nicht-automatische Simulationsmethode verwendet wurde.
- Behebung eines Speicherlecks, das die Methoden des GPU-Simulators beeinträchtigte
Ignis- 0.3.0
Keine Änderung
Aqua- 0.7.1
Keine Änderung
IBM Q Anbieter 0.7.2
Fehlerkorrekturen
qiskit.provider.ibmq.IBMQBackend.jobs()gibt nun die korrekte Liste derIBMQJobObjekte zurück, wenn derstatuskwarg auf'RUNNING'gesetzt ist. Behebt #523- Die Paketmetadaten wurden aktualisiert, um die Abhängigkeit von
qiskit-terra>= 0.14.0 korrekt wiederzugeben. Diese Abhängigkeit wurde implizit als Teil der Veröffentlichung von 0.7.0 hinzugefügt, war aber nicht in den Paketanforderungen enthalten, so dass es früher möglich war,qiskit-ibmq-providermit einer zu alten Version vonqiskit-terrazu installieren. Behebt #677
0.19.0
Terra- 0.14.0
Vorspiel
Die Version 0.14.0 enthält mehrere neue Funktionen und Fehlerkorrekturen. Die größte Änderung in dieser Version ist die Einführung einer Quantenschaltungsbibliothek in qiskit.circuit.librarydie einige interessante Schaltkreisfamilien enthält.
Die Schaltkreisbibliothek bietet den Nutzern Zugang zu einer Vielzahl gut untersuchter Schaltkreisfamilien, deren Instanzen als Benchmarks, als Bausteine für den Aufbau komplexerer Schaltkreise oder als Werkzeug zur Erforschung der Vorteile von Quantenberechnungen gegenüber klassischen Schaltkreisen verwendet werden können. Der Inhalt dieser Bibliothek wird weiter wachsen und reifen.
Die erste Version der Schaltkreisbibliothek enthält:
standard_gatesdies sind Gatter mit fester Breite, die üblicherweise als primitive Bausteine verwendet werden und aus 1-, 2- und 3-Qubit-Gattern bestehen. Zum Beispiel dieXGate,RZZGateundCSWAPGate. Der alte Standort dieser Gates unterqiskit.extensions.standardist veraltet.generalized_gates: Es handelt sich um Familien, die sich auf beliebig viele Qubits verallgemeinern lassen, zum Beispiel aPermutationoderGMS(Globales Molmer-Sorensen-Tor).boolean_logic: Schaltungen, die Basiszustände gemäß einfacher boolescher Logikfunktionen umwandeln, wieADDoderXOR.arithmeticeine Reihe von Schaltkreisen für die klassische Arithmetik wieWeightedAdderundIntegerComparator.basis_changes: Schaltungen wie die Quanten-Fourier-Transformation,QFTdie mathematisch Basisänderungen anwenden.n_local: Muster zur einfachen Erstellung großer Schaltungen mit Rotations- und Verschränkungsschichten, wie z. BTwoLocaldas Ein-Qubit-Rotationen und Zwei-Qubit-Verschränkungen verwendet.data_preparationschaltkreise, die klassische Eingangsdaten in einen schwer zu simulierenden Quantenzustand kodieren, z. B.PauliFeatureMapoderZZFeatureMap.- Andere Schaltungen, die sich in der Literatur als interessant erwiesen haben, wie z. B
QuantumVolume,GraphState, oderIQP.
Um die Verwendung dieser Schaltungen als Bausteine zu erleichtern, haben wir eine compose() methode der qiskit.circuit.QuantumCircuit für die Komposition von Schaltungen entweder mit anderen Schaltungen (durch Verschweißen an den Enden und optionales Vertauschen von Drähten) oder mit anderen einfacheren Gattern:
>>> lhs.compose(rhs, qubits=[3, 2], inplace=True) ┌───┐ ┌─────┐ ┌───┐
lqr_1_0: ───┤ H ├─── rqr_0: ──■──┤ Tdg ├ lqr_1_0: ───┤ H ├───────────────
├───┤ ┌─┴─┐└─────┘ ├───┤
lqr_1_1: ───┤ X ├─── rqr_1: ┤ X ├─────── lqr_1_1: ───┤ X ├───────────────
┌──┴───┴──┐ └───┘ ┌──┴───┴──┐┌───┐
lqr_1_2: ┤ U1(0.1) ├ + = lqr_1_2: ┤ U1(0.1) ├┤ X ├───────
└─────────┘ └─────────┘└─┬─┘┌─────┐
lqr_2_0: ─────■───── lqr_2_0: ─────■───────■──┤ Tdg ├
┌─┴─┐ ┌─┴─┐ └─────┘
lqr_2_1: ───┤ X ├─── lqr_2_1: ───┤ X ├───────────────
└───┘ └───┘
lcr_0: 0 ═══════════ lcr_0: 0 ═══════════════════════
lcr_1: 0 ═══════════ lcr_1: 0 ═══════════════════════Damit gehen die Schaltkreise von Qiskit nicht mehr von einem impliziten Anfangszustand aus und werden auch nicht mit diesem Anfangszustand gezeichnet. Bei der Ausführung eines Schaltkreises wird in einem Backend immer noch der Anfangszustand Null angenommen.
Neue Funktionen
-
Eine neue Methode,
has_entry()wurde der Klasseqiskit.circuit.EquivalenceLibraryhinzugefügt, um schnell zu prüfen, ob ein bestimmtes Tor in der Bibliothek bekannte Zerlegungen aufweist. -
Eine neue Klasse
IQPzur Konstruktion eines momentanen Quantenpolynomschaltkreises, wurde dem Modul der Schaltkreisbibliothek hinzugefügtqiskit.circuit.library. -
Eine neue
compose()methode wurde hinzugefügt zuqiskit.circuit.QuantumCircuit. Sie ermöglicht die Komposition von zwei Quantenschaltungen, ohne dass eine davon in ein Gatter oder einen Befehl umgewandelt werden muss. Es erlaubt auch Permutationen von Qubits/Clbits zum Zeitpunkt der Komposition sowie eine optionale Änderung an Ort und Stelle. Er kann auch anstelle vonappend()verwendet werden, da er es ermöglicht, auch Anweisungen und Operatoren in die Schaltung einzubauen. -
qiskit.circuit.library.Diagonalschaltungen wurden der Schaltkreisbibliothek hinzugefügt. Diese Schaltkreise implementieren diagonale Quantenoperatoren (die nur auf der Diagonalen aus Nicht-Null-Elementen bestehen). Sie lassen sich mit dem Aer-Simulator effizienter simulieren als dichte Matrizen. -
Hinzufügen
from_label()methode zu derqiskit.quantum_info.Cliffordklasse für die Initialisierung als Tensorprodukt von Ein-Qubit-I-, X-, Y-, Z-, H- oder S-Gattern. -
Schedule Transformer
qiskit.pulse.reschedule.compress_pulses()führt einen Optimierungsdurchlauf durch, um die Nutzung des Wellenformspeichers in der Hardware zu reduzieren, indem mehrere identische Instanzen eines Impulses in einem Impulsplan durch einen einzigen Impuls ersetzt werden. Zum Beispiel:from qiskit.pulse import reschedule schedules = [] for _ in range(2): schedule = Schedule() drive_channel = DriveChannel(0) schedule += Play(SamplePulse([0.0, 0.1]), drive_channel) schedule += Play(SamplePulse([0.0, 0.1]), drive_channel) schedules.append(schedule) compressed_schedules = reschedule.compress_pulses(schedules) -
Die Website
qiskit.transpiler.Layouthat eine neue Methodereorder_bits()die verwendet wird, um eine Liste virtueller Qubits auf der Grundlage des Layout-Objekts neu zu ordnen. -
Es wurden zwei neue Methoden zur
qiskit.providers.models.PulseBackendConfigurationfür die Interaktion mit Kanälen hinzugefügt.get_channel_qubits()um eine Liste aller Qubits zu erhalten, die von dem angegebenen Kanal betrieben werden, undget_qubit_channel()um eine Liste der Kanäle zu erhalten, die auf dem angegebenen Qubit arbeiten.
-
Neue
qiskit.extensions.HamiltonianGateundqiskit.circuit.QuantumCircuit.hamiltonian()werden Methoden eingeführt, die die Hamilton'sche Entwicklung der Wellenfunktion des Schaltkreises durch einen vom Benutzer angegebenen hermiteschen Operator und die Entwicklungszeit darstellen. Die Entwicklungszeit kann aParametersein, so dass parametrisierte UCCSD- oder QAOA-ähnliche Schaltungen erstellt werden können, die zuUnitaryGateObjekten kompiliert werden, wenntimeParameter bereitgestellt werden. Die Unitary einesHamiltonianGatemit Hamilton-OperatorHund Zeitparametertist . -
Das Modul der Schaltkreisbibliothek
qiskit.circuit.librarybietet jetzt eine neue boolesche logische UND-Schaltung,qiskit.circuit.library.ANDund eine ODER-Schaltung,qiskit.circuit.library.ORzur Verfügung, die die entsprechenden Operationen mit einer variablen Anzahl von Qubits ausführen. -
Neue Fake-Backends werden unter
qiskit.test.mockhinzugefügt. Dazu gehören nachgebildete Versionen vonibmq_armonk,ibmq_essex,ibmq_london,ibmq_valencia,ibmq_cambridge,ibmq_paris,ibmq_romeundibmq_athens. Wie bei anderen gefälschten Backends enthalten diese Schnappschüsse von Kalibrierungsdaten (z. B.backend.defaults()) und Fehlerdaten (d.h.backend.properties()) die dem realen System entnommen sind und für lokale Tests, Kompilierung und Simulation verwendet werden können. -
Der Parameter
last_update_datefürBackendPropertieskann nun auch alsdatetimeObjekt übergeben werden. Zuvor wurde nur eine Zeichenkette im Format ISO8601 akzeptiert. -
Fügt hinzu
qiskit.quantum_info.Statevector.from_int()undqiskit.quantum_info.DensityMatrix.from_int()methoden, die es ermöglichen, einen rechnerischen Basiszustand für bestimmte Systemdimensionen zu konstruieren. -
Die Methoden der Klasse
qiskit.circuit.QuantumCircuitklasse zum Hinzufügen von Gates (zum Beispielh()), die zuvor dynamisch zur Laufzeit zur Klassendefinition hinzugefügt wurden, wurden zu statisch definierten Methoden der Klasse umgestaltet. Das bedeutet, dass statische Analysatoren (wie IDEs) diese Methoden jetzt lesen können.
Anmerkungen zu Upgrades
-
Ein neues Paket, python-dateutil, ist nun erforderlich und wurde der Anforderungsliste hinzugefügt. Es wird zum Parsen von Datumszeichenfolgen verwendet, die von externen Anbietern in
BackendPropertiesobjekten. -
Die Marshmallow-Schemaklassen in
qiskit.providers.modelswurden entfernt, da sie von BackendObjects nicht mehr verwendet werden. -
Die Ausgabe der Methode
to_dict()für die Klassen inqiskit.providers.modelsliegt nicht mehr in einem Format für die direkte JSON-Serialisierung vor. Je nach dem Inhalt der Instanzen dieser Klasse können in den Feldern des Diktats Numpy-Arrays und/oder komplexe Zahlen enthalten sein. Wenn Sie die Ausgabe der to_dict-Methoden in JSON serialisieren, sollten Sie sicherstellen, dass Ihr JSON-Encoder mit Numpy-Arrays und komplexen Zahlen umgehen kann. Diese beinhalten:qiskit.providers.models.BackendConfiguration.to_dict()qiskit.providers.models.BackendProperties.to_dict()qiskit.providers.models.BackendStatus.to_dict()qiskit.providers.models.QasmBackendConfiguration.to_dict()qiskit.providers.models.PulseBackendConfiguration.to_dict()qiskit.providers.models.UchannelLO.to_dict()qiskit.providers.models.GateConfig.to_dict()qiskit.providers.models.PulseDefaults.to_dict()qiskit.providers.models.Command.to_dict()qiskit.providers.models.JobStatus.to_dict()qiskit.providers.models.Nduv.to_dict()qiskit.providers.models.Gate.to_dict()
Hinweise zu veralteten Versionen
-
Die Methode
qiskit.dagcircuit.DAGCircuit.compose()methode nimmt nun eine Liste von Qubits/Clbits entgegen, die die Positionsreihenfolge der Bits angeben, die zusammengesetzt werden sollen. Die wörterbuchbasierte Methode der Zuordnung mit dem Argumentedge_mapist veraltet und wird in einer zukünftigen Version entfernt werden. -
Die Methode
combine_into_edge_map()für die Klasseqiskit.transpiler.Layoutklasse ist veraltet und wird in einer zukünftigen Version entfernt werden. Stattdessen sollte die neue Methodereorder_bits()verwendet werden, um eine Liste virtueller Qubits entsprechend dem Layout-Objekt neu zu ordnen. -
Übergabe eines
qiskit.pulse.ControlChannelObjekts über den Parameterchannelfür dieqiskit.providers.models.PulseBackendConfigurationmethodecontrol()ist veraltet und wird in einer zukünftigen Version entfernt werden. DieControlChannelObjekte werden nun aus demchannelsAttribut der Backend-Konfiguration generiert, das die Informationen über alle Kanäle und die Qubits enthält, auf denen sie arbeiten. Nun wird von der Methodecontrol()den Parameterqubitsder Form(control_qubit, target_qubit)und den Typlistodertupleentgegennehmen und eine Liste von Kontrollkanälen zurückgeben. -
Die Methoden
ANDundORvonqiskit.circuit.QuantumCircuitsind veraltet und werden in einer zukünftigen Version entfernt. Stattdessen sollten Sie die booleschen Logikklassen der Schaltkreisbibliothek verwendenqiskit.circuit.library.ANDundqiskit.circuit.library.ORverwenden und diese Objekte dann an Ihre Klasse anhängen. Zum Beispiel:from qiskit import QuantumCircuit from qiskit.circuit.library import AND qc = QuantumCircuit(2) qc.h(0) qc.cx(0, 1) qc_and = AND(2) qc.compose(qc_and, inplace=True) -
Das Modul
qiskit.extensions.standardist veraltet und wird in einer zukünftigen Version entfernt werden. Die Gatterklassen in diesem Modul wurden nachqiskit.circuit.library.standard_gatesverschoben.
Fehlerkorrekturen
-
Die
qiskit.circuit.QuantumCircuitmethodeninverse(), die Methodenmirror()sowie der SetterQuantumCircuit.datawürden einen ungültigen Schaltkreis erzeugen, wenn sie auf eine parametrisierte Schaltkreisinstanz angewendet würden. Dieses Problem wurde behoben und diese Methoden sollten nun mit einem parametrisierten Schaltkreis funktionieren. Behebt #4235 -
Bisher wurde bei der Erstellung einer kontrollierten Version eines Standard-Qiskit-Gates bei Angabe von
ctrl_stateein generischesControlledGate-Objekt zurückgegeben, während ohne dieses ein Standard-Qiskit-kontrolliertes Gate zurückgegeben wurde, wenn es definiert war. Dieser PR ermöglicht es standardmäßigen qiskit-gesteuerten Gates,ctrl_statezu verstehen.Darüber hinaus behebt dieser PR einen Fehler, bei dem das Setzen von
ctrl_stateeines bereits kontrollierten Gatters dazu führte, dass der angegebene Zustand auf die gesamte Kontrollbreite angewandt wurde, anstatt dass die Kontroll-Qubits hinzugefügt wurden. Zum Beispiel:circ = QuantumCircuit(2) circ.h(0) circ.x(1) gate = circ.to_gate() cgate = gate.control(1) c3gate = cgate.control(2, ctrl_state=0)würde
ctrl_stateauf alle drei Kontroll-Qubits angewandt, statt nur auf die beiden hinzugefügten Kontroll-Qubits. -
Es wurde ein Fehler in
random_clifford()behoben, der verhinderte, dass die gesamte Clifford-Gruppe abgetastet wurde. Behebt #4271 -
Die
qiskit.circuit.Instructionmethodeqiskit.circuit.Instruction.is_parameterized()hatte zuvorTruefür jedeInstructionInstanz zurückgegeben, die einqiskit.circuit.Parameterin irgendeinem Element desparamsArrays hatte, selbst wennParametervollständig gebunden war. Dies wurde korrigiert, so dass.is_parameterizedFalsezurückgibt, wenn der Befehl vollständig gebunden ist. -
qiskit.circuit.ParameterExpression.subs()hatte einige Fälle nicht korrekt erkannt, in denen das Ersetzen von Parametern zu zwei verschiedenenParametersObjekten in einem Ausdruck mit demselben Namen führte. Dies wurde korrigiert, so dass in diesen Fällen eineCircuitErrorerstellt wird. -
Verbesserung der Leistung von
qiskit.quantum_info.Statevectorundqiskit.quantum_info.DensityMatrixfür Low-Qubit-Schaltungssimulationen durch Optimierung der Methoden der Klasse__init__. Behebt #4281 -
Die Funktion
qiskit.compiler.transpile()arbeitet jetzt korrekt, wenn der Parameterbasis_gatesaufNonegesetzt ist. Dadurch wird jedes Gatter in der transformierten Ausgangsschaltung zugelassen, einschließlich der durch den Transpilierungsprozess hinzugefügten Gatter. Beachten Sie, dass die Verwendung dieses Parameters bei der Optimierung einige unbeabsichtigte Folgen haben kann. Einige Transpilerdurchläufe hängen davon ab, dass einbasis_gatesgesetzt ist. Zum Beispiel,qiskit.transpiler.passes.Optimize1qGatesnur die Ketten von u1, u2 und u3 Gattern optimiert und ohnebasis_gatesnicht in der Lage ist, Gatter aufzurollen, die sonst optimiert werden könnten:from qiskit import * q = QuantumRegister(1, name='q') circuit = QuantumCircuit(q) circuit.h(q[0]) circuit.u1(0.1, q[0]) circuit.u2(0.1, 0.2, q[0]) circuit.h(q[0]) circuit.u3(0.1, 0.2, 0.3, q[0]) result = transpile(circuit, basis_gates=None, optimization_level=3) result.draw()┌───┐┌─────────────┐┌───┐┌─────────────────┐ q_0: ┤ H ├┤ U2(0.1,0.3) ├┤ H ├┤ U3(0.1,0.2,0.3) ├ └───┘└─────────────┘└───┘└─────────────────┘Korrekturen #3017
Sonstige Anmerkungen
-
Die Objekte in
qiskit.providers.modelsdie zuvor unter Verwendung der Marshmallow-Bibliothek erstellt wurden, wurden so umgestaltet, dass sie nicht mehr von Marshmallow abhängig sind. Diese beinhalten:BackendConfigurationBackendPropertiesBackendStatusQasmBackendConfigurationPulseBackendConfigurationUchannelLOGateConfigPulseDefaultsCommandJobStatusNduvGate
Diese sollten ohne merkliche Änderungen ersetzt werden können, aber die von Marshmallow übernommenen Besonderheiten funktionieren möglicherweise nicht. Bitte melden Sie alle gefundenen Inkompatibilitäten.
Aer- 0.5.1
Keine Änderung
Ignis- 0.3.0
Keine Änderung
Aqua- 0.7.0
Vorspiel
Die Version von Qiskit Aqua 0.7.0 bietet eine Vielzahl neuer Funktionen und eine verbesserte Integration mit qiskit.circuit.QuantumCircuit objekten. Die zentralen Beiträge sind das Optimierungsmodul von Qiskit, ein kompletter Refactor von Operatoren, die Verwendung von Schaltkreisen als nativer Input für die Algorithmen und die Entfernung der deklarativen JSON-API.
Optimierungsmodul
Das Modul qiskit.optimization` bietet nun Funktionen zur Modellierung und Lösung quadratischer Programme. Es bietet verschiedene kurzfristige Quanten- und konventionelle Algorithmen, wie z. B. die MinimumEigenOptimizer (die z. B. VQE oder QAOA) oder CplexOptimizer, sowie eine Reihe von Konvertern zur Übersetzung zwischen verschiedenen Problemdarstellungen, wie z.B. QuadraticProgramToQubo. Eine Liste der hinzugefügten Funktionen finden Sie im Changelog.
Betreiberfluss
Die in qiskit.aqua.operators` enthaltene Operatorlogik wurde vollständig überarbeitet und ist nun ein vollständiger Satz von Werkzeugen für die Konstruktion physikalisch intuitiver Quantenberechnungen. Es enthält Zustandsfunktionen, Operatoren und Messungen und stützt sich intern auf die Operator-Objekte von Terra. Die Berechnung von Erwartungswerten und Entwicklungen wurde stark vereinfacht, und Objekte wie ExpectationFactory erzeugen den passenden, effizientesten Erwartungsalgorithmus auf der Grundlage des Eingabetyps Operator. Einen Überblick über die neuen Funktionen finden Sie im Änderungsprotokoll.
Native Schaltungen
Die Algorithmen verwenden in der Regel parametrisierte Schaltkreise als Eingabe, zum Beispiel VQE, VQC oder QSVM. Zuvor mussten diese Eingänge vom Typ VariationalForm oder FeatureMap sein, die das Schaltkreisobjekt umhüllten. Jetzt werden Schaltkreise in diesen Algorithmen nativ unterstützt, was bedeutet, dass jede individuell konstruierte QuantumCircuit an diese Algorithmen übergeben werden kann. In Kombination mit der Veröffentlichung der Schaltkreisbibliothek, die eine breite Sammlung von Schaltkreisfamilien bietet, ist es nun einfach, ausgefeilte Schaltkreise als Algorithmus-Input zu konstruieren.
Deklarative JSON-API
Die Möglichkeit, Algorithmen unter Verwendung von Wörterbüchern als Parameter auszuführen und die grafische Benutzeroberfläche von Aqua zu verwenden, wurde entfernt.
IBM Q Anbieter 0.7.0
Neue Funktionen
- Eine neue Ausnahme,
qiskit.providers.ibmq.IBMQBackendJobLimitError, wird nun ausgelöst, wenn ein Auftrag nicht übermittelt werden konnte, weil das Limit für aktive Aufträge erreicht wurde. qiskit.providers.ibmq.job.IBMQJobundqiskit.providers.ibmq.managed.ManagedJobSethaben jeweils zwei neue Methodenupdate_nameundupdate_tags. Sie werden verwendet, um den Namen und die Tags eines Auftrags bzw. eines Auftragssatzes zu ändern.qiskit.providers.ibmq.IBMQFactory.save_account()undqiskit.providers.ibmq.IBMQFactory.enable_account()akzeptieren jetzt optionale Parameterhub,groupundproject, mit denen ein Standardanbieter für die Speicherung auf der Festplatte bzw. die Verwendung angegeben werden kann.
Anmerkungen zu Upgrades
- Die Methoden
qiskit.providers.ibmq.job.IBMQJobcreation_dateundtime_per_stepgeben nun Datums- und Zeitinformationen alsdatetime-Objekt in lokaler Zeit statt in UTC zurück. Auch die Parameterstart_datetimeundend_datetimesowieqiskit.providers.ibmq.IBMQBackendService.jobs()undqiskit.providers.ibmq.IBMQBackend.jobs()können nun in Ortszeit angegeben werden. - Die Methode
qiskit.providers.ibmq.job.QueueInfo.format()verwendet nun einen benutzerdefinierten Formatiererdatetimeto string, und das Paket arrow ist nicht mehr erforderlich und wurde aus der Anforderungsliste entfernt.
Hinweise zu veralteten Versionen
- Die Methoden
from_dict()undto_dict()vonqiskit.providers.ibmq.job.IBMQJobsind veraltet und werden in der nächsten Version entfernt.
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem
nest_asyncio.apply()eine Ausnahme auslösen konnte, wenn es aufgrund von Threading keine Asyncio-Schleife gibt.