Changelog#

Version 17.7#

  • Added Garnet backend so that it can be used in simulations. #156

Version 17.6#

  • Fix unit tests compatibility with latest iqm-client. #157

Version 17.5#

  • Provider tolerates unrecognized job statuses from the server to ensure forward compatibility. #155

Version 17.4#

  • Bugfix: The delay operation is now accepted by the standard transpiler. #151

Version 17.3#

Version 17.2#

  • Bugfix in IQMOptimizeSingleQubitGates` where the angles are not properly computed for circuits with prx gates on qubits holding a resonator state, i.e. circuits that require running without move gate validation. #147

Version 17.1#

  • Small note about IQM Client’s API deprecation warning added to the user guide. #146

Version 17.0#

  • Removed support for Python 3.9.

  • Removed support for qiskit < 1.0.

  • Added support for qiskit == 1.2 and qiskit-aer == 0.15.

  • Updated the documentation.

  • IQMBackendBase.qubit_name_to_index() and IQMBackendBase.index_to_qubit_name() now raise an error when using an invalid qubit name or index, rather than returning None.

  • Refactored IQMBackend.create_run_request() to improve user experience when using IQM specific run options.

  • Moved the circuit serialization logic from IQMProvider to iqm.qiskit_iqm.qiskit_to_iqm.

  • For IQM Star quantum architectures, IQMBackendBase.target_with_resonators represents the full, physical architecture. IQMBackendBase.target represents a Qiskit-compatible version.

  • Using the Qiskit transpiler with IQMBackend:

    • You can now use the native Qiskit transpile() function to transpile a circuit to the IQM Star architecture as long as your initial circuit does not use any resonators.

    • The Qiskit transpiler now automatically uses the IQMOptimizeSingleQubitGates pass to optimize single-qubit gates if optimization_level > 0.

    • There are many new transpiler plugins available that you can use as the scheduling_method argument in Qiskit’s transpile() function. You can find them in the Qiskit documentation.

    • If your circuit contains resonators, and optionally MoveGate operations, you can use the transpile_to_IQM() function to transpile your circuit for the IQM Star architecture.

    • transpile_to_IQM() can now restrict itself to use a subset of the qubits by specifying the restrict_to_qubits argument. You will need to additionally provide a qubit mapping to the IQMBackend.run() method to ensure that the correct qubits are used.

  • Bugfix where the transpile_to_IQM() did not retain the circuit layout after transpiling.

  • Fixed IQMFakeDeneb() readout errors. Fidelities were reported as errors. #125

  • IQMBackend.target now contains symmetric gates such as CZ only in the direction they appear in the calibration set. #140

  • Deprecated features:

Version 15.6#

  • Added Python 3.12 support. #139 <https://github.com/iqm-finland/qiskit-on-iqm/pull/139>

  • Python 3.9 support is deprecated and will be removed in the future.

Version 15.5#

  • Fix compatibility with iqm-client V2 APIVariant. #132

Version 15.4#

  • Update user guide to incorporate IQM Resonance. #129

Version 15.3#

  • Multiplexed measurements explained in the user guide. #130

Version 15.2#

  • reset operation explained in the user guide. #127

Version 15.1#

  • Move a part of circuit serialization into iqm.qiskit_iqm.iqm_provider._serialize_instructions(). #126

Version 15.0#

  • Add support for classically controlled R, RX, RY, X, and Y gates. #123

  • Remove the deprecated native operation names phased_rx and measurement. #123

  • Add support for the Reset instruction. #123

Version 14.0#

  • Use dynamic quantum architecture as transpilation target for IQMBackend. #124

  • Require iqm-client >= 20.0. #124

  • Disable attestations on gh-action-pypi-publish to fix failing PyPI publishing. #124

Version 13.16#

  • Remove unnecessary build files when publishing documentation. #122

Version 13.15#

  • User guide updated. #120

Version 13.14#

  • User guide and API documentation updated. #117

Version 13.13#

  • Adjustments needed to support Qiskit V1 that are backwards compatible with qiskit < 1.0. #114

  • Updated Qiskit dependencies and testing to support qiskit >= 0.45.3 < 1.2 and qiskit-aer >= 0.13 < 0.15.

  • Adjusted documentation to recommend the use of qiskit.transpile() or transpile_to_IQM() in combination with backend.run() instead of using execute().

  • Added a DeprecationWarning for use of qiskit < 1.0. Users are encouraged to read the Qiskit migration guide to see how they need to change their code.

Version 13.12#

  • Add IQMFakeAphrodite backend #113

Version 13.11#

  • Added the option to change the timeout between waiting for results when a job is submitted. Github issue #108

  • Added support for optional MOVE gate validation bypassing for advanced users. #112

  • Require iqm-client >= 18.0. iqm-client PR #124

Version 13.10#

  • Allow inspecting a run request before submitting it for execution. #115

  • Require iqm-client >= 17.8. #115

Version 13.9#

  • Clarify the documentation on automatic transpilation. #104

  • Added a missing character to the docs. #110

  • Added IQMFakeDeneb backend for noisy simulation of the Deneb backend. #109

Version 13.8#

  • Require iqm-client >= 17.6. #106

Version 13.7#

  • Show full response error in all cases of receiving a HTTP 4xx error response. #103

  • Add new job states to support job delete operation in the backend.

Version 13.6#

  • Update the docstring of max_circuits property of IQMBackend. #95

Version 13.5#

  • Fix transpile_example so that it works also when less than 5 qubits are available. #102

Version 13.4#

  • Fix bug where Qiskit job monitoring could give an error when a job is queued. #99

Version 13.3#

  • Move examples inside the Python package. #100

Version 13.2#

  • Update code examples in user guide. #97

Version 13.1#

  • Computational resonator transpilation is now supported with transpile_to_IQM. #96

  • Require iqm-client >= 17.2. #96

  • Define move gate as swap. #96

Version 13.0#

  • Require iqm-client >= 17.0 #90

  • Add MoveGate to model the move operation between qubit and resonator.

  • Add IQMCircuit wrapper for QuantumCircuit to allow .move() operation to be used more easily.

  • Add a layout pass to ensure correct qubits are selected for transpilation based on quantum architecture.

Version 12.2#

  • Use GitHub Action as a Trusted Publisher to publish packages to PyPI. #94

Version 12.1#

  • Remove multiversion documentation. #92

Version 12.0#

  • Require iqm-client >= 16.0.

  • Remove circuit_duration_check from IQMBackend options.

  • Add max_circuit_duration_over_t2 to IQMBackend options.

Version 11.10#

  • Require iqm-client >= 15.2. Bump dependencies and dev tools. #89

Version 11.9#

  • Add name to backends. #88

Version 11.8#

  • Add IQMFakeApollo fake backend. #66

Version 11.7#

  • Update user guide with more information of execution timestamps. #85

Version 11.6#

  • Update example link in user guide. (Relates to #79.) #86

Version 11.5#

  • Use latest version of sphinx-multiversion-contrib to fix documentation version sorting. #84

Version 11.4#

  • Fix typo in how the job status is reported. #83

Version 11.3#

  • Add IQM specific circuit optimization. #81

Version 11.2#

  • Raise warning instead of error when unknown option is passed to IQMBackend.run. #82

Version 11.1#

  • Add circuit_callback option to IQMBackend. #80

  • Raise error when unknown option is passed to IQMBackend.run. Previously they were silently ignored. #80

  • Improve handling of options passed to IQMBackend.run. #80

  • Fix the type of date in result object. #80

  • IQMBackend.run can now accept circuits containing x, rx, y and ry gates. #80

Version 11.0#

  • Move qiskit_iqm package to iqm namespace. #79

Version 10.11#

  • Update user guide with information of execution timestamps. #78

Version 10.10#

  • Upgrade to qiskit ~= 0.44.1. #77

  • Make the max_circuits property of IQMBackend user-configurable. #77

  • Implement error_message method for IQMJob. #77

  • Explicitly specify symmetric CZ properties when building the transpilation target. #77

Version 10.9#

  • Upgrade to iqm-client >= 13.2. #76

Version 10.8#

  • Fix two-qubit gate error construction in IQMFakeBackend.

Version 10.7#

  • Capture execution timestamps in IQMJob.result().

Version 10.6#

  • More accurate mapping of job statuses in IQMJob.status().

  • Documentation fixes.

Version 10.5#

  • Clarify the documentation on backend options. #73

Version 10.4#

  • Support the identity gate. #71

Version 10.3#

  • Add support for Python 3.11. #70

Version 10.2#

  • Implement cancel method for IQMJob. #69

Version 10.1#

  • Update the script link for the Hello world example. #68

Version 10.0#

  • Fix a bug in the Hello world example. #67

Version 9.0#

  • Add readout errors to IQMErrorProfile. #50

Version 8.3#

  • Bugfixes for heralding run with zero shots returned. #65

  • Allow specifying calibration_set_id both as string and as UUID. #65

Version 8.2#

  • Add heralding option to IQMBackend. #63

  • Upgrade to IQMClient version 12.5. #63

Version 8.1#

  • Upgrade to IQMClient version 12.4 #61

  • Add parameter circuit_duration_check allowing to control server-side maximum circuit duration check #61

Version 8.0#

  • Update the README #58 and #60

  • Clarify the example script #62

Version 7.15#

  • Add info about custom calibration set to user guide #59

Version 7.14#

  • Generate license information for dependencies on every release #57

Version 7.13#

  • Upgrade to IQMClient version 12.2 #56

Version 7.12#

  • Upgrade to IQMClient version 12.0 #55

Version 7.11#

  • Bump Qiskit dependency to ~= 0.42.1 #54

Version 7.10#

  • Add facade backend for Adonis by introducing facade_adonis backend type #53

Version 7.9#

  • Add request into result metadata #51

Version 7.8#

  • Drop circuit metadata if it is not JSON serializable #49

  • Produce UserWarning if metadata is dropped #49

Version 7.7#

  • “Pin down” supported Python versions to 3.9 and 3.10. #40

  • Configure Tox to skip missing versions of Python interpreters when running tests. #40

  • Move project metadata and configuration to pyproject.toml. #40

Version 7.6#

  • Check that circuit metadata is JSON serializable #48

Version 7.5#

  • Adding noisy simulation by introducing IQMFakeAdonis and IQMFakeBackend #35

Version 7.4#

  • Provide version information to IQMClient. #45

Version 7.3#

  • Build and publish docs for older versions. #43

Version 7.2#

  • Make the Hello world example even easier to follow. #44

Version 7.1#

  • Add a simple example for getting started. #41

Version 7.0#

  • Use new opaque UUID for calibration_set_id. #37

Version 6.3#

  • Construct IQMJob.circuit_metadata from data retrieved from the server, if needed. #36

Version 6.2#

  • Upgrade to qiskit ~= 0.39.1 and remove the life hack of adding measurement gates to the target. #34

Version 6.1#

  • Add qubit_name_to_index and index_to_qubit_name methods to IQMBackend. #33

  • Fix the indexing order of qubits. #33

Version 6.0#

  • Implement transpiler target for IQMBackend. #32

Version 5.0#

  • Remove settings option from IQMBackend.run. #28

Version 4.6#

  • Enable mypy support. #27

Version 4.5#

  • Move calibration set ID from result’s metadata to the individual results’ metadata. #25

Version 4.4#

  • Upgrade to iqm-client 7.0. #24

  • Add calibration set ID to result’s metadata. #24

Version 4.3#

  • cortex-cli is now the preferred way of authentication.

Version 4.2#

  • Add optional calibration_set_id parameter to IQMBackend.run. #20

  • Update documentation regarding the use of Cortex CLI. #20

Version 4.1#

  • iqm-client 6.0 support. #21

Version 4.0#

  • Remove settings_path from IQMProvider and add settings option to IQMBackend.run. #17

Version 3.1#

  • Use metadata returned from iqm-client for minor improvements. #19

Version 3.0#

  • Experimental enabling of batch circuit exection. #18

Version 2.3#

  • Make settings_path optional parameter for IQMProvider. #14

  • Requires iqm-client 3.3 if settings_path is not specified.

Version 2.2#

  • Use IQM Client’s get_run_status instead of get_run to retrieve status. #13

  • Requires iqm-client 3.2

Version 2.1#

  • Allow serialization of barrier operations. #12

Version 2.0#

  • Update user authentication to use access token. #11

  • Upgrade IQMClient to version >= 2.0 #11

Version 1.1#

Version 1.0#

  • Updated documentation layout to use sphinx-book-theme. #6

Version 0.2#

  • Publish qiskit_iqm. #4

  • Implement functionality to serialize compatible circuits, send for execution and parse returned results. #3

Version 0.1#

  • Project skeleton created.