Qiskit, as we have set it up so far, focuses on lower level direct manipulation of qubits. This portion of the qiskit library is also known as Qiskit Terra (https://qiskit.org/terra) to contrast it with QISKit Aqua (https://qiskit.org/aqua). It is likely that, as quantum computers become more useful, the interfaces programmers have to quantum computers will not be through writing low level code (the equivalent of assembly language in classic computing) as this book focuses on, where such low level code manipulates qubits and quantum registers as assembly language manipulates classic bits and classic registers. Rather, as with all computing, the field will evolve to use higher level libraries and languages to abstract this away.
As an attempt to design such an abstraction, IBM has released Qiskit Aqua, which focuses on working with existing algorithms that can be run on quantum computers at a higher level. These algorithms can have a hybrid component, running on both the CPU and the quantum processor. Many algorithms, particularly those focused on quantum chemistry, are available. Qiskit Aqua is also designed so that users can write code to plug into the framework, with the idea that users can add their own algorithms to the collection available.
If you installed the requirements for the book using pip from the requirements.txt file, Qiskit Aqua is already installed. If not, Qiskit Aqua can be installed with the following:
pip install qiskit-acqua qiskit-acqua-chemistry
Test your Qiskit Aqua installation by running the following code:
# Testing QISKit Aqua installation
import qiskit_acqua
import qiskit_acqua_chemistry
Qiskit Aqua will not be extensively used in this book, which aims to teach quantum computing at a lower level, but after mastering the material in this book, Qiskit Aqua is a great next step to grapple with. At the time of this writing, the quantum computers available are too small for any of the Qiskit algorithms to be practical, but learning to work with Qiskit Aqua and writing algorithms within its framework means that once quantum computers good enough for the particular problem become available, code for the particular problem will already be prototyped and ready to be tested. One optional exercise of this chapter encourages you to run and explore an algorithm of Qiskit Aqua in depth.
For reference, at the time of this book's writing, Qiskit Aqua contains modules for the following:
- Quantum Grover Search (QGS)
- Support Vector Machine Quantum Kernel (SVM Q Kernel)
- Quantum Dynamics (QD)
- Quantum Phase Estimation (QPE)
- Variational Quantum Eigensolver (VQE)
- Iterative Quantum Phase Estimation (IQPE)
- Support Vector Machine Variational (SVM Variational)
It also contains classic algorithms such as the following:
- Support Vector Machine Radial Basis Function Kernel (SVN RBF Kernel)
- CPLEX
- Exact Eigensolver (EE)
It also includes certain optimizers. More functionality will certainly be added over the coming years. For more information about Qiskit Aqua, check out the website at https://github.com/Qiskit/aqua.