From 27efd40512131283afc91bc5273cbc20a7966f3e Mon Sep 17 00:00:00 2001 From: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com> Date: Mon, 4 Dec 2023 14:06:57 -0500 Subject: [PATCH 1/2] Remove non-API docs --- docs/conf.py | 62 +- docs/images/ibm-quantum-logo.png | Bin 45708 -> 0 bytes docs/index.rst | 13 +- docs/tutorials.rst | 16 - .../tutorials/1_the_ibm_quantum_account.ipynb | 1229 ---------------- docs/tutorials/2_jupyter_tools.ipynb | 1267 ----------------- ...tion_Guide_from_qiskit-ibmq-provider.ipynb | 304 ---- requirements-dev.txt | 2 - tox.ini | 9 - 9 files changed, 9 insertions(+), 2893 deletions(-) delete mode 100644 docs/images/ibm-quantum-logo.png delete mode 100644 docs/tutorials.rst delete mode 100644 docs/tutorials/1_the_ibm_quantum_account.ipynb delete mode 100644 docs/tutorials/2_jupyter_tools.ipynb delete mode 100644 docs/tutorials/Migration_Guide_from_qiskit-ibmq-provider.ipynb diff --git a/docs/conf.py b/docs/conf.py index b2ae2078d..32062cb6c 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -10,35 +10,10 @@ # copyright notice, and modified files need to carry a notice indicating # that they have been altered from the originals. -# pylint: disable=invalid-name -# Configuration file for the Sphinx documentation builder. -# -# This file does only contain a selection of the most common options. For a -# full list see the documentation: -# http://www.sphinx-doc.org/en/master/config - -# -- Path setup -------------------------------------------------------------- - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# -# import os -# import sys -# sys.path.insert(0, os.path.abspath('.')) - -""" -Sphinx documentation builder -""" - -import os -# Set env flag so that we can doc functions that may otherwise not be loaded -# see for example interactive visualizations in qiskit.visualization. -os.environ['QISKIT_DOCS'] = 'TRUE' # -- Project information ----------------------------------------------------- project = 'Qiskit IBM Quantum Provider' -copyright = '2022, Qiskit Development Team' # pylint: disable=redefined-builtin +project_copyright = '2023, Qiskit Development Team' author = 'Qiskit Development Team' # The short X.Y version @@ -59,8 +34,6 @@ 'jupyter_sphinx', 'sphinx_autodoc_typehints', 'reno.sphinxext', - 'nbsphinx', - "qiskit_sphinx_theme", ] templates_path = ['_templates'] @@ -68,28 +41,6 @@ "qiskit": ("https://qiskit.org/documentation/", None), } -nbsphinx_timeout = 300 -nbsphinx_execute = "never" -nbsphinx_widgets_path = '' - -nbsphinx_thumbnails = {"**": "_static/images/logo.png"} - -nbsphinx_prolog = """ -{% set docname = env.doc2path(env.docname, base=None) %} -.. only:: html - - .. role:: raw-html(raw) - :format: html - - .. note:: - This page was generated from `docs/{{ docname }}`__. - - __""" - -vers = release.split(".") -link_str = f" https://github.com/Qiskit/qiskit-ibm-provider/blob/stable/{vers[0]}.{vers[1]}/docs/" -nbsphinx_prolog += link_str + "{{ docname }}" - # ----------------------------------------------------------------------------- # Autosummary & autodoc # ----------------------------------------------------------------------------- @@ -142,18 +93,9 @@ # -- Options for HTML output ------------------------------------------------- -html_theme = "qiskit-ecosystem" +html_theme = "alabaster" html_title = f"{project} {release}" -html_logo = "images/ibm-quantum-logo.png" - -html_theme_options = { - # Because this is an IBM-focused project, we use a blue color scheme. - "light_css_variables": { - "color-brand-primary": "var(--qiskit-color-blue)", - }, -} - html_last_updated_fmt = '%Y/%m/%d' html_sourcelink_suffix = '' diff --git a/docs/images/ibm-quantum-logo.png b/docs/images/ibm-quantum-logo.png deleted file mode 100644 index 252c31b2f7134666f2712136c9556b9795932e29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45708 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
)-&X=V(lbe%9$Cf+93SeWU9{1tR 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 - Migration Guide API References Release Notes - GitHub .. Hiding - Indices and tables :ref:`genindex` diff --git a/docs/tutorials.rst b/docs/tutorials.rst deleted file mode 100644 index 3c9de4599..000000000 --- a/docs/tutorials.rst +++ /dev/null @@ -1,16 +0,0 @@ -.. _tutorials: - -========= -Tutorials -========= - -.. nbgallery:: - - tutorials/1_the_ibm_quantum_account - tutorials/2_jupyter_tools - - -.. Hiding - Indices and tables - :ref:`genindex` - :ref:`modindex` - :ref:`search` diff --git a/docs/tutorials/1_the_ibm_quantum_account.ipynb b/docs/tutorials/1_the_ibm_quantum_account.ipynb deleted file mode 100644 index d0fac11d9..000000000 --- a/docs/tutorials/1_the_ibm_quantum_account.ipynb +++ /dev/null @@ -1,1229 +0,0 @@ -{ - "cells": [ - { - "attachments": { - "qiskit_header.png": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7YAAAEsCAAAAADS83BIAAA/bklEQVR4AezTAQEAAAQAIFf8P2kGqA9FwjJoC9oC2gLagraAtoC2oC2gLaAtaAtoC2gL2gLaAtqCtoC2gLaAtqAtoC2gLWgLaAtoC9oC2gLagraAtoC2oC2gLaAtoC1oC2gLaAvaAtoC2oK2M4C2gLaAtoC2oC2gLaAtaAtoC2gL2kKxdx9+UVxrA8f/kvfKM7O7s7uwS126VAsdVMAGVtQINqKoqAmJEWPvvaeaaoqSZjf2EkxiVyyxI0pn+zzv7AI7s9J2luFeyZ6vXWftv8+cczicIUi2cm1IXELG0BHjJ701fsTQjITYMF8GCIJ4I7OV6wbmzlq6c99vpy5fvX7rdsW9exW3b127Wn7q4L49K+aMTw5VAkG8MUi2dEDG9NVfnvj7zqPK2iaDhUUB1mLU1714VHHl1HcbZmeH0UAQ/2skWypgyPzdx649qGowY6csTa8e3Ti1a25GAAX/MwRBspVHTlx/6MbjWhO6hjXXPrp2aP3ESDn8DxAEyVYWWbDz9L2XRhTJ+PLemd1Tov7b5RIEydZ/1OaT92vN2B5LY9XTBxUV/zyparBge8y1909tHRNIwX8LQZBs6cjZP1W8MmEbbEPFsY8/nD159Iis9IysEaMnz1q84+err9qJ11xd8fN7AxRAEMR/I1t56qqTj/TYhrXq+PopGfFhfmpGTlMAlEzOqP1CYlLHLz7woJ3GDc/Obx6qBoIgejpbRea2P1+0E6Hl0aeT4oOUFLTF+EWNXFluQBsWBSyvrn+W5wsEQfRktorMXdeqBekZK8oOWpFT/2teOAMdkgdkbntsL/XET7eNyKur+GYiCZcgei5befqOazWsoNl9C7ISFqHNvWkMdEo+6BCLnBVJWfO/vSMot+HuF7ne0BMIgmRLx635i4/WWvnbwuy+Wlo53WiP72CeBjrBpO15ghzzXG/aJzKr5NdKC7aqu7l7EAMEQbKVnP+801WOaC03dubF+dK2mLPvoU3TjS8KQmlon3bo+vPVVuQ8GSkDAFobO37bNQO2YGsur4gCaREEyZbJ2ffYhC1Mf6/NDGGgWfgetGPr757YVpihY8CJ3HfApFVl16rMaPdlX2jGhAwqPdOILSyVh8YxIB2CINlSEatvNmAL48XStECa7zLrPLYw1zy8euLb9SXTxw8dzBk6bnrJ2s8Olt99YWCx2eWRfJy038Di4w3YwlCxMYYGiRAEyZYZd/AFtjD9sTDRD4RUeReQZ7Zvkbp1g3OL2yj1st7EosP9fB8Q0vYvPuoI9+WxyQxIgiBItsErbhlao7yxIsUXXqMa9n0dusBwvsgHXqPpX3JOj80M99dHUEAQJNtukw/+oRKbWZ/tzAyEthRx75xq6DLaq+sGa6AtbcrKWyZsVvXrMAX0IhT5nb2RSLbKty+3Fqn/bUKoDCjd8DklxTmhIEBpE+d8/48JO2R5cXxJtk4G7aECc/a+wGb6v4vV0DuEfnKxkn16dpsfSKv0L4dl4JbAneeesZXn9+jAQ5Fsdav/sbSUd3NRLAOge/fI7UdPH986sjACBCifqOx39/5RacA2TNXXDywf389PBh1RRMw6Z0A766NNYdAbzG/AZi/fAkntQodPwR3TarBZXRF4IpIt3f/LF9isYd9wPwB64L4nxuYYn/yQBU4obUTiyKJVnx0rv/Hg2QvO84e3yo99s+HdvLRofwV0SpO+sxabVX2fJIM3XpoVWzVGvFHZxhqwlWkgEJ6XrTz7aB3aWe5+ECUHoOIP1mOrhsODoZVXM5CpAyLiEtKyRuZyRmalJ8RH6jQKxw93jA5757oF7RpOjVTAf48iLCFUDmL9gbwDb1S2h5B3CgiPy5bJ+8OAdobDo/2A47u7CXkN3+q8XgPNKJkNTQujdgZtaIeXGdDOeGUqAz2vb8nu/WduV7OIyFbfOv3jrgUR4CrGirzKNyrbOuQZaCA8LFt5yXMr2lUt18mAo8irQ6EnJX28OH369Om4RkG2fWxavw7cxc7XU36LnrFow1aVekOPogZtvIFtXVuXDi5JRCHfNyjbUBSKBcKzslUsqmZb1qLyNWDn+wk6Mfyk6dOSo6vZ2r/0sgOKAqAA+Bd55/1lRrvaNRroOdlfvsCOPN87BLo2CoX6vUHZpqJQNhAela3iw1q0M54czIAdFf4XOvs7yZ6gS9nydfMXUxyaltFUS7tMymED2tVt84ceEvMrdu5AJHQlF4Xi3qBsU1AoEwhPylaxpKVa/XfRcuDIZApF8mN0dntUc7ZddOvVjM9WWK1MLlMoGEYmA44sYm8T2tXvDoSeoN1mxK4YNvpA5+JRgFW/QdkGoFAEEJ6TLV9tww4dBXJGpVarlarUF+isYjx/t3U5W+7zPs3VQku1Sob7BTiMHMB/fR3aNWzTguToBS/RFZVzKOiMzIS8R/AGZQsvkdcA7cuc1Coc/jVItorSlmprl/spvP38fDVaH2+1qv9ddHYz0x5g+8W2l25rwVy49mopmquWYRi1t9pHq/H19/NWaEpfol39eg1ITHseXXXSGzpzGHkfv1HZfuPCm6ZOYKvp8G9BspUXV6Pdq6UhurAQXVCAn73b4GPoxHo2zN6iCK3xApctR2avVtlSbWBQUEiYTvfBC7SrW+oNktJdQ9dd9odOROmx1QvfNyrboBpsVR9KsvWcbGUFlWhXsy4+OjoiIizI3q1GrV2MTmp2yMEtjsktLVcouWrVag1XbUBQUGhERHR03OpXaFc9TwUSiriHYtwKhU7kPsBm19LhjcoWMm9hs4phQLL1mGzp4f+gXe2mpP5xsTHhEaFct/4ajdY78ToKsNcyoTtay1WqvLUajV9AYFBoeHhMbPyApPXVaPcsnwHJ9HuK4jyMgU4wJV+cqfj909k0vGHZgrz485MVp/e+owCSrcdkSw28yqKNYfugpISB8THR4eFct4G+3kqZcnot8h4vUkC32dOVMd6aQNu9Njw6JnZgQlL6puZu2YpsGUgk7RW20XDks7Xv5I8sKFm/94QB26hMBOn1fLY8kq3HZBt83II2pm+y09OTEwZw99vIsCANI6fAC3zfeYWtLGf7gkS8gKIVmqCwvjGxcQMSktPTsz5qQBvL+XgKJOH7DF/zcE+uAniqvL1tL/Eh2RK9IVv1p0a0Mf86OisrIz01KSE21I9xbIjQTjxrwhYPi0BKFM34hsYmJKakZ2Rljfq2CW2MP+hAEt+hs5tjoK2CB+hsL8mW6AXZKkoaW25zU3JzhmdnpcXpVDTlBQ5M+NRPT/55rtyCaDwSDpLyomhVUFxaZvbwnJy3jhjQRr/CByQwCZ1UFtPQHsXCV+hkNMn2jUeypUc+Rxvrnfl548eNzor1VdDwGqVWF6LLLkfEpwtBcrTcNzpz9Li8vNmXzWhTVcBAtwW+QKEyb+iI9ggKPdWSbN90JNuIP1jksJWrp07PHxHtLaOgfdoSI6L5bDz0AJl332GTp09bet+KNtcSaeiuMhTaQ0HHZF+i0Lck2zccyVb5iQltGvbOK57Qz0cGHUv8HRGr1tDQA7xk3tHj5sz/6CXamL8LhG6ahkJLoXPrUCiPZPtGI9nKpjegjeXY0jlpGpkXdMK7qAHRejkDeobMJ/Htxb81oY3+PTl0C/0YBRZDV9agwN1/YbYXSbb/omzjbrdMbDdOCJZ7dXVxGSLW7lJAD5EHjFlzxYw2DxMp6I4JKHAcukSdQ4Gcf1+2j0m2/55sVV9Y0Kbmo0Eq6BIzuQqRvZYLPYZJ2lTJIsf6vQa64zjyXuiga+E1yPvlX5etwkKy/ddkKytobNlnESsHF0TuRcSGr32gx8gjdjWijf5tObgvmkUHdgy4YjLyzKH/tmznI8n2X5Nt+BW0sRyNpF2LatQjRLYiH3oOFfqDHm2u9wX3bUXebyIXbWzWQPdQA9+aU7p+z9ZFM3ISAqn/fbb9npJs/zXZMuvNyGHvuDyRDNlmP08qEHpQ3CUzciw7GHAX88qNU1pykfdMBm0w8Q5x0Al6zLZzjShg+XtpdPezjYwX0IKQLJ4HQhHxnH7DZn1iQt7ifgKhQPSybKmMSrRpmEmDi+ism4j4cA70IHrCc7R5lUmBmwqR9we46hryJnd6ZFMTdChmwzNsxxW+XPeyLbAi74rGuU7kKUHgPHblJyB6Wbaq71nkWH73BpcFLLcgGo9HQg9ifjQgh/3JB9x0RhigW7EfcS9b3Q/YoTJdN7LNMSLvXhB4arYkW3pMPdrol4LrqNRyRHxWCj1pdjXa6CfJwC1yAzo8ocBV8ip0qHUr2+Ja7ETtXLezTWtA3rNI8NBsSbb8Vlz9DBBBW2JAtJzvDz0or6Wf037gllTkfePmfsh+4rNVHMQunI1zL9u4KuTVDASPzZZkK5tkQDvDEhBj4DFEfLmehp4zpwbtjLPk4I53kVfk7utEZ8scwS4ZJruTbchD5DUNAc/NlmSrPYHNLGdUIIL67TpE65+DoccwBwzY7I9AcMc+5EWB6wYi7zOx2cqPoQvM08Rnq72OPNMY8NxsSbayAjO2aCoBMaJsVdTvVUJPKarCFta5cnDDXXR4DGK8QodrYrNdji6xzhSbrVIYHzsdPDhbkq32HLZiHw8HERRjKxHxTh70kBF3rNiqPADE80PejyDGQXSwqMVlG6VHZ+ZH58rO3G3C17HF4rKVHUSBEvDgbEm2svEmdGArskGEsD2IqP9R20PV3rQI4imQgWhjkLcdxPgUeUPFZXschY7nhtNg55u07jE6eeknKtuvUWAteHK2JFv1z2hjNTd/8Wi6mOSH3UPEB4XQEwrvWdHGaEabExoQbQ3yloMY65H3oahsU1Hg5BAQokYdMKND5UAQk+0WFPgYxGWbPanVA3TYOUkgA4jeky01qBY55kNrsFntdh24LGgti2g8GgySC9v5ikW7VWUm5OiH090612IeiPEB8r4Rle1m5G2DNtIrsMWjGBCTbSkK7KdEZsu7QvYk/wuyZbahTeNE7Q/YTF8+gXY5+vSriPjkPZAYM/2yHpv9pM2pQ5svlCDWSeTlgxgzkXdQVLYP0OGiDNpS7mHR5m44iMn2bRZ5x+Xg0dmSbMPuI8d60RtCf8Fm1tofM8FFvh+YEM1nYkBKspxfaq3Y7HgsML9bkPMsFsT6C3kjQIzxyDsnJttkdKgOg3ZNNCHidR2IyXasGXnlavDobEm28iIWOYYSW8Fl2MJcvW8QBS5JOIuIL1aBdNR5ZTVmbLE/hgKYqUcO+54CRLqPvFQQIxt518Vk+zY6/AAdyLfgZT8Qk+3gJuTd8gPPzpZkqz5iL+JBOHD8t5kc4Vb9OFYDLvCe04RovZwEEgmd83utI1r9Fh1wAm6yyDmrBZFeSZLtYzHZLkGHUuhI4RkfEJPtgBrkPQoFz86WZEsl1iLH+ElLg4X8/clUe2nJABq6FPcbItbukIMEvIfuuNNkwVa3Z7SEusVoTySTAnEskmRbLyJbYXjDpTrdIuIp8qriwMOzJdkqStGmfjg0U/T72oCtrPrKX4tju0qFKahGxOvDoLs0mesv1hpZbFX3aT8FNMuoRpuNDIjijZJki7SIbA+gQ6RE2QZUIK8+FTw9W5Ktz2l7n5fU/PdMuog8s/7Jb+8mqaEzfb9GxIbO1nm97KAzutFbymsNVnQwnRingVbMSQtyrvqDKOESZesnIttf0WG0NNmqypFnGA6eni3JlkqpRY5hLfDogOK/UcBseHVh5+S+jHOIArLRTxGxYmLn1ToDIW3avLKKemGzaD47zY8G3vsGe8pDaRAjQaJso0Vk+xk6LJEm2/3Is0wCj8+WZKtYhDav0kBIETT7vAUFrMbGJye3FQzwea3BPnZeoTtt6Zf5dZVt89V2wH3LFi8dkvXe11erDSYWBeoP5vvLQah/JdqsYcS1J1G2qSKyXYMOP0qS7VIUmAMkW5Kt9xF7lReU4EyunfBzDTqxGJpe/v398vGxPv/5Tx8bPkQq6w4iPpwF7XOq3BH7fxQhg2fvPH6/1mC2opNHe4ZpZeCMPmpBznkNiDFcomwzRGQ7Hx0aEyXIdpwVne7fJFuSbUwlcgzroQ3aJ3X1X0Z0xpr1jVVXftsya2hfb8rLzl5iwCoroulYaFfZetlRqpCMgmXfnv2n1mC0sOis+khxtIoGAeEouS6FAhFSJcq2n4hshyDvH/9uZxtf99peSZItyTbfXk39MGgP4z9qx3UTvo61GAx1z68f+WL1rJyUcB/aNtZNvICIzxZBJ7jLvEMTRsxY9slvfz2u1evNFmyj+vfSFI0C2pNcgzbz5CBCjETZhorIFp4h71xMN7PVViDvayDZkmxb/5ewN7XQLkrGhI/bfKkO28GaTQZ9Y82jmxd//XLr0tKfWETLpTRfH0ZBQTOaYbx9A0P7xqWOnFT0wYZPDpy+8ehVg95gMrPYnsc/l2QEKGQUtEt9yYqc75UgQqBE2fqIyXYPClj2xXcnW+oo8o7SJFsOyZa+jBzTPmiLVqo1Go2PWqkKHvzuj3easAOs1WwyGgwm5BgfXf/70oVTx+1OnLl06a8bFQ+f19Q3NDUZjEazhcWOvDq3dXKcVqlS+2i0GrVS5gVt7DIi504QiKCQJlsriMk2A51Yz64fpXE32y0ocEVGsuWQbCNqkKOfC69hvAN0QUGBfhqtj1qtZOTqiGEL912vwy6xVqvV0srKYbEr5qendxQm+zMKRqX29tFo/AKCgoICNAwFziY3IccwmAIRDJJkWycqW/gOX2e9+tWHeTG06Gyno5PlJFsOyXacvaraJBDwUgWERUZGhAUHBQZw3Wq8vVUMw8hpRpcybdPhe3UoHePzP75amBOjkdMKhlHaotVqfAMCg4LDIiL7hgeqKBCIeoY24o6UqpQk2yfisg2qwXYZrn6xIIMRkW2qHp0Y+pFsSbYAq5pvBVq+WSYwOr5fbEwU160uKMBfq9VqfLzVKiVD0wAyRh2YMmn5vvNPGljsFv2La79tmzs8WssoZF5AyRS28bGtWj//wCBdWEREVGxs//gYnQocmAtW5HzCgAh3kZcNYoxC3i1x2cI0FjtkOv1usIvZ6h7ja/6gSLYkW/gNOeYfoQWliUpKSU4cOCA2NioiPITrNsDfV+utUshoaN3ZRMkYpXd4+qSSHT9fvFtjFJmvqfaf8oMfL56aHe2vZmQ0/wYikClUaq3WPyAgSBcabq92YEJyalIsv1fqEyNyLmpBhD+RNxHEmI68SyKzhXksdoK9UEi7kG15ObbxAcmWZKu6KzzTXB6WnDlkUHpaStJA7n7bNzwiXBekVStkjmIFKJmcUWlC4gZNmLNs+76jf9x6WCncUCxkNdS9eHznr9/3f7Rm3qTMfmFaNWMLludol5LJ1dogXTh3r42J7TcwISUtfVBmZkq4HOzm6pHzrC+IcBR5c0CMEuT9JDZbeNeKnaqYTnWRbfuaokm2Hp9tTANymsbZo43MzMkZMSxrSHpacuKAeO5+GxqgllPgXGx7+dpmpb5hcYkZ2bmTp89774OV6+3WLil5r3hG/ujsQUlxEf4+ahXDyPlc22cbL6v9Q6Ni4/rbqx2SNXRETm5mtAI4Q2qRY8miwXUbkbfY7cPjVorOFrLvY+fKw93JFk+TbD0+29EscirjAGR9c96aOG5U7sgRQ7luU1MGRgWqbLdZEIGiKa8+IJMpmBYKhVwmk9EUBWJ4Aa0K7DswOTU9Y0j2iJG5o8ZNnJwTLQMIe8gip0gOrstH3mYQYw/y8sRnC6rdJuxU1UgXs31exCJvHsnW07MtQQ573RvCxr1dWJD/1oRxuVy4wwYPCPGhwQvE8qLkcpWPigK38eV6B/fPGMZFmzs2b1J+QeHMcZFAN69JbWDAdVHI+wrE2I+8cBHZ8kI312BnLONdyrZ6IOxFXl04ydbDs92DHPMvqhHvvlNcNLNwSv7EvLwxWXEad8OjlT6+umA1SMM7asjovLwJ+QUzZs4ufufdXNWXJuTsV4EIgnJugBj/CMIBUdny1IV772DH6vu7kG1DBoDvC+QdIdl6eLZH7dmWTV9aurBkfnHR2zOmT84MlYP7VIFhUf3DFCARefCgidNnvF1UvKBkYenSwr1G5JR7gwin0IENcPMd7E+Jz5YXMHFbuQnbd1/ZZbaGkcCZhgKFJFuPzlZxFTmW31esXLZk8fvvLJg/MzMIukUWHJ80ZFAISMcvY/q8+e8uLF2ybOWKg2bkPAoGEbYi7y1wXSHydriXLU+VPX/3iccstlHaVbbmCW2fT1KtI9l6crb+j5Fj/nX9hrWrlixdWpIbBN1E+aUNHf3WEA1IyDe7ZOnS5avXbVi/39wy1xNhKvJ2g+v2Iu9t97MV8h5Ssq8anVR5d54tW9je08B+Itl6crYRjc2D5O3bNq/fuG5qGHSfKnnitOLiZBqkFFKwZtOmLdt3fG9EjjGTcnNN6rp7ByyzkdJkayMbdRaFFnSebQm0WoIC+SRbD842iUWOoezT3bs+WplGgQTo8JnvLds0LwKklbzs448++eyHRrQZR7v7XIIMt47FuAASZMvLb0TewU6zXQEO8uvIq/Qj2Xputjlo0/jL119/+24gSEPz9sadX32TrwBp+RV/8+2+n2rRplDu7m6nMrd2V82XNlsYjrx6eSfZbgOBwVbk7SPZem62+WhTf/jnsqlykAg9as+Bo5e/HQQSoyft/+VwDdosVIAIASZ0sEaDawaw6GDylzhb+BZ5KR1newycfIwCY0m2HpvtbLSpO3V0KkgnduOl68+q1mpBahOPnmrOdjkDYvyKvI/ANV8h7yBInW1QnbA/V5+4p32OvCcakq2nZvse2jSULwAJyd6+2mDGCzkgudmXatFmKyMud+Tp48AViUbkTZE8WziBDjNdzhbyUeBzkq2nZrscbZq+VIKU+h2w9bHZD6Qm/6gRbbaJy1b+CnlXFNA15S3k1Sulz1bQZqnr2cIh5LHDSbYemu0ytKkZBpKiZt5HxL/zQHKpL9DmS6XoSHjboWufosA2kD7bYnSYLyLbiEbkPVCRbD04W+sVNUgr7HMzonlPMEiNOW9Fzrcis9XVIo8dJWpUjZUad7IdUa7renZiN0lEtrAIBXaSbD0z2+3IsRwGqb11DRFvTwHJlZndyRZKUKBuOHRuTCMKzAI3si0y4TVf6Ng+dBgsJlv6CvKsg0m2HpntOnu25yiQWOAOA6L16yiQ2jGLW9nSV1HAOAU6U2RGgXJwI9sNXb3Hw210iBKTLaRZkHebIdl6YrZL0eZFAkht1CVEfDSbBmnFPEObr5Ug0mAWBdj3oWMrUIjNEJ8tcwDtTjHQAa0VW9XIRGULu1BgA8nWc5ekTJ+B1DTrGhFxf3+Q1sdGtNnOgFhfopNjA6B9aWfQydcgOtvAS9jiRiK07wd02AfisvV5jDxzMsnWA7NdgnYNM0Bq2acR8XmJHKQ0vRHttonPNuAlOrHs1UFbkd+z6KTCT3S28Q/QwbiYgnaUIm+yyGxhAgpclbmT7TmSba/Odh42q8wDiSmX1iDi4XSQ0LhKbLaaAdHSG9BZw7cFGueyCw8Y0FllXxCbLV2BQmdioI08CzoYvMVmC7+gwAp3sv2CZNursy3EFlVTQWJphxCxZokSJFP0ClssUoB4Iwz4OtPJJTNyEoIUusTcwpUXrPi6hhQQnS0k1qAQe6pQCUK5Z1FgG4jONrQeecb+bmRbig5ly3lToFcg2eZhK/1aNUhK/n4lIp7MBolodxmx1Sw5uGGSBcUxjwI3soX0enRW9/nUrEg5AKjic+ddRqHnPuKzhRIUKKfEZzse23UMegWS7RB0sJzMAEkNKEPExnUakERuuRUd8mTgjtkozixwK1vIbsK22Mqbr7CNQnAjW6ocBRaJzzaWZNurs40zIa9mUyhIiJrzEBEv5YIE4j83IM+cTYNbSszoutrJ4Ga2kGtE15SBO9lCkhl5TTGis4U/Sba9OdvgKhRg7y0KAulEfW1FNGwPgO6KWP2CdQoqiQL3ZNxDV/3ZF9zOFka/RFcclLuXLWxFgTPis023kmx7cbbeFejEWvFhOEhm2h1EvDYRumfgtqdWdPI4HNyl3ouu2aWAbmQLuoPYtRMMuJmt6iEKzBedLXxOsu3F2cJ55FiuPcZW7LM9GTRII+QTM6L5szBwnzp33ysWW909bUbOVR9w38SX2LUXEwDcypY3ux47x+5WgrvZwlgUqA8Xna1/Jcm2F2f7A3JMXw44jjzjqbkRIIm8K/ZHy4GbqITlf5mQtz96txE5B1XQDbrttdi5+wuU0O1sIfJs579INoD72cJ+597EZgtBB0i2vTfbVcixnAPlgofIYyt/nBIM3ee/1YDI7osGN8jiSk7Uo8C1KTI4ZUHODga6RTX3GnasPJ8CkCBboAo7/mVerFdBt7LV1aLATJHZ2kx4RrLtrdlOsVf6UAcQuv6RkRWU+7xs3gAfRgbdMvwci/hkgRzEoBTK4BFrL9Sz6GA13FjkDxB4l0XOAgV0V3ZZI7bDenVPNvDczJaX83MDtuPMFAVA97KFeShQoxOfLWjyFn95sZpk2wuzTTMhp3aIrZb47Q8NVhR4eXptbpiKocFt3itqEPFgshfHxWQZbdrcb+6YUMBiuF4aApykantbOTR0H9VvxvYztcgznFk/SgNSU4zcfqYSeYY/dk2PBHcRJFt+aUI/G+xiV9/Sm1HI8vC3Zbl91YycgnZ5CUFbg46yiFWlSq/XQVsyRhmUPnfvX3UsCrCmpgslgWA3XY+cV3EgmfHo8Dn0GN+M0flFJXMmj0yNlgPRXSRb+hxyjLuhRdCsYzUGKzqxPP5964xUHdcuLYiV+6yPF6cPp+MUmUVViHgik7vOcWGfNvVSNKP07TduedmdJnRmMTzb/5YGWmw1IudvX5BMqjDb3oEg2cKn9jjOyPmQ0zdcaTSy+JrGO4e3zMyO0KpsN94+LcV6dd1t4k8sYu0aHz7bPvxroQ/QCqVPcMpby74rr2axTbOvTi/qJ4NW9DELcvYpSbaejWQ7C22eRICAduyntxqNVmzD8Kz8+7Uzh/ULUMplMrCV2GW2suLHiHguB/ibLfeK//TxomkZ4xc7ZMqyL049qLPi61iz4eXZ5RkMCAQ/spe9UEGy9Wwk20QDcprywFnA6J3ltQYzi+2wvrxz5uuVc8alxgR6q5QKhZymKQBhtEJx+6yI+i0BtqopSqZQMEq1Ljpl7OxVe4/feG7E9liM+keHPkhlwFluA3LMOTTJ1rORbL0fIMewCdpQp5X+9qDROV0h1vjy9sXDX20qnTVpZHq/0CA/jVqlUioZjqIVwzDKwgpEvDItKCw2dVhe0aJNXx2+eLtKz2IHrEb9y4t7Cvq20+YqA3IehYNnZ0uQbGF/84YLBbSDCh21+sj9JoPZip0yNdVUPrh26fTBn775YufmDcsXlTb7cO2Wzbt/eWyLsfJ+ZXWDkcXOsGajvrL805mJKmiP/IQFOYdUnp4tQbItQZsX/aEdXgC0f+KEVfuvVjYZTFYWe4zVYtRXVxzbNTc7xp+hwAvaEfUMbZYqQDopJFuiN2aboUeOfh60RfmERPYN1/lptCFp+at+KH9arzeYLdLGy3LBGhpf3jqya/bQ2OCAwLCo2Pi4MC0NbRXqkWPMpkE6gSRbojdm6/83csxl8Dp5YMzA/rHREeGhQUH+PoxCGRibW7y57OLD2kaD0WTp5r2XZS1cr031T/48uHvhxJQwrcrHLygkIjI6Nn5AQkpy/xAlBa/53oScm0EgpVfY6tJCgfFAEG9wtswOe0VPIkGIUoUnpackDIyLjYmMCNUFBfhrtSoF9PECJiRpwvvb9l+4/ayuUW/rV0zArNViMRkN+sa6Z7cv/LxncUF6hDcFXn1opdYvKCg0PCIqNm5AQnJa+uCsjBgfGoR091nkfMyAlC5gu34BgniDs6XHWpCjLwIBdezgYZkZ6SmJAwfExUaFhwUHaFVyCgRobUzGmKLlu/YdvnDjEbfa1NikNxi4ik1ms4VnNptNHINB36RvaqitfHLj/KF9O5cVjcmI8ZWDEC1TB4RExtqqTUrPGJI1dGTuiIHewnALmuzhT5SBlPaSbIlemC2EVCDH/AufiDxq5LjcnGFZQzLSkxMGxMWE+avl0CHGJyg6eei4KUULV2ze8cXXPx86cupcizPHDh0q+2bvrk0r3p8zNW9EalywDwMd8pKrdVEDElPSMzKzR+bmjs2bPLafGhx+MCPnQRhIaibJluiN2TIfo83zeGgmC86ZUjBxbG7uyKFZg9KT40PUNIhDyVvQjiL/83//BzLaC7oi84lIGJw9PCd37PhJBQUzZ02IlEOzqCcscvYqQVLUnyRbohdmS482IcewBOyY1KLimVMLJueNG507YnC/QAVIwItWqDUB/gy4QBGcOHzM+An5BdNnFs0rmT/Uuzn2EgNyLJNkIK00K8mW6H3ZQuA15FjLfWx9+U4sfX/+vKJCLtwJI/trQCKU0i8oNEonB5doE0blz+CiXfDeBx8unxpKA4DyrAU5t4NBap+QbIlemC2zFh37kkPmrl7y4aL35hXPmTkp0Rsk48XoouISEwPBRT4Jk4sXvL/ow6UrV298P4oGGFGHNlsYkBqzwUSyJXpdtlRKLXLMZTSEfLB1w9pVS5eULpybqQUpyYIGpAwZmaoAV2mGFH+4YvXajZu37l4RDdRX9rYahlAgvcRyki3R27IF1c9oU5WsWfzZ7u1bNm9Yt7wgDCTmmzRibH5BMLguZPLqzVt37P7k86/W+cU+RZsTPtATqGnbDlaYSLZEb8pWNsmMHOMnM3/86vPPPtmza02WHKQm7zehsPiDMWK6k/8/e/fh0NS993H8H3nuvf1mgmAAARdOcNGiRdy7tigWtO7Zwa3bqrUW9x5VXGC0roqrqFVcOCpOlkzDDPOQ9XnOyCEhhhDUXPTe8+o+g5P8ct4c8supDl63/7fEI0nHTy/c3gCWeaaSPEbRI8ymM0kkH3a21OEBONVXTp86eSLp6K99yAOCv1qyetOm/gpqhZ5rjp88dfrMuT8rwXnekQQSiZStKt4MliXn0uVLF85v6UqeoByyZteh86taV16nX1MupV65km0By7JKTRKJlK1Vl2xwmIe3b9082p08o+vikxfTH072otbovC/t9t2HdeAU9CaRRCJlq14jXM7KHj+6PZY8RBn9x5OC+vNh1CqRqRlPXguPbquaJBIp20bdcsExFeUekJOn9Nhb2oDauT7UKgnZhQ3g6PqRRCJla6NaZgKHKYklj5FNfQ4g7TNqldG59eCYN6pJIpGytRPyHLyqSPKcjjuNgGGlP7VG/zzwXoWSPYlEylb1gwGcuq/Ig8bnA3gcJaNWGKEDx/iTmiQSKdsmgu+C07BPSZ6jSWEAy4Zgcp/i12pwMrpSUxKJlK0irh6coijyoOnZALLHKMhtEZlmsJh5SpJIpGwd+J62gGW6HkKeozleB2B/CLmr83kGnCv+5EgikbKVRb4Gx/hHiJw8ZuIzC6CLVpNb5CFJ9eCUj5bTe7IrOfkr+oCMWXssOTmSWiMxOXkUuUO5IGm2jDhHkpOHk6OOycnJIcQZeXB1MP2PGfszO/Cff+zZknqtQej2wgA1eYrX/ioAx3uRO9SfWa+1xu1qegvB3ZroSpwCYAV9OJLAiaPWqAYWkjsmAxhNHAaYQ45CAXxGrHY1wF7635IMztcffbbU6RZ45owpGhl5yNBHFkA/w5taJNdMyzCBl9GN3kYamnj9AWY7E57MNgHAcjeyjQBwj/6nzMJ/S7byCZUQVO0IbUeeodhYDuBSP2qJz6f7qiGonqL46LJd+uDBTGrZVWDToEGD/DyTbRSAfm5kKysC1tBHoPuDB3/Qe/EXsNHlwD948EDxUWRL6s0NEJif/BDioXDD75iA+u/bkysyn57LMk0QGA+r6W2zNTM2r/6T2e5y7zD5wLdk856zpV5zu5Eb2ZJm+lD6GPQFcui9KGxpDAGoPo5sqWOaBVam9G+7tpORByx/DeBOBDVP0T50WYYRor8H0Ftne5XsfXjZ6j2arY3LbFvBb8a8eR3+G7Kt/i/KVj68CI1Md37sr1HRe9ct1QAYVwZQM9QBkeufG9GoLFb9EWa7978y26n1ACKpzYT/x7JVfETZkiq+DjamrB3jgn0U9J4tygfwZKharXDSrKbntGSdBTbMr+3Jo9mqyYl2dutlJHK5i6zJ0keOh/F2L1uFwv1TTi1762y9W8hWriZH3jKii3Carasfy5RKcpMPiZodt0VOs3X/9XM/2+Fvk626jbIln0QD7FXfWDU0yEdJ71PwOQawHIiLHhPWQdXkvNeETNr51Ah7xvOdyXPZDtyUWmF6emyRkqy0Wm0U9fy9EjU3pxKrd3KRpS59nZIaef87+aW59EpCH7KaqdUmkCr+hcGceTKUeLtP5gJ4zH6xL4mjWXu/HOw+46mJg1qtAbjPbmYtYcr+dKY+ff9kEiVqtWOI+i757egbp1yvAzpU/7W5Owm82a8SToJorXY3cXqxCwPfyNZ7VYoO+gsj7bLdp9VOJM4PWu0ydoMco/HZsS7UyPfXGzqY8hL11+Lj44PInmbJIz2YlxeiyYmIXXcZc/7mYJrBDRJnsla7k6z2iuNDFLYnh4H+0dFQsurMPvQQirqsR9k16yOfpL1pBGrYFTuItUOrFQeqP7vMl1gyfix7n65EzY04YoUeL7LU3lurIJE4rMbGge/J/kN8Sgu12lVENFB7uR7A7+waOREt02rjSeDHLgojznatdgpRj/i9WrWwZvmpHEtxys8hbZEthaSZ0YSl8uqqkZ00ahm9N3GZFsDUYKzLPTreX0Y8RbuAPrG7Mxg0ZcmIkHsu2xVGCO6Jgw1gWpdy8I6rKNoAXnpnsur/HIK6eSTYAdynA+DVziJOHkTLifWVHlaJarJTAVEcsdqfgFWyr93FWHnEDNQ7ZjtcD17ZCGs9ACaQYBWQT5zBALo5Ztv1b/Asi23ZvgaWEucEkEJ/gFfRWGKcDlZnyMGIUlilhZCj6Qx4+aHbgQfEWWN3vSwClhHvJzMExr3yxnexCI8ygnfah98Iomxi5dhmv8cC6CD+aBsbUglekpKmGMG705Hs6SH6migSQA8SHAFSiWgSGimJKAU4QYJOAIYTJwv4mXYYAfgQa0g+BJWT2iJbWVQuHFmq722fOiDwvaXre6IOVrq1ITJSevt3HfrjqTwT3lAYrSZPZau8woV2+2yWBaiMasx25h0w+Uaw1vVrgCm/DqzTJIitByzZZ+/UADhoy3YaUKYDyxj6ZrZhVYD5yVUd33/HZrPtkQtWQSFY2SG2bI8Db2a7VAe81oNlmNK6bHvrwGLyTbDMdJ7tYkBXBlZNEPE+NwLlSQl7ud5/dKjWCKAhPcsA4K6cmloGTkkZ8HCHy2w3g1V+txisNbZsR+WDyTOCtaEV2U5P558da024QXz9Tnok2x2ANdvvjID5xen0egC/tEG2pIgrgxPmwtSEaeEd/bxV795uYHINRExCaI+R3yWm6+GM/od25LFs4wHzFhURDS8AHjdmm/N4nIzUCxmg5nrJXDXJhr4CLAOFOMqAjHAi8kkCMEbMtrQyIZgo8Ih4OeoXEaEDdkdERAQR0SngVV8i6rnKiOs+ZBMeEVEDbGQ30xDReYBZpSHSrGGA043nVxJQlH7xjEO2RaXxPkRdd1uAXEWrsk0GcHWAnJTRGUVOsy3Qr/In6vIHxDunlJnAFV9ifQuYIsneQyBtgjdR8AmIDTYKqAUaVgYRdfilrshVtiFGYM9AGVvQM8DYrzHbnL+GEam+0QN1nYgoOCJiP1DIDldfV9nmPOJev28ZoOqGbraKZMPzAcun1HTga4EEYeCdZKuJiFgGIJLdgFxkqzVBd//SBTVRVwa43YOIOlwAzP3bIFtSLa1ubNXSNN2SW4k/TAgL9vNVy+ntKVbo7Mu886LK4TAGWNVtbE/vlu3DUTYO2bYvAxYTr7cBmNmYrT9xlgAwCLH2tQDbiLMJyFQT7yzwUMwW84l3CbB42x1GkAfEEm/cCXWzU1IjActw4o0GMExcjWv2oYjZ6vsTby6Ama3JtrsROEo83wyn2eLLxiL1xBkIIJh414B1ZK97VroPceQZb3yPTADMw4g3weQqW4phNhMvrAGIb8z2pkpYC3GhbW8X2WZpiLMcQIMQaziATc1MSTnNljVFnJJykS3SR9huUb0jI95d4GJbZEteW+vAM+kKqwxwwBTcPrI6NrJnkL+vl1ouo1aT971nRrMsTMUL8R0ukxhI75itPYeefgEy5LaPazLFbDcQrx1ju+HvuvUqGswA40jQ0wJMtGZbI7f11s8xWy8Ag1r+ACgdSCKrE8BtcfUjNTnJ9qDdc8xoTba7gcoAEkx3mm2e3Vp+ywVAIQk2v3FOBvmTYAWgI3tqPZBIVjddZkuhZHUbSGzMdoYt0J3uZ7ueeL4G4JZtkH73QLa5viToa4ElnATDAHzaFtmS5jAjZPtk8dpruuoGJ3FVZt5IWr9wUmRo18AAjY+3WiWXkysyuVLt5dM+ILBz6KANOjTDzFRmn1k07Z5RqPZsV/JgttfEQllx4mUSwHQSZANHSLAP+JtYE4E6GVkVAmus2T4kQTCAaMdsSbxz0GW2ajMwiaxiAaNSWO1s12pxJ9Z3gEnhZraOZ3Afp9mKXYaLn/UkAM9sX/kJOTcFQDvHT4VHk9VOl9naHAOuN2Yrnv0XgBT3s40jQZ7tu8ZB4L4Hst1NVguAXLKSNwBz2yRbCjpt7fbhCM3wdVfyK+tNcMaoL3iYqt3508K4L4Z9GhrSMTgoIMBfo9G05/i2Z//NLyAgMDi4a6/+g8fFzFm6MflS+qtKI5yxNFSXZiTP79suylptw5+hsnfOtvaljUNPBbZC6VMA4eJMsu0CcZgEa6wdLBYL5fwFJDXOJFsZgHlvZHsGMO6NUrnOtr94oRaLCRNXu/7McZRQptvZ5gPryaq5mWRBAICJ1u8MVSTYD5wg5yYCaE92xgPoTFbb3cz2AHDTNpNMgt+Au+5nG2u7cB8kwS9Argey/ZmstgIpJMoENrVNttTlnNCtOTO2HXmHLzj6SKdnTGiWhdGXFGQ9TEs9d/Lo/j1b1vMSduzff/jE2Ss30l/kv66sc7W7oa4iN3VDdGcZeUc/FzY03OgjVuuRKSlvC5D/wiobQJxDtldt2a60drAfqH0hqgHuOWZb7yzb7pVgGV4mze7cfLZfA9CQVSCAaPey7QtgpPvZKkzA9+5l217MNhzAKOJ4Zb8ZGo34YcPR8ykp6Y7ZLgKgcDdbr9hl20+mpKTkO8t2z1tle8OW7RoPZ3se0L8QMcDZNsqWnUhkhKCKF7YnIlnQiGXJD4sr6xrMeO9qy3Ku7Z7VV02s9nPzLeA03I6Qkyez7QsH8S1n+yeaeuVWtjTkGQTGrd7NZbvCPtsAAEvcz3am+9l2BfBdK7OlVKA4htv+MlDoT00seA6RQ7YJAOTuZavZUgHRx5jtEzR1u62ypc7WblH5S6CMeAGD5+++9EJXWcMYLXh/6g/GiP+boMz/p3LwmJtitZ7KNgiAdr2dyJazPQ7krrez2L1sST79WA54qc1lO9cx25nuZ/ul+9n6vE22vqkAmOxyAOZRJBJHBob7F09otTcds13qdrbKGwAqbp3VarXZH2W2fwEZ6+3Mb7NsqfPZemtWSb1UJFJ1GTZv07n0vFIuXvPb1euw15NPyUrZI7HOWu2lPjLyXLZiMV+TI9fZ/gzcIXtuZCvSRC3PBTC1mWyHAAghq54APncv288B9LNm+0XL2VI5sKy12ZLyGASOvzb9EAuQFOj8ve0UcYFjtrmO2W4ETAtUxDnQqmzXvq9se7aU7UmX2R4ATpO9tsuWgrW14BlujmxHTfiFTfh+S/L1jDxdub6mjjGa3OnXYjY21Nfoy3V5OgNsGjYGk8B72PUG8OrOhMrI09neB9a0MttpQMVbZCvy0QMHmsk2AMAY+9kcjXvZzrDepqO2ALPdyPYhkNjqbAen6PccO7v7u2HkYB2gk5HzbCMADHoj26VAtWO2j8TH1KpsnwB73ke2AwBEucz2d+C6y2yXAk8/lGwpeF8VeOa8b/2cZKQO7DcyLn5j4umrD14W6MrKK/RVVbW1dUw90yBgGKa+trZar68oLyspznmclnJky5Jvxgz4+m8TRMa0gTLiyDTzss3gVR/qSuTxbI8BqST6zK1sw+2newNC3M1WTlaHgNRmsiUdsJJsp1khucz2V7LaD5QQp9h2Gu1xke1p4KmMBKPdzDYRRRpy6gKQ6nhxFflZ7G6F/F3MNgaAP/HUjJCtygD8QIJj7mebYnuos94l23Z2r/mfTrPdZDvqIKfZTgAagsmqa4e2zZZ8/51t7av+1AgNNUvt3yNy7MTJsbMW/bD8p4Qt2347xDu4a8uWX1cv/2HBjNhJE0YN+ax7ezkJYm6KN0bp/xyuIo7P8OR68MyvVmjoP5BtuBn4Uhx34wl1C9mKy66TwPueLtK9bL/KH2b7JGNfc9kuBSoDiRdcBfzbdbbP1MTrYwA2iU82Uy7ejNh8thMAzCfBYfey7Q/sJedOAX+TYLtjtnQOKPMjXlCFmG04Gu9N+xJCtrI624dSWe5nuwNgOhLv9LtkSzrgMvH8apxmuwDAEOKtd5qt7AmQTIKAzNywts2WvKY9YMAzPvm+m5Kc+0QV2DusW7Cft0JBn/zrH//8178++eQTIvZv//rXP//5j39+QkovTWDX0L6d231CPNmII09Lq+tqSp7vjVARS9555iMjeMzfs73ovWWbFmwTRJxXjT0dBcrjiDO2FkhoKVsx9WQNsQIuAmVezWeb23iYBWYw3xCnZ6WYjJNsVTnA3VBihaUDmUrX2ZovdiLWkFygXnheGwBsU3C5/W56M9taMVt6BNTwD8J7g9m9bMcBzIIhPbp3795FQU2tBUzCCT2p7o1sBwG4LzyjR2YxW3UJUDqYWJGlFiFbegBk8bvK9xpcZ7vSLtsYABc0RKRca3qnbE+L03TBt02N2UbbZdvHDDwOIdaMBqfZ0ngAu7yI1Yl78WRtmy2pRlyohEB/ZESA82q9eg4dMnAAe7eFf/t2ShnXK4uEbj8hmdLL1y+wa+/+EVHDBnhZu6WAib8kJiWuGeNDHM3gnUXiYa6MU9G7cf1LwF0DSjMzOxNRZz2Ae/tWnCoD8ErjTraUCEB36udtf1sghuA821T+MJm9iMJyARSfiv9+fy2Q6dNctjTZAjAXN2+5xACWr8h1trtMTMq2fWkmNN73p6kA8OLQxhNV9U5+SH4C6DIzvbjDgPXk2MaTOmxzL1tfI0Tm4ssjyE5fBmBSl8YsvoFV6UBWZgjZuQyg/tqO3anmiiNitvQdAOPlbbvTcFx8b7sEQOnxmd+syzNPMKI+81Kz2X4NGNhRXS3eDopi7YbDBdjyTtmGGgHc37/lHFN4ojHbPgDYIx0Rv8FDf2bjgWfY4jxbuggg//jqPc8BWMZTG2dLst57Ci3gmZ4tD/WmNynDYmK+GBUV0bdHR39vlVxGYprEp8tm2z6oW5/PokaMnzwlzC5JlZeSeF49Ft1hICg+2EdOHs12GiCezD3uQ/SwO7mVrWyNCVbMImouW7EO4Z1w4B2IqvpTs9nS+BJY6cZSC9kuTIDVXgUJZpsgWOxkSurf4HgTaw4Dwc2+7mVL02pg5zDZWQarjHYzwOpFdnxTILDM3t6YreIWBMUhYraym7DaSacAvGg2W+98cHYTJ1IPwfGx75Qt/QqBKdo2JUU3AYhvsrrkQ3C3RzPZqnZCVBVLbZityO/HpwwEzOVpIao3wu4yI37e9CkTR0eGBnk7TU7GvvcdOPKLydPmfDe3m/yN6jtFayshYJ4t8yfybLY07ykjnszKzfngZC5TkVvZsoalM2DVJw8gV9nSzAzGmi2pN74Gh9kVRC6ypeAzerD0p4OoxWzpx1KwChZSo6hcsEoWkZNsZUteGqzZUtQTMwDmgNrdmWSfFEsFrxacWWQnhj+o8YSGFBvzLdZsRbKEUrDyYsmWLSkSTGBdDyMxW/L6uQ6s8pXc/QKVLrKlnimljdlSyC2w6rcq3jFbiikHKyea7LLtcKSwMVvSnALLnKR5cyZZFP3YyEd7oAd9CNmSatz5UggspYfGdVJQE75fblm/etn3c2IGdlBQM+S+fSbM+m7J6vVbv9Y4rAkauf2VCYKyyxPV9B8WOH7BxH7UKsrP5kwd0p5aQz5o8sKYcB9qUc+42B7kHvXoudHB1ESPmDnDvKllvqMWTAwkd80vYWJI0G5KEXCd7Cn6RC/4shM1p1vczKFyErIVeUfOjenj8IgGfTNntBe1Vsfx88d0oHcn7zN1RqSSXPAfOf+LLuSSOnJ+7GBvog8jW5KFJGQxEKd5t43saJ/nJ903nzp2YNempUN9yQWvfvM37PjtyKkdoU2jjVr3pAECJmdzTxl9aCSfW3CcGk0Cyqn1bNlKPJ6tSB1zocQCgSlry4guahIpR1y/d+vqpeMzfVqa3NpzKTXtXtpYu12Do9b+zcCq9HKcN314JD8Ba+wiBvKkbD+ObEnWbd2TaliZsvd8GSIm5v1Nsa44P+9iOLWg48ZXBcUlr+f5ksCr65iNGQys6l6u7y6jD5BkBXBPbt/fCSnbjyBb8Wp5LI+xfQ5waGpYgIJYvt+ZzSaT4U4YtSBwB2M2m7FUQyy5X2jsgWwDrAyFpyep6IMkiQRwfqCaWL4jkgFMkbL9CLIV+c26XGyElaUiddmI7r5yUk+tB6sw3odcUo/7C6yGeT4k8wkZtvhSmRlWJt1f8Z1l9IGS7AdHX17OgLOEpGw/omxJ1nXJDZ0JIkN20qKobv7DXvLpPZ7agVzwGf47n/er0X4hn889/LIBIlPFvZ/7KenDJVn2EiLDH1+RlO1Hkq1IHrr6ts6IRsyL5PiZV4T6Mlf08aVmqEOmpTLg3Jy+6FBGHRqZyu5vHqSmD5skfO6yzYm71yyYFEBvp8vAgWHUJqRsWYq+P90oYGBjKBbvoqq5NH9AsJMClX6hMYmFEBTlN8CmQXd302AvEkkkUraeIe/1Q0pONZypTUuICe/m5yW3+119Ovcdt+z8awucqMtP/Slc7FwikbL1qOC4Q8/KDHDCXJF+ZOk3Yz8P78saMGhk3OI91wqdbmksf/n7gp4KEkkkUrYe5j0qITVbb4Izllpd1oO069dvpL8sqna+ianq1V9bx/uT50kkUrY2ipDY3TdzKhvQagZ97p1907sryfMkEilbB6qesVv/fF5cY4LbTPW6l1d3TQ9VUVuQSKRsWfKOoxYfvvmySN9gRgssptqSnNvJK8d3UVDbkEikbEWqbuN+3HMp/WVBWbXzeC2GOn1xdsb1Y2vjentR25JIpGxFcr9+4xclHDyf9vB5Zl7h65LSCr2+srREV5SX/SLj3pXk7ctiI7uo6UMhkUjZiuSazv2HR8/+ftnadZt37tq6fu3KH+Z+PW5Qj0DpGvv/7dOxAAAAAMAgf+tJ7CyHYGwLaAtoC9oC2gLagraAtoC2gLagLaAtoC1oC2gLaAvaAtoC2oK2gLaAtqAtoC2gLWgLaAtoC2gL2gLaAtqCtoC2gLagLaAtoC1oC2gLaAvaAtoC2gLagraAtoC2oC2gLaAtaAtoC2gL2gLaAtqCtoC2gLZAy1EI1wwY3vcAAAAASUVORK5CYII=" - } - }, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "![qiskit_header.png](attachment:qiskit_header.png)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# The IBM Quantum Account" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In Qiskit we have an interface for backends and jobs that is useful for running circuits and extending to third-party backends. In this tutorial, we will review the core components of Qiskit’s base backend framework, using the IBM Quantum account as an example.\n", - "\n", - "The interface has three main components: the account, backends, and jobs:\n", - "\n", - "- **account**: Provides access to quantum devices and simulators, collectively called ‘backends’, and additional services tailored to a specific backend instance.\n", - "\n", - "- **backend**: A quantum device or simulator capable of running quantum circuits or pulse schedules.\n", - "\n", - "- **job**: A local reference to a collection of quantum circuits or pulse schedules submitted to a given backend.\n", - "\n", - "
\n", - "Note: To run the sample code in this tutorial, you'll need to have an IBM Quantum account and have qiskit-ibm-provider installed. qiskit-ibm-provider is the interface for accessing IBM Quantum services.
\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## The Account \n", - "\n", - "The `IBMProvider` class enables you to access your IBM Quantum account, all of the backends (quantum systems or simulators), and additional services that are available to you.\n", - "\n", - "This class has class methods to save your account to disk, view saved account on disk, \n", - "delete saved account from disk and also view the account currently active in the session.\n", - "Using the constructor you can load an account from disk or enable account for current session (without saving to disk).\n", - "`IBMProvider` class can be initialized using the `API token`, which is used to authenticate to your IBM Quantum account.\n", - "\n", - "Class Methods:\n", - "- `IBMProvider.save_account(TOKEN, INSTANCE)`: Save your account to disk for future use and optionally set a default hub/group/project to be used when loading your account.\n", - "- `IBMProvider.saved_accounts()`: View the accounts saved to disk.\n", - "- `IBMProvider.delete_account()`: Delete the saved account from disk.\n", - "- `IBMProvider.active_account()`: List the account currently active in the session.\n", - "\n", - "Constructor Usage:\n", - "- `IBMProvider()`: Load account and default hub/group/project using saved credentials.\n", - "- `IBMProvider(TOKEN)`: Enable your account in the current session.\n", - "\n", - "You can save an account to disk as shown below:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "ExecuteTime": { - "end_time": "2019-08-10T09:32:08.428757Z", - "start_time": "2019-08-10T09:32:00.431046Z" - } - }, - "outputs": [], - "source": [ - "from qiskit_ibm_provider import IBMProvider\n", - "\n", - "# IBMProvider.save_account(TOKEN)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "`TOKEN` here is the API token you obtain from your IBM Quantum account.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Then you can instantiate the `IBMProvider` class like below:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "ExecuteTime": { - "end_time": "2019-08-10T09:34:10.585597Z", - "start_time": "2019-08-10T09:34:10.581126Z" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "provider = IBMProvider()\n", - "provider" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `IBMProvider` class inherits from `qiskit.providers.BaseProvider` and implements the following instance methods:\n", - "\n", - "- `backends()`: Returns all backends available to the account.\n", - "- `get_backend(NAME)`: Returns the named backend.\n", - "\n", - "Using the provider instance from above:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "ExecuteTime": { - "end_time": "2019-08-10T09:36:23.193295Z", - "start_time": "2019-08-10T09:36:22.760961Z" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ]" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "provider = IBMProvider()\n", - "provider.backends()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Selecting a backend is done by name using the `get_backend(NAME)` method:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "ExecuteTime": { - "end_time": "2019-08-10T09:37:09.637775Z", - "start_time": "2019-08-10T09:37:09.633565Z" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "backend = provider.get_backend(\"ibmq_qasm_simulator\")\n", - "backend" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Filtering the Backends\n", - "\n", - "You may also optionally filter the set of returned backends, by passing arguments that query the backend’s `configuration`, `status`, or `properties`. The filters are passed by conditions and, for more general filters, you can make advanced functions using a lambda function.\n", - "\n", - "As a first example lets return only those backends that are real quantum devices, and that are currently operational:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "ExecuteTime": { - "end_time": "2019-08-10T09:39:00.685464Z", - "start_time": "2019-08-10T09:38:59.837398Z" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ]" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "provider.backends(simulator=False, operational=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can also filter by the minimum number of qubits the backends must have:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "ExecuteTime": { - "end_time": "2019-08-10T09:40:18.300155Z", - "start_time": "2019-08-10T09:40:17.775145Z" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ]" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "provider.backends(min_num_qubits=5, simulator=False, operational=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Lastly, show the least busy 5 qubit device (in terms of the number of jobs pending in the queue)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "ExecuteTime": { - "end_time": "2019-08-10T09:41:49.653822Z", - "start_time": "2019-08-10T09:41:48.210193Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ibmq_belem\n" - ] - } - ], - "source": [ - "from qiskit_ibm_provider import least_busy\n", - "\n", - "small_devices = provider.backends(min_num_qubits=5, simulator=False, operational=True)\n", - "backend = least_busy(small_devices)\n", - "print(backend)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The above filters can be combined as desired." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Backends " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Backends represent either a simulator or a real quantum computer, and are responsible for running quantum circuits and/or pulse schedules and returning results. They have a `run` method which takes in one or more circuits as input, the Qiskit API serialization format, and returns a `BaseJob` object. This object allows asynchronous running of jobs for retrieving results from a backend when the job is completed.\n", - "\n", - "\n", - "At a minimum, backends use the following methods, inherited from `qiskit.providers.backend.BackendV1`:\n", - "\n", - "- `provider`: Returns the instance of `IBMProvider` class used to access the backend.\n", - "- `name`: Returns the name of the backend.\n", - "- `status()`: Returns the current status of the backend.\n", - "- `configuration()`: Returns the backend configuration.\n", - "- `properties()`: Returns the backend properties.\n", - "- `run(circuit, **kwargs)`: Runs a circuit on the backend.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "[IBMBackend](https://qiskit.org/documentation/partners/qiskit_ibm_provider/stubs/qiskit_ibm_provider.IBMBackend.html#qiskit_ibm_provider.IBMBackend) also accepts additional parameters to the `run()` method:\n", - "\n", - "- `job_tags`: Tags to be assigned to the job.\n", - "\n", - "And supports additional methods:\n", - "\n", - "- `defaults()`: Gives a data structure of typical default parameters, if applicable.\n", - "\n", - "Refer to the [IBMBackend](https://qiskit.org/documentation/partners/qiskit_ibm_provider/stubs/qiskit_ibm_provider.IBMBackend.html#qiskit_ibm_provider.IBMBackend) documentation for a complete list of methods." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Lets load up the least busy backend from the `small_devices` filtered above:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "ExecuteTime": { - "end_time": "2019-08-10T11:07:57.819917Z", - "start_time": "2019-08-10T11:07:56.480877Z" - } - }, - "outputs": [], - "source": [ - "backend = least_busy(small_devices)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Some examples using the different methods:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "ExecuteTime": { - "end_time": "2019-08-10T11:08:14.218624Z", - "start_time": "2019-08-10T11:08:14.214377Z" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "backend.provider" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "ExecuteTime": { - "end_time": "2019-08-10T11:08:30.907490Z", - "start_time": "2019-08-10T11:08:30.902985Z" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'ibmq_belem'" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "backend.name" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "ExecuteTime": { - "end_time": "2019-08-10T11:09:31.014122Z", - "start_time": "2019-08-10T11:09:30.529121Z" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "{'backend_name': 'ibmq_belem',\n", - " 'backend_version': '1.0.14',\n", - " 'operational': True,\n", - " 'pending_jobs': 3,\n", - " 'status_msg': 'active'}" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "backend.status().to_dict()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here we see the name of the backend, the software version it is running, along with its operational status, number of jobs pending in the backends queue, and a more detailed status message.\n", - "\n", - "Next we look at the backend configuration and properties:" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "ExecuteTime": { - "end_time": "2019-08-10T11:10:52.506038Z", - "start_time": "2019-08-10T11:10:52.502010Z" - }, - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "{'backend_name': 'ibmq_belem',\n", - " 'backend_version': '1.0.14',\n", - " 'n_qubits': 5,\n", - " 'basis_gates': ['id', 'rz', 'sx', 'x', 'cx', 'reset'],\n", - " 'gates': [{'name': 'id',\n", - " 'parameters': [],\n", - " 'qasm_def': 'gate id q { U(0, 0, 0) q; }',\n", - " 'coupling_map': [[0], [1], [2], [3], [4]]},\n", - " {'name': 'rz',\n", - " 'parameters': ['theta'],\n", - " 'qasm_def': 'gate rz(theta) q { U(0, 0, theta) q; }',\n", - " 'coupling_map': [[0], [1], [2], [3], [4]]},\n", - " {'name': 'sx',\n", - " 'parameters': [],\n", - " 'qasm_def': 'gate sx q { U(pi/2, 3*pi/2, pi/2) q; }',\n", - " 'coupling_map': [[0], [1], [2], [3], [4]]},\n", - " {'name': 'x',\n", - " 'parameters': [],\n", - " 'qasm_def': 'gate x q { U(pi, 0, pi) q; }',\n", - " 'coupling_map': [[0], [1], [2], [3], [4]]},\n", - " {'name': 'cx',\n", - " 'parameters': [],\n", - " 'qasm_def': 'gate cx q0, q1 { CX q0, q1; }',\n", - " 'coupling_map': [[0, 1],\n", - " [1, 0],\n", - " [1, 2],\n", - " [1, 3],\n", - " [2, 1],\n", - " [3, 1],\n", - " [3, 4],\n", - " [4, 3]]},\n", - " {'name': 'reset', 'parameters': None, 'qasm_def': None}],\n", - " 'local': False,\n", - " 'simulator': False,\n", - " 'conditional': False,\n", - " 'open_pulse': False,\n", - " 'memory': True,\n", - " 'max_shots': 8192,\n", - " 'coupling_map': [[0, 1],\n", - " [1, 0],\n", - " [1, 2],\n", - " [1, 3],\n", - " [2, 1],\n", - " [3, 1],\n", - " [3, 4],\n", - " [4, 3]],\n", - " 'dynamic_reprate_enabled': True,\n", - " 'supported_instructions': ['id',\n", - " 'sx',\n", - " 'shiftf',\n", - " 'reset',\n", - " 'cx',\n", - " 'u1',\n", - " 'u2',\n", - " 'u3',\n", - " 'play',\n", - " 'delay',\n", - " 'x',\n", - " 'setf',\n", - " 'acquire',\n", - " 'measure',\n", - " 'rz'],\n", - " 'rep_delay_range': [0.0, 500.0],\n", - " 'default_rep_delay': 250.0,\n", - " 'max_experiments': 75,\n", - " 'sample_name': 'family: Falcon, revision: 4, segment: T',\n", - " 'n_registers': 1,\n", - " 'credits_required': True,\n", - " 'online_date': datetime.datetime(2021, 1, 8, 5, 0, tzinfo=tzutc()),\n", - " 'description': '5 qubit device Belem',\n", - " 'dt': 0.2222222222222222,\n", - " 'dtm': 0.2222222222222222,\n", - " 'processor_type': {'family': 'Falcon', 'revision': 4, 'segment': 'T'},\n", - " 'acquisition_latency': [],\n", - " 'allow_q_object': True,\n", - " 'channels': {'acquire0': {'operates': {'qubits': [0]},\n", - " 'purpose': 'acquire',\n", - " 'type': 'acquire'},\n", - " 'acquire1': {'operates': {'qubits': [1]},\n", - " 'purpose': 'acquire',\n", - " 'type': 'acquire'},\n", - " 'acquire2': {'operates': {'qubits': [2]},\n", - " 'purpose': 'acquire',\n", - " 'type': 'acquire'},\n", - " 'acquire3': {'operates': {'qubits': [3]},\n", - " 'purpose': 'acquire',\n", - " 'type': 'acquire'},\n", - " 'acquire4': {'operates': {'qubits': [4]},\n", - " 'purpose': 'acquire',\n", - " 'type': 'acquire'},\n", - " 'd0': {'operates': {'qubits': [0]}, 'purpose': 'drive', 'type': 'drive'},\n", - " 'd1': {'operates': {'qubits': [1]}, 'purpose': 'drive', 'type': 'drive'},\n", - " 'd2': {'operates': {'qubits': [2]}, 'purpose': 'drive', 'type': 'drive'},\n", - " 'd3': {'operates': {'qubits': [3]}, 'purpose': 'drive', 'type': 'drive'},\n", - " 'd4': {'operates': {'qubits': [4]}, 'purpose': 'drive', 'type': 'drive'},\n", - " 'm0': {'operates': {'qubits': [0]}, 'purpose': 'measure', 'type': 'measure'},\n", - " 'm1': {'operates': {'qubits': [1]}, 'purpose': 'measure', 'type': 'measure'},\n", - " 'm2': {'operates': {'qubits': [2]}, 'purpose': 'measure', 'type': 'measure'},\n", - " 'm3': {'operates': {'qubits': [3]}, 'purpose': 'measure', 'type': 'measure'},\n", - " 'm4': {'operates': {'qubits': [4]}, 'purpose': 'measure', 'type': 'measure'},\n", - " 'u0': {'operates': {'qubits': [0, 1]},\n", - " 'purpose': 'cross-resonance',\n", - " 'type': 'control'},\n", - " 'u1': {'operates': {'qubits': [1, 0]},\n", - " 'purpose': 'cross-resonance',\n", - " 'type': 'control'},\n", - " 'u2': {'operates': {'qubits': [1, 2]},\n", - " 'purpose': 'cross-resonance',\n", - " 'type': 'control'},\n", - " 'u3': {'operates': {'qubits': [1, 3]},\n", - " 'purpose': 'cross-resonance',\n", - " 'type': 'control'},\n", - " 'u4': {'operates': {'qubits': [2, 1]},\n", - " 'purpose': 'cross-resonance',\n", - " 'type': 'control'},\n", - " 'u5': {'operates': {'qubits': [3, 1]},\n", - " 'purpose': 'cross-resonance',\n", - " 'type': 'control'},\n", - " 'u6': {'operates': {'qubits': [3, 4]},\n", - " 'purpose': 'cross-resonance',\n", - " 'type': 'control'},\n", - " 'u7': {'operates': {'qubits': [4, 3]},\n", - " 'purpose': 'cross-resonance',\n", - " 'type': 'control'}},\n", - " 'conditional_latency': [],\n", - " 'discriminators': ['linear_discriminator',\n", - " 'quadratic_discriminator',\n", - " 'hw_centroid'],\n", - " 'hamiltonian': {'description': 'Qubits are modeled as Duffing oscillators. In this case, the system includes higher energy states, i.e. not just |0> and |1>. The Pauli operators are generalized via the following set of transformations:\\n\\n$(\\\\mathbb{I}-\\\\sigma_{i}^z)/2 \\\\rightarrow O_i \\\\equiv b^\\\\dagger_{i} b_{i}$,\\n\\n$\\\\sigma_{+} \\\\rightarrow b^\\\\dagger$,\\n\\n$\\\\sigma_{-} \\\\rightarrow b$,\\n\\n$\\\\sigma_{i}^X \\\\rightarrow b^\\\\dagger_{i} + b_{i}$.\\n\\nQubits are coupled through resonator buses. The provided Hamiltonian has been projected into the zero excitation subspace of the resonator buses leading to an effective qubit-qubit flip-flop interaction. The qubit resonance frequencies in the Hamiltonian are the cavity dressed frequencies and not exactly what is returned by the backend defaults, which also includes the dressing due to the qubit-qubit interactions.\\n\\nQuantities are returned in angular frequencies, with units 2*pi*GHz.\\n\\nWARNING: Currently not all system Hamiltonian information is available to the public, missing values have been replaced with 0.\\n',\n", - " 'h_latex': '\\\\begin{align} \\\\mathcal{H}/\\\\hbar = & \\\\sum_{i=0}^{4}\\\\left(\\\\frac{\\\\omega_{q,i}}{2}(\\\\mathbb{I}-\\\\sigma_i^{z})+\\\\frac{\\\\Delta_{i}}{2}(O_i^2-O_i)+\\\\Omega_{d,i}D_i(t)\\\\sigma_i^{X}\\\\right) \\\\\\\\ & + J_{0,1}(\\\\sigma_{0}^{+}\\\\sigma_{1}^{-}+\\\\sigma_{0}^{-}\\\\sigma_{1}^{+}) + J_{1,2}(\\\\sigma_{1}^{+}\\\\sigma_{2}^{-}+\\\\sigma_{1}^{-}\\\\sigma_{2}^{+}) + J_{1,3}(\\\\sigma_{1}^{+}\\\\sigma_{3}^{-}+\\\\sigma_{1}^{-}\\\\sigma_{3}^{+}) + J_{3,4}(\\\\sigma_{3}^{+}\\\\sigma_{4}^{-}+\\\\sigma_{3}^{-}\\\\sigma_{4}^{+}) \\\\\\\\ & + \\\\Omega_{d,0}(U_{0}^{(0,1)}(t))\\\\sigma_{0}^{X} + \\\\Omega_{d,1}(U_{1}^{(1,0)}(t)+U_{3}^{(1,3)}(t)+U_{2}^{(1,2)}(t))\\\\sigma_{1}^{X} \\\\\\\\ & + \\\\Omega_{d,2}(U_{4}^{(2,1)}(t))\\\\sigma_{2}^{X} + \\\\Omega_{d,3}(U_{6}^{(3,4)}(t)+U_{5}^{(3,1)}(t))\\\\sigma_{3}^{X} \\\\\\\\ & + \\\\Omega_{d,4}(U_{7}^{(4,3)}(t))\\\\sigma_{4}^{X} \\\\\\\\ \\\\end{align}',\n", - " 'h_str': ['_SUM[i,0,4,wq{i}/2*(I{i}-Z{i})]',\n", - " '_SUM[i,0,4,delta{i}/2*O{i}*O{i}]',\n", - " '_SUM[i,0,4,-delta{i}/2*O{i}]',\n", - " '_SUM[i,0,4,omegad{i}*X{i}||D{i}]',\n", - " 'jq0q1*Sp0*Sm1',\n", - " 'jq0q1*Sm0*Sp1',\n", - " 'jq1q2*Sp1*Sm2',\n", - " 'jq1q2*Sm1*Sp2',\n", - " 'jq1q3*Sp1*Sm3',\n", - " 'jq1q3*Sm1*Sp3',\n", - " 'jq3q4*Sp3*Sm4',\n", - " 'jq3q4*Sm3*Sp4',\n", - " 'omegad1*X0||U0',\n", - " 'omegad0*X1||U1',\n", - " 'omegad3*X1||U3',\n", - " 'omegad2*X1||U2',\n", - " 'omegad1*X2||U4',\n", - " 'omegad4*X3||U6',\n", - " 'omegad1*X3||U5',\n", - " 'omegad3*X4||U7'],\n", - " 'osc': {},\n", - " 'qub': {'0': 3, '1': 3, '2': 3, '3': 3, '4': 3},\n", - " 'vars': {'delta0': -2.1119231275656283,\n", - " 'delta1': -1.989081364755034,\n", - " 'delta2': -2.0773937776320905,\n", - " 'delta3': -2.096945401946966,\n", - " 'delta4': -2.0819029355928373,\n", - " 'jq0q1': 0.011772262300160973,\n", - " 'jq1q2': 0.012605700949390706,\n", - " 'jq1q3': 0.012591488659137172,\n", - " 'jq3q4': 0.01051661912410011,\n", - " 'omegad0': 0.8027253632102426,\n", - " 'omegad1': 0.7994609296532756,\n", - " 'omegad2': 1.9688450308371457,\n", - " 'omegad3': 0.7721838249505281,\n", - " 'omegad4': 0.6185844031359571,\n", - " 'wq0': 31.98159911982912,\n", - " 'wq1': 32.95737791154753,\n", - " 'wq2': 33.68606633828003,\n", - " 'wq3': 32.48696041179116,\n", - " 'wq4': 33.039435267685114}},\n", - " 'meas_kernels': ['hw_boxcar'],\n", - " 'meas_levels': [1, 2],\n", - " 'meas_lo_range': [[6.801661824e+18, 7.801661824e+18],\n", - " [6.893594461e+18, 7.893594461e+18],\n", - " [6.860214726e+18, 7.860214726e+18],\n", - " [6.803382327e+18, 7.803382327e+18],\n", - " [6.926310916e+18, 7.926310916e+18]],\n", - " 'meas_map': [[0, 1, 2, 3, 4]],\n", - " 'measure_esp_enabled': False,\n", - " 'multi_meas_enabled': True,\n", - " 'n_uchannels': 8,\n", - " 'parametric_pulses': ['gaussian', 'gaussian_square', 'drag', 'constant'],\n", - " 'quantum_volume': 16,\n", - " 'qubit_channel_mapping': [['d0', 'm0', 'u1', 'u0'],\n", - " ['u4', 'd1', 'u2', 'u1', 'u3', 'm1', 'u5', 'u0'],\n", - " ['u2', 'd2', 'm2', 'u4'],\n", - " ['m3', 'u3', 'u7', 'd3', 'u5', 'u6'],\n", - " ['m4', 'd4', 'u6', 'u7']],\n", - " 'qubit_lo_range': [[4.590029587904213e+18, 5.590029587904213e+18],\n", - " [4.745329605970436e+18, 5.745329605970436e+18],\n", - " [4.861303971058769e+18, 5.861303971058769e+18],\n", - " [4.670460335567279e+18, 5.670460335567279e+18],\n", - " [4.758389439816784e+18, 5.758389439816784e+18]],\n", - " 'rep_times': [0.001],\n", - " 'u_channel_lo': [[{'q': 1, 'scale': (1+0j)}],\n", - " [{'q': 0, 'scale': (1+0j)}],\n", - " [{'q': 2, 'scale': (1+0j)}],\n", - " [{'q': 3, 'scale': (1+0j)}],\n", - " [{'q': 1, 'scale': (1+0j)}],\n", - " [{'q': 1, 'scale': (1+0j)}],\n", - " [{'q': 4, 'scale': (1+0j)}],\n", - " [{'q': 3, 'scale': (1+0j)}]],\n", - " 'uchannels_enabled': True,\n", - " 'url': 'None',\n", - " 'input_allowed': ['job'],\n", - " 'allow_object_storage': True,\n", - " 'pulse_num_channels': 9,\n", - " 'pulse_num_qubits': 3}" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "backend.configuration().to_dict()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The backend configuration provides some useful information via its attributes, such as `basis_gates`, `coupling_map`, `max_experiments`, `max_shots`, `quantum_volume`, and `simulator`. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The backend properties contain data that was measured and reported. Let’s see what kind of information is reported for qubit 0.\n", - "\n", - "**Note:** The following example displays the properties of the `SX` gate. Each backend may have different basis gates which may not contain `SX`. " - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "ExecuteTime": { - "end_time": "2019-08-10T11:11:08.272105Z", - "start_time": "2019-08-10T11:11:08.267125Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Qubit 0 has a \n", - " - T1 time of 0.000118798578854076 microseconds\n", - " - T2 time of 8.30176098567665e-05 microseconds\n", - " - SX gate error of 0.0003355394204181594\n", - " - SX gate duration of 35.55555555555556 nanoseconds\n", - " - resonant frequency of 4.820326782885405 GHz\n" - ] - } - ], - "source": [ - "props = backend.properties()\n", - "\n", - "\n", - "def describe_qubit(qubit, properties):\n", - " \"\"\"Print a string describing some of reported properties of the given qubit.\"\"\"\n", - "\n", - " # Conversion factors from standard SI units\n", - " us = 1e6\n", - " ns = 1e9\n", - " GHz = 1e-9\n", - "\n", - " print(\n", - " f\"Qubit {qubit} has a \\n\"\n", - " f\" - T1 time of {properties.t1(qubit)} microseconds\\n\"\n", - " f\" - T2 time of {properties.t2(qubit)} microseconds\\n\"\n", - " f\" - SX gate error of {properties.gate_error('sx', qubit)}\\n\"\n", - " f\" - SX gate duration of {properties.gate_length('sx', qubit)*ns} nanoseconds\\n\"\n", - " f\" - resonant frequency of {properties.frequency(qubit) * GHz} GHz\"\n", - " )\n", - "\n", - "\n", - "describe_qubit(0, props)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Backend Service\n", - "\n", - "[IBMBackendService](https://qiskit.org/documentation/partners/qiskit_ibm_provider/stubs/qiskit_ibm_provider.IBMBackendService.html#qiskit_ibm_provider.IBMBackendService) provides generic backend related services for an account without requiring a particular backend as input. The main methods it supports are:\n", - "\n", - "- `jobs()`: Returns a list of previously submitted jobs in the account.\n", - "- `retrieve_job(JOB_ID)`: Returns a job by its job ID.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The backend service is defined as the `backend` attribute of an `IBMProvider` instance. All of the backends available to this provider are also attributes of the backend service, allowing the backend names to be autocompleted: " - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "provider.get_backend(\"ibmq_qasm_simulator\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To see the last five jobs submitted to the account, regardless of which backend they ran on:" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5fdccad1c01fec001a47e018 JobStatus.QUEUED\n", - "5fdcc5fad4445500193f0072 JobStatus.DONE\n", - "5fdcc5f923da0f001acf6f67 JobStatus.DONE\n", - "5fdcc5f9d4445500193f0071 JobStatus.DONE\n", - "5fdcc41b23da0f001acf6f44 JobStatus.DONE\n" - ] - } - ], - "source": [ - "for ran_job in provider.backend.jobs(limit=5):\n", - " print(str(ran_job.job_id()) + \" \" + str(ran_job.status()))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To retrieve a particular job:" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "if ran_job is not None:\n", - " job = provider.backend.retrieve_job(ran_job.job_id())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Jobs \n", - "\n", - "Job instances can be thought of as the “ticket” for a submitted job. They find out the execution state at a given point in time (for example, if the job is queued, running, or has failed), and also allow control over the job. They have the following methods:\n", - "\n", - "- `status()`: Returns the status of the job.\n", - "- `backend()`: Returns the backend the job was run on.\n", - "- `job_id()`: Gets the job_id.\n", - "- `cancel()`: Cancels the job.\n", - "- `result()`: Gets the results from the circuit run.\n", - "\n", - "Some of the methods that are only available to \"IBM Job\"([IBMJob](https://qiskit.org/documentation/partners/qiskit_ibm_provider/apidocs/ibm_job.html)) include:\n", - "\n", - "- `creation_date()`: Gives the date at which the job was created.\n", - "- `queue_info()`: Returns queue information for this job, including queue position, estimated start and end time, and dynamic priorities for the hub, group, and project.\n", - "- `error_message()`: The error message of failed jobs, if any.\n", - "- `name()`: Returns the name assigned to this job.\n", - "- `properties()`: Returns the backend properties for this job.\n", - "- `time_per_step()`: Returns the time spent for each step (job creation, validation, etc).\n", - "\n", - "Refer to the [IBMJob](https://qiskit.org/documentation/partners/qiskit_ibm_provider/apidocs/ibm_job.html) documentation for a complete list of methods." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now some examples. Let's start with submitting a job:" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "from qiskit import *\n", - "from qiskit.compiler import transpile, assemble" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qr = QuantumRegister(3)\n", - "cr = ClassicalRegister(3)\n", - "circuit = QuantumCircuit(qr, cr)\n", - "circuit.x(qr[0])\n", - "circuit.x(qr[1])\n", - "circuit.ccx(qr[0], qr[1], qr[2])\n", - "circuit.cx(qr[0], qr[1])\n", - "circuit.measure(qr, cr)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You should first map the circuit using the transpile function and then send it to the backend:" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "mapped_circuit = transpile(circuit, backend=backend)\n", - "job = backend.run(mapped_circuit, shots=1024)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `status()` method returns the job status and a message:" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": { - "ExecuteTime": { - "end_time": "2019-08-10T11:14:57.844723Z", - "start_time": "2019-08-10T11:14:57.840769Z" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "job.status()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To get a backend object from the job, use the `backend()` method:" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": { - "ExecuteTime": { - "end_time": "2019-08-10T11:15:02.835298Z", - "start_time": "2019-08-10T11:15:02.831250Z" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "backend_temp = job.backend()\n", - "backend_temp" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To get the job_id use the `job_id()` method:" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": { - "ExecuteTime": { - "end_time": "2019-08-10T11:15:13.419833Z", - "start_time": "2019-08-10T11:15:13.415394Z" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'5fdccb1ad4445500193f00db'" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "job.job_id()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To get the result from the job, use the `result()` method:" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": { - "ExecuteTime": { - "end_time": "2019-08-10T11:15:21.634977Z", - "start_time": "2019-08-10T11:15:21.326797Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'000': 24, '001': 53, '010': 28, '011': 56, '100': 26, '101': 801, '110': 13, '111': 23}\n" - ] - } - ], - "source": [ - "result = job.result()\n", - "counts = result.get_counts()\n", - "print(counts)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If you want to check the creation date, use `creation_date()`:" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": { - "ExecuteTime": { - "end_time": "2019-08-10T11:15:27.404142Z", - "start_time": "2019-08-10T11:15:27.400446Z" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "datetime.datetime(2020, 12, 18, 10, 30, 34, 565000, tzinfo=tzlocal())" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "job.creation_date()" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": { - "ExecuteTime": { - "end_time": "2019-08-10T11:28:28.529479Z", - "start_time": "2019-08-10T11:28:28.521774Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "qiskit-ibm-provider version: 0.1.0\n" - ] - } - ], - "source": [ - "from qiskit_ibm_provider.version import __version__\n", - "\n", - "print(\"qiskit-ibm-provider version: {}\".format(__version__))" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "

Version Information

Qiskit SoftwareVersion
qiskit-terra0.18.3
qiskit-aer0.9.0
qiskit-ignis0.6.0
qiskit-ibmq-provider (deprecated)0.17.0
qiskit-aqua (deprecated)0.9.5
qiskit0.31.0
System information
Python3.7.11 (default, Jul 27 2021, 07:03:16) \n", - "[Clang 10.0.0 ]
OSDarwin
CPUs8
Memory (Gb)32.0
Mon Sep 13 00:15:27 2021 EDT
" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "

This code is a part of Qiskit

© Copyright IBM 2017, 2021.

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", - "\n", - "%qiskit_version_table\n", - "%qiskit_copyright" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.9.12" - }, - "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 -} diff --git a/docs/tutorials/2_jupyter_tools.ipynb b/docs/tutorials/2_jupyter_tools.ipynb deleted file mode 100644 index 4954bd2b2..000000000 --- a/docs/tutorials/2_jupyter_tools.ipynb +++ /dev/null @@ -1,1267 +0,0 @@ -{ - "cells": [ - { - "attachments": { - "qiskit_header.png": { - "image/png": "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" - } - }, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "![qiskit_header.png](attachment:qiskit_header.png)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - " Important: This notebook uses ipywidgets that take advantage of the javascript interface in a web browser. The downside is the functionality does not render well on saved notebooks. Run this notebook locally to see the widgets in action.\n", - "
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Qiskit Jupyter Tools\n", - "\n", - "Qiskit was designed to be used inside of the Jupyter notebook interface. As such it includes many useful routines that take advantage of this platform, and make performing tasks like exploring devices and tracking job progress effortless.\n", - "\n", - "Loading all the qiskit Jupyter goodness is done via:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "ExecuteTime": { - "end_time": "2019-08-09T15:23:33.875002Z", - "start_time": "2019-08-09T15:23:29.481034Z" - } - }, - "outputs": [], - "source": [ - "from qiskit import *\n", - "from qiskit_ibm_provider import IBMProvider\n", - "import qiskit_ibm_provider.jupyter # This is the where the magic happens (literally)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To start, load your IBM Quantum account:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "ExecuteTime": { - "end_time": "2019-08-09T14:27:41.857406Z", - "start_time": "2019-08-09T14:27:41.854349Z" - } - }, - "outputs": [], - "source": [ - "provider = IBMProvider()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## IBM Quantum Dashboard \n", - "\n", - "Perhaps the most useful Jupyter tool is the `ibm_quantum_dashboard`. This widget consists of a `Devices` tab and a `Jobs` tab. The `Devices` tab provides an overview of all the devices you have access to. The `Jobs` tab automatically tracks and displays information for the jobs submitted in this session.\n", - "\n", - "To start the dashboard you run the Jupyter magic:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "ExecuteTime": { - "end_time": "2019-08-09T14:26:08.275802Z", - "start_time": "2019-08-09T14:26:08.251911Z" - } - }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "AccordionWithThread(children=(Tab(children=(Box(children=(VBox(layout=Layout(height='100%', width='740px')),),…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/javascript": [ - "$('div.job_widget')\n", - " .detach()\n", - " .appendTo($('#header'))\n", - " .css({\n", - " 'z-index': 999,\n", - " 'position': 'fixed',\n", - " 'box-shadow': '5px 5px 5px -3px black',\n", - " 'opacity': 0.95,\n", - " 'float': 'left,'\n", - " })\n", - " " - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "%ibm_quantum_dashboard" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You should now see a small window titled \"IBM Quantum Dashboard\" in the upper left corner of the notebook. Click on the drop down symbol to see the two tabs. The `Devices` tab may take a few seconds to load as it needs to communicate with the server for device information. The `Jobs` tab should contain no job information as none has been submitted yet." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Getting an Overview of Backends\n", - "\n", - "The `Devices` tab provides an overview of all the backends you have access to. You can use it to compare, for example, the average CNOT error rates. In addition, the number of pending jobs on the devices is continuously being updated along with the operational status." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Automatic Job Tracking\n", - "\n", - "The `Jobs` tab automatically tracks and displays information for the jobs submitted in this session.\n", - "\n", - "Now, let's submit a job to a device to see this in action:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "ExecuteTime": { - "end_time": "2019-08-09T14:28:39.111265Z", - "start_time": "2019-08-09T14:28:37.321568Z" - } - }, - "outputs": [], - "source": [ - "from qiskit_ibm_provider import least_busy\n", - "\n", - "backend = least_busy(\n", - " provider.backends(\n", - " simulator=False, filters=lambda b: b.configuration().n_qubits >= 5\n", - " )\n", - ")\n", - "\n", - "qc = QuantumCircuit(2, 2)\n", - "qc.h(0)\n", - "qc.cx(0, 1)\n", - "qc.measure([0, 1], [0, 1])\n", - "\n", - "mapped_circuit = transpile(qc, backend=backend)\n", - "job = backend.run(mapped_circuit, shots=1024)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Click on the `Jobs` tab and you will see that the job has been added to the list of jobs. Its status, queue position (if any), and estimated start time are being automatically tracked and updated. If the job is running, the scheduling mode for the job is also displayed. For example, if the job status is `RUNNING[F]`, that means the job is actively running and was scheduled using a fair-share algorithm. The button to the left of a job ID allows you to cancel the job. \n", - "\n", - "If you want to kill the dashboard you can do so by calling:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "ExecuteTime": { - "end_time": "2019-08-09T14:31:46.991455Z", - "start_time": "2019-08-09T14:31:46.988055Z" - } - }, - "outputs": [], - "source": [ - "%disable_ibm_quantum_dashboard" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Although the dashboard itself is killed, the underlying framework is still tracking jobs for you and will show this information if loaded once again." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Viewing Backend Details \n", - "\n", - "The IBM Quantum devices contain a large amount of configuration data and properties. This information can be retrieved by calling:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "ExecuteTime": { - "end_time": "2019-08-09T14:33:10.432853Z", - "start_time": "2019-08-09T14:33:10.429483Z" - } - }, - "outputs": [], - "source": [ - "config = backend.configuration()\n", - "params = backend.properties()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "However, parsing through this information quickly becomes tedious. Instead, all the information for a single backend can be displayed graphically by just calling the backend instance itself:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "ExecuteTime": { - "end_time": "2019-08-09T14:34:40.067963Z", - "start_time": "2019-08-09T14:34:39.397926Z" - } - }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "a831681d7c7043daabd8c285218d9e8c", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Card(children=[Toolbar(children=[ToolbarTitle(children=['ibmq_belem @ (ibm-q/open/main)'], style_='color:whi…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "backend" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This widget displays all the information about a backend in a single tabbed-window." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "ExecuteTime": { - "end_time": "2019-08-10T11:28:28.529479Z", - "start_time": "2019-08-10T11:28:28.521774Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "qiskit-ibm-provider version: 0.1.0\n" - ] - } - ], - "source": [ - "from qiskit_ibm_provider.version import __version__\n", - "\n", - "print(\"qiskit-ibm-provider version: {}\".format(__version__))" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "

Version Information

Qiskit SoftwareVersion
qiskit-terra0.18.3
qiskit-aer0.9.0
qiskit-ignis0.6.0
qiskit-ibmq-provider (deprecated)0.17.0
qiskit-aqua (deprecated)0.9.5
qiskit0.31.0
System information
Python3.7.11 (default, Jul 27 2021, 07:03:16) \n", - "[Clang 10.0.0 ]
OSDarwin
CPUs8
Memory (Gb)32.0
Mon Sep 13 00:15:27 2021 EDT
" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "

This code is a part of Qiskit

© Copyright IBM 2017, 2021.

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", - "\n", - "%qiskit_version_table\n", - "%qiskit_copyright" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "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.11" - }, - "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 - }, - "widgets": { - "application/vnd.jupyter.widget-state+json": { - "state": { - "0026e96a804d47ea8e71448dae07d3b9": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": {} - }, - "03187d5077254d1f966fdb38123b40df": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "width": "70px" - } - }, - "036b55c5fa2348a6a841063050a9bcca": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ButtonStyleModel", - "state": { - "button_color": "white" - } - }, - "070147f0922340d0ac6fc05607680ddc": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "max_width": "710px", - "min_width": "710px" - } - }, - "07910f72ebcc43edb38c8b0905d92cde": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "width": "95px" - } - }, - "10161a5f45d044f1a1d7ccef15c7f7d4": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "children": [ - "IPY_MODEL_2e989f15ee9344e8aa0ad1310a2bb6b5", - "IPY_MODEL_5c615aa956fc493fb2c947185784d1f8", - "IPY_MODEL_eff5911361da43c4859ca2807456fc5d", - "IPY_MODEL_63b42d3037dc44248ecf64cfc8702517", - "IPY_MODEL_99431b1ac34d428fa70e410789a9a5b6" - ], - "layout": "IPY_MODEL_dbbee07d07a14f419233b95a085daf98" - } - }, - "1ac8af0f24044d90b0dcd08b08a1cb18": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "GridBoxModel", - "state": { - "children": [ - "IPY_MODEL_c1237b1615ed482faf44ccc69b7843ff", - "IPY_MODEL_ce5568d789dd41f495ea23f5c5687156", - "IPY_MODEL_40a581e9f0c54d1ab2d5915b80ea1cd6" - ], - "layout": "IPY_MODEL_a1581181b7d64c6fbce466bc733577fb" - } - }, - "1c1e2dfd781b414c833ae06e80b0691a": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "grid_gap": "0px 0px", - "grid_template_areas": "\n \"top top top\"\n \"left middle right\"\n ", - "grid_template_columns": "33% 33% 33%", - "grid_template_rows": "auto auto" - } - }, - "24280335f6e94ef2b67aebe0ac62217a": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "grid_area": "right" - } - }, - "24d62679b4bf4e12853fce863379f446": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "width": "70px" - } - }, - "2cf403df3a0648f3a49bddbe4efd3b82": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "layout": "IPY_MODEL_e0b06be4697646288e4dc53f527d9a15", - "style": "IPY_MODEL_fb81d28592764b79842a0fbdc3589b5e", - "value": "

ibmq_essex

" - } - }, - "2e84ad3c674341c4a529a1a8cf86cea6": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "description_width": "" - } - }, - "2e92ec55818047c3b345704513371328": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "description_width": "" - } - }, - "2e989f15ee9344e8aa0ad1310a2bb6b5": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "layout": "IPY_MODEL_d440771d473e4c8a9d595f12295b1302", - "style": "IPY_MODEL_7f703cc73c5042cea8744a8e4951e0c8", - "value": "
Job ID
" - } - }, - "32a83be37e6746079a55f57e144224b1": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "GridBoxModel", - "state": { - "children": [ - "IPY_MODEL_bc049b10de5a494eb150c9fd67a4b627" - ], - "layout": "IPY_MODEL_c549ac59f3134a329b0af89d3b71f2e4" - } - }, - "336044788c954071a082c0eaa046389f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ButtonModel", - "state": { - "icon": "close", - "layout": "IPY_MODEL_83b44df40fc44787b3393b62b9eb272f", - "style": "IPY_MODEL_036b55c5fa2348a6a841063050a9bcca" - } - }, - "39139e3a62734dd9a1f742fb2949bf51": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "children": [ - "IPY_MODEL_336044788c954071a082c0eaa046389f", - "IPY_MODEL_f3aa1f77561d4f8e9518ec09bf6f906a", - "IPY_MODEL_4189361224cc42aa8f2171774a8256e2", - "IPY_MODEL_862b726b709a4bc2a61c9c40f35474a9", - "IPY_MODEL_d6fd1906459d42f6aa08c2687a1adfd4", - "IPY_MODEL_3b43af97a85c4d01adae3c5cd477053c" - ], - "layout": "IPY_MODEL_944a5fd072334fc395858a86641ce69c" - } - }, - "3a13766239cd47f4bb6bb45a8e8c5756": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "grid_area": "top" - } - }, - "3ad9d0eb44e946edb2e54e2598c64a36": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "width": "145px" - } - }, - "3b43af97a85c4d01adae3c5cd477053c": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "layout": "IPY_MODEL_af090e2f3dfc429fb51cf234d3516785", - "style": "IPY_MODEL_d8d30aac555e45ad8637a883d6591087", - "value": "job is queued" - } - }, - "40a581e9f0c54d1ab2d5915b80ea1cd6": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLMathModel", - "state": { - "layout": "IPY_MODEL_af03e372134b453b8d63c70b678f4114", - "style": "IPY_MODEL_61eb2352812847a097d9d7f0a3a93395", - "value": "
credits_requiredTrue
allow_object_storageTrue
memoryTrue
localFalse
allow_q_objectTrue
online_date2019-09-13T04:00:00+00:00
description5 qubit device Essex
conditionalFalse
n_registers1
quantum_volumeNone
urlNone
coupling_map[[0, 1], [1, 0], [1, 2], [1, 3], [2, 1], [3, 1], [3, 4], [4, 3]]
allow_q_circuitFalse
sample_nameGiraffe
simulatorFalse
open_pulseFalse
backend_nameibmq_essex
" - } - }, - "4189361224cc42aa8f2171774a8256e2": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "layout": "IPY_MODEL_3ad9d0eb44e946edb2e54e2598c64a36", - "style": "IPY_MODEL_9d621898e4f04a0caaa0fcc5ff030f63", - "value": "ibmq_essex" - } - }, - "5062aad91ab24646a8d4e1aa15999b31": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "description_width": "" - } - }, - "5362aec3f7f345688517574d9fcd1354": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": {} - }, - "53d8cf9e66084e08923f8afdd4b3c630": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "description_width": "" - } - }, - "57d00e4cdd274202a8c64be4dac96890": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "layout": "IPY_MODEL_e055d89ead8947c59071023f55496535", - "style": "IPY_MODEL_e85a88503db641f99ec28390534be42c", - "value": "
TypeGate error
cx0_1cx0.00941
cx1_0cx0.00941
cx1_2cx0.01544
" - } - }, - "584d249f0a6645e184e213f963cd7ae4": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "description_width": "" - } - }, - "5c615aa956fc493fb2c947185784d1f8": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "layout": "IPY_MODEL_ac2e8d2a2c064e1ea110ba6af3c8286e", - "style": "IPY_MODEL_73665a1e4cc2413aaf89721afac099d4", - "value": "
Backend
" - } - }, - "5e03e3f09164416eb1e435799f843a74": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "grid_area": "left", - "width": "100%" - } - }, - "61eb2352812847a097d9d7f0a3a93395": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "description_width": "" - } - }, - "635828032c0a4c92aeda5ab6b2146ded": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "description_width": "" - } - }, - "63b42d3037dc44248ecf64cfc8702517": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "layout": "IPY_MODEL_03187d5077254d1f966fdb38123b40df", - "style": "IPY_MODEL_97ca307b7c2042c9af924bd1a945b107", - "value": "
Queue
" - } - }, - "68e846c3e72b4200bc8e62d48cb349df": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "border": "4px solid #000000", - "max_height": "650px", - "min_height": "650px", - "overflow_y": "hidden" - } - }, - "6c4d7bf8aa5045e481c0a46669b1fc81": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "GridBoxModel", - "state": { - "children": [ - "IPY_MODEL_7547cda3f10744dcb6cfa01b78cb59c5", - "IPY_MODEL_57d00e4cdd274202a8c64be4dac96890", - "IPY_MODEL_9fec57399f4641c38c987f3850edef1d", - "IPY_MODEL_888e17bbc9484927ba0e53f3ab74cd4f" - ], - "layout": "IPY_MODEL_1c1e2dfd781b414c833ae06e80b0691a" - } - }, - "73665a1e4cc2413aaf89721afac099d4": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "description_width": "" - } - }, - "73dba27627bd46948fadd49cab3ca5e3": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "TabModel", - "state": { - "layout": "IPY_MODEL_a47a48c7c0e34347ab4d649f765fd4e9" - } - }, - "7547cda3f10744dcb6cfa01b78cb59c5": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "layout": "IPY_MODEL_3a13766239cd47f4bb6bb45a8e8c5756", - "style": "IPY_MODEL_84e0fc0cd13548bfad1766861c55acb5", - "value": "
last_update_date: 2019-12-10T08:47:32+00:00
" - } - }, - "754e7984667c4957a0a63d894faab3a6": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "VBoxModel", - "state": { - "children": [ - "IPY_MODEL_32a83be37e6746079a55f57e144224b1", - "IPY_MODEL_10161a5f45d044f1a1d7ccef15c7f7d4", - "IPY_MODEL_39139e3a62734dd9a1f742fb2949bf51" - ], - "layout": "IPY_MODEL_070147f0922340d0ac6fc05607680ddc" - } - }, - "79224dc8c52f4bd2a12b1102f3d04dee": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": {} - }, - "793891a44b2f4bc995e1e72091107e52": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "VBoxModel", - "state": { - "children": [ - "IPY_MODEL_2cf403df3a0648f3a49bddbe4efd3b82", - "IPY_MODEL_93e3f806446e48bca2f5fcadaa82f4a9" - ], - "layout": "IPY_MODEL_68e846c3e72b4200bc8e62d48cb349df" - } - }, - "7f703cc73c5042cea8744a8e4951e0c8": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "description_width": "" - } - }, - "83b44df40fc44787b3393b62b9eb272f": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "margin": "0px 5px 0px 0px", - "width": "30px" - } - }, - "84e0fc0cd13548bfad1766861c55acb5": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "description_width": "" - } - }, - "862b726b709a4bc2a61c9c40f35474a9": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "layout": "IPY_MODEL_07910f72ebcc43edb38c8b0905d92cde", - "style": "IPY_MODEL_53d8cf9e66084e08923f8afdd4b3c630", - "value": "QUEUED" - } - }, - "888e17bbc9484927ba0e53f3ab74cd4f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "layout": "IPY_MODEL_24280335f6e94ef2b67aebe0ac62217a", - "style": "IPY_MODEL_635828032c0a4c92aeda5ab6b2146ded", - "value": "
TypeGate error
cx3_4cx0.01118
cx4_3cx0.01118
" - } - }, - "8fcabc865c5f418e8347c2523270d888": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "width": "95px" - } - }, - "9102c0e4e5cd42849d914ab60eaf936a": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "description_width": "" - } - }, - "91ea59d3c04f46c3b7f2fe5ec4b99db3": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": {} - }, - "93d78410dff14bc1b77e6270d17448b6": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "VBoxModel", - "state": { - "children": [ - "IPY_MODEL_a48dfbe4afd64d73ad2cd73bca35ee77", - "IPY_MODEL_bbed2375295f4d808443980116ceafae" - ], - "layout": "IPY_MODEL_79224dc8c52f4bd2a12b1102f3d04dee" - } - }, - "93e3f806446e48bca2f5fcadaa82f4a9": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "TabModel", - "state": { - "_titles": { - "0": "Configuration", - "1": "Qubit Properties", - "2": "Multi-Qubit Gates", - "3": "Error Map", - "4": "Job History" - }, - "children": [ - "IPY_MODEL_1ac8af0f24044d90b0dcd08b08a1cb18", - "IPY_MODEL_93d78410dff14bc1b77e6270d17448b6", - "IPY_MODEL_6c4d7bf8aa5045e481c0a46669b1fc81", - "IPY_MODEL_f157551f44d149b59a0a350d0ea7cdbf", - "IPY_MODEL_73dba27627bd46948fadd49cab3ca5e3" - ], - "layout": "IPY_MODEL_a90b63cdb3de4d79a34e12b79a11dceb" - } - }, - "944a5fd072334fc395858a86641ce69c": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "max_width": "700px", - "min_width": "700px" - } - }, - "97ca307b7c2042c9af924bd1a945b107": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "description_width": "" - } - }, - "99431b1ac34d428fa70e410789a9a5b6": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "layout": "IPY_MODEL_0026e96a804d47ea8e71448dae07d3b9", - "style": "IPY_MODEL_ae1035b26aec4d15b1cc60a94bb8f093", - "value": "
Message
" - } - }, - "9d621898e4f04a0caaa0fcc5ff030f63": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "description_width": "" - } - }, - "9fec57399f4641c38c987f3850edef1d": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "layout": "IPY_MODEL_b45ee61cfc894d13a96e03e4973b38b4", - "style": "IPY_MODEL_2e92ec55818047c3b345704513371328", - "value": "
TypeGate error
cx1_3cx0.01238
cx2_1cx0.01544
cx3_1cx0.01238
" - } - }, - "a1581181b7d64c6fbce466bc733577fb": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "grid_gap": "0px 0px", - "grid_template_areas": "\n \"left right right right\"\n \"bottom bottom bottom bottom\"\n ", - "grid_template_columns": "31% 23% 23% 23%", - "grid_template_rows": "auto auto" - } - }, - "a47a48c7c0e34347ab4d649f765fd4e9": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "max_height": "620px" - } - }, - "a48dfbe4afd64d73ad2cd73bca35ee77": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "layout": "IPY_MODEL_5362aec3f7f345688517574d9fcd1354", - "style": "IPY_MODEL_5062aad91ab24646a8d4e1aa15999b31", - "value": "
last_update_date: 2019-12-10T08:47:32+00:00
" - } - }, - "a56b69e99f274b9faff2f7216e44f04f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "description_width": "" - } - }, - "a90b63cdb3de4d79a34e12b79a11dceb": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "overflow_y": "scroll" - } - }, - "ac2e8d2a2c064e1ea110ba6af3c8286e": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "width": "145px" - } - }, - "ae1035b26aec4d15b1cc60a94bb8f093": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "description_width": "" - } - }, - "af03e372134b453b8d63c70b678f4114": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "grid_area": "bottom", - "width": "auto" - } - }, - "af090e2f3dfc429fb51cf234d3516785": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "overflow_x": "scroll" - } - }, - "b2a7b79eae694e8d8f02942406ef82a7": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "max_height": "500px", - "max_width": "750px", - "overflow_x": "hidden", - "overflow_y": "scroll", - "visibility": "visible", - "width": "auto" - } - }, - "b45ee61cfc894d13a96e03e4973b38b4": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "grid_area": "middle" - } - }, - "b63d67e1f6fb445c8a197aa8d6768ccc": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "description_width": "" - } - }, - "bbed2375295f4d808443980116ceafae": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "layout": "IPY_MODEL_91ea59d3c04f46c3b7f2fe5ec4b99db3", - "style": "IPY_MODEL_9102c0e4e5cd42849d914ab60eaf936a", - "value": "
FrequencyT1T2U1 gate errorU2 gate errorU3 gate errorReadout error
Q04.49979 GHz142.46473 µs176.60083 µs0.00.000410.000810.04
Q14.69465 GHz65.20439 µs95.99192 µs0.00.000450.00090.18
Q24.66333 GHz75.01397 µs156.02907 µs0.00.000760.001520.035
Q34.65377 GHz121.28133 µs142.73821 µs0.00.000710.001410.03667
Q44.61094 GHz104.06955 µs147.21788 µs0.00.00050.0010.09167
" - } - }, - "bc049b10de5a494eb150c9fd67a4b627": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ButtonModel", - "state": { - "button_style": "primary", - "description": "Clear", - "layout": "IPY_MODEL_c8686e59c2214bf188eae227f86a78f2", - "style": "IPY_MODEL_fc17a6e739834f78a44e5c70b9346d90" - } - }, - "c1237b1615ed482faf44ccc69b7843ff": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLMathModel", - "state": { - "layout": "IPY_MODEL_5e03e3f09164416eb1e435799f843a74", - "style": "IPY_MODEL_a56b69e99f274b9faff2f7216e44f04f", - "value": "
PropertyValue
n_qubits5
operationalTrue
status_msgactive
pending_jobs9
backend_version1.0.1
basis_gates['u1', 'u2', 'u3', 'cx', 'id']
max_shots8192
max_experiments75
" - } - }, - "c549ac59f3134a329b0af89d3b71f2e4": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "grid_template_areas": "\n \". . . . right \"\n ", - "grid_template_columns": "20% 20% 20% 20% 20%", - "width": "100%" - } - }, - "c8686e59c2214bf188eae227f86a78f2": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "grid_area": "right", - "padding": "0px 0px 0px 0px", - "width": "70px" - } - }, - "ce5568d789dd41f495ea23f5c5687156": { - "model_module": "@jupyter-widgets/output", - "model_module_version": "1.0.0", - "model_name": "OutputModel", - "state": { - "layout": "IPY_MODEL_d51f30a7d2f84933a2ec467c4fadcdd7", - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": "
" - }, - "metadata": {}, - "output_type": "display_data" - } - ] - } - }, - "d440771d473e4c8a9d595f12295b1302": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "width": "190px" - } - }, - "d51f30a7d2f84933a2ec467c4fadcdd7": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "align_items": "center", - "display": "flex-inline", - "grid_area": "right", - "max_height": "325px", - "padding": "10px 10px 10px 10px", - "width": "auto" - } - }, - "d54207c3781c45819f4da6032f576599": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "width": "190px" - } - }, - "d6fd1906459d42f6aa08c2687a1adfd4": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "layout": "IPY_MODEL_24d62679b4bf4e12853fce863379f446", - "style": "IPY_MODEL_584d249f0a6645e184e213f963cd7ae4", - "value": "8" - } - }, - "d8d30aac555e45ad8637a883d6591087": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "description_width": "" - } - }, - "dbbee07d07a14f419233b95a085daf98": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "margin": "0px 0px 0px 35px", - "width": "600px" - } - }, - "e055d89ead8947c59071023f55496535": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "grid_area": "left" - } - }, - "e0b06be4697646288e4dc53f527d9a15": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "margin": "0px 0px 0px 0px" - } - }, - "e85a88503db641f99ec28390534be42c": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "description_width": "" - } - }, - "eff5911361da43c4859ca2807456fc5d": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "layout": "IPY_MODEL_8fcabc865c5f418e8347c2523270d888", - "style": "IPY_MODEL_2e84ad3c674341c4a529a1a8cf86cea6", - "value": "
Status
" - } - }, - "f157551f44d149b59a0a350d0ea7cdbf": { - "model_module": "@jupyter-widgets/output", - "model_module_version": "1.0.0", - "model_name": "OutputModel", - "state": { - "layout": "IPY_MODEL_f266b9839a854e06be5a852347ee1264", - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": "
" - }, - "metadata": {}, - "output_type": "display_data" - } - ] - } - }, - "f266b9839a854e06be5a852347ee1264": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "align_items": "center", - "display": "flex-inline" - } - }, - "f3aa1f77561d4f8e9518ec09bf6f906a": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "layout": "IPY_MODEL_d54207c3781c45819f4da6032f576599", - "style": "IPY_MODEL_b63d67e1f6fb445c8a197aa8d6768ccc", - "value": "5df003fb11bc0b00129883a9" - } - }, - "fb81d28592764b79842a0fbdc3589b5e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "description_width": "" - } - }, - "fc17a6e739834f78a44e5c70b9346d90": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ButtonStyleModel", - "state": {} - } - }, - "version_major": 2, - "version_minor": 0 - } - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/tutorials/Migration_Guide_from_qiskit-ibmq-provider.ipynb b/docs/tutorials/Migration_Guide_from_qiskit-ibmq-provider.ipynb deleted file mode 100644 index a65d73773..000000000 --- a/docs/tutorials/Migration_Guide_from_qiskit-ibmq-provider.ipynb +++ /dev/null @@ -1,304 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Migration guide from qiskit-ibmq-provider to qiskit-ibm-provider" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Background\n", - "\n", - "`qiskit-ibmq-provider` was the original implementation of the `Provider` interface in `qiskit-terra` and the main entry point for accessing IBM Quantum’s systems, simulators, and services. As IBM Quantum expanded, different disjoint services were added to `qiskit-ibmq-provider`, often causing confusion among users, and making new features difficult to find. \n", - "\n", - "With the introduction of [Qiskit Runtime](https://quantum-computing.ibm.com/lab/docs/iql/runtime/), we decided it was time to restructure the provider:\n", - "\n", - "- The access to backend services (most of the submodules in the previous `qiskit.providers.ibmq`), is replaced by this [qiskit-ibm-provider](https://pypi.org/project/qiskit-ibm-provider/) package. It has a similar interface as the original `qiskit-ibmq-provider` (with `ibm-` instead of `ibmq-`) and gives direct access to the [IBM Quantum compute resources](https://quantum-computing.ibm.com/services/resources). If you need lower-level access to do experiments like device characterization or to research new error correction routines, `qiskit-ibm-provider` is more suitable for you. \n", - "- The access to Qiskit Runtime service (formerly in `qiskit.providers.ibmq.runtime`), goes into [qiskit-ibm-runtime](https://pypi.org/project/qiskit-ibm-runtime/) package ([documentation](https://qiskit.org/documentation/partners/qiskit_ibm_runtime/)). It provides access to managed services through the Qiskit Runtime primitives which are integrated with the latest quantum computing technologies, such as error mitigation and correction. If you prefer getting high quality probability distribution or expectation values without having to optimize the circuits yourself, you may want to start here. \n", - "- The access to the experiment service (formerly in `qiskit.providers.ibmq.experiment`) goes into [qiskit-ibm-experiment](https://pypi.org/project/qiskit-ibm-experiment/) package ([documentation](https://qiskit.org/documentation/partners/qiskit_ibm_experiment/).\n", - "\n", - "This migration guide focuses on moving from `qiskit-ibmq-provider` to `qiskit-ibm-provider`. For the rest of the migration guides, see https://ibm.biz/provider_migration_guide " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Quick Start" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'11': 2047, '00': 1953}\n" - ] - } - ], - "source": [ - "from qiskit import QuantumCircuit, transpile\n", - "from qiskit_ibm_provider import IBMProvider\n", - "\n", - "# Save account credentials.\n", - "# IBMProvider.save_account(token=MY_API_TOKEN)\n", - "\n", - "# Load previously saved account credentials.\n", - "provider = IBMProvider()\n", - "\n", - "# Create a circuit\n", - "qc = QuantumCircuit(2)\n", - "qc.h(0)\n", - "qc.cx(0, 1)\n", - "qc.measure_all()\n", - "\n", - "# Select a backend.\n", - "backend = provider.get_backend(\"ibmq_qasm_simulator\")\n", - "\n", - "# Transpile the circuit\n", - "transpiled = transpile(qc, backend=backend)\n", - "\n", - "# Submit a job.\n", - "job = backend.run(transpiled)\n", - "# Get results.\n", - "print(job.result().get_counts())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Summary of main changes\n", - "\n", - "While the interfaces stay mostly the same, there are a few major changes that require your actions. \n", - "\n", - "- `qiskit-ibm-provider` is no longer part of the Qiskit meta package and will need to be installed separately.\n", - "- Importing and initializing a provider is different. \n", - "- Some infrequently used methods are no longer supported.\n", - "- `qiskit-ibm-provider` uses the Qiskit Runtime API under the cover." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Installation\n", - "\n", - "You can install `qiskit-ibm-provider` using `pip`:\n", - "\n", - "```\n", - "pip install qiskit-ibm-provider\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Initializing an account\n", - "\n", - "When using `qiskit-ibmq-provider`, one usually manages accounts and gets a provider using the `IBMQ` global variable. In `qiskit-ibm-provider` the provider is created using the `IBMProvider` class.\n", - "\n", - "**Previously:**" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from qiskit import IBMQ\n", - "\n", - "# Enable an account without saving.\n", - "# IBMQ.enable_account(token=MY_API_TOKEN)\n", - "\n", - "# Save account credentials.\n", - "# IBMQ.save_account(token=MY_API_TOKEN)\n", - "\n", - "# Load a previously saved account.\n", - "provider = IBMQ.load_account()\n", - "\n", - "# Select a different hub/group/project.\n", - "provider = IBMQ.get_provider(hub=\"ibm-q\", group=\"open\", project=\"main\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**New:**" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "from qiskit_ibm_provider import IBMProvider\n", - "\n", - "# Save account credentials.\n", - "# IBMProvider.save_account(token=MY_API_TOKEN)\n", - "\n", - "# Load a previously saved account.\n", - "provider = IBMProvider()\n", - "\n", - "# Select a different hub/group/project.\n", - "provider = IBMProvider(instance=\"ibm-q/open/main\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Loading account from environment variables\n", - "\n", - "The environment variables used for account credentials have changed:\n", - "\n", - "- `QE_TOKEN` is replaced by `QISKIT_IBM_TOKEN`\n", - "- `QE_HUB`, `QE_GROUP`, and `QE_PROJECT` is replaced by `QISKIT_IBM_INSTANCE`" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Basic usage\n", - "\n", - "We demonstrate the basic flow for using the provider, which is essentially the same. We begin by creating a demonstration circuit generating a 2-qubit bell pair:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "from qiskit import QuantumCircuit\n", - "\n", - "qc = QuantumCircuit(2)\n", - "qc.h(0)\n", - "qc.cx(0, 1)\n", - "qc.measure_all()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The basic flow of getting a backend, running the circuit using it, getting a job, and obtaining the job results is the same.\n", - "\n", - "**Previously:**" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from qiskit import IBMQ\n", - "\n", - "provider = IBMQ.load_account()\n", - "backend = provider.get_backend(\"ibmq_qasm_simulator\")\n", - "job = backend.run(qc)\n", - "print(job.result().get_counts())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**New:**" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from qiskit_ibm_provider import IBMProvider\n", - "\n", - "provider = IBMProvider()\n", - "backend = provider.get_backend(\"ibmq_qasm_simulator\")\n", - "job = backend.run(qc)\n", - "print(job.result().get_counts())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Removed functionalities" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "- The following parameters are no longer supported in `backend.run()`:\n", - "\n", - " - `job_name`. You can use job tags instead.\n", - " - `experiment_id`. You can use job tags instead.\n", - " - `job_share_level`. This was deprecated in `qiskit-ibmq-provider` and removed in `qiskit-ibm-provider`.\n", - " - `qobj`. This was deprecated in `qiskit-ibmq-provider` and removed in `qiskit-ibm-provider`.\n", - " - `memory_slots`.\n", - " - `memory_slot_size`.\n", - " - `rep_time`. You can use `rep_delay` instead.\n", - " - `live_data_enabled`.\n", - "\n", - "- Since `job_name`, `job_share_level`, and `experiment_id` are no longer supported, their associated methods are removed, including:\n", - " - using job name and experiment ID as filters in `backend.jobs()`\n", - " - `job.update_name()`\n", - " - `job.name()`\n", - " - `job.share_level()`\n", - " - `job.experiment_id`\n", - "\n", - "- There is no longer a limit on the number of active jobs you can have on a backend, so the following methods have been removed (note this does not apply to the open provider which still has a limit of 5 active jobs).\n", - " - `backend.job_limit()`\n", - " - `backend.remaining_jobs_count()`\n", - " - `backend.active_jobs()`\n", - "\n", - "- Retrieving reservation information is no longer supported.\n", - "\n", - "- Retrieving calibration data associated with a job, using `job.properties()`, is no longer supported. You can, however, use `backend.properties(datetime=JOB_EXECUTION_TS)` to retrieve this data.\n", - "\n", - "- `job.scheduling_mode()` is no longer supported.\n", - "\n", - "- `job.wait_for_final_state()` no longer supports a callback function.\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.9.1" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/requirements-dev.txt b/requirements-dev.txt index b86387e27..fdbd79263 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -23,8 +23,6 @@ pylatexenc>=1.4 # Documentation jupyter-sphinx -nbsphinx>=0.9.2 Sphinx>=6.0.0 sphinx-autodoc-typehints<=1.19.2 reno>=2.11.0 -qiskit-sphinx-theme~=1.14.0rc1 diff --git a/tox.ini b/tox.ini index faccc9528..7733f6c00 100644 --- a/tox.ini +++ b/tox.ini @@ -38,15 +38,6 @@ deps = commands = sphinx-build -j auto -W -b html {posargs} {toxinidir}/docs {toxinidir}/docs/_build/html -[testenv:gettext] -envdir = .tox/docs -basepython = python3 -deps = - -r requirements-dev.txt - qiskit-aer -commands = - sphinx-build -W -b gettext docs/ docs/_build/gettext {posargs} - [testenv:docs-clean] skip_install = true deps = From 69161fa1fd214ea08ba2ea0118a50045a44b6fb9 Mon Sep 17 00:00:00 2001 From: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com> Date: Mon, 4 Dec 2023 14:12:17 -0500 Subject: [PATCH 2/2] Fix makefile --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 40e7a14f0..6e8361da1 100644 --- a/Makefile +++ b/Makefile @@ -21,7 +21,7 @@ mypy: mypy --module qiskit_ibm_provider --package test style: - black --check qiskit_ibm_provider test setup.py docs/tutorials + black --check qiskit_ibm_provider test setup.py unit-test: python -m unittest discover --verbose --top-level-directory . --start-directory test/unit @@ -47,4 +47,4 @@ e2e-test: python -m unittest discover --verbose --top-level-directory . --start-directory test/e2e black: - black qiskit_ibm_provider test setup.py docs/tutorials \ No newline at end of file + black qiskit_ibm_provider test setup.py \ No newline at end of file