::: AQT Pytket Tutorial
AQT supports integration with the Pytket optimizing compiler. For more information about Pytket see the API documentation.
Installation
Use pip
to install Pytket from the command line by
pip install pytket
For more information on installing and using Pytket please see the Getting Started guide.
Next install the Pytket AQT connector
pip install pytket-aqt
After installation has completed, you are ready to execute circuits compiled by Pytket on AQT devices.
Use your AQT credentials
The AQTBackend
Python class provides access to all available AQT backends. To create an instance of this class, you need your AQT access token and the name of the target device.
For example:
from pytket.backends.aqt import AQTBackend
backend = AQTBackend("MY_TOKEN", device_name="sim/noise-model-1")
Where MY_TOKEN
is your access token for a specific AQT device. You need to subscribe to an AQT backend at the AQT Gateway Portal and retreive the access token. The device_name
argument is just the last part of the URL as listed on your subscriptions page. It defaults to sim
(the simulator without noise) if not specified.
An optional label
argument may also be provided. This is attached to any submitted jobs.
Execute a quantum circuit
You can now run any circuit from Pytket on the AQT device. For example, to execute a circuit that prepares and measures the Bell state
\[ \ket{\psi}=\frac{1}{\sqrt{2}}(\ket{00}+\ket{11}) \]
write the follwing
from pytket.circuit import Circuit
circuit = Circuit(2, 2)
circuit.H(0).CX(0, 1)
circuit.measure_all()
backend.compile_circuit(circuit)
n_shots = 100
handle = backend.process_circuits([circuit], n_shots)[0]
print(backend.get_counts(handle, n_shots))
See the Pytket AQT backend documentation for details of this and other methods that can be called on the AQT backend.
The compile_circuit
method converts the circuit to an equivalent sequence of gates suitable for passing to an AQT backend (X
, Y
and MS
gates). This sequence is then executed on the backend by process_circuits
and the result can be accessed via get_counts
by using the returned handle
.
The tk_to_aqt
method is also available to perform the conversion from circuit to sequence independently by
from pytket.aqt import tk_to_aqt
circuit = Circuit(2).H(0).CX(0, 1)
print(tk_to_aqt(circuit))
AQT Simulators
The AQT simulators are capable of running ideal simulations (without a noise model) and real simulations (with a noise model) of a quantum circuit. Using a simulator with noise model allows you to estimate the performance of running a circuit on the real hardware. Switching between the two simulation types is done by using the respective backend in above example.
For running a simulation without noise model use
backend = AQTBackend("MY_TOKEN", device_name="sim/")
whereas for a simulation with noise model use
backend = AQTBackend("MY_TOKEN", device_name="sim/noise-model-1")
We will provide different noise models in the future, which will be added as new backends to the Pytket AQT provider. Available backends are listed on the AQT Gateway Portal.
License
Pytket and the Pytket AQT provider are licensed under the CQC Non-Commercial Use Software Licence.