{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\"Note: Trusted Notebook\" align=\"middle\">" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Qiskit Tutorials\n", "\n", "***\n", "\n", "\n", "Welcome Qiskitters.\n", "\n", "\n", "These tutorials aim to explain how to use Qiskit. We assume you have installed Qiskit; if not, please look at [qiskit.org](http://www.qiskit.org) or the install [documentation](https://qiskit.org/documentation/install.html). \n", "\n", "\n", "We've collected a core reference set of notebooks in this section outlining the features of Qiskit. We will be keeping them up to date with the latest Qiskit version, currently 0.12. The focus of these notebooks is not on learning quantum computing. Instead we will be focused on how to use Qiskit, and will go into details only when needed. For those interested in learning about quantum computing we recommend the awesome [educational material](https://quantum-computing.ibm.com/support) we and the community have put together.\n", "\n", "\n", "Qiskit is made up of four elements: Terra, Aer, Ignis, and Aqua. Each element has its own goal, and together they make the full Qiskit framework. \n", "\n", "## Getting started with Qiskit\n", "\n", "This section gives you the tools to make your first circuits, run them on real quantum systems and simulators, and view the data.\n", "\n", "1. [Getting started with Qiskit](fundamentals/1_getting_started_with_qiskit.ipynb) - How to use Qiskit\n", "\n", "2. [Plotting data in Qiskit](fundamentals/2_plotting_data_in_qiskit.ipynb) - Illustrates the different ways of plotting data in Qiskit\n", " \n", "3. [The IBM Q Account](fundamentals/3_the_ibmq_account.ipynb) - Understanding the IBM Q account.\n", "\n", "4. [Circuit Properties](fundamentals/4_quantum_circuit_properties.ipynb) - Important properties of quantum circuits.\n", " \n", "5. [Using the Transpiler](fundamentals/5_using_the_transpiler.ipynb) - Mapping and optimizing circuits using the Qiskit transpiler.\n", "\n", "6. [Jupyter Tools](fundamentals/6_qiskit_jupyter_tools.ipynb) - Qiskit functionality for Jupyter notebooks\n", " \n", " \n", "## 2 Qiskit Terra\n", "\n", "Terra, the ‘earth’ element, is the foundation on which the rest of the software lies. Terra provides a bedrock for composing quantum programs at the level of circuits and pulses, to optimize them for the constraints of a particular device, and to manage the execution of batches of experiments on remote-access devices. Terra defines the interfaces for a desirable end-user experience, as well as the efficient handling of layers of optimization, pulse scheduling and backend communication.\n", " * [Quantum circuits](advanced/terra/quantum_circuits.ipynb) - Gives a summary of the `QuantumCircuit` object\n", " * [Advanced circuits](advanced/terra/advanced_circuits.ipynb) - New circuit building tools added in Terra 0.8, including registerless declarations, composite gate updates and parameterized circuits\n", " * [Summary of quantum operations](advanced/terra/summary_of_quantum_operations.ipynb) - List of quantum operations (gates, reset, measurements) in Qiskit Terra\n", " * [Visualizing a quantum circuit](advanced/terra/visualizing_a_quantum_circuit.ipynb) - Details on drawing your quantum circuits\n", " * [Using the transpiler](advanced/terra/using_the_transpiler.ipynb) - Getting started with circuit analysis and optimization\n", " * [Writing a transpiler pass](advanced/terra/writing_a_transpiler_pass.ipynb) - How to extend the transpiler with a new pass\n", " * [Parallel tools](advanced/terra/terra_parallel_tools.ipynb) - Executing tasks in parallel using `parallel_map` and tracking progress\n", " * [Creating a new provider](advanced/terra/creating_a_provider.ipynb) - A guide to integration of a new provider with Qiskit structures and interfaces\n", " * [Calibrating a qubit](advanced/terra/calibrating_a_qubit.ipynb) - An introduction to working with the pulse API by way of calibrating a qubit\n", " * [Operators overview](advanced/terra/operators_overview.ipynb) - Gives a summary of the features and uses of the Operator class\n", "\n", "\n", "## 3 Qiskit Aer\n", "\n", "Aer, the ‘air’ element, permeates all Qiskit elements. To really speed up development of quantum computers, we need better simulators with the ability to model realistic noise processes that occur during computation on actual devices. Aer provides a high-performance simulator framework for studying quantum computing algorithms and applications in the noisy intermediate-scale quantum regime. \n", " * [Aer provider](advanced/aer/aer_provider.ipynb) - Gives a summary of the Qiskit Aer provider containing the Qasm, statevector, and unitary simulator\n", " * [Extended stabilizer tutorial](advanced/aer/extended_stabilizer_tutorial.ipynb) - Gives an overview of the *extended stabilizer* Qasm Simulator method\n", " * [Device noise simulation](advanced/aer/device_noise_simulation.ipynb) - Shows how to use the Qiskit Aer noise module to automatically generate a basic noise model for simulating hardware backends\n", " * [Building noise models](advanced/aer/building_noise_models.ipynb) - Shows how to use Qiskit Aer noise module to construct custom noise models for noisy simulations\n", " * [Custom gate noise](advanced/aer/custom_gate_noise.ipynb) - Shows to implement simulations using custom noisy gates.\n", " * [Noise transformations](advanced/aer/noise_transformation.ipynb) - Demonstrates the noise approximation utility functions to construct approximate Clifford noise models out of a general noise model\n", " \n", "## 4 Qiskit Ignis\n", "Ignis, the ‘fire’ element, is dedicated to fighting noise and errors and to forging a new path. This includes better characterization of errors, improving gates, and computing in the presence of noise. Ignis is meant for those who want to design quantum error correction codes, or who wish to study ways to characterize errors through methods such as tomography, or even to find a better way for using gates by exploring dynamical decoupling and optimal control. While we have already released parts of this element as part of libraries in Terra, an official stand-alone release will come soon. For now, we have some tutorials for you to explore.\n", " * [Relaxation and decoherence](advanced/ignis/relaxation_and_decoherence.ipynb) - How to measure coherence times on the real quantum hardware\n", " * [Quantum state tomography](advanced/ignis/state_tomography.ipynb) - How to identify a quantum state using state tomography, in which the state is prepared repeatedly and measured in different bases\n", " * [Quantum process tomography](advanced/ignis/process_tomography.ipynb) - Using quantum process tomography to reconstruct the behavior of a quantum process and measure its fidelity, i.e., how closely it matches the ideal version\n", "\n", "## 5 Qiskit Aqua\n", "Aqua, the ‘water’ element, is the element of life. To make quantum computing live up to its expectations, we need to find real-world applications. Aqua is where algorithms for NISQ computers are built. These algorithms can be used to build applications for quantum computing.\n", " * [Amplitude Estimation](advanced/aqua/amplitude_estimation.ipynb) - Illustrates amplitude estimation, for a simple case, where the (assumed to be unknown) success probability *p* of a Bernoulli random variable is estimated\n", " * [HHL](advanced/aqua/linear_systems_of_equations.ipynb) - Solving linear systems of equations with the HHL algorithm\n", " * [Creating an Aqua algorithm](advanced/aqua/Aqua_how_to_build_a_pluggable_algorithm_components.ipynb) - Building an algorithm within the framework of Aqua\n", "\n", "Aqua is accessible to domain experts in *Artificial Intelligence*, *Chemistry*, *Finance* or *Optimization*, who want to explore the benefits of using quantum computers as accelerators for specific computational tasks, without needing to worry about how to translate the problem into the language of quantum machines:\n", "\n", "### 5.1 Qiskit Artificial Intelligence\n", "[Qiskit AI](advanced/aqua/artificial_intelligence/index.ipynb) demonstates using quantum computers to tackle problems in the artificial intelliegence domain. These include using a quantum-enhanced support vector machine to experiment with classification problems on a quantum computer\n", "\n", "### 5.2 Qiskit Chemistry\n", "[Qiskit Chemistry](advanced/aqua/chemistry/index.ipynb) - applications in the domain of quantum chemistry on quantum computers, including ground state energy, dipole moments and dissociation plots\n", "\n", "### 5.3 Qiskit Finance\n", "[Qiskit Finance](advanced/aqua/finance/index.ipynb) - provides a collection of applications of quantum algorithms to use cases relevant in finance. This includes use cases like portfolio management, derivative pricing, or credit risk analysis.\n", " \n", "### 5.4 Qiskit Optimization\n", "[Qiskit Optimization](advanced/aqua/optimization/index.ipynb) - using VQE (Variational Quantum Eigensolver) to experiment with optimization problems (max-cut and traveling salesman problem) on a quantum computer. Includes optimization problem modelling, using docplex, which can be automatically translated to input suitable for VQE.\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2019-08-09T15:31:26.743124Z", "start_time": "2019-08-09T15:31:26.732618Z" } }, "outputs": [ { "data": { "text/html": [ "

Version Information

Qiskit SoftwareVersion
QiskitNone
Terra0.9.0
Aer0.3.0
Ignis0.2.0
Aqua0.5.6
IBM Q Provider0.3.1
System information
Python3.7.3 (default, Mar 27 2019, 16:54:48) \n", "[Clang 4.0.1 (tags/RELEASE_401/final)]
OSDarwin
CPUs4
Memory (Gb)16.0
Fri Aug 09 11:31:26 2019 EDT
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "

This code is a part of Qiskit

© Copyright IBM 2017, 2019.

This code is licensed under the Apache License, Version 2.0. You may
obtain a copy of this license in the LICENSE.txt file in the root directory
of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.

Any modifications or derivative works of this code must retain this
copyright notice, and modified files need to carry a notice indicating
that they have been altered from the originals.

" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import qiskit.tools.jupyter\n", "%qiskit_version_table\n", "%qiskit_copyright" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "hide_input": false, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }