From 02b7a623bd960d553ea0d71430df19e141df7e70 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Thu, 2 Nov 2023 19:03:33 +0000 Subject: [PATCH] Add pytket extensions index page to pytket API docs (#1105) * add extensions index to API docs * remove duplicate extensions link * Solve docs build failure caused by duplicate link warnings * Use smaller text for sub-headings * Put QuantinuumBackend QPU first and update devices * some cleanup * remove duplicate links from sidebar --- pytket/docs/extensions_index.rst | 159 +++++++++++++++++++++++++++++++ pytket/docs/index.rst | 5 +- 2 files changed, 161 insertions(+), 3 deletions(-) create mode 100644 pytket/docs/extensions_index.rst diff --git a/pytket/docs/extensions_index.rst b/pytket/docs/extensions_index.rst new file mode 100644 index 0000000000..8c26c94475 --- /dev/null +++ b/pytket/docs/extensions_index.rst @@ -0,0 +1,159 @@ +pytket extensions +================= + +The pytket extensions are separate python modules which allow pytket to interface with backends from a range of providers including quantum devices from Quantinuum and IBM. +In pytket a ``Backend`` represents a connection to a QPU (Quantum Processing Unit) or simulator for processing quantum circuits. One can also access additional quantum devices and simulators via the cloud through the extensions for `Azure `_ and `Braket `_ . + +Additionally, the extensions allow pytket to cross-compile circuits from different quantum computing libraries with the extensions for `qiskit `_, `cirq `_ and `pennylane `_ . This enables pytket's compilation features to be used in conjunction with other software tools. + +The additional modules can be installed adding the extension name to the installation command for pytket. For example pytket-quantinuum can be installed by running + +:: + + pip install pytket-quantinuum + +The types of ``Backend`` available in pytket are the following + +Types of Backend +---------------- + +* **QPUs** - These are real quantum computers that return shots based results. E.g the `QuantinuumBackend `_ . +* **Cloud Access** - Cloud backends allow pytket to interface with cloud platforms to access additional QPUs and simulators. E.g `BraketBackend `_ . +* **Emulators** - These classically simulate a circuit and produce shots based results. Sometimes emulators use a noise model and have connectivity constraints to emulate real QPUs. E.g. `IBMQEmulatorBackend`_ +* **Statevector Simulators** - Calculates the pure quantum state prepared by a circuit returning a vector/ndarray. Examples of statevector simulators are the `ForestStateBackend`_ and the `AerStateBackend`_. +* **Unitary Simulators** - Unitary simulators calculate the unitary operator that is applied by a circuit. A unitary matrix/ndarray is returned `AerUnitaryBackend`_ is an example of such a simulator. +* **Density Matrix Simulators** - These simulators compute the density matrix prepared by a circuit. The result can be a statistical mixture of states in contrast to statevector simulation. E.g. `CirqDensityMatrixSampleBackend`_ +* **Other specialised simulators** - There are extensions for simulating specific types of circuit. For instance the `SimplexBackend`_ is designed to simulate Clifford circuits. + +A full list of available pytket backends is shown below. + +QPUs +---- + +`QuantinuumBackend `_ +- Interface to a remote Quantinuum device or simulator. There are currently two Quantinuum devices offered (H1-1 and H2-1). + +`IBMQBackend `_ +- A backend for running circuits on remote IBMQ devices. + +`IonQBackend `_ +- A backend for running circuits on remote IONQ devices. + +`ForestBackend `_ +- A backend for running circuits on remote Rigetti devices. + +`AQTBackend `_ +- Interface to an AQT device or simulator. + +`IQMBackend `_ +- Interface to an IQM device or simulator. + +Cloud Access +------------ + +`AzureBackend `_ +- Backend for running circuits remotely using Azure Quantum devices and simulators. + +`BraketBackend `_ +- Interface to Amazon Braket service. + +Emulators +--------- + +`IBMQEmulatorBackend`_ - A backend which uses the `AerBackend `_ to emulate the behavior of IBMQBackend. + +`QuantinuumBackend `_ +- The QuantinuumBackend has two available emulators namely H1-1E and H1-2E. These are device specific emulators for the H1-1 and H1-2 devices. These emualtors run remotely on a server. + +Statevector Simulators +---------------------- + +`CirqStateSampleBackend `_ +- Backend for Cirq statevector simulator sampling. + +`CirqStateSimBackend `_ +- Backend for Cirq statevector simulator state return. + +`AerStateBackend`_ - Backend for running simulations on the Qiskit Aer Statevector simulator. + +`ForestStateBackend`_ - State-based interface to a Rigetti device. + +`ProjectQBackend `_ +- Backend for running statevector simulations on the ProjectQ simulator. + +Unitary Simulators +------------------ + +`AerUnitaryBackend`_ - Backend for running simulations on the Qiskit Aer unitary simulator. + +Density Matrix Simulators +------------------------- + +`CirqDensityMatrixSampleBackend`_ +- Backend for Cirq density matrix simulator sampling. + +`CirqDensityMatrixSimBackend `_ +- Backend for Cirq density matrix simulator density_matrix return. + +Clifford Simulators +------------------- + +`CirqCliffordSampleBackend `_ +- Backend for Cirq Clifford simulator sampling. + +`CirqCliffordSimBackend `_ +- Backend for Cirq Clifford simulator state return. + +`SimplexBackend`_- Backend for simulating Clifford circuits using pysimplex. + +`StimBackend `_ +- Backend for simulating Clifford circuits using Stim. + +Other +----- + +`AerBackend `_ +- Backend for running simulations on the Qiskit Aer QASM simulator. This simulator is noiseless by default but can take a user defined ``NoiseModel``. + +`QulacsBackend `_ +- Backend for running simulations of variational quantum circuits on the Qulacs simulator. + +`QsharpSimulatorBackend `_ +- Backend for simulating a circuit using the QDK. + +`QsharpToffoliSimulatorBackend `_ +- Backend for simulating a Toffoli circuit using the QDK. + + +.. toctree:: + :caption: Extensions: + :maxdepth: 0 + + pytket-aqt + pytket-braket + pytket-cirq + pytket-ionq + pytket-iqm + pytket-pennylane + pytket-projectq + pytket-pyquil + pytket-pysimplex + pytket-pyzx + pytket-qir + pytket-qiskit + pytket-qsharp + pytket-quantinuum + pytket-cutensornet + pytket-qulacs + pytket-qujax + pytket-stim + + +.. _pytket: https://tket.quantinuum.com/tket/pytket/api/ +.. _Quantinuum: https://quantinuum.com +.. _IBMQEmulatorBackend: https://tket.quantinuum.com/extensions/pytket-qiskit/api/api.html#pytket.extensions.qiskit.IBMQEmulatorBackend +.. _AerStateBackend: https://tket.quantinuum.com/extensions/pytket-qiskit/api.html#pytket.extensions.qiskit.AerStateBackend +.. _ForestStateBackend: https://tket.quantinuum.com/extensions/pytket-pyquil/api/api.html#pytket.extensions.pyquil.ForestStateBackend +.. _AerUnitaryBackend: https://tket.quantinuum.com/extensions/pytket-qiskit/api/api.html#pytket.extensions.qiskit.AerUnitaryBackend +.. _CirqDensityMatrixSampleBackend: https://tket.quantinuum.com/extensions/pytket-cirq/api/api.html#pytket.extensions.cirq.CirqDensityMatrixSampleBackend +.. _SimplexBackend: https://tket.quantinuum.com/extensions/pytket-simplex/api.html#pytket.extensions.pysimplex.SimplexBackend \ No newline at end of file diff --git a/pytket/docs/index.rst b/pytket/docs/index.rst index 2cdd6e701e..57f3761305 100644 --- a/pytket/docs/index.rst +++ b/pytket/docs/index.rst @@ -81,14 +81,13 @@ Licensed under the `Apache 2 License - Extensions + extensions_index.rst Example notebooks .. toctree::