diff --git a/Dockerfile b/Dockerfile index 08ffbd4..cc9df9f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,13 +6,13 @@ RUN apt-get update && apt-get -yq dist-upgrade && \ apt-get install --no-install-recommends -yq \ ghostscript imagemagick texlive-latex-base texlive-latex-extra && \ rm -rf /var/lib/apt/lists/* +RUN sed -i 's///g' /etc/ImageMagick-6/policy.xml # install requirements for running pyQuil tutorial notebooks -COPY requirements.txt requirements.txt -RUN pip install -r requirements.txt - -# install jupyter notebook and jupyter lab -RUN pip install --no-cache-dir notebook jupyterlab +RUN pip install poetry +COPY pyproject.toml poetry.lock ./ +RUN poetry config virtualenvs.create false +RUN poetry install # create user with UID 1000 and associated home dir (required by binder) ARG NB_USER=binder @@ -25,8 +25,9 @@ RUN adduser --disabled-password \ --uid ${NB_UID} \ ${NB_USER} -# copy over files from the repository into /home/forest-notebook -COPY . /src/forest-notebook +WORKDIR ${HOME} +COPY tutorials ./tutorials/ +COPY Welcome.ipynb . # transfer ownership of /home/binder and /src to binder user USER root @@ -37,6 +38,4 @@ USER ${NB_USER} # signal that we need to publish port 8888 to run the notebook server EXPOSE 8888 -# run the notebook server -WORKDIR /src/pyquil -CMD ["jupyter", "lab", "--ip=0.0.0.0"] +CMD ["poetry", "run", "jupyter", "lab", "--ip=0.0.0.0"] diff --git a/README.md b/README.md index b8baea0..4e3dd69 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,7 @@ Interactive quantum programming with Forest & Jupyter The `forest-notebook` repository contains the [`Dockerfile`][dockerfile] for building the [`rigetti/forest-notebook`][forest-notebook] image. This image contains an interactive quantum programming environment -backed by [JupyterLab][jupyter], akin to the applications available -in the [Docker Stacks][docker-stacks] repository. +backed by [JupyterLab][jupyter]. The image is based off of the [`rigetti/forest`][forest] image, which comes with [pyQuil][pyquil] installed, as well as [quilc][quilc] and [QVM][qvm] @@ -18,7 +17,7 @@ additionally has the [`forest-benchmarking`][benchmarking] library installed, along with some useful Python packages for data analysis and visualization. Finally, it contains `jupyter` and the new JupyterLab interface, and is configured to spin up a notebook server when the image is run, which can -be done via the following command (optionally changing `PORT` to `localhost` +be done via the following command (optionally changing `PORT` to the `localhost` port you'd like to run the notebook server on): ```bash @@ -76,12 +75,20 @@ For some examples of existing Forest-backed Binder repositories, check out the f - [`exeter-quantum/senior-project`][exeter]: Notebooks from a quantum computing senior project at Phillips Exeter Academy. + +Tutorials +--------- + +This repository also contains tutorial notebooks for learning about [pyQuil][pyquil], +the Forest SDK ([quilc][quilc] and the [QVM][qvm]). If you'd like to add a notebook, or change an +existing one, make a pull request! And, to run the existing notebooks in a preconfigured environment +on Binder, click the badge above! + [arxiv]: https://arxiv.org/abs/2001.04449 [benchmarking]: https://github.com/rigetti/forest-benchmarking -[binder]: https://mybinder.org/v2/gh/rigetti/forest-tutorials/master?urlpath=lab/tree/Welcome.ipynb +[binder]: https://mybinder.org/v2/gh/rigetti/forest-notebook/master?urlpath=lab/tree/Welcome.ipynb [dockerfile]: https://docs.docker.com/engine/reference/builder/ [docker-badge]: https://img.shields.io/docker/pulls/rigetti/forest-notebook.svg -[docker-stacks]: https://github.com/jupyter/docker-stacks [exeter]: https://github.com/exeter-quantum/senior-project [forest]: https://hub.docker.com/r/rigetti/forest [forest-notebook]: https://hub.docker.com/r/rigetti/forest-notebook @@ -94,6 +101,6 @@ For some examples of existing Forest-backed Binder repositories, check out the f [mybinder]: https://mybinder.org [pyquil]: https://github.com/rigetti/pyquil [qcs-paper]: https://github.com/rigetti/qcs-paper -[quilc]: https://github.com/rigetti/quilc -[qvm]: https://github.com/rigetti/qvm +[quilc]: https://github.com/quil-lang/quilc +[qvm]: https://github.com/quil-lang/qvm [stanford-cs269q]: https://github.com/karalekas/stanford-cs269q diff --git a/VERSION.txt b/VERSION.txt deleted file mode 100644 index 4a36342..0000000 --- a/VERSION.txt +++ /dev/null @@ -1 +0,0 @@ -3.0.0 diff --git a/Welcome.ipynb b/Welcome.ipynb new file mode 100644 index 0000000..21f653d --- /dev/null +++ b/Welcome.ipynb @@ -0,0 +1,174 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Welcome\n", + "\n", + "This is a Binder repository containing tutorial notebooks for learning about [pyQuil](https://github.com/rigetti/pyquil) and the rest of the Forest SDK ([quilc](https://github.com/quil-lang/quilc) and the [QVM](https://github.com/quil-lang/qvm)). The table of contents for the repository can be found at the bottom of this notebook. If you'd like to add a notebook, or change an existing one, make a pull request to the [rigetti/forest-tutorials](https://github.com/rigetti/forest-tutorials) repository!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The Basics" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from pyquil import get_qc, Program\n", + "from pyquil.gates import H, CNOT, MEASURE" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Get a quantum virtual machine (simulator)\n", + "qvm = get_qc(\"2q-qvm\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H 0\n", + "CNOT 0 1\n", + "DECLARE ro BIT[2]\n", + "MEASURE 0 ro[0]\n", + "MEASURE 1 ro[1]\n", + "\n" + ] + } + ], + "source": [ + "# Build a program\n", + "p = Program()\n", + "p += H(0)\n", + "p += CNOT(0, 1)\n", + "ro = p.declare(\"ro\", \"BIT\", 2)\n", + "p += MEASURE(0, ro[0])\n", + "p += MEASURE(1, ro[1])\n", + "p.wrap_in_numshots_loop(10)\n", + "print(p)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 1],\n", + " [0, 0],\n", + " [0, 0],\n", + " [0, 0],\n", + " [1, 1],\n", + " [1, 1],\n", + " [0, 0],\n", + " [1, 1],\n", + " [0, 0],\n", + " [0, 0]])" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Execute the program synchronously\n", + "qvm.run(p).readout_data.get(\"ro\")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 1],\n", + " [0, 0],\n", + " [0, 0],\n", + " [1, 1],\n", + " [0, 0],\n", + " [1, 1],\n", + " [0, 0],\n", + " [0, 0],\n", + " [0, 0],\n", + " [1, 1]])" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Alternately, asynchronous execution is supported\n", + "job = qvm.qam.execute(p)\n", + "\n", + "# When ready, fetch job results\n", + "qvm.qam.get_result(job).readout_data.get(\"ro\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tutorial Notebooks\n", + "\n", + "1. [BellStateTomography.ipynb](notebooks/BellStateTomography.ipynb)\n", + "2. [GateNoiseModels.ipynb](notebooks/GateNoiseModels.ipynb)\n", + "3. [LaTeXQuilCircuits.ipynb](notebooks/LaTeXQuilCircuits.ipynb)\n", + "4. [MeyerPennyGame.ipynb](notebooks/MeyerPennyGame.ipynb)\n", + "5. [NoiseInvestigation.ipynb](notebooks/NoiseInvestigation.ipynb)\n", + "6. [QuantumDie.ipynb](notebooks/QuantumDie.ipynb)\n", + "7. [QuantumTeleportation.ipynb](notebooks/QuantumTeleportation.ipynb)\n", + "8. [QuantumWalk.ipynb](notebooks/QuantumWalk.ipynb)\n", + "9. [QubitPlaceholder.ipynb](notebooks/QubitPlaceholder.ipynb)\n", + "10. [ReadoutErrorMitigation.ipynb](notebooks/ReadoutErrorMitigation.ipynb)\n", + "11. [ReadoutNoise.ipynb](notebooks/ReadoutNoise.ipynb)\n", + "12. [VariationalQuantumEigensolver.ipynb](notebooks/VariationalQuantumEigensolver.ipynb)" + ] + } + ], + "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.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 0000000..f0cca7a --- /dev/null +++ b/poetry.lock @@ -0,0 +1,2619 @@ +[[package]] +name = "anyio" +version = "3.5.0" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +category = "main" +optional = false +python-versions = ">=3.6.2" + +[package.dependencies] +idna = ">=2.8" +sniffio = ">=1.1" +typing-extensions = {version = "*", markers = "python_version < \"3.8\""} + +[package.extras] +doc = ["packaging", "sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"] +test = ["coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "pytest (>=6.0)", "pytest-mock (>=3.6.1)", "trustme", "contextlib2", "uvloop (<0.15)", "mock (>=4)", "uvloop (>=0.15)"] +trio = ["trio (>=0.16)"] + +[[package]] +name = "appnope" +version = "0.1.2" +description = "Disable App Nap on macOS >= 10.9" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "argon2-cffi" +version = "21.3.0" +description = "The secure Argon2 password hashing algorithm." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +argon2-cffi-bindings = "*" +typing-extensions = {version = "*", markers = "python_version < \"3.8\""} + +[package.extras] +dev = ["pre-commit", "cogapp", "tomli", "coverage[toml] (>=5.0.2)", "hypothesis", "pytest", "sphinx", "sphinx-notfound-page", "furo"] +docs = ["sphinx", "sphinx-notfound-page", "furo"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pytest"] + +[[package]] +name = "argon2-cffi-bindings" +version = "21.2.0" +description = "Low-level CFFI bindings for Argon2" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +cffi = ">=1.0.1" + +[package.extras] +dev = ["pytest", "cogapp", "pre-commit", "wheel"] +tests = ["pytest"] + +[[package]] +name = "asteval" +version = "0.9.26" +description = "Safe, minimalistic evaluator of python expression using ast module" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +importlib_metadata = {version = "*", markers = "python_version < \"3.8\""} + +[[package]] +name = "attrs" +version = "20.3.0" +description = "Classes Without Boilerplate" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.extras] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "furo", "sphinx", "pre-commit"] +docs = ["furo", "sphinx", "zope.interface"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] +tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"] + +[[package]] +name = "babel" +version = "2.9.1" +description = "Internationalization utilities" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.dependencies] +pytz = ">=2015.7" + +[[package]] +name = "backcall" +version = "0.2.0" +description = "Specifications for callback functions passed in to an API" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "bleach" +version = "4.1.0" +description = "An easy safelist-based HTML-sanitizing tool." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +packaging = "*" +six = ">=1.9.0" +webencodings = "*" + +[[package]] +name = "certifi" +version = "2021.10.8" +description = "Python package for providing Mozilla's CA Bundle." +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "cffi" +version = "1.15.0" +description = "Foreign Function Interface for Python calling C code." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +pycparser = "*" + +[[package]] +name = "charset-normalizer" +version = "2.0.11" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "main" +optional = false +python-versions = ">=3.5.0" + +[package.extras] +unicode_backport = ["unicodedata2"] + +[[package]] +name = "colorama" +version = "0.4.4" +description = "Cross-platform colored terminal text." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "cvxpy" +version = "1.1.18" +description = "A domain-specific language for modeling convex optimization problems in Python." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +ecos = ">=2" +numpy = ">=1.15" +osqp = ">=0.4.1" +scipy = ">=1.1.0" +scs = ">=1.1.6" + +[[package]] +name = "cycler" +version = "0.11.0" +description = "Composable style cycles" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "debugpy" +version = "1.5.1" +description = "An implementation of the Debug Adapter Protocol for Python" +category = "main" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" + +[[package]] +name = "decorator" +version = "5.1.1" +description = "Decorators for Humans" +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "defusedxml" +version = "0.7.1" +description = "XML bomb protection for Python stdlib modules" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "ecos" +version = "2.0.10" +description = "This is the Python package for ECOS: Embedded Cone Solver. See Github page for more information." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +numpy = ">=1.6" +scipy = ">=0.9" + +[[package]] +name = "entrypoints" +version = "0.4" +description = "Discover and load entry points from installed packages." +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "fonttools" +version = "4.29.1" +description = "Tools to manipulate font files" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +all = ["fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "zopfli (>=0.1.4)", "lz4 (>=1.7.4.2)", "matplotlib", "sympy", "skia-pathops (>=0.5.0)", "brotlicffi (>=0.8.0)", "scipy", "brotli (>=1.0.1)", "munkres", "unicodedata2 (>=14.0.0)", "xattr"] +graphite = ["lz4 (>=1.7.4.2)"] +interpolatable = ["scipy", "munkres"] +lxml = ["lxml (>=4.0,<5)"] +pathops = ["skia-pathops (>=0.5.0)"] +plot = ["matplotlib"] +symfont = ["sympy"] +type1 = ["xattr"] +ufo = ["fs (>=2.2.0,<3)"] +unicode = ["unicodedata2 (>=14.0.0)"] +woff = ["zopfli (>=0.1.4)", "brotlicffi (>=0.8.0)", "brotli (>=1.0.1)"] + +[[package]] +name = "forest-benchmarking" +version = "0.8.0" +description = "QCVV and Benchmarking" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +cvxpy = "*" +gitpython = "*" +lmfit = "*" +matplotlib = "*" +networkx = "*" +numpy = "*" +pandas = "*" +pyquil = ">=3.0.0,<4.0.0" +python-rapidjson = "*" +scipy = "*" +sympy = "*" +tqdm = "*" + +[[package]] +name = "future" +version = "0.18.2" +description = "Clean single-source support for Python 3 and 2" +category = "main" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "gitdb" +version = "4.0.9" +description = "Git Object Database" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +smmap = ">=3.0.1,<6" + +[[package]] +name = "gitpython" +version = "3.1.26" +description = "GitPython is a python library used to interact with Git repositories" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +gitdb = ">=4.0.1,<5" +typing-extensions = {version = ">=3.7.4.3", markers = "python_version < \"3.8\""} + +[[package]] +name = "h11" +version = "0.9.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "httpcore" +version = "0.11.1" +description = "A minimal low-level HTTP client." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +h11 = ">=0.8,<0.10" +sniffio = ">=1.0.0,<2.0.0" + +[package.extras] +http2 = ["h2 (>=3.0.0,<4.0.0)"] + +[[package]] +name = "httpx" +version = "0.15.5" +description = "The next generation HTTP client." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +certifi = "*" +httpcore = ">=0.11.0,<0.12.0" +rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]} +sniffio = "*" + +[package.extras] +brotli = ["brotlipy (>=0.7.0,<0.8.0)"] +http2 = ["h2 (>=3.0.0,<4.0.0)"] + +[[package]] +name = "idna" +version = "3.3" +description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "importlib-metadata" +version = "3.10.1" +description = "Read metadata from Python packages" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} +zipp = ">=0.5" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] +testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] + +[[package]] +name = "importlib-resources" +version = "5.4.0" +description = "Read resources from Python packages" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-black (>=0.3.7)", "pytest-mypy"] + +[[package]] +name = "ipykernel" +version = "6.8.0" +description = "IPython Kernel for Jupyter" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +appnope = {version = "*", markers = "platform_system == \"Darwin\""} +debugpy = ">=1.0.0,<2.0" +ipython = ">=7.23.1" +jupyter-client = "<8.0" +matplotlib-inline = ">=0.1.0,<0.2.0" +nest-asyncio = "*" +tornado = ">=4.2,<7.0" +traitlets = ">=5.1.0,<6.0" + +[package.extras] +test = ["pytest (!=5.3.4)", "pytest-cov", "flaky", "ipyparallel"] + +[[package]] +name = "ipython" +version = "7.31.1" +description = "IPython: Productive Interactive Computing" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +appnope = {version = "*", markers = "sys_platform == \"darwin\""} +backcall = "*" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +decorator = "*" +jedi = ">=0.16" +matplotlib-inline = "*" +pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""} +pickleshare = "*" +prompt-toolkit = ">=2.0.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.1.0" +pygments = "*" +traitlets = ">=4.2" + +[package.extras] +all = ["Sphinx (>=1.3)", "ipykernel", "ipyparallel", "ipywidgets", "nbconvert", "nbformat", "nose (>=0.10.1)", "notebook", "numpy (>=1.17)", "pygments", "qtconsole", "requests", "testpath"] +doc = ["Sphinx (>=1.3)"] +kernel = ["ipykernel"] +nbconvert = ["nbconvert"] +nbformat = ["nbformat"] +notebook = ["notebook", "ipywidgets"] +parallel = ["ipyparallel"] +qtconsole = ["qtconsole"] +test = ["nose (>=0.10.1)", "requests", "testpath", "pygments", "nbformat", "ipykernel", "numpy (>=1.17)"] + +[[package]] +name = "ipython-genutils" +version = "0.2.0" +description = "Vestigial utilities from IPython" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "iso8601" +version = "0.1.16" +description = "Simple module to parse ISO 8601 dates" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "jedi" +version = "0.18.1" +description = "An autocompletion tool for Python that can be used for text editors." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +parso = ">=0.8.0,<0.9.0" + +[package.extras] +qa = ["flake8 (==3.8.3)", "mypy (==0.782)"] +testing = ["Django (<3.1)", "colorama", "docopt", "pytest (<7.0.0)"] + +[[package]] +name = "jinja2" +version = "3.0.3" +description = "A very fast and expressive template engine." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "json5" +version = "0.9.6" +description = "A Python implementation of the JSON5 data format." +category = "main" +optional = false +python-versions = "*" + +[package.extras] +dev = ["hypothesis"] + +[[package]] +name = "jsonschema" +version = "4.4.0" +description = "An implementation of JSON Schema validation for Python" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +attrs = ">=17.4.0" +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} +importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} +pyrsistent = ">=0.14.0,<0.17.0 || >0.17.0,<0.17.1 || >0.17.1,<0.17.2 || >0.17.2" +typing-extensions = {version = "*", markers = "python_version < \"3.8\""} + +[package.extras] +format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] +format_nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] + +[[package]] +name = "jupyter-client" +version = "7.1.2" +description = "Jupyter protocol implementation and client libraries" +category = "main" +optional = false +python-versions = ">=3.6.1" + +[package.dependencies] +entrypoints = "*" +jupyter-core = ">=4.6.0" +nest-asyncio = ">=1.5" +python-dateutil = ">=2.1" +pyzmq = ">=13" +tornado = ">=4.1" +traitlets = "*" + +[package.extras] +doc = ["myst-parser", "sphinx (>=1.3.6)", "sphinx-rtd-theme", "sphinxcontrib-github-alt"] +test = ["codecov", "coverage", "ipykernel", "ipython", "mock", "mypy", "pre-commit", "pytest", "pytest-asyncio", "pytest-cov", "pytest-timeout", "jedi (<0.18)"] + +[[package]] +name = "jupyter-core" +version = "4.9.1" +description = "Jupyter core package. A base package on which Jupyter projects rely." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +pywin32 = {version = ">=1.0", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} +traitlets = "*" + +[[package]] +name = "jupyter-server" +version = "1.13.5" +description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +anyio = ">=3.1.0,<4" +argon2-cffi = "*" +ipython-genutils = "*" +jinja2 = "*" +jupyter-client = ">=6.1.1" +jupyter-core = ">=4.6.0" +nbconvert = "*" +nbformat = "*" +packaging = "*" +prometheus-client = "*" +pywinpty = {version = "<2", markers = "os_name == \"nt\""} +pyzmq = ">=17" +Send2Trash = "*" +terminado = ">=0.8.3" +tornado = ">=6.1.0" +traitlets = ">=5" +websocket-client = "*" + +[package.extras] +test = ["coverage", "pytest (>=6.0)", "pytest-cov", "pytest-mock", "pytest-timeout", "requests", "pytest-tornasync", "pytest-console-scripts", "ipykernel"] + +[[package]] +name = "jupyterlab" +version = "3.2.9" +description = "JupyterLab computational environment" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +ipython = "*" +jinja2 = ">=2.1" +jupyter-core = "*" +jupyter-server = ">=1.4,<2.0" +jupyterlab-server = ">=2.3,<3.0" +nbclassic = ">=0.2,<1.0" +packaging = "*" +tornado = ">=6.1.0" + +[package.extras] +test = ["coverage", "pytest (>=6.0)", "pytest-cov", "pytest-console-scripts", "pytest-check-links (>=0.5)", "jupyterlab-server[test] (>=2.2,<3.0)", "requests", "requests-cache", "virtualenv", "check-manifest"] +ui-tests = ["build"] + +[[package]] +name = "jupyterlab-pygments" +version = "0.1.2" +description = "Pygments theme using JupyterLab CSS variables" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +pygments = ">=2.4.1,<3" + +[[package]] +name = "jupyterlab-server" +version = "2.10.3" +description = "A set of server components for JupyterLab and JupyterLab like applications ." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +babel = "*" +entrypoints = ">=0.2.2" +jinja2 = ">=2.10" +json5 = "*" +jsonschema = ">=3.0.1" +jupyter-server = ">=1.4,<2.0" +packaging = "*" +requests = "*" + +[package.extras] +test = ["codecov", "ipykernel", "pytest (>=5.3.2)", "pytest-cov", "jupyter-server", "openapi-core (>=0.14.0,<0.15.0)", "pytest-console-scripts", "strict-rfc3339", "ruamel.yaml", "wheel"] + +[[package]] +name = "kiwisolver" +version = "1.3.2" +description = "A fast implementation of the Cassowary constraint solver" +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "lark" +version = "0.11.3" +description = "a modern parsing library" +category = "main" +optional = false +python-versions = "*" + +[package.extras] +atomic_cache = ["atomicwrites"] +nearley = ["js2py"] +regex = ["regex"] + +[[package]] +name = "lmfit" +version = "1.0.3" +description = "Least-Squares Minimization with Bounds and Constraints" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +asteval = ">=0.9.22" +numpy = ">=1.18" +scipy = ">=1.4" +uncertainties = ">=3.0.1" + +[[package]] +name = "markupsafe" +version = "2.0.1" +description = "Safely add untrusted strings to HTML/XML markup." +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "matplotlib" +version = "3.5.1" +description = "Python plotting package" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +cycler = ">=0.10" +fonttools = ">=4.22.0" +kiwisolver = ">=1.0.1" +numpy = ">=1.17" +packaging = ">=20.0" +pillow = ">=6.2.0" +pyparsing = ">=2.2.1" +python-dateutil = ">=2.7" +setuptools_scm = ">=4" + +[[package]] +name = "matplotlib-inline" +version = "0.1.3" +description = "Inline Matplotlib backend for Jupyter" +category = "main" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +traitlets = "*" + +[[package]] +name = "mistune" +version = "0.8.4" +description = "The fastest markdown parser in pure Python" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "mpmath" +version = "1.2.1" +description = "Python library for arbitrary-precision floating-point arithmetic" +category = "main" +optional = false +python-versions = "*" + +[package.extras] +develop = ["pytest (>=4.6)", "pycodestyle", "pytest-cov", "codecov", "wheel"] +tests = ["pytest (>=4.6)"] + +[[package]] +name = "msgpack" +version = "0.6.2" +description = "MessagePack (de)serializer." +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "nbclassic" +version = "0.3.5" +description = "Jupyter Notebook as a Jupyter Server extension." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +jupyter-server = ">=1.8,<2.0" +notebook = "<7" + +[package.extras] +test = ["pytest", "pytest-tornasync", "pytest-console-scripts"] + +[[package]] +name = "nbclient" +version = "0.5.10" +description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." +category = "main" +optional = false +python-versions = ">=3.7.0" + +[package.dependencies] +jupyter-client = ">=6.1.5" +nbformat = ">=5.0" +nest-asyncio = "*" +traitlets = ">=4.2" + +[package.extras] +sphinx = ["Sphinx (>=1.7)", "sphinx-book-theme", "mock", "moto", "myst-parser"] +test = ["ipython", "ipykernel", "ipywidgets (<8.0.0)", "pytest (>=4.1)", "pytest-cov (>=2.6.1)", "check-manifest", "flake8", "mypy", "xmltodict", "black", "pip (>=18.1)", "wheel (>=0.31.0)", "setuptools (>=38.6.0)", "twine (>=1.11.0)"] + +[[package]] +name = "nbconvert" +version = "6.4.1" +description = "Converting Jupyter Notebooks" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +bleach = "*" +defusedxml = "*" +entrypoints = ">=0.2.2" +jinja2 = ">=2.4" +jupyter-core = "*" +jupyterlab-pygments = "*" +mistune = ">=0.8.1,<2" +nbclient = ">=0.5.0,<0.6.0" +nbformat = ">=4.4" +pandocfilters = ">=1.4.1" +pygments = ">=2.4.1" +testpath = "*" +traitlets = ">=5.0" + +[package.extras] +all = ["pytest", "pytest-cov", "pytest-dependency", "ipykernel", "ipywidgets (>=7)", "pyppeteer (==0.2.6)", "tornado (>=4.0)", "sphinx (>=1.5.1)", "sphinx-rtd-theme", "nbsphinx (>=0.2.12)", "ipython"] +docs = ["sphinx (>=1.5.1)", "sphinx-rtd-theme", "nbsphinx (>=0.2.12)", "ipython"] +serve = ["tornado (>=4.0)"] +test = ["pytest", "pytest-cov", "pytest-dependency", "ipykernel", "ipywidgets (>=7)", "pyppeteer (==0.2.6)"] +webpdf = ["pyppeteer (==0.2.6)"] + +[[package]] +name = "nbformat" +version = "5.1.3" +description = "The Jupyter Notebook format" +category = "main" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +ipython-genutils = "*" +jsonschema = ">=2.4,<2.5.0 || >2.5.0" +jupyter-core = "*" +traitlets = ">=4.1" + +[package.extras] +fast = ["fastjsonschema"] +test = ["check-manifest", "fastjsonschema", "testpath", "pytest", "pytest-cov"] + +[[package]] +name = "nest-asyncio" +version = "1.5.4" +description = "Patch asyncio to allow nested event loops" +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "networkx" +version = "2.6.3" +description = "Python package for creating and manipulating graphs and networks" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +default = ["numpy (>=1.19)", "scipy (>=1.5,!=1.6.1)", "matplotlib (>=3.3)", "pandas (>=1.1)"] +developer = ["black (==21.5b1)", "pre-commit (>=2.12)"] +doc = ["sphinx (>=4.0,<5.0)", "pydata-sphinx-theme (>=0.6,<1.0)", "sphinx-gallery (>=0.9,<1.0)", "numpydoc (>=1.1)", "pillow (>=8.2)", "nb2plots (>=0.6)", "texext (>=0.6.6)"] +extra = ["lxml (>=4.5)", "pygraphviz (>=1.7)", "pydot (>=1.4.1)"] +test = ["pytest (>=6.2)", "pytest-cov (>=2.12)", "codecov (>=2.1)"] + +[[package]] +name = "notebook" +version = "6.4.8" +description = "A web-based notebook environment for interactive computing" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +argon2-cffi = "*" +ipykernel = "*" +ipython-genutils = "*" +jinja2 = "*" +jupyter-client = ">=5.3.4" +jupyter-core = ">=4.6.1" +nbconvert = "*" +nbformat = "*" +nest-asyncio = ">=1.5" +prometheus-client = "*" +pyzmq = ">=17" +Send2Trash = ">=1.8.0" +terminado = ">=0.8.3" +tornado = ">=6.1" +traitlets = ">=4.2.1" + +[package.extras] +docs = ["sphinx", "nbsphinx", "sphinxcontrib-github-alt", "sphinx-rtd-theme", "myst-parser"] +json-logging = ["json-logging"] +test = ["pytest", "coverage", "requests", "nbval", "selenium", "pytest-cov", "requests-unixsocket"] + +[[package]] +name = "numpy" +version = "1.21.1" +description = "NumPy is the fundamental package for array computing with Python." +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "osqp" +version = "0.6.2.post5" +description = "OSQP: The Operator Splitting QP Solver" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +numpy = ">=1.7" +qdldl = "*" +scipy = ">=0.13.2" + +[[package]] +name = "packaging" +version = "21.3" +description = "Core utilities for Python packages" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" + +[[package]] +name = "pandas" +version = "1.3.5" +description = "Powerful data structures for data analysis, time series, and statistics" +category = "main" +optional = false +python-versions = ">=3.7.1" + +[package.dependencies] +numpy = [ + {version = ">=1.17.3", markers = "platform_machine != \"aarch64\" and platform_machine != \"arm64\" and python_version < \"3.10\""}, + {version = ">=1.19.2", markers = "platform_machine == \"aarch64\" and python_version < \"3.10\""}, + {version = ">=1.20.0", markers = "platform_machine == \"arm64\" and python_version < \"3.10\""}, + {version = ">=1.21.0", markers = "python_version >= \"3.10\""}, +] +python-dateutil = ">=2.7.3" +pytz = ">=2017.3" + +[package.extras] +test = ["hypothesis (>=3.58)", "pytest (>=6.0)", "pytest-xdist"] + +[[package]] +name = "pandocfilters" +version = "1.5.0" +description = "Utilities for writing pandoc filters in python" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "parso" +version = "0.8.3" +description = "A Python Parser" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +qa = ["flake8 (==3.8.3)", "mypy (==0.782)"] +testing = ["docopt", "pytest (<6.0.0)"] + +[[package]] +name = "pexpect" +version = "4.8.0" +description = "Pexpect allows easy control of interactive console applications." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +ptyprocess = ">=0.5" + +[[package]] +name = "pickleshare" +version = "0.7.5" +description = "Tiny 'shelve'-like database with concurrency support" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "pillow" +version = "9.0.1" +description = "Python Imaging Library (Fork)" +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "prometheus-client" +version = "0.13.1" +description = "Python client for the Prometheus monitoring system." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +twisted = ["twisted"] + +[[package]] +name = "prompt-toolkit" +version = "3.0.26" +description = "Library for building powerful interactive command lines in Python" +category = "main" +optional = false +python-versions = ">=3.6.2" + +[package.dependencies] +wcwidth = "*" + +[[package]] +name = "ptyprocess" +version = "0.7.0" +description = "Run a subprocess in a pseudo terminal" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "py" +version = "1.11.0" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "pycparser" +version = "2.21" +description = "C parser in Python" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "pydantic" +version = "1.9.0" +description = "Data validation and settings management using python 3.6 type hinting" +category = "main" +optional = false +python-versions = ">=3.6.1" + +[package.dependencies] +typing-extensions = ">=3.7.4.3" + +[package.extras] +dotenv = ["python-dotenv (>=0.10.4)"] +email = ["email-validator (>=1.0.3)"] + +[[package]] +name = "pygments" +version = "2.11.2" +description = "Pygments is a syntax highlighting package written in Python." +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "pyjwt" +version = "1.7.1" +description = "JSON Web Token implementation in Python" +category = "main" +optional = false +python-versions = "*" + +[package.extras] +crypto = ["cryptography (>=1.4)"] +flake8 = ["flake8", "flake8-import-order", "pep8-naming"] +test = ["pytest (>=4.0.1,<5.0.0)", "pytest-cov (>=2.6.0,<3.0.0)", "pytest-runner (>=4.2,<5.0.0)"] + +[[package]] +name = "pyparsing" +version = "3.0.7" +description = "Python parsing module" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +diagrams = ["jinja2", "railroad-diagrams"] + +[[package]] +name = "pyquil" +version = "3.0.1" +description = "A Python library for creating Quantum Instruction Language (Quil) programs." +category = "main" +optional = false +python-versions = ">=3.7,<4.0" + +[package.dependencies] +importlib-metadata = {version = ">=3.7.3,<4.0.0", markers = "python_version < \"3.8\""} +lark = ">=0.11.1,<0.12.0" +networkx = ">=2.5,<3.0" +numpy = ">=1.20,<2.0" +qcs-api-client = ">=0.8.0,<0.9.0" +retry = ">=0.9.2,<0.10.0" +rpcq = ">=3.6.0,<4.0.0" +scipy = ">=1.6.1,<2.0.0" + +[package.extras] +latex = ["ipython (>=7.21.0,<8.0.0)"] +docs = ["Sphinx (>=4.0.2,<5.0.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "nbsphinx (>=0.8.6,<0.9.0)", "recommonmark (>=0.7.1,<0.8.0)"] + +[[package]] +name = "pyrsistent" +version = "0.18.1" +description = "Persistent/Functional/Immutable data structures" +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "python-dateutil" +version = "2.8.2" +description = "Extensions to the standard Python datetime module" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "python-rapidjson" +version = "1.5" +description = "Python wrapper around rapidjson" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "pytz" +version = "2021.3" +description = "World timezone definitions, modern and historical" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "pywin32" +version = "303" +description = "Python for Window Extensions" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "pywinpty" +version = "1.1.6" +description = "Pseudo terminal support for Windows from Python." +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "pyzmq" +version = "22.3.0" +description = "Python bindings for 0MQ" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +cffi = {version = "*", markers = "implementation_name == \"pypy\""} +py = {version = "*", markers = "implementation_name == \"pypy\""} + +[[package]] +name = "qcs-api-client" +version = "0.8.0" +description = "A client library for accessing the Rigetti QCS API" +category = "main" +optional = false +python-versions = ">=3.6,<4.0" + +[package.dependencies] +attrs = ">=20.1.0,<21.0.0" +httpx = ">=0.15.0,<0.16.0" +iso8601 = ">=0.1.13,<0.2.0" +pydantic = ">=1.7.2,<2.0.0" +pyjwt = ">=1.7.1,<2.0.0" +python-dateutil = ">=2.8.1,<3.0.0" +retrying = ">=1.3.3,<2.0.0" +rfc3339 = ">=6.2,<7.0" +toml = ">=0.10.2,<0.11.0" + +[[package]] +name = "qdldl" +version = "0.1.5.post0" +description = "QDLDL, a free LDL factorization routine." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +numpy = ">=1.7" +scipy = ">=0.13.2" + +[[package]] +name = "requests" +version = "2.27.1" +description = "Python HTTP for Humans." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""} +idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""} +urllib3 = ">=1.21.1,<1.27" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] +use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] + +[[package]] +name = "retry" +version = "0.9.2" +description = "Easy to use retry decorator." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +decorator = ">=3.4.2" +py = ">=1.4.26,<2.0.0" + +[[package]] +name = "retrying" +version = "1.3.3" +description = "Retrying" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +six = ">=1.7.0" + +[[package]] +name = "rfc3339" +version = "6.2" +description = "Format dates according to the RFC 3339." +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "rfc3986" +version = "1.5.0" +description = "Validating URI References per RFC 3986" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +idna = {version = "*", optional = true, markers = "extra == \"idna2008\""} + +[package.extras] +idna2008 = ["idna"] + +[[package]] +name = "rpcq" +version = "3.9.2" +description = "The RPC framework and message specification for Rigetti QCS." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +msgpack = ">=0.6,<1.0" +python-rapidjson = "*" +pyzmq = ">=17" +"ruamel.yaml" = "*" + +[[package]] +name = "ruamel.yaml" +version = "0.17.20" +description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" +category = "main" +optional = false +python-versions = ">=3" + +[package.dependencies] +"ruamel.yaml.clib" = {version = ">=0.2.6", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.11\""} + +[package.extras] +docs = ["ryd"] +jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] + +[[package]] +name = "ruamel.yaml.clib" +version = "0.2.6" +description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "scipy" +version = "1.6.1" +description = "SciPy: Scientific Library for Python" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +numpy = ">=1.16.5" + +[[package]] +name = "scs" +version = "3.1.0" +description = "scs: splitting conic solver" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +numpy = ">=1.7" +scipy = ">=0.13.2" + +[[package]] +name = "seaborn" +version = "0.11.2" +description = "seaborn: statistical data visualization" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +matplotlib = ">=2.2" +numpy = ">=1.15" +pandas = ">=0.23" +scipy = ">=1.0" + +[[package]] +name = "send2trash" +version = "1.8.0" +description = "Send file to trash natively under Mac OS X, Windows and Linux." +category = "main" +optional = false +python-versions = "*" + +[package.extras] +nativelib = ["pyobjc-framework-cocoa", "pywin32"] +objc = ["pyobjc-framework-cocoa"] +win32 = ["pywin32"] + +[[package]] +name = "setuptools-scm" +version = "6.4.2" +description = "the blessed package to manage your versions by scm tags" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +packaging = ">=20.0" +tomli = ">=1.0.0" + +[package.extras] +test = ["pytest (>=6.2)", "virtualenv (>20)"] +toml = ["setuptools (>=42)"] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "smmap" +version = "5.0.0" +description = "A pure Python implementation of a sliding window memory map manager" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "sniffio" +version = "1.2.0" +description = "Sniff out which async library your code is running under" +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "sympy" +version = "1.9" +description = "Computer algebra system (CAS) in Python" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +mpmath = ">=0.19" + +[[package]] +name = "terminado" +version = "0.13.1" +description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +ptyprocess = {version = "*", markers = "os_name != \"nt\""} +pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""} +tornado = ">=4" + +[package.extras] +test = ["pytest"] + +[[package]] +name = "testpath" +version = "0.5.0" +description = "Test utilities for code working with files and commands" +category = "main" +optional = false +python-versions = ">= 3.5" + +[package.extras] +test = ["pytest", "pathlib2"] + +[[package]] +name = "toml" +version = "0.10.2" +description = "Python Library for Tom's Obvious, Minimal Language" +category = "main" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "tomli" +version = "2.0.0" +description = "A lil' TOML parser" +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "tornado" +version = "6.1" +description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." +category = "main" +optional = false +python-versions = ">= 3.5" + +[[package]] +name = "tqdm" +version = "4.62.3" +description = "Fast, Extensible Progress Meter" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[package.extras] +dev = ["py-make (>=0.1.0)", "twine", "wheel"] +notebook = ["ipywidgets (>=6)"] +telegram = ["requests"] + +[[package]] +name = "traitlets" +version = "5.1.1" +description = "Traitlets Python configuration system" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +test = ["pytest"] + +[[package]] +name = "typing-extensions" +version = "4.0.1" +description = "Backported and Experimental Type Hints for Python 3.6+" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "uncertainties" +version = "3.1.6" +description = "Transparent calculations with uncertainties on the quantities involved (aka error propagation); fast calculation of derivatives" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +future = "*" + +[package.extras] +all = ["numpy", "sphinx", "nose"] +docs = ["sphinx"] +optional = ["numpy"] +tests = ["nose", "numpy"] + +[[package]] +name = "urllib3" +version = "1.26.8" +description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" + +[package.extras] +brotli = ["brotlipy (>=0.6.0)"] +secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] + +[[package]] +name = "wcwidth" +version = "0.2.5" +description = "Measures the displayed width of unicode strings in a terminal" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "webencodings" +version = "0.5.1" +description = "Character encoding aliases for legacy web content" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "websocket-client" +version = "1.2.3" +description = "WebSocket client for Python with low level API options" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +docs = ["Sphinx (>=3.4)", "sphinx-rtd-theme (>=0.5)"] +optional = ["python-socks", "wsaccel"] +test = ["websockets"] + +[[package]] +name = "zipp" +version = "3.7.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"] + +[metadata] +lock-version = "1.1" +python-versions = "^3.7.1" +content-hash = "bb84528339c82cdcb822f9486a82a661082b2ff4fbea3aaba270315ee5163f43" + +[metadata.files] +anyio = [ + {file = "anyio-3.5.0-py3-none-any.whl", hash = "sha256:b5fa16c5ff93fa1046f2eeb5bbff2dad4d3514d6cda61d02816dba34fa8c3c2e"}, + {file = "anyio-3.5.0.tar.gz", hash = "sha256:a0aeffe2fb1fdf374a8e4b471444f0f3ac4fb9f5a5b542b48824475e0042a5a6"}, +] +appnope = [ + {file = "appnope-0.1.2-py2.py3-none-any.whl", hash = "sha256:93aa393e9d6c54c5cd570ccadd8edad61ea0c4b9ea7a01409020c9aa019eb442"}, + {file = "appnope-0.1.2.tar.gz", hash = "sha256:dd83cd4b5b460958838f6eb3000c660b1f9caf2a5b1de4264e941512f603258a"}, +] +argon2-cffi = [ + {file = "argon2-cffi-21.3.0.tar.gz", hash = "sha256:d384164d944190a7dd7ef22c6aa3ff197da12962bd04b17f64d4e93d934dba5b"}, + {file = "argon2_cffi-21.3.0-py3-none-any.whl", hash = "sha256:8c976986f2c5c0e5000919e6de187906cfd81fb1c72bf9d88c01177e77da7f80"}, +] +argon2-cffi-bindings = [ + {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"}, + {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"}, +] +asteval = [ + {file = "asteval-0.9.26.tar.gz", hash = "sha256:36125613ec21ed3e33e370ca8960a1f1e8a2324d78a8016bfa5ad76f1e16ef05"}, +] +attrs = [ + {file = "attrs-20.3.0-py2.py3-none-any.whl", hash = "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6"}, + {file = "attrs-20.3.0.tar.gz", hash = "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700"}, +] +babel = [ + {file = "Babel-2.9.1-py2.py3-none-any.whl", hash = "sha256:ab49e12b91d937cd11f0b67cb259a57ab4ad2b59ac7a3b41d6c06c0ac5b0def9"}, + {file = "Babel-2.9.1.tar.gz", hash = "sha256:bc0c176f9f6a994582230df350aa6e05ba2ebe4b3ac317eab29d9be5d2768da0"}, +] +backcall = [ + {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"}, + {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"}, +] +bleach = [ + {file = "bleach-4.1.0-py2.py3-none-any.whl", hash = "sha256:4d2651ab93271d1129ac9cbc679f524565cc8a1b791909c4a51eac4446a15994"}, + {file = "bleach-4.1.0.tar.gz", hash = "sha256:0900d8b37eba61a802ee40ac0061f8c2b5dee29c1927dd1d233e075ebf5a71da"}, +] +certifi = [ + {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, + {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"}, +] +cffi = [ + {file = "cffi-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c2502a1a03b6312837279c8c1bd3ebedf6c12c4228ddbad40912d671ccc8a962"}, + {file = "cffi-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:23cfe892bd5dd8941608f93348c0737e369e51c100d03718f108bf1add7bd6d0"}, + {file = "cffi-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:41d45de54cd277a7878919867c0f08b0cf817605e4eb94093e7516505d3c8d14"}, + {file = "cffi-1.15.0-cp27-cp27m-win32.whl", hash = "sha256:4a306fa632e8f0928956a41fa8e1d6243c71e7eb59ffbd165fc0b41e316b2474"}, + {file = "cffi-1.15.0-cp27-cp27m-win_amd64.whl", hash = "sha256:e7022a66d9b55e93e1a845d8c9eba2a1bebd4966cd8bfc25d9cd07d515b33fa6"}, + {file = "cffi-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:14cd121ea63ecdae71efa69c15c5543a4b5fbcd0bbe2aad864baca0063cecf27"}, + {file = "cffi-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:d4d692a89c5cf08a8557fdeb329b82e7bf609aadfaed6c0d79f5a449a3c7c023"}, + {file = "cffi-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0104fb5ae2391d46a4cb082abdd5c69ea4eab79d8d44eaaf79f1b1fd806ee4c2"}, + {file = "cffi-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:91ec59c33514b7c7559a6acda53bbfe1b283949c34fe7440bcf917f96ac0723e"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f5c7150ad32ba43a07c4479f40241756145a1f03b43480e058cfd862bf5041c7"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:00c878c90cb53ccfaae6b8bc18ad05d2036553e6d9d1d9dbcf323bbe83854ca3"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abb9a20a72ac4e0fdb50dae135ba5e77880518e742077ced47eb1499e29a443c"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a5263e363c27b653a90078143adb3d076c1a748ec9ecc78ea2fb916f9b861962"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f54a64f8b0c8ff0b64d18aa76675262e1700f3995182267998c31ae974fbc382"}, + {file = "cffi-1.15.0-cp310-cp310-win32.whl", hash = "sha256:c21c9e3896c23007803a875460fb786118f0cdd4434359577ea25eb556e34c55"}, + {file = "cffi-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:5e069f72d497312b24fcc02073d70cb989045d1c91cbd53979366077959933e0"}, + {file = "cffi-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:64d4ec9f448dfe041705426000cc13e34e6e5bb13736e9fd62e34a0b0c41566e"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2756c88cbb94231c7a147402476be2c4df2f6078099a6f4a480d239a8817ae39"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b96a311ac60a3f6be21d2572e46ce67f09abcf4d09344c49274eb9e0bf345fc"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75e4024375654472cc27e91cbe9eaa08567f7fbdf822638be2814ce059f58032"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:59888172256cac5629e60e72e86598027aca6bf01fa2465bdb676d37636573e8"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:27c219baf94952ae9d50ec19651a687b826792055353d07648a5695413e0c605"}, + {file = "cffi-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:4958391dbd6249d7ad855b9ca88fae690783a6be9e86df65865058ed81fc860e"}, + {file = "cffi-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:f6f824dc3bce0edab5f427efcfb1d63ee75b6fcb7282900ccaf925be84efb0fc"}, + {file = "cffi-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:06c48159c1abed75c2e721b1715c379fa3200c7784271b3c46df01383b593636"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c2051981a968d7de9dd2d7b87bcb9c939c74a34626a6e2f8181455dd49ed69e4"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fd8a250edc26254fe5b33be00402e6d287f562b6a5b2152dec302fa15bb3e997"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91d77d2a782be4274da750752bb1650a97bfd8f291022b379bb8e01c66b4e96b"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:45db3a33139e9c8f7c09234b5784a5e33d31fd6907800b316decad50af323ff2"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:263cc3d821c4ab2213cbe8cd8b355a7f72a8324577dc865ef98487c1aeee2bc7"}, + {file = "cffi-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:17771976e82e9f94976180f76468546834d22a7cc404b17c22df2a2c81db0c66"}, + {file = "cffi-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:3415c89f9204ee60cd09b235810be700e993e343a408693e80ce7f6a40108029"}, + {file = "cffi-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4238e6dab5d6a8ba812de994bbb0a79bddbdf80994e4ce802b6f6f3142fcc880"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0808014eb713677ec1292301ea4c81ad277b6cdf2fdd90fd540af98c0b101d20"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:57e9ac9ccc3101fac9d6014fba037473e4358ef4e89f8e181f8951a2c0162024"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b6c2ea03845c9f501ed1313e78de148cd3f6cad741a75d43a29b43da27f2e1e"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:10dffb601ccfb65262a27233ac273d552ddc4d8ae1bf93b21c94b8511bffe728"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:786902fb9ba7433aae840e0ed609f45c7bcd4e225ebb9c753aa39725bb3e6ad6"}, + {file = "cffi-1.15.0-cp38-cp38-win32.whl", hash = "sha256:da5db4e883f1ce37f55c667e5c0de439df76ac4cb55964655906306918e7363c"}, + {file = "cffi-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:181dee03b1170ff1969489acf1c26533710231c58f95534e3edac87fff06c443"}, + {file = "cffi-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:45e8636704eacc432a206ac7345a5d3d2c62d95a507ec70d62f23cd91770482a"}, + {file = "cffi-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:31fb708d9d7c3f49a60f04cf5b119aeefe5644daba1cd2a0fe389b674fd1de37"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6dc2737a3674b3e344847c8686cf29e500584ccad76204efea14f451d4cc669a"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:74fdfdbfdc48d3f47148976f49fab3251e550a8720bebc99bf1483f5bfb5db3e"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffaa5c925128e29efbde7301d8ecaf35c8c60ffbcd6a1ffd3a552177c8e5e796"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f7d084648d77af029acb79a0ff49a0ad7e9d09057a9bf46596dac9514dc07df"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef1f279350da2c586a69d32fc8733092fd32cc8ac95139a00377841f59a3f8d8"}, + {file = "cffi-1.15.0-cp39-cp39-win32.whl", hash = "sha256:2a23af14f408d53d5e6cd4e3d9a24ff9e05906ad574822a10563efcef137979a"}, + {file = "cffi-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:3773c4d81e6e818df2efbc7dd77325ca0dcb688116050fb2b3011218eda36139"}, + {file = "cffi-1.15.0.tar.gz", hash = "sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954"}, +] +charset-normalizer = [ + {file = "charset-normalizer-2.0.11.tar.gz", hash = "sha256:98398a9d69ee80548c762ba991a4728bfc3836768ed226b3945908d1a688371c"}, + {file = "charset_normalizer-2.0.11-py3-none-any.whl", hash = "sha256:2842d8f5e82a1f6aa437380934d5e1cd4fcf2003b06fed6940769c164a480a45"}, +] +colorama = [ + {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, + {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, +] +cvxpy = [ + {file = "cvxpy-1.1.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80018d9a4478253cc27d6d87677c4ba35908bf52e71a94e4beba5639c39f283d"}, + {file = "cvxpy-1.1.18-cp310-cp310-manylinux_2_24_x86_64.whl", hash = "sha256:d3c35f47032ba15af0ae5b7d4b44ed8dd287e27101f1a264295dd4885f8aea70"}, + {file = "cvxpy-1.1.18-cp310-cp310-win_amd64.whl", hash = "sha256:20b9f214f092ff5dec8e8b56ddb365690d8e02f6bd005ee9b59367150e3efd05"}, + {file = "cvxpy-1.1.18-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d853b73aca9223901b1de4dcd8c71d9732e7d38e915008956aa13fa2920d2652"}, + {file = "cvxpy-1.1.18-cp36-cp36m-manylinux_2_24_x86_64.whl", hash = "sha256:254683742bcd4427eaa17ca44675b540690e043782d467c4c68d1d4ef003c062"}, + {file = "cvxpy-1.1.18-cp36-cp36m-win_amd64.whl", hash = "sha256:6d2dd80550b9ab5f36a3961c64b51d70f364bd375565400534af65b5cf590787"}, + {file = "cvxpy-1.1.18-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e634c5afa8d4c7db9691d2fb9f982fcf9be41bf3fb8c781e47816fa290acbdbb"}, + {file = "cvxpy-1.1.18-cp37-cp37m-manylinux_2_24_x86_64.whl", hash = "sha256:d84fb6de19c998a4db8e442d2d5d5c155b983ca4f1833fd79fb6ad47c092f349"}, + {file = "cvxpy-1.1.18-cp37-cp37m-win_amd64.whl", hash = "sha256:d21d81ab76f6fae44090c19b9a802e42e8af440d9a505be892c1e6766621e4a6"}, + {file = "cvxpy-1.1.18-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ec5371c339cd35cb47fc8e9f7e6dff22e20612fdfa6b17dc508fc513130337ba"}, + {file = "cvxpy-1.1.18-cp38-cp38-manylinux_2_24_x86_64.whl", hash = "sha256:2699db1cc889fd2e0ea459f022866fcc1182241f4520c5550ca5136ef06c5246"}, + {file = "cvxpy-1.1.18-cp38-cp38-win_amd64.whl", hash = "sha256:022c8d9c82d2f00535e1d08761e88aa5c1729ee685dfb2ea60465693f54550c1"}, + {file = "cvxpy-1.1.18-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9f82ca609e34577062940d5c32bc1f687fcf83d39ca92ec0d04fb1f290b43355"}, + {file = "cvxpy-1.1.18-cp39-cp39-manylinux_2_24_x86_64.whl", hash = "sha256:569f7298539a2bd8704209628af11ecf1bca0cff2d5e27c46b57ffea921a01cf"}, + {file = "cvxpy-1.1.18-cp39-cp39-win_amd64.whl", hash = "sha256:2eb079877d23f03494141102d6cf9d3139edf5e1dc07bfa3f767f4c79e837ecb"}, + {file = "cvxpy-1.1.18.tar.gz", hash = "sha256:5baefe1f2ed6937749b293586c6ce4f42ed30e7890223f7661ccb2bb7df70bef"}, +] +cycler = [ + {file = "cycler-0.11.0-py3-none-any.whl", hash = "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3"}, + {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"}, +] +debugpy = [ + {file = "debugpy-1.5.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:70b422c63a833630c33e3f9cdbd9b6971f8c5afd452697e464339a21bbe862ba"}, + {file = "debugpy-1.5.1-cp310-cp310-win32.whl", hash = "sha256:3a457ad9c0059a21a6c7d563c1f18e924f5cf90278c722bd50ede6f56b77c7fe"}, + {file = "debugpy-1.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:5d76a4fd028d8009c3faf1185b4b78ceb2273dd2499447664b03939e0368bb90"}, + {file = "debugpy-1.5.1-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:16db27b4b91991442f91d73604d32080b30de655aca9ba821b1972ea8171021b"}, + {file = "debugpy-1.5.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2b073ad5e8d8c488fbb6a116986858bab0c9c4558f28deb8832c7a5a27405bd6"}, + {file = "debugpy-1.5.1-cp36-cp36m-win32.whl", hash = "sha256:318f81f37341e4e054b4267d39896b73cddb3612ca13b39d7eea45af65165e1d"}, + {file = "debugpy-1.5.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b5b3157372e0e0a1297a8b6b5280bcf1d35a40f436c7973771c972726d1e32d5"}, + {file = "debugpy-1.5.1-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:1ec3a086e14bba6c472632025b8fe5bdfbaef2afa1ebd5c6615ce6ed8d89bc67"}, + {file = "debugpy-1.5.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:26fbe53cca45a608679094791ce587b6e2798acd1d4777a8b303b07622e85182"}, + {file = "debugpy-1.5.1-cp37-cp37m-win32.whl", hash = "sha256:d876db8c312eeb02d85611e0f696abe66a2c1515e6405943609e725d5ff36f2a"}, + {file = "debugpy-1.5.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4404a62fb5332ea5c8c9132290eef50b3a0ba38cecacad5529e969a783bcbdd7"}, + {file = "debugpy-1.5.1-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:f3a3dca9104aa14fd4210edcce6d9ce2b65bd9618c0b222135a40b9d6e2a9eeb"}, + {file = "debugpy-1.5.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b2df2c373e85871086bd55271c929670cd4e1dba63e94a08d442db830646203b"}, + {file = "debugpy-1.5.1-cp38-cp38-win32.whl", hash = "sha256:82f5f9ce93af6861a0713f804e62ab390bb12a17f113153e47fea8bbb1dfbe36"}, + {file = "debugpy-1.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:17a25ce9d7714f92fc97ef00cc06269d7c2b163094990ada30156ed31d9a5030"}, + {file = "debugpy-1.5.1-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:01e98c594b3e66d529e40edf314f849cd1a21f7a013298df58cd8e263bf8e184"}, + {file = "debugpy-1.5.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f73988422b17f071ad3c4383551ace1ba5ed810cbab5f9c362783d22d40a08dc"}, + {file = "debugpy-1.5.1-cp39-cp39-win32.whl", hash = "sha256:23df67fc56d59e386c342428a7953c2c06cc226d8525b11319153e96afb65b0c"}, + {file = "debugpy-1.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:a2aa64f6d2ca7ded8a7e8a4e7cae3bc71866b09876b7b05cecad231779cb9156"}, + {file = "debugpy-1.5.1-py2.py3-none-any.whl", hash = "sha256:194f95dd3e84568b5489aab5689a3a2c044e8fdc06f1890b8b4f70b6b89f2778"}, + {file = "debugpy-1.5.1.zip", hash = "sha256:d2b09e91fbd1efa4f4fda121d49af89501beda50c18ed7499712c71a4bf3452e"}, +] +decorator = [ + {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, + {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, +] +defusedxml = [ + {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, + {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, +] +ecos = [ + {file = "ecos-2.0.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:533e1a0dec84e4e9a882b401a59b821da192f7fe4f32c6d65e400b6425858775"}, + {file = "ecos-2.0.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:9b1e8134e822583f457d7759cab030e6076732bcbe977ceb1c64d8fe99c17bc3"}, + {file = "ecos-2.0.10-cp310-cp310-win_amd64.whl", hash = "sha256:d1b7058c71808cb35e16217b832d2bf944f9a64ef852f6bd707ae66b474071e6"}, + {file = "ecos-2.0.10-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:ae8bf83a9146741faaf36448eaeeef83b4dd7a9e88b80fe0e89b03d403e3096c"}, + {file = "ecos-2.0.10-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:6bfe0211b99094efea0c469abbd64a7f6b991dcf0a8bed7c591c6218607a9504"}, + {file = "ecos-2.0.10-cp36-cp36m-win_amd64.whl", hash = "sha256:14deff01083fe8f54c52bee8f678eaebae54bc1eecce276324bf8ce30c306778"}, + {file = "ecos-2.0.10-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d5944f9acdfd1d23fb16a22da1e78ae98981c283e16a27fbd7cf3d52e670222b"}, + {file = "ecos-2.0.10-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:8f64207b256ec8ee2ee54411927604b10e56b554bd608c7af5529c3bea93eafd"}, + {file = "ecos-2.0.10-cp37-cp37m-win_amd64.whl", hash = "sha256:13cfe9a4134b7a2f3a8f4b8d88ce5d5106bac3d168c356b0d77e1dd2ea9dc42d"}, + {file = "ecos-2.0.10-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8a116ebad51aeb8847ddf05bb1e432f56f6a495682406f237a7f1633374b8356"}, + {file = "ecos-2.0.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:6ed5ee0610b06911b6839e095a392cce52f8d88bedf86a381a9ed93c3af2a677"}, + {file = "ecos-2.0.10-cp38-cp38-win_amd64.whl", hash = "sha256:d8afaeb204c6cbb706ebee218e3817a735ba9f7b33edc20844e6fda54946403c"}, + {file = "ecos-2.0.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b25f75808a2e136b8adc9c4dca0f3c56fc8d8256fb3c19cd162194125b4e52a9"}, + {file = "ecos-2.0.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:48948eadd2e45dd9766f0686e3de27cc6ae8e9dc85c1a2139f712b9703b0374c"}, + {file = "ecos-2.0.10-cp39-cp39-win_amd64.whl", hash = "sha256:98c8e3b7247e7c63852974a9c4b1acc5804269b50a1aba3447220cad5e4c617f"}, + {file = "ecos-2.0.10.tar.gz", hash = "sha256:9391a73fd25b2fc56b163a2a70c78973458bb194fe475b6c27672c0d980a47cf"}, +] +entrypoints = [ + {file = "entrypoints-0.4-py3-none-any.whl", hash = "sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f"}, + {file = "entrypoints-0.4.tar.gz", hash = "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4"}, +] +fonttools = [ + {file = "fonttools-4.29.1-py3-none-any.whl", hash = "sha256:1933415e0fbdf068815cb1baaa1f159e17830215f7e8624e5731122761627557"}, + {file = "fonttools-4.29.1.zip", hash = "sha256:2b18a172120e32128a80efee04cff487d5d140fe7d817deb648b2eee023a40e4"}, +] +forest-benchmarking = [ + {file = "forest-benchmarking-0.8.0.tar.gz", hash = "sha256:b15f4fa9e1dea6eb4017cb76f38bfec5e9b3352ea4a315936421f493a736ad35"}, + {file = "forest_benchmarking-0.8.0-py3-none-any.whl", hash = "sha256:6afdda365fe87ca2365f94d27ff4da0162e51a25a8a7814dde89d26dd97bea69"}, +] +future = [ + {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"}, +] +gitdb = [ + {file = "gitdb-4.0.9-py3-none-any.whl", hash = "sha256:8033ad4e853066ba6ca92050b9df2f89301b8fc8bf7e9324d412a63f8bf1a8fd"}, + {file = "gitdb-4.0.9.tar.gz", hash = "sha256:bac2fd45c0a1c9cf619e63a90d62bdc63892ef92387424b855792a6cabe789aa"}, +] +gitpython = [ + {file = "GitPython-3.1.26-py3-none-any.whl", hash = "sha256:26ac35c212d1f7b16036361ca5cff3ec66e11753a0d677fb6c48fa4e1a9dd8d6"}, + {file = "GitPython-3.1.26.tar.gz", hash = "sha256:fc8868f63a2e6d268fb25f481995ba185a85a66fcad126f039323ff6635669ee"}, +] +h11 = [ + {file = "h11-0.9.0-py2.py3-none-any.whl", hash = "sha256:4bc6d6a1238b7615b266ada57e0618568066f57dd6fa967d1290ec9309b2f2f1"}, + {file = "h11-0.9.0.tar.gz", hash = "sha256:33d4bca7be0fa039f4e84d50ab00531047e53d6ee8ffbc83501ea602c169cae1"}, +] +httpcore = [ + {file = "httpcore-0.11.1-py3-none-any.whl", hash = "sha256:72cfaa461dbdc262943ff4c9abf5b195391a03cdcc152e636adb4239b15e77e1"}, + {file = "httpcore-0.11.1.tar.gz", hash = "sha256:a35dddd1f4cc34ff37788337ef507c0ad0276241ece6daf663ac9e77c0b87232"}, +] +httpx = [ + {file = "httpx-0.15.5-py3-none-any.whl", hash = "sha256:02326f2d3c61133db31e4b88dd3432479b434e52a68d813eab6db930f13611ea"}, + {file = "httpx-0.15.5.tar.gz", hash = "sha256:254b371e3880a8e2387bf9ead6949bac797bd557fda26eba19a6153a0c06bd2b"}, +] +idna = [ + {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, + {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, +] +importlib-metadata = [ + {file = "importlib_metadata-3.10.1-py3-none-any.whl", hash = "sha256:2ec0faae539743ae6aaa84b49a169670a465f7f5d64e6add98388cc29fd1f2f6"}, + {file = "importlib_metadata-3.10.1.tar.gz", hash = "sha256:c9356b657de65c53744046fa8f7358afe0714a1af7d570c00c3835c2d724a7c1"}, +] +importlib-resources = [ + {file = "importlib_resources-5.4.0-py3-none-any.whl", hash = "sha256:33a95faed5fc19b4bc16b29a6eeae248a3fe69dd55d4d229d2b480e23eeaad45"}, + {file = "importlib_resources-5.4.0.tar.gz", hash = "sha256:d756e2f85dd4de2ba89be0b21dba2a3bbec2e871a42a3a16719258a11f87506b"}, +] +ipykernel = [ + {file = "ipykernel-6.8.0-py3-none-any.whl", hash = "sha256:6c977ead67ec22151993a5f848b97e57a5e771f979b510941e157b2e7fe54184"}, + {file = "ipykernel-6.8.0.tar.gz", hash = "sha256:67d316d527eca24e3ded45a2b38689615bcda1aa520a11af0accdcea7152c18a"}, +] +ipython = [ + {file = "ipython-7.31.1-py3-none-any.whl", hash = "sha256:55df3e0bd0f94e715abd968bedd89d4e8a7bce4bf498fb123fed4f5398fea874"}, + {file = "ipython-7.31.1.tar.gz", hash = "sha256:b5548ec5329a4bcf054a5deed5099b0f9622eb9ea51aaa7104d215fece201d8c"}, +] +ipython-genutils = [ + {file = "ipython_genutils-0.2.0-py2.py3-none-any.whl", hash = "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8"}, + {file = "ipython_genutils-0.2.0.tar.gz", hash = "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"}, +] +iso8601 = [ + {file = "iso8601-0.1.16-py2.py3-none-any.whl", hash = "sha256:906714829fedbc89955d52806c903f2332e3948ed94e31e85037f9e0226b8376"}, + {file = "iso8601-0.1.16.tar.gz", hash = "sha256:36532f77cc800594e8f16641edae7f1baf7932f05d8e508545b95fc53c6dc85b"}, +] +jedi = [ + {file = "jedi-0.18.1-py2.py3-none-any.whl", hash = "sha256:637c9635fcf47945ceb91cd7f320234a7be540ded6f3e99a50cb6febdfd1ba8d"}, + {file = "jedi-0.18.1.tar.gz", hash = "sha256:74137626a64a99c8eb6ae5832d99b3bdd7d29a3850fe2aa80a4126b2a7d949ab"}, +] +jinja2 = [ + {file = "Jinja2-3.0.3-py3-none-any.whl", hash = "sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8"}, + {file = "Jinja2-3.0.3.tar.gz", hash = "sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7"}, +] +json5 = [ + {file = "json5-0.9.6-py2.py3-none-any.whl", hash = "sha256:823e510eb355949bed817e1f3e2d682455dc6af9daf6066d5698d6a2ca4481c2"}, + {file = "json5-0.9.6.tar.gz", hash = "sha256:9175ad1bc248e22bb8d95a8e8d765958bf0008fef2fe8abab5bc04e0f1ac8302"}, +] +jsonschema = [ + {file = "jsonschema-4.4.0-py3-none-any.whl", hash = "sha256:77281a1f71684953ee8b3d488371b162419767973789272434bbc3f29d9c8823"}, + {file = "jsonschema-4.4.0.tar.gz", hash = "sha256:636694eb41b3535ed608fe04129f26542b59ed99808b4f688aa32dcf55317a83"}, +] +jupyter-client = [ + {file = "jupyter_client-7.1.2-py3-none-any.whl", hash = "sha256:d56f1c57bef42ff31e61b1185d3348a5b2bcde7c9a05523ae4dbe5ee0871797c"}, + {file = "jupyter_client-7.1.2.tar.gz", hash = "sha256:4ea61033726c8e579edb55626d8ee2e6bf0a83158ddf3751b8dd46b2c5cd1e96"}, +] +jupyter-core = [ + {file = "jupyter_core-4.9.1-py3-none-any.whl", hash = "sha256:1c091f3bbefd6f2a8782f2c1db662ca8478ac240e962ae2c66f0b87c818154ea"}, + {file = "jupyter_core-4.9.1.tar.gz", hash = "sha256:dce8a7499da5a53ae3afd5a9f4b02e5df1d57250cf48f3ad79da23b4778cd6fa"}, +] +jupyter-server = [ + {file = "jupyter_server-1.13.5-py3-none-any.whl", hash = "sha256:a3eb9d397df2de26134cb24fe7cb5da60ec28b4f8b292e0bdefd450b1f062dd3"}, + {file = "jupyter_server-1.13.5.tar.gz", hash = "sha256:9e3e9717eea3bffab8cfb2ff330011be6c8bbd9cdae5b71cef169fcece2f19d3"}, +] +jupyterlab = [ + {file = "jupyterlab-3.2.9-py3-none-any.whl", hash = "sha256:729d1f06e97733070badc04152aecf9fb2cd036783eebbd9123ff58aab83a8f5"}, + {file = "jupyterlab-3.2.9.tar.gz", hash = "sha256:65ddc34e5da1a764606e38c4f70cf9d4ac1c05182813cf0ab2dfea312c701124"}, +] +jupyterlab-pygments = [ + {file = "jupyterlab_pygments-0.1.2-py2.py3-none-any.whl", hash = "sha256:abfb880fd1561987efaefcb2d2ac75145d2a5d0139b1876d5be806e32f630008"}, + {file = "jupyterlab_pygments-0.1.2.tar.gz", hash = "sha256:cfcda0873626150932f438eccf0f8bf22bfa92345b814890ab360d666b254146"}, +] +jupyterlab-server = [ + {file = "jupyterlab_server-2.10.3-py3-none-any.whl", hash = "sha256:62f3c598f1d48dfb9b27729ed17772e38115cbe61e7d60fe68a853791bdf1038"}, + {file = "jupyterlab_server-2.10.3.tar.gz", hash = "sha256:3fb84a5813d6d836ceda773fb2d4e9ef3c7944dbc1b45a8d59d98641a80de80a"}, +] +kiwisolver = [ + {file = "kiwisolver-1.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1d819553730d3c2724582124aee8a03c846ec4362ded1034c16fb3ef309264e6"}, + {file = "kiwisolver-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8d93a1095f83e908fc253f2fb569c2711414c0bfd451cab580466465b235b470"}, + {file = "kiwisolver-1.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c4550a359c5157aaf8507e6820d98682872b9100ce7607f8aa070b4b8af6c298"}, + {file = "kiwisolver-1.3.2-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2210f28778c7d2ee13f3c2a20a3a22db889e75f4ec13a21072eabb5693801e84"}, + {file = "kiwisolver-1.3.2-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:82f49c5a79d3839bc8f38cb5f4bfc87e15f04cbafa5fbd12fb32c941cb529cfb"}, + {file = "kiwisolver-1.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9661a04ca3c950a8ac8c47f53cbc0b530bce1b52f516a1e87b7736fec24bfff0"}, + {file = "kiwisolver-1.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2ddb500a2808c100e72c075cbb00bf32e62763c82b6a882d403f01a119e3f402"}, + {file = "kiwisolver-1.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72be6ebb4e92520b9726d7146bc9c9b277513a57a38efcf66db0620aec0097e0"}, + {file = "kiwisolver-1.3.2-cp310-cp310-win32.whl", hash = "sha256:83d2c9db5dfc537d0171e32de160461230eb14663299b7e6d18ca6dca21e4977"}, + {file = "kiwisolver-1.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:cba430db673c29376135e695c6e2501c44c256a81495da849e85d1793ee975ad"}, + {file = "kiwisolver-1.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4116ba9a58109ed5e4cb315bdcbff9838f3159d099ba5259c7c7fb77f8537492"}, + {file = "kiwisolver-1.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19554bd8d54cf41139f376753af1a644b63c9ca93f8f72009d50a2080f870f77"}, + {file = "kiwisolver-1.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a7a4cf5bbdc861987a7745aed7a536c6405256853c94abc9f3287c3fa401b174"}, + {file = "kiwisolver-1.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0007840186bacfaa0aba4466d5890334ea5938e0bb7e28078a0eb0e63b5b59d5"}, + {file = "kiwisolver-1.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec2eba188c1906b05b9b49ae55aae4efd8150c61ba450e6721f64620c50b59eb"}, + {file = "kiwisolver-1.3.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3dbb3cea20b4af4f49f84cffaf45dd5f88e8594d18568e0225e6ad9dec0e7967"}, + {file = "kiwisolver-1.3.2-cp37-cp37m-win32.whl", hash = "sha256:5326ddfacbe51abf9469fe668944bc2e399181a2158cb5d45e1d40856b2a0589"}, + {file = "kiwisolver-1.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:c6572c2dab23c86a14e82c245473d45b4c515314f1f859e92608dcafbd2f19b8"}, + {file = "kiwisolver-1.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b5074fb09429f2b7bc82b6fb4be8645dcbac14e592128beeff5461dcde0af09f"}, + {file = "kiwisolver-1.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:22521219ca739654a296eea6d4367703558fba16f98688bd8ce65abff36eaa84"}, + {file = "kiwisolver-1.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c358721aebd40c243894298f685a19eb0491a5c3e0b923b9f887ef1193ddf829"}, + {file = "kiwisolver-1.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ba5a1041480c6e0a8b11a9544d53562abc2d19220bfa14133e0cdd9967e97af"}, + {file = "kiwisolver-1.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44e6adf67577dbdfa2d9f06db9fbc5639afefdb5bf2b4dfec25c3a7fbc619536"}, + {file = "kiwisolver-1.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1d45d1c74f88b9f41062716c727f78f2a59a5476ecbe74956fafb423c5c87a76"}, + {file = "kiwisolver-1.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:70adc3658138bc77a36ce769f5f183169bc0a2906a4f61f09673f7181255ac9b"}, + {file = "kiwisolver-1.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b6a5431940f28b6de123de42f0eb47b84a073ee3c3345dc109ad550a3307dd28"}, + {file = "kiwisolver-1.3.2-cp38-cp38-win32.whl", hash = "sha256:ee040a7de8d295dbd261ef2d6d3192f13e2b08ec4a954de34a6fb8ff6422e24c"}, + {file = "kiwisolver-1.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:8dc3d842fa41a33fe83d9f5c66c0cc1f28756530cd89944b63b072281e852031"}, + {file = "kiwisolver-1.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a498bcd005e8a3fedd0022bb30ee0ad92728154a8798b703f394484452550507"}, + {file = "kiwisolver-1.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:80efd202108c3a4150e042b269f7c78643420cc232a0a771743bb96b742f838f"}, + {file = "kiwisolver-1.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f8eb7b6716f5b50e9c06207a14172cf2de201e41912ebe732846c02c830455b9"}, + {file = "kiwisolver-1.3.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f441422bb313ab25de7b3dbfd388e790eceb76ce01a18199ec4944b369017009"}, + {file = "kiwisolver-1.3.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:30fa008c172355c7768159983a7270cb23838c4d7db73d6c0f6b60dde0d432c6"}, + {file = "kiwisolver-1.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f8f6c8f4f1cff93ca5058d6ec5f0efda922ecb3f4c5fb76181f327decff98b8"}, + {file = "kiwisolver-1.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba677bcaff9429fd1bf01648ad0901cea56c0d068df383d5f5856d88221fe75b"}, + {file = "kiwisolver-1.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7843b1624d6ccca403a610d1277f7c28ad184c5aa88a1750c1a999754e65b439"}, + {file = "kiwisolver-1.3.2-cp39-cp39-win32.whl", hash = "sha256:e6f5eb2f53fac7d408a45fbcdeda7224b1cfff64919d0f95473420a931347ae9"}, + {file = "kiwisolver-1.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:eedd3b59190885d1ebdf6c5e0ca56828beb1949b4dfe6e5d0256a461429ac386"}, + {file = "kiwisolver-1.3.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:dedc71c8eb9c5096037766390172c34fb86ef048b8e8958b4e484b9e505d66bc"}, + {file = "kiwisolver-1.3.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:bf7eb45d14fc036514c09554bf983f2a72323254912ed0c3c8e697b62c4c158f"}, + {file = "kiwisolver-1.3.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2b65bd35f3e06a47b5c30ea99e0c2b88f72c6476eedaf8cfbc8e66adb5479dcf"}, + {file = "kiwisolver-1.3.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25405f88a37c5f5bcba01c6e350086d65e7465fd1caaf986333d2a045045a223"}, + {file = "kiwisolver-1.3.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:bcadb05c3d4794eb9eee1dddf1c24215c92fb7b55a80beae7a60530a91060560"}, + {file = "kiwisolver-1.3.2.tar.gz", hash = "sha256:fc4453705b81d03568d5b808ad8f09c77c47534f6ac2e72e733f9ca4714aa75c"}, +] +lark = [ + {file = "lark-0.11.3.tar.gz", hash = "sha256:3100d9749b5a85735ec428b83100876a5da664804579e729c23a36341f961e7e"}, +] +lmfit = [ + {file = "lmfit-1.0.3.tar.gz", hash = "sha256:d067c3ea501f035af5d3c079e6e6e35dc3cc1ac7d439429a425b0aeb5a7858a2"}, +] +markupsafe = [ + {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4dc8f9fb58f7364b63fd9f85013b780ef83c11857ae79f2feda41e270468dd9b"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:20dca64a3ef2d6e4d5d615a3fd418ad3bde77a47ec8a23d984a12b5b4c74491a"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cdfba22ea2f0029c9261a4bd07e830a8da012291fbe44dc794e488b6c9bb353a"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-win32.whl", hash = "sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:deb993cacb280823246a026e3b2d81c493c53de6acfd5e6bfe31ab3402bb37dd"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:63f3268ba69ace99cab4e3e3b5840b03340efed0948ab8f78d2fd87ee5442a4f"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:8d206346619592c6200148b01a2142798c989edcb9c896f9ac9722a99d4e77e6"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-win32.whl", hash = "sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d6c7ebd4e944c85e2c3421e612a7057a2f48d478d79e61800d81468a8d842207"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f0567c4dc99f264f49fe27da5f735f414c4e7e7dd850cfd8e69f0862d7c74ea9"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:89c687013cb1cd489a0f0ac24febe8c7a666e6e221b783e53ac50ebf68e45d86"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-win32.whl", hash = "sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:aca6377c0cb8a8253e493c6b451565ac77e98c2951c45f913e0b52facdcff83f"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:04635854b943835a6ea959e948d19dcd311762c5c0c6e1f0e16ee57022669194"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6300b8454aa6930a24b9618fbb54b5a68135092bc666f7b06901f897fa5c2fee"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-win32.whl", hash = "sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4296f2b1ce8c86a6aea78613c34bb1a672ea0e3de9c6ba08a960efe0b0a09047"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f02365d4e99430a12647f09b6cc8bab61a6564363f313126f775eb4f6ef798e"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5b6d930f030f8ed98e3e6c98ffa0652bdb82601e7a016ec2ab5d7ff23baa78d1"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-win32.whl", hash = "sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8"}, + {file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"}, +] +matplotlib = [ + {file = "matplotlib-3.5.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:456cc8334f6d1124e8ff856b42d2cc1c84335375a16448189999496549f7182b"}, + {file = "matplotlib-3.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8a77906dc2ef9b67407cec0bdbf08e3971141e535db888974a915be5e1e3efc6"}, + {file = "matplotlib-3.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e70ae6475cfd0fad3816dcbf6cac536dc6f100f7474be58d59fa306e6e768a4"}, + {file = "matplotlib-3.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53273c5487d1c19c3bc03b9eb82adaf8456f243b97ed79d09dded747abaf1235"}, + {file = "matplotlib-3.5.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e3b6f3fd0d8ca37861c31e9a7cab71a0ef14c639b4c95654ea1dd153158bf0df"}, + {file = "matplotlib-3.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8c87cdaf06fd7b2477f68909838ff4176f105064a72ca9d24d3f2a29f73d393"}, + {file = "matplotlib-3.5.1-cp310-cp310-win32.whl", hash = "sha256:e2f28a07b4f82abb40267864ad7b3a4ed76f1b1663e81c7efc84a9b9248f672f"}, + {file = "matplotlib-3.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:d70a32ee1f8b55eed3fd4e892f0286df8cccc7e0475c11d33b5d0a148f5c7599"}, + {file = "matplotlib-3.5.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:68fa30cec89b6139dc559ed6ef226c53fd80396da1919a1b5ef672c911aaa767"}, + {file = "matplotlib-3.5.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e3484d8455af3fdb0424eae1789af61f6a79da0c80079125112fd5c1b604218"}, + {file = "matplotlib-3.5.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e293b16cf303fe82995e41700d172a58a15efc5331125d08246b520843ef21ee"}, + {file = "matplotlib-3.5.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:e3520a274a0e054e919f5b3279ee5dbccf5311833819ccf3399dab7c83e90a25"}, + {file = "matplotlib-3.5.1-cp37-cp37m-win32.whl", hash = "sha256:2252bfac85cec7af4a67e494bfccf9080bcba8a0299701eab075f48847cca907"}, + {file = "matplotlib-3.5.1-cp37-cp37m-win_amd64.whl", hash = "sha256:abf67e05a1b7f86583f6ebd01f69b693b9c535276f4e943292e444855870a1b8"}, + {file = "matplotlib-3.5.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6c094e4bfecd2fa7f9adffd03d8abceed7157c928c2976899de282f3600f0a3d"}, + {file = "matplotlib-3.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:506b210cc6e66a0d1c2bb765d055f4f6bc2745070fb1129203b67e85bbfa5c18"}, + {file = "matplotlib-3.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b04fc29bcef04d4e2d626af28d9d892be6aba94856cb46ed52bcb219ceac8943"}, + {file = "matplotlib-3.5.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:577ed20ec9a18d6bdedb4616f5e9e957b4c08563a9f985563a31fd5b10564d2a"}, + {file = "matplotlib-3.5.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e486f60db0cd1c8d68464d9484fd2a94011c1ac8593d765d0211f9daba2bd535"}, + {file = "matplotlib-3.5.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b71f3a7ca935fc759f2aed7cec06cfe10bc3100fadb5dbd9c435b04e557971e1"}, + {file = "matplotlib-3.5.1-cp38-cp38-win32.whl", hash = "sha256:d24e5bb8028541ce25e59390122f5e48c8506b7e35587e5135efcb6471b4ac6c"}, + {file = "matplotlib-3.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:778d398c4866d8e36ee3bf833779c940b5f57192fa0a549b3ad67bc4c822771b"}, + {file = "matplotlib-3.5.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bb1c613908f11bac270bc7494d68b1ef6e7c224b7a4204d5dacf3522a41e2bc3"}, + {file = "matplotlib-3.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:edf5e4e1d5fb22c18820e8586fb867455de3b109c309cb4fce3aaed85d9468d1"}, + {file = "matplotlib-3.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:40e0d7df05e8efe60397c69b467fc8f87a2affeb4d562fe92b72ff8937a2b511"}, + {file = "matplotlib-3.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a350ca685d9f594123f652ba796ee37219bf72c8e0fc4b471473d87121d6d34"}, + {file = "matplotlib-3.5.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3e66497cd990b1a130e21919b004da2f1dc112132c01ac78011a90a0f9229778"}, + {file = "matplotlib-3.5.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:87900c67c0f1728e6db17c6809ec05c025c6624dcf96a8020326ea15378fe8e7"}, + {file = "matplotlib-3.5.1-cp39-cp39-win32.whl", hash = "sha256:b8a4fb2a0c5afbe9604f8a91d7d0f27b1832c3e0b5e365f95a13015822b4cd65"}, + {file = "matplotlib-3.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:fe8d40c434a8e2c68d64c6d6a04e77f21791a93ff6afe0dce169597c110d3079"}, + {file = "matplotlib-3.5.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:34a1fc29f8f96e78ec57a5eff5e8d8b53d3298c3be6df61e7aa9efba26929522"}, + {file = "matplotlib-3.5.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:b19a761b948e939a9e20173aaae76070025f0024fc8f7ba08bef22a5c8573afc"}, + {file = "matplotlib-3.5.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6803299cbf4665eca14428d9e886de62e24f4223ac31ab9c5d6d5339a39782c7"}, + {file = "matplotlib-3.5.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:14334b9902ec776461c4b8c6516e26b450f7ebe0b3ef8703bf5cdfbbaecf774a"}, + {file = "matplotlib-3.5.1.tar.gz", hash = "sha256:b2e9810e09c3a47b73ce9cab5a72243a1258f61e7900969097a817232246ce1c"}, +] +matplotlib-inline = [ + {file = "matplotlib-inline-0.1.3.tar.gz", hash = "sha256:a04bfba22e0d1395479f866853ec1ee28eea1485c1d69a6faf00dc3e24ff34ee"}, + {file = "matplotlib_inline-0.1.3-py3-none-any.whl", hash = "sha256:aed605ba3b72462d64d475a21a9296f400a19c4f74a31b59103d2a99ffd5aa5c"}, +] +mistune = [ + {file = "mistune-0.8.4-py2.py3-none-any.whl", hash = "sha256:88a1051873018da288eee8538d476dffe1262495144b33ecb586c4ab266bb8d4"}, + {file = "mistune-0.8.4.tar.gz", hash = "sha256:59a3429db53c50b5c6bcc8a07f8848cb00d7dc8bdb431a4ab41920d201d4756e"}, +] +mpmath = [ + {file = "mpmath-1.2.1-py3-none-any.whl", hash = "sha256:604bc21bd22d2322a177c73bdb573994ef76e62edd595d17e00aff24b0667e5c"}, + {file = "mpmath-1.2.1.tar.gz", hash = "sha256:79ffb45cf9f4b101a807595bcb3e72e0396202e0b1d25d689134b48c4216a81a"}, +] +msgpack = [ + {file = "msgpack-0.6.2-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:774f5edc3475917cd95fe593e625d23d8580f9b48b570d8853d06cac171cd170"}, + {file = "msgpack-0.6.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:a06efd0482a1942aad209a6c18321b5e22d64eb531ea20af138b28172d8f35ba"}, + {file = "msgpack-0.6.2-cp27-cp27m-win32.whl", hash = "sha256:8a3ada8401736df2bf497f65589293a86c56e197a80ae7634ec2c3150a2f5082"}, + {file = "msgpack-0.6.2-cp27-cp27m-win_amd64.whl", hash = "sha256:b8b4bd3dafc7b92608ae5462add1c8cc881851c2d4f5d8977fdea5b081d17f21"}, + {file = "msgpack-0.6.2-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:24149a75643aeaa81ece4259084d11b792308a6cf74e796cbb35def94c89a25a"}, + {file = "msgpack-0.6.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:757bd71a9b89e4f1db0622af4436d403e742506dbea978eba566815dc65ec895"}, + {file = "msgpack-0.6.2-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:32fea0ea3cd1ef820286863a6202dcfd62a539b8ec3edcbdff76068a8c2cc6ce"}, + {file = "msgpack-0.6.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:db7ff14abc73577b0bcbcf73ecff97d3580ecaa0fc8724babce21fdf3fe08ef6"}, + {file = "msgpack-0.6.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:187794cd1eb73acccd528247e3565f6760bd842d7dc299241f830024a7dd5610"}, + {file = "msgpack-0.6.2-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:b24afc52e18dccc8c175de07c1d680bdf315844566f4952b5bedb908894bec79"}, + {file = "msgpack-0.6.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:355f7fd0f90134229eaeefaee3cf42e0afc8518e8f3cd4b25f541a7104dcb8f9"}, + {file = "msgpack-0.6.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:76df51492bc6fa6cc8b65d09efdb67cbba3cbfe55004c3afc81352af92b4a43c"}, + {file = "msgpack-0.6.2-cp36-cp36m-win32.whl", hash = "sha256:f0f47bafe9c9b8ed03e19a100a743662dd8c6d0135e684feea720a0d0046d116"}, + {file = "msgpack-0.6.2-cp36-cp36m-win_amd64.whl", hash = "sha256:c6e5024fc0cdf7f83b6624850309ddd7e06c48a75fa0d1c5173de4d93300eb19"}, + {file = "msgpack-0.6.2-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:30b88c47e0cdb6062daed88ca283b0d84fa0d2ad6c273aa0788152a1c643e408"}, + {file = "msgpack-0.6.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:229a0ccdc39e9b6c6d1033cd8aecd9c296823b6c87f0de3943c59b8bc7c64bee"}, + {file = "msgpack-0.6.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:4abdb88a9b67e64810fb54b0c24a1fd76b12297b4f7a1467d85a14dd8367191a"}, + {file = "msgpack-0.6.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:dedf54d72d9e7b6d043c244c8213fe2b8bbfe66874b9a65b39c4cc892dd99dd4"}, + {file = "msgpack-0.6.2-cp37-cp37m-win32.whl", hash = "sha256:0cc7ca04e575ba34fea7cfcd76039f55def570e6950e4155a4174368142c8e1b"}, + {file = "msgpack-0.6.2-cp37-cp37m-win_amd64.whl", hash = "sha256:1904b7cb65342d0998b75908304a03cb004c63ef31e16c8c43fee6b989d7f0d7"}, + {file = "msgpack-0.6.2.tar.gz", hash = "sha256:ea3c2f859346fcd55fc46e96885301d9c2f7a36d453f5d8f2967840efa1e1830"}, +] +nbclassic = [ + {file = "nbclassic-0.3.5-py3-none-any.whl", hash = "sha256:012d18efb4e24fe9af598add0dcaa621c1f8afbbbabb942fb583dd7fbb247fc8"}, + {file = "nbclassic-0.3.5.tar.gz", hash = "sha256:99444dd63103af23c788d9b5172992f12caf8c3098dd5a35c787f0df31490c29"}, +] +nbclient = [ + {file = "nbclient-0.5.10-py3-none-any.whl", hash = "sha256:5b582e21c8b464e6676a9d60acc6871d7fbc3b080f74bef265a9f90411b31f6f"}, + {file = "nbclient-0.5.10.tar.gz", hash = "sha256:b5fdea88d6fa52ca38de6c2361401cfe7aaa7cd24c74effc5e489cec04d79088"}, +] +nbconvert = [ + {file = "nbconvert-6.4.1-py3-none-any.whl", hash = "sha256:fe93bc42485c54c5a49a2324c834aca1ff315f320a535bed3e3c4e085d3eebe3"}, + {file = "nbconvert-6.4.1.tar.gz", hash = "sha256:7dce3f977c2f9651841a3c49b5b7314c742f24dd118b99e51b8eec13c504f555"}, +] +nbformat = [ + {file = "nbformat-5.1.3-py3-none-any.whl", hash = "sha256:eb8447edd7127d043361bc17f2f5a807626bc8e878c7709a1c647abda28a9171"}, + {file = "nbformat-5.1.3.tar.gz", hash = "sha256:b516788ad70771c6250977c1374fcca6edebe6126fd2adb5a69aa5c2356fd1c8"}, +] +nest-asyncio = [ + {file = "nest_asyncio-1.5.4-py3-none-any.whl", hash = "sha256:3fdd0d6061a2bb16f21fe8a9c6a7945be83521d81a0d15cff52e9edee50101d6"}, + {file = "nest_asyncio-1.5.4.tar.gz", hash = "sha256:f969f6013a16fadb4adcf09d11a68a4f617c6049d7af7ac2c676110169a63abd"}, +] +networkx = [ + {file = "networkx-2.6.3-py3-none-any.whl", hash = "sha256:80b6b89c77d1dfb64a4c7854981b60aeea6360ac02c6d4e4913319e0a313abef"}, + {file = "networkx-2.6.3.tar.gz", hash = "sha256:c0946ed31d71f1b732b5aaa6da5a0388a345019af232ce2f49c766e2d6795c51"}, +] +notebook = [ + {file = "notebook-6.4.8-py3-none-any.whl", hash = "sha256:3e702fcc54b8ae597533c3864793b7a1e971dec9e112f67235828d8a798fd654"}, + {file = "notebook-6.4.8.tar.gz", hash = "sha256:1e985c9dc6f678bdfffb9dc657306b5469bfa62d73e03f74e8defbf76d284312"}, +] +numpy = [ + {file = "numpy-1.21.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:38e8648f9449a549a7dfe8d8755a5979b45b3538520d1e735637ef28e8c2dc50"}, + {file = "numpy-1.21.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fd7d7409fa643a91d0a05c7554dd68aa9c9bb16e186f6ccfe40d6e003156e33a"}, + {file = "numpy-1.21.1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a75b4498b1e93d8b700282dc8e655b8bd559c0904b3910b144646dbbbc03e062"}, + {file = "numpy-1.21.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1412aa0aec3e00bc23fbb8664d76552b4efde98fb71f60737c83efbac24112f1"}, + {file = "numpy-1.21.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e46ceaff65609b5399163de5893d8f2a82d3c77d5e56d976c8b5fb01faa6b671"}, + {file = "numpy-1.21.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:c6a2324085dd52f96498419ba95b5777e40b6bcbc20088fddb9e8cbb58885e8e"}, + {file = "numpy-1.21.1-cp37-cp37m-win32.whl", hash = "sha256:73101b2a1fef16602696d133db402a7e7586654682244344b8329cdcbbb82172"}, + {file = "numpy-1.21.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7a708a79c9a9d26904d1cca8d383bf869edf6f8e7650d85dbc77b041e8c5a0f8"}, + {file = "numpy-1.21.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95b995d0c413f5d0428b3f880e8fe1660ff9396dcd1f9eedbc311f37b5652e16"}, + {file = "numpy-1.21.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:635e6bd31c9fb3d475c8f44a089569070d10a9ef18ed13738b03049280281267"}, + {file = "numpy-1.21.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4a3d5fb89bfe21be2ef47c0614b9c9c707b7362386c9a3ff1feae63e0267ccb6"}, + {file = "numpy-1.21.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8a326af80e86d0e9ce92bcc1e65c8ff88297de4fa14ee936cb2293d414c9ec63"}, + {file = "numpy-1.21.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:791492091744b0fe390a6ce85cc1bf5149968ac7d5f0477288f78c89b385d9af"}, + {file = "numpy-1.21.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0318c465786c1f63ac05d7c4dbcecd4d2d7e13f0959b01b534ea1e92202235c5"}, + {file = "numpy-1.21.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a513bd9c1551894ee3d31369f9b07460ef223694098cf27d399513415855b68"}, + {file = "numpy-1.21.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:91c6f5fc58df1e0a3cc0c3a717bb3308ff850abdaa6d2d802573ee2b11f674a8"}, + {file = "numpy-1.21.1-cp38-cp38-win32.whl", hash = "sha256:978010b68e17150db8765355d1ccdd450f9fc916824e8c4e35ee620590e234cd"}, + {file = "numpy-1.21.1-cp38-cp38-win_amd64.whl", hash = "sha256:9749a40a5b22333467f02fe11edc98f022133ee1bfa8ab99bda5e5437b831214"}, + {file = "numpy-1.21.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d7a4aeac3b94af92a9373d6e77b37691b86411f9745190d2c351f410ab3a791f"}, + {file = "numpy-1.21.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d9e7912a56108aba9b31df688a4c4f5cb0d9d3787386b87d504762b6754fbb1b"}, + {file = "numpy-1.21.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:25b40b98ebdd272bc3020935427a4530b7d60dfbe1ab9381a39147834e985eac"}, + {file = "numpy-1.21.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8a92c5aea763d14ba9d6475803fc7904bda7decc2a0a68153f587ad82941fec1"}, + {file = "numpy-1.21.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05a0f648eb28bae4bcb204e6fd14603de2908de982e761a2fc78efe0f19e96e1"}, + {file = "numpy-1.21.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f01f28075a92eede918b965e86e8f0ba7b7797a95aa8d35e1cc8821f5fc3ad6a"}, + {file = "numpy-1.21.1-cp39-cp39-win32.whl", hash = "sha256:88c0b89ad1cc24a5efbb99ff9ab5db0f9a86e9cc50240177a571fbe9c2860ac2"}, + {file = "numpy-1.21.1-cp39-cp39-win_amd64.whl", hash = "sha256:01721eefe70544d548425a07c80be8377096a54118070b8a62476866d5208e33"}, + {file = "numpy-1.21.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2d4d1de6e6fb3d28781c73fbde702ac97f03d79e4ffd6598b880b2d95d62ead4"}, + {file = "numpy-1.21.1.zip", hash = "sha256:dff4af63638afcc57a3dfb9e4b26d434a7a602d225b42d746ea7fe2edf1342fd"}, +] +osqp = [ + {file = "osqp-0.6.2.post5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c7b3ae95221ad6f607dc4a69f36b7a0c71ca434ce85dcbf5cfa084770be5b249"}, + {file = "osqp-0.6.2.post5-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26664bd4238f0f92642f532b23e61efba810a6debba0b3117300749f801e9c25"}, + {file = "osqp-0.6.2.post5-cp310-cp310-win_amd64.whl", hash = "sha256:ff71646bc9d55c5b3a72cc9b4197e51c36d25d8b2bb81f975d3ce7772ff188ec"}, + {file = "osqp-0.6.2.post5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4ca601c5008600b3e0a408339be21f9d626c497b0b0c4dbe4ffe6d6dbbed1b9f"}, + {file = "osqp-0.6.2.post5-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c07602c8747ce7a177d091bb6d47ce8f214997a86b7577ddee4adae43e9ac92f"}, + {file = "osqp-0.6.2.post5-cp36-cp36m-win_amd64.whl", hash = "sha256:8c2e40e6788b860887d584a9929ad1c0e436aab8f82bb24da7b165034cb04017"}, + {file = "osqp-0.6.2.post5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:73a307a93fa7ab68b610e08637c95940070a27f11fda5a2e7a7095cfaff3f0ef"}, + {file = "osqp-0.6.2.post5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77408f93ed261581fe498505c69480fb8584c8c0da2a2cd0710bb4bae0c872f5"}, + {file = "osqp-0.6.2.post5-cp37-cp37m-win_amd64.whl", hash = "sha256:648cb4e34caf0ee948b34a1d0b184f5233e30009090884e0d75503f868bf7b1f"}, + {file = "osqp-0.6.2.post5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:51a315e02a4cb42e1911047ec6b2a44b67a269d4b5d37d7ee737654206915c82"}, + {file = "osqp-0.6.2.post5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c23bb95e6f72c6b253737edb9e4ef47ceccc3d891c287041ed5fe5f173d317bb"}, + {file = "osqp-0.6.2.post5-cp38-cp38-win_amd64.whl", hash = "sha256:908d42fb5d1d9cb36d74a8f3db69384ed1813f1a3e755367557395ce7cf05e16"}, + {file = "osqp-0.6.2.post5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c9470c5d58535d31080cb693568916a3e837f09dfa94819a85284b36b3626738"}, + {file = "osqp-0.6.2.post5-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8003fc363f707daa46fef3af548e6a580372154d6cd49a7bf2f569ba5f807d15"}, + {file = "osqp-0.6.2.post5-cp39-cp39-win_amd64.whl", hash = "sha256:b1e30d6fa10ed11a95023d7308ec1588de3f5b049d09a4d0cc49e057f8e9ce47"}, + {file = "osqp-0.6.2.post5.tar.gz", hash = "sha256:b2fa17aae42a7ed498ec261b33f262bb4b3605e7e8464062159d9fae817f0d61"}, +] +packaging = [ + {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, + {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, +] +pandas = [ + {file = "pandas-1.3.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:62d5b5ce965bae78f12c1c0df0d387899dd4211ec0bdc52822373f13a3a022b9"}, + {file = "pandas-1.3.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:adfeb11be2d54f275142c8ba9bf67acee771b7186a5745249c7d5a06c670136b"}, + {file = "pandas-1.3.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:60a8c055d58873ad81cae290d974d13dd479b82cbb975c3e1fa2cf1920715296"}, + {file = "pandas-1.3.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd541ab09e1f80a2a1760032d665f6e032d8e44055d602d65eeea6e6e85498cb"}, + {file = "pandas-1.3.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2651d75b9a167cc8cc572cf787ab512d16e316ae00ba81874b560586fa1325e0"}, + {file = "pandas-1.3.5-cp310-cp310-win_amd64.whl", hash = "sha256:aaf183a615ad790801fa3cf2fa450e5b6d23a54684fe386f7e3208f8b9bfbef6"}, + {file = "pandas-1.3.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:344295811e67f8200de2390093aeb3c8309f5648951b684d8db7eee7d1c81fb7"}, + {file = "pandas-1.3.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:552020bf83b7f9033b57cbae65589c01e7ef1544416122da0c79140c93288f56"}, + {file = "pandas-1.3.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5cce0c6bbeb266b0e39e35176ee615ce3585233092f685b6a82362523e59e5b4"}, + {file = "pandas-1.3.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d28a3c65463fd0d0ba8bbb7696b23073efee0510783340a44b08f5e96ffce0c"}, + {file = "pandas-1.3.5-cp37-cp37m-win32.whl", hash = "sha256:a62949c626dd0ef7de11de34b44c6475db76995c2064e2d99c6498c3dba7fe58"}, + {file = "pandas-1.3.5-cp37-cp37m-win_amd64.whl", hash = "sha256:8025750767e138320b15ca16d70d5cdc1886e8f9cc56652d89735c016cd8aea6"}, + {file = "pandas-1.3.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fe95bae4e2d579812865db2212bb733144e34d0c6785c0685329e5b60fcb85dd"}, + {file = "pandas-1.3.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f261553a1e9c65b7a310302b9dbac31cf0049a51695c14ebe04e4bfd4a96f02"}, + {file = "pandas-1.3.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b6dbec5f3e6d5dc80dcfee250e0a2a652b3f28663492f7dab9a24416a48ac39"}, + {file = "pandas-1.3.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3bc49af96cd6285030a64779de5b3688633a07eb75c124b0747134a63f4c05f"}, + {file = "pandas-1.3.5-cp38-cp38-win32.whl", hash = "sha256:b6b87b2fb39e6383ca28e2829cddef1d9fc9e27e55ad91ca9c435572cdba51bf"}, + {file = "pandas-1.3.5-cp38-cp38-win_amd64.whl", hash = "sha256:a395692046fd8ce1edb4c6295c35184ae0c2bbe787ecbe384251da609e27edcb"}, + {file = "pandas-1.3.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bd971a3f08b745a75a86c00b97f3007c2ea175951286cdda6abe543e687e5f2f"}, + {file = "pandas-1.3.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37f06b59e5bc05711a518aa10beaec10942188dccb48918bb5ae602ccbc9f1a0"}, + {file = "pandas-1.3.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c21778a688d3712d35710501f8001cdbf96eb70a7c587a3d5613573299fdca6"}, + {file = "pandas-1.3.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3345343206546545bc26a05b4602b6a24385b5ec7c75cb6059599e3d56831da2"}, + {file = "pandas-1.3.5-cp39-cp39-win32.whl", hash = "sha256:c69406a2808ba6cf580c2255bcf260b3f214d2664a3a4197d0e640f573b46fd3"}, + {file = "pandas-1.3.5-cp39-cp39-win_amd64.whl", hash = "sha256:32e1a26d5ade11b547721a72f9bfc4bd113396947606e00d5b4a5b79b3dcb006"}, + {file = "pandas-1.3.5.tar.gz", hash = "sha256:1e4285f5de1012de20ca46b188ccf33521bff61ba5c5ebd78b4fb28e5416a9f1"}, +] +pandocfilters = [ + {file = "pandocfilters-1.5.0-py2.py3-none-any.whl", hash = "sha256:33aae3f25fd1a026079f5d27bdd52496f0e0803b3469282162bafdcbdf6ef14f"}, + {file = "pandocfilters-1.5.0.tar.gz", hash = "sha256:0b679503337d233b4339a817bfc8c50064e2eff681314376a47cb582305a7a38"}, +] +parso = [ + {file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"}, + {file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"}, +] +pexpect = [ + {file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"}, + {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"}, +] +pickleshare = [ + {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"}, + {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"}, +] +pillow = [ + {file = "Pillow-9.0.1-1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a5d24e1d674dd9d72c66ad3ea9131322819ff86250b30dc5821cbafcfa0b96b4"}, + {file = "Pillow-9.0.1-1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2632d0f846b7c7600edf53c48f8f9f1e13e62f66a6dbc15191029d950bfed976"}, + {file = "Pillow-9.0.1-1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b9618823bd237c0d2575283f2939655f54d51b4527ec3972907a927acbcc5bfc"}, + {file = "Pillow-9.0.1-cp310-cp310-macosx_10_10_universal2.whl", hash = "sha256:9bfdb82cdfeccec50aad441afc332faf8606dfa5e8efd18a6692b5d6e79f00fd"}, + {file = "Pillow-9.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5100b45a4638e3c00e4d2320d3193bdabb2d75e79793af7c3eb139e4f569f16f"}, + {file = "Pillow-9.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:528a2a692c65dd5cafc130de286030af251d2ee0483a5bf50c9348aefe834e8a"}, + {file = "Pillow-9.0.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f29d831e2151e0b7b39981756d201f7108d3d215896212ffe2e992d06bfe049"}, + {file = "Pillow-9.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:855c583f268edde09474b081e3ddcd5cf3b20c12f26e0d434e1386cc5d318e7a"}, + {file = "Pillow-9.0.1-cp310-cp310-win32.whl", hash = "sha256:d9d7942b624b04b895cb95af03a23407f17646815495ce4547f0e60e0b06f58e"}, + {file = "Pillow-9.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:81c4b81611e3a3cb30e59b0cf05b888c675f97e3adb2c8672c3154047980726b"}, + {file = "Pillow-9.0.1-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:413ce0bbf9fc6278b2d63309dfeefe452835e1c78398efb431bab0672fe9274e"}, + {file = "Pillow-9.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80fe64a6deb6fcfdf7b8386f2cf216d329be6f2781f7d90304351811fb591360"}, + {file = "Pillow-9.0.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cef9c85ccbe9bee00909758936ea841ef12035296c748aaceee535969e27d31b"}, + {file = "Pillow-9.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d19397351f73a88904ad1aee421e800fe4bbcd1aeee6435fb62d0a05ccd1030"}, + {file = "Pillow-9.0.1-cp37-cp37m-win32.whl", hash = "sha256:d21237d0cd37acded35154e29aec853e945950321dd2ffd1a7d86fe686814669"}, + {file = "Pillow-9.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:ede5af4a2702444a832a800b8eb7f0a7a1c0eed55b644642e049c98d589e5092"}, + {file = "Pillow-9.0.1-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:b5b3f092fe345c03bca1e0b687dfbb39364b21ebb8ba90e3fa707374b7915204"}, + {file = "Pillow-9.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:335ace1a22325395c4ea88e00ba3dc89ca029bd66bd5a3c382d53e44f0ccd77e"}, + {file = "Pillow-9.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:db6d9fac65bd08cea7f3540b899977c6dee9edad959fa4eaf305940d9cbd861c"}, + {file = "Pillow-9.0.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f154d173286a5d1863637a7dcd8c3437bb557520b01bddb0be0258dcb72696b5"}, + {file = "Pillow-9.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14d4b1341ac07ae07eb2cc682f459bec932a380c3b122f5540432d8977e64eae"}, + {file = "Pillow-9.0.1-cp38-cp38-win32.whl", hash = "sha256:effb7749713d5317478bb3acb3f81d9d7c7f86726d41c1facca068a04cf5bb4c"}, + {file = "Pillow-9.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:7f7609a718b177bf171ac93cea9fd2ddc0e03e84d8fa4e887bdfc39671d46b00"}, + {file = "Pillow-9.0.1-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:80ca33961ced9c63358056bd08403ff866512038883e74f3a4bf88ad3eb66838"}, + {file = "Pillow-9.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1c3c33ac69cf059bbb9d1a71eeaba76781b450bc307e2291f8a4764d779a6b28"}, + {file = "Pillow-9.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12875d118f21cf35604176872447cdb57b07126750a33748bac15e77f90f1f9c"}, + {file = "Pillow-9.0.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:514ceac913076feefbeaf89771fd6febde78b0c4c1b23aaeab082c41c694e81b"}, + {file = "Pillow-9.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3c5c79ab7dfce6d88f1ba639b77e77a17ea33a01b07b99840d6ed08031cb2a7"}, + {file = "Pillow-9.0.1-cp39-cp39-win32.whl", hash = "sha256:718856856ba31f14f13ba885ff13874be7fefc53984d2832458f12c38205f7f7"}, + {file = "Pillow-9.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:f25ed6e28ddf50de7e7ea99d7a976d6a9c415f03adcaac9c41ff6ff41b6d86ac"}, + {file = "Pillow-9.0.1-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:011233e0c42a4a7836498e98c1acf5e744c96a67dd5032a6f666cc1fb97eab97"}, + {file = "Pillow-9.0.1-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253e8a302a96df6927310a9d44e6103055e8fb96a6822f8b7f514bb7ef77de56"}, + {file = "Pillow-9.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6295f6763749b89c994fcb6d8a7f7ce03c3992e695f89f00b741b4580b199b7e"}, + {file = "Pillow-9.0.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:a9f44cd7e162ac6191491d7249cceb02b8116b0f7e847ee33f739d7cb1ea1f70"}, + {file = "Pillow-9.0.1.tar.gz", hash = "sha256:6c8bc8238a7dfdaf7a75f5ec5a663f4173f8c367e5a39f87e720495e1eed75fa"}, +] +prometheus-client = [ + {file = "prometheus_client-0.13.1-py3-none-any.whl", hash = "sha256:357a447fd2359b0a1d2e9b311a0c5778c330cfbe186d880ad5a6b39884652316"}, + {file = "prometheus_client-0.13.1.tar.gz", hash = "sha256:ada41b891b79fca5638bd5cfe149efa86512eaa55987893becd2c6d8d0a5dfc5"}, +] +prompt-toolkit = [ + {file = "prompt_toolkit-3.0.26-py3-none-any.whl", hash = "sha256:4bcf119be2200c17ed0d518872ef922f1de336eb6d1ddbd1e089ceb6447d97c6"}, + {file = "prompt_toolkit-3.0.26.tar.gz", hash = "sha256:a51d41a6a45fd9def54365bca8f0402c8f182f2b6f7e29c74d55faeb9fb38ac4"}, +] +ptyprocess = [ + {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, + {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, +] +py = [ + {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, + {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, +] +pycparser = [ + {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, + {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, +] +pydantic = [ + {file = "pydantic-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cb23bcc093697cdea2708baae4f9ba0e972960a835af22560f6ae4e7e47d33f5"}, + {file = "pydantic-1.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1d5278bd9f0eee04a44c712982343103bba63507480bfd2fc2790fa70cd64cf4"}, + {file = "pydantic-1.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab624700dc145aa809e6f3ec93fb8e7d0f99d9023b713f6a953637429b437d37"}, + {file = "pydantic-1.9.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c8d7da6f1c1049eefb718d43d99ad73100c958a5367d30b9321b092771e96c25"}, + {file = "pydantic-1.9.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:3c3b035103bd4e2e4a28da9da7ef2fa47b00ee4a9cf4f1a735214c1bcd05e0f6"}, + {file = "pydantic-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3011b975c973819883842c5ab925a4e4298dffccf7782c55ec3580ed17dc464c"}, + {file = "pydantic-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:086254884d10d3ba16da0588604ffdc5aab3f7f09557b998373e885c690dd398"}, + {file = "pydantic-1.9.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:0fe476769acaa7fcddd17cadd172b156b53546ec3614a4d880e5d29ea5fbce65"}, + {file = "pydantic-1.9.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8e9dcf1ac499679aceedac7e7ca6d8641f0193c591a2d090282aaf8e9445a46"}, + {file = "pydantic-1.9.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d1e4c28f30e767fd07f2ddc6f74f41f034d1dd6bc526cd59e63a82fe8bb9ef4c"}, + {file = "pydantic-1.9.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:c86229333cabaaa8c51cf971496f10318c4734cf7b641f08af0a6fbf17ca3054"}, + {file = "pydantic-1.9.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:c0727bda6e38144d464daec31dff936a82917f431d9c39c39c60a26567eae3ed"}, + {file = "pydantic-1.9.0-cp36-cp36m-win_amd64.whl", hash = "sha256:dee5ef83a76ac31ab0c78c10bd7d5437bfdb6358c95b91f1ba7ff7b76f9996a1"}, + {file = "pydantic-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d9c9bdb3af48e242838f9f6e6127de9be7063aad17b32215ccc36a09c5cf1070"}, + {file = "pydantic-1.9.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ee7e3209db1e468341ef41fe263eb655f67f5c5a76c924044314e139a1103a2"}, + {file = "pydantic-1.9.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0b6037175234850ffd094ca77bf60fb54b08b5b22bc85865331dd3bda7a02fa1"}, + {file = "pydantic-1.9.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b2571db88c636d862b35090ccf92bf24004393f85c8870a37f42d9f23d13e032"}, + {file = "pydantic-1.9.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8b5ac0f1c83d31b324e57a273da59197c83d1bb18171e512908fe5dc7278a1d6"}, + {file = "pydantic-1.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:bbbc94d0c94dd80b3340fc4f04fd4d701f4b038ebad72c39693c794fd3bc2d9d"}, + {file = "pydantic-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e0896200b6a40197405af18828da49f067c2fa1f821491bc8f5bde241ef3f7d7"}, + {file = "pydantic-1.9.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7bdfdadb5994b44bd5579cfa7c9b0e1b0e540c952d56f627eb227851cda9db77"}, + {file = "pydantic-1.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:574936363cd4b9eed8acdd6b80d0143162f2eb654d96cb3a8ee91d3e64bf4cf9"}, + {file = "pydantic-1.9.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c556695b699f648c58373b542534308922c46a1cda06ea47bc9ca45ef5b39ae6"}, + {file = "pydantic-1.9.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:f947352c3434e8b937e3aa8f96f47bdfe6d92779e44bb3f41e4c213ba6a32145"}, + {file = "pydantic-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5e48ef4a8b8c066c4a31409d91d7ca372a774d0212da2787c0d32f8045b1e034"}, + {file = "pydantic-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:96f240bce182ca7fe045c76bcebfa0b0534a1bf402ed05914a6f1dadff91877f"}, + {file = "pydantic-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:815ddebb2792efd4bba5488bc8fde09c29e8ca3227d27cf1c6990fc830fd292b"}, + {file = "pydantic-1.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6c5b77947b9e85a54848343928b597b4f74fc364b70926b3c4441ff52620640c"}, + {file = "pydantic-1.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c68c3bc88dbda2a6805e9a142ce84782d3930f8fdd9655430d8576315ad97ce"}, + {file = "pydantic-1.9.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a79330f8571faf71bf93667d3ee054609816f10a259a109a0738dac983b23c3"}, + {file = "pydantic-1.9.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f5a64b64ddf4c99fe201ac2724daada8595ada0d102ab96d019c1555c2d6441d"}, + {file = "pydantic-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a733965f1a2b4090a5238d40d983dcd78f3ecea221c7af1497b845a9709c1721"}, + {file = "pydantic-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:2cc6a4cb8a118ffec2ca5fcb47afbacb4f16d0ab8b7350ddea5e8ef7bcc53a16"}, + {file = "pydantic-1.9.0-py3-none-any.whl", hash = "sha256:085ca1de245782e9b46cefcf99deecc67d418737a1fd3f6a4f511344b613a5b3"}, + {file = "pydantic-1.9.0.tar.gz", hash = "sha256:742645059757a56ecd886faf4ed2441b9c0cd406079c2b4bee51bcc3fbcd510a"}, +] +pygments = [ + {file = "Pygments-2.11.2-py3-none-any.whl", hash = "sha256:44238f1b60a76d78fc8ca0528ee429702aae011c265fe6a8dd8b63049ae41c65"}, + {file = "Pygments-2.11.2.tar.gz", hash = "sha256:4e426f72023d88d03b2fa258de560726ce890ff3b630f88c21cbb8b2503b8c6a"}, +] +pyjwt = [ + {file = "PyJWT-1.7.1-py2.py3-none-any.whl", hash = "sha256:5c6eca3c2940464d106b99ba83b00c6add741c9becaec087fb7ccdefea71350e"}, + {file = "PyJWT-1.7.1.tar.gz", hash = "sha256:8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96"}, +] +pyparsing = [ + {file = "pyparsing-3.0.7-py3-none-any.whl", hash = "sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484"}, + {file = "pyparsing-3.0.7.tar.gz", hash = "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea"}, +] +pyquil = [ + {file = "pyquil-3.0.1-py3-none-any.whl", hash = "sha256:d433a94294528ac07d185ff8e8ff69ac7f29062ed2f83d549f2415632f952304"}, + {file = "pyquil-3.0.1.tar.gz", hash = "sha256:5d7f1414c8bcaec6b86577ca1a75a020b0315845eaf3165ae4c0d3633987a387"}, +] +pyrsistent = [ + {file = "pyrsistent-0.18.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:df46c854f490f81210870e509818b729db4488e1f30f2a1ce1698b2295a878d1"}, + {file = "pyrsistent-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d45866ececf4a5fff8742c25722da6d4c9e180daa7b405dc0a2a2790d668c26"}, + {file = "pyrsistent-0.18.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4ed6784ceac462a7d6fcb7e9b663e93b9a6fb373b7f43594f9ff68875788e01e"}, + {file = "pyrsistent-0.18.1-cp310-cp310-win32.whl", hash = "sha256:e4f3149fd5eb9b285d6bfb54d2e5173f6a116fe19172686797c056672689daf6"}, + {file = "pyrsistent-0.18.1-cp310-cp310-win_amd64.whl", hash = "sha256:636ce2dc235046ccd3d8c56a7ad54e99d5c1cd0ef07d9ae847306c91d11b5fec"}, + {file = "pyrsistent-0.18.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e92a52c166426efbe0d1ec1332ee9119b6d32fc1f0bbfd55d5c1088070e7fc1b"}, + {file = "pyrsistent-0.18.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7a096646eab884bf8bed965bad63ea327e0d0c38989fc83c5ea7b8a87037bfc"}, + {file = "pyrsistent-0.18.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cdfd2c361b8a8e5d9499b9082b501c452ade8bbf42aef97ea04854f4a3f43b22"}, + {file = "pyrsistent-0.18.1-cp37-cp37m-win32.whl", hash = "sha256:7ec335fc998faa4febe75cc5268a9eac0478b3f681602c1f27befaf2a1abe1d8"}, + {file = "pyrsistent-0.18.1-cp37-cp37m-win_amd64.whl", hash = "sha256:6455fc599df93d1f60e1c5c4fe471499f08d190d57eca040c0ea182301321286"}, + {file = "pyrsistent-0.18.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fd8da6d0124efa2f67d86fa70c851022f87c98e205f0594e1fae044e7119a5a6"}, + {file = "pyrsistent-0.18.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bfe2388663fd18bd8ce7db2c91c7400bf3e1a9e8bd7d63bf7e77d39051b85ec"}, + {file = "pyrsistent-0.18.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e3e1fcc45199df76053026a51cc59ab2ea3fc7c094c6627e93b7b44cdae2c8c"}, + {file = "pyrsistent-0.18.1-cp38-cp38-win32.whl", hash = "sha256:b568f35ad53a7b07ed9b1b2bae09eb15cdd671a5ba5d2c66caee40dbf91c68ca"}, + {file = "pyrsistent-0.18.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1b96547410f76078eaf66d282ddca2e4baae8964364abb4f4dcdde855cd123a"}, + {file = "pyrsistent-0.18.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f87cc2863ef33c709e237d4b5f4502a62a00fab450c9e020892e8e2ede5847f5"}, + {file = "pyrsistent-0.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bc66318fb7ee012071b2792024564973ecc80e9522842eb4e17743604b5e045"}, + {file = "pyrsistent-0.18.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:914474c9f1d93080338ace89cb2acee74f4f666fb0424896fcfb8d86058bf17c"}, + {file = "pyrsistent-0.18.1-cp39-cp39-win32.whl", hash = "sha256:1b34eedd6812bf4d33814fca1b66005805d3640ce53140ab8bbb1e2651b0d9bc"}, + {file = "pyrsistent-0.18.1-cp39-cp39-win_amd64.whl", hash = "sha256:e24a828f57e0c337c8d8bb9f6b12f09dfdf0273da25fda9e314f0b684b415a07"}, + {file = "pyrsistent-0.18.1.tar.gz", hash = "sha256:d4d61f8b993a7255ba714df3aca52700f8125289f84f704cf80916517c46eb96"}, +] +python-dateutil = [ + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, +] +python-rapidjson = [ + {file = "python-rapidjson-1.5.tar.gz", hash = "sha256:04323e63cf57f7ed927fd9bcb1861ef5ecb0d4d7213f2755969d4a1ac3c2de6f"}, + {file = "python_rapidjson-1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:18479fa7f9d23468f9b1eeeacd83698979164c80ce86d786024ac73480049e77"}, + {file = "python_rapidjson-1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27b88d73a821f772d72d13aacdae229898f4c2e4d4fdee50f82128cf9974e92f"}, + {file = "python_rapidjson-1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:3fdda4556c5c10f936b4e3bba14dd38becf8f861a536d2024b9d04ac200d9b4b"}, + {file = "python_rapidjson-1.5-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:75cbfcc038ec9db9c02322d3e43567183a1c3699ea223e8bd5082ce2d4c8a559"}, + {file = "python_rapidjson-1.5-cp310-cp310-win32.whl", hash = "sha256:af53be06737fd20c473613bda7a7c2207b75f25a078a3d6cde630bd40b125345"}, + {file = "python_rapidjson-1.5-cp310-cp310-win_amd64.whl", hash = "sha256:f378588baff7e3e7f1afb01de3912f969c727bdaaa7566c456bbebe3852a5e23"}, + {file = "python_rapidjson-1.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:bf7c508b314d27505a607fd9a7298b3dd08cd44feb1c07d064c9fb24045639b7"}, + {file = "python_rapidjson-1.5-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:def01cf09efc6069e4d1b98702d02f8962c272624e8222f6c748e32f4a8adb77"}, + {file = "python_rapidjson-1.5-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d38230f20ece88147cb94af37a4822d8587ba44a32d5de1f49db10fa0e2dc925"}, + {file = "python_rapidjson-1.5-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4e865fc060d9542a3ba50fd7a76200b2fa83e05a6a2d16f23bb101b571ca0375"}, + {file = "python_rapidjson-1.5-cp36-cp36m-win32.whl", hash = "sha256:f179435686348fe04e9cf4edeaca25830adf5c73213c9f662888a53c2191e04e"}, + {file = "python_rapidjson-1.5-cp36-cp36m-win_amd64.whl", hash = "sha256:1a743dab61e9ee1ea6e5abcf378ccd344b6c11dd80db583244ec7cc958c3e03c"}, + {file = "python_rapidjson-1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:92b25445e52230db0b9477a6c2238cf86ba08aceb8b1d026a4baa994dc7ecab6"}, + {file = "python_rapidjson-1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0e7e6f5e01ebb72b6126db2495c7f898f01b02f92b2a2632ceecfa5d98e8ff4"}, + {file = "python_rapidjson-1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:133516839bb058876df971c1dc18aaad841c973990bde2b233a76953ccb5b0d8"}, + {file = "python_rapidjson-1.5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:94623a6a759b02b949f14ac11e15d49a6d0c78003a7966b711418a37b0bbc52d"}, + {file = "python_rapidjson-1.5-cp37-cp37m-win32.whl", hash = "sha256:58ac94b595162d0a0c873456703dd851d850c9f6b07622878ad9e98215b1e5b5"}, + {file = "python_rapidjson-1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:ef8e16765ab230a958060c7639ae6617e720313faff2e5c30495dc1363e117d1"}, + {file = "python_rapidjson-1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:55f948bdb73ed577f18054ca53c5ec92e8502f68894b51b3e6899fa259a6850e"}, + {file = "python_rapidjson-1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd41c155599032aaf8c20604b71bd7f4109ef9400f8fcea04a155e8b3d3bc20f"}, + {file = "python_rapidjson-1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:389eed04f81d8952b25d1ab45cd12103cbd014e9e0f9bc249157279da3669ebd"}, + {file = "python_rapidjson-1.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:459272d561d03b308fb2cbca4312955ae8ed7d13a81c5f2d5324149433d3299d"}, + {file = "python_rapidjson-1.5-cp38-cp38-win32.whl", hash = "sha256:0890330cea15a4e0e48d0257890c2bc4700ffbe4fd3ba3c459bbf0af3a86139d"}, + {file = "python_rapidjson-1.5-cp38-cp38-win_amd64.whl", hash = "sha256:869c58ca3b1e64fe9ce612c4a05d792c6e299a206e7efcb3eb4e5fbbad938e40"}, + {file = "python_rapidjson-1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c1121e0de5179b923c62b2da843d0f110d83880ad4f8f66acaebb88a2c8fc28d"}, + {file = "python_rapidjson-1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1ce13e7bd08b8fd9d8ef8dc20f153100afc5aead1bbb0e6f5c216bd4d8d8a31"}, + {file = "python_rapidjson-1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:54c5a3df3539752ae544725f93e03250be82834f0025fe3cf95126d75acbf4aa"}, + {file = "python_rapidjson-1.5-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f83c5515e4acc0cef7d98c4623a357f54c2c4833d918477a12eb595658b4fd75"}, + {file = "python_rapidjson-1.5-cp39-cp39-win32.whl", hash = "sha256:3af7c7aad5b93913a2eda2746e1fb91ec8fc7e54596fe5b1a5740048bc4480f9"}, + {file = "python_rapidjson-1.5-cp39-cp39-win_amd64.whl", hash = "sha256:121a787596cd3e1a4913cefab734dfcec635e9ad5b33d034728e28d1514e9068"}, +] +pytz = [ + {file = "pytz-2021.3-py2.py3-none-any.whl", hash = "sha256:3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c"}, + {file = "pytz-2021.3.tar.gz", hash = "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326"}, +] +pywin32 = [ + {file = "pywin32-303-cp310-cp310-win32.whl", hash = "sha256:6fed4af057039f309263fd3285d7b8042d41507343cd5fa781d98fcc5b90e8bb"}, + {file = "pywin32-303-cp310-cp310-win_amd64.whl", hash = "sha256:51cb52c5ec6709f96c3f26e7795b0bf169ee0d8395b2c1d7eb2c029a5008ed51"}, + {file = "pywin32-303-cp311-cp311-win32.whl", hash = "sha256:d9b5d87ca944eb3aa4cd45516203ead4b37ab06b8b777c54aedc35975dec0dee"}, + {file = "pywin32-303-cp311-cp311-win_amd64.whl", hash = "sha256:fcf44032f5b14fcda86028cdf49b6ebdaea091230eb0a757282aa656e4732439"}, + {file = "pywin32-303-cp36-cp36m-win32.whl", hash = "sha256:aad484d52ec58008ca36bd4ad14a71d7dd0a99db1a4ca71072213f63bf49c7d9"}, + {file = "pywin32-303-cp36-cp36m-win_amd64.whl", hash = "sha256:2a09632916b6bb231ba49983fe989f2f625cea237219530e81a69239cd0c4559"}, + {file = "pywin32-303-cp37-cp37m-win32.whl", hash = "sha256:b1675d82bcf6dbc96363fca747bac8bff6f6e4a447a4287ac652aa4b9adc796e"}, + {file = "pywin32-303-cp37-cp37m-win_amd64.whl", hash = "sha256:c268040769b48a13367221fced6d4232ed52f044ffafeda247bd9d2c6bdc29ca"}, + {file = "pywin32-303-cp38-cp38-win32.whl", hash = "sha256:5f9ec054f5a46a0f4dfd72af2ce1372f3d5a6e4052af20b858aa7df2df7d355b"}, + {file = "pywin32-303-cp38-cp38-win_amd64.whl", hash = "sha256:793bf74fce164bcffd9d57bb13c2c15d56e43c9542a7b9687b4fccf8f8a41aba"}, + {file = "pywin32-303-cp39-cp39-win32.whl", hash = "sha256:7d3271c98434617a11921c5ccf74615794d97b079e22ed7773790822735cc352"}, + {file = "pywin32-303-cp39-cp39-win_amd64.whl", hash = "sha256:79cbb862c11b9af19bcb682891c1b91942ec2ff7de8151e2aea2e175899cda34"}, +] +pywinpty = [ + {file = "pywinpty-1.1.6-cp310-none-win_amd64.whl", hash = "sha256:5f526f21b569b5610a61e3b6126259c76da979399598e5154498582df3736ade"}, + {file = "pywinpty-1.1.6-cp36-none-win_amd64.whl", hash = "sha256:7576e14f42b31fa98b62d24ded79754d2ea4625570c016b38eb347ce158a30f2"}, + {file = "pywinpty-1.1.6-cp37-none-win_amd64.whl", hash = "sha256:979ffdb9bdbe23db3f46fc7285fd6dbb86b80c12325a50582b211b3894072354"}, + {file = "pywinpty-1.1.6-cp38-none-win_amd64.whl", hash = "sha256:2308b1fc77545427610a705799d4ead5e7f00874af3fb148a03e202437456a7e"}, + {file = "pywinpty-1.1.6-cp39-none-win_amd64.whl", hash = "sha256:c703bf569a98ab7844b9daf37e88ab86f31862754ef6910a8b3824993a525c72"}, + {file = "pywinpty-1.1.6.tar.gz", hash = "sha256:8808f07350c709119cc4464144d6e749637f98e15acc1e5d3c37db1953d2eebc"}, +] +pyzmq = [ + {file = "pyzmq-22.3.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:6b217b8f9dfb6628f74b94bdaf9f7408708cb02167d644edca33f38746ca12dd"}, + {file = "pyzmq-22.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2841997a0d85b998cbafecb4183caf51fd19c4357075dfd33eb7efea57e4c149"}, + {file = "pyzmq-22.3.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f89468059ebc519a7acde1ee50b779019535db8dcf9b8c162ef669257fef7a93"}, + {file = "pyzmq-22.3.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea12133df25e3a6918718fbb9a510c6ee5d3fdd5a346320421aac3882f4feeea"}, + {file = "pyzmq-22.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76c532fd68b93998aab92356be280deec5de8f8fe59cd28763d2cc8a58747b7f"}, + {file = "pyzmq-22.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f907c7359ce8bf7f7e63c82f75ad0223384105f5126f313400b7e8004d9b33c3"}, + {file = "pyzmq-22.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:902319cfe23366595d3fa769b5b751e6ee6750a0a64c5d9f757d624b2ac3519e"}, + {file = "pyzmq-22.3.0-cp310-cp310-win32.whl", hash = "sha256:67db33bea0a29d03e6eeec55a8190e033318cee3cbc732ba8fd939617cbf762d"}, + {file = "pyzmq-22.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:7661fc1d5cb73481cf710a1418a4e1e301ed7d5d924f91c67ba84b2a1b89defd"}, + {file = "pyzmq-22.3.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:79244b9e97948eaf38695f4b8e6fc63b14b78cc37f403c6642ba555517ac1268"}, + {file = "pyzmq-22.3.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ab888624ed68930442a3f3b0b921ad7439c51ba122dbc8c386e6487a658e4a4e"}, + {file = "pyzmq-22.3.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:18cd854b423fce44951c3a4d3e686bac8f1243d954f579e120a1714096637cc0"}, + {file = "pyzmq-22.3.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:de8df0684398bd74ad160afdc2a118ca28384ac6f5e234eb0508858d8d2d9364"}, + {file = "pyzmq-22.3.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:62bcade20813796c426409a3e7423862d50ff0639f5a2a95be4b85b09a618666"}, + {file = "pyzmq-22.3.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:ea5a79e808baef98c48c884effce05c31a0698c1057de8fc1c688891043c1ce1"}, + {file = "pyzmq-22.3.0-cp36-cp36m-win32.whl", hash = "sha256:3c1895c95be92600233e476fe283f042e71cf8f0b938aabf21b7aafa62a8dac9"}, + {file = "pyzmq-22.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:851977788b9caa8ed011f5f643d3ee8653af02c5fc723fa350db5125abf2be7b"}, + {file = "pyzmq-22.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b4ebed0977f92320f6686c96e9e8dd29eed199eb8d066936bac991afc37cbb70"}, + {file = "pyzmq-22.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42abddebe2c6a35180ca549fadc7228d23c1e1f76167c5ebc8a936b5804ea2df"}, + {file = "pyzmq-22.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c1e41b32d6f7f9c26bc731a8b529ff592f31fc8b6ef2be9fa74abd05c8a342d7"}, + {file = "pyzmq-22.3.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:be4e0f229cf3a71f9ecd633566bd6f80d9fa6afaaff5489492be63fe459ef98c"}, + {file = "pyzmq-22.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:08c4e315a76ef26eb833511ebf3fa87d182152adf43dedee8d79f998a2162a0b"}, + {file = "pyzmq-22.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:badb868fff14cfd0e200eaa845887b1011146a7d26d579aaa7f966c203736b92"}, + {file = "pyzmq-22.3.0-cp37-cp37m-win32.whl", hash = "sha256:7c58f598d9fcc52772b89a92d72bf8829c12d09746a6d2c724c5b30076c1f11d"}, + {file = "pyzmq-22.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:2b97502c16a5ec611cd52410bdfaab264997c627a46b0f98d3f666227fd1ea2d"}, + {file = "pyzmq-22.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d728b08448e5ac3e4d886b165385a262883c34b84a7fe1166277fe675e1c197a"}, + {file = "pyzmq-22.3.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:480b9931bfb08bf8b094edd4836271d4d6b44150da051547d8c7113bf947a8b0"}, + {file = "pyzmq-22.3.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7dc09198e4073e6015d9a8ea093fc348d4e59de49382476940c3dd9ae156fba8"}, + {file = "pyzmq-22.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ca6cd58f62a2751728016d40082008d3b3412a7f28ddfb4a2f0d3c130f69e74"}, + {file = "pyzmq-22.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:468bd59a588e276961a918a3060948ae68f6ff5a7fa10bb2f9160c18fe341067"}, + {file = "pyzmq-22.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c88fa7410e9fc471e0858638f403739ee869924dd8e4ae26748496466e27ac59"}, + {file = "pyzmq-22.3.0-cp38-cp38-win32.whl", hash = "sha256:c0f84360dcca3481e8674393bdf931f9f10470988f87311b19d23cda869bb6b7"}, + {file = "pyzmq-22.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:f762442bab706fd874064ca218b33a1d8e40d4938e96c24dafd9b12e28017f45"}, + {file = "pyzmq-22.3.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:954e73c9cd4d6ae319f1c936ad159072b6d356a92dcbbabfd6e6204b9a79d356"}, + {file = "pyzmq-22.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f43b4a2e6218371dd4f41e547bd919ceeb6ebf4abf31a7a0669cd11cd91ea973"}, + {file = "pyzmq-22.3.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:acebba1a23fb9d72b42471c3771b6f2f18dcd46df77482612054bd45c07dfa36"}, + {file = "pyzmq-22.3.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cf98fd7a6c8aaa08dbc699ffae33fd71175696d78028281bc7b832b26f00ca57"}, + {file = "pyzmq-22.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d072f7dfbdb184f0786d63bda26e8a0882041b1e393fbe98940395f7fab4c5e2"}, + {file = "pyzmq-22.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:53f4fd13976789ffafedd4d46f954c7bb01146121812b72b4ddca286034df966"}, + {file = "pyzmq-22.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d1b5d457acbadcf8b27561deeaa386b0217f47626b29672fa7bd31deb6e91e1b"}, + {file = "pyzmq-22.3.0-cp39-cp39-win32.whl", hash = "sha256:e6a02cf7271ee94674a44f4e62aa061d2d049001c844657740e156596298b70b"}, + {file = "pyzmq-22.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:d3dcb5548ead4f1123851a5ced467791f6986d68c656bc63bfff1bf9e36671e2"}, + {file = "pyzmq-22.3.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3a4c9886d61d386b2b493377d980f502186cd71d501fffdba52bd2a0880cef4f"}, + {file = "pyzmq-22.3.0-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:80e043a89c6cadefd3a0712f8a1322038e819ebe9dbac7eca3bce1721bcb63bf"}, + {file = "pyzmq-22.3.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1621e7a2af72cced1f6ec8ca8ca91d0f76ac236ab2e8828ac8fe909512d566cb"}, + {file = "pyzmq-22.3.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:d6157793719de168b199194f6b6173f0ccd3bf3499e6870fac17086072e39115"}, + {file = "pyzmq-22.3.0.tar.gz", hash = "sha256:8eddc033e716f8c91c6a2112f0a8ebc5e00532b4a6ae1eb0ccc48e027f9c671c"}, +] +qcs-api-client = [ + {file = "qcs-api-client-0.8.0.tar.gz", hash = "sha256:68118137337b7ba1688d070bd276c40081938e145759b500699fcc2b941a0fb0"}, + {file = "qcs_api_client-0.8.0-py3-none-any.whl", hash = "sha256:93d741211fdde5b14246a0a07ac00bd13876a37ce62c8ca6fa6b544a9dc41b4a"}, +] +qdldl = [ + {file = "qdldl-0.1.5.post0-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:787d59b4301608e96bdf32ab3a572d9f41b3ea08581774826720986e18da261e"}, + {file = "qdldl-0.1.5.post0-cp35-cp35m-manylinux2014_x86_64.whl", hash = "sha256:223dd49f4aa625c727c3053e9f62814fab2f929e0575b34dd1f38e66b536a849"}, + {file = "qdldl-0.1.5.post0-cp35-cp35m-win_amd64.whl", hash = "sha256:cd0090d5512a8e386534a755f9ebd8be82087d401746cebbfb9f9faa21073c39"}, + {file = "qdldl-0.1.5.post0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:3e5e2ee6b45dd655120ca8d6645331c800c494ce765bc0674714ba86e1ebec7d"}, + {file = "qdldl-0.1.5.post0-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:a2ab0d4618d5516101fc0ce99c873df61a085c3d7cb4d8347d5eca818795e48f"}, + {file = "qdldl-0.1.5.post0-cp36-cp36m-win_amd64.whl", hash = "sha256:ac7a2891628554de6260132fa090c5b00cf32ae083ece4991a43b887ec6f2114"}, + {file = "qdldl-0.1.5.post0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:817a226b2450e56c50f61a92b727c69f50a4d043876e5f1bcdff096c5a82bc37"}, + {file = "qdldl-0.1.5.post0-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:c10f91dda6a422a6d879668fd293132c8939431fffe64abd9700dce170a3aec4"}, + {file = "qdldl-0.1.5.post0-cp37-cp37m-win_amd64.whl", hash = "sha256:e70c57ea65d0bb09708bc9ecafd4fb4b797e64af4da475404e6bcf5a2cc92596"}, + {file = "qdldl-0.1.5.post0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:64f531ef2a12cc77be85045cdffdb2fe339244c73fc07aebe49977541bfc7e79"}, + {file = "qdldl-0.1.5.post0-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:cff34b89258a3c9b1b398f1c8eeb480a9c4ae2ba14c4ffc8c78cdb123dab11c6"}, + {file = "qdldl-0.1.5.post0-cp38-cp38-win_amd64.whl", hash = "sha256:3a7ec584aaddff7036d22013c911132572f3d59c65ec6bf7e32beb01765accc4"}, + {file = "qdldl-0.1.5.post0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a7c086ae21a2b2e43b31ac6a5024c79dadf16e7c3152eda9e3263cefe1675e26"}, + {file = "qdldl-0.1.5.post0-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:2c09f4b1a1c6f3a0579af004443417e084491e7c844ff9fb73170bb5d43f70b5"}, + {file = "qdldl-0.1.5.post0-cp39-cp39-win_amd64.whl", hash = "sha256:640cab781f87c2f1c04ada65615b3d1d136d319c4595176f37e2e3c99149108f"}, + {file = "qdldl-0.1.5.post0.tar.gz", hash = "sha256:c392c7427651d8b226423c7aba4a0f2338a1f38a4bbdabac6bc4afd8bc934f06"}, +] +requests = [ + {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, + {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, +] +retry = [ + {file = "retry-0.9.2-py2.py3-none-any.whl", hash = "sha256:ccddf89761fa2c726ab29391837d4327f819ea14d244c232a1d24c67a2f98606"}, + {file = "retry-0.9.2.tar.gz", hash = "sha256:f8bfa8b99b69c4506d6f5bd3b0aabf77f98cdb17f3c9fc3f5ca820033336fba4"}, +] +retrying = [ + {file = "retrying-1.3.3.tar.gz", hash = "sha256:08c039560a6da2fe4f2c426d0766e284d3b736e355f8dd24b37367b0bb41973b"}, +] +rfc3339 = [ + {file = "rfc3339-6.2-py3-none-any.whl", hash = "sha256:f44316b21b21db90a625cde04ebb0d46268f153e6093021fa5893e92a96f58a3"}, + {file = "rfc3339-6.2.tar.gz", hash = "sha256:d53c3b5eefaef892b7240ba2a91fef012e86faa4d0a0ca782359c490e00ad4d0"}, +] +rfc3986 = [ + {file = "rfc3986-1.5.0-py2.py3-none-any.whl", hash = "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97"}, + {file = "rfc3986-1.5.0.tar.gz", hash = "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835"}, +] +rpcq = [ + {file = "rpcq-3.9.2.tar.gz", hash = "sha256:690c6e5ca8b2a6831c4f34e527b3adb276ce8656f43e851dfd90bc58961f5a69"}, +] +"ruamel.yaml" = [ + {file = "ruamel.yaml-0.17.20-py3-none-any.whl", hash = "sha256:810eef9c46523a3f77479c66267a4708255ebe806a2d540078408c2227f011af"}, + {file = "ruamel.yaml-0.17.20.tar.gz", hash = "sha256:4b8a33c1efb2b443a93fcaafcfa4d2e445f8e8c29c528d9f5cdafb7cc9e4004c"}, +] +"ruamel.yaml.clib" = [ + {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6e7be2c5bcb297f5b82fee9c665eb2eb7001d1050deaba8471842979293a80b0"}, + {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:221eca6f35076c6ae472a531afa1c223b9c29377e62936f61bc8e6e8bdc5f9e7"}, + {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-win32.whl", hash = "sha256:1070ba9dd7f9370d0513d649420c3b362ac2d687fe78c6e888f5b12bf8bc7bee"}, + {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:77df077d32921ad46f34816a9a16e6356d8100374579bc35e15bab5d4e9377de"}, + {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:cfdb9389d888c5b74af297e51ce357b800dd844898af9d4a547ffc143fa56751"}, + {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:7b2927e92feb51d830f531de4ccb11b320255ee95e791022555971c466af4527"}, + {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-win32.whl", hash = "sha256:ada3f400d9923a190ea8b59c8f60680c4ef8a4b0dfae134d2f2ff68429adfab5"}, + {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-win_amd64.whl", hash = "sha256:de9c6b8a1ba52919ae919f3ae96abb72b994dd0350226e28f3686cb4f142165c"}, + {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d67f273097c368265a7b81e152e07fb90ed395df6e552b9fa858c6d2c9f42502"}, + {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:72a2b8b2ff0a627496aad76f37a652bcef400fd861721744201ef1b45199ab78"}, + {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-win32.whl", hash = "sha256:9efef4aab5353387b07f6b22ace0867032b900d8e91674b5d8ea9150db5cae94"}, + {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-win_amd64.whl", hash = "sha256:846fc8336443106fe23f9b6d6b8c14a53d38cef9a375149d61f99d78782ea468"}, + {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0847201b767447fc33b9c235780d3aa90357d20dd6108b92be544427bea197dd"}, + {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:78988ed190206672da0f5d50c61afef8f67daa718d614377dcd5e3ed85ab4a99"}, + {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-win32.whl", hash = "sha256:a49e0161897901d1ac9c4a79984b8410f450565bbad64dbfcbf76152743a0cdb"}, + {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-win_amd64.whl", hash = "sha256:bf75d28fa071645c529b5474a550a44686821decebdd00e21127ef1fd566eabe"}, + {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a32f8d81ea0c6173ab1b3da956869114cae53ba1e9f72374032e33ba3118c233"}, + {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7f7ecb53ae6848f959db6ae93bdff1740e651809780822270eab111500842a84"}, + {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-win32.whl", hash = "sha256:89221ec6d6026f8ae859c09b9718799fea22c0e8da8b766b0b2c9a9ba2db326b"}, + {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-win_amd64.whl", hash = "sha256:31ea73e564a7b5fbbe8188ab8b334393e06d997914a4e184975348f204790277"}, + {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dc6a613d6c74eef5a14a214d433d06291526145431c3b964f5e16529b1842bed"}, + {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:1866cf2c284a03b9524a5cc00daca56d80057c5ce3cdc86a52020f4c720856f0"}, + {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-win32.whl", hash = "sha256:3fb9575a5acd13031c57a62cc7823e5d2ff8bc3835ba4d94b921b4e6ee664104"}, + {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-win_amd64.whl", hash = "sha256:825d5fccef6da42f3c8eccd4281af399f21c02b32d98e113dbc631ea6a6ecbc7"}, + {file = "ruamel.yaml.clib-0.2.6.tar.gz", hash = "sha256:4ff604ce439abb20794f05613c374759ce10e3595d1867764dd1ae675b85acbd"}, +] +scipy = [ + {file = "scipy-1.6.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a15a1f3fc0abff33e792d6049161b7795909b40b97c6cc2934ed54384017ab76"}, + {file = "scipy-1.6.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:e79570979ccdc3d165456dd62041d9556fb9733b86b4b6d818af7a0afc15f092"}, + {file = "scipy-1.6.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:a423533c55fec61456dedee7b6ee7dce0bb6bfa395424ea374d25afa262be261"}, + {file = "scipy-1.6.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:33d6b7df40d197bdd3049d64e8e680227151673465e5d85723b3b8f6b15a6ced"}, + {file = "scipy-1.6.1-cp37-cp37m-win32.whl", hash = "sha256:6725e3fbb47da428794f243864f2297462e9ee448297c93ed1dcbc44335feb78"}, + {file = "scipy-1.6.1-cp37-cp37m-win_amd64.whl", hash = "sha256:5fa9c6530b1661f1370bcd332a1e62ca7881785cc0f80c0d559b636567fab63c"}, + {file = "scipy-1.6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bd50daf727f7c195e26f27467c85ce653d41df4358a25b32434a50d8870fc519"}, + {file = "scipy-1.6.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:f46dd15335e8a320b0fb4685f58b7471702234cba8bb3442b69a3e1dc329c345"}, + {file = "scipy-1.6.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:0e5b0ccf63155d90da576edd2768b66fb276446c371b73841e3503be1d63fb5d"}, + {file = "scipy-1.6.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:2481efbb3740977e3c831edfd0bd9867be26387cacf24eb5e366a6a374d3d00d"}, + {file = "scipy-1.6.1-cp38-cp38-win32.whl", hash = "sha256:68cb4c424112cd4be886b4d979c5497fba190714085f46b8ae67a5e4416c32b4"}, + {file = "scipy-1.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:5f331eeed0297232d2e6eea51b54e8278ed8bb10b099f69c44e2558c090d06bf"}, + {file = "scipy-1.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0c8a51d33556bf70367452d4d601d1742c0e806cd0194785914daf19775f0e67"}, + {file = "scipy-1.6.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:83bf7c16245c15bc58ee76c5418e46ea1811edcc2e2b03041b804e46084ab627"}, + {file = "scipy-1.6.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:794e768cc5f779736593046c9714e0f3a5940bc6dcc1dba885ad64cbfb28e9f0"}, + {file = "scipy-1.6.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:5da5471aed911fe7e52b86bf9ea32fb55ae93e2f0fac66c32e58897cfb02fa07"}, + {file = "scipy-1.6.1-cp39-cp39-win32.whl", hash = "sha256:8e403a337749ed40af60e537cc4d4c03febddcc56cd26e774c9b1b600a70d3e4"}, + {file = "scipy-1.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:a5193a098ae9f29af283dcf0041f762601faf2e595c0db1da929875b7570353f"}, + {file = "scipy-1.6.1.tar.gz", hash = "sha256:c4fceb864890b6168e79b0e714c585dbe2fd4222768ee90bc1aa0f8218691b11"}, +] +scs = [ + {file = "scs-3.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b871831d1b5f4369ca02eed1677e5c1c3961ef87c4795a25c310ad632b1cbe80"}, + {file = "scs-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a31f52a547f465a5a99480b071f20ee3b3938e906c3fca9c73be4460392bc4cc"}, + {file = "scs-3.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:202312a39c03b9feb55e970c96d0dd641a65d116bcb14ad087c6e62259df3196"}, + {file = "scs-3.1.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:ff3a9a0ddcab4ec16bb82673e315e815ccafde32bf54e5d026066729684285e5"}, + {file = "scs-3.1.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73ff5cf41ace65ae846cb001d880c947451965ca8487483c13d743986866a84e"}, + {file = "scs-3.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:c1b67f7c87f833361ab0e1cdb4d58986b19b7c68402f40fcb4065e551ce67db9"}, + {file = "scs-3.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dc6f976d1e01e575ac49d15fe085687a819cc23d742eb668ef19b8125e231cfd"}, + {file = "scs-3.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:722a831358ba7dfc2ea0dfe276b468f907dce3f90967573c08221191b7fc331f"}, + {file = "scs-3.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:a7ad6937e9d9219b7b4a736998e6c26813d7597c6bd8cd46d31e1e6192c04f02"}, + {file = "scs-3.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e77360b86b644c44549856c157f3c75c94b270ee6898031600223cf3479bf325"}, + {file = "scs-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:340f7eedfe28da2676160c2cbed1307a0aef69d176ea8e00b4c4d7779a5788ab"}, + {file = "scs-3.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:d8fa5a8913cc4f7e4b2524a90f006c12fcaedb6b3cd2b92b920e680b15ccfea9"}, + {file = "scs-3.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c0f1fe73b831787aa185257b59a2eb1ce863f620609aca3a78757d10b17cdfb0"}, + {file = "scs-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9fc5c333995dc40806f7052a58b0b1c82c8f13eb828a48a23c3cee384057739"}, + {file = "scs-3.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:c5c6b34aaa71ae0eb3b2841131d451107d20d609a17ae632cb8506850d2528a3"}, + {file = "scs-3.1.0.tar.gz", hash = "sha256:1693fc9fa4f9dbec7b3e8d357fdcee8e53262997583479f5c4e2dbca39c7065a"}, +] +seaborn = [ + {file = "seaborn-0.11.2-py3-none-any.whl", hash = "sha256:85a6baa9b55f81a0623abddc4a26b334653ff4c6b18c418361de19dbba0ef283"}, + {file = "seaborn-0.11.2.tar.gz", hash = "sha256:cf45e9286d40826864be0e3c066f98536982baf701a7caa386511792d61ff4f6"}, +] +send2trash = [ + {file = "Send2Trash-1.8.0-py3-none-any.whl", hash = "sha256:f20eaadfdb517eaca5ce077640cb261c7d2698385a6a0f072a4a5447fd49fa08"}, + {file = "Send2Trash-1.8.0.tar.gz", hash = "sha256:d2c24762fd3759860a0aff155e45871447ea58d2be6bdd39b5c8f966a0c99c2d"}, +] +setuptools-scm = [ + {file = "setuptools_scm-6.4.2-py3-none-any.whl", hash = "sha256:acea13255093849de7ccb11af9e1fb8bde7067783450cee9ef7a93139bddf6d4"}, + {file = "setuptools_scm-6.4.2.tar.gz", hash = "sha256:6833ac65c6ed9711a4d5d2266f8024cfa07c533a0e55f4c12f6eff280a5a9e30"}, +] +six = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] +smmap = [ + {file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"}, + {file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"}, +] +sniffio = [ + {file = "sniffio-1.2.0-py3-none-any.whl", hash = "sha256:471b71698eac1c2112a40ce2752bb2f4a4814c22a54a3eed3676bc0f5ca9f663"}, + {file = "sniffio-1.2.0.tar.gz", hash = "sha256:c4666eecec1d3f50960c6bdf61ab7bc350648da6c126e3cf6898d8cd4ddcd3de"}, +] +sympy = [ + {file = "sympy-1.9-py3-none-any.whl", hash = "sha256:8bc5de4608b7aa4e7ffd1b25452ae87ccc5f6ca667c661aafb854a1ade337d0c"}, + {file = "sympy-1.9.tar.gz", hash = "sha256:c7a880e229df96759f955d4f3970d4cabce79f60f5b18830c08b90ce77cd5fdc"}, +] +terminado = [ + {file = "terminado-0.13.1-py3-none-any.whl", hash = "sha256:f446b522b50a7aa68b5def0a02893978fb48cb82298b0ebdae13003c6ee6f198"}, + {file = "terminado-0.13.1.tar.gz", hash = "sha256:5b82b5c6e991f0705a76f961f43262a7fb1e55b093c16dca83f16384a7f39b7b"}, +] +testpath = [ + {file = "testpath-0.5.0-py3-none-any.whl", hash = "sha256:8044f9a0bab6567fc644a3593164e872543bb44225b0e24846e2c89237937589"}, + {file = "testpath-0.5.0.tar.gz", hash = "sha256:1acf7a0bcd3004ae8357409fc33751e16d37ccc650921da1094a86581ad1e417"}, +] +toml = [ + {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, + {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, +] +tomli = [ + {file = "tomli-2.0.0-py3-none-any.whl", hash = "sha256:b5bde28da1fed24b9bd1d4d2b8cba62300bfb4ec9a6187a957e8ddb9434c5224"}, + {file = "tomli-2.0.0.tar.gz", hash = "sha256:c292c34f58502a1eb2bbb9f5bbc9a5ebc37bee10ffb8c2d6bbdfa8eb13cc14e1"}, +] +tornado = [ + {file = "tornado-6.1-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:d371e811d6b156d82aa5f9a4e08b58debf97c302a35714f6f45e35139c332e32"}, + {file = "tornado-6.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:0d321a39c36e5f2c4ff12b4ed58d41390460f798422c4504e09eb5678e09998c"}, + {file = "tornado-6.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9de9e5188a782be6b1ce866e8a51bc76a0fbaa0e16613823fc38e4fc2556ad05"}, + {file = "tornado-6.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:61b32d06ae8a036a6607805e6720ef00a3c98207038444ba7fd3d169cd998910"}, + {file = "tornado-6.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:3e63498f680547ed24d2c71e6497f24bca791aca2fe116dbc2bd0ac7f191691b"}, + {file = "tornado-6.1-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:6c77c9937962577a6a76917845d06af6ab9197702a42e1346d8ae2e76b5e3675"}, + {file = "tornado-6.1-cp35-cp35m-win32.whl", hash = "sha256:6286efab1ed6e74b7028327365cf7346b1d777d63ab30e21a0f4d5b275fc17d5"}, + {file = "tornado-6.1-cp35-cp35m-win_amd64.whl", hash = "sha256:fa2ba70284fa42c2a5ecb35e322e68823288a4251f9ba9cc77be04ae15eada68"}, + {file = "tornado-6.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:0a00ff4561e2929a2c37ce706cb8233b7907e0cdc22eab98888aca5dd3775feb"}, + {file = "tornado-6.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:748290bf9112b581c525e6e6d3820621ff020ed95af6f17fedef416b27ed564c"}, + {file = "tornado-6.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:e385b637ac3acaae8022e7e47dfa7b83d3620e432e3ecb9a3f7f58f150e50921"}, + {file = "tornado-6.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:25ad220258349a12ae87ede08a7b04aca51237721f63b1808d39bdb4b2164558"}, + {file = "tornado-6.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:65d98939f1a2e74b58839f8c4dab3b6b3c1ce84972ae712be02845e65391ac7c"}, + {file = "tornado-6.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:e519d64089b0876c7b467274468709dadf11e41d65f63bba207e04217f47c085"}, + {file = "tornado-6.1-cp36-cp36m-win32.whl", hash = "sha256:b87936fd2c317b6ee08a5741ea06b9d11a6074ef4cc42e031bc6403f82a32575"}, + {file = "tornado-6.1-cp36-cp36m-win_amd64.whl", hash = "sha256:cc0ee35043162abbf717b7df924597ade8e5395e7b66d18270116f8745ceb795"}, + {file = "tornado-6.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7250a3fa399f08ec9cb3f7b1b987955d17e044f1ade821b32e5f435130250d7f"}, + {file = "tornado-6.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:ed3ad863b1b40cd1d4bd21e7498329ccaece75db5a5bf58cd3c9f130843e7102"}, + {file = "tornado-6.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:dcef026f608f678c118779cd6591c8af6e9b4155c44e0d1bc0c87c036fb8c8c4"}, + {file = "tornado-6.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:70dec29e8ac485dbf57481baee40781c63e381bebea080991893cd297742b8fd"}, + {file = "tornado-6.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:d3f7594930c423fd9f5d1a76bee85a2c36fd8b4b16921cae7e965f22575e9c01"}, + {file = "tornado-6.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:3447475585bae2e77ecb832fc0300c3695516a47d46cefa0528181a34c5b9d3d"}, + {file = "tornado-6.1-cp37-cp37m-win32.whl", hash = "sha256:e7229e60ac41a1202444497ddde70a48d33909e484f96eb0da9baf8dc68541df"}, + {file = "tornado-6.1-cp37-cp37m-win_amd64.whl", hash = "sha256:cb5ec8eead331e3bb4ce8066cf06d2dfef1bfb1b2a73082dfe8a161301b76e37"}, + {file = "tornado-6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:20241b3cb4f425e971cb0a8e4ffc9b0a861530ae3c52f2b0434e6c1b57e9fd95"}, + {file = "tornado-6.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:c77da1263aa361938476f04c4b6c8916001b90b2c2fdd92d8d535e1af48fba5a"}, + {file = "tornado-6.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:fba85b6cd9c39be262fcd23865652920832b61583de2a2ca907dbd8e8a8c81e5"}, + {file = "tornado-6.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:1e8225a1070cd8eec59a996c43229fe8f95689cb16e552d130b9793cb570a288"}, + {file = "tornado-6.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:d14d30e7f46a0476efb0deb5b61343b1526f73ebb5ed84f23dc794bdb88f9d9f"}, + {file = "tornado-6.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:8f959b26f2634a091bb42241c3ed8d3cedb506e7c27b8dd5c7b9f745318ddbb6"}, + {file = "tornado-6.1-cp38-cp38-win32.whl", hash = "sha256:34ca2dac9e4d7afb0bed4677512e36a52f09caa6fded70b4e3e1c89dbd92c326"}, + {file = "tornado-6.1-cp38-cp38-win_amd64.whl", hash = "sha256:6196a5c39286cc37c024cd78834fb9345e464525d8991c21e908cc046d1cc02c"}, + {file = "tornado-6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f0ba29bafd8e7e22920567ce0d232c26d4d47c8b5cf4ed7b562b5db39fa199c5"}, + {file = "tornado-6.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:33892118b165401f291070100d6d09359ca74addda679b60390b09f8ef325ffe"}, + {file = "tornado-6.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:7da13da6f985aab7f6f28debab00c67ff9cbacd588e8477034c0652ac141feea"}, + {file = "tornado-6.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:e0791ac58d91ac58f694d8d2957884df8e4e2f6687cdf367ef7eb7497f79eaa2"}, + {file = "tornado-6.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:66324e4e1beede9ac79e60f88de548da58b1f8ab4b2f1354d8375774f997e6c0"}, + {file = "tornado-6.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:a48900ecea1cbb71b8c71c620dee15b62f85f7c14189bdeee54966fbd9a0c5bd"}, + {file = "tornado-6.1-cp39-cp39-win32.whl", hash = "sha256:d3d20ea5782ba63ed13bc2b8c291a053c8d807a8fa927d941bd718468f7b950c"}, + {file = "tornado-6.1-cp39-cp39-win_amd64.whl", hash = "sha256:548430be2740e327b3fe0201abe471f314741efcb0067ec4f2d7dcfb4825f3e4"}, + {file = "tornado-6.1.tar.gz", hash = "sha256:33c6e81d7bd55b468d2e793517c909b139960b6c790a60b7991b9b6b76fb9791"}, +] +tqdm = [ + {file = "tqdm-4.62.3-py2.py3-none-any.whl", hash = "sha256:8dd278a422499cd6b727e6ae4061c40b48fce8b76d1ccbf5d34fca9b7f925b0c"}, + {file = "tqdm-4.62.3.tar.gz", hash = "sha256:d359de7217506c9851b7869f3708d8ee53ed70a1b8edbba4dbcb47442592920d"}, +] +traitlets = [ + {file = "traitlets-5.1.1-py3-none-any.whl", hash = "sha256:2d313cc50a42cd6c277e7d7dc8d4d7fedd06a2c215f78766ae7b1a66277e0033"}, + {file = "traitlets-5.1.1.tar.gz", hash = "sha256:059f456c5a7c1c82b98c2e8c799f39c9b8128f6d0d46941ee118daace9eb70c7"}, +] +typing-extensions = [ + {file = "typing_extensions-4.0.1-py3-none-any.whl", hash = "sha256:7f001e5ac290a0c0401508864c7ec868be4e701886d5b573a9528ed3973d9d3b"}, + {file = "typing_extensions-4.0.1.tar.gz", hash = "sha256:4ca091dea149f945ec56afb48dae714f21e8692ef22a395223bcd328961b6a0e"}, +] +uncertainties = [ + {file = "uncertainties-3.1.6-py2.py3-none-any.whl", hash = "sha256:cb4a66d5ceda006475ec845bf43ee8956c26138b08f93c41851c25a4ffe19a33"}, + {file = "uncertainties-3.1.6.tar.gz", hash = "sha256:7c4db5aaafd227e95485b61fba5d235dc8133aeecd98f8fc1224c038ce063e2d"}, +] +urllib3 = [ + {file = "urllib3-1.26.8-py2.py3-none-any.whl", hash = "sha256:000ca7f471a233c2251c6c7023ee85305721bfdf18621ebff4fd17a8653427ed"}, + {file = "urllib3-1.26.8.tar.gz", hash = "sha256:0e7c33d9a63e7ddfcb86780aac87befc2fbddf46c58dbb487e0855f7ceec283c"}, +] +wcwidth = [ + {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, + {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, +] +webencodings = [ + {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, + {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, +] +websocket-client = [ + {file = "websocket-client-1.2.3.tar.gz", hash = "sha256:1315816c0acc508997eb3ae03b9d3ff619c9d12d544c9a9b553704b1cc4f6af5"}, + {file = "websocket_client-1.2.3-py3-none-any.whl", hash = "sha256:2eed4cc58e4d65613ed6114af2f380f7910ff416fc8c46947f6e76b6815f56c0"}, +] +zipp = [ + {file = "zipp-3.7.0-py3-none-any.whl", hash = "sha256:b47250dd24f92b7dd6a0a8fc5244da14608f3ca90a5efcd37a3b1642fac9a375"}, + {file = "zipp-3.7.0.tar.gz", hash = "sha256:9f50f446828eb9d45b267433fd3e9da8d801f614129124863f9c51ebceafb87d"}, +] diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..ea7b748 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,21 @@ +[tool.poetry] +name = "forest-notebook" +version = "3.0.0" +description = "AboutInteractive quantum programming with Rigetti QCS, Quil, & Jupyter." +authors = ["kalzoo <22137047+kalzoo@users.noreply.github.com>"] +license = "Apache-2.0" + +[tool.poetry.dependencies] +python = "^3.7.1" +seaborn = "^0.11.2" +forest-benchmarking = "0.8" +matplotlib = "^3.5.1" +pandas = "^1.3.0" +notebook = "^6.4.8" +jupyterlab = "^3.2.9" + +[tool.poetry.dev-dependencies] + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 57bd5d1..0000000 --- a/requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -forest-benchmarking==0.8.* -matplotlib -pandas diff --git a/tutorials/BellStateTomography.ipynb b/tutorials/BellStateTomography.ipynb new file mode 100644 index 0000000..929449e --- /dev/null +++ b/tutorials/BellStateTomography.ipynb @@ -0,0 +1,528 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Bell State Tomography via Parametric Compilation\n", + "\n", + "This notebook walks through how to run **Bell state tomography** on a noisy QVM, using _parametric compilation_ and pyQuil's `Experiment` framework. This notebook is copied partially from the [rigetti/qcs-paper](https://github.com/rigetti/qcs-paper) repository, where it was used to produce **Figure A2** from [_A quantum-classical cloud platform optimized for variational hybrid algorithms_](https://scirate.com/arxiv/2001.04449)." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import itertools\n", + "from typing import Generator, List\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "from matplotlib.cm import ScalarMappable\n", + "from matplotlib.colors import LinearSegmentedColormap, Normalize\n", + "from scipy.linalg import pinv\n", + "\n", + "import pyquil.simulation.matrices as psm\n", + "from forest.benchmarking.distance_measures import fidelity\n", + "from forest.benchmarking.operator_tools.superoperator_transformations import unvec, vec\n", + "from forest.benchmarking.utils import all_traceless_pauli_terms\n", + "from pyquil.compatibility.v2 import get_qc\n", + "from pyquil import Program\n", + "from pyquil.experiment import (\n", + " Experiment, ExperimentResult, ExperimentSetting, correct_experiment_result, zeros_state\n", + ")\n", + "from pyquil.gates import CNOT, H, RESET\n", + "from pyquil.paulis import PauliTerm\n", + "from pyquil.simulation.tools import lifted_pauli" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Simulate the Data on a Noisy QVM" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "qubits = (0, 1)\n", + "shots = 500\n", + "qc = get_qc(\"2q-noisy-qvm\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Define Bell state tomography `Experiment`" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RESET\n", + "H 0\n", + "CNOT 0 1\n", + "\n" + ] + } + ], + "source": [ + "p = Program()\n", + "p += RESET()\n", + "p += H(qubits[0])\n", + "p += CNOT(qubits[0], qubits[1])\n", + "p.wrap_in_numshots_loop(shots)\n", + "print(p)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def state_tomo_settings(qubits: List[int]) -> Generator[ExperimentSetting, None, None]:\n", + " \"\"\"\n", + " Adapted from forest.benchmarking.tomography._state_tomo_settings,\n", + " to use pyquil.experiment.ExperimentSetting objects instead.\n", + " \"\"\"\n", + " list_of_terms = all_traceless_pauli_terms(qubits)\n", + " for obs in all_traceless_pauli_terms(qubits):\n", + " yield ExperimentSetting(\n", + " in_state=zeros_state(qubits),\n", + " out_operator=obs,\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[ExperimentSetting[Z0_0 * Z0_1→(1+0j)*X1],\n", + " ExperimentSetting[Z0_0 * Z0_1→(1+0j)*Y1],\n", + " ExperimentSetting[Z0_0 * Z0_1→(1+0j)*Z1],\n", + " ExperimentSetting[Z0_0 * Z0_1→(1+0j)*X0],\n", + " ExperimentSetting[Z0_0 * Z0_1→(1+0j)*X0X1],\n", + " ExperimentSetting[Z0_0 * Z0_1→(1+0j)*X0Y1],\n", + " ExperimentSetting[Z0_0 * Z0_1→(1+0j)*X0Z1],\n", + " ExperimentSetting[Z0_0 * Z0_1→(1+0j)*Y0],\n", + " ExperimentSetting[Z0_0 * Z0_1→(1+0j)*Y0X1],\n", + " ExperimentSetting[Z0_0 * Z0_1→(1+0j)*Y0Y1],\n", + " ExperimentSetting[Z0_0 * Z0_1→(1+0j)*Y0Z1],\n", + " ExperimentSetting[Z0_0 * Z0_1→(1+0j)*Z0],\n", + " ExperimentSetting[Z0_0 * Z0_1→(1+0j)*Z0X1],\n", + " ExperimentSetting[Z0_0 * Z0_1→(1+0j)*Z0Y1],\n", + " ExperimentSetting[Z0_0 * Z0_1→(1+0j)*Z0Z1]]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "state_tomography_settings = list(state_tomo_settings(qubits))\n", + "state_tomography_settings" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "shots: 500\n", + "active reset: enabled\n", + "symmetrization: -1 (exhaustive)\n", + "calibration: 1 (plus_eigenstate)\n", + "program:\n", + " H 0\n", + " CNOT 0 1\n", + "settings:\n", + " 0: Z0_0 * Z0_1→(1+0j)*X1\n", + " 1: Z0_0 * Z0_1→(1+0j)*Y1\n", + " 2: Z0_0 * Z0_1→(1+0j)*Z1\n", + " 3: Z0_0 * Z0_1→(1+0j)*X0\n", + " 4: Z0_0 * Z0_1→(1+0j)*X0X1\n", + " 5: Z0_0 * Z0_1→(1+0j)*X0Y1\n", + " 6: Z0_0 * Z0_1→(1+0j)*X0Z1\n", + " 7: Z0_0 * Z0_1→(1+0j)*Y0\n", + " 8: Z0_0 * Z0_1→(1+0j)*Y0X1\n", + " 9: Z0_0 * Z0_1→(1+0j)*Y0Y1\n", + " 10: Z0_0 * Z0_1→(1+0j)*Y0Z1\n", + " 11: Z0_0 * Z0_1→(1+0j)*Z0\n", + " 12: Z0_0 * Z0_1→(1+0j)*Z0X1\n", + " 13: Z0_0 * Z0_1→(1+0j)*Z0Y1\n", + " 14: Z0_0 * Z0_1→(1+0j)*Z0Z1" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bell_state_tomography = Experiment(settings=state_tomography_settings, program=p)\n", + "bell_state_tomography" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Collect data using readout symmetrization" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 731 ms, sys: 29.8 ms, total: 761 ms\n", + "Wall time: 5.43 s\n" + ] + }, + { + "data": { + "text/plain": [ + "[ExperimentResult[Z0_0 * Z0_1→(1+0j)*X1: -0.052 +- 0.0315957955160856],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*Y1: 0.016 +- 0.03163454985841817],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*Z1: -0.02 +- 0.031632271505546365],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*X0: -0.022 +- 0.03163094239058514],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*X0X1: 0.751 +- 0.014768498714396753],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*X0Y1: -0.021 +- 0.02236133973529714],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*X0Z1: 0.038 +- 0.02235011775991216],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*Y0: -0.008 +- 0.03163758740702169],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*Y0X1: -0.022 +- 0.022360858749207308],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*Y0Y1: -0.774 +- 0.014162001311275547],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*Y0Z1: 0.029 +- 0.02235686504649866],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*Z0: 0.006 +- 0.031638030358493635],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*Z0X1: -0.011 +- 0.02236491884173512],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*Z0Y1: 0.029 +- 0.02235686504649866],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*Z0Z1: 0.744 +- 0.014944687077216367]]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%%time\n", + "results = qc.experiment(bell_state_tomography)\n", + "results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Perform readout calibration on all observables required for 2Q state tomography" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 701 ms, sys: 34.1 ms, total: 735 ms\n", + "Wall time: 4.76 s\n" + ] + }, + { + "data": { + "text/plain": [ + "[ExperimentResult[X0_1→(1+0j)*X1: 0.904 +- 0.013526528267333304],\n", + " ExperimentResult[Y0_1→(1+0j)*Y1: 0.882 +- 0.014909671300813386],\n", + " ExperimentResult[Z0_1→(1+0j)*Z1: 0.882 +- 0.014909671300813386],\n", + " ExperimentResult[X0_0→(1+0j)*X0: 0.88 +- 0.015027502314949943],\n", + " ExperimentResult[X0_0 * X0_1→(1+0j)*X0X1: 0.784 +- 0.01388410545163411],\n", + " ExperimentResult[X0_0 * Y0_1→(1+0j)*X0Y1: 0.756 +- 0.014640326826433635],\n", + " ExperimentResult[X0_0 * Z0_1→(1+0j)*X0Z1: 0.778 +- 0.014051929702506417],\n", + " ExperimentResult[Y0_0→(1+0j)*Y0: 0.878 +- 0.015144152183114953],\n", + " ExperimentResult[Y0_0 * X0_1→(1+0j)*Y0X1: 0.765 +- 0.014404556418814548],\n", + " ExperimentResult[Y0_0 * Y0_1→(1+0j)*Y0Y1: 0.762 +- 0.014483883852258787],\n", + " ExperimentResult[Y0_0 * Z0_1→(1+0j)*Y0Z1: 0.794 +- 0.013596853945623205],\n", + " ExperimentResult[Z0_0→(1+0j)*Z0: 0.882 +- 0.014909671300813384],\n", + " ExperimentResult[Z0_0 * X0_1→(1+0j)*Z0X1: 0.775 +- 0.014134616857094091],\n", + " ExperimentResult[Z0_0 * Y0_1→(1+0j)*Z0Y1: 0.787 +- 0.013798938558913735],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*Z0Z1: 0.745 +- 0.014919745286019461]]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%%time\n", + "calibrations = qc.calibrate(bell_state_tomography)\n", + "calibrations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Correct for noisy readout using calibration results" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[ExperimentResult[Z0_0 * Z0_1→(1+0j)*X1: -0.0575221238938053 +- 0.03496169740581455],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*Y1: 0.018140589569160998 +- 0.03586814747777249],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*Z1: -0.022675736961451247 +- 0.035866301820993776],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*X0: -0.024999999999999998 +- 0.03594678792406806],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*X0X1: 0.957908163265306 +- 0.025349959712687675],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*X0Y1: -0.02777777777777778 +- 0.029583382863840695],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*X0Z1: 0.04884318766066838 +- 0.02874119995646235],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*Y0: -0.009111617312072893 +- 0.03603404137032091],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*Y0X1: -0.02875816993464052 +- 0.029234896112456187],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*Y0Y1: -1.015748031496063 +- 0.02679880429409321],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*Y0Z1: 0.036523929471032744 +- 0.02816420647776022],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*Z0: 0.006802721088435374 +- 0.03587096704781459],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*Z0X1: -0.014193548387096773 +- 0.028859120822696913],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*Z0Y1: 0.03684879288437103 +- 0.02841505279624004],\n", + " ExperimentResult[Z0_0 * Z0_1→(1+0j)*Z0Z1: 0.9986577181208054 +- 0.02832645062980072]]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results_corrected = []\n", + "for r, c in zip(results, calibrations):\n", + " results_corrected.append(correct_experiment_result(r, c))\n", + "results_corrected" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Build ideal density matrix for Bell state $|00\\rangle + |11\\rangle$" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0.5, 0. , 0. , 0.5],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0.5, 0. , 0. , 0.5]])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def build_rho_true() -> np.ndarray:\n", + " \"\"\"\n", + " Generate the density matrix for state |00> + |11>.\n", + " \"\"\"\n", + " psi00 = np.array([[1], [0], [0], [0]])\n", + " bell00 = psm.CNOT @ np.kron(psm.H, psm.I) @ psi00\n", + " return np.outer(bell00, bell00.T.conj())\n", + "\n", + "rho_true = build_rho_true()\n", + "rho_true" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Estimate density matrix from noisy QVM data using the linear inversion method" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0.496-0.j , 0.006-0.007j, -0.018-0.014j, 0.493+0.014j],\n", + " [ 0.006+0.007j, -0.007+0.j , -0.014-0.j , -0.011+0.005j],\n", + " [-0.018+0.014j, -0.014+0.j , 0.008-0.j , -0.018+0.011j],\n", + " [ 0.493-0.014j, -0.011-0.005j, -0.018-0.011j, 0.504-0.j ]])" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def linear_inv_state_estimate(results: List[ExperimentResult], qubits: List[int]) -> np.ndarray:\n", + " \"\"\"\n", + " Adapted from forest.benchmarking.tomography.linear_inv_state_estimate,\n", + " to use pyquil.experiment.ExperimentResult objects instead.\n", + " \"\"\"\n", + " measurement_matrix = np.vstack([\n", + " vec(lifted_pauli(result.setting.out_operator, qubits=qubits)).T.conj() for result in results])\n", + " expectations = np.array([result.expectation for result in results])\n", + " rho = pinv(measurement_matrix) @ expectations\n", + " dim = 2**len(qubits)\n", + " return unvec(rho) + np.eye(dim) / dim\n", + "\n", + "rho_simulated = linear_inv_state_estimate(results_corrected, [0,1])\n", + "np.round(rho_simulated, 3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plot the simulated data" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "DARK_TEAL = \"#47717d\"\n", + "GOLD = \"#f8ba2b\"\n", + "LIGHT_TEAL = \"#66acb4\"\n", + "NAVY = \"#00507b\"\n", + "\n", + "# build a custom colormap for the hinton plot\n", + "lsc = LinearSegmentedColormap.from_list(name=\"rigetti\", colors=[NAVY, GOLD, LIGHT_TEAL, DARK_TEAL])\n", + "ANGLE_MAPPER = ScalarMappable(norm=Normalize(vmin=-np.pi, vmax=np.pi))\n", + "ANGLE_MAPPER.set_cmap(lsc)\n", + "\n", + "def hinton(matrix: np.ndarray, ax: plt.Axes) -> None:\n", + " \"\"\"\n", + " Adapted from forest.benchmarking.tomography.hinton to use custom colors.\n", + " \"\"\"\n", + " max_weight=1.0\n", + " ax.patch.set_facecolor(\"white\")\n", + " ax.set_aspect(\"equal\", \"box\")\n", + " ax.xaxis.set_major_locator(plt.NullLocator())\n", + " ax.yaxis.set_major_locator(plt.NullLocator())\n", + "\n", + " for (x, y), w in np.ndenumerate(matrix):\n", + " color = np.arctan2(w.real, w.imag)\n", + " color = ANGLE_MAPPER.to_rgba(color)\n", + " size = np.sqrt(np.abs(w) / max_weight)\n", + " rect = plt.Rectangle([x - size / 2, y - size / 2], size, size,\n", + " facecolor=color, edgecolor=color)\n", + " ax.add_patch(rect)\n", + "\n", + " ax.set_xlim((-max_weight / 2, matrix.shape[0] - max_weight / 2))\n", + " ax.set_ylim((-max_weight / 2, matrix.shape[1] - max_weight / 2))\n", + " ax.autoscale_view()\n", + " ax.invert_yaxis()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig_qvm, (ax0_qvm, ax1_qvm) = plt.subplots(2, 1, figsize=(6, 12))\n", + "fig_qvm.subplots_adjust(hspace=0.1)\n", + "hinton(rho_true, ax=ax0_qvm)\n", + "hinton(rho_simulated, ax=ax1_qvm)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Simulated Bell state fidelity = 99.31%\n" + ] + } + ], + "source": [ + "print(f\"Simulated Bell state fidelity = {np.round(fidelity(rho_true, rho_simulated), 4)*100:.2f}%\")" + ] + } + ], + "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.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/tutorials/GateNoiseModels.ipynb b/tutorials/GateNoiseModels.ipynb new file mode 100644 index 0000000..b444ea1 --- /dev/null +++ b/tutorials/GateNoiseModels.ipynb @@ -0,0 +1,631 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Simulating Gate Noise\n", + "$$\n", + "\\newcommand{ket}[1]{\\left|{#1}\\right\\rangle}\n", + "\\newcommand{bra}[1]{\\left\\langle {#1}\\right|}\n", + "\\newcommand{tr}{\\mathrm{Tr}}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Pure states vs. mixed states\n", + "\n", + "Errors in quantum computing can introduce classical uncertainty in what the underlying state is.\n", + "When this happens we sometimes need to consider not only wavefunctions but also probabilistic sums of\n", + "wavefunctions when we are uncertain as to which one we have. For example, if we think that an X gate\n", + "was accidentally applied to a qubit with a 50-50 chance then we would say that there is a 50% chance\n", + "we have the $\\ket{0}$ state and a 50% chance that we have a $\\ket{1}$ state.\n", + "This is called an \"impure\" or\n", + "\"mixed\"state in that it isn't just a wavefunction (which is pure) but instead a distribution over\n", + "wavefunctions. We describe this with something called a density matrix, which is generally an\n", + "operator. Pure states have very simple density matrices that we can write as an outer product of a\n", + "ket vector $\\ket{\\psi}$ with its own bra version $\\bra{\\psi}=\\ket{\\psi}^\\dagger$.\n", + "For a pure state the density matrix is simply\n", + "\n", + "\n", + "$$\n", + " \\rho_\\psi = \\ket{\\psi}\\bra{\\psi}.\n", + "$$\n", + "The expectation value of an operator for a mixed state is given by\n", + "\n", + "$$\n", + " \\langle X \\rangle_\\rho = \\tr{X \\rho}\n", + "$$\n", + "where $\\tr{A}$ is the trace of an operator, which is the sum of its diagonal elements\n", + "which is independent of choice of basis.\n", + "Pure state density matrices satisfy\n", + "\n", + "$$\n", + " \\rho \\text{ is pure } \\Leftrightarrow \\rho^2 = \\rho\n", + "$$\n", + "which you can easily verify for $\\rho_\\psi$ assuming that the state is normalized.\n", + "If we want to describe a situation with classical uncertainty between states $\\rho_1$ and\n", + "$\\rho_2$, then we can take their weighted sum\n", + "$$\n", + " \\rho = p \\rho_1 + (1-p) \\rho_2\n", + "$$\n", + "where $p\\in [0,1]$ gives the classical probability that the state is $\\rho_1$.\n", + "\n", + "Note that classical uncertainty in the wavefunction is markedly different from superpositions.\n", + "We can represent superpositions using wavefunctions, but use density matrices to describe\n", + "distributions over wavefunctions. You can read more about density matrices [here](https://en.wikipedia.org/wiki/Density_matrix)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quantum gate errors\n", + "## What are they?\n", + "For a quantum gate given by its unitary operator $U$, a \"quantum gate error\" describes the scenario in which the actually induces transformation deviates from $\\ket{\\psi} \\mapsto U\\ket{\\psi}$. \n", + "There are two basic types of quantum gate errors:\n", + "\n", + "1. **coherent errors** are those that preserve the purity of the input state, i.e., instead of the above mapping we carry out a perturbed, but unitary operation $\\ket{\\psi} \\mapsto \\tilde{U}\\ket{\\psi}$, where $\\tilde{U} \\neq U$. \n", + "2. **incoherent errors** are those that do not preserve the purity of the input state, \n", + " in this case we must actually represent the evolution in terms of density matrices. \n", + " The state $\\rho := \\ket{\\psi}\\bra{\\psi}$ is then mapped as \n", + " $$\n", + " \\rho \\mapsto \\sum_{j=1}^n K_j\\rho K_j^\\dagger, \n", + " $$ \n", + " where the operators $\\{K_1, K_2, \\dots, K_m\\}$ are called Kraus operators and must obey \n", + " $\\sum_{j=1}^m K_j^\\dagger K_j = I$ to conserve the trace of $\\rho$. \n", + " Maps expressed in the above form are called Kraus maps. It can be shown that every physical map on a finite\n", + " dimensional quantum system can be represented as a Kraus map, though this representation is not generally unique.\n", + " [You can find more information about quantum operations here](https://en.wikipedia.org/wiki/Quantum_operation#Kraus_operators)\n", + " \n", + "In a way, coherent errors are *in principle* amendable by more precisely calibrated control. Incoherent errors are more tricky." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Why do incoherent errors happen?\n", + "When a quantum system (e.g., the qubits on a quantum processor) is not perfectly isolated from its environment it generally co-evolves with the degrees of freedom it couples to. The implication is that while the total time evolution of system and environment can be assumed to be unitary, restriction to the system state generally is not.\n", + "\n", + "**Let's throw some math at this for clarity:**\n", + "Let our total Hilbert space be given by the tensor product of system and environment Hilbert spaces:\n", + "$\\mathcal{H} = \\mathcal{H}_S \\otimes \\mathcal{H}_E$.\n", + "Our system \"not being perfectly isolated\" must be translated to the statement that the global Hamiltonian contains a contribution that couples the system and environment:\n", + "$$\n", + "H = H_S \\otimes I + I \\otimes H_E + V\n", + "$$\n", + "where $V$ non-trivally acts on both the system and the environment.\n", + "Consequently, even if we started in an initial state that factorized over system and environment $\\ket{\\psi}_{S,0}\\otimes \\ket{\\psi}_{E,0}$\n", + "if everything evolves by the Schrödinger equation\n", + "$$\n", + "\\ket{\\psi_t} = e^{-i \\frac{Ht}{\\hbar}} \\left(\\ket{\\psi}_{S,0}\\otimes \\ket{\\psi}_{E,0}\\right)\n", + "$$\n", + "the final state will generally not admit such a factorization." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## A toy model\n", + "**In this (somewhat technical) section we show how environment interaction can corrupt an identity gate and derive its Kraus map.**\n", + "For simplicity, let us assume that we are in a reference frame in which both the system and environment Hamiltonian's vanish $H_S = 0, H_E = 0$ and where the cross-coupling is small even when multiplied by the duration of the time evolution $\\|\\frac{tV}{\\hbar}\\|^2 \\sim \\epsilon \\ll 1$ (any operator norm $\\|\\cdot\\|$ will do here).\n", + "Let us further assume that $V = \\sqrt{\\epsilon} V_S \\otimes V_E$ (the more general case is given by a sum of such terms) and that \n", + "the initial environment state satisfies $\\bra{\\psi}_{E,0} V_E\\ket{\\psi}_{E,0} = 0$. This turns out to be a very reasonable assumption in practice but a more thorough discussion exceeds our scope.\n", + "\n", + "Then the joint system + environment state $\\rho = \\rho_{S,0} \\otimes \\rho_{E,0}$ (now written as a density matrix) evolves as\n", + "$$\n", + "\\rho \\mapsto \\rho' := e^{-i \\frac{Vt}{\\hbar}} \\rho e^{+i \\frac{Vt}{\\hbar}}\n", + "$$\n", + "Using the Baker-Campbell-Hausdorff theorem we can expand this to second order in $\\epsilon$\n", + "$$\n", + "\\rho' = \\rho - \\frac{it}{\\hbar} [V, \\rho] - \\frac{t^2}{2\\hbar^2} [V, [V, \\rho]] + O(\\epsilon^{3/2})\n", + "$$\n", + "We can insert the initially factorizable state $\\rho = \\rho_{S,0} \\otimes \\rho_{E,0}$ and trace over the environmental degrees of freedom to obtain\n", + "\\begin{align}\n", + "\\rho_S' := \\tr_E \\rho' & = \\rho_{S,0} \\underbrace{\\tr \\rho_{E,0}}_{1} - \\frac{i\\sqrt{\\epsilon} t}{\\hbar} \\underbrace{\\left[ V_S \\rho_{S,0} \\underbrace{\\tr V_E\\rho_{E,0}}_{\\bra{\\psi}_{E,0} V_E\\ket{\\psi}_{E,0} = 0} - \\rho_{S,0}V_S \\underbrace{\\tr \\rho_{E,0}V_E}_{\\bra{\\psi}_{E,0} V_E\\ket{\\psi}_{E,0} = 0} \\right]}_0 \\\\\n", + "& \\qquad - \\frac{\\epsilon t^2}{2\\hbar^2} \\left[ V_S^2\\rho_{S,0}\\tr V_E^2 \\rho_{E,0} + \\rho_{S,0} V_S^2 \\tr \\rho_{E,0}V_E^2 - 2 V_S\\rho_{S,0}V_S\\tr V_E \\rho_{E,0}V_E\\right] \\\\\n", + "& = \\rho_{S,0} - \\frac{\\gamma}{2} \\left[ V_S^2\\rho_{S,0} + \\rho_{S,0} V_S^2 - 2 V_S\\rho_{S,0}V_S\\right]\n", + "\\end{align}\n", + "where the coefficient in front of the second part is by our initial assumption very small $\\gamma := \\frac{\\epsilon t^2}{2\\hbar^2}\\tr V_E^2 \\rho_{E,0} \\ll 1$.\n", + "This evolution happens to be approximately equal to a Kraus map with operators $K_1 := I - \\frac{\\gamma}{2} V_S^2, K_2:= \\sqrt{\\gamma} V_S$:\n", + "\\begin{align}\n", + "\\rho_S \\to \\rho_S' &= K_1\\rho K_1^\\dagger + K_2\\rho K_2^\\dagger\n", + " = \\rho - \\frac{\\gamma}{2}\\left[ V_S^2 \\rho + \\rho V_S^2\\right] + \\gamma V_S\\rho_S V_S + O(\\gamma^2)\n", + "\\end{align}\n", + "This agrees to $O(\\epsilon^{3/2})$ with the result of our derivation above. This type of derivation can be extended to many other cases with little complication and a very similar argument is used to derive the [Lindblad master equation](https://en.wikipedia.org/wiki/Lindblad_equation)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Support for noisy gates on the Rigetti QVM\n", + "\n", + "As of today, users of our Forest API can annotate their QUIL programs by certain pragma statements that inform the QVM that a particular gate on specific target qubits should be replaced by an imperfect realization given by a Kraus map.\n", + "\n", + "## But the QVM propagates *pure states*: How does it simulate noisy gates?\n", + "It does so by yielding the correct outcomes **in the average over many executions of the QUIL program**:\n", + "When the noisy version of a gate should be applied the QVM makes a random choice which Kraus operator is applied to the current state with a probability that ensures that the average over many executions is equivalent to the Kraus map.\n", + "In particular, a particular Kraus operator $K_j$ is applied to $\\ket{\\psi}_S$\n", + "$$\n", + "\\ket{\\psi'}_S = \\frac{1}{\\sqrt{p_j}} K_j \\ket{\\psi}_S\n", + "$$\n", + "with probability $p_j:= \\bra{\\psi}_S K_j^\\dagger K_j \\ket{\\psi}_S$.\n", + "In the average over many execution $N \\gg 1$ we therefore find that\n", + "\\begin{align}\n", + "\\overline{\\rho_S'} & = \\frac{1}{N} \\sum_{n=1}^N \\ket{\\psi'_n}_S\\bra{\\psi'_n}_S \\\\\n", + "& = \\frac{1}{N} \\sum_{n=1}^N p_{j_n}^{-1}K_{j_n}\\ket{\\psi'}_S \\bra{\\psi'}_SK_{j_n}^\\dagger\n", + "\\end{align}\n", + "where $j_n$ is the chosen Kraus operator label in the $n$-th trial.\n", + "This is clearly a Kraus map itself! And we can group identical terms and rewrite it as\n", + "\\begin{align}\n", + "\\overline{\\rho_S'} & = \n", + " \\sum_{\\ell=1}^n \\frac{N_\\ell}{N} p_{\\ell}^{-1}K_{\\ell}\\ket{\\psi'}_S \\bra{\\psi'}_SK_{\\ell}^\\dagger\n", + "\\end{align}\n", + "where $N_{\\ell}$ is the number of times that Kraus operator label $\\ell$ was selected.\n", + "For large enough $N$ we know that $N_{\\ell} \\approx N p_\\ell$ and therefore\n", + "\\begin{align}\n", + "\\overline{\\rho_S'} \\approx \\sum_{\\ell=1}^n K_{\\ell}\\ket{\\psi'}_S \\bra{\\psi'}_SK_{\\ell}^\\dagger\n", + "\\end{align}\n", + "which proves our claim.\n", + "**The consequence is that noisy gate simulations must generally be repeated many times to obtain representative results**." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## How do I get started?\n", + "\n", + "1. Come up with a good model for your noise. We will provide some examples below and may add more such \n", + " examples to our public repositories over time. Alternatively, you can characterize the gate under \n", + " consideration using [Quantum Process Tomography](https://arxiv.org/abs/1202.5344) or \n", + " [Gate Set Tomography](http://www.pygsti.info/) and use the resulting process matrices to obtain a \n", + " very accurate noise model for a particular QPU.\n", + "2. Define your Kraus operators as a list of numpy arrays `kraus_ops = [K1, K2, ..., Km]`.\n", + "3. For your QUIL program `p`, call:\n", + " ```\n", + " p.define_noisy_gate(\"MY_NOISY_GATE\", [q1, q2], kraus_ops)\n", + " ```\n", + " where you should replace `MY_NOISY_GATE` with the gate of interest and `q1, q2` the indices of the qubits.\n", + " \n", + "**Scroll down for some examples!**" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from scipy.stats import binom\n", + "import matplotlib.colors as colors\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from pyquil import Program, get_qc\n", + "from pyquil.gates import CZ, H, I, X, MEASURE\n", + "from scipy.linalg import expm" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# We could ask for \"2q-noisy-qvm\" but we will be specifying\n", + "# our noise model as PRAGMAs on the Program itself.\n", + "qc = get_qc('2q-qvm')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Example 1: Amplitude damping\n", + "\n", + "Amplitude damping channels are imperfect identity maps with Kraus operators\n", + "$$\n", + "K_1 = \\begin{pmatrix} \n", + "1 & 0 \\\\\n", + "0 & \\sqrt{1-p}\n", + "\\end{pmatrix} \\\\\n", + "K_2 = \\begin{pmatrix} \n", + "0 & \\sqrt{p} \\\\\n", + "0 & 0\n", + "\\end{pmatrix}\n", + "$$\n", + "where $p$ is the probability that a qubit in the $\\ket{1}$ state decays to the $\\ket{0}$ state.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def damping_channel(damp_prob=.1):\n", + " \"\"\"\n", + " Generate the Kraus operators corresponding to an amplitude damping \n", + " noise channel.\n", + " \n", + " :params float damp_prob: The one-step damping probability.\n", + " :return: A list [k1, k2] of the Kraus operators that parametrize the map.\n", + " :rtype: list\n", + " \"\"\"\n", + " damping_op = np.sqrt(damp_prob) * np.array([[0, 1],\n", + " [0, 0]])\n", + " \n", + " residual_kraus = np.diag([1, np.sqrt(1-damp_prob)])\n", + " return [residual_kraus, damping_op]\n", + "\n", + "def append_kraus_to_gate(kraus_ops, g):\n", + " \"\"\"\n", + " Follow a gate `g` by a Kraus map described by `kraus_ops`.\n", + " \n", + " :param list kraus_ops: The Kraus operators.\n", + " :param numpy.ndarray g: The unitary gate.\n", + " :return: A list of transformed Kraus operators.\n", + " \"\"\"\n", + " return [kj.dot(g) for kj in kraus_ops]\n", + "\n", + "\n", + "def append_damping_to_gate(gate, damp_prob=.1):\n", + " \"\"\"\n", + " Generate the Kraus operators corresponding to a given unitary \n", + " single qubit gate followed by an amplitude damping noise channel.\n", + " \n", + " :params np.ndarray|list gate: The 2x2 unitary gate matrix.\n", + " :params float damp_prob: The one-step damping probability.\n", + " :return: A list [k1, k2] of the Kraus operators that parametrize the map.\n", + " :rtype: list\n", + " \"\"\"\n", + " return append_kraus_to_gate(damping_channel(damp_prob), gate)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "20/21, CPU times: user 232 ms, sys: 17.9 ms, total: 250 ms\n", + "Wall time: 2.79 s\n" + ] + } + ], + "source": [ + "%%time\n", + "\n", + "# single step damping probability\n", + "damping_per_I = 0.02\n", + "\n", + "# number of program executions\n", + "trials = 200\n", + "\n", + "results_damping = []\n", + "lengths = np.arange(0, 201, 10, dtype=int)\n", + "for jj, num_I in enumerate(lengths):\n", + " \n", + " print(\"\\r{}/{}, \".format(jj, len(lengths)), end=\"\")\n", + "\n", + " p = Program(X(0))\n", + " ro = p.declare(\"ro\")\n", + " # want increasing number of I-gates\n", + " p.inst([I(0) for _ in range(num_I)])\n", + " p.inst(MEASURE(0, ro[0]))\n", + " \n", + " # overload identity I on qc 0\n", + " p.define_noisy_gate(\"I\", [0], append_damping_to_gate(np.eye(2), damping_per_I))\n", + " p.wrap_in_numshots_loop(trials)\n", + " qc.qam.random_seed = int(num_I)\n", + " res = qc.run(p).readout_data.get(\"ro\")\n", + " results_damping.append([np.mean(res), np.std(res) / np.sqrt(trials)])\n", + " \n", + "results_damping = np.array(results_damping)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "dense_lengths = np.arange(0, lengths.max()+1, .2)\n", + "survival_probs = (1-damping_per_I)**dense_lengths\n", + "logpmf = binom.logpmf(np.arange(trials+1)[np.newaxis, :], trials, survival_probs[:, np.newaxis])/np.log(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "DARK_TEAL = '#48737F'\n", + "FUSCHIA = \"#D6619E\"\n", + "BEIGE = '#EAE8C6'\n", + "cm = colors.LinearSegmentedColormap.from_list('anglemap', [\"white\", FUSCHIA, BEIGE], N=256, gamma=1.5)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.0, 1.0)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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MGjQIE455RRqa2vbfJyGscqjoFHnFqMHejiWSVbJfFhDyeb9OHLMGlz6xYc8xEIOZ0B3z8wwDGO1or6+ngULlk7AkUql6Nu3LwCXXXYZzz77LD/+8Y/ZfvvtWXfddamvr+eII46goqKCO+64Y6kQrOOPPx7f97nggguoqanhH//4B3vttRePPvoo48ePz7e74YYbOP3009l+++355S9/SUVFBU888QQ/+tGP+Oyzz/jDH/6Qb/vQQw9x6KGHUlFRwSmnnMI666zDN998w9SpU3n33XcZP348t99+O8cddxw777wzp5122lLH1Z7x/vKXv/DTn/6UzTffnMsvv5z6+nquuuoqhg4d2q7PuK6ujj322INdd92VK664gldffZXJkyfT2NjIoEGDePnll/nJT35CNpvlqquuYv/99+fLL7+kT58++T6OO+447r77bg477DBOOukk0uk0d955JxMmTOC+++7jgAMOyLe96qqr2H777TnrrLMYOHAg7777LjfddBPTpk3jnXfeYdCgQc3m99Zbb7Hffvtx0kkncfTRRzN9+nQmTZqE53nccMMN7TpWw1ilsSxVnUba88RlVWabbbbR1157DYCwLk3jV4uofv4T0nMWk/6mCn9oiQutqvSpOHAY0cIsd977DtMyizgnO4o1GpL4fcpIDe2LX1lCang//IoSUsP6khxciV+WItGvDEn4YNFVhmG04IMPPmDDDTdcan1tzRcE2fpumFHrJJLlVPYZ16F9p0+fzu67797q9n333ZeHHnoo//cXX3zBlltuydprr82MGTP40Y9+xOTJk5kyZQr7779/vt1FF13ExRdfzLbbbstzzz1HKpUCYNasWWywwQaMGTOGDz74AIC5c+cybtw4DjnkEO66665m45999tlcc801fPLJJ6y11lrU19ez5pprIiK8+eabjBo1qln7KIryRo+IcMIJJ3DLLbc0a9Oe8RYvXsyoUaNYc801ee211ygvL292HHV1dTz99NPstttuy/ycd9ttN5555hmuvPJKzj///Pz6Qw45hAceeICtttqKGTNmkEwmAZgyZQoHHngg119/PT/84Q8BuP/++znkkEP4xz/+0cyICoKA7bffnoULF/L555/nPTl1dXVUVFQ0m8dTTz3F+PHj+f3vf8/Pf/7z/PqcB2jGjBlst912+fX77rsvjz/+OFVVVVRWVi7zGI3eQWu/jYWIyOuqus1KmlK72Hyj9fWx24t7MtvKyG32WGWPb2XRI0OqlkmgZD+oJTGqlH3HjKQvCe71F1gFcsMwjHZw2mmn8cQTTyy1XHbZZc3ajRs3jhtuuIE33niDPfbYg8mTJ3PWWWc1MzYK+elPf5o3NgBGjx7NMcccw4cffpg3OO69917S6TQnn3wyCxYsaLbsv//+RFHEk08+CcDUqVNZsGABP/vZz5YyNqBtIvf2jPf4449TX1/PGWeckTc2Co+jPfi+z09+8pNm63beeWdUldNPPz1vbOTWA3zyySf5dXfccQd9+vThoIMOajbnxYsXs//++zNz5sxm7XPGRhRFVFdXs2DBAjbffHP69evHyy+/vNT8dthhh2bGBsAee+xBEARFw7AMw+i99MiQKr+ihJLh/UiN7A+qZBfUorUBhD7qQ/qDWpIbVtJ/+0EcNGcotzbM4aXKenZYLEjCJ0oH7rUhiyQ8xBOi8iwIeKVJ/IqS7j5EwzBWEzrqSVjVWXfddZuFOC2L73//+0yZMoU777yTTTbZhCuvvLLVtsWehG600UYAfP7552y44YZ5w2NZ48+bNw9ougHfcsst2zTXYrRnvM8//xyADTbYYKk2ueNoKyNGjKC0tLTZugEDXAjwuHHjiq5fuHBhs3nX1NQwbNiwZc57vfXWA2DatGn89re/5eWXX6axsbFZu6qqqqX2XWuttZZalwu7KpyHYazWKBZS1QX0SIMDING/jJKR/SGMSH1bQ8OXC/AiRVICIWTeqaH0O/3Zbu2hvPB+FQ+zkC3Ky5HF9WgmQBIeUWOTweE3lCCe4JWlQAS/PLXcORiGYRiwePFinn/+eQDmzJnDt99+y5gxYzrcXy4U+LbbbmPEiBFF2xS7GV5dxsvh+60nbm9tW2GYtKoyZMiQpcLACtlkk00AePXVV5k4cSLrrLMOV1xxBePGjaOsrAwR4cgjj8yL+9s6v54Srm0YYFlxu4Iea3Asj8xHtaQ2qqR06/58/7PhXNHwBQ8lFvH9zJDunpphGEaP4uSTT2bWrFn87W9/4/zzz+fYY49l2rRpRW9YP/jgAzbffPNm695//32g6aZ+3XXXBWDw4MHL9bLknt6/9dZbTJw4sUPzb894uTl++OGH7Lnnns225Y5jZbHuuuvy8ccfs/322y9XT3HXXXcRhiGPPvpoM+9JXV1dUe+GYfQqzMPRaXquhkOE1NC+pEb2JzW0D4nKUqLqgKjOpcglUNJv15AYWsKY9Qawa2oAL/k1fJVoJFjSSLC4niCuRJ5dWEd2US3ZRXUEVfWE1Q2E9Rk0sFxnhmEYy+L666/nvvvu41e/+hVnnnkmV111Fc8++yyXXnpp0fZ//vOfyWQy+b9nzZrFXXfdxfrrr58Pt/r+979PSUkJv/nNb2hoaFiqj+rqatLpNAATJ05k8ODB/PGPf2Tu3LlLtS18El9ZWcmiRYuWatOe8SZMmEBZWRnXXnst9fVNyQJyx7EyOf7444miiAsvvLDo9lwYGDR5K1p6Ji6//PKi3g3D6FVoJxejZ3s4koMq0DAiNawfmQW14AlhbRovUtRPkP24ltTGlZRu04+9vxrK65kl/Kd0Ied4IwmqG9BMiKT8Jl2H7xM1BuAJeIKWJvErSxC/59pthmEYxXjjjTe44447im476KCDqKys5N133+Xcc89ll1124de//jUAZ5xxBk888QSXXHIJe+65J9/97neb7RsEATvvvDNHHXUUNTU1XH/99TQ0NHD11Vfn24wePZrrrruOU045hQ033JDjjjuONddck/nz5/POO+/wwAMP8P777zN27FjKy8uZNGkShx12GJtsskk+Le78+fOZOnUq5557LgceeCAA22+/PU8++SS///3vWWONNfLhRO0Zb8CAAVxyySWcd9557Ljjjhx//PHU19dz/fXXs+666/Lmm2+uoDOyNLlUuNdccw1vvPEG++23H4MHD2bWrFnMmDGDTz/9NK85Ofjgg/nzn//MPvvsw2mnnUYqleKJJ57g7bffZvDgwSttzoZh9Ex6tMGxXBTSby6hfNdB9F27Dwe9PZTbMnN52athe/p29+wMwzBWWe6++27uvvvuots++eQTRo0axZFHHklZWRl33nlns/CpyZMns/nmm3PMMcfw1ltv5QXP4HQS119/PVdccQWLFy9ms80245ZbbmHChAnNxjjppJNYb731uOqqq/jHP/7B4sWLGTx4MOuvvz6XXHIJw4cPz7c94IADeP7557n88suZNGlSXki98847s+mmm+bb/f3vf+eMM87gsssuo6amBoAjjzyy3eP97Gc/o7Kykj/96U9ceOGFjBkzhvPOO49+/frxgx/8oBOfevuZPHkyu+++OzfccAO/+93vyGQyDB8+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iX7lJAaUkxxQTqJ/RV487iUTsYA8QrMRBK4+R/rVapKjS0msU84juhBtkaghi/Jg42zC2kaCmnhZ4l7DJU3rwto0YX2GqCGLhiYiNwxj9SEXcz9t2jSuuuoq1l57bUpKSlhvvfWKCkoXLFjAGWecwZgxY0ilUowZM4YzzjiDhQsXNmtXTMPR2NjIRRddxPrrr095eTn9+/dn00035fzzzwfg/vvvR0S48cYbi8514403Zp111kHbEBPx9ddf8/3vf59+/frRt29f9t9/fz777DPGjh2bv7F79NFHERGuvvrqon3ssMMODBkyhGw22+yzeuqpp/jtb3/LmmuuSVlZGdtttx0vvfQSAM888wzf/e53qaioYMSIEVxySYd1mXnS6TSXX345G2+8MaWlpfTv35/999+fN998s1m73PyefPJJLrnkEtZee21KS0u55557lrktR1vPbVv6CoKAiy66iDXXXJOSkhI222wz/vnPfzbrp6amhl/96ldst912DB48mJKSEtZZZx1+8YtfUF9f364xl3dt9SS22WabZsZGjiOOOAKAd999t+h+zzzzDPvttx9DhgzB931EpNny3e9+d4XO21hp/B54RFVvVNUfqep2QB9gc1ztj3OBXVX17x0doNd6ODpK5v0aUhtXUrbjQKreC4q2qaJl2JthGEbHmfb623z41SyyQcgJl/6ZE/bekz223qy7p8X//d//0dDQwA9/+ENKSkq47rrrOPHEE1lnnXXYaaedAKiurmbHHXfk008/5Qc/+AFbbbUVb775Jtdddx3Tpk3jlVdeoU+fPq2OccYZZzB58mSOP/54zj33XIIg4JNPPmHatGkA7L///gwfPpzJkydz6qmnNtv3pZde4v333+eyyy5bbhrPxYsXs8suu/D1119z+umns9FGG/HMM8+w++6709DQkG83ceJEhg8fzm233cZZZ53VrI9PPvmEl156ibPOOmupsLBf/OIXhGHI2WefTSaT4Y9//CMTJ07ktttu4+STT+a0007jmGOO4Z577uH//b//x7hx4zj22GOXfxKKkM1m2WuvvXjxxRc57rjjOPPMM6murubGG29kp5124tlnn2WbbbZpts95551HNpvl1FNPpW/fvqy//vr5mgvFtkHHzu2yxrnggguoq6vjxz/+MQA333wzRx11FI2NjZx44okAzJ49m5tuuolDDz2Uo48+mkQiwTPPPMOVV17Jm2++ydSpU5f6PFqb//KurbYSRVG7RNQDBw7E89r2vLdY39XV1fnXBQsWdLhvgFmzZgEwbNiwpbbdeuut/OAHP2DEiBGcccYZDBo0iPvuu4/p06fTv39/dt11VyZMmNDmsVZreqCHoxBVvbDIuhB4J146Ta82OHKi7WS/csQTErVpovo04gtROkB8j6gxAwkBBRFFFRpnVFGx7zAGlqRYlF46S9WAKOFqe/geiOCXBognaDrrwqkEtMQZK1oSgrgQLwutMgyjJdNef5ur7/0v2SAE4NvF1Vx9738But3oSKfTvPrqq6RSKcCFbay11lpcc801eYPjyiuv5JNPPuHaa6/N30gCbLHFFpx55plceeWVy3yif//997P33nu3moozkUhw0kkn8bvf/Y7333+fjTbaKL9t0qRJ+L6fv1ldFldeeSUzZ85k8uTJnHTSSQD8+Mc/5pxzzuGvf/1rvp3v+xx77LFcddVVS4132223AXDCCSfQkjAMeemll/Kf1UYbbcSBBx7I4YcfzowZM/IGwMknn8yaa67Jtdde22GD45prrmH69Ok89thjfO9738uv//GPf8wmm2zCeeedt1RGqIaGBt58881moUY5Q6DYNujYuV3WOAsWLODtt9/OP4k//fTT2WyzzTj33HM54ogjKCsrY6211uLrr79uZtCdccYZ/PrXv+bSSy/llVdeYdttt13umLD8a6utfPXVV4wbN67N7b/44gvGjh3b6b4POuigTvUdhiGXXHIJiUSCo48+utm2zz//nNNPP50NNtiA559/ngEDBgDunGy88cZ8+eWX3HXXXat1aFq76JkajpVKrzY4wBkdfr8y8IRkTZqwNg2+R9SYJfQ9okyANoaQ9Jyx4AvZmQ1kv2zg8N3WY/LU98gWmL5JFfap70eoafdETcTV3fA9vEwCPGeEeCWh25ZtOgWS9PFSvf6UGEaP4voHH+Xz2d90eP+cZ6OQdDbLX/79II+9/HqH+lxr1HBOP3DvDs8px49//OP8DTTAqFGjWG+99fjkk0/y6+6//36GDBnCaaed1mzfH/7wh1x88cXcf//9yzQ4+vXrx3vvvce7777LJptsUrTNqaeeyhVXXMGkSZP44x//CEBdXR3/+te/2HvvvRk5cuRyj+WBBx5g2LBhHH/88c3WX3DBBc0MDnAGxVVXXcVtt93GFVdcAbjiaHfccQebbLIJW2211VL9/+hHP2r2We28884AbLfdds28DalUim233ZYXXnhhuXNujTvuuIMNNtiArbfeeqkn4BMmTODWW2+loaGhmUj4Rz/6Uas3j61t68i5Xd44hWE//fr14/TTT+f//u//mD59OnvvvXezzzAIAmpqagjDkPHjx3PppZfy8ssvL2VwtDZmW66ttjB8+HCeeOKJdrXvTN//+9//OO+887jqqqvYfPPNO9z3Oeecw4wZM7j88svzXp8cf/7zn2lsbOTGG2/MGxsAyWSS3XbbjRtvvJEvv/ySDTfcsM3jrbZoz8tSJSJlqtqw/JZd14fd3XaQhher2PGIkQRzG7n17c8IUFBYOypl60wlWJIVwzC6gJbGxvLWr0zWWmutpdYNGjSIL79sSmTyxRdfsM0225BINP93k0gkWG+99XjjjTeWOcZf/vIXjjvuODbddFPWWmstdt99d/bff3/233//fOjIuHHjGD9+PLfffjtXXHEFyWSSe+65h5qaGk455ZQ2Hcvnn3/Od77zHXzfb7Z+xIgR9O/fv9m6nFFx5513cvnll+N5Hs8++ywzZ87kyiuvLNp/y88qdxNX7On1gAEDltJAtIcPPviAhoYGhgwZ0mqbBQsWMGbMmPzf6623XqttW9vWkXO7rHGK3bzmPEiff/55ft3f//53rr/+et577z2iqLkGsqqqqs1jtuXaagulpaWMHz++ze3bQ7G+c5/31ltv3WbReEt+/etfc80113Daaadx4YVLRdMwZcoU1llnHXbccceltuWE/pWVlR0ae7Wk53k4vhCR3wHXq2q7MjeIyOa4iuSvAW0WnJnBAfiVJS5bVb8ykrVpJOERNWRcSFU6S7C4AaII/FxoFURVWTLv1bDLhLV45sM5kFUGkuBNr5YlpRF9s0JYnwHfQ4PQhVRlE642hwhaGodSZWPLRAQv5f7RScJD2vFjZxjGqktnPQknXPpnvl1cvdT6of37ceWPT+pU352l5c15jrYItNvKgQceyMyZM3nkkUd45plnePLJJ5k0aRI777wzTz75ZP6J92mnncbhhx/OlClTOPTQQ5k0aRLDhw9n33337bK5FHL88cdzzjnnMG3aNMaPH89tt92WD7cqRmufVWvrO4Oqsummm/KnP/2p1TYtjZFlhcZ0ZdhMZ/v605/+xM9+9jMmTpzIWWedxciRI0mlUsyePZsTTzxxKQNkWWO29dpaHmEYNqtVsTxyAuzu4qKLLuLSSy/lpJNO4vrrr19qe1VVFV999RWHHnpo0f1feeUVhg8f3sxgNVY7pgJ/An4jIv8C7gFeas1jISJrAd8Djge2Bb4G/tCeAc3g6ASNr1aTXLcCv1+ScEGG7zGQ16hhWrKag7IDu3t6hmH0AE7Ye0+uvve/pLNNyShKkklO2HvPbpxV21lrrbX46KOPCIKg2ZPwIAj4+OOPi3pJWjJw4ECOPfZYjj32WFSVX/ziF1x55ZU8+OCDHH744YC7eRw6dCiTJk1ik0024YUXXuCCCy5Y6un7sub5ySefEIZhs5vBuXPnsnjx4qXaH3300Zx//vncdttt7LTTTtx7771MmDCBESNGtGm8Fcm6667L/Pnz2WOPPdr1pL69dMW5LeSDDz7gwAMPbLbu/fffz48FcPvttzN27FgeffTRZsf22GOPdegY2nJtLY+vv/56hWk4upqLLrqIiy++mBNOOIGbbrqpaDKFmpoagKIG1yuvvMKHH364VMKEHk8Pc3Co6gkicg1wGXBavIQi8gEwF6gCSoFBwPrAYFxhh2+BXwJ/bq9nxB6jA14qgV9RQqK/S5Gb6Ffm0uX2LSPRtwy/PAURaNqlxtVAIVS0IST9WjVS6iGlHoMTJXxH+vJiooYlqYioMUtUlyasSxPG6XHDfKrcBsI4VW5YmyasbYzrgGSIGgO0yFMawzB6H3tsvRlnHbY/yYS7CR7avx9nHbZ/twvG28pBBx3E/Pnzuemmm5qtv/HGG5k/fz4HH3xwq/uGYbjUzb6IsOWWWwI0y96TTCY58cQTmTp1KhdffDHgBNht5cADD2TevHl54XeO3//+90XbDxkyhL333pv77ruPO++8kyVLlhQVi3cHxx9/PN98802rHo6uqhTdmXNbjOuuuy6fgQlcFqbrr78+nxEJyKdmLfSiBUGQ19K0lfZcW8sjp7No69IenUUxdtttN1S13eFUv/3tb7n44os57rjjmDx5cqvG6PDhwyktLeWZZ55plmq4qqqKU045hb59+/Lzn/+8M4eweqHqQqo6s6yCqOqrqjoRV/TvD8D/gI2AicARwIFALu/xfcDRwBhVvaK9xgaYhyOPl0q4uhx9nYA8qsuAJ/iNWZexKuERVDdAiedCq0QRH9LvLEErFa9/EqmGvWQQr2aX8FRpNYfoQMKGLF4YEYrgBRGh78UhVUnwBC8TuBgtQDMuvMrLuthsrzRhoVWGYbDH1pvlBeLdHUbVXn7+85/z73//mzPOOIM33niDLbfckjfffJNJkyax/vrrL/PGpaamhhEjRnDAAQew5ZZbMnToUL744guuu+46BgwYwP7779+s/amnnsof/vAH7r77bnbddVfWXXfdds3zrrvu4tRTT+X1119n4403Zvr06cyYMYPBgwcX3eeEE05gypQp/OxnP6Nfv35FswZ1FWPHjuXLL79sU7ja2WefzRNPPMH555/PtGnT2GOPPejbty9fffUVTz31FKWlpTz99NOdnlNnzm0xBg8ezHbbbZfPEnbzzTfz1VdfcdNNN+XDonIF7Pbee28OOeQQlixZwl133dXu6vTtvbaWxYrUcNTV1XH//fe3uf3BBx9MRUXFUuuvvfZafvOb37DGGmswfvx47rrrrmbbhw0blk9xm0ql+OEPf8hf//pX9thjD44++mgWLVrEpEmTqKqq4v7772fUqFGdO7DVjJ4mGi9EVT8BfgEgIuXAKJxnowH4VlXndsU4ZnB0lgii6iz+4BQlW/Rj0GvVbEdfXqSaPaQv/ei+OE3DMIzupl+/frzwwgv85je/YcqUKdx8880MGzaM008/nYsvvniZNTjKy8s555xzeOqpp3jyySepra3N3yReeOGFS2WfWmedddh9992ZNm1au7wb4ITazz33HOeee27ey7Hrrrvy9NNPs+eexcPX9ttvPwYOHMiiRYs45ZRTVmiV9Nra2jZl2wLn7Xn44Yf5+9//zu23385vfvMbAEaOHMm2227bZZ6YzpzbYvz+97/nueee49prr2XevHmst9563Hnnnc1Stp5//vmoKpMmTeLss89m+PDhHHHEEZx00knNUhQvj/ZeW93F/PnzOe6449rc/osvvihqcLz66quAS7Nb7Py3rKnxhz/8gYqKCu644w7OO+88Bg0axMSJE/nlL3+5TOG/sXqjqvXAJ/HSpUhXivvaPKjIXsBfAR+4SVWvaLF9DeBWoH/c5heq+siy+txmm230tdde69S8NBuSXVBLUNNIZu5igto0mW+qycxbQtSQIaiqJ2rMQomHV+pBQpCEcHXma7xBSX557HYsuX028xc3cGn4BTuGfTm0cRCaVbxUIvai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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(14, 6))\n", + "plt.pcolor(dense_lengths, np.arange(trials+1)/trials, logpmf.T, cmap=cm, vmin=-4, vmax=logpmf.max())\n", + "plt.plot(dense_lengths, survival_probs, c=BEIGE, label=\"Expected mean\")\n", + "plt.errorbar(lengths, results_damping[:,0], yerr=2*results_damping[:,1], c=DARK_TEAL, \n", + " label=r\"noisy qvm, errorbars $ = \\pm 2\\hat{\\sigma}$\", marker=\"o\")\n", + "cb = plt.colorbar()\n", + "cb.set_label(r\"$\\log_{10} \\mathrm{Pr}(n_1; n_{\\rm trials}, p_{\\rm survival}(t))$\", size=20)\n", + "\n", + "plt.title(\"Amplitude damping model of a single qubit\", size=20)\n", + "plt.xlabel(r\"Time $t$ [arb. units]\", size=14)\n", + "plt.ylabel(r\"$n_1/n_{\\rm trials}$\", size=14)\n", + "plt.legend(loc=\"best\", fontsize=18)\n", + "plt.xlim(*lengths[[0, -1]])\n", + "plt.ylim(0, 1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Example 2: dephased CZ-gate\n", + "\n", + "Dephasing is usually characterized through a qubit's $T_2$ time. \n", + "For a single qubit the dephasing Kraus operators are\n", + "$$\n", + "K_1(p) = \\sqrt{1-p} I_2 \\\\\n", + "K_2(p) = \\sqrt{p} \\sigma_Z\n", + "$$\n", + "where $p = 1 - \\exp(-T_2/T_{\\rm gate})$ is the probability that the qubit is dephased over the time interval of interest, $I_2$ is the $2\\times 2$-identity matrix and $\\sigma_Z$ is the Pauli-Z operator.\n", + "\n", + "For two qubits, we must construct a Kraus map that has *four* different outcomes:\n", + "\n", + "1. No dephasing\n", + "2. Qubit 1 dephases\n", + "3. Qubit 2 dephases\n", + "4. Both dephase" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Kraus operators for this are given by\n", + "\\begin{align}\n", + "K'_1(p,q) = K_1(p)\\otimes K_1(q) \\\\\n", + "K'_2(p,q) = K_2(p)\\otimes K_1(q) \\\\\n", + "K'_3(p,q) = K_1(p)\\otimes K_2(q) \\\\\n", + "K'_4(p,q) = K_2(p)\\otimes K_2(q) \n", + "\\end{align}\n", + "where we assumed a dephasing probability $p$ for the first qubit and $q$ for the second.\n", + "\n", + "Dephasing is a *diagonal* error channel and the CZ gate is also diagonal, therefore we can get the combined map of dephasing and the CZ gate simply by composing $U_{\\rm CZ}$ the unitary representation of CZ with each Kraus operator\n", + "\\begin{align}\n", + "K^{\\rm CZ}_1(p,q) = K_1(p)\\otimes K_1(q)U_{\\rm CZ} \\\\\n", + "K^{\\rm CZ}_2(p,q) = K_2(p)\\otimes K_1(q)U_{\\rm CZ} \\\\\n", + "K^{\\rm CZ}_3(p,q) = K_1(p)\\otimes K_2(q)U_{\\rm CZ} \\\\\n", + "K^{\\rm CZ}_4(p,q) = K_2(p)\\otimes K_2(q)U_{\\rm CZ} \n", + "\\end{align}\n", + "\n", + "**Note that this is not always accurate, because a CZ gate is often achieved through non-diagonal interaction Hamiltonians! However, for sufficiently small dephasing probabilities it should always provide a good starting point.**" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "def dephasing_kraus_map(p=.1):\n", + " \"\"\"\n", + " Generate the Kraus operators corresponding to a dephasing channel.\n", + "\n", + " :params float p: The one-step dephasing probability.\n", + " :return: A list [k1, k2] of the Kraus operators that parametrize the map.\n", + " :rtype: list\n", + " \"\"\"\n", + " return [np.sqrt(1-p)*np.eye(2), np.sqrt(p)*np.diag([1, -1])]\n", + "\n", + "def tensor_kraus_maps(k1, k2):\n", + " \"\"\"\n", + " Generate the Kraus map corresponding to the composition\n", + " of two maps on different qubits.\n", + " \n", + " :param list k1: The Kraus operators for the first qubit.\n", + " :param list k2: The Kraus operators for the second qubit.\n", + " :return: A list of tensored Kraus operators.\n", + " \"\"\"\n", + " return [np.kron(k1j, k2l) for k1j in k1 for k2l in k2]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "199/200, CPU times: user 1.88 s, sys: 143 ms, total: 2.03 s\n", + "Wall time: 4.21 s\n" + ] + } + ], + "source": [ + "%%time\n", + "# single step damping probabilities\n", + "ps = np.linspace(.001, .5, 200)\n", + "\n", + "# number of program executions\n", + "trials = 500\n", + "\n", + "results = []\n", + "\n", + "for jj, p in enumerate(ps):\n", + "\n", + " corrupted_CZ = append_kraus_to_gate(\n", + " tensor_kraus_maps(\n", + " dephasing_kraus_map(p),\n", + " dephasing_kraus_map(p)\n", + " ), \n", + " np.diag([1, 1, 1, -1]))\n", + "\n", + " \n", + " print(\"\\r{}/{}, \".format(jj, len(ps)), end=\"\")\n", + " \n", + " # make Bell-state\n", + " p = Program(H(0), H(1), CZ(0,1), H(1))\n", + " ro = p.declare(\"ro\", memory_size=2)\n", + " p.inst(MEASURE(0, ro[0]))\n", + " p.inst(MEASURE(1, ro[1]))\n", + " \n", + " # overload identity I on qc 0\n", + " p.define_noisy_gate(\"CZ\", [0, 1], corrupted_CZ)\n", + " p.wrap_in_numshots_loop(trials)\n", + " qc.qam.random_seed = jj\n", + " res = qc.run(p).readout_data.get(\"ro\")\n", + " results.append(res)\n", + " \n", + "results = np.array(results)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "Z1s = (2*results[:,:,0]-1.)\n", + "Z2s = (2*results[:,:,1]-1.)\n", + "Z1Z2s = Z1s * Z2s\n", + "\n", + "Z1m = np.mean(Z1s, axis=1)\n", + "Z2m = np.mean(Z2s, axis=1)\n", + "Z1Z2m = np.mean(Z1Z2s, axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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RFdcgktorWlsbLzgUgqdWUj3P8CDwH+VUv9RSi1RSi2yefzLfV0VQggh7OvoKFNHKKUIGBRNzKyxJDwzmaibRxI4tB8lXx4j919fcGzhBxR/dhDvPoE0Vte1eL45UDCPtriyal97r4M7z91Z1vO37C1QLER34uXlxbRp01i9enWLfSdPniQlJYXc3FwWL17MPffc02ZbN954I3fddRcDBw5s87jVq1dz88034+PjY9l25513kpWVxX333UdwcDBz58617Dt+/DhXXXUVISEhjB8/nqNHjwJQWVnJk08+SUJCAtHR0cyePZvCwu9/V+bn5zN79mz69u1LfHw8CxcupKamxrI/MTGR3/72t1x11VUEBQXxu9/9jmuuuaZZX9etW0d8fLxlpK63UVprxw5UahywCdNcqNZorXXrY5ldYMyYMXr37t2e7IIQQogLkNaampMFlgIUDeeriJg8HO+wAPwSIglIisIrwBeAok0HKFi5j8gpwztV6KEjI0rmoKm7FpkoWLnXMn8reuYoT3dHOCEjI4Pk5GRPd6PLrFq1ipkzZ7J//35GjhwJwKlTp5g4cSLZ2dm888473H///U61t3DhQjIzM1vsy8jIYNiwYXz44YfMnj272T57850SExMJDAxkzZo1JCQkcN9991FZWcm6deu46667aGxs5O233yYwMJAFCxZw7tw51q1bB8CkSZOIiorin//8J+Xl5cyYMYNrr72Wv/71r5a2fXx8WLNmDRdffDGFhYUkJiaSlpbGkCFDALj99tsZOnQoL730klOvqas4ci8qpfZorcd0pH1nxtv+DtQBM4AvtNYlHTmhEEII0RsppQi4qC8BF/Wl76yxVJ8swDvUn/qiSrJf24qxvpHgkfH4xfXh/PbDhIwe2OlCDx1Je+vORSa6UzEOIdozefJkAgICWL16NSNHjqS4uJiUlBSysrKYOnUqBoOBZcuW2X1ucnIyo0ePdvhcq1evxtfXl6lTpzr8nMcee4zBgwcDcP/99/PQQw9RUFDAihUryMvLIzIyEoDf/e53xMTEcP78eaqqqti2bRvZ2dmEhIQQEhLCCy+8wL333msJoAAeffRRS4ASExPDbbfdxuLFi3nppZcoLCxk3bp1/PGPf3S4rz2NMwHUSOB5rfXado8UQgghLmDKoAgc3BcA376hxPxwPOeWfk1Vxlkq9mWBl6Ls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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(14, 6))\n", + "plt.axhline(y=1.0, color=FUSCHIA, alpha=.5, label=\"Bell state\")\n", + "\n", + "plt.plot(ps, Z1Z2m, \"x\", c=FUSCHIA, label=r\"$\\overline{Z_1 Z_2}$\")\n", + "plt.plot(ps, 1-2*ps, \"--\", c=FUSCHIA, label=r\"$\\langle Z_1 Z_2\\rangle_{\\rm theory}$\")\n", + "\n", + "plt.plot(ps, Z1m, \"o\", c=DARK_TEAL, label=r\"$\\overline{Z}_1$\")\n", + "plt.plot(ps, 0*ps, \"--\", c=DARK_TEAL, label=r\"$\\langle Z_1\\rangle_{\\rm theory}$\")\n", + "\n", + "plt.plot(ps, Z2m, \"d\", c=\"k\", label=r\"$\\overline{Z}_2$\")\n", + "plt.plot(ps, 0*ps, \"--\", c=\"k\", label=r\"$\\langle Z_2\\rangle_{\\rm theory}$\")\n", + "\n", + "plt.xlabel(r\"Dephasing probability $p$\", size=18)\n", + "plt.ylabel(r\"$Z$-moment\", size=18)\n", + "plt.title(r\"$Z$-moments for a Bell-state prepared with dephased CZ\", size=18)\n", + "plt.xlim(0, .5)\n", + "plt.legend(fontsize=18)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/tutorials/LaTeXQuilCircuits.ipynb b/tutorials/LaTeXQuilCircuits.ipynb new file mode 100644 index 0000000..e3f891e --- /dev/null +++ b/tutorials/LaTeXQuilCircuits.ipynb @@ -0,0 +1,224 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "from pyquil.quil import Program, Declare, MemoryReference\n", + "from pyquil.gates import *\n", + "from pyquil.latex import to_latex, display" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Basic Functionality: LaTeX generation and inline IPython display\n", + "\n", + "There are two main functions exposed:\n", + "\n", + "- `to_latex` produces LaTeX source code for producing figures.\n", + "- `display` renders to an `IPython.display.Image` object.\n", + "\n", + "**NOTE**: The `display` function requires that `pdflatex` and Imagemagick's `convert` are installed and available in the user's path." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\\documentclass[convert={density=300,outext=.png}]{standalone}\n", + "\\usepackage[margin=1in]{geometry}\n", + "\\usepackage{tikz}\n", + "\\usetikzlibrary{quantikz}\n", + "\\begin{document}\n", + "\\begin{tikzcd}\n", + "\\lstick{\\ket{q_{0}}} & \\gate{X} & \\ctrl{1} & \\qw & \\meter{} & \\qw \\\\\n", + "\\lstick{\\ket{q_{1}}} & \\qw & \\targ{} & \\gate{H} & \\meter{} & \\qw\n", + "\\end{tikzcd}\n", + "\\end{document}\n" + ] + } + ], + "source": [ + "p = Program()\n", + "ro = p.declare('ro', 'BIT', 2)\n", + "p += X(0)\n", + "p += CNOT(0, 1)\n", + "p += H(1)\n", + "p += MEASURE(0, ro[0])\n", + "p += MEASURE(1, ro[1])\n", + "\n", + "print(to_latex(p))" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": { + "image/png": { + "width": 300 + } + }, + "output_type": "execute_result" + } + ], + "source": [ + "# extra kwargs are passed are passed straight to `IPython.display.Image`\n", + "display(p, width=300)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Controlling display through DiagramSettings\n", + "\n", + "Certain options may be controlled via a `DiagramSettings` object, which may be provided to either `to_latex` or `display`. For more info, read the docstrings on `DiagramSettings`!" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": { + "image/png": { + "width": 300 + } + }, + "output_type": "execute_result" + } + ], + "source": [ + "from pyquil.latex import DiagramSettings\n", + "\n", + "custom_p = Program()\n", + "custom_p += RX(np.pi/2, 0)\n", + "custom_p += RX(np.pi/2, 1)\n", + "custom_p += CNOT(0,1)\n", + "custom_p += X(1).dagger()\n", + "\n", + "settings = DiagramSettings(\n", + " label_qubit_lines=False, # no leading q_0, q_1\n", + " abbreviate_controlled_rotations=True, # RX(pi/2) -> X_{pi/2}\n", + ")\n", + "\n", + "display(custom_p, settings, width=300)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Controlling layout via gate groups\n", + "\n", + "In general, we do not give much explicit control over circuit layout. One exception is if a subcircuit should be grouped together (for example, to label this within the larger figure). The mechanism exposed for this is via two new pragmas:\n", + "- `PRAGMA LATEX_GATE_GROUP ?` marks a start of a block of instructions for rendering as a group. If a string `` is provided, this will serve as a label in the resulting diagram.\n", + "- `PRAGMA END_LATEX_GATE_GROUP` marks the end of a grouped block of instructions." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cool_p = Program(\"\"\"H 1\n", + "CNOT 2 1\n", + "DAGGER T 1\n", + "CNOT 0 1\n", + "T 1\n", + "CNOT 2 1\n", + "PRAGMA LATEX_GATE_GROUP \"cool gates\"\n", + "DAGGER T 1\n", + "CNOT 0 1\n", + "SWAP 0 1\n", + "T 0\n", + "PRAGMA END_LATEX_GATE_GROUP\n", + "DAGGER T 2\n", + "CNOT 1 2\n", + "H 0\n", + "DAGGER T 2\n", + "CNOT 1 2\n", + "T 0\n", + "S 2\n", + "\"\"\")\n", + "\n", + "display(cool_p)" + ] + } + ], + "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.7.11" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/tutorials/MeyerPennyGame.ipynb b/tutorials/MeyerPennyGame.ipynb new file mode 100644 index 0000000..8b19ad4 --- /dev/null +++ b/tutorials/MeyerPennyGame.ipynb @@ -0,0 +1,108 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Meyer Penny Game" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "import pyquil.quil as pq\n", + "from pyquil import api, get_qc\n", + "from pyquil.gates import I, H, X\n", + "\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "def meyer_penny_program():\n", + " \"\"\"\n", + " Returns the program to simulate the Meyer-Penny Game\n", + " The full description is available at https://pyquil-docs.rigetti.com/en/stable/exercises.html#example-the-meyer-penny-game\n", + "\n", + " :return: pyQuil Program\n", + " \"\"\"\n", + " prog = pq.Program()\n", + " ro = prog.declare(\"ro\", memory_size=2)\n", + " picard_register = ro[1]\n", + " answer_register = ro[0]\n", + "\n", + " then_branch = pq.Program(X(0))\n", + " else_branch = pq.Program(I(0))\n", + "\n", + " # Prepare Qubits in Heads state or superposition, respectively\n", + " prog.inst(X(0), H(1))\n", + " # Q puts the coin into a superposition\n", + " prog.inst(H(0))\n", + " # Picard makes a decision and acts accordingly\n", + " prog.measure(1, picard_register)\n", + " prog.if_then(picard_register, then_branch, else_branch)\n", + " # Q undoes his superposition operation\n", + " prog.inst(H(0))\n", + " # The outcome is recorded into the answer register\n", + " prog.measure(0, answer_register)\n", + "\n", + " return prog" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of games: 10\n", + "Q's winning average: 1.0\n", + "Picard's flip-decision average: 0.5\n" + ] + } + ], + "source": [ + "n_trials = 10\n", + "qvm = get_qc(\"2q-qvm\")\n", + "program = meyer_penny_program()\n", + "program.wrap_in_numshots_loop(n_trials)\n", + "outcomes = qvm.run(program).readout_data.get(\"ro\")\n", + "\n", + "print(\"Number of games: {}\".format(n_trials))\n", + "print(\"Q's winning average: {}\".format(outcomes[:, 0].mean()))\n", + "print(\"Picard's flip-decision average: {}\".format(outcomes[:, 1].mean()))" + ] + } + ], + "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.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/tutorials/NoiseInvestigation.ipynb b/tutorials/NoiseInvestigation.ipynb new file mode 100644 index 0000000..428d05b --- /dev/null +++ b/tutorials/NoiseInvestigation.ipynb @@ -0,0 +1,272 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Investigating Noise\n", + "\n", + "In this example, we investigate how a program might behave on a near-term device that is subject to noise using the convenience function `add_decoherence_noise`." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from pyquil import Program\n", + "from pyquil.paulis import PauliSum, PauliTerm, exponentiate, exponential_map\n", + "from pyquil.gates import MEASURE, H, Z, RX, RZ, CZ\n", + "import numpy as np" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The task\n", + "We want to prepare $e^{i \\theta XY}$ and measure it in the $Z$ basis." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from numpy import pi\n", + "theta = pi/3\n", + "xy = PauliTerm('X', 0) * PauliTerm('Y', 1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The idiomatic Pyquil program" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H 0\n", + "RX(pi/2) 1\n", + "CNOT 0 1\n", + "RZ(2*pi/3) 1\n", + "CNOT 0 1\n", + "H 0\n", + "RX(-pi/2) 1\n", + "\n" + ] + } + ], + "source": [ + "prog = exponential_map(xy)(theta)\n", + "print(prog)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The compiled program\n", + "To run on a real device, we must compile each program to the native gate set for the device. The high-level noise model is similarly constrained to use a small, native gate set. In particular, we can use\n", + "\n", + " - $I$\n", + " - $RZ(\\theta)$\n", + " - $RX(\\pm \\pi/2)$\n", + " - $CZ$\n", + "\n", + "For simplicity, the compiled program is given below but generally you will want to use a compiler to do this step for you." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def get_compiled_prog(theta):\n", + " return Program([\n", + " RZ(-pi/2, 0),\n", + " RX(-pi/2, 0),\n", + " RZ(-pi/2, 1),\n", + " RX( pi/2, 1),\n", + " CZ(1, 0),\n", + " RZ(-pi/2, 1),\n", + " RX(-pi/2, 1),\n", + " RZ(theta, 1),\n", + " RX( pi/2, 1),\n", + " CZ(1, 0),\n", + " RX( pi/2, 0),\n", + " RZ( pi/2, 0),\n", + " RZ(-pi/2, 1),\n", + " RX( pi/2, 1),\n", + " RZ(-pi/2, 1),\n", + " ])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Scan over noise parameters\n", + "We perform a scan over three levels of noise each at 20 theta points.\n", + "\n", + "Specifically, we investigate T1 values of 1, 3, and 10 us. By default, T2 = T1 / 2, 1 qubit gates take 50 ns, and 2 qubit gates take 150 ns. \n", + "\n", + "In alignment with the device, $I$ and parametric $RZ$ are noiseless while $RX$ and $CZ$ gates experience 1q and 2q gate noise, respectively." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "from pyquil import get_qc\n", + "qc = get_qc('8q-qvm')" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 1. , 3.16227766, 10. ])" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "t1s = np.logspace(-6, -5, num=3)\n", + "thetas = np.linspace(-pi, pi, num=20)\n", + "t1s * 1e6 # us" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "from pyquil.noise import add_decoherence_noise\n", + "records = []\n", + "for theta in thetas:\n", + " for t1 in t1s:\n", + " prog = get_compiled_prog(theta)\n", + " ro = prog.declare(\"ro\", memory_size=2)\n", + " noisy = add_decoherence_noise(prog, T1=t1, T2=t1/2).inst([\n", + " MEASURE(0, ro[0]),\n", + " MEASURE(1, ro[1]),\n", + " ])\n", + " bitstrings = np.array(qc.run(noisy.wrap_in_numshots_loop(1000)).readout_data.get(\"ro\"))\n", + " \n", + " # Expectation of Z0 and Z1\n", + " z0, z1 = 1 - 2*np.mean(bitstrings, axis=0)\n", + " \n", + " # Expectation of ZZ by computing the parity of each pair\n", + " zz = 1 - (np.sum(bitstrings, axis=1) % 2).mean() * 2 \n", + " \n", + " record = {\n", + " 'z0': z0,\n", + " 'z1': z1,\n", + " 'zz': zz,\n", + " 'theta': theta,\n", + " 't1': t1,\n", + " }\n", + " records += [record]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot the results" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "from matplotlib import pyplot as plt\n", + "import seaborn as sns\n", + "sns.set(style='ticks', palette='colorblind')" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import pandas as pd\n", + "df_all = pd.DataFrame(records)\n", + "fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(12,4))\n", + "\n", + "for t1 in t1s:\n", + " df = df_all.query('t1 == @t1')\n", + " \n", + " ax1.plot(df['theta'], df['z0'], 'o-') \n", + " ax2.plot(df['theta'], df['z1'], 'o-') \n", + " ax3.plot(df['theta'], df['zz'], 'o-', label='T1 = {:.0f} us'.format(t1*1e6))\n", + " \n", + "ax3.legend(loc='best')\n", + "\n", + "ax1.set_ylabel('Z0')\n", + "ax2.set_ylabel('Z1')\n", + "ax3.set_ylabel('ZZ')\n", + "ax2.set_xlabel(r'$\\theta$')\n", + "fig.tight_layout()" + ] + } + ], + "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.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/tutorials/QuantumDie.ipynb b/tutorials/QuantumDie.ipynb new file mode 100644 index 0000000..d47bdb1 --- /dev/null +++ b/tutorials/QuantumDie.ipynb @@ -0,0 +1,123 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quantum Die" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import math\n", + "from pyquil import Program, get_qc\n", + "from pyquil.gates import H" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def qubits_needed(number_of_sides):\n", + " \"\"\"\n", + " The number of qubits needed for a die of n faces.\n", + " \"\"\"\n", + " return int(math.ceil(math.log(number_of_sides, 2)))\n", + "\n", + "\n", + "def get_qvm(number_of_sides):\n", + " \"\"\"\n", + " Get a QVM to simulate the requested number of sides.\n", + " \"\"\"\n", + " return get_qc(f\"{qubits_needed(number_of_sides)}q-qvm\")\n", + "\n", + "\n", + "def die_program(number_of_sides):\n", + " \"\"\"\n", + " Generate a quantum program to roll a die of n faces.\n", + " \"\"\"\n", + " prog = Program()\n", + " n_qubits = qubits_needed(number_of_sides)\n", + " ro = prog.declare(\"ro\", \"BIT\", n_qubits)\n", + " # Hadamard initialize.\n", + " for q in range(n_qubits):\n", + " prog.inst(H(q))\n", + " # Measure everything.\n", + " for q in range(n_qubits):\n", + " prog.measure(q, ro[q])\n", + " return prog\n", + "\n", + "\n", + "def process_results(results):\n", + " \"\"\"\n", + " Convert n digit binary result from the QVM to a value on a die.\n", + " \"\"\"\n", + " raw_results = results[0]\n", + " processing_result = 0\n", + " for each_qubit_measurement in raw_results:\n", + " processing_result = 2 * processing_result + each_qubit_measurement\n", + " # Convert from 0 indexed to 1 indexed\n", + " die_value = processing_result + 1\n", + " return die_value\n", + "\n", + "\n", + "def roll_die(qvm, number_of_sides):\n", + " \"\"\"\n", + " Roll an n-sided quantum die.\n", + " \"\"\"\n", + " die_compiled = qvm.compile(die_program(number_of_sides))\n", + " return process_results(qvm.run(die_compiled).readout_data.get(\"ro\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The result is: 4\n" + ] + } + ], + "source": [ + "number_of_sides = 5\n", + "\n", + "qvm = get_qvm(number_of_sides)\n", + "die_value = roll_die(qvm, number_of_sides)\n", + "while die_value > number_of_sides:\n", + " die_value = roll_die(qvm, number_of_sides)\n", + "print(f\"The result is: {die_value}\")" + ] + } + ], + "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.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/tutorials/QuantumTeleportation.ipynb b/tutorials/QuantumTeleportation.ipynb new file mode 100644 index 0000000..1b45e49 --- /dev/null +++ b/tutorials/QuantumTeleportation.ipynb @@ -0,0 +1,181 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quantum Teleportation" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "from pyquil.quil import Program\n", + "from pyquil import api\n", + "from pyquil.pyqvm import PyQVM\n", + "from pyquil.gates import X, Z, H, CNOT" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "def make_bell_pair(q1, q2):\n", + " \"\"\"Makes a bell pair between qubits q1 and q2\n", + " \"\"\"\n", + " return Program(H(q1), CNOT(q1, q2))\n", + "\n", + "\n", + "def teleport(start_index, end_index, ancilla_index):\n", + " \"\"\"Teleport a qubit from start to end using an ancilla qubit\n", + " \"\"\"\n", + " program = make_bell_pair(end_index, ancilla_index)\n", + "\n", + " ro = program.declare(\"ro\", memory_size=3)\n", + "\n", + " # do the teleportation\n", + " program.inst(CNOT(start_index, ancilla_index))\n", + " program.inst(H(start_index))\n", + "\n", + " # measure the results and store them in classical registers [0] and [1]\n", + " program.measure(start_index, ro[0])\n", + " program.measure(ancilla_index, ro[1])\n", + "\n", + " program.if_then(ro[1], X(2))\n", + " program.if_then(ro[0], Z(2))\n", + "\n", + " program.measure(end_index, ro[2])\n", + "\n", + " print(program)\n", + " return program" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H 2\n", + "CNOT 2 1\n", + "DECLARE ro BIT[3]\n", + "CNOT 0 1\n", + "H 0\n", + "MEASURE 0 ro[0]\n", + "MEASURE 1 ro[1]\n", + "JUMP-WHEN @THEN1 ro[1]\n", + "JUMP @END2\n", + "LABEL @THEN1\n", + "X 2\n", + "LABEL @END2\n", + "JUMP-WHEN @THEN3 ro[0]\n", + "JUMP @END4\n", + "LABEL @THEN3\n", + "Z 2\n", + "LABEL @END4\n", + "MEASURE 2 ro[2]\n", + "\n", + "Teleporting |1> state: 1\n", + "H 2\n", + "CNOT 2 1\n", + "DECLARE ro BIT[3]\n", + "CNOT 0 1\n", + "H 0\n", + "MEASURE 0 ro[0]\n", + "MEASURE 1 ro[1]\n", + "JUMP-WHEN @THEN1 ro[1]\n", + "JUMP @END2\n", + "LABEL @THEN1\n", + "X 2\n", + "LABEL @END2\n", + "JUMP-WHEN @THEN3 ro[0]\n", + "JUMP @END4\n", + "LABEL @THEN3\n", + "Z 2\n", + "LABEL @END4\n", + "MEASURE 2 ro[2]\n", + "\n", + "Teleporting |0> state: 1\n", + "H 2\n", + "CNOT 2 1\n", + "DECLARE ro BIT[3]\n", + "CNOT 0 1\n", + "H 0\n", + "MEASURE 0 ro[0]\n", + "MEASURE 1 ro[1]\n", + "JUMP-WHEN @THEN1 ro[1]\n", + "JUMP @END2\n", + "LABEL @THEN1\n", + "X 2\n", + "LABEL @END2\n", + "JUMP-WHEN @THEN3 ro[0]\n", + "JUMP @END4\n", + "LABEL @THEN3\n", + "Z 2\n", + "LABEL @END4\n", + "MEASURE 2 ro[2]\n", + "\n", + "Teleporting |+> state: [0, 1, 1, 0, 1, 0, 1, 0, 1, 0]\n" + ] + } + ], + "source": [ + "qvm = PyQVM(3)\n", + "\n", + "# initialize qubit 0 in |1>\n", + "teleport_demo = Program(X(0))\n", + "teleport_demo += teleport(0, 2, 1)\n", + "qvm.execute_once(teleport_demo)\n", + "print(\"Teleporting |1> state: {}\".format(qvm.ram[\"ro\"][2]))\n", + "\n", + "# initialize qubit 0 in |0>\n", + "teleport_demo = Program()\n", + "teleport_demo += teleport(0, 2, 1)\n", + "qvm.execute_once(teleport_demo)\n", + "print(\"Teleporting |0> state: {}\".format(qvm.ram[\"ro\"][2]))\n", + "\n", + "# initialize qubit 0 in |+>\n", + "teleport_demo = Program(H(0))\n", + "teleport_demo += teleport(0, 2, 1)\n", + "results = [qvm.execute_once(teleport_demo).ram[\"ro\"][2] for _ in range(10)]\n", + "print(\"Teleporting |+> state: {}\".format(results))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/tutorials/QuantumWalk.ipynb b/tutorials/QuantumWalk.ipynb new file mode 100644 index 0000000..ee60d4c --- /dev/null +++ b/tutorials/QuantumWalk.ipynb @@ -0,0 +1,389 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quantum Walk" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import networkx as nx\n", + "import matplotlib.pyplot as plt\n", + "from scipy.linalg import expm\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we perform a continuous time quantum walk (CTQW) on a complete graph with four nodes (denoted as $K_4$). We will be following [this](https://www.nature.com/articles/ncomms11511) paper." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "G = nx.complete_graph(4)\n", + "nx.draw_networkx(G)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The spectrum of complete graphs is quite simple -- one eigenvalue equal to $N-1$ (where $N$ is the number of nodes) and the remaining equal to -1:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[-1. -1. -1. 3.]\n" + ] + } + ], + "source": [ + "A = nx.adjacency_matrix(G).toarray()\n", + "eigvals, _ = np.linalg.eigh(A)\n", + "print(eigvals)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For the CTQW the usual hamiltonian is the adjacency matrix $A$. We modify it slightly by adding the identity, i.e. we take $\\mathcal{H} = A + I$. This will reduce the number of gates we need to apply, since the eigenvectors with 0 eigenvalue will not acquire a phase." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "hamil = A + np.eye(4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It turns out that $K_n$ graphs are Hadamard diagonalizable, allowing us to write $\\mathcal{H} = Q \\Lambda Q^\\dagger$, where $Q = H \\otimes H$. Let's check that this works." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 4.00000000e+00, -4.93038066e-32, -4.93038066e-32,\n", + " 4.93038066e-32],\n", + " [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00],\n", + " [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00],\n", + " [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00]])" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "had = np.sqrt(1/2) * np.array([[1, 1], [1, -1]])\n", + "Q = np.kron(had, had)\n", + "Q.conj().T.dot(hamil).dot(Q)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The time evolution operator $e^{-iHt}$ is also diagonalized by the same transformation. In particular we have\n", + "\n", + "$$\n", + "Q^\\dagger e^{-iHt}Q = \\begin{pmatrix} \n", + " e^{-i4t} & 0 & 0 & 0 \\\\\n", + " 0 & 1 & 0 & 0 \\\\\n", + " 0 & 0 & 1 & 0 \\\\\n", + " 0 & 0 & 0 & 1\n", + " \\end{pmatrix}\n", + "$$\n", + "\n", + "Which is just a [CPHASE00](http://docs.rigetti.com/en/stable/apidocs/autogen/pyquil.gates.CPHASE00.html#pyquil.gates.CPHASE00) gate with an angle of $-4t$." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "from pyquil import Program\n", + "from pyquil.api import WavefunctionSimulator\n", + "from pyquil.gates import H, X, CPHASE00\n", + "from pyquil.latex import display" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "wfn_sim = WavefunctionSimulator()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "def k_4_ctqw(t):\n", + " # Change to diagonal basis\n", + " p = Program(H(0), H(1), X(0), X(1))\n", + " \n", + " # Time evolve\n", + " p += CPHASE00(-4*t, 0, 1)\n", + " \n", + " # Change back to computational basis\n", + " p += Program(X(0), X(1), H(0), H(1))\n", + " \n", + " return p" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "display(k_4_ctqw(1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's compare the quantum walk with a classical random walk. The classical time evolution operator is $e^{-(\\mathcal{T} - I) t}$ where $\\mathcal{T}$ is the transition matrix of the graph.\n", + "\n", + "We choose as our initial condition $\\left| \\psi(0) \\right\\rangle = \\left| 0 \\right\\rangle$, that is the walker starts on the first node. Therefore, due to symmetry, the probability of occupation of all nodes besides $\\left| 0 \\right\\rangle$ is the same. " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "T = A / np.sum(A, axis=0)\n", + "time = np.linspace(0, 4, 40)\n", + "quantum_probs = np.zeros((len(time), 4))\n", + "classical_probs = np.zeros((len(time), 4))\n", + "\n", + "for i, t in enumerate(time):\n", + " p = k_4_ctqw(t) \n", + " wvf = wfn_sim.wavefunction(p)\n", + " vec = wvf.amplitudes\n", + " quantum_probs[i] = np.abs(vec)**2\n", + "\n", + " classical_ev = expm((T-np.eye(4))*t)\n", + " classical_probs[i] = classical_ev[:, 0] \n", + " \n", + "f, (ax1, ax2) = plt.subplots(2, sharex=True, sharey=True)\n", + "\n", + "ax1.set_title(\"Quantum evolution\")\n", + "ax1.set_ylabel('p')\n", + "ax1.plot(time, quantum_probs[:, 0], label='Initial node')\n", + "ax1.plot(time, quantum_probs[:, 1], label='Remaining nodes')\n", + "ax1.legend(loc='center left', bbox_to_anchor=(1, 0.5))\n", + "\n", + "ax2.set_title(\"Classical evolution\")\n", + "ax2.set_xlabel('t')\n", + "ax2.set_ylabel('p')\n", + "ax2.plot(time, classical_probs[:, 0], label='Initial node')\n", + "ax2.plot(time, classical_probs[:, 1], label='Remaining nodes')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As expected the quantum walk exhbits coherent oscillations whilst the classical walk converges to the stationary distribution $p_i = \\frac{d_i}{\\sum_j d_j} = \\frac{1}{4}$.\n", + "\n", + "We can readily generalize this scheme to any $K_{2^n}$ graphs." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "def k_2n_ctqw(n, t):\n", + " p = Program()\n", + " \n", + " # Change to diagonal basis\n", + " for i in range(n):\n", + " p += Program(H(i), X(i))\n", + "\n", + " # Create and apply CPHASE00\n", + " big_cphase00 = np.diag(np.ones(2**n)) + 0j\n", + " big_cphase00[0, 0] = np.exp(-1j*4*t)\n", + " p.defgate(\"BIG-CPHASE00\", big_cphase00) \n", + " args = tuple([\"BIG-CPHASE00\"] + list(range(n)))\n", + " p.inst(args)\n", + "\n", + " # Change back to computational basis\n", + " for i in range(n):\n", + " p += Program(X(i), H(i))\n", + " \n", + " return p\n", + "\n", + "def k_2n_crw(n, t):\n", + " G = nx.complete_graph(2**n)\n", + " A = nx.adjacency_matrix(G)\n", + " T = A / A.sum(axis=0)\n", + " classical_ev = expm((T-np.eye(2**n))*t)\n", + " \n", + " return classical_ev[:, 0] \n", + "\n", + "time = np.linspace(0, 4, 40)\n", + "quantum_probs = np.zeros((len(time), 8))\n", + "classical_probs = np.zeros((len(time), 8))\n", + "\n", + "for i, t in enumerate(time):\n", + " p = k_2n_ctqw(3, t) \n", + " wvf = wfn_sim.wavefunction(p)\n", + " vec = wvf.amplitudes\n", + " quantum_probs[i] = np.abs(vec)**2\n", + " classical_probs[i] = k_2n_crw(3, t) \n", + " \n", + "f, (ax1, ax2) = plt.subplots(2, sharex=True, sharey=True)\n", + "\n", + "ax1.set_title(\"Quantum evolution\")\n", + "ax1.set_ylabel('p')\n", + "ax1.plot(time, quantum_probs[:, 0], label='Initial node')\n", + "ax1.plot(time, quantum_probs[:, 1], label='Remaining nodes')\n", + "ax1.legend(loc='center left', bbox_to_anchor=(1, 0.5))\n", + "\n", + "ax2.set_title(\"Classical evolution\")\n", + "ax2.set_xlabel('t')\n", + "ax2.set_ylabel('p')\n", + "ax2.plot(time, classical_probs[:, 0], label='Initial node')\n", + "ax2.plot(time, classical_probs[:, 1], label='Remaining nodes')" + ] + } + ], + "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.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/tutorials/QubitPlaceholder.ipynb b/tutorials/QubitPlaceholder.ipynb new file mode 100644 index 0000000..3f2405d --- /dev/null +++ b/tutorials/QubitPlaceholder.ipynb @@ -0,0 +1,208 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Using `QubitPlaceholder`s" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In PyQuil, we typically use integers to identify qubits" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H 0\n", + "CNOT 0 1\n", + "\n" + ] + } + ], + "source": [ + "from pyquil import Program\n", + "from pyquil.gates import CNOT, H\n", + "print(Program(H(0), CNOT(0, 1)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "However, when running on real, near-term QPUs we care about what particular physical qubits our program will run on. In fact, we may want to run the same program on an assortment of different qubits. This is where using `QubitPlaceholder`s comes in." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H {q139732448986704}\n", + "CNOT {q139732448986704} {q139732448986768}\n", + "\n" + ] + } + ], + "source": [ + "from pyquil.quilatom import QubitPlaceholder\n", + "q0 = QubitPlaceholder()\n", + "q1 = QubitPlaceholder()\n", + "prog = Program(H(q0), CNOT(q0, q1))\n", + "print(prog)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you try to use this program directly, it will not work" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Qubit q139732448986704 has not been assigned an index\n" + ] + } + ], + "source": [ + "try:\n", + " print(prog.out())\n", + "except RuntimeError as e:\n", + " print(e)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Instead, you must explicitly map the placeholders to physical qubits. By default, the function `address_qubits` will address qubits from 0 to N." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H 0\n", + "CNOT 0 1\n", + "\n" + ] + } + ], + "source": [ + "from pyquil.quil import address_qubits\n", + "print(address_qubits(prog))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The real power comes into play when you provide an explicit mapping" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H 14\n", + "CNOT 14 19\n", + "\n" + ] + } + ], + "source": [ + "print(address_qubits(prog, qubit_mapping={\n", + " q0: 14,\n", + " q1: 19,\n", + "}))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Register\n", + "Usually, your algorithm will use an assortment of qubits. You can use the convenience function `QubitPlaceholder.register()` to request a list of qubits to build your program." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H 0\n", + "H 2\n", + "H 4\n", + "H 6\n", + "H 8\n", + "H 10\n", + "H 12\n", + "H 14\n", + "\n" + ] + } + ], + "source": [ + "qbyte = QubitPlaceholder.register(8)\n", + "prog2 = Program(H(q) for q in qbyte)\n", + "print(address_qubits(prog2, {q: i*2 for i, q in enumerate(qbyte)}))" + ] + } + ], + "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.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/tutorials/ReadoutNoise.ipynb b/tutorials/ReadoutNoise.ipynb new file mode 100644 index 0000000..09834c5 --- /dev/null +++ b/tutorials/ReadoutNoise.ipynb @@ -0,0 +1,716 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Simulating Readout Noise" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Theoretical Overview" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Qubit-Readout can be corrupted in a variety of ways. The two most relevant error mechanisms on the Rigetti QPU right now are:\n", + "\n", + "1. Transmission line noise that makes a 0-state look like a 1-state or vice versa. We call this **classical readout bit-flip error**. This type of readout noise can be reduced by tailoring optimal readout pulses and using superconducting, quantum limited amplifiers to amplify the readout signal before it is corrupted by classical noise at the higher temperature stages of our cryostats.\n", + "2. T1 qubit decay during readout (our readout operations can take more than a µsecond unless they have been specially optimized), which leads to readout signals that initially behave like 1-states but then collapse to something resembling a 0-state. We will call this **T1-readout error**. This type of readout error can be reduced by achieving shorter readout pulses relative to the T1 time, i.e., one can try to reduce the readout pulse length, or increase the T1 time or both." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Qubit measurements\n", + "\n", + "This section provides the necessary theoretical foundation for accurately modeling noisy quantum measurements on superconducting quantum processors. It relies on some of the abstractions (density matrices, Kraus maps) introduced in our notebook on [gate noise models](GateNoiseModels.ipynb).\n", + "\n", + "The most general type of measurement performed on a single qubit at a single time can be characterized by some set $\\mathcal{O}$ of measurement outcomes, e.g., in the simplest case $\\mathcal{O} = \\{0, 1\\}$, and some unnormalized quantum channels (see notebook on gate noise models) that encapsulate\n", + "1. the probability of that outcome\n", + "2. how the qubit state is affected conditional on the measurement outcome.\n", + "\n", + "Here the _outcome_ is understood as classical information that has been extracted from the quantum system.\n", + "\n", + "### Projective, ideal measurement\n", + "The simplest case that is usually taught in introductory quantum mechanics and quantum information courses are Born's rule and the projection postulate which state that there exist a complete set of orthogonal projection operators \n", + "$$\n", + "P_{\\mathcal{O}} := \\{\\Pi_x \\text{ Projector }\\mid x \\in \\mathcal{O}\\},\n", + "$$\n", + "i.e., one for each measurement outcome. Any projection operator must satisfy $\\Pi_x^\\dagger = \\Pi_x = \\Pi_x^2$ and for an _orthogonal_ set of projectors any two members satisfy \n", + "$$\n", + "\\Pi_x\\Pi_y = \\delta_{xy} \\Pi_x = \\begin{cases} 0 & \\text{ if } x \\ne y \\\\ \\Pi_x & \\text{ if } x = y \\end{cases}\n", + "$$\n", + "and for a _complete_ set we additionally demand that $\\sum_{x\\in\\mathcal{O}} \\Pi_x = 1$.\n", + "Following our introduction to gate noise, we write quantum states as density matrices as this is more general and in closer correspondence with classical probability theory.\n", + "\n", + "With these the probability of outcome $x$ is given by $p(x) = \\tr{\\Pi_x \\rho \\Pi_x} = \\tr{\\Pi_x^2 \\rho} = \\tr{\\Pi_x \\rho}$ and the post measurement state is\n", + "$$\n", + "\\rho_x = \\frac{1}{p(x)} \\Pi_x \\rho \\Pi_x,\n", + "$$\n", + "which is the projection postulate applied to mixed states.\n", + "\n", + "If we were a sloppy quantum programmer and accidentally erased the measurement outcome then our best guess for the post measurement state would be given by something that looks an awful lot like a Kraus map:\n", + "$$\n", + "\\rho_{\\text{post measurement}} = \\sum_{x\\in\\mathcal{O}} p(x) \\rho_x = \\sum_{x\\in\\mathcal{O}} \\Pi_x \\rho \\Pi_x.\n", + "$$\n", + "The completeness of the projector set ensures that the trace of the post measurement is still 1 and the Kraus map form of this expression ensures that $\\rho_{\\text{post measurement}}$ is a positive (semi-)definite operator.\n", + "\n", + "### Classical readout bit-flip error\n", + "\n", + "Consider now the ideal measurement as above, but where the outcome $x$ is transmitted across a noisy classical channel that produces a final outcome $x'\\in \\mathcal{O}' = \\{0', 1'\\}$ according to some conditional probabilities $p(x'|x)$ that can be recorded in the _assignment probability matrix_\n", + "$$\n", + "P_{x'|x} = \\begin{pmatrix} \n", + "p(0 | 0) & p(0 | 1) \\\\\n", + "p(1 | 0) & p(1 | 1)\n", + "\\end{pmatrix}\n", + "$$\n", + "Note that this matrix has only two independent parameters as each column must be a valid probability distribution, i.e. all elements are non-negative and each column sums to 1.\n", + "\n", + "This matrix allows us to obtain the probabilities $\\mathbf{p}' := (p(x'=0), p(x'=1))^T$ from the original outcome probabilities $\\mathbf{p} := (p(x=0), p(x=1))^T$ via $\\mathbf{p}' = P_{x'|x}\\mathbf{p}$.\n", + "The difference relative to the ideal case above is that now an outcome $x' = 0$ does not necessarily imply that the post measurement state is truly $\\Pi_{0} \\rho \\Pi_{0} / p(x=0)$. Instead, the post measurement state given a noisy outcome $x'$ must be\n", + "\\begin{align}\n", + "\\rho_{x'} & = \\sum_{x\\in \\mathcal{O}} p(x|x') \\rho_x \\\\\n", + " & = \\sum_{x\\in \\mathcal{O}} p(x'|x)\\frac{p(x)}{p(x')} \\rho_x \\\\\n", + " & = \\frac{1}{p(x')}\\sum_{x\\in \\mathcal{O}} p(x'|x) \\Pi_x \\rho \\Pi_x\n", + "\\end{align}\n", + "where \n", + "\\begin{align}\n", + "p(x') & = \\sum_{x\\in\\mathcal{O}} p(x'|x) p(x) \\\\\n", + "& = \\tr{\\sum_{x\\in \\mathcal{O}} p(x'|x) \\Pi_x \\rho \\Pi_x} \\\\\n", + "& = \\tr{\\rho \\sum_{x\\in \\mathcal{O}} p(x'|x)\\Pi_x} \\\\\n", + "& = \\tr{\\rho E_x'}.\n", + "\\end{align}\n", + "where we have exploited the cyclical property of the trace $\\tr{ABC}=\\tr{BCA}$ and the projection property $\\Pi_x^2 = \\Pi_x$. This has allowed us to derive the noisy outcome probabilities from a set of positive operators\n", + "$$\n", + "E_{x'} := \\sum_{x\\in \\mathcal{O}} p(x'|x)\\Pi_x \\ge 0\n", + "$$\n", + "that must sum to 1: \n", + "$$\n", + "\\sum_{x'\\in\\mathcal{O}'} E_x' = \\sum_{x\\in\\mathcal{O}}\\underbrace{\\left[\\sum_{x'\\in\\mathcal{O}'} p(x'|x)\\right]}_{1}\\Pi_x = \\sum_{x\\in\\mathcal{O}}\\Pi_x = 1.\n", + "$$\n", + "The above result is a type of generalized **Bayes' theorem** that is extremely useful for this type of (slightly) generalized measurement and the family of operators $\\{E_{x'}| x' \\in \\mathcal{O}'\\}$ whose expectations give the probabilities is called a **positive operator valued measure** (POVM). These operators are not generally orthogonal nor valid projection operators but they naturally arise in this scenario. This is not yet the most general type of measurement, but it will get us pretty far." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### How to model $T_1$ error\n", + "T1 type errors fall outside our framework so far as they involve a scenario in which the _quantum state itself_ is corrupted during the measurement process in a way that potentially erases the pre-measurement information as opposed to a loss of purely classical information. The most appropriate framework for describing this is given by that of measurement instruments, but for the practical purpose of arriving at a relatively simple description, we propose describing this by a T1 damping Kraus map followed by the noisy readout process as described above." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Further reading\n", + "Chapter 3 of John Preskill's lecture notes http://www.theory.caltech.edu/people/preskill/ph229/notes/chap3.pdf" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## How do I get started?\n", + "\n", + "1. Come up with a good guess for your readout noise parameters $p(0|0)$ and $p(1|1)$, the off-diagonals then follow from the normalization of $P_{x'|x}$. If your assignment fidelity $F$ is given, and you assume that the classical bit flip noise is roughly symmetric, then a good approximation is to set $p(0|0)=p(1|1)=F$.\n", + "2. For your QUIL program `p`, and a qubit index `q` call:\n", + " ```\n", + " p.define_noisy_readout(q, p00, p11)\n", + " ```\n", + " where you should replace `p00` and `p11` with the assumed probabilities.\n", + "\n", + "### Estimate $P_{x'|x}$ yourself!\n", + "You can also run some simple experiments to estimate the assignment probability matrix directly from a QPU.\n", + "\n", + "**Scroll down for some examples!**" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "from pyquil import get_qc\n", + "from pyquil.quil import Program, MEASURE, Pragma\n", + "from pyquil.gates import I, X, RX, H, CNOT\n", + "from pyquil.noise import (estimate_bitstring_probs, correct_bitstring_probs, \n", + " bitstring_probs_to_z_moments, estimate_assignment_probs)\n", + "\n", + "DARK_TEAL = '#48737F'\n", + "FUSCHIA = '#D6619E'\n", + "BEIGE = '#EAE8C6'\n", + "\n", + "qvm = get_qc(\"3q-qvm\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 1: Rabi sequence with noisy readout" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 3.37 s, sys: 158 ms, total: 3.53 s\n", + "Wall time: 4.29 s\n" + ] + } + ], + "source": [ + "%%time\n", + "\n", + "# number of angles\n", + "num_theta = 101\n", + "\n", + "# number of program executions\n", + "trials = 200\n", + "\n", + "thetas = np.linspace(0, 2*np.pi, num_theta)\n", + "\n", + "p00s = [1., 0.95, 0.9, 0.8]\n", + "\n", + "results_rabi = np.zeros((num_theta, len(p00s)))\n", + "\n", + "for jj, theta in enumerate(thetas):\n", + " for kk, p00 in enumerate(p00s):\n", + " p = Program(RX(theta, 0))\n", + " ro = p.declare(\"ro\")\n", + " # assume symmetric noise p11 = p00\n", + " p.define_noisy_readout(0, p00=p00, p11=p00)\n", + " p.measure(0, ro[0])\n", + " p.wrap_in_numshots_loop(trials)\n", + " res = qvm.run(p).readout_data.get(\"ro\")\n", + " results_rabi[jj, kk] = np.sum(res)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Effect of classical readout noise on Rabi contrast.')" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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r82awz0TXiErswkj+vclq2l6jVxPQJMkMwsG/g/oB+QAi8xsinPue59mvwe2O+eam9lQ4B/AZcdynpKSEnLzt7MuN4+cvG0UFReX2Xb77j3MXfo923fvJTI8jJ7t2tCrUzs6Ns8kWEvmRERERETKFBURzuXnnM0Fp3djyhcLMTPO7phFakIjANatW1dhH2ZGUsM4zsvuTJ/O7Zm58Fsmz5rNqKdfpGur5gzv34cWaY39eh2BnknKBlY759YAmNlrwCDAN0kaBNzr/f0t4CkzM+d8VzAeaX9hIW/Pnuezb2gLBQcPViqgsJAQurVpQe/O7ejWugVhoaFVuCwRERERkborNiqKYef2Ou5+QkNCuOD0bpzTtQPvz13EG59+wU2PP0vPdm24pPcZ1I+OOv5gSxHoJCkV2ODzOgfoXlYb51yRme0EGgFby+o0b8cunpv6IQ1io0lPTqR/jy5kJCeSkZLIKYkJhIeVnfgYEFTFh2KJiIiIiEj1iwgL4+LePenfowvvzPmSt+d8ydylK/x2vkAnSdXGzK4DrgNITE7h//1+KLGREUc2KikiL3dzAKITf9q2bVugQ5AapPGuezTmdYvGu27ReNc91THmZ7TKpGOTFJb/vPHwI3eqYsYjZX8W6CRpI+D70KA073ultckxsxCgPp4CDkdwzj0LPAvQvn17165Na78ELCemjIyMQIcgNUjjXfdozOsWjXfdovGue6przLOO8/v+FeV8Fuh1ZYuAFmaWaWZhwFBgylFtpgAjvL9fDHxS3n4kERERERGR4xHQmSTvHqM/AzPxlAB/wTm33MzGAV8556YAzwMvm9lqIB9PIiUiIiIiIuIXgV5uh3NuOjD9qPfG+Px+ALikpuMSEREREZG6KdDL7URERERERE4oSpJERERERER8KEkSERERERHxoSRJRERERETEh5IkERERERERH0qSREREREREfChJEhERERER8aEkSURERERExIeSJBERERERER9KkkRERERERHwoSRIREREREfGhJElERERERMSHkiQREREREREfSpJERERERER8KEkSERERERHxoSRJRERERETEh5IkERERERERH0qSREREREREfChJEhERERER8aEkSURERERExIeSJBERERERER9KkkRERERERHyYcy7QMVQ7M9sNrAp0HFJj4oGtgQ5CaozGu+7RmNct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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(14, 6))\n", + "for jj, (p00, c) in enumerate(zip(p00s, [DARK_TEAL, FUSCHIA, \"k\", \"gray\"])):\n", + " plt.plot(thetas, results_rabi[:, jj]/trials, c=c, label=r\"$p(0|0)=p(1|1)={:g}$\".format(p00))\n", + "plt.legend(loc=\"best\")\n", + "plt.xlim(*thetas[[0,-1]])\n", + "plt.ylim(-.1, 1.1)\n", + "plt.grid(alpha=.5)\n", + "plt.xlabel(r\"RX angle $\\theta$ [radian]\", size=16)\n", + "plt.ylabel(r\"Excited state fraction $n_1/n_{\\rm trials}$\", size=16)\n", + "plt.title(\"Effect of classical readout noise on Rabi contrast.\", size=18)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2: Estimate the assignment probabilities" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Estimate assignment probabilities for a perfect quantum computer" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1., 0.],\n", + " [0., 1.]])" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "estimate_assignment_probs(0, 1000, qvm, Program())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Re-Estimate assignment probabilities for an imperfect quantum computer" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "header0 = Program().define_noisy_readout(0, .85, .95)\n", + "header1 = Program().define_noisy_readout(1, .8, .9)\n", + "header2 = Program().define_noisy_readout(2, .9, .85)\n", + "\n", + "ap0 = estimate_assignment_probs(0, 100000, qvm, header0)\n", + "ap1 = estimate_assignment_probs(1, 100000, qvm, header1)\n", + "ap2 = estimate_assignment_probs(2, 100000, qvm, header2)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[0.85016 0.05043]\n", + " [0.14984 0.94957]]\n", + "[[0.80056 0.09864]\n", + " [0.19944 0.90136]]\n", + "[[0.90175 0.1499 ]\n", + " [0.09825 0.8501 ]]\n" + ] + } + ], + "source": [ + "print(ap0, ap1, ap2, sep=\"\\n\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3: Use `pyquil.noise.correct_bitstring_probs` to correct for noisy readout\n", + "\n", + "### 3a) Correcting the Rabi signal from above" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "ap_last = np.array([[p00s[-1], 1 - p00s[-1]], \n", + " [1 - p00s[-1], p00s[-1]]])\n", + "corrected_last_result = [correct_bitstring_probs([1-p, p], [ap_last])[1] for p in results_rabi[:, -1] / trials]" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Corrected contrast')" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(14, 6))\n", + "for jj, (p00, c) in enumerate(zip(p00s, [DARK_TEAL, FUSCHIA, \"k\", \"gray\"])):\n", + " if jj not in [0, 3]:\n", + " continue\n", + " plt.plot(thetas, results_rabi[:, jj]/trials, c=c, label=r\"$p(0|0)=p(1|1)={:g}$\".format(p00), alpha=.3)\n", + "plt.plot(thetas, corrected_last_result, c=\"red\", label=r\"Corrected $p(0|0)=p(1|1)={:g}$\".format(p00s[-1]))\n", + "plt.legend(loc=\"best\")\n", + "plt.xlim(*thetas[[0,-1]])\n", + "plt.ylim(-.1, 1.1)\n", + "plt.grid(alpha=.5)\n", + "plt.xlabel(r\"RX angle $\\theta$ [radian]\", size=16)\n", + "plt.ylabel(r\"Excited state fraction $n_1/n_{\\rm trials}$\", size=16)\n", + "plt.title(\"Corrected contrast\", size=18)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**We find that the corrected signal is fairly noisy (and sometimes exceeds the allowed interval $[0,1]$) due to the overall very small number of samples $n=200$.**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3b) In this example we will create a GHZ state $\\frac{1}{\\sqrt{2}}\\left[\\left|000\\right\\rangle + \\left|111\\right\\rangle \\right]$ and measure its outcome probabilities with and without the above noise model. We will then see how the Pauli-Z moments that indicate the qubit correlations are corrupted (and corrected) using our API." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "DECLARE ro BIT[3]\n", + "H 0\n", + "CNOT 0 1\n", + "CNOT 1 2\n", + "MEASURE 0 ro[0]\n", + "MEASURE 1 ro[1]\n", + "MEASURE 2 ro[2]\n", + "\n" + ] + } + ], + "source": [ + "ghz_prog = Program()\n", + "ro = ghz_prog.declare(\"ro\", \"BIT\", 3)\n", + "ghz_prog += H(0)\n", + "ghz_prog += CNOT(0, 1)\n", + "ghz_prog += CNOT(1, 2)\n", + "ghz_prog += MEASURE(0, ro[0])\n", + "ghz_prog += MEASURE(1, ro[1])\n", + "ghz_prog += MEASURE(2, ro[2])\n", + "ghz_prog.wrap_in_numshots_loop(10_000)\n", + "print(ghz_prog)\n", + "results = qvm.run(ghz_prog).readout_data.get(\"ro\")" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "PRAGMA READOUT-POVM 0 \"(0.85 0.050000000000000044 0.15000000000000002 0.95)\"\n", + "PRAGMA READOUT-POVM 1 \"(0.8 0.09999999999999998 0.19999999999999996 0.9)\"\n", + "PRAGMA READOUT-POVM 2 \"(0.9 0.15000000000000002 0.09999999999999998 0.85)\"\n", + "DECLARE ro BIT[3]\n", + "H 0\n", + "CNOT 0 1\n", + "CNOT 1 2\n", + "MEASURE 0 ro[0]\n", + "MEASURE 1 ro[1]\n", + "MEASURE 2 ro[2]\n", + "\n" + ] + } + ], + "source": [ + "header = header0 + header1 + header2\n", + "noisy_ghz = header + ghz_prog\n", + "noisy_ghz.wrap_in_numshots_loop(10_000)\n", + "print(noisy_ghz)\n", + "noisy_results = qvm.run(noisy_ghz).readout_data.get(\"ro\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Uncorrupted probability for $\\left|000\\right\\rangle$ and $\\left|111\\right\\rangle$" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.4988, 0.5012)" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "probs = estimate_bitstring_probs(results)\n", + "probs[0, 0, 0], probs[1, 1, 1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As expected the outcomes `000` and `111` each have roughly probability $1/2$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Corrupted probability for $\\left|000\\right\\rangle$ and $\\left|111\\right\\rangle$" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.3053, 0.3666)" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "noisy_probs = estimate_bitstring_probs(noisy_results)\n", + "noisy_probs[0, 0, 0], noisy_probs[1, 1, 1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The noise-corrupted outcome probabilities deviate significantly from their ideal values!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Corrected probability for $\\left|000\\right\\rangle$ and $\\left|111\\right\\rangle$" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.4967080931878832, 0.5011032122603556)" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "corrected_probs = correct_bitstring_probs(noisy_probs, [ap0, ap1, ap2])\n", + "corrected_probs[0, 0, 0], corrected_probs[1, 1, 1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The corrected outcome probabilities are much closer to the ideal value." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Estimate $\\langle Z_0^{j} Z_1^{k} Z_2^{\\ell}\\rangle$ for $jkl=100, 010, 001$ from non-noisy data\n", + "*We expect these to all be very small*" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(-0.0023999999999999577, -0.0023999999999999577, -0.0023999999999999577)" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zmoments = bitstring_probs_to_z_moments(probs)\n", + "zmoments[1, 0, 0], zmoments[0, 1, 0], zmoments[0, 0, 1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Estimate $\\langle Z_0^{j} Z_1^{k} Z_2^{\\ell}\\rangle$ for $jkl=110, 011, 101$ from non-noisy data\n", + "*We expect these to all be close to 1.*" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(1.0, 1.0, 1.0)" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zmoments[1, 1, 0], zmoments[0, 1, 1], zmoments[1, 0, 1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Estimate $\\langle Z_0^{j} Z_1^{k} Z_2^{\\ell}\\rangle$ for $jkl=100, 010, 001$ from noise-corrected data" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.0012629262376051553, -0.01111237747891497, -0.013633038505021178)" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zmoments_corr = bitstring_probs_to_z_moments(corrected_probs)\n", + "zmoments_corr[1, 0, 0], zmoments_corr[0, 1, 0], zmoments_corr[0, 0, 1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Estimate $\\langle Z_0^{j} Z_1^{k} Z_2^{\\ell}\\rangle$ for $jkl=110, 011, 101$ from noise-corrected data" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(1.0123976913156443, 0.9871857722457993, 0.9916617582315121)" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zmoments_corr[1, 1, 0], zmoments_corr[0, 1, 1], zmoments_corr[1, 0, 1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Overall the correction can restore the contrast in our multi-qubit observables, though we also see that the correction can lead to slightly non-physical expectations. This effect is reduced the more samples we take." + ] + } + ], + "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.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/tutorials/datasets/h2-hamiltonian-coefficients.csv b/tutorials/datasets/h2-hamiltonian-coefficients.csv new file mode 100644 index 0000000..f58361e --- /dev/null +++ b/tutorials/datasets/h2-hamiltonian-coefficients.csv @@ -0,0 +1,55 @@ +R,I0I1,Z0,Z1,Z0Z1,X0X1,Y0Y1 +0.2,2.8489,0.5678,-1.4508,0.6799,0.0791,0.0791 +0.25,2.1868,0.5449,-1.287,0.6719,0.0798,0.0798 +0.3,1.7252,0.5215,-1.1458,0.6631,0.0806,0.0806 +0.35,1.3827,0.4982,-1.0226,0.6537,0.0815,0.0815 +0.4,1.1182,0.4754,-0.9145,0.6438,0.0825,0.0825 +0.45,0.9083,0.4534,-0.8194,0.6336,0.0835,0.0835 +0.5,0.7381,0.4325,-0.7355,0.6233,0.0846,0.0846 +0.55,0.5979,0.4125,-0.6612,0.6129,0.0858,0.0858 +0.6,0.4808,0.3937,-0.595,0.6025,0.087,0.087 +0.65,0.3819,0.376,-0.5358,0.5921,0.0883,0.0883 +0.7,0.2976,0.3593,-0.4826,0.5818,0.0896,0.0896 +0.75,0.2252,0.3435,-0.4347,0.5716,0.091,0.091 +0.8,0.1626,0.3288,-0.3915,0.5616,0.0925,0.0925 +0.85,0.1083,0.3149,-0.3523,0.5518,0.0939,0.0939 +0.9,0.0609,0.3018,-0.3168,0.5421,0.0954,0.0954 +0.95,0.0193,0.2895,-0.2845,0.5327,0.097,0.097 +1.0,-0.0172,0.2779,-0.255,0.5235,0.0986,0.0986 +1.05,-0.0493,0.2669,-0.2282,0.5146,0.1002,0.1002 +1.1,-0.0778,0.2565,-0.2036,0.5059,0.1018,0.1018 +1.15,-0.1029,0.2467,-0.181,0.4974,0.1034,0.1034 +1.2,-0.1253,0.2374,-0.1603,0.4892,0.105,0.105 +1.25,-0.1452,0.2286,-0.1413,0.4812,0.1067,0.1067 +1.3,-0.1629,0.2203,-0.1238,0.4735,0.1083,0.1083 +1.35,-0.1786,0.2123,-0.1077,0.466,0.11,0.11 +1.4,-0.1927,0.2048,-0.0929,0.4588,0.1116,0.1116 +1.45,-0.2053,0.1976,-0.0792,0.4518,0.1133,0.1133 +1.5,-0.2165,0.1908,-0.0666,0.4451,0.1149,0.1149 +1.55,-0.2265,0.1843,-0.0549,0.4386,0.1165,0.1165 +1.6,-0.2355,0.1782,-0.0442,0.4323,0.1181,0.1181 +1.65,-0.2436,0.1723,-0.0342,0.4262,0.1196,0.1196 +1.7,-0.2508,0.1667,-0.0251,0.4204,0.1211,0.1211 +1.75,-0.2573,0.1615,-0.0166,0.4148,0.1226,0.1226 +1.8,-0.2632,0.1565,-0.0088,0.4094,0.1241,0.1241 +1.85,-0.2684,0.1517,-0.0015,0.4042,0.1256,0.1256 +1.9,-0.2731,0.1472,0.0052,0.3992,0.127,0.127 +1.95,-0.2774,0.143,0.0114,0.3944,0.1284,0.1284 +2.0,-0.2812,0.139,0.0171,0.3898,0.1297,0.1297 +2.05,-0.2847,0.1352,0.0223,0.3853,0.131,0.131 +2.1,-0.2879,0.1316,0.0272,0.3811,0.1323,0.1323 +2.15,-0.2908,0.1282,0.0317,0.3769,0.1335,0.1335 +2.2,-0.2934,0.1251,0.0359,0.373,0.1347,0.1347 +2.25,-0.2958,0.1221,0.0397,0.3692,0.1359,0.1359 +2.3,-0.298,0.1193,0.0432,0.3655,0.137,0.137 +2.35,-0.3,0.1167,0.0465,0.362,0.1381,0.1381 +2.4,-0.3018,0.1142,0.0495,0.3586,0.1392,0.1392 +2.45,-0.3035,0.1119,0.0523,0.3553,0.1402,0.1402 +2.5,-0.3051,0.1098,0.0549,0.3521,0.1412,0.1412 +2.55,-0.3066,0.1078,0.0572,0.3491,0.1422,0.1422 +2.6,-0.3079,0.1059,0.0594,0.3461,0.1432,0.1432 +2.65,-0.3092,0.1042,0.0614,0.3433,0.1441,0.1441 +2.7,-0.3104,0.1026,0.0632,0.3406,0.145,0.145 +2.75,-0.3115,0.1011,0.0649,0.3379,0.1458,0.1458 +2.8,-0.3125,0.0997,0.0665,0.3354,0.1467,0.1467 +2.85,-0.3135,0.0984,0.0679,0.3329,0.1475,0.1475