Skip to content
This repository has been archived by the owner on Aug 21, 2023. It is now read-only.

Commit

Permalink
Numerate and cleanup Terra notebooks. (#781)
Browse files Browse the repository at this point in the history
* reduced devices

* rename to reduced backends

* remove from master

* numerate and cleanup terra notebooks
  • Loading branch information
nonhermitian authored and jaygambetta committed Aug 21, 2019
1 parent 0854ffc commit 8fba1c6
Show file tree
Hide file tree
Showing 16 changed files with 7,084 additions and 7,683 deletions.
215 changes: 215 additions & 0 deletions qiskit/.ipynb_checkpoints/1_start_here-checkpoint.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,215 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src=\"../images/qiskit_header.png\" alt=\"Note: In order for images to show up in this jupyter notebook you need to select File => 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",
"7. [Summary of quantum operations](fundamentals/7_summary_of_quantum_operations.ipynb) - List of quantum operations (gates, reset, measurements) in Qiskit Terra\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",
"\n",
"1. [Advanced circuits](advanced/terra/1_advanced_circuits.ipynb) - Circuit building tools added including registerless declarations, composite gate updates and parameterized circuits.\n",
"2. [Operators overview](advanced/terra/2_operators_overview.ipynb) - Gives a summary of the features and uses of the Operator class.\n",
"3. [Advanced circuit visualization](advanced/terra/3_advanced_circuit_visualization.ipynb) - Details on drawing your quantum circuits.\n",
"4. [Transpiler passes and passmanager](advanced/terra/4_transpiler_passes_and_passmanager.ipynb) - How to use the transpiler passes, passmanger, and extend the transpiler with a new pass.\n",
"5. [Pulse schedules](advanced/terra/5_pulse_schedules.ipynb) - An introduction to working with pulse schedules.\n",
"6. [Creating a new provider](advanced/terra/6_creating_a_provider.ipynb) - A guide to integration of a new provider with Qiskit structures and interfaces\n",
"\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",
"1. [Aer provider](advanced/aer/1_aer_provider.ipynb) - Gives a summary of the Qiskit Aer provider containing the Qasm, statevector, and unitary simulator\n",
"2. [Device noise simulation](advanced/aer/2_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",
"3. [Building noise models](advanced/aer/3_building_noise_models.ipynb) - Shows how to use Qiskit Aer noise module to construct custom noise models for noisy simulations\n",
"4. [Custom gate noise](advanced/aer/4_custom_gate_noise.ipynb) - Shows to implement simulations using custom noisy gates.\n",
"5. [Noise transformations](advanced/aer/5_noise_transformation.ipynb) - Demonstrates the noise approximation utility functions to construct approximate Clifford noise models out of a general noise model\n",
"6. [Extended stabilizer tutorial](advanced/aer/6_extended_stabilizer_tutorial.ipynb) - Gives an overview of the *extended stabilizer* Qasm Simulator method\n",
"7. [Matrix Product State simulator](advanced/aer/7_matrix_product_state_method.ipynb) - Gives an overview of the *matrix product state* Simulator method\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 and randomized benchmarking, or even to find a better way for using gates by exploring dynamical decoupling and optimal control. Ignis tutorials are found [here](advanced/ignis/) and include:\n",
" 1. [Calibrating a qubit](advanced/ignis/1_calibrating_a_qubit.ipynb) - Using pulse to calibrate a \"pi-pulse\" gate by fitting a Rabi oscillation on a qubit. Using the \"pi-pulse\" measure the single-shot analog voltages that are returned by an experiment.\n",
" 2. [Hamiltonian and gate characterizations](advanced/ignis/2_hamiltonian_and_gate_characterization.ipynb) - Sequences to measure ZZ rates between qubits and to measure rotation and angle errors in the gates.\n",
" 3. [Relaxation and decoherence](advanced/ignis/3_relaxation_and_decoherence.ipynb) - How to measure coherence times on the real quantum hardware\n",
" 4. [Measurement error mitigation](advanced/ignis/4_measurement_error_mitigation.ipynb) - How to peform calibration experiments for measurement errors and fed those calibrations into a \"filter\" that can be utilized to mitigate errors in subsequent experiments.\n",
" 5. Randomized Benchmarking:\n",
" * a. [Randomized benchmarking](advanced/ignis/5a_randomized_benchmarking.ipynb) - Randomized benchmarking (RB) is a technique used to measure the average gate error by measuring the outcomes of random Clifford circuits. This is used internally to report gate errors on our systems. \n",
" * b. [Interleaved RB](advanced/ignis/5b_interleaved_rb.ipynb) - A variant of RB used to measure the error of a specific gate.\n",
" * c. [Purity RB](advanced/ignis/5c_purity_rb.ipynb) - A variant of RB used to measure the *incoherent* error per gate.\n",
" 6. Tomography:\n",
" * a. [Quantum state tomography](advanced/ignis/6a_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",
" * b. [Quantum process tomography](advanced/ignis/6b_process_tomography.ipynb) - A method to reconstruct the quantum process matrix by preparing certain states, applying a gate, and then measuring the outcome in different bases. \n",
" 7. [Quantum volume](advanced/ignis/7_quantum_volume.ipynb) - How to run quantum volume measurements on the quantum hardware.\n",
" 8. [Repetition Code](advanced/ignis/8_repetition_code.ipynb) - How to run a simple error correction code, known as the repetition code. This can be used to characterize bit flip errors in the hardware.\n",
" 9. [Logging](advanced/ignis/9_ignis_logging.ipynb) - An introduction to some of the logging features in Ignis, intended to be used to track characterization parameters.\n",
" \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": [
"<h3>Version Information</h3><table><tr><th>Qiskit Software</th><th>Version</th></tr><tr><td>Qiskit</td><td>None</td></tr><tr><td>Terra</td><td>0.9.0</td></tr><tr><td>Aer</td><td>0.3.0</td></tr><tr><td>Ignis</td><td>0.2.0</td></tr><tr><td>Aqua</td><td>0.5.6</td></tr><tr><td>IBM Q Provider</td><td>0.3.1</td></tr><tr><th>System information</th></tr><tr><td>Python</td><td>3.7.3 (default, Mar 27 2019, 16:54:48) \n",
"[Clang 4.0.1 (tags/RELEASE_401/final)]</td></tr><tr><td>OS</td><td>Darwin</td></tr><tr><td>CPUs</td><td>4</td></tr><tr><td>Memory (Gb)</td><td>16.0</td></tr><tr><td colspan='2'>Fri Aug 09 11:31:26 2019 EDT</td></tr></table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div style='width: 100%; background-color:#d5d9e0;padding-left: 10px; padding-bottom: 10px; padding-right: 10px; padding-top: 5px'><h3>This code is a part of Qiskit</h3><p>&copy; Copyright IBM 2017, 2019.</p><p>This code is licensed under the Apache License, Version 2.0. You may<br>obtain a copy of this license in the LICENSE.txt file in the root directory<br> of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.<p>Any modifications or derivative works of this code must retain this<br>copyright notice, and modified files need to carry a notice indicating<br>that they have been altered from the originals.</p></div>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"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.4"
},
"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
}
28 changes: 14 additions & 14 deletions qiskit/1_start_here.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -31,32 +31,32 @@
"\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",
"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",
"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",
"6. [Jupyter Tools](fundamentals/6_qiskit_jupyter_tools.ipynb) - Qiskit functionality for Jupyter notebooks.\n",
"\n",
"7. [Summary of quantum operations](fundamentals/7_summary_of_quantum_operations.ipynb) - List of quantum operations (gates, reset, measurements) in Qiskit Terra\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",
"1. [Advanced circuits](advanced/terra/1_advanced_circuits.ipynb) - Circuit building tools added including registerless declarations, composite gate updates and parameterized circuits.\n",
"2. [Operators overview](advanced/terra/2_operators_overview.ipynb) - Gives a summary of the features and uses of the Operator class.\n",
"3. [Advanced circuit visualization](advanced/terra/3_advanced_circuit_visualization.ipynb) - Details on drawing your quantum circuits.\n",
"4. [Transpiler passes and passmanager](advanced/terra/4_transpiler_passes_and_passmanager.ipynb) - How to use the transpiler passes, passmanger, and extend the transpiler with a new pass.\n",
"5. [Pulse schedules](advanced/terra/5_pulse_schedules.ipynb) - An introduction to working with pulse schedules.\n",
"6. [Creating a new provider](advanced/terra/6_creating_a_provider.ipynb) - A guide to integration of a new provider with Qiskit structures and interfaces\n",
"\n",
"\n",
"\n",
"## 3 Qiskit Aer\n",
Expand Down Expand Up @@ -178,7 +178,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.8"
"version": "3.7.4"
},
"varInspector": {
"cols": {
Expand Down
Loading

0 comments on commit 8fba1c6

Please sign in to comment.