Skip to main content
Travis Codecov coverage Codacy grade Read the Docs PyPI PyPI - Python Version

PennyLane is a cross-platform Python library for quantum machine learning, automatic differentiation, and optimization of hybrid quantum-classical computations.

Qiskit is an open-source compilation framework capable of targeting various types of hardware and a high-performance quantum computer simulator with emulation capabilities, and various compiler plug-ins.

This PennyLane plugin allows to use both the software and hardware backends of Qiskit as devices for PennyLane.

Features

  • Provides three devices to be used with PennyLane: qiskit.basicaer, qiskit.aer and qiskit.ibmq. These devices provide access to the various backends.

  • Supports a wide range of PennyLane operations and expectation values across the providers.

  • Combine Qiskit’s high performance simulator and hardware backend support with PennyLane’s automatic differentiation and optimization.

Installation

This plugin requires Python version 3.5 and above, as well as PennyLane and Qiskit. Installation of this plugin, as well as all dependencies, can be done using pip:

pip install pennylane-qiskit

To test that the PennyLane Qiskit plugin is working correctly you can run

$ make test

in the source folder. Tests restricted to a specific provider can be run by executing make test-basicaer, make test-aer make test-ibmq.

Getting started

Once the PennyLane-Qiskit plugin is installed, the three provided Qiskit devices can be accessed straightaway in PennyLane.

You can instantiate a 'qiskit.aer' device for PennyLane with:

import pennylane as qml
dev = qml.device('qiskit.aer', wires=2)

This device can then be used just like other devices for the definition and evaluation of QNodes within PennyLane. A simple quantum function that returns the expectation value of a measurement and depends on three classical input parameters would look like:

@qml.qnode(dev)
def circuit(x, y, z):
    qml.RZ(z, wires=[0])
    qml.RY(y, wires=[0])
    qml.RX(x, wires=[0])
    qml.CNOT(wires=[0, 1])
    return qml.expval(qml.PauliZ(wires=1))

You can then execute the circuit like any other function to get the quantum mechanical expectation value.

circuit(0.2, 0.1, 0.3)

You can also change the default device’s backend with

dev = qml.device('qiskit.aer', wires=2, backend='unitary_simulator')

To get a current overview what backends are available you can query this by

dev.capabilities()['backend']

While the device 'qiskit.aer' is the standard go-to simulator that is provided along the Qiskit main package installation, there exists a natively included python simulator that is slower but will work usually without the need to check out other dependencies (gcc, blas and so on) which can be used by 'qiskit.basicaer'.

Another important difference between the two is that while 'qiskit.aer' supports a simulation with noise, 'qiskit.basicaer' does not.

Noise models

You can instantiate a noise model and apply it to the device by calling

import pennylane as qml

import qiskit
from qiskit.providers.aer.noise.device import basic_device_noise_model

qiskit.IBMQ.load_account()
provider = qiskit.IBMQ.get_provider(group='open')
ibmq_16_melbourne = provider.get_backend('ibmq_16_melbourne')
device_properties = ibmq_16_melbourne.properties()

noise_model = basic_device_noise_model(device_properties)

dev = qml.device('qiskit.aer', wires=2, noise_model=noise_model)

Please refer to the Qiskit documentation for more information on noise models.

IBM Q Experience

PennyLane-Qiskit supports running PennyLane on IBM Q hardware via the qistkit.ibmq device. You can choose between different backends - either simulators or real hardware.

import pennylane as qml
dev = qml.device('qiskit.ibmq', wires=2, backend='ibmq_16_melbourne')

By default, the qiskit.ibmq device will attempt to use an already active or stored IBM Q account. If none are available, you may also directly pass your IBM Q API token, as well as an optional URL:

import pennylane as qml
dev = qml.device('qiskit.ibmq', wires=2, backend='ibmq_qasm_simulator', ibmqx_token="XXX")

In order to avoid accidentally publishing your token, it is best to store it using the qiskit.IBMQ.save_account() function. Alternatively, you can specify the token or URL via the PennyLane configuration file by adding a section such as

[qiskit.global]

  [qiskit.ibmq]
  ibmqx_token = "XXX"
  ibmqx_url = "XXX"

Note that, by default, the qiskit.ibmq device uses the simulator backend ibmq_qasm_simulator, but this may be changed to any of the real backends as given by

dev.capabilities()['backend']

Please refer to the plugin documentation as well as to the PennyLane documentation for further reference.

How to cite

If you are doing research using PennyLane, please cite our whitepaper:

Ville Bergholm, Josh Izaac, Maria Schuld, Christian Gogolin, Carsten Blank, Keri McKiernan and Nathan Killoran. PennyLane. arXiv, 2018. arXiv:1811.04968

Contributing

We welcome contributions - simply fork the repository of this plugin, and then make a pull request containing your contribution. All contributers to this plugin will be listed as authors on the releases.

We also encourage bug reports, suggestions for new features and enhancements, and even links to cool projects or applications built on PennyLane.

Authors

Shahnawaz Ahmed, Carsten Blank, Sebastian Boerakker, Christian Gogolin, Josh Izaac.

Support

If you are having issues, please let us know by posting the issue on our Github issue tracker.

License

The PennyLane qiskit plugin is free and open source, released under the Apache License, Version 2.0.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

PennyLane-qiskit-0.8.1.tar.gz (15.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

PennyLane_qiskit-0.8.1-py3-none-any.whl (24.1 kB view details)

Uploaded Python 3

File details

Details for the file PennyLane-qiskit-0.8.1.tar.gz.

File metadata

  • Download URL: PennyLane-qiskit-0.8.1.tar.gz
  • Upload date:
  • Size: 15.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.1.0.post20200127 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.6

File hashes

Hashes for PennyLane-qiskit-0.8.1.tar.gz
Algorithm Hash digest
SHA256 d76c34496c303c6ab159fe37ec2e60d05498910d941cc7595041e2f9f4e09e16
MD5 9f1573a112b834bbff429949a99c2733
BLAKE2b-256 44bab8b3c79fdfa9f5f95032e1a42e7cada8c91b0a9065bc61f71d6c4005b5b6

See more details on using hashes here.

File details

Details for the file PennyLane_qiskit-0.8.1-py3-none-any.whl.

File metadata

  • Download URL: PennyLane_qiskit-0.8.1-py3-none-any.whl
  • Upload date:
  • Size: 24.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.1.0.post20200127 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.6

File hashes

Hashes for PennyLane_qiskit-0.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2ab78ecb1c4d7e5879f1067c8153ad956a684b25112dc4e61867bae4e8335591
MD5 954452097bfe7ab1760e47499645fa04
BLAKE2b-256 b132a59a1572ded8de1dbb450168a3f0a5a6b4e9a6a1c6c4247a993d21eeeabd

See more details on using hashes here.

Release history Release notifications | RSS feed

0.45.0

1 file

0.44.1

1 file

0.44.0

1 file

0.43.0

1 file

0.42.0

1 file

0.41.0.post0

1 file

0.41.0

1 file

0.40.1

1 file

0.40.0

1 file

0.39.1

1 file

0.39.0

1 file

0.38.1

1 file

0.38.0

1 file

0.37.0

1 file

0.36.0

1 file

0.35.1

1 file

0.35.0

1 file

0.34.1

1 file

0.34.0

1 file

0.33.1

1 file

0.33.0

1 file

0.32.0

1 file

0.31.0

1 file

0.30.1

1 file

0.30.0

1 file

0.29.0

1 file

0.28.0

2 files

0.27.0

1 file

0.24.0

1 file

0.23.0

1 file

0.22.0

1 file

0.21.0

1 file

0.20.0

2 files

0.18.0

1 file

0.17.0

1 file

0.16.0

1 file

0.15.0

1 file

0.14.0

1 file

0.13.0

1 file

0.12.0

1 file

0.11.0

1 file

0.9.0

2 files

0.8.2

2 files

This release

0.8.1 This release

2 files

0.8.0

2 files

0.7.1

2 files

0.7.0

2 files

0.6.0

2 files

0.5.1

2 files

0.5.0

2 files

0.0.8

1 file

0.0.7

2 files

0.0.6

2 files

0.0.5

2 files

0.0.4

2 files

0.0.3

2 files

0.0.2

2 files

0.0.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page