diff --git a/docs/guides/algorithmiq-tem.ipynb b/docs/guides/algorithmiq-tem.ipynb index 14dc905a1f4..c18750f98cc 100644 --- a/docs/guides/algorithmiq-tem.ipynb +++ b/docs/guides/algorithmiq-tem.ipynb @@ -1,18 +1,17 @@ { "cells": [ - { - "cell_type": "markdown", - "id": "f7d9993f", - "metadata": {}, - "source": [ - "{/* cspell:ignore POVM, mathbf, Filippov, Lindblad, Leahy, Rossi, García, Pérez, Minev, Kandala, Temme, informationally */}" - ] - }, { "cell_type": "markdown", "id": "dde95705", "metadata": {}, "source": [ + "---\n", + "title: Tensor-network error mitigation (TEM) - A Qiskit Function by Algorithmiq\n", + "description: Introduction to TEM, a Qiskit Function by Algorithmiq, to compute estimations with software post-processing error mitigation using tensor networks.\n", + "---\n", + "\n", + "{/* cspell:ignore POVM, mathbf, Filippov, Lindblad, Leahy, Rossi, García, Pérez, Minev, Kandala, Temme, informationally */}\n", + "\n", "# Tensor-network error mitigation (TEM): A Qiskit Function by Algorithmiq\n", "\n", "\n", diff --git a/docs/tutorials/_toc.json b/docs/tutorials/_toc.json index 7d80dc85b76..df63295dac7 100644 --- a/docs/tutorials/_toc.json +++ b/docs/tutorials/_toc.json @@ -166,6 +166,10 @@ { "title": "Simulate 2D tilted-field Ising with the QESEM function", "url": "/docs/tutorials/qedma-2d-ising-with-qesem" + }, + { + "title": "Simulate a kicked Ising model with the TEM function", + "url": "/docs/tutorials/algorithmiq-tem" } ] }, diff --git a/docs/tutorials/algorithmiq-tem.ipynb b/docs/tutorials/algorithmiq-tem.ipynb index a2a1d32b343..695bd180449 100644 --- a/docs/tutorials/algorithmiq-tem.ipynb +++ b/docs/tutorials/algorithmiq-tem.ipynb @@ -2,17 +2,23 @@ "cells": [ { "cell_type": "markdown", + "id": "e6e50bd6-8ac4-40b1-ac0f-6e22b6af1377", "metadata": {}, "source": [ - "# Tensor-network error mitigation (TEM)\n", + "---\n", + "title: Simulate a kicked Ising model with the TEM function\n", + "description: Introduction to TEM, a Qiskit Function by Algorithmiq, to compute estimations with software post-processing error mitigation using tensor networks.\n", + "---\n", + "# Simulate a kicked Ising model with the TEM function\n", "\n", - "Algorithmiq’s Tensor-network Error Mitigation (TEM) method is a hybrid quantum-classical algorithm designed for performing noise mitigation entirely at the classical post-processing stage. With TEM, the user can compute the expectation values of observables mitigating the inevitable noise-induced errors that occur on quantum hardware with increased accuracy and cost efficiency, making it a highly attractive option for quantum researchers and industry practitioners alike.\n", + "Algorithmiq's Tensor-network Error Mitigation (TEM) method is a hybrid quantum-classical algorithm designed for performing noise mitigation entirely at the classical post-processing stage. With TEM, the user can compute the expectation values of observables mitigating the inevitable noise-induced errors that occur on quantum hardware with increased accuracy and cost efficiency, making it a highly attractive option for quantum researchers and industry practitioners alike.\n", "\n", "In this tutorial, we will showcase how TEM allows to obtain meaningful results for the dynamics of a quantum system, which would be inaccessible without error mitigation and require substantially more quantum resources if other error mitigation methods such as PEC and ZNE are used." ] }, { "cell_type": "markdown", + "id": "1f5e328d-fe93-4ee2-995b-2e70b36ea0de", "metadata": {}, "source": [ "# Running error mitigated many-body physics experiments with TEM function" @@ -20,6 +26,7 @@ }, { "cell_type": "markdown", + "id": "b63a662c-a4e9-4b5f-92fd-46352a2bd0bd", "metadata": {}, "source": [ "This tutorial is based on the following reference: [L. E. Fischer et al., Nat. Phys. (2026)](https://www.nature.com/articles/s41567-025-03144-9). This reference discusses a real simulation on quantum hardware of up to 91 qubits. In this tutorial, we are going to recreate a similar simulation on a smaller circuit size.\n", @@ -31,13 +38,14 @@ "\n", "The quantity we want to observe is the correlation function. The [reference paper](https://www.nature.com/articles/s41567-025-03144-9) discusses how this quantity can be rewritten as just an $\\hat{X}$ Pauli operator on the $n-th$ qubit.\n", "After a number of physical time steps $t$, we compute the value of the Pauli operator $\\hat{X}_{n=t}$.\n", - "Depending on the parameters of the system, the value of this observable will be equal to a value that can be computed exactly, or only simulated through approximate methods. Specifically, for $|J|=|b|=\\pi/4$ it is equal to $[\\cos(2h)]^t$, which will be the value we will use to benchmark the results of this tutorial. Furthermore, at the given time step $t$, $\\langle\\hat{X}_{n\\neq t}\\rangle$ is zero. For more details on how to obtain these values, and for comparison with approximate classical simulation results outside of these parameters, see [L. E. Fischer et al., Nat. Phys. (2026)](https://www.nature.com/articles/s41567-025-03144-9). \n", + "Depending on the parameters of the system, the value of this observable will be equal to a value that can be computed exactly, or only simulated through approximate methods. Specifically, for $|J|=|b|=\\pi/4$ it is equal to $[\\cos(2h)]^t$, which will be the value we will use to benchmark the results of this tutorial. Furthermore, at the given time step $t$, $\\langle\\hat{X}_{n\\neq t}\\rangle$ is zero. For more details on how to obtain these values, and for comparison with approximate classical simulation results outside of these parameters, see [L. E. Fischer et al., Nat. Phys. (2026)](https://www.nature.com/articles/s41567-025-03144-9).\n", "\n", "TEM works by first characterizing the noise for each unique layer of two-qubit gates in the circuit, as well as characterizing the readout error. Then, the circuit is executed on the quantum machine. Finally, the tensor network error mitigation is performed on the classical resources of the IBM Cloud and the mitigated value is returned. In this example, the circuit has two unique layers to characterize." ] }, { "cell_type": "markdown", + "id": "243ecc1c-5ea6-48bf-b2ee-cb8c88875b86", "metadata": {}, "source": [ "# Table of Contents\n", @@ -50,13 +58,15 @@ }, { "cell_type": "markdown", + "id": "4b30f191-9759-49de-ba8f-7cc616b61ec6", "metadata": {}, "source": [ - "# Setup\n" + "# Setup" ] }, { "cell_type": "markdown", + "id": "9cf6d15e-324b-474a-886c-c3dca5a24141", "metadata": {}, "source": [ "As a prerequisite, ensure that the necessary dependencies are installed." @@ -65,6 +75,7 @@ { "cell_type": "code", "execution_count": null, + "id": "1eeec332-29ca-4882-8129-d1c93ed82b2b", "metadata": {}, "outputs": [], "source": [ @@ -74,6 +85,7 @@ { "cell_type": "code", "execution_count": 2, + "id": "ad0002b7-dbff-4699-af52-ba0df72ed200", "metadata": {}, "outputs": [], "source": [ @@ -89,6 +101,7 @@ }, { "cell_type": "markdown", + "id": "b95b9e75-37fe-4f86-a923-0a833c7960f8", "metadata": {}, "source": [ "# Error mitigation with TEM" @@ -96,6 +109,7 @@ }, { "cell_type": "markdown", + "id": "651a3f04-c8ba-4a39-8415-52d7e313ba2a", "metadata": {}, "source": [ "We provide here a circuit that implements the kicked Ising model described above. The circuit is prepared as follows. First, there is a state preparation phase, in which the first qubit is in the state $|+\\rangle$, while the others are in Bell pairs $(|00\\rangle + |11\\rangle)/\\sqrt{2}$. This is followed by the brickwork structure that implements the unitary evolution $\\hat{U}_{\\text{KI}}$. The number of physical time steps correspond to $t/2$ layers of the circuit." @@ -103,6 +117,7 @@ }, { "cell_type": "markdown", + "id": "1f6f9970-63fb-40f4-9586-261cba23cb88", "metadata": {}, "source": [ "Let's visualize a small version of the circuit, with 12 qubits and 6 time steps:" @@ -111,13 +126,13 @@ { "cell_type": "code", "execution_count": 3, + "id": "381a4e25-bc9c-47d0-b9f1-172eb5516484", "metadata": {}, "outputs": [ { "data": { - "image/png": "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N954g507d5Kfnw/AihUrCA4OrhHDdGKrlAMHDnDZZZdVfY6JianxedmyZdx00014e3vXqDdu3DiWL1/O5s2bueiii1TFlEgkEolEIpFIJJKGgqo7xK1bt+amm25i3rx5qlYmvuSSS/Dy8mLbtm1V35WVlbFr1y5CQ0NrlN25c2eNz//++y/dunUjOzub2NhYwsPDGTZsGD179qy666oWX19funbtSseOHc2eDFsjIyNDUR5ubm4MGDCAt99+m3379uHl5cWSJUsIDQ2ladOmnDt3jq5du9b4LyQkRFUuBw4cqHEnOyYmpsbnpUuXMnLkyKrPRqORcePGsWTJEjZs2EDnzp1VxZNIJBKJRCKRSCSShoS6s0EgMjKSAQMG0KdPH6ZPn87ll1+Ou7s7u3bt4tixY/Tu3btOHV9fX0aPHs2rr75Kq1at6NixIx988AGFhYU888wzNcqeO3eOl19+meeff569e/cyd+5cPvroIwICAmjdujVffvklHTp04Ny5c7z22mv2t9xOlOSxc+dO1q9fz80330y7du3YuXMnaWlp9OzZkxYtWjBp0iReeuklDAYDAwcOJCcnh23btuHn58cTTzwBwJIlS3j99dctPjZtMBg4fPgwb775ZtV3p06d4p577gEgNTWV3bt311g9e+zYsfzyyy8sXbqUFi1akJycDEDLli0dfndfIpFIJBKJRCKRSJwN1SfEl1xyCfv27SMiIoLXX3+d8+fP07RpU0JDQ5k0aRJjxowxW++9997DYDDw+OOPk5eXR58+fVizZg0BAQE1yv3vf/+jqKiIfv360aRJEyZOnMhzzz2Hm5sbv/32GxMmTKBXr15ceumlzJkzh+uvv96uhtuLu7u7zTz8/PzYvHkzn376Kbm5uVx88cV89NFH3HbbbQC88847tG3bllmzZnH69Gn8/f25+uqrmTp1atU2cnJy6jyaXp1Tp05RWFhY447wZZddxltvvUXv3r05duwY/fr1o02bNlX/f/78+QB1+uy7777jySefFOgViUQikUgkEolEInE93IzG/34LSNKgGDFiBAMHDmTy5Ml6pyKRSCQSiUQikUgkTokmq0xLnI+BAwfy8MMP652GRCKRSCQSiUQikTgt8g6xRCKRSCQSiUQikUgaJfIOsUQikUgkEolEIpFIGiWqF9VqTOzatQuoXMAKKhcUA+jbt69u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", "text/plain": [ - "
" + "\"Output" ] }, "execution_count": 3, @@ -141,6 +156,7 @@ }, { "cell_type": "markdown", + "id": "a674e407-504d-4812-82bf-98e91ec9a4b4", "metadata": {}, "source": [ "Let's now build the observable, $\\hat{X}_{n=t}$. It is constructed as a simple Pauli string with the order matching the one used by Qiskit:" @@ -149,6 +165,7 @@ { "cell_type": "code", "execution_count": 4, + "id": "a9a87f6c-176d-4c85-85e5-6751aea0c90b", "metadata": {}, "outputs": [], "source": [ @@ -160,6 +177,7 @@ }, { "cell_type": "markdown", + "id": "ba5f7042-4abd-4ae7-a091-591678377e8f", "metadata": {}, "source": [ "In our small 12 qubit, 6 time steps example, the observable looks like this:" @@ -168,6 +186,7 @@ { "cell_type": "code", "execution_count": 5, + "id": "b2608df1-b4e4-4143-bea5-a65ab8045fd4", "metadata": {}, "outputs": [ { @@ -187,6 +206,7 @@ }, { "cell_type": "markdown", + "id": "e588fafe-8db8-4445-8893-a78190b27b64", "metadata": {}, "source": [ "Qiskit functions use PUBs as the way to collect the inputs. In our case, let's consider a single circuit and observable as our PUB:" @@ -195,6 +215,7 @@ { "cell_type": "code", "execution_count": 6, + "id": "fc48eb54-148b-4b0d-8424-a135cb92039e", "metadata": {}, "outputs": [], "source": [ @@ -204,6 +225,7 @@ }, { "cell_type": "markdown", + "id": "9a4bcd8d-ae21-40ab-b0e2-510236ba92de", "metadata": {}, "source": [ "Next, we get access to the TEM qiskit function. Let's first set up the required authentication to the IBM cloud and select a backend from the available devices. The token, available backends and corresponding cloud resource names (CRN) can be obtained by logging in to your account at `https://quantum.cloud.ibm.com/`." @@ -212,6 +234,7 @@ { "cell_type": "code", "execution_count": 7, + "id": "6c9f80a8-4a65-4daa-94bb-a98edd6a1989", "metadata": {}, "outputs": [], "source": [ @@ -228,6 +251,7 @@ }, { "cell_type": "markdown", + "id": "10df1803-5245-42b2-8eea-c0773cd655b6", "metadata": {}, "source": [ "Let's load the TEM qiskit function from the qiskit function catalog:" @@ -236,6 +260,7 @@ { "cell_type": "code", "execution_count": 9, + "id": "2473b284-108f-45fe-a8d8-3aed584137f6", "metadata": {}, "outputs": [], "source": [ @@ -250,6 +275,7 @@ }, { "cell_type": "markdown", + "id": "3c732819-4dca-421c-bc2b-45ff5a5912db", "metadata": {}, "source": [ "We can now run an experiment on the kicked Ising circuit with error mitigation provided by TEM. Using default settings, TEM can be run in a simple way with an expected QPU run time of around 5 minutes depending on the chosen QPU:" @@ -258,6 +284,7 @@ { "cell_type": "code", "execution_count": 10, + "id": "b826e025-f36b-4fb5-90bd-e1ef36f5c1b2", "metadata": {}, "outputs": [], "source": [ @@ -266,6 +293,7 @@ }, { "cell_type": "markdown", + "id": "4b692a80-5a10-4131-9d7f-785fedbe4221", "metadata": {}, "source": [ "With default options, TEM function runs three jobs on the quantum computer: noise learning, readout mitigation and circuit sampling. The number of shots used by each of these can be changed in the options passed to the function. By default, these parameters are set to achieve a precision of 0.05 in the mitigated expectation values." @@ -273,6 +301,7 @@ }, { "cell_type": "markdown", + "id": "25b6f313-a928-493e-837f-45e6e7836aef", "metadata": {}, "source": [ "You can check the status of your job at [quantum.cloud.ibm.com](https://quantum.cloud.ibm.com/) or with:" @@ -281,6 +310,7 @@ { "cell_type": "code", "execution_count": 11, + "id": "05e202ff-5b86-4a93-a693-86fbb1cf3e02", "metadata": {}, "outputs": [ { @@ -297,6 +327,7 @@ }, { "cell_type": "markdown", + "id": "8e427c75-72fb-4a97-b723-97d695a692d3", "metadata": {}, "source": [ "We can now check the raw results and the mitigated ones. The `tem_evs` defined below are the expectation values of the requested observables, in this case just one observable, $\\langle \\hat X_{n=t}\\rangle$, and `tem_std` are the corresponding standard deviations." @@ -305,6 +336,7 @@ { "cell_type": "code", "execution_count": 12, + "id": "3ca34069-1363-4e37-9718-91639d817a82", "metadata": {}, "outputs": [ { @@ -317,7 +349,9 @@ ], "source": [ "# Get the results of the TEM job\n", - "tem_results = tem_job.result()[0] # Get the first and only result from the job\n", + "tem_results = tem_job.result()[\n", + " 0\n", + "] # Get the first and only result from the job\n", "tem_evs = tem_results.data.evs[0]\n", "tem_std = tem_results.data.stds[0]\n", "\n", @@ -326,6 +360,7 @@ }, { "cell_type": "markdown", + "id": "f90f503e-ab80-4550-a7cf-dfeea12babb0", "metadata": {}, "source": [ "We can also check how much quantum runtime was used for each call at [quantum.ibm.com](quantum.ibm.com), or inspecting the result metadata from the Python code." @@ -334,6 +369,7 @@ { "cell_type": "code", "execution_count": 13, + "id": "b05818d6-b680-483e-9084-f3fd2de067ab", "metadata": {}, "outputs": [ { @@ -346,15 +382,16 @@ ], "source": [ "# Get the runtime of the TEM job\n", - "tem_runtime = tem_job.result().metadata[\"resource_usage\"][\"RUNNING: EXECUTING_QPU\"][\n", - " \"QPU_TIME\"\n", - "]\n", + "tem_runtime = tem_job.result().metadata[\"resource_usage\"][\n", + " \"RUNNING: EXECUTING_QPU\"\n", + "][\"QPU_TIME\"]\n", "\n", "print(f\"TEM Runtime: {tem_runtime} seconds\")" ] }, { "cell_type": "markdown", + "id": "6be333a8-41c9-4ba9-b07d-a0ac50149add", "metadata": {}, "source": [ "## Customizing TEM parameters and advanced options" @@ -362,6 +399,7 @@ }, { "cell_type": "markdown", + "id": "abee6fc2-90d6-4608-ad21-c606c936dd94", "metadata": {}, "source": [ "The TEM Qiskit function provides several advanced options to customize your error mitigation workflow. These options allow you to control the precision, number of shots, noise learning strategies, and other parameters to better suit your experiment's requirements and available quantum resources.\n", @@ -380,6 +418,7 @@ }, { "cell_type": "markdown", + "id": "24db681c-b306-41e0-8507-626ef279b076", "metadata": {}, "source": [ "You can pass these options as a dictionary to the `options` argument when running the TEM function:" @@ -388,6 +427,7 @@ { "cell_type": "code", "execution_count": null, + "id": "a2e9a032-91cb-4a18-9a00-00a149e60459", "metadata": {}, "outputs": [], "source": [ @@ -403,6 +443,7 @@ }, { "cell_type": "markdown", + "id": "db700868-4dae-48c8-be1a-668ef2e63177", "metadata": {}, "source": [ "Custom options for the noise learner can also be passed. They follow the definitions used in the Qiskit [`NoiseLearnerOptions`](https://quantum.cloud.ibm.com/docs/en/api/qiskit-ibm-runtime/options-noise-learner-options):" @@ -411,6 +452,7 @@ { "cell_type": "code", "execution_count": 15, + "id": "30591014-3bc6-4548-ba0d-dc5cc22e9dcc", "metadata": {}, "outputs": [], "source": [ @@ -426,6 +468,7 @@ }, { "cell_type": "markdown", + "id": "216ad12c-8c70-4073-8515-b07fd57f74d4", "metadata": {}, "source": [ "Let's try re-running the experiment with these custom options specifically tuned to the circuit at hand. The expected runtime is around 15 QPU minutes." @@ -434,14 +477,18 @@ { "cell_type": "code", "execution_count": 16, + "id": "ebce8e14-433f-4858-96c6-9d90ff0353af", "metadata": {}, "outputs": [], "source": [ - "tem_job_custom = tem.run(pubs=pubs, backend_name=backend_name, options=options)" + "tem_job_custom = tem.run(\n", + " pubs=pubs, backend_name=backend_name, options=options\n", + ")" ] }, { "cell_type": "markdown", + "id": "bd8d2c12-c9da-4ac3-97c0-d53be1455091", "metadata": {}, "source": [ "If the job is not set as private, we can save the job id and recover the result at a later point:" @@ -450,6 +497,7 @@ { "cell_type": "code", "execution_count": 17, + "id": "0f99101b-9e72-45c8-8b00-9f3a257b8b3b", "metadata": {}, "outputs": [ { @@ -468,6 +516,7 @@ { "cell_type": "code", "execution_count": null, + "id": "22729b9e-be9c-4ded-b214-49f2b202577c", "metadata": {}, "outputs": [], "source": [ @@ -478,6 +527,7 @@ { "cell_type": "code", "execution_count": 19, + "id": "0c751dac-e856-4371-aaed-f67aca31061f", "metadata": {}, "outputs": [ { @@ -498,6 +548,7 @@ }, { "cell_type": "markdown", + "id": "edfef6f9-6bac-42bb-8bd2-95f977f7b31b", "metadata": {}, "source": [ "We can now inspect the results and the metadata to get insight into the experiment:" @@ -506,6 +557,7 @@ { "cell_type": "code", "execution_count": 20, + "id": "dd189b2d-860b-4b9a-88c2-7e5c62b1f160", "metadata": {}, "outputs": [ { @@ -532,13 +584,13 @@ { "cell_type": "code", "execution_count": 21, + "id": "c3a2168d-98df-491e-a1f8-05de5684ab96", "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAGdCAYAAADuR1K7AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAK+pJREFUeJzt3Xtc1HW+x/H3gHIxBUsU1FBM85YiKkdD66hFeXtoam2YJkrlWrrpSh6NUvBS4SklazV9eEFrT16ok267eTTlyJaKWiJezq5aXkJdQMkjCCogzPnD49gsl+aHA4M/X8/HYx4P5juf38xnKGbefn/f3+9nsVqtVgEAAJiEm6sbAAAAcCbCDQAAMBXCDQAAMBXCDQAAMBXCDQAAMBXCDQAAMBXCDQAAMBXCDQAAMJU6rm6gppWWluof//iHGjRoIIvF4up2AACAA6xWqy5fvqxmzZrJza3yuZm7Ltz84x//UGBgoKvbAAAAVXDmzBndf//9ldbcdeGmQYMGkm78cnx8fFzcDQAAcEReXp4CAwNt3+OVuevCzc1dUT4+PoQbAADuMI4sKWFBMQAAMBXCDQAAMBXCDQAAMBXCDQAAMBXCDQAAMBXCDQAAMBXCDQAAMBXCDQAAMBXCDQAAMBXCDQAAMBXCDQAAMBXCDQAAMBXCDQAAMBXCDQAAMBXCDQAAMBXCDQAAMBXCDQAAMBXCDQAAMBXCDQAAMBXCDQAAMBXCDQAAMBXCDQAAMBXCDQAAMBXCDQAAMBXCDQAAMBXCDQAAMBWXhptvvvlGQ4YMUbNmzWSxWLRp06Zf3SYlJUXdunWTp6en2rRpozVr1lR7nwAA4M7h0nBTUFCgLl26aMmSJQ7Vnzp1SoMHD1a/fv2Unp6u3//+93rppZe0devWau4UAADcKeq48sUHDhyogQMHOly/bNkytWrVSgsXLpQkdejQQTt37tT777+v/v37V1ebxhQUVPyYu7vk5eVYrZub5O1dtdorVySrtfxai0WqV69qtVevSqWlFfdxzz1Vq712TSopcU5tvXo3+pakwkLp+nXn1Hp73/g9S1JRkVRc7JxaL68b/18YrS0uvlFfEU9PqU4d47XXr9/4XVTEw0OqW9d4bUnJjf92Falb90a90drS0hv/rzmjtk6dG78L6cbfxJUrzqk18nfPZ0T5tXxGGK+tDZ8RrmStJSRZN27cWGnNo48+ap0yZYrdWGJiotXHx6fCba5du2bNzc213c6cOWOVZM3NzXVC1+W48TFQ/m3QIPvaevUqru3Tx77Wz6/i2tBQ+9qWLSuu7djRvrZjx4prW7a0rw0NrbjWz8++tk+fimvr1bOvHTSo8t/bLz3zTOW1+fm3aseOrbz2/PlbtRMnVl576tSt2mnTKq89cuRWbVxc5bX79t2qfffdymt37LhVu3hx5bV/+cut2tWrK69NSrpVm5RUee3q1bdq//KXymsXL75Vu2NH5bXvvnurdt++ymvj4m7VHjlSee20abdqT52qvHbixFu1589XXjt27K3a/PzKa595xmqnslo+I27c+Iy4dbuTPyOcLDc31+ro9/cdtaA4KytL/v7+dmP+/v7Ky8vT1Qr+RRYfHy9fX1/bLTAwsCZaBQAALmKxWq1WVzchSRaLRRs3btSwYcMqrGnbtq2ioqIUExNjG9u8ebMGDx6sK1euyPuX067/r7CwUIW/mELLy8tTYGCgcnNz5ePj49T3IIkp56rUMuVsvLY2TDmzW8qxWnZL3cJnhPHaO/kzwsny8vLk6+vr0Pe3S9fcGBUQEKDs7Gy7sezsbPn4+JQbbCTJ09NTnjc/hGrCL//IXFX7yw8bZ9ZW8Du+7dpffpg7s9bT89YXkDNrPTxufWG6qrZuXcc/QIzU1qlz60PMmbXu7o7/P2yk1s2temotluqplWpHLZ8RN/AZYbzWyN+9C91Ru6XCwsKUnJxsN7Zt2zaFhYW5qCMAAFDbuDTc5OfnKz09Xenp6ZJuHOqdnp6ujIwMSVJMTIwiIyNt9S+//LJOnjyp6dOn6+jRo/roo4+UlJSkqVOnuqJ9AABQC7k03Hz//ffq2rWrunbtKkmKjo5W165dFRsbK0nKzMy0BR1JatWqlb766itt27ZNXbp00cKFC7Vy5cracxg4AABwuVqzoLimGFmQBAAAagcj39931JobAACAX0O4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQDUCgUFBbJYLLJYLCqo7HISwK8g3AAAAFMh3AAAAFMh3AAAAFMh3AAAAFOp/dctB4BawpKS4uoWzO3qVduP9b/5RvL2dmEz5mft29fVLVQbZm4AAICpEG4AAICpEG4AAICpsOYGAFA7eHtLO3a4uguYADM3AADAVAg3AADAVAg3AADAVAg3AADAVAg3AADAVAg3AADAVAg3AADAVAg3AADAVAg3AADAVAg3AADAVAg3wP8rKCiQxWKRxWJRQUGBq9sBAFQR4QYAAJgK4QYAAJgKVwW/Q8yZM8fVLZheUVGR7ed33nlHHh4eLuzG/OLi4lzdAgCTYuYGAACYCuEGAACYCuEGAACYCmtugP/n4eGh2bNnu7oNAMBtYuYGAACYCuEGAACYCuEGAACYCuEGAACYCuEGAACYCuEGAACYCuEGAACYCuEGAACYCuEGAACYCuEGAACYCuEGAACYCuEGAACYCuEGAACYCuEGAACYCuEGAACYCuEGAACYCuEGAACYCuEGAACYCuEGAACYCuEGAACYCuEGAACYCuEGAACYCuEGAACYisvDzZIlSxQUFCQvLy/17NlT+/btq7R+0aJFateunby9vRUYGKipU6fq2rVrNdQtAACo7VwabjZs2KDo6GjFxcUpLS1NXbp0Uf/+/XX+/Ply69euXavXX39dcXFx+vvf/65Vq1Zpw4YNeuONN2q4cwAAUFu5NNwkJCRo/PjxioqKUseOHbVs2TLVq1dPiYmJ5dbv3r1bvXv31qhRoxQUFKQnn3xSzz333K/O9gAAgLuHy8JNUVGR9u/fr/Dw8FvNuLkpPDxcqamp5W7Tq1cv7d+/3xZmTp48qc2bN2vQoEEVvk5hYaHy8vLsbgAAwLzquOqFc3JyVFJSIn9/f7txf39/HT16tNxtRo0apZycHD3yyCOyWq26fv26Xn755Up3S8XHx2vOnDlO7R0AANReLl9QbERKSoreeecdffTRR0pLS9MXX3yhr776SvPmzatwm5iYGOXm5tpuZ86cqcGOAQBATXPZzI2fn5/c3d2VnZ1tN56dna2AgIByt5k1a5bGjBmjl156SZLUuXNnFRQU6Le//a3efPNNubmVzWqenp7y9PR0/hsAAAC1kstmbjw8PNS9e3clJyfbxkpLS5WcnKywsLByt7ly5UqZAOPu7i5Jslqt1dcsAAC4Y7hs5kaSoqOjNXbsWIWGhqpHjx5atGiRCgoKFBUVJUmKjIxU8+bNFR8fL0kaMmSIEhIS1LVrV/Xs2VM//vijZs2apSFDhthCDgAAuLu5NNxERETowoULio2NVVZWlkJCQrRlyxbbIuOMjAy7mZqZM2fKYrFo5syZOnfunBo3bqwhQ4bo7bffdtVbAAAAtYzFepftz8nLy5Ovr69yc3Pl4+Pj6nYcxhFfMJu4uDhXt2CYJSXF1S0ATmPt29fVLRhi5Pv7jjpaCgAA4NcQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKlUKdxcunRJK1euVExMjC5evChJSktL07lz55zaHAAAgFF1jG5w6NAhhYeHy9fXV6dPn9b48eN133336YsvvlBGRoY++eST6ugTAADAIYZnbqKjozVu3Dj98MMP8vLyso0PGjRI33zzjVObAwAAMMpwuPnuu+80YcKEMuPNmzdXVlaWU5oCAACoKsPhxtPTU3l5eWXGjx8/rsaNGzulKQAAgKoyHG6GDh2quXPnqri4WJJksViUkZGhGTNm6Omnn3Z6gwAAAEYYDjcLFy5Ufn6+mjRpoqtXr6pPnz5q06aNGjRooLfffrs6egQAAHCY4aOlfH19tW3bNu3cuVOHDh1Sfn6+unXrpvDw8OroDwAAwBDD4eamRx55RI888ogzewEAALhthsPN3LlzK308Nja2ys0AAADcLsPhZuPGjXb3i4uLderUKdWpU0etW7cm3AAAAJcyHG4OHDhQZiwvL0/jxo3T8OHDndIUAABAVTnlwpk+Pj6aM2eOZs2a5YynAwAAqDKnXRU8NzdXubm5zno6AACAKjG8W+rDDz+0u2+1WpWZmak//vGPGjhwoNMaAwAAqArD4eb999+3u+/m5qbGjRtr7NixiomJcVpjAAAAVWE43Jw6dao6+gAAAHAKp625AQAAqA0cmrkZMWKEw0/4xRdfVLkZAACA2+VQuPH19a3uPgAAAJzCoXCzevXq6u4DAADAKVhzAwAATKVKVwX//PPPlZSUpIyMDBUVFdk9lpaW5pTGAAAAqsLwzM2HH36oqKgo+fv768CBA+rRo4caNWqkkydPchI/AADgcobDzUcffaTly5frD3/4gzw8PDR9+nRt27ZNkydP5vILAADA5QyHm4yMDPXq1UuS5O3trcuXL0uSxowZo3Xr1jm3OwAAAIMMh5uAgABdvHhRktSiRQvt2bNH0o0zF1utVud2BwAAYJDhcPPYY4/pyy+/lCRFRUVp6tSpeuKJJxQREaHhw4c7vUEAAAAjHD5a6i9/+YsGDRqk5cuXq7S0VJI0adIkNWrUSLt379bQoUM1YcKEamsUAADAEQ6Hm2HDhsnf31/jxo3TCy+8oNatW0uSRo4cqZEjR1ZbgwAAAEY4vFvq1KlTmjBhgtavX6+2bduqT58++uMf/6irV69WZ38AAACGOBxuAgMDFRsbqxMnTmj79u0KCgrSK6+8oqZNm+rll1/Wd999V519AgAAOKRKl1/o16+fPv74Y2VmZuq9997T4cOH9fDDD6tLly7O7g8AAMCQKl1+4aYGDRro8ccf108//aSjR4/qb3/7m7P6AgAAqJIqzdxcvXpVn3zyifr27asHH3xQ69evV3R0tE6fPu3k9gAAAIwxNHOzZ88eJSYmKikpSUVFRRoxYoS2b9+ufv36VVd/AAAAhjgcbjp27Khjx46pa9euio+P16hRo+Tr61udvQEAABjmcLgJDw/XunXrWDQMAABqNYfDzYcfflidfQAAADhFlRYUAwAA1FYuDzdLlixRUFCQvLy81LNnT+3bt6/S+kuXLmnSpElq2rSpPD091bZtW23evLmGugUAALXdbZ3n5nZt2LBB0dHRWrZsmXr27KlFixapf//+OnbsmJo0aVKmvqioSE888YSaNGmizz//XM2bN9dPP/2khg0b1nzzAACgVnJpuElISND48eMVFRUlSVq2bJm++uorJSYm6vXXXy9Tn5iYqIsXL2r37t2qW7euJCkoKKgmWwYAALVclcJNcnKykpOTdf78eZWWlto9lpiY6NBzFBUVaf/+/YqJibGNubm5KTw8XKmpqeVu8+WXXyosLEyTJk3Sn/70JzVu3FijRo3SjBkz5O7uXpW3AgAATMZwuJkzZ47mzp2r0NBQNW3aVBaLpUovnJOTo5KSEvn7+9uN+/v76+jRo+Vuc/LkSf33f/+3Ro8erc2bN+vHH3/UxIkTVVxcrLi4uHK3KSwsVGFhoe1+Xl5elfoFAAB3BsPhZtmyZVqzZo3GjBlTHf1UqrS0VE2aNNHy5cvl7u6u7t2769y5c3rvvfcqDDfx8fGaM2dODXcKAABcxfDRUkVFRerVq9dtv7Cfn5/c3d2VnZ1tN56dna2AgIByt2natKnatm1rtwuqQ4cOysrKUlFRUbnbxMTEKDc313Y7c+bMbfcOAABqL8Ph5qWXXtLatWtv+4U9PDzUvXt3JScn28ZKS0uVnJyssLCwcrfp3bu3fvzxR7t1PsePH1fTpk3l4eFR7jaenp7y8fGxuwEAAPMyvFvq2rVrWr58ubZv367g4GDbUUs3JSQkOPxc0dHRGjt2rEJDQ9WjRw8tWrRIBQUFtqOnIiMj1bx5c8XHx0uSXnnlFS1evFhTpkzRq6++qh9++EHvvPOOJk+ebPRtAAAAkzIcbg4dOqSQkBBJ0pEjR+weM7q4OCIiQhcuXFBsbKyysrIUEhKiLVu22BYZZ2RkyM3t1uRSYGCgtm7dqqlTpyo4OFjNmzfXlClTNGPGDKNvAwAAmJTFarVaXd1ETcrLy5Ovr69yc3PvqF1ULIqG2VR0EEBtZklJcXULgNNY+/Z1dQuGGPn+vq3LL5w9e1Znz569nacAAABwKsPhprS0VHPnzpWvr69atmypli1bqmHDhpo3b16ZE/oBAADUNMNrbt58802tWrVK8+fPV+/evSVJO3fu1OzZs3Xt2jW9/fbbTm8SAADAUYbDzccff6yVK1dq6NChtrGbi3snTpxIuAEAAC5leLfUxYsX1b59+zLj7du318WLF53SFAAAQFUZDjddunTR4sWLy4wvXrxYXbp0cUpTAAAAVWV4t9S7776rwYMHa/v27bYzCaempurMmTPavHmz0xsEAAAwwvDMTZ8+fXT8+HENHz5cly5d0qVLlzRixAgdO3ZMjz76aHX0CAAA4DDDMzeS1KxZMxYOAwCAWsmhcHPo0CF16tRJbm5uOnToUKW1wcHBTmkMAACgKhwKNyEhIcrKylKTJk0UEhIii8Wi8q7aYLFYVFJS4vQmAQAAHOVQuDl16pQaN25s+xkAAKC2cijctGzZ0vbzTz/9pF69eqlOHftNr1+/rt27d9vVAgAA1DTDR0v169ev3JP15ebmql+/fk5pCgAAoKoMhxur1SqLxVJm/Oeff9Y999zjlKYAAACqyuFDwUeMGCHpxqLhcePGydPT0/ZYSUmJDh06pF69ejm/QwAAAAMcDje+vr6SbszcNGjQQN7e3rbHPDw89PDDD2v8+PHO7xAAAMAAh8PN6tWrJUlBQUGaNm0au6AAAECtZPgMxXFxcdXRBwAAgFNU6fILn3/+uZKSkpSRkaGioiK7x9LS0pzSGAAAQFUYPlrqww8/VFRUlPz9/XXgwAH16NFDjRo10smTJzVw4MDq6BEAAMBhhsPNRx99pOXLl+sPf/iDPDw8NH36dG3btk2TJ09Wbm5udfQIAADgMMPhJiMjw3bIt7e3ty5fvixJGjNmjNatW+fc7gAAAAwyHG4CAgJsZyhu0aKF9uzZI+nGNafKu5gmAABATTIcbh577DF9+eWXkqSoqChNnTpVTzzxhCIiIjR8+HCnNwgAAGCE4aOlli9frtLSUknSpEmT1KhRI+3evVtDhw7VhAkTnN4gAACAEYbDzdmzZxUYGGi7P3LkSI0cOVJWq1VnzpxRixYtnNogAACAEYZ3S7Vq1UoXLlwoM37x4kW1atXKKU0BAABUldOuCp6fny8vLy+nNAUAAFBVDu+Wio6OlnTjquCzZs1SvXr1bI+VlJRo7969CgkJcXqDAAAARjgcbg4cOCDpxszN4cOH5eHhYXvMw8NDXbp00bRp05zfIQAAgAEOh5sdO3ZIunH49wcffCAfH59qawoAAKCqDK+5WbRoka5fv15m/OLFi8rLy3NKUwAAAFVlONyMHDlS69evLzOelJSkkSNHOqUpAACAqjIcbvbu3at+/fqVGe/bt6/27t3rlKYAAACqynC4KSwsLHe3VHFxsa5eveqUpgAAAKrKcLjp0aOHli9fXmZ82bJl6t69u1OaAgAAqCrDl1946623FB4eroMHD+rxxx+XJCUnJ+u7777T119/7fQGAQAAjDA8c9O7d2+lpqbq/vvvV1JSkv785z+rTZs2OnTokB599NHq6BEAAMBhhmduJCkkJERr1651di8AAAC3zfDMjSSdOHFCM2fO1KhRo3T+/HlJ0n/913/pf/7nf5zaHAAAgFGGw81f//pXde7cWXv37tV//ud/Kj8/X5J08OBBxcXFOb1BAAAAIwyHm9dff11vvfWWtm3bZnd9qccee0x79uxxanMAAABGGQ43hw8f1vDhw8uMN2nSRDk5OU5pCgAAoKoMh5uGDRsqMzOzzPiBAwfUvHlzpzQFAABQVVW6ttSMGTOUlZUli8Wi0tJS7dq1S9OmTVNkZGR19AgAAOAww+HmnXfeUfv27RUYGKj8/Hx17NhR//qv/6pevXpp5syZ1dEjAACAwwyf58bDw0MrVqzQrFmzdOTIEeXn56tr16568MEHq6M/AAAAQ6p0Ej9JatGihQIDAyVJFovFaQ0BAADcjiqdxG/VqlXq1KmTvLy85OXlpU6dOmnlypXO7g0AAMAwwzM3sbGxSkhI0KuvvqqwsDBJUmpqqqZOnaqMjAzNnTvX6U0CAAA4ynC4Wbp0qVasWKHnnnvONjZ06FAFBwfr1VdfJdwAAACXMrxbqri4WKGhoWXGu3fvruvXrzulKQAAgKoyHG7GjBmjpUuXlhlfvny5Ro8e7ZSmAAAAqqpKR0utWrVKX3/9tR5++GFJ0t69e5WRkaHIyEhFR0fb6hISEpzTJQAAgIMMh5sjR46oW7dukqQTJ05Ikvz8/OTn56cjR47Y6jg8HAAAuILhcLNjx47q6AMAAMApDK+5uXDhQoWPHT58uEpNLFmyREFBQfLy8lLPnj21b98+h7Zbv369LBaLhg0bVqXXBQAA5mM43HTu3FlfffVVmfEFCxaoR48ehhvYsGGDoqOjFRcXp7S0NHXp0kX9+/fX+fPnK93u9OnTmjZtmh599FHDrwkAAMzLcLiJjo7W008/rVdeeUVXr17VuXPn9Pjjj+vdd9/V2rVrDTeQkJCg8ePHKyoqSh07dtSyZctUr149JSYmVrhNSUmJRo8erTlz5uiBBx4w/JoAAMC8DIeb6dOnKzU1Vd9++62Cg4MVHBwsT09PHTp0SMOHDzf0XEVFRdq/f7/Cw8NvNeTmpvDwcKWmpla43dy5c9WkSRO9+OKLv/oahYWFysvLs7sBAADzqtK1pdq0aaNOnTrp9OnTysvLU0REhAICAgw/T05OjkpKSuTv72837u/vr6ysrHK32blzp1atWqUVK1Y49Brx8fHy9fW13W5e7BMAAJiT4XCza9cuBQcH64cfftChQ4e0dOlSvfrqq4qIiND//u//VkePNpcvX9aYMWO0YsUK+fn5ObRNTEyMcnNzbbczZ85Ua48AAMC1DB8K/thjj2nq1KmaN2+e6tatqw4dOqhfv356/vnn1blzZ509e9bh5/Lz85O7u7uys7PtxrOzs8udCTpx4oROnz6tIUOG2MZKS0tvvJE6dXTs2DG1bt3abhtPT095enoaeYsAAOAOZnjm5uuvv9b8+fNVt25d21jr1q21a9cuTZgwwdBzeXh4qHv37kpOTraNlZaWKjk52XbF8V9q3769Dh8+rPT0dNtt6NCh6tevn9LT09nlBAAAjM/c9OnTp9xxNzc3zZo1y3AD0dHRGjt2rEJDQ9WjRw8tWrRIBQUFioqKkiRFRkaqefPmio+Pl5eXlzp16mS3fcOGDSWpzDgAALg7OTxzM2jQIOXm5truz58/X5cuXbLd//nnn9WxY0fDDURERGjBggWKjY1VSEiI0tPTtWXLFtsi44yMDGVmZhp+XgAAcHeyWK1WqyOF7u7uyszMVJMmTSRJPj4+Sk9Pt51nJjs7W82aNVNJSUn1desEeXl58vX1VW5urnx8fFzdjsPmzJnj6hYAp4qLi3N1C4ZZUlJc3QLgNNa+fV3dgiFGvr8dnrn55wzkYCYCAACoUVU6zw0AAEBt5XC4sVgsslgsZcYAAABqE4ePlrJarRo3bpztnDHXrl3Tyy+/rHvuuUfSjcscAAAAuJrD4Wbs2LF2959//vkyNZGRkbffEQAAwG1wONysXr26OvsAAABwChYUAwAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAU6kV4WbJkiUKCgqSl5eXevbsqX379lVYu2LFCj366KO69957de+99yo8PLzSegAAcHdxebjZsGGDoqOjFRcXp7S0NHXp0kX9+/fX+fPny61PSUnRc889px07dig1NVWBgYF68sknde7cuRruHAAA1EYuDzcJCQkaP368oqKi1LFjRy1btkz16tVTYmJiufWffvqpJk6cqJCQELVv314rV65UaWmpkpOTa7hzAABQG7k03BQVFWn//v0KDw+3jbm5uSk8PFypqakOPceVK1dUXFys++67r9zHCwsLlZeXZ3cDAADm5dJwk5OTo5KSEvn7+9uN+/v7Kysry6HnmDFjhpo1a2YXkH4pPj5evr6+tltgYOBt9w0AAGovl++Wuh3z58/X+vXrtXHjRnl5eZVbExMTo9zcXNvtzJkzNdwlAACoSXVc+eJ+fn5yd3dXdna23Xh2drYCAgIq3XbBggWaP3++tm/fruDg4ArrPD095enp6ZR+AQBA7efSmRsPDw91797dbjHwzcXBYWFhFW737rvvat68edqyZYtCQ0NrolUAAHCHcOnMjSRFR0dr7NixCg0NVY8ePbRo0SIVFBQoKipKkhQZGanmzZsrPj5ekvTv//7vio2N1dq1axUUFGRbm1O/fn3Vr1/fZe8DAADUDi4PNxEREbpw4YJiY2OVlZWlkJAQbdmyxbbIOCMjQ25utyaYli5dqqKiIj3zzDN2zxMXF6fZs2fXZOsAAKAWcnm4kaTf/e53+t3vflfuYykpKXb3T58+Xf0NAQCAO9YdfbQUAADAPyPcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAU6kV4WbJkiUKCgqSl5eXevbsqX379lVa/9lnn6l9+/by8vJS586dtXnz5hrqFAAA1HYuDzcbNmxQdHS04uLilJaWpi5duqh///46f/58ufW7d+/Wc889pxdffFEHDhzQsGHDNGzYMB05cqSGOwcAALWRy8NNQkKCxo8fr6ioKHXs2FHLli1TvXr1lJiYWG79Bx98oAEDBujf/u3f1KFDB82bN0/dunXT4sWLa7hzAABQG9Vx5YsXFRVp//79iomJsY25ubkpPDxcqamp5W6Tmpqq6Ohou7H+/ftr06ZN5dYXFhaqsLDQdj83N1eSlJeXd5vd16xr1665ugXAqe60v0FJUkGBqzsAnOZO+xu82a/Vav3VWpeGm5ycHJWUlMjf399u3N/fX0ePHi13m6ysrHLrs7Kyyq2Pj4/XnDlzyowHBgZWsWsAzjB//nxXtwDc1Xxd3UAVXb58Wb6+lXfv0nBTE2JiYuxmekpLS3Xx4kU1atRIFovFhZ2hNsrLy1NgYKDOnDkjHx8fV7cD3HX4G0RFrFarLl++rGbNmv1qrUvDjZ+fn9zd3ZWdnW03np2drYCAgHK3CQgIMFTv6ekpT09Pu7GGDRtWvWncFXx8fPhgBVyIv0GU59dmbG5y6YJiDw8Pde/eXcnJybax0tJSJScnKywsrNxtwsLC7Ooladu2bRXWAwCAu4vLd0tFR0dr7NixCg0NVY8ePbRo0SIVFBQoKipKkhQZGanmzZsrPj5ekjRlyhT16dNHCxcu1ODBg7V+/Xp9//33Wr58uSvfBgAAqCVcHm4iIiJ04cIFxcbGKisrSyEhIdqyZYtt0XBGRobc3G5NMPXq1Utr167VzJkz9cYbb+jBBx/Upk2b1KlTJ1e9BZiIp6en4uLiyuzKBFAz+BuEM1isjhxTBQAAcIdw+Un8AAAAnIlwAwAATIVwAwAATIVwg7vCmjVrHDq/kcViqfBSHrXBuHHjNGzYMFe3AQC1GuEGNaZv3776/e9/X2bc0eBxOyIiInT8+HHb/dmzZyskJKRMXWZmpgYOHOjU1yaQ4G5ksVgqvc2ePVunT5+u8PE9e/ZIuvH5YLFY1KFDhzKv8dlnn8lisSgoKKiG3x1qO5cfCg7UBG9vb3l7e/9qXUVnugZgTGZmpu3nDRs2KDY2VseOHbON1a9fXzk5OZKk7du366GHHrLbvlGjRraf77nnHp0/f16pqal2J2xdtWqVWrRoUV1vAXcwZm5Qq9yc5ViwYIGaNm2qRo0aadKkSSouLrbVBAUF6a233lJkZKTq16+vli1b6ssvv9SFCxf01FNPqX79+goODtb3339v2+aXs0Nr1qzRnDlzdPDgQdu/EtesWSOp7G6p3bt3KyQkRF5eXgoNDdWmTZtksViUnp4uSSopKdGLL76oVq1aydvbW+3atdMHH3xg23727Nn6+OOP9ac//cn2WikpKZKkM2fO6Nlnn1XDhg1133336amnntLp06dt25aUlCg6OloNGzZUo0aNNH36dIeuhgvUBgEBAbabr6+vLBaL3Vj9+vVttY0aNbJ7LCAgQHXr1rU9XqdOHY0aNUqJiYm2sbNnzyolJUWjRo2q0feFOwPhBrXOjh07dOLECe3YsUMff/yx1qxZYwsfN73//vvq3bu3Dhw4oMGDB2vMmDGKjIzU888/r7S0NLVu3VqRkZHlhoGIiAi99tpreuihh5SZmanMzExFRESUqcvLy9OQIUPUuXNnpaWlad68eZoxY4ZdTWlpqe6//3599tln+tvf/qbY2Fi98cYbSkpKkiRNmzZNzz77rAYMGGB7rV69eqm4uFj9+/dXgwYN9O2332rXrl2qX7++BgwYoKKiIknSwoULtWbNGiUmJmrnzp26ePGiNm7c6KTfMnBneeGFF5SUlKQrV65IuvGPlAEDBthO+Ar8ErulUOvce++9Wrx4sdzd3dW+fXsNHjxYycnJGj9+vK1m0KBBmjBhgiQpNjZWS5cu1b/8y7/oN7/5jSRpxowZCgsLK/eiqt7e3qpfv77q1KlT6W6otWvXymKxaMWKFfLy8lLHjh117tw5uz7q1q2rOXPm2O63atVKqampSkpK0rPPPqv69evL29tbhYWFdq/1H//xHyotLdXKlSttV6dfvXq1GjZsqJSUFD355JNatGiRYmJiNGLECEnSsmXLtHXr1qr+WoFaq1evXnZnopek/Px8u/tdu3bVAw88oM8//1xjxozRmjVrlJCQoJMnT9Zkq7hDEG5Q6zz00ENyd3e33W/atKkOHz5sVxMcHGz7+ea/3Dp37lxm7Pz581VeR3Ps2DEFBwfLy8vLNtajR48ydUuWLFFiYqIyMjJ09epVFRUVlbtY+ZcOHjyoH3/8UQ0aNLAbv3btmk6cOKHc3FxlZmaqZ8+etsfq1Kmj0NBQdk3BdDZs2FDuguF/9sILL2j16tVq0aKFCgoKNGjQIC1evLgGOsSdhnCDGuPj46Pc3Nwy45cuXbK7jP0v97VLN9bBlJaW2o39submzEd5Y/+8nbOtX79e06ZN08KFCxUWFqYGDRrovffe0969eyvdLj8/X927d9enn35a5rHGjRtXV7tArRQYGKg2bdr8at3o0aM1ffp0zZ49W2PGjFGdOnyFoXysuUGNadeundLS0sqMp6WlqW3btjXai4eHh0pKSiqtadeunQ4fPqzCwkLb2HfffWdXs2vXLvXq1UsTJ05U165d1aZNG504ceJXX6tbt2764Ycf1KRJE7Vp08bu5uvrK19fXzVt2tQuJF2/fl379++v6lsG7nj33Xefhg4dqr/+9a964YUXXN0OajHCDWrMK6+8ouPHj2vy5Mk6dOiQjh07poSEBK1bt06vvfZajfYSFBSkU6dOKT09XTk5OXYB5qZRo0aptLRUv/3tb/X3v/9dW7du1YIFCyTdmhl68MEH9f3332vr1q06fvy4Zs2aVSYABQUF2d5vTk6OiouLNXr0aPn5+empp57St99+q1OnTiklJUWTJ0/W2bNnJUlTpkzR/PnztWnTJh09elQTJ07UpUuXqvcXA7jAzz//rKysLLvbtWvXyq1ds2aNcnJy1L59+xruEncSwg1qzAMPPKBvvvlGR48eVXh4uHr27KmkpCR99tlnGjBgQI328vTTT2vAgAHq16+fGjdurHXr1pWp8fHx0Z///Gelp6crJCREb775pmJjYyXJtg5nwoQJGjFihCIiItSzZ0/9/PPPmjhxot3zjB8/Xu3atVNoaKgaN26sXbt2qV69evrmm2/UokULjRgxQh06dNCLL76oa9euycfHR5L02muvacyYMRo7dqxtl9fw4cOr+TcD1Lzw8HA1bdrU7lbRmcK9vb3tzoEDlMdiZXUi4LBPP/1UUVFRys3NdeikgACAmsdqLKASn3zyiR544AE1b95cBw8e1IwZM/Tss88SbACgFiPcAJXIyspSbGyssrKy1LRpU/3mN7/R22+/7eq2AACVYLcUAAAwFRYUAwAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAUyHcAAAAU/k/giS2pMMRE/4AAAAASUVORK5CYII=", "text/plain": [ - "
" + "\"Output" ] }, "metadata": {}, @@ -561,6 +613,7 @@ }, { "cell_type": "markdown", + "id": "d643bdb4-22e0-4f55-b3a8-d5ef39f6e696", "metadata": {}, "source": [ "Finally, we can check the impact of the custom options on QPU and classical runtime:" @@ -569,6 +622,7 @@ { "cell_type": "code", "execution_count": 22, + "id": "09cf2226-c48c-483b-aa49-80186229ae95", "metadata": {}, "outputs": [ { @@ -585,9 +639,13 @@ "job_metadata = results_custom.metadata\n", "\n", "# Get the runtime of the TEM job\n", - "qpu_runtime = job_metadata[\"resource_usage\"][\"RUNNING: EXECUTING_QPU\"][\"QPU_TIME\"]\n", + "qpu_runtime = job_metadata[\"resource_usage\"][\"RUNNING: EXECUTING_QPU\"][\n", + " \"QPU_TIME\"\n", + "]\n", "classical_runtime = (\n", - " job_metadata[\"resource_usage\"][\"RUNNING: OPTIMIZING_FOR_HARDWARE\"][\"CPU_TIME\"]\n", + " job_metadata[\"resource_usage\"][\"RUNNING: OPTIMIZING_FOR_HARDWARE\"][\n", + " \"CPU_TIME\"\n", + " ]\n", " + job_metadata[\"resource_usage\"][\"RUNNING: POST_PROCESSING\"][\"CPU_TIME\"]\n", ")\n", "\n", @@ -597,6 +655,7 @@ }, { "cell_type": "markdown", + "id": "7cea6cf1-5530-4bf6-83da-ad2e9ff96806", "metadata": {}, "source": [ "## Scaling TEM to large circuits\n", @@ -609,6 +668,7 @@ { "cell_type": "code", "execution_count": 23, + "id": "f7ea1d3c-d745-48cc-8922-b070b2b5fd44", "metadata": {}, "outputs": [], "source": [ @@ -630,6 +690,7 @@ }, { "cell_type": "markdown", + "id": "854c3208-8c0f-4f7d-b260-0abba2bc71a0", "metadata": {}, "source": [ "Let's define some performance-oriented options:" @@ -638,6 +699,7 @@ { "cell_type": "code", "execution_count": null, + "id": "64882a71-3027-4e25-b714-9e9d6b13cd49", "metadata": {}, "outputs": [], "source": [ @@ -656,6 +718,7 @@ }, { "cell_type": "markdown", + "id": "4ba36257-1974-4274-b04c-6daf3afe9d72", "metadata": {}, "source": [ "Finally, let's run the experiment, get the result and visualize it. This will take around 4 QPU minutes." @@ -664,6 +727,7 @@ { "cell_type": "code", "execution_count": 25, + "id": "6faf7f80-dec9-49d2-80e7-d4e6fdea5100", "metadata": {}, "outputs": [], "source": [ @@ -673,6 +737,7 @@ { "cell_type": "code", "execution_count": 26, + "id": "333b2335-b480-4bf9-854c-5155eedee900", "metadata": {}, "outputs": [ { @@ -691,6 +756,7 @@ { "cell_type": "code", "execution_count": null, + "id": "02115e11-4638-433a-b825-8891173b67ed", "metadata": {}, "outputs": [], "source": [ @@ -701,6 +767,7 @@ { "cell_type": "code", "execution_count": 28, + "id": "a04dd421-a212-473c-a8a9-4c8edcfc3667", "metadata": {}, "outputs": [ { @@ -725,9 +792,13 @@ "job_metadata = tem_job_large.result().metadata\n", "\n", "# Get the runtime of the TEM job\n", - "qpu_runtime = job_metadata[\"resource_usage\"][\"RUNNING: EXECUTING_QPU\"][\"QPU_TIME\"]\n", + "qpu_runtime = job_metadata[\"resource_usage\"][\"RUNNING: EXECUTING_QPU\"][\n", + " \"QPU_TIME\"\n", + "]\n", "classical_runtime = (\n", - " job_metadata[\"resource_usage\"][\"RUNNING: OPTIMIZING_FOR_HARDWARE\"][\"CPU_TIME\"]\n", + " job_metadata[\"resource_usage\"][\"RUNNING: OPTIMIZING_FOR_HARDWARE\"][\n", + " \"CPU_TIME\"\n", + " ]\n", " + job_metadata[\"resource_usage\"][\"RUNNING: POST_PROCESSING\"][\"CPU_TIME\"]\n", ")\n", "\n", @@ -738,13 +809,13 @@ { "cell_type": "code", "execution_count": 29, + "id": "24894c44-e399-4b9d-a3ff-38a28ff32ece", "metadata": {}, "outputs": [ { "data": { - "image/png": "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RS+88IIKCwvro0cAAACHGQ43OTk5tq98+/j46Pz585KkqKgorVu3zrndAQAAGGQ43AQGBtrOUNy+fXt9++23kq5cc6q6i2kCAAA0JMPh5v7779fnn38uSYqJidGMGTP04IMPKjIyUmPHjnV6gwAAAEYY/rbU8uXLVVlZKUl67rnn1LJlS+3YsUOjR4/W1KlTnd4gAACAEYbDzcmTJxUUFGS7PX78eI0fP15Wq1UnTpxQ+/btndogAACAEYYPS3Xs2FFnzpypMn727Fl17NjRKU0BAADUldOuCl5cXCxvb2+nNAUAAFBXDh+Wio2NlXTlquBz5sxR06ZNbfdVVFRo586dCg0NdXqDAAAARjgcbvbs2SPpyszN/v375enpabvP09NTvXv31syZM53fIQAAgAEOh5tt27ZJuvL173feeUe+vr711hQAAEBdGV5zs3jxYl2+fLnK+NmzZ1VUVOSUpgAAAOrKcLgZP3681q9fX2U8LS1N48ePd0pTAAAAdWU43OzcuVNDhgypMj548GDt3LnTKU0BAADUleFwU1paWu1hqfLycl28eNEpTQEAANSV4XDTv39/LV++vMp4SkqK+vXr55SmAAAA6srw5Rdee+01RUREaO/evXrggQckSenp6fruu+/05ZdfOr1BAAAAIwzP3Nxzzz3KzMzU7bffrrS0NP35z39W586dtW/fPt1333310SMAAIDDDM/cSFJoaKjWrl3r7F4AAACum+GZG0k6cuSIXn31VU2YMEGnT5+WJP33f/+3/vd//9epzQEAABhlONz89a9/Va9evbRz507913/9l4qLiyVJe/fuVUJCgtMbBAAAMMJwuHnppZf02muvacuWLXbXl7r//vv17bffOrU5AAAAowyHm/3792vs2LFVxlu3bq2CggKnNAUAAFBXhsNNixYtlJubW2V8z549ateunVOaAgAAqKs6XVtq9uzZysvLk8ViUWVlpbZv366ZM2cqOjq6PnoEAABwmOFw88Ybb6hbt24KCgpScXGxevTooX/913/VwIED9eqrr9ZHjwAAAA4zfJ4bT09PrVixQnPmzNGBAwdUXFysPn366M4776yP/gAAAAyp00n8JKl9+/YKCgqSJFksFqc1BAAAcD3qdBK/VatWqWfPnvL29pa3t7d69uyplStXOrs3AAAAwwzP3MTHxys5OVnPP/+8wsPDJUmZmZmaMWOGcnJyNG/ePKc3CQAA4CjD4WbZsmVasWKFHn/8cdvY6NGjFRISoueff55wAwAAXMrwYany8nKFhYVVGe/Xr58uX77slKYAAADqynC4iYqK0rJly6qML1++XBMnTnRKUwAAAHVVp29LrVq1Sl9++aXuvvtuSdLOnTuVk5Oj6OhoxcbG2uqSk5Od0yUAAICDDIebAwcOqG/fvpKkI0eOSJL8/f3l7++vAwcO2Or4ejgAAHAFw+Fm27Zt9dEHAACAUxhec3PmzJka79u/f3+dmli6dKmCg4Pl7e2tAQMGaNeuXQ7tt379elksFo0ZM6ZOzwsAAMzHcLjp1auXvvjiiyrjCxcuVP/+/Q03sGHDBsXGxiohIUFZWVnq3bu3hg4dqtOnT9e63/HjxzVz5kzdd999hp8TAACYl+FwExsbq0ceeUTPPvusLl68qFOnTumBBx7Qm2++qbVr1xpuIDk5WVOmTFFMTIx69OihlJQUNW3aVKmpqTXuU1FRoYkTJyoxMVF33HGH4ecEAADmZTjczJo1S5mZmfr6668VEhKikJAQeXl5ad++fRo7dqyhxyorK9Pu3bsVERFxrSE3N0VERCgzM7PG/ebNm6fWrVvrqaee+tXnKC0tVVFRkd0GAADMq07XlurcubN69uyp48ePq6ioSJGRkQoMDDT8OAUFBaqoqFBAQIDdeEBAgPLy8qrd55tvvtGqVau0YsUKh54jKSlJfn5+tu3qxT4BAIA5GQ4327dvV0hIiH744Qft27dPy5Yt0/PPP6/IyEj93//9X330aHP+/HlFRUVpxYoV8vf3d2ifuLg4FRYW2rYTJ07Ua48AAMC1DH8V/P7779eMGTM0f/58NWnSRN27d9eQIUP0xBNPqFevXjp58qTDj+Xv7y93d3fl5+fbjefn51c7E3TkyBEdP35co0aNso1VVlZeeSEeHjp06JA6depkt4+Xl5e8vLyMvEQAAHADMzxz8+WXX2rBggVq0qSJbaxTp07avn27pk6dauixPD091a9fP6Wnp9vGKisrlZ6ebrvi+C9169ZN+/fvV3Z2tm0bPXq0hgwZouzsbA45AQAA4zM3gwYNqnbczc1Nc+bMMdxAbGysJk2apLCwMPXv31+LFy9WSUmJYmJiJEnR0dFq166dkpKS5O3trZ49e9rt36JFC0mqMg4AAG5ODs/cjBgxQoWFhbbbCxYs0Llz52y3f/75Z/Xo0cNwA5GRkVq4cKHi4+MVGhqq7Oxsbdq0ybbIOCcnR7m5uYYfFwAA3JwsVqvV6kihu7u7cnNz1bp1a0mSr6+vsrOzbeeZyc/PV9u2bVVRUVF/3TpBUVGR/Pz8VFhYKF9fX1e347DExERXtwA4VUJCgqtbMMySkeHqFgCnsQ4e7OoWDDHy+e3wzM0/ZyAHMxEAAECDqtN5bgAAABorh8ONxWKRxWKpMgYAANCYOPxtKavVqsmTJ9vOGXPp0iU988wzuuWWWyRducwBAACAqzkcbiZNmmR3+4knnqhSEx0dff0dAQAAXAeHw83q1avrsw8AAACnYEExAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwlUYRbpYuXarg4GB5e3trwIAB2rVrV421K1as0H333adbb71Vt956qyIiImqtBwAANxeXh5sNGzYoNjZWCQkJysrKUu/evTV06FCdPn262vqMjAw9/vjj2rZtmzIzMxUUFKSHHnpIp06dauDOAQBAY+TycJOcnKwpU6YoJiZGPXr0UEpKipo2barU1NRq6z/88ENNmzZNoaGh6tatm1auXKnKykqlp6c3cOcAAKAxcmm4KSsr0+7duxUREWEbc3NzU0REhDIzMx16jAsXLqi8vFy33XZbtfeXlpaqqKjIbgMAAObl0nBTUFCgiooKBQQE2I0HBAQoLy/PoceYPXu22rZtaxeQfikpKUl+fn62LSgo6Lr7BgAAjZfLD0tdjwULFmj9+vX69NNP5e3tXW1NXFycCgsLbduJEycauEsAANCQPFz55P7+/nJ3d1d+fr7deH5+vgIDA2vdd+HChVqwYIG2bt2qkJCQGuu8vLzk5eXllH4BAEDj59KZG09PT/Xr189uMfDVxcHh4eE17vfmm29q/vz52rRpk8LCwhqiVQAAcINw6cyNJMXGxmrSpEkKCwtT//79tXjxYpWUlCgmJkaSFB0drXbt2ikpKUmS9O///u+Kj4/X2rVrFRwcbFub06xZMzVr1sxlrwMAADQOLg83kZGROnPmjOLj45WXl6fQ0FBt2rTJtsg4JydHbm7XJpiWLVumsrIyPfroo3aPk5CQoLlz5zZk6wAAoBFyebiRpN/97nf63e9+V+19GRkZdrePHz9e/w0BAIAb1g39bSkAAIB/RrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACm0ijCzdKlSxUcHCxvb28NGDBAu3btqrX+o48+Urdu3eTt7a1evXpp48aNDdQpAABo7FwebjZs2KDY2FglJCQoKytLvXv31tChQ3X69Olq63fs2KHHH39cTz31lPbs2aMxY8ZozJgxOnDgQAN3DgAAGiOXh5vk5GRNmTJFMTEx6tGjh1JSUtS0aVOlpqZWW//OO+9o2LBh+rd/+zd1795d8+fPV9++fbVkyZIG7hwAADRGHq588rKyMu3evVtxcXG2MTc3N0VERCgzM7PafTIzMxUbG2s3NnToUH322WfV1peWlqq0tNR2u7CwUJJUVFR0nd03rEuXLrm6BcCpbrS/QUlSSYmrOwCc5kb7G7zar9Vq/dVal4abgoICVVRUKCAgwG48ICBABw8erHafvLy8auvz8vKqrU9KSlJiYmKV8aCgoDp2DcAZFixY4OoWgJuan6sbqKPz58/Lz6/27l0abhpCXFyc3UxPZWWlzp49q5YtW8pisbiwMzRGRUVFCgoK0okTJ+Tr6+vqdoCbDn+DqInVatX58+fVtm3bX611abjx9/eXu7u78vPz7cbz8/MVGBhY7T6BgYGG6r28vOTl5WU31qJFi7o3jZuCr68vb6yAC/E3iOr82ozNVS5dUOzp6al+/fopPT3dNlZZWan09HSFh4dXu094eLhdvSRt2bKlxnoAAHBzcflhqdjYWE2aNElhYWHq37+/Fi9erJKSEsXExEiSoqOj1a5dOyUlJUmSpk+frkGDBmnRokUaOXKk1q9fr++//17Lly935csAAACNhMvDTWRkpM6cOaP4+Hjl5eUpNDRUmzZtsi0azsnJkZvbtQmmgQMHau3atXr11Vf18ssv684779Rnn32mnj17uuolwES8vLyUkJBQ5VAmgIbB3yCcwWJ15DtVAAAANwiXn8QPAADAmQg3AADAVAg3AADAVAg3uCmsWbPGofMbWSyWGi/l0RhMnjxZY8aMcXUbANCoEW7QYAYPHqzf//73VcYdDR7XIzIyUocPH7bdnjt3rkJDQ6vU5ebmavjw4U59bgIJbkYWi6XWbe7cuTp+/HiN93/77beSrrw/WCwWde/evcpzfPTRR7JYLAoODm7gV4fGzuVfBQcago+Pj3x8fH61rqYzXQMwJjc31/bzhg0bFB8fr0OHDtnGmjVrpoKCAknS1q1bddddd9nt37JlS9vPt9xyi06fPq3MzEy7E7auWrVK7du3r6+XgBsYMzdoVK7OcixcuFBt2rRRy5Yt9dxzz6m8vNxWExwcrNdee03R0dFq1qyZOnTooM8//1xnzpzRww8/rGbNmikkJETff/+9bZ9fzg6tWbNGiYmJ2rt3r+1fiWvWrJFU9bDUjh07FBoaKm9vb4WFhemzzz6TxWJRdna2JKmiokJPPfWUOnbsKB8fH3Xt2lXvvPOObf+5c+fq/fff15/+9Cfbc2VkZEiSTpw4occee0wtWrTQbbfdpocffljHjx+37VtRUaHY2Fi1aNFCLVu21KxZsxy6Gi7QGAQGBto2Pz8/WSwWu7FmzZrZalu2bGl3X2BgoJo0aWK738PDQxMmTFBqaqpt7OTJk8rIyNCECRMa9HXhxkC4QaOzbds2HTlyRNu2bdP777+vNWvW2MLHVW+//bbuuece7dmzRyNHjlRUVJSio6P1xBNPKCsrS506dVJ0dHS1YSAyMlIvvvii7rrrLuXm5io3N1eRkZFV6oqKijRq1Cj16tVLWVlZmj9/vmbPnm1XU1lZqdtvv10fffSR/va3vyk+Pl4vv/yy0tLSJEkzZ87UY489pmHDhtmea+DAgSovL9fQoUPVvHlzff3119q+fbuaNWumYcOGqaysTJK0aNEirVmzRqmpqfrmm2909uxZffrpp076LQM3lieffFJpaWm6cOGCpCv/SBk2bJjthK/AL3FYCo3OrbfeqiVLlsjd3V3dunXTyJEjlZ6erilTpthqRowYoalTp0qS4uPjtWzZMv3Lv/yLfvOb30iSZs+erfDw8Govqurj46NmzZrJw8Oj1sNQa9eulcVi0YoVK+Tt7a0ePXro1KlTdn00adJEiYmJttsdO3ZUZmam0tLS9Nhjj6lZs2by8fFRaWmp3XP953/+pyorK7Vy5Urb1elXr16tFi1aKCMjQw899JAWL16suLg4jRs3TpKUkpKizZs31/XXCjRaAwcOtDsTvSQVFxfb3e7Tp4/uuOMOffzxx4qKitKaNWuUnJyso0ePNmSruEEQbtDo3HXXXXJ3d7fdbtOmjfbv329XExISYvv56r/cevXqVWXs9OnTdV5Hc+jQIYWEhMjb29s21r9//yp1S5cuVWpqqnJycnTx4kWVlZVVu1j5l/bu3asff/xRzZs3txu/dOmSjhw5osLCQuXm5mrAgAG2+zw8PBQWFsahKZjOhg0bql0w/M+efPJJrV69Wu3bt1dJSYlGjBihJUuWNECHuNEQbtBgfH19VVhYWGX83Llzdpex/+WxdunKOpjKykq7sV/WXJ35qG7sn/dztvXr12vmzJlatGiRwsPD1bx5c7311lvauXNnrfsVFxerX79++vDDD6vc16pVq/pqF2iUgoKC1Llz51+tmzhxombNmqW5c+cqKipKHh58hKF6rLlBg+natauysrKqjGdlZalLly4N2ounp6cqKipqrenatav279+v0tJS29h3331nV7N9+3YNHDhQ06ZNU58+fdS5c2cdOXLkV5+rb9+++uGHH9S6dWt17tzZbvPz85Ofn5/atGljF5IuX76s3bt31/UlAze82267TaNHj9Zf//pXPfnkk65uB40Y4QYN5tlnn9Xhw4f1wgsvaN++fTp06JCSk5O1bt06vfjiiw3aS3BwsI4dO6bs7GwVFBTYBZirJkyYoMrKSv32t7/V3//+d23evFkLFy6UdG1m6M4779T333+vzZs36/Dhw5ozZ06VABQcHGx7vQUFBSovL9fEiRPl7++vhx9+WF9//bWOHTumjIwMvfDCCzp58qQkafr06VqwYIE+++wzHTx4UNOmTdO5c+fq9xcDuMDPP/+svLw8u+3SpUvV1q5Zs0YFBQXq1q1bA3eJGwnhBg3mjjvu0FdffaWDBw8qIiJCAwYMUFpamj766CMNGzasQXt55JFHNGzYMA0ZMkStWrXSunXrqtT4+vrqz3/+s7KzsxUaGqpXXnlF8fHxkmRbhzN16lSNGzdOkZGRGjBggH7++WdNmzbN7nGmTJmirl27KiwsTK1atdL27dvVtGlTffXVV2rfvr3GjRun7t2766mnntKlS5fk6+srSXrxxRcVFRWlSZMm2Q55jR07tp5/M0DDi4iIUJs2bey2ms4U7uPjY3cOHKA6FiurEwGHffjhh4qJiVFhYaFDJwUEADQ8VmMBtfjggw90xx13qF27dtq7d69mz56txx57jGADAI0Y4QaoRV5enuLj45WXl6c2bdroN7/5jV5//XVXtwUAqAWHpQAAgKmwoBgAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJjK/wOuF7Q4Z53ExwAAAABJRU5ErkJggg==", "text/plain": [ - "
" + "\"Output" ] }, "metadata": {}, @@ -774,7 +845,7 @@ ], "metadata": { "kernelspec": { - "display_name": ".venv", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -788,7 +859,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.14" + "version": "3" } }, "nbformat": 4, diff --git a/public/docs/images/tutorials/algorithmiq-tem/extracted-outputs/24894c44-e399-4b9d-a3ff-38a28ff32ece-0.avif b/public/docs/images/tutorials/algorithmiq-tem/extracted-outputs/24894c44-e399-4b9d-a3ff-38a28ff32ece-0.avif new file mode 100644 index 00000000000..42149d06d15 Binary files /dev/null and b/public/docs/images/tutorials/algorithmiq-tem/extracted-outputs/24894c44-e399-4b9d-a3ff-38a28ff32ece-0.avif differ diff --git a/public/docs/images/tutorials/algorithmiq-tem/extracted-outputs/381a4e25-bc9c-47d0-b9f1-172eb5516484-0.avif b/public/docs/images/tutorials/algorithmiq-tem/extracted-outputs/381a4e25-bc9c-47d0-b9f1-172eb5516484-0.avif new file mode 100644 index 00000000000..3ea8c414407 Binary files /dev/null and b/public/docs/images/tutorials/algorithmiq-tem/extracted-outputs/381a4e25-bc9c-47d0-b9f1-172eb5516484-0.avif differ diff --git a/public/docs/images/tutorials/algorithmiq-tem/extracted-outputs/c3a2168d-98df-491e-a1f8-05de5684ab96-0.avif b/public/docs/images/tutorials/algorithmiq-tem/extracted-outputs/c3a2168d-98df-491e-a1f8-05de5684ab96-0.avif new file mode 100644 index 00000000000..123e1ef14e8 Binary files /dev/null and b/public/docs/images/tutorials/algorithmiq-tem/extracted-outputs/c3a2168d-98df-491e-a1f8-05de5684ab96-0.avif differ diff --git a/qiskit_bot.yaml b/qiskit_bot.yaml index 0570b905ba2..17b5bd18800 100644 --- a/qiskit_bot.yaml +++ b/qiskit_bot.yaml @@ -640,6 +640,8 @@ notifications: - "@ThomasMerkh" - "@alexshih" - "@HuangJunye" + "docs/tutorials/algorithmiq-tem": + - "@HuangJunye" "docs/tutorials/global-data-quantum-optimizer": - "@abbycross" - "@pandasa123" diff --git a/scripts/config/notebook-testing.toml b/scripts/config/notebook-testing.toml index 4caa79c07c5..cddf930d1a3 100644 --- a/scripts/config/notebook-testing.toml +++ b/scripts/config/notebook-testing.toml @@ -160,6 +160,7 @@ notebooks = [ "docs/guides/qiskit-transpiler-service.ipynb", # We never run tutorials notebooks + "docs/tutorials/algorithmiq-tem.ipynb", "docs/tutorials/dc-hex-ising.ipynb", "docs/tutorials/ghz-spacetime-codes.ipynb", "docs/tutorials/sml-classification.ipynb",