- The
qml.QubitStateVector
template has been removed. Instead, use :class:~pennylane.StatePrep
. (#601)
This release contains contributions from (in alphabetical order):
Andrija Paurevic
- Make
qiskit_session
available top-level. Users can now import it aspennylane_qiskit.qiskit_session
. (#593)
-
Remove support for Python 3.9. (#597)
-
Upgrade minimum supported version of PennyLane to 0.38.0. (#599)
- Added warning in the documentation of
qiskit_session
due to recent reports of unexpected behavior. (#594)
- Fix deprecated import path for
QubitDevice
. (#584)
This release contains contributions from (in alphabetical order):
Astral Cai Lillian M. A. Frederiksen Austin Huang Mudit Pandey
- Due to the removal of the
Session
andBackend
keywords in the 0.30 release ofqiskit-ibm-runtime
, the PennyLane-Qiskit plugin now pins toqiskit-ibm-runtime<=0.29
. (#587)
This release contains contributions from (in alphabetical order):
Austin Huang Mudit Pandey
-
Added support for converting Qiskit noise models to PennyLane
NoiseModels
usingload_noise_model
. (#577) (#578) -
Qiskit Sessions can now be used for the
qiskit.remote
device with theqiskit_session
context manager. (#551)
- Qiskit Runtime Primitives are supported by the
qiskit.remote
device. Circuits ran using theqiskit.remote
device will automatically call the SamplerV2 and EstimatorV2 primitives appropriately. Additionally, runtime options can be passed as keyword arguments directly to theqiskit.remote
device. (#513)
-
Support has been removed for Qiskit versions below 0.46. The minimum required version for Qiskit is now 1.0. If you want to continue to use older versions of Qiskit with the plugin, please use version 0.36 of the Pennylane-Qiskit plugin. (#536)
-
The test suite no longer runs for Qiskit versions below 0.46. (#536)
-
The
qiskit.basicaer
device has been removed because it is not supported for versions of Qiskit above 0.46. (#546) -
The IBM quantum devices,
qiskit.ibmq
,qiskit.ibmq.circuit_runner
andqiskit.ibmq.sampler
, have been removed due to deprecations of the IBMProvider and the cloud simulator "ibmq_qasm_simulator". (#550)
- The Pennylane-Qiskit plugin page has been updated to reflect the changes in both the plugin's capabilities and Qiskit. #563
This release contains contributions from (in alphabetical order):
Utkarsh Azad Lillian M. A. Frederiksen Austin Huang
-
Updated
load_qasm
to take the optional kwargmeasurements
which get performed at the end of the loaded circuit andload_qasm
can now detect mid-circuit measurements fromqasm
. (#555) -
Improvements have been made to load circuits with
SwitchCaseOp
gates with default case. (#514)
This release contains contributions from (in alphabetical order): Utkarsh Azad Lillian M. A. Frederiksen Austin Huang Mashhood Khan
-
Support is added for using the plugin devices with Qiskit 1.0. As the backend provider
qiskit.BasicAer
is no longer supported by Qiskit in 1.0, this added support does not extend to the"qiskit.aer"
device. Instead, a"qiskit.basicsim"
device is added, with the new Qiskit implementation of a Python simulator device,BasicSimulator
, as the backend. (#493) -
Backwards compatibility with Qiskit BackendV2 has now been implemented. Previously, only backends of type BackendV1 were supported but now users can choose to use BackendV2 as well. (#514)
-
Following updates to allow device compatibility with Qiskit 1.0, the version of
qiskit-ibm-runtime
is no longer capped. (#508) -
The test suite now runs with the most recent
qiskit
andqiskit-ibm-runtime
, and well as with'qiskit==0.45'
andqiskit-ibm-runtime<0.21
to monitor backward-compatibility. (#508)
This release contains contributions from (in alphabetical order): Lillian M. A. Frederiksen Austin Huang
- Following the 0.21 release of
qiskit-ibm-runtime
, which requires Qiskit 1.0, the PennyLane-Qiskit plugin pins toqiskit-ibm-runtime<0.21
. This preventspip install pennylane-qiskit
from installing Qiskit 1.0 (via the requirements ofqiskit-ibm-runtime
), which will break any environments that already have a 0.X.X version of Qiskit installed. (#486)
Lillian Frederiksen
-
The UI for passing parameters to a
qfunc
generated when loading a QiskitQuantumCircuit
into PennyLane is updated to allow passing parameters as args or kwargs, rather than as a dictionary. The old dictionary UI continues to be supported. (#406) (#428) -
Measurement operations are now added to the PennyLane template when a
QuantumCircuit
is converted usingload
. Additionally, one can override any existing terminal measurements by providing a list of PennyLanemeasurements <https://docs.pennylane.ai/en/stable/introduction/measurements.html>
_ themselves. (#405) (#466) (#467) -
Added the support for converting conditional operations based on mid-circuit measurements and two of the
ControlFlowOp
operations -IfElseOp
andSwitchCaseOp
when converting aQuantumCircuit
usingload
. (#417) (#465) -
Qiskit's classical
Expr
conditionals can also be used with the supportedControlFlowOp
operations. (#432) -
Added conversion support for more Qiskit gates to native PennyLane operations -
Barrier
,CYGate
,CHGate
,CPhase
,CCZGate
,ECRGate
, andGlobalPhaseGate
. (#449) -
Added the ability to convert a Qiskit
SparsePauliOp
instance into a PennyLaneOperator
. (#401) (#453) -
Added a
pennylane.io
entry point for converting Qiskit operators. (#453) -
Unused parameters are now ignored when a
QuantumCircuit
is converted usingload
. (#454)
-
QiskitDevice.batch_execute()
now gracefully handles empty lists of circuits. (#459) -
It is now possible to compute the gradient of a circuit with
ParameterVector
elements. (#458)
This release contains contributions from (in alphabetical order):
Mikhail Andrenkov Utkarsh Azad Lillian Frederiksen
-
The kwargs
job_tags
andsession_id
are passed to the correct arguments in thecircuit_runner
device so that they will be used in the Qiskit backend; these were previously ignored. (#358) -
The
generate_samples
method for theIBMQSamplerDevice
is updated to get counts from the nearest probability distribution rather than the quasi-distribution (which may contain negative probabilities and therefore raise errors). (#357) -
The
generate_samples
method for theIBMQSamplerDevice
now avoids raising an indexing error when some states are not populated, and labels states according to the Pennylane convention instead of Qiskit convention. (#357)
This release contains contributions from (in alphabetical order):
Lillian Frederiksen Francesco Scala
- Stop using the now-deprecated
tape.is_sampled
property. (#348)
- Update conversion of PennyLane to Qiskit operators to accommodate the addition of Singleton classes in the newest version of Qiskit. (#347)
This release contains contributions from (in alphabetical order):
Lillian Frederiksen, Matthew Silverman
- Logic updated to support Aer V2 device naming conventions. (#343)
- The old return type system has been removed. (#331)
This release contains contributions from (in alphabetical order):
Mudit Pandey, Matthew Silverman
- Added support for
qml.StatePrep
as a state preparation operation. (#326)
- Support for Python 3.8 has been removed. (#328)
This release contains contributions from (in alphabetical order):
Mudit Pandey, Jay Soni,
- Added a
RemoteDevice
(PennyLane device name:qiskit.remote
) that accepts a backend instance directly. (#304)
- The
vqe_runner
has been removed, as the Qiskit Runtime VQE program has been retired. (#313)
- The list of supported gates is replaced with
pennylane.ops._qubit__ops__
so that theCZ
gate is included. (#305)
This release contains contributions from (in alphabetical order):
Matthew Silverman, Frederik Wilde, Etienne Wodey (Alpine Quantum Technologies GmbH)
vqe_runner
has been updated to use IBMQ's VQE program. The first argument,program_id
, has now been removed. Theupload_vqe_runner
anddelete_vqe_runner
functions have also been removed. (#298)
- Updated many small things across the plugin to match re-works and deprecations in
qiskit
. The plugin can still be used in the same way as before. However, we suggest you authenticate withqiskit_ibm_provider.IBMProvider
instead ofqiskit.IBMQ
from now on, as the latter is deprecated. (#301)
This release contains contributions from (in alphabetical order):
Matthew Silverman
- The new return system from PennyLane is adopted in the plugin as well. (#281)
This release contains contributions from (in alphabetical order):
Romain Moyard.
-
.inv
is replaced byqml.adjoint
in PennyLane0.30.0
and therefore the plugin is adapted as well. (#260) -
The minimum required version of PennyLane is bumped to
0.28
. The current plugin does not work with PennyLane v0.27.
- The number of executions of the device is now correct. (#259)
This release contains contributions from (in alphabetical order):
Christina Lee Romain Moyard
-
Changed the signature of the
QubitDevice.statistics
method fromdef statistics(self, observables, shot_range=None, bin_size=None, circuit=None):
to
def statistics(self, circuit: QuantumScript, shot_range=None, bin_size=None):
- Adds testing for Python 3.11. (#237)
- Do not try to connect with an IBMQX token if it is falsy. (#234)
This release contains contributions from (in alphabetical order):
Christina Lee Albert Mitjans-Coma Matthew Silverman
- Add support for the
ISWAP
operation. (#229)
- Fix Cobyla success bool for VQE runtime. (#231)
This release contains contributions from (in alphabetical order):
Romain Moyard, Matthew Silverman
-
Improvement of the different
requirements.txt
andrequirements-ci.txt
files. (#212) -
The plugin now natively supports the adjoint of the
S
,T
, andSX
gates. (#216)
- Use the centralized Xanadu Sphinx Theme to style the Sphinx documentation. (#215)
- Defines the missing
returns_state
entry of thecapabilities
dictionary for devices. (#220)
This release contains contributions from (in alphabetical order):
Mikhail Andrenkov, Christina Lee, Romain Moyard, Antal Száva
- Add support for the operations
IsingXX
,IsingYY
,IsingZZ
(#209)
-
Fix runtime sampler due to changes on Qiskit side. (#201)
-
Pin
jinja2
to 3.0.3 because of sphinx incompatibility. (#207)
This release contains contributions from (in alphabetical order):
Samuel Banning, Romain Moyard
-
Changed a validation check such that it handles qubit numbers represented as strings. (#184)
-
Changed the VQE callback function for SciPy optimizers. (#187)
-
Switched from using the deprecated
qiskit.circuit.measure.measure
function to using a method. (#191)
- Changed the access to Hamiltonian terms
hamiltonian.terms()
as a method. (#190)
This release contains contributions from (in alphabetical order):
Thomas Bromley, Andrea Mari, Romain Moyard, Antal Száva
- Add two devices for runtime programs and one VQE runtime program solver. (#157)
- Improved the login flow when IBMQ tokens are specified as environment variables. (#169)
- Improved the quality of docstrings in the library. (#174)
This release contains contributions from (in alphabetical order):
Guillermo Alonso-Linaje, Romain Moyard, Tanner Rogalsky, Jay Soni, Antal Száva
- Defined the
QiskitDevice.batch_execute
method, to allow Qiskit backends to run multiple quantum circuits at the same time. This addition allows submitting batches of circuits to IBMQ e.g., when computing gradients internally. (#156) (#163) (#167)
-
Added native support for the
qml.Identity
operation to the Qiskit devices and converters. (#162) -
Added support for the
qml.SX
operation to the Qiskit devices. (#158) -
Added support for returning job execution times. (#160)
-
Added support for Python 3.10. (#170)
This release contains contributions from (in alphabetical order):
Guillermo Alonso-Linaje, David Ittah, Romain Moyard, Antal Száva
- Removed adding the
verbose
option to the arguments passed to the backend such that no warnings are raised. (#151)
This release contains contributions from (in alphabetical order):
Christina Lee, Jay Soni, Antal Száva
- Removed a validation check for
qml.QubitUnitary
that existed in the device and adjusted a related test case. (#144)
This release contains contributions from (in alphabetical order):
Christina Lee, Antal Száva
- Added support for the new
qml.Projector
observable in PennyLane v0.16 to the Qiskit devices. (#137)
- Deprecated Python 3.6. (#140)
- The plugin can now load Qiskit circuits with more complicated
ParameterExpression
variables. (#139)
This release contains contributions from (in alphabetical order):
Christina Lee, Vincent Wong
- For compatibility with PennyLane v0.15, the
analytic
keyword argument has been removed from all devices. Statistics can still be computed analytically by settingshots=None
. (#130)
- PennyLane-Qiskit has been upgraded to work with Qiskit version 0.25. (#132)
This release contains contributions from (in alphabetical order):
Christina Lee, Olivia Di Matteo, Josh Izaac, Antal Száva
-
With the release of Qiskit 0.23.3 gate parameters cannot be arrays. The device now converts arrays to lists. (#126)
-
When parsing the IBMQ token and the IBMQ URL, the values passed as keywords take precedence over environment variables. (#121)
-
When loading Qiskit circuits to PennyLane templates using
load
inconverter.py
, parameters withrequires_grad=False
are bound to the circuit. The old version bound objects that were not PennyLaneVariable
's, but that object class is now deprecated. (#127)
This release contains contributions from (in alphabetical order):
Christina Lee, Antal Szava
- The provided devices are now compatible with Qiskit 0.23.1. (#116)
- The Aer devices store the noise models correctly. (#114)
This release contains contributions from (in alphabetical order):
Olivia Di Matteo, Josh Izaac, Antal Száva
-
Qiskit devices are now allowed to pass transpilation options. (#108)
-
The provided devices are now compatible with Qiskit 0.23. (#112)
-
Removes PySCF from the plugin
setup.py
andrequirements.txt
. (#103) (#104) -
Fixed a bug related to extracting differentiable parameters for the Qiskit converter and PennyLane array indexing. (#106)
This release contains contributions from (in alphabetical order):
Josh Izaac, Nathan Killoran, Sagar Pahwa, Antal Száva
-
Qiskit devices now support custom wire labels. (#99) (#100)
One can now specify any string or number as a custom wire label, and use these labels to address subsystems on the device:
dev = qml.device('qiskit.ibmq', wires=['q1', 'ancilla', 0, 1]) def circuit(): qml.Hadamard(wires='q1') qml.CNOT(wires=[1, 'ancilla'])
- Adds support for Qiskit v0.20. (#101)
- When converting QASM or Qiskit circuit to PennyLane templates, the
CU1
gate is now natively supported and converted to aQubitUnitary
. (#101)
This release contains contributions from (in alphabetical order):
Maria Schuld, Antal Száva
- Now supports Qiskit version 0.19.1. As a result of breaking changes within Qiskit, version 0.18 and below are no longer supported. (#81) (#85) (#86)
-
Ported the
QiskitDevice
class to inherit from theQubitDevice
class defined in PennyLane to use unified qubit operations and ease development. (#83) -
Added a test for returning probabilities when using the
IBMQDevice
. (#82)
-
Added a type conversion of parameters for parametrized gates, and renamed various gates for Qiskit version 0.18.0 support. (#81)
-
Renamed
QiskitDevice.probabilities
toQiskitDevice.probability
to overloadpennylane.Device.probability
. This fixes a bug that raisesNotImplementedError
when a QNode is used to compute probabilities on a IBMQ device. (#80)
This release contains contributions from (in alphabetical order):
Rafael Haenel, Josh Izaac, Maria Schuld, Antal Száva
- Fixed a bug where users with
IBMQ
tokens linked to multiple providers would experience an error. (#74)
This release contains contributions from (in alphabetical order):
Antal Száva
- Fixed a bug where gradient computations always returned 0 when loading a parametrized Qiskit circuit as a PennyLane template. (#71)
This release contains contributions from (in alphabetical order):
Josh Izaac
- Removed v1
IBMQ
credentials, disallowedunitary_simulator
backend to havememory=True
and discontinuing support forQubitStateVector
on theunitary_simulator
backend due to Qiskit's 0.14.0 version. #65
This release contains contributions from (in alphabetical order):
Antal Száva
- Set
analytic=False
as default, since by default warnings are raised for hardware simulators. #64
This release contains contributions from (in alphabetical order):
Antal Száva
-
Added the ability to automatically convert Qiskit
QuantumCircuits
or QASM circuits directly into PennyLane templates. The loaded operations can be used directly inside PennyLane circuits. #55 -
Updated the list of operations such that each operation is now used from PennyLane. Added capability to specify the inverses of operations. #58
-
Added integration tests for converting objects from Qiskit using PennyLane. #57
-
Added warnings for hardware simulators using
analytic==True
when calculating expectations and variances. #59
- Removed
gates.py
including operationsRot
andBasisState
such that these operations are decomposed by PennyLane and no errors arise for theBasisState
initialized with all-zero states. #60
This release contains contributions from (in alphabetical order):
Antal Száva
- All Qiskit devices now support tensor observables using the
return expval(qml.PauliZ(0) @ qml.Hermitian(A, [1, 2]))
syntax introduced in PennyLane v0.6.
This release contains contributions from (in alphabetical order):
Josh Izaac
- Fixed a bug where backend keyword arguments, such as
backend_options
andnoise_model
, were being passed to backends that did not support it. #51
This release contains contributions from (in alphabetical order):
Josh Izaac
This is a significant release, bringing the plugin up to date with the latest PennyLane and Qiskit features.
-
The plugin and the tests have been completely re-written from scratch, to ensure high quality and remove technical debt. #44 #43
-
Samples and variance support have been added to all devices. #46
-
Multi-qubit hermitian observables are now supported, due to support being added in Qiskit version 0.12.
-
Support has been added for IBM Q Experience 2.0. #44
-
Hardware and software devices are now treated identically, with expectations, variance, and samples computed via the probability, not the amplitudes. This has several consequences:
-
It makes the code cleaner and simpler, as there is now one defined way of computing statistics.
-
It is faster in most cases, as this does not require computing large matrix-vector products, or Kronecker products. Instead, eigenvalues of single- and multi-qubit observables are computed using dyanamic programming.
-
It reduces the number of tests required.
-
-
Test suite now includes tests against the IBM Q Experience, in addition to the local simulators.
- Due to the move to IBM Q 2.0 credentials, users remaining with IBM Q v1.0 now must pass an additional URL argument to the service. The plugin has been modified to allow the user to pass this argument if required. #44
This release contains contributions from:
Shahnawaz Ahmed, Josh Izaac
- Added noise model and backend options to the devices as well as new observables.
- Added support for all PennyLane observables for calculating expectation values.
- Added (copied & adjusted from pennylane-forest) test for the expectation values.
- Added the necessary DefaultQubit device for comparison.
- Added logging.
- Changed expval_queue to obs_queue and expectations to observables as per latest pennylane.
- Reversed qregs to match the default qubit device behavior.
- Renamed devices correctly.
- Made wires explicit. If num_wires of operation is 0 then use the whole system as wires!
- Renamed the IBMQ device from
qiskit.ibm
toqiskit.ibmq
.
- Fixed the Unitary gate.
- Fixed the token loading and the shots.
- Fixed and updated to qiskit v0.10.1
- Fixed the valid expectation values of all devices. Along with it tests where fixed.
- Removed the IBMQX_TOKEN import and replace with the correct args.
- Removed the unconditional make coverage.
- Removed default qubit device, this is not tested in this package!
- Removed the
LegacySimulatorsQiskitDevice
as this isn't supported inqiskit
anymore.
- updated to
qiskit
version0.10.*
.
- Added the noise model to
BasicAerQiskitDevice
andAerQiskitDevice
with unit tests (#13) - Added unit tests for the docs (#7/#20)
- Fixed the ''multiple''
backends
keyword bug (#13). - Fixed the
par_domain
of the operations (real valued parameters) inpos.py
(#21) - Fixed documentation problems
- Started to 'fix' ''low'' code quality due to type hints with codacy (#15)
- Small typos and code cleanups
AerQiskitDevice
andLegacySimulatorQiskitDevice
with tests
- Readme & documentation
setup.py
- Code style clean-ups & code cleaning.
- Build setup with travis CI
- Removed unsied
num_runs
kwargs - Fixed the overlapping kwargs with
- Better tests taken from the ProjectQ plugin
- remove the sleep after computation.
- The device
IbmQQiskitDevice
now can load theibmqx_token
from the environment variabeIBMQX_TOKEN
- Renamed
psops
toqisktops
- The setup/build requirements are now read from
requirements.txt
. The file is included now in the distribution file. - Due to changes in qiskit (0.7.0) the Device
AerDevice
must be correctly termed toBasicAerDevice
- Due to the removal of
qiskit.unroll.CircuitBackend
the complete plugin logic needed an overhaul. Now theQuantumCircuit
is used in conjunction with the new convertersdag_to_circuit
andcircuit_to_dag
as well as the usage of the base classInstruction
. We hope that this change will work for most cases.
- The Readme: links and the usage of device instead of provider, to stay in PennyLane-lingo
- Update to qiskit 0.7.0 made changes necessary: import location have changes