{ "cells": [ { "cell_type": "markdown", "id": "083f9cb1-82a6-4147-8594-b32ff4dc9666", "metadata": {}, "source": [ "Running on Quantinuum Backends \n", "===============================" ] }, { "attachments": {}, "cell_type": "markdown", "id": "60c1176b-3c18-414b-a031-420dd2526699", "metadata": {}, "source": [ "In this tutorial, we demonstrate how to perform a simple quantum chemical calculation on Quantinuum Systems.\n", "\n", "Since this tutorial focuses on practical quantum computation, we will perform a simple calculation: the single point (i.e. not optimized/not variationally solved) total energy evaluation of the H2 molecule in the Unitary Coupled Cluster (UCC) ansatz for a set value of the ansatz variational parameter.\n", "\n", "Accessing the backends in this tutorial requires credentials for Quantinuum Systems. \n", "If you are interested in gaining access to Quantinuum Systems, [here](https://www.quantinuum.com/contact/quantinuum-systems) is our expression of interest form.\n", "In most cases, hardware quantum credits (HQC) are required to run on the emulators and hardware used here.\n", "\n", "The main way to specify a Quantinuum backend is through [`qnexus`](https://docs.quantinuum.com/nexus/trainings/getting_started.html), the Python client for interacting with [Quantinuum Nexus](https://docs.quantinuum.com/nexus/), our cloud based platform for quantum computing.\n", "While not used here, [pytket-quantinuum](https://docs.quantinuum.com/tket/extensions/pytket-quantinuum/) provides access to a local, noiseless backend that is useful for local circuit compilation.\n", "\n", "This tutorial is broken down into the following sections:\n", "\n", "1. Define the system\n", "2. Perform computation with emulator\n", "3. Demonstrate error mitigation methods on emulated hardware (PMSV)" ] }, { "cell_type": "markdown", "id": "814ffcc8-65e2-4cc8-8714-290aac3c6431", "metadata": {}, "source": [ "## 1. Define the system " ] }, { "cell_type": "code", "execution_count": null, "id": "7e89ef34-63f2-4877-a477-8722c3a9fc8e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{d0: 0.4996755931358105}\n", "\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " \n", "
\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "2-qubit GATES: 4\n", "\n" ] } ], "source": [ "# Preload the Hamiltonian for H2\n", "# see the Aer tutorial for details\n", "from inquanto.express import load_h5\n", "\n", "h2 = load_h5(\"h2_sto3g.h5\", as_tuple=True)\n", "hamiltonian = h2.hamiltonian_operator\n", "\n", "from inquanto.spaces import FermionSpace\n", "from inquanto.states import FermionState\n", "from inquanto.symmetry import PointGroup\n", "from inquanto.ansatzes import FermionSpaceStateExpChemicallyAware\n", "\n", "# Define fermion space, state, and map the fermionic operator to qubits\n", "space = FermionSpace(\n", " 4, point_group=PointGroup(\"D2h\"), orb_irreps=[\"Ag\", \"Ag\", \"B1u\", \"B1u\"]\n", ")\n", "\n", "state = FermionState([1, 1, 0, 0])\n", "qubit_hamiltonian = hamiltonian.qubit_encode()\n", "\n", "exponents = space.construct_single_ucc_operators(state)\n", "## the above adds nothing due to the symmetry of the system\n", "exponents += space.construct_double_ucc_operators(state)\n", "# Construct an efficient ansatz\n", "ansatz = FermionSpaceStateExpChemicallyAware(exponents, state)\n", "\n", "p = ansatz.state_symbols.construct_from_array([0.4996755931358105])\n", "print(p)\n", "\n", "# Import an InQuanto Computable for measuring an expectation value. \n", "# The operator is the qubit Hamiltonian, and the wavefunction is the ansatz.\n", "from inquanto.computables import ExpectationValue\n", "\n", "print(hamiltonian)\n", "expectation0 = ExpectationValue(ansatz, hamiltonian.qubit_encode())\n", "\n", "# Analyze the ansatz circuit\n", "from pytket.circuit.display import render_circuit_jupyter\n", "from pytket import Circuit, OpType\n", "\n", "render_circuit_jupyter(ansatz.get_circuit(p)) # this is the uncompiled ansatz circuit\n", "\n", "print(\"2-qubit GATES: {}\".format(ansatz.circuit_resources()['gates_2q']))\n", "print(ansatz.state_circuit)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "145ad269-7da6-4645-af96-613a8170f98e", "metadata": {}, "source": [ "## 2. Machine emulation for quantum noise \n", "\n", "Running emulator experiments before hardware experiments is a crucial step in the development and optimization of quantum algorithms and applications. Emulators provide a controlled environment where one can fine-tune algorithms, explore error mitigation strategies, and gain valuable insights about the behavior of quantum circuits without some constraints of the physical hardware.\n", "\n", "Below, we provide instructions for conducting experiments utilizing a Quantinuum emulator. To utilize hardware instead of the emulator one only needs to change their choice of device when instantiating the `QuantinuumConfig`. \n", "\n", "`QuantinuumConfig` is a qnexus configuration object that points to Quantinuum Systems this includes all emulators and hardware. Emulators are run on remote compute either on Nexus or on site in Colorado. While both H2-1E and H2-Emulator are honest emulators of the H2-1 device, submission to H2-1E consumes HQCs. We demonstrate the user of H2-1E here but it is often advisable to start with the H2-Emulator to save HQC and queue time, this comes at the cost of reducing the maximum number of qubits one can use to 26.\n", "\n", "For comparison in the figure below, we have also plotted the exact energy (-0.5876463677224993 Ha) for H$_2$ and the user should also compare these results to result from the first part of this tutorial." ] }, { "cell_type": "code", "execution_count": null, "id": "b059c2ee", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "H2-1E status: DeviceStateEnum.ONLINE\n" ] } ], "source": [ "from qnexus.client import auth, projects, devices\n", "from qnexus import QuantinuumConfig\n", "\n", "# Login with your credentials\n", "# You only need to login once per session, then this can be commented out\n", "# auth.login()\n", "\n", "# qnexus requires the specification of a project for all submitted jobs\n", "project_ref = projects.get_or_create(name=\"InQuanto Documentation\", description=\"\", properties={})\n", "\n", "# Change the machine name if necessary.\n", "machine = \"H2-1E\"\n", "backend = QuantinuumConfig(device_name=machine)\n", "\n", "print(machine, \"status:\", devices.status(backend))" ] }, { "cell_type": "code", "execution_count": null, "id": "11b53c55-e4ab-4198-bde2-b217f54c5505", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from inquanto.protocols import PauliAveraging\n", "from pytket.partition import PauliPartitionStrat\n", "\n", "# here we demonstrate building the \n", "noisy_protocol = PauliAveraging(\n", " backend,\n", " shots_per_circuit=10000,\n", " pauli_partition_strategy=PauliPartitionStrat.CommutingSets,\n", " project_ref=project_ref\n", ")\n", "noisy_protocol.build(p, ansatz, hamiltonian.qubit_encode())\n", "noisy_protocol.compile_circuits()\n" ] }, { "cell_type": "code", "execution_count": null, "id": "37a6c431", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " \n", "
\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# you can inspect compiled measurement circuits contained in the protocol that was run on the backend\n", "# note that the gateset of this circuit is different to the ansatz \n", "\n", "render_circuit_jupyter(noisy_protocol.get_circuits()[1])\n", "noisy_handles = noisy_protocol.launch()" ] }, { "cell_type": "code", "execution_count": null, "id": "a9f31cb7", "metadata": {}, "outputs": [], "source": [ "# Retrieve the results of the 10000 shot job once it has completed\n", "noisy_results = noisy_handles.get_results()" ] }, { "cell_type": "markdown", "id": "9bee0683", "metadata": {}, "source": [ "Here we employ the `BackendResultBootstrap` class of `inquanto.protocols` to resample the results of 10000 executed shots for a number of different sample sizes. First, we asynchronously launch and retrieve the job with 10000 shots then apply the resampling." ] }, { "cell_type": "code", "execution_count": null, "id": "f7391ae0", "metadata": {}, "outputs": [], "source": [ "from inquanto.protocols import BackendResultBootstrap\n", "\n", "sample_sizes = [10, 50, 100, 500, 1000, 5000]\n", "noisy_H2_1E_energies = []\n", "\n", "for i in sample_sizes:\n", " # One sample, seed = 0 (default), with i number of shots\n", " resample = BackendResultBootstrap(1, 0, i)\n", " resampled_result = resample.get_sampled_results(noisy_results)\n", " noisy_H2_1E_energies.append(noisy_protocol.retrieve(resampled_result[0]).evaluate_expectation_value(\n", " ansatz, hamiltonian.qubit_encode()))\n", "\n", "# Append the expectation value of the 10000 shots result\n", "noisy_H2_1E_energies.append(noisy_protocol.evaluate_expectation_value(\n", " ansatz, hamiltonian.qubit_encode()\n", "))" ] }, { "cell_type": "code", "execution_count": null, "id": "2794313a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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5tzQG3Vtg+nJ9+2N86+8c6C669X+JVq2bGnWdffdd8uAAQPK3Ozaadte7Zzr3XffNW18ExISzPTS51lVx7Wm54M7y2uQ+Oabb5r+Mh588EH561//6qido5lQDXhLZ7C9eX5VdV1Udix1nVWdc558H56cD558j+Vx91rQ4+DOPtZUdc+1yq4LX12vH3zwgXTr1s1k8J0z2/ZguqLMvrb113PaHVrFvLzstf4foplv3Sdneg4rbbeuVd8ro//v/Pa3vzXNE3r27FlpW329PkvT71wfdukDH/3O3J1Pff3116bseo2NHj3aXBd6vLTpiV4b+nBC6Xek569+//p/pT4s0PNQzz39nqnxBniJDQBqKCMjQ++abFdccYVb848ePdoWGhpq2759u2Pa/v37bdHR0bZzzjnHMW3GjBlmvTfeeKPL8ldeeaUtPj7eZdq1115ra9asma2wsNAx7cCBA7bAwEDbH//4R8e0m266yZaYmGg7cuSIy/LXXHONLTY21paTk+OybV1vaZdddpktMjLStm/fPse0rVu32oKDg80y1d2WO/s5YcIEs08rVqwoU67i4mKPtlsRe3kuv/xyl+l33HGHmb5u3Tqf7V95ZVu6dKlZ/q233vL4+3799dfNsjt37qz2+VfeOVAed9e7ePFis9558+ZVuc6//OUvZcpfunxVHdeang+eLD99+nTzHXz33Xdm/7R8zz77rE/PL3evi4qOpbvnXGXr8MZ55s71UR53rgVP9rH0vkycONHWpk2bMsvby+2sJudaRdeFL65XPVZRUVFm/opeFV2f9nK68yrvulXdu3e3nX/++WWmb9y40Sz30ksvVbkPL7zwgjmmaWlp5v25555r1ltaz549bWeccYbL+ZGXl2dr3bq12dZ7773n0XyqV69e5v9Aff32t7+1vf/+++anzqfftbPHH3/cFhER4XJcHnzwwSr3D4D7qHIPoMbs1eq0V9yqaFZBO9PRp/qa0bfTbLdWk9S2dvb12d12220u7zVbc/ToUZf5rr76atMGU6vC22lWSqsB6mdKszXaDlA78tHfNStjf40cOdJkXTQzVtm2tfyandDya9Ve5yYFWiXUzhvbKr2fui8LFiww69Tq/qVpVqw6262IZledaTZIffrppz7ZP+WcIdJMmH6ux1arITuvz53v21fnn7fW6y2VHdeang+eLq/VnjUr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4IVxww8ePCjp6ekcS7glLi5OWrRoUWXHd5UhoAcAAACAGrIH882aNZPIyMgaBWmo/w9/cnJyJC0tzbxPTEys9roI6AEAAACghtXs7cF8fHw8xxJVioiIMD81qNfzprrV7+kUDwAAAABqwN5mXjPzgLvs50tN+lwgoAcAAAAAL6CaPWr7fCGgBwAAAADAggjoAQAAAACwIAJ6AAAAAGigJk2aZKp+l35ddNFFtVaGRx99VPr06ePWfOWVtUuXLtJQ0cs9AAAAADRgGry//vrrLtPCwsKkLurevbt8/fXXLtOCg30b1ubn50toaKjURWToAQAAAKAB0+C9RYsWLq/GjRubz7755hsTzH7//feO+WfPnm2GWjt06JB5//nnn8uQIUMkLi7ODNt36aWXyvbt2122kZqaKtdee600adJEoqKipH///rJs2TJ544035LHHHpN169Y5Mu46rSIavJcua0JCguPztm3byp///Ge58cYbJTo6Wlq3bi2vvPKKyzr27t0r48ePN+XV8lxxxRWya9cul1oLo0ePlpkzZ0pSUpJ07tzZTP/xxx9NTYLw8HBT/gULFpjyrl271owt37FjR3nqqadctqWf6Tzbtm0TXyCgBwAAAAAfyc7OrvCVm5vr9rwnT550a15vGzZsmNxzzz1yww03SEZGhqxZs0Yefvhhee2116R58+aOskydOlVWrlwpCxculMDAQLnyyiuluLjYfJ6VlSXnnnuu7Nu3Tz766CMTvN9///3m86uvvlqmTZtmMu8HDhwwL51WE08//bQJuLWsd9xxh9x+++2yefNmxxBxI0eONMG+PqRYsmSJNGrUyNRS0Ey8ne6HLvPVV1/JJ598IpmZmXLZZZdJz549ZfXq1fL444/L//3f/znm16BdHyKUrumg78855xwT7PuEDZXKyMiw6WHSnwAAAABQ2smTJ22//PKL+VmaxhIVvUaNGuUyb2RkZIXznnvuuS7zJiQklDufpyZOnGgLCgqyRUVFubxmzpzpmCcvL8/Wp08f2/jx423dunWzTZkypdJ1Hj582JTl559/Nu9ffvllW3R0tO3o0aPlzj9jxgxb7969qyyrzhcYGFimrLfeeqtjnjZt2tiuv/56x/vi4mJbs2bNbC+++KJ5//bbb9s6d+5spjvvX0REhO2LL75wHJPmzZub6Xa6fHx8vMt3/Oqrr5r9XLNmjXm/b98+cyyXLVtm3ufn55vv6Y033vD4vHE3DqUNPQAAAAA0YOedd568+OKLLtO0KrqdVrmfM2eO9OrVS9q0aSPPPPOMy7xbt26VRx55xFShP3LkiCMzv2fPHunRo4epdp6SkuKyzurS6u+a5XcWExPj8l7L6Zw512r5aWlp5r3WDtDq75qhd6a1JZybCWgm3rndvGbrdb1a3d5u4MCBLuvQ6vmXXHKJ/Otf/zKfffzxx5KXlyfjxo0TXyGgBwAAAAAf0ermFQkKCnJ5bw86y6PV2J05t/muKW3TXlWVcG0/ro4dO2ZeuoydVkXXQP/VV181Qa0G9BrI26uwR0REeK2sGmRXVdaQkBCX9xrUO1f/79evn3lAUVrTpk0dvzvvnyduvvlm0zxBH3podXttPhAZGSm+QkAPAAAAAD7iSWDoq3lrSjPXv//9703A/t///lcmTpxoeprXhwxHjx412Wv9bOjQoWb+H374wWV5zWxrm3t9EFBell6D9KKiolrZl759+5p90E79Smf2q6oZ8O9//9tk3O0jAKxYsaLMfKNGjTLfjdZ40M4Cv/vuO/ElOsUDAAAAgAZMg9SDBw+6vLTqvNJA+/rrrzcdyU2ePNlkndevX286nlPaG772bK89yWtV9kWLFpkO8pxp7/Za7V17jtdO6Hbs2CHvv/++LF261NEz/c6dO03VfN2ulqcihYWFZcp66FRv++647rrrTK/42rO9doqn29We/O+++27TE39FfvOb35gs/y233CK//vqrfPHFF44e7bUGgHOtC+0lf/r06dKpUycZPHiw+BIBPQAAAAA0YJpJTkxMdHnpMHRKh27bvXu3vPzyy+a9fqbB+0MPPWTao2uW/j//+Y+sWrXKVLPXTP5f/vKXMhn4L7/80mTFNYOt7dOfeOIJR5ODMWPGmF7mtS2/Vnt/9913Kyzrxo0by5S1TZs2bu+rVn/XrLkOZ3fVVVdJ165d5aabbjJt6CvL2Otn2iZeHzro0HUPPvig6TdAOberV7o+bW6gD0B8LUB7xvP5VixMhyeIjY01QzR4UiUDAAAAQMOgwaBmetu1a1cmuEP9NWfOHBO0a6zo3E+AZv6HDx9uxru3D+3n6XnjbhxKG3oAAAAAAKrw1ltvSfv27aVly5amdoKOQz9+/HhHMK9NBQ4fPiyPPvqo6dm+smDeW6hyDwAAAABAFbS9vvYnoNX0tWmBBu3a/MBOmwpo9f/09HSZPXu21AbLBPTaI6J2YKDVDeLi4ky7hMqGgHCmrQouvvhi01nBggULfF5WAAAAAED9cv/995vhAu1V5XVoOuch6bQzPO1EUPsT0Cx+bbBMQK/BvHaA8NVXX8knn3xiOjLQHgbd8eyzz7r0PAgAAAAAgNVZog29DgugPS/qOH/9+/c3055//nnTQ6IOFZCUlFThstoLoQ6psHLlStMDIgAAAAAA9YElMvQ6PqFWs7cH8+qCCy4wQyQsW7aswuVycnLMeIF///vfzbiH7tCODLRHQecXAAAAAAB1TaBVOh/QMQudBQcHS5MmTcxnFdGOCs466yy54oor3N7WrFmzzPAA9ldycnKNyg4AAAAAQL0L6B944AHTtr2y16ZNm6q17o8++kgWLVpk2s97Yvr06WasP/tLxw4EAAAAAKCu8Wsb+mnTppmeACuj4/xpdfm0tDSX6YWFhabn+4qq0mswv337dlNV39mYMWNk6NCh8s0335S7XFhYmHkBAAAAAFCX+TWgb9q0qXlVZfDgwWYsP+3+v1+/fo6Avbi4WAYNGlRh9v/mm292mdazZ08ztMBll13mpT0AAAAAAMA/LNGGvmvXrnLRRRfJlClTZPny5bJkyRK566675JprrnH0cL9v3z7p0qWL+Vxp5r5Hjx4uL9W6dWtp166dX/cHAAAAAOoCrTE9evToMtO1RrM2gdbEqv6u/ZLpqGFRUVHSp08fmTNnTpXr1qHGNZmqMZuua8GCBWXmGTZsWLlNr2+77Tav7WN9ZomAXukJowH78OHDzXB1Q4YMkVdeecXxeUFBgWzevNn0bA8AAAAA8I4ff/xRevXqJe+//76sX79eJk+eLBMmTJBPPvmk0uWys7Old+/eZtSxymji9sCBAy6v2bNn8/XVl3HolfZo/84771T4edu2bcVms1W6jqo+BwAAAAC4+sMf/uDy/ne/+518+eWX8sEHH8ill15a4eG6+OKLzasqkZGRbg8zDosG9AAAAABgFZpMPFlQ5JdtR4QEmWrrvqQjgmnTaPgXAT0AAAAAeJkG890e+cIvx/WXP46UyFD3Qz2tOt+oUSOXaUVFFT+MmDt3rqxYsUJefvll8YZ//OMf8tprr7lM03Vfd911Xll/fUZADwAAAAAN2HnnnScvvviiy7Rly5bJ9ddfX2bexYsXmzb0r776qnTv3t1M+/77712q1nsajOu8Dz74oMu05s2bV2NPGh4CegAAAADwQbV3zZT7a9ue0J7rO3bs6DItNTW1zHzffvut6bVehwLXTvHs+vfvL2vXrq12MB4bG1tm+3APAT0AAAAAeJm2Yfek2ntdp0PXaQd4Tz75pNxyyy0un0VERBCQ+0n9OcMAAAAAAF6n1ew1mNfe7ceMGSMHDx4000NDQ81oZBXJysqSbdu2Od7v3LnTZPJ1mdatWzum69Dj9nXahYWFSePGjfk268s49AAAAACA2vfmm2+aoHvWrFmSmJjoeF111VWVLrdy5UpJSUkxLzV16lTz+yOPPOIyn7bHd16vvq699lqf7lN9EWBjcPZKZWZmmjYdOixDTExMbX0vAAAAACwiNzfXZJ/btWsn4eHh/i4O6sF5424cSoYeAAAAAAALIqAHAAAAAMCCCOgBAAAAALAgAnoAAAAAACyIgB4AAAAAvID+xlHb5wsBPQAAAADUQEhIiPmpQ7sB7rKfL/bzpzqCq70kAAAAAECCgoIkLi5O0tLSzNGIjIyUgIAAjgwqzMxrMK/ni543ev5UFwE9AAAAANRQixYtzE97UA9URYN5+3lTXQT0AAAAAFBDmpFPTEyUZs2aSUFBAccTldJq9jXJzNsR0AMAAACAl2iQ5o1ADXAHneIBAAAAAGBBBPQAAAAAAFgQAT0AAAAAABZEQA8AAAAAgAUR0AMAAAAAYEEE9AAAAAAAWBABPQAAAAAAFkRADwAAAACABRHQAwAAAABgQQT0AAAAAABYEAE9AAAAAAAWREAPAAAAAIAFEdADAAAAAGBBBPQAAAAAAFgQAT0AAAAAABZEQA8AAAAAgAUR0AMAAAAAYEEE9AAAAAAAWBABPQAAAAAAFkRADwAAAACABRHQAwAAAABgQQT0AAAAAABYEAE9AAAAAAAWREAPAAAAAIAFEdADAAAAAGBBBPQAAAAAAFgQAT0AAAAAABZEQA8AAAAAgAUR0AMAAAAAYEEE9AAAAAAAWBABPQAAAAAAFhTs7wLAe7Kzsyv8LCgoSMLDw92aNzAwUCIiIqo1b05OjthstnLnDQgIkMjIyGrNe/LkSSkuLq6wHFFRUdWaNzc3V4qKirwyr5ZXy63y8vKksLDQK/Pq8dXjrPLz86WgoMAr8+r5oOeFp/PqfDp/RcLCwiQ4ONjjefUY6LGoSGhoqISEhHg8r35n+t1VROfT+T2dV88xPde8Ma8eAz0WSq8JvTa8Ma8n1z1/I07jb0QJ/kaUvZb5G8F9BH8jTuNvBH8jrHwfEeV0j295Nos4evSo7Te/+Y0tOjraFhsba7vxxhttJ06cqHK5H3/80XbeeefZIiMjzbJDhw615eTkuL3djIwMPQvMz7pOy1nRa9SoUS7z6vGoaN5zzz3XZd6EhIQK5+3fv7/LvG3atKlw3m7durnMq+8rmlfX40y3U9G8Wj5nWv6K5tX9dqbHpbLj5mzs2LGVzpuVleWYd+LEiZXOm5aW5pj3jjvuqHTenTt3Oua99957K513w4YNjnlnzJhR6bzLly93zDt79uxK5128eLFj3hdeeKHSeT/55BPHvK+//nql886dO9cxr/5e2by6LjvdRmXzahnttOyVzav7bqfHpLJ59Zja6bGubF79ruz0O6xsXj0H7PTcqGxePbfs9JyrbF49Z51VNi9/I/gbwd8I/kbwN4L7CO4juI9oKPcRVuBuHGqZKvfXXXedbNy4Ub766iv55JNP5LvvvpNbbrml0mWWLl0qF110kYwYMUKWL18uK1askLvuusuRwQQAAA1EUIhIAP//AwDqlwCN6qWO+/XXX6Vbt24mIO/fv7+Z9vnnn8uoUaMkNTVVkpKSyl3uzDPPlAsvvFAef/zxam87MzNTYmNjJSMjQ2JiYqQuozptCarcU+WeKvclqHJ/Gs1yrN8sJy+/QI5kZkvmyUI5kVcomScLJDO3UDJyC+VEbqFk59vkRH6RZJwskPTsfMk4mW8+1/n08yKnu53gwAAJDgqQkMBA8zMwQCQkKNBMD9LPTn0eHBhopocGB5n3+lmgFJvp9nl0Woj5PVBCgoMkLCS4ZNmAALEVF5bMa9blut7QkGCJCAsxvwcFihQV5Jt16Dwhp9ZbskyghIcGS0R4mCmLzpufl+sou3OZtbopzXJK0HTvNJrulaDp3qm/fzTds0yVe3fjUEsE9P/6179k2rRpcvz4ccc0bUOrNxDz5s2TK6+8sswyaWlp0rx5c3nuuefk3Xffle3bt0uXLl1k5syZMmTIkHoZ0AMAUJcVFBWbgFtfGmiX/t0E6Dmnp5dMK/mpQTkq5/zA4PQDiVMPHZweWJjfTz3QMA8Dgk5/7rr8qQcVp366PujQdZX8tM/nmN/xQOLU5/bPSn3u2KZ9e/YyOT1ssT+oAICGJtPNONQSneIdPHhQmjVrVubpUpMmTcxn5dmxY4f5+eijj8pTTz0lffr0kbfeekuGDx8uGzZskE6dOpW7nHa05dzZlh5IAABQIregJAteXmB+elph2aA9t0By8ivuWNRdESFBEhsRYl4xEcGnfpa8N7+Hn/49NvL0+8iwICkutklBkU0Ki4ul0Py0SWFR8elp5n3JNPN78anPXJYpmVZk1mVf5vSyBcXFUnRq3eZz+3ZOLa/TzLL25Zy2XbLeU/OVKqNj3afmK0/JdvSzijuGtSJ7DQT7gwiXhwBODxNKajCU1HAo81DC/gDC/lDC6WFCyUMH58+dHkqceqDh/CDEuYZG+Q9CTj8wsZchUB9M+PtA1jH6oKZJVEmHkwCqz68B/QMPPCBPPvlkldXtq8Pey/mtt94qkydPNr+npKTIwoULTcZ/1qxZ5S6n0x977LFqbRMAgLpOK+Zln6qa7pwN14C7vKz56VehmSe/sObBYnRYsEsQ7hycn37vGqjbg/XQYNrB63eogb09gLc/lKjsIUOlDyXsv5d66FDmocSpdToeSrg8CLE/dCh5KFHyIMTpIYnTgwp94OF4oOH0eUUPKnRb+srzwrmHuiOhUaisfOhCfxcDsDy/BvRajX7SpEmVztO+fXtp0aKFqULvTKvcHzt2zHxWnsTERPNT294769q1q+zZs6fC7U2fPl2mTp3qkqFPTk52a38AAPB3oLd2b7os2pQmR0078pLA3DVTXmiCo5rQbGVMuGt2PKa8DHk5wXp0eIhZHtVn2sqbrHL9O3/11Cz3ocSp308/LHCu2eD0UKLUQ4dyazuUeojgXCOjZFuntuNSi8L1QUhFNTtKHmg4Pwip+EEFAFg+oG/atKl5VWXw4MGSnp4uq1atkn79+plpixYtMln4QYMGlbtM27ZtTWd5mzdvdpm+ZcsWufjiiyvtgMc+xjMAAFZw+ESezF+TKnNXpsq2tCy3lgkNCjwVhJettu6cEXepzn5q3kZhwbRrhk8eVAQF6AOjevak4tTDCgDwBUu0odesug4/N2XKFHnppZdMr7g6/Nw111zj6OF+3759pn28tpMfOHCg+U/hvvvukxkzZkjv3r1NG/o333xTNm3aJO+9956/dwkAgBrRDODiTWkmiF+8Oc2RdQ8PCZSR3VtIu4Qo13blka7BelhwIEE5UEvo2A9Agw7o1Zw5c0wQr0G7DrkzZswY04O9nQb5mo3PyclxTLvnnnskNzdXfv/735vq+RrY6zj2HTp08NNeAABQM1sPnZC5K/fK/DX75EjW6SHfUlrHyfj+yXJJr0QTwAMAgPrPEsPW+RPD1gEA/E07o/t43X6ZtzLVtJG3S2gUJmP6tpRx/VtJx2bRfi0jAADwnno1bB0AAA2NDrH2046jMm9Vqny24YDkFpT08K1DYJ3fpZnJxp/buakZNgsAADRMBPQAANQhqcdz5P1V+2Teqr2SevykY3qnZo1MED86paU0jabzVgAAQEAPAIDf5RYUyRcbD5oq9Uu2HxF7Yzgdr/2yPkkmkO/dKpaOtQAAgAsy9AAA+IF2YfPzvgwTxH+4dp8ZH97urA7xJojX3uojQuvfEF4AAMA7COgBAKhFR7PyZMFa7eBur2w6eMIxvWVchIzt18q8kptE8p0AAIAqEdADAOBjhUXF8t3WwzJ3Raos3HRICopK6tSHBgfKxT1ayLh+ySYrHxgYwHcBAADcRkAPAICPbD+cZarUf7A6VdJO5Dmma3v4sf2T5fJeSRIbyZjxAACgegjoAQDwoqy8Qvnf+v0yd2WqrNp93DE9PirU9FCvY8Z3aVHxeLIAAADuIqAHAMALHdwt33nMBPGf/nxAThYUmelBgQEy7IymMq5/shk7XqvYAwAAeAsBPQAA1XQg46R8sHqf6eBu19Ecx/T2TaNML/VXpbSUZjHhHF8AAOATBPQAAHggr7BIvv4lTeau3Cvfbz0sxafGjI8KDZLLeieZbHzf1nGMGQ8AAHyOgB4AADds3F8yZvyCtfskPafAMX1QuyYmiB/Vs4VEhvLfKgAAqD3ceQAAUIHj2fny4dp9pm38LwcyHdMTY8NlTN+SMePbJkRx/AAAgF8Q0AMA4KSo2Gaq0ms2/qtfDkl+UbGZHhoUKBd2b27axg/pmGA6vAMAAPAnAnoAAERk15Fsmbdqr7y/ap8czMx1HJPuSTEmiL+iT5LERYZyrAAAQJ1BQA8AaLCy8wrNMHPzVqWaYefs4iJDZHSfkjHjuyfF+rWMAAAAXgnoi4uL5dtvv5Xvv/9edu/eLTk5OdK0aVNJSUmRCy64QJKTkz1ZHQAAfhkzfvWe4zJ3Rap8sn6/ZOeXjBmvNejPOaOpycYP79pMwoKD+HYAAECdFmDTO5sqnDx5Up5++ml58cUX5dixY9KnTx9JSkqSiIgI837Dhg2yf/9+GTFihDzyyCNy5plnSn2RmZkpsbGxkpGRITExMf4uDgCgmtIyc+V9HTN+1V7ZcTjbMb1tfKTppf6qvi0lMTaC4wsAACwTh7qVoT/jjDNk8ODB8uqrr8qFF14oISEhZebRjP0777wj11xzjTz44IMyZcqUmu0BAAA1lF9YLIs2HTK91H+75bDp8E5FhgbJqJ6JJhs/oG1jxowHAAD1N0P/66+/SteuXd1aYUFBgezZs0c6dOgg9QEZegCwnk0HM02Veh0z/lh2vmN6/zaNTRA/qleiNAqjGxkAANAAMvTuBvNKs/f1JZgHAFhHRk6BfLROq9SnyvrUDMf0ZtFhMqZfyZjxHZo28msZAQAAvKna6QntEE8z8fn5pzMfqlevXt4oFwAAVSoutsmS7UfMmPGfbzxoqtirkKAAuaBryZjxQzslSHBQIEcTAADUOx4H9IcPH5bJkyfLZ599Vu7nRUUlvQUDAOAre4/lmEz8+6tSZV/6Scf0Li2iTQd3o/skSXyjML4AAABQr3kc0N9zzz2Snp4uy5Ytk2HDhsn8+fPl0KFD8qc//cn0hA8AgC+czC+SzzceMG3jl+446pgeEx4sV/RpabLxPVrG0MEdAABoMDwO6BctWiQffvih9O/fXwIDA6VNmzam53ttqD9r1iy55JJLfFNSAECDo/22rt2bbnqp/2TdfjmRV2imBwSIDOmYYLLxI7o1l/AQxowHAAANj8cBfXZ2tjRr1sz83rhxY1MFX4e169mzp6xevdoXZQQANDCHT+TJ/DWppm381rQsx/TkJhEyrl+y6eSuZRxjxgMAgIbN44C+c+fOsnnzZmnbtq307t1bXn75ZfP7Sy+9JImJib4pJQCg3isoKpZvNh+WuSv3yuJNaVJ4asz48JBAGdUjUcb2byVntouXwMAAfxcVAADAmgH97373Ozlw4ID5fcaMGXLRRRfJnDlzJDQ0VN544w1flBEAUI9tPXTCdHD3wepUOZJ1euSUlNZxJht/ae9EiQkP8WsZAQAA6qIAmzZQrAEdvm7Tpk3SunVrSUhIkPomMzNTYmNjJSMjw/QTAADwwt/W3AL5ZN0Bk43XNvJ2CY3C5Kq+LWVcv1bSqXk0hxoAADRImW7GodUeh94uMjJS+vbtW9PVAAAawJjxP+08atrFf7bhgOQWlIwZHxQYIOd3aWZ6qR/WuamEMGY8AACAW9wO6KdOnerWfH/961/dXSUAoAHQceJ1vPh5q/bK3mOnx4zv1KyRCeJHp7SUptGMGQ8AAOCzgH7NmjUu73/44Qfp16+fRESc7mU4QMcRAgA0eLkFRfLlL4dk3sq98sO2I2Jv3BUdFiyX9UkyVer7JMfx/wYAAEBtBPSLFy92eR8dHS3vvPOOtG/fvibbBwDUE9oly4Z9maZd/Idr90lmbsmY8eqsDvEyrn8ruah7okSEMmY8AACAN9S4DT0AoGE7mpUnC9buN9n4TQdPOKbrOPE6Xrxm45ObRPq1jAAAAPURAT0AwGOFRcXy3dbDMndFqizcdEgKikrq1IcGB8pF3VuYtvGalWfMeAAAAN8hoAcAuG374SzTS72OGZ92Is8xvVerWBnXP1ku75UksZGMGQ8AAFCnAvr169eXaSup489nZWW5TO/Vq5f3SgcA8LusvEL5dH3JmPErdx93TG8SFSpXprQ0beO7tKh4fFQAAAD4RoBNI3M3BAYGmt6Iy5vdPl1/FhUVSX2SmZkpsbGxkpGRITEx3LACaBj0b/qKXcdNEP/pzwckJ7/kb3tggMh5nZuZIP78Ls1NFXsAAAD4Jw51O0O/c+dOb5UNAFBHHcg4KR+s3mc6uNt1NMcxvX3TKBnXL1mu6ttSmseE+7WMAAAA8DCgb9OmjbuzAgAsJK+wSL7+Jc1k47/feliKT1XEigoNkkt7Jcn4Aa2kb+vGjBkPAABgxYB+z5490rp1a7dXum/fPmnZsmVNygUA8LGN+zNMB3cL1u6T9JwCx/SB7ZqYXupH9WwhkaH0nQoAAFBXuXWnNmDAABk9erTcfPPN5vfyaN3+uXPnyt/+9je55ZZb5O677/Z2WQEANXQ8O18+XLtP5q1KlY37Mx3TW8SEy9h+rcyrbUIUxxkAAKC+BPS//PKLzJw5Uy688EIJDw+Xfv36SVJSkvn9+PHj5vONGzdK3759Zfbs2TJq1CjflxwA4JaiYpv8sO2IqVL/1cZDkl9UbKaHBgXKhd2by7h+rWRop6YSpD3eAQAAoP71cq9Onjwp//vf/+SHH36Q3bt3m/cJCQmSkpIiI0eOlB49ekh9Qy/3AKxq15FseW9Vqry/OlUOZOQ6pndPijFB/BV9WkrjqFC/lhEAAADVj0M9CugbIgJ6AFaSk18on/580GTjl+885pgeFxkio/u0NFXqe7SM9WsZAQAAUMvD1gEA6iZ9Lrt6z3GZuyJVPlm/X7KdxozXqvTawd0F3ZpJWHCQv4sKAAAALyKgBwCLSsvMlfd1zPhVe2XH4WzH9DbxkSaI1zHjE2Mj/FpGAAAA+A4BPQBYSH5hsSzadMgMN/fNlsOmwzsVERIkl/RKNIH8gLaMGQ8AANAQENADgAVsOphpgvj5a/bJsex8x/R+bRrL+P6t5JJeSdIojD/pAAAADYnHd3/Z2dkSFcUYxQDgaxknC+Sjdftl3sq9sj41wzG9aXSYjOnbSsb1byUdmjbiiwAAAGigPA7omzdvLuPHj5cbb7xRhgwZ4ptSAUADVVxskx+3HzXt4j/fcFDyCkvGjA8ODJALujaX8QNayTmdmkpwUKC/iwoAAAA/8/iO8N///rccO3ZMzj//fDnjjDPkiSeekP3794uv6Tavu+4602V/XFyc3HTTTZKVlVXpMgcPHpQbbrhBWrRoYWoV9O3bV95//32flxUAPLX3WI4889UWGTp7sVz/z2Xy4dr9Jpjv0iJaHr60myz7w3B56YZ+cn6X5gTzAAAAqNk49IcPH5a3335b3njjDfn1119l5MiRJmt/+eWXS3Cw99txXnzxxXLgwAF5+eWXpaCgQCZPniwDBgyQd955p8JlRowYIenp6fLCCy9IQkKCmXfGjBmycuVKSUlJcWu7jEMPwFdO5hfJFxtLxozXrLxdTHiwXNGnpalS37NlrAQEBPAlAAAANCCZbo5DX+2A3tnzzz8v9913n+Tn55vA+bbbbpMHHnhAIiMjxRv0gUG3bt1kxYoV0r9/fzPt888/l1GjRklqaqokJSWVu1yjRo3kxRdfNFl6u/j4eHnyySfl5ptvdmvbBPQAvEn/5K5LzTBB/Mdr98uJvEIzXWP2IR0TZGy/VjKyewsJD2HMeAAAgIYq082Avtqp9EOHDsmbb75pMvS7d++WsWPHmmrwGmBrwPzTTz/Jl19+Kd6wdOlSU83eHsyrCy64QAIDA2XZsmVy5ZVXlrvcWWedJf/973/lkksuMcvPnTtXcnNzZdiwYRVuKy8vz7ycDyQA1NThE3myYM0+E8hvTTvdXKhV4wgZ1y9ZxvRrKa0ae+chKAAAABoGjwP6Dz74QF5//XX54osvTNb8jjvukOuvv94EzM6BdNeuXb1WSG0L36xZM5dpWq2/SZMm5rOKaAB/9dVXm6y8zq81BubPny8dO3ascJlZs2bJY4895rWyA2i4CoqK5ZvNh00Qv3hTmhSeGjM+LDhQRvVMNFXqz2wXL4GBVKkHAABALQT02nb9mmuukSVLlpg27OXRKvAPPvhglevSavmaza+qun11Pfzww6YN/ddff22aAixYsMD00P/9999Lz549y11m+vTpMnXqVJcMfXJycrXLAKBhOZKVJ6t3H5dlO4+Zju30vV2f5DgZ3z9ZLu2dKDHhIX4tJwAAAKzP4zb0OTk5Xmsbrx3rHT16uiOo8rRv3970rD9t2jQ5fvy4Y3phYaGEh4fLvHnzyq1yv337dpOJ37Bhg3Tv3t2lqr5Of+mll9wqI23oAVSksKhYNh08Iav3HDdB/Oo96bLnWI7LPAmNQuUqHTO+Xyvp1DyagwkAAAD/taHXQLq8duXaC3NYWJiEhoa6va6mTZuaV1UGDx5sMu2rVq2Sfv36mWmLFi2S4uJiGTRoUIUPHpS2s3cWFBRklgMATx3NypM1e9Jl1akAfn1qhpwsKHKZRzu369SskfRt3VjO79JMzuvSTEIYMx4AAAA+4HFAr23lKxtCqVWrVjJp0iQzPFzpYLq6tD3+RRddJFOmTDGZdR227q677jJV/+093O/bt0+GDx8ub731lgwcOFC6dOliMvG33nqrPPXUU6YdvVa5/+qrr+STTz7xSrkA1O/s++ZDmn1PlzUm+35cdh11zb6r6PBgSWndWPq2jjNBfJ/WcVSnBwAAQN0M6LVXe20fr0G7Bs5q+fLlpsf7hx56yFSj1wBas/V/+MMfvFbQOXPmmCBeg3Z9UDBmzBh57rnnHJ9rkL9582ZHZj4kJEQ+/fRT007/sssuk6ysLBPgazl1uDsAcHYsO1/WaObdZN/TZV1quuTku2bfVUeTfY+Tfm00iG8sHZo2olM7AAAAWKMNvQbUmvXWzuVK9yj/8ssvy8KFC+Xtt9+WmTNnyqZNm8TqaEMP1D9FxTbZYrLvJcG7BvI7jmSXmS86LNhk3O0Z+JTkxhIbSWd2AAAAsGgb+h9//LHcDuVSUlLMePFqyJAhsmfPHk9XDQA+kZ6j2ff0kgB+z3FZtzdDsvIKy8zXvmmUybrbs++ajQ9iSDkAAADUUR4H9DqE2z//+U954oknXKbrNPvwbtpzfePGjb1XSgBwU3GxTbamZcmqU+3e9bXjcNnse1RokMm+a+Cur5TWcRIX6X6nngAAAIDlAnptHz9u3Dj57LPPHOPQr1y50lSvf++998z7FStWyNVXX+390gJAKRk5BbJmb8mQcVp1fu2edDlRXvY9Iaqk6nybkiD+jObRZN8BAADQsNrQq127dpn28toJnercubNpV9+2bVupb2hDD9St7Pu2w1mnxnwvCeK3pWWVmS8yNEh6t4pzBO8ayDeJIvsOAACABtyGXnuS1+HjtA39rFmzvFFOAKhQZm6Bybjbg3fNwJ/ILZt9bxsfWRK4m7bvcdK5ebQEM/Y7AAAA6jmPAnodCm79+vW+Kw2ABp1933FEs++nO6/TtvCl6xBFhARJr1ax0rfN6bbvCY3C/FVsAAAAwDpt6K+//vpyO8UDAE+cyC0wvc1r4K4d2K3dmy4ZJwvKzNe6iWbf4xwBfJcWZN8BAACAagX0hYWF8q9//Uu+/vpr6devn0RFRbl8/te//pUjC8CFdtWh47yXtH0vqTq/+dCJMtn38JBA6dUyTlJOtX3XV9Nosu8AAACAVwL6DRs2SN++fc3vW7ZscfksICDA09UBqId0jPd1e9Mdndet2Zsu6Tlls++tGkecCtxLMvBdE2MkhLbvAAAAgG8C+sWLF3u6CIB6nn3fcyxHVu463fP85oOZUlwq+x4arNn3023fNYhvFhPur2IDAAAADS+gt9u2bZts375dzjnnHImIiDA39WTogYbhYEauLN1xRJZsOypLtx+Vfekny8zTMi7CdFhngvc2jaVbYowJ6gEAAAD4KaA/evSojB8/3mTqNYDfunWrtG/fXm666SZp3LixPP30014qGoC64nh2vvy046j8uP2oLNl+RHYcznb5PCQoQHpq9r11Y+mnGfg2jaU52XcAAACgbgX0v//9783wdXv27JGuXbs6pl999dUydepUAnqgnrSBX7HzmPy4vSQL/+vBTJcO7LS7DA3gB3eIl7M6JMiAto0lMrTaFX4AAAAAVIPHd+BffvmlfPHFF9KqVSuX6Z06dZLdu3dXpwwA/Cy3oMi0f9fq80u2HZF1qRlSVKoR/BnNG5ngXYP4M9vFS2xkiN/KCwAAAKAaAX12drZERkaWmX7s2DEJC2N4KcAKCouKZf2+DPlx2xFTjX7l7uOSX1hcZvz3szrEmwBeX82i6cAOAAAAsHRAP3ToUHnrrbfk8ccfN++1HX1xcbHMnj1bzjvvPF+UEUANFRfbZNPBE6YKvQbwy3ceM9XqnTWLDjMBvD0Ln9yk7IM7AAAAABYO6DVwHz58uKxcuVLy8/Pl/vvvl40bN5oM/ZIlS3xTSgAe0VEndh7JNsG7BvFalf54qXHgYyNCZHD7eDmrowbx8dKhaSNGqgAAAADqc0Dfo0cP2bJli7zwwgsSHR0tWVlZctVVV8mdd94piYmJviklgCrtTz9ZEsCfqkZ/MDPX5fPI0CAZ2K6JIwvfNTFGggIDOLIAAACARQXYNJWHCmVmZkpsbKxkZGRITEwMRwp1xpGsPDOUXMlY8Edk19Ecl89DgwKlb5s4E7xrEN87OU5CghgHHgAAAKgvcWi1xplKT0+X5cuXS1pammk/72zChAnVWSWAKmTmFsjyHcfMOPBahV7bxDvTZHuvVnGODHz/to0lPCSI4woAAADUUx4H9B9//LFcd911pqq9PinQTvHs9HcCesA7TuYXyardx00Ar1Xof05Nl1IjyUmXFtGODPzA9k0kJpyh5AAAAICGwuOAftq0aXLjjTfKn//853KHrwNQPTps3PrUdFOFXjuyW7MnXfKLXGvAtEuIMj3Qm+Hk2sdLfCOGigQAAAAaKo8D+n379sndd99NMA/UUFGxTX49kClLTnVit2LXMcnJL3KZp0VM+Kle6Euy8ElxERx3AAAAANUL6EeOHGmGrGvfvr2niwINmvY/uf1wliMD/9OOY5Jx0nUouSZRoSbzrln4szsmSNv4SIaSAwAAAOCdgP6SSy6R++67T3755Rfp2bOnhIS4ttm9/PLLPV0lUG/tPZZjOrCzt4M/fCLP5fNGYcEyqF0TRwDfuXm0BDKUHAAAAABfDFsXGFjxsFfaKV5RkWuVYatj2Dp4Iu1Ergngf9Qs/I4jsvfYSZfPw4IDTe/z9ir0PVvGSjBDyQEAAACojWHrSg9TBzRkGTkF8tNODeBLMvBb07JcPg8ODDDjv9uHkktpHcdQcgAAAAC8olrj0AMNVU5+oazYddwRwG/YnyHOdVx0FMduiTElAXzHBBnQtompVg8AAAAA3uZ2pDFq1Ch59913TdpfPfHEE3LbbbdJXFyceX/06FEZOnSoaVsP1Bd5hUWydk+6LNl+VJZuPyJr96ZLQZFrK5UOTaNM9v3sjvEyqF28NI4K9Vt5AQAAADQcbrehDwoKkgMHDkizZs3Me63Hv3btWkdv94cOHZKkpCTa0MPyQ8lt2JdhOrFbemooudwC12YmLeMiTAZeO7HTzuyax4T7rbwAAAAA6h+vt6EvHfd72JceUCfpebzlkA4lV1KFftnOo3Iit9BlnoRGoTJYM/Cn2sEnN4lgKDkAAAAAfkfjXjS4AH7PsRynseCPypGsfJd5osOD5cz28SUBfMcE6dSsEQE8AAAAAOsG9Doknb5KTwPquoMZuSZ41wy8VqPfl+46lFx4SKDpvE6r0GtV+u5JsRLEWPAAAAAA6jiPqtxPmjRJwsLCzPvc3FzTKV5UVJR5n5eX57tSAh44np1vMu9LTgXxOw5nu3weEhQgKcmNTft3DeJ7J8dKWHAQxxgAAABA/QzoJ06c6PL++uuvLzPPhAkTvFMqwANZeYWyYucxRzv4Xw9mugwlp8n2Hi1jTft3zcD3b9tYIkNpbQIAAADA2tyOal5//XXflgRwU25BkazefdwE71qVfl1qhumd3tkZzRs5AngdSi42MoTjCwAAAKBeIU2JOq+wqNgE7ToOvAbxK3cfl/xC16HkWjeJNOPAa2/0g9vHS9PokqYhAAAAAFBfEdCjzikutsmmgyccHdkt33nMVKt31iw6zDEOvAbwyU0i/VZeAAAAAPAHAnr4nXa4uPNItiwxvdAfMT3RH88pcJknNiLEBO72LHyHplGMsgAAAACgQSOgh1/sTz9pOrHT4F2z8Aczc10+jwwNkoHtmsjZWoW+Q7x0S4yRQIaSAwAAAAAHAnrUiiNZeY7gXbPwu47muHweGhQo/do0Np3YndUxXnq1ipOQoEC+HQAAAACoAAE9fCIzt0CW7Thm2sFrIK9t4p0FBQZIr1Y6lFy86Y1eg/nwEMaCBwAAAAB3EdDDK07mF8mq3cdlyamO7H5OTZdSI8lJlxbRpiM7DeIHtGsiMeEMJQcAAAAA1UVAj2rRYePWpabLj9tKxoJfsydd8otch5JrlxDlyMCf2b6JxDdiKDkAAAAA8BYCerilqNgmv+zPdAwlt2LXMcnJL3KZJzE23ATvGsRrR3ZJcREcXQAAAADwEQJ6VDiU3La0LBO8axD/045jknHSdSi5JlGhJnC3Z+HbxkcylBwAAAAA1BICejjsPZbjyMDr6/CJPJejEx0WLIPaNzHjwGsQ37l5NEPJAQAAAICfENA3YGknckuGktN28DuOyN5jJ10+DwsOlAFtmziy8D1bxkowQ8kBAAAAQJ1AQN+AZOQUyNIdJePAawZ+a1qWy+fBgQHSJznuVBv4BElpHcdQcgAAAABQRxHQ12M5+YWyfOexkiz89qOyYX+G2JyGkgsIEOmeFGPav2sWXrPxjcI4JQAAAADACiwTvc2cOVP+97//ydq1ayU0NFTS09Pd6thtxowZ8uqrr5r5zz77bHnxxRelU6dOUh/lFRbJ2j3psmR7SRZ+7d50KShyHQy+Y7NGpzqxi5dB7eKlcVSo38oLAAAAAGgAAX1+fr6MGzdOBg8eLP/85z/dWmb27Nny3HPPyZtvvint2rWThx9+WEaOHCm//PKLhIeHS31RUFQsN76xwgwll1vgOhZ8y7gIObtjSS/0GsQ3i6k/+w0AAAAADZllAvrHHnvM/HzjjTfcml+z888++6w89NBDcsUVV5hpb731ljRv3lwWLFgg11xzjdQXIUGBpkd6DeYTGoU5MvAaxLeOj/R38QAAAAAADTmg99TOnTvl4MGDcsEFFzimxcbGyqBBg2Tp0qX1KqBXf7yih8RFhkinZo0YCx4AAAAAGoB6G9BrMK80I+9M39s/K09eXp552WVmZooVDGzXxN9FAAAAAADUokDxowceeMBkkyt7bdq0qVbLNGvWLJPJt7+Sk5NrdfsAAAAAANT5DP20adNk0qRJlc7Tvn37aq27RYsW5uehQ4ckMTHRMV3f9+nTp8Llpk+fLlOnTnXJ0BPUAwAAAADqGr8G9E2bNjUvX9Be7TWoX7hwoSOA1+B82bJlcvvtt1e4XFhYmHkBAAAAAFCX+bXKvSf27NljxqDXn0VFReZ3fWVlZTnm6dKli8yfP9/8rtX177nnHvnTn/4kH330kfz8888yYcIESUpKktGjR/txTwAAAAAAaECd4j3yyCNmPHm7lJQU83Px4sUybNgw8/vmzZslIyPDMc/9998v2dnZcsstt0h6eroMGTJEPv/883o1Bj0AAAAAoGEKsOmA7aiQVtPXzvH0QUFMTAxHCgAAAABQJ+JQy1S5BwAAAAAApxHQAwAAAABgQQT0AAAAAABYEAE9AAAAAAAWREAPAAAAAIAFEdADAAAAAGBBBPQAAAAAAFgQAT0AAAAAABZEQA8AAAAAgAUR0AMAAAAAYEEE9AAAAAAAWBABPQAAAAAAFkRADwAAAACABRHQAwAAAABgQQT0AAAAAABYEAE9AAAAAAAWREAPAAAAAIAFEdADAAAAAGBBBPQAAAAAAFgQAT0AAAAAABZEQA8AAAAAgAUR0AMAAAAAYEEE9AAAAAAAWBABPQAAAAAAFkRADwAAAACABRHQAwAAAABgQQT0AAAAAABYEAE9AAAAAAAWREAPAAAAAIAFEdADAAAAAGBBBPQAAAAAAFgQAT0AAAAAABZEQA8AAAAAgAUR0AMAAAAAYEEE9AAAAAAAWBABPQAAAAAAFkRADwAAAACABRHQAwAAAABgQQT0AAAAAABYEAE9AAAAAAAWREAPAAAAAIAFEdADAAAAAGBBBPQAAAAAAFgQAT0AAAAAABZEQA8AAAAAgAUR0AMAAAAAYEEE9AAAAAAAWBABPQAAAAAAFkRADwAAAACABRHQAwAAAABgQQT0AAAAAABYkGUC+pkzZ8pZZ50lkZGREhcXV+X8BQUF8n//93/Ss2dPiYqKkqSkJJkwYYLs37+/VsoLAAAAAIAvWSagz8/Pl3Hjxsntt9/u1vw5OTmyevVqefjhh83PDz74QDZv3iyXX365z8sKAAAAAICvBdhsNptYyBtvvCH33HOPpKene7zsihUrZODAgbJ7925p3bq1W8tkZmZKbGysZGRkSExMTDVKDAAAAACA+9yNQ4OlAdGDERAQUGmV/by8PPNyPpAAAAAAANQ1lqlyX1O5ubmmTf21115b6ROOWbNmmSch9ldycnKtlhMAAAAAgDof0D/wwAMmY17Za9OmTTXejnaQN378eNHWBS+++GKl806fPt1k8u2vvXv31nj7AAAAAAB4m1+r3E+bNk0mTZpU6Tzt27f3SjCv7eYXLVpUZTv4sLAw8wIAAAAAoC7za0DftGlT8/IVezC/detWWbx4scTHx/tsWwAAAAAA1CbLtKHfs2ePrF271vwsKioyv+srKyvLMU+XLl1k/vz5jmB+7NixsnLlSpkzZ45Z5uDBg+alQ+ABAAAAAGBllunl/pFHHpE333zT8T4lJcX81Mz7sGHDzO86zry2e1f79u2Tjz76yPzep08fl3U5LwMAAAAAgBVZbhz62sY49AAAAACAuhiHWqbKPQAAAAAAOI2AHgAAAAAACyKgBwAAAADAggjoAQAAAACwIAJ6AAAAAAAsiIAeAAAAAAALIqAHAAAAAMCCCOgBAAAAALAgAnoAAAAAACyIgB4AAAAAAAsioAcAAAAAwIII6AEAAAAAsCACegAAAAAALIiAHgAAAAAACyKgBwAAAADAggjoAQAAAACwIAJ6AAAAAAAsiIAeAAAAAAALIqAHAAAAAMCCCOgBAAAAALAgAnoAAAAAACyIgB4AAAAAAAsioAcAAAAAwIKC/V2Aus5ms5mfmZmZ/i4KAAAAAKAByDwVf9rj0YoQ0FfhxIkT5mdycrK3vhsAAAAAANyKR2NjYyv8PMBWVcjfwBUXF8v+/fslOjpaAgICynw+YMAAWbFihUfr9HQZd+bXJzj60GHv3r0SExPjUXnqs+p8P/W9fL7aprfWW5P1VHdZT5Zzd16uyZof64ZQPl9uz6rXJP9H1h6ux9o7Jla9Hj1djv8ja4ZrsvaOxwALXJMapmswn5SUJIGBFbeUJ0NfBT14rVq1qvDzoKAgjwNoT5fxZH6dj4C+Zt9PfS+fr7bprfXWZD3VXdaT5TzdBtdkzY5ffS+fL7dn1WuS/yNrD9dj7R0Tq16Pni7H/5E1wzVZe8cjyCLXZGWZeTs6xauhO++80+fLVGcbsMax80f5fLVNb623Juup7rKeLFfXz6m6rq4fv9ouny+3Z9Vrkv8jaw/XY+0dE6tej54uV9fPqbqurh8//o+sG9dkaVS5rye0eq8+wcnIyKjT2S+goeCaBOoOrkegbuGaBLyHDH09ERYWJjNmzDA/Afgf1yRQd3A9AnUL1yTgPWToAQAAAACwIDL0AAAAAABYEAE9AAAAAAAWREAPAAAAAIAFEdADAAAAAGBBBPQAAAAAAFgQAX0DceWVV0rjxo1l7Nix/i4K0KDt3btXhg0bJt26dZNevXrJvHnz/F0koEFLT0+X/v37S58+faRHjx7y6quv+rtIQIOXk5Mjbdq0kXvvvbfBHwugKgxb10B88803cuLECXnzzTflvffe83dxgAbrwIEDcujQIRM8HDx4UPr16ydbtmyRqKgofxcNaJCKiookLy9PIiMjJTs72wT1K1eulPj4eH8XDWiwHnzwQdm2bZskJyfLU0895e/iAHUaGfoGQjOC0dHR/i4G0OAlJiaaYF61aNFCEhIS5NixYw3+uAD+EhQUZIJ5pYG9zWYzLwD+sXXrVtm0aZNcfPHFfAWAGwjoLeC7776Tyy67TJKSkiQgIEAWLFhQZp6///3v0rZtWwkPD5dBgwbJ8uXL/VJWoL7z5vW4atUqkx3UDAQA/12TWu2+d+/e0qpVK7nvvvvMgzYA/rketZr9rFmzOPyAmwjoLUCrAOqNhv4BLM9///tfmTp1qsyYMUNWr15t5h05cqSkpaXVelmB+s5b16Nm5SdMmCCvvPJKLZUcqJ+8cU3GxcXJunXrZOfOnfLOO++YZjEAav96/PDDD+WMM84wLwBussFS9CubP3++y7SBAwfa7rzzTsf7oqIiW1JSkm3WrFku8y1evNg2ZsyYWisrUN9V93rMzc21DR061PbWW2/VanmB+q4m/0fa3X777bZ58+b5vKxAfVed6/GBBx6wtWrVytamTRtbfHy8LSYmxvbYY4/VetkBKyFDb3H5+fmm2u4FF1zgmBYYGGjeL1261K9lAxoad65HvceZNGmSnH/++XLDDTf4sbRA/efONanZeO00VmVkZJgqw507d/ZbmYGGfD1qVXsdDWbXrl2mM7wpU6bII4884sdSA3UfAb3FHTlyxLTBbd68uct0fa89aNvpH8tx48bJp59+atoIEuwD/rkelyxZYqocartC7RxPXz///DNfB+Cna3L37t0ydOhQU/VXf/72t7+Vnj178n0AfrgeAXguuBrLwIK+/vprfxcBgIgMGTJEiouLORZAHTFw4EBZu3atv4sBoBStzQagamToLU574tUhd0p34KPvdUgsAFyPQEPF/5FA3cH1CPgGAb3FhYaGSr9+/WThwoWOaZr90/eDBw/2a9mAhobrEahbuCaBuoPrEfANqtxbQFZWlmzbts3xXofV0eqBTZo0kdatW5vhPyZOnCj9+/c3VQefffZZM2zI5MmT/VpuoD7iegTqFq5JoO7gegT8wN/d7KNqOtycflWlXxMnTnTM8/zzz9tat25tCw0NNUOC/PTTTxxawAe4HoG6hWsSqDu4HoHaF6D/+ONBAgAAAAAAqD7a0AMAAAAAYEEE9AAAAAAAWBABPQAAAAAAFkRADwAAAACABRHQAwAAAABgQQT0AAAAAABYEAE9AAAAAAAWREAPAAAAAIAFEdADANBA7dq1SwICAmTt2rVSV2zatEnOPPNMCQ8Plz59+ni8/KRJk2T06NE+KRsAAHUNAT0AAH6iwacG1E888YTL9AULFpjpDdGMGTMkKipKNm/eLAsXLvRLGd544w2Ji4vzy7YBAPAEAT0AAH6kmegnn3xSjh8/Xm++h/z8/Govu337dhkyZIi0adNG4uPjvVouAADqGwJ6AAD86IILLpAWLVrIrFmzKpzn0UcfLVP9/Nlnn5W2bduWqWr+5z//WZo3b24yzH/84x+lsLBQ7rvvPmnSpIm0atVKXn/99XKruZ911lnm4UKPHj3k22+/dfl8w4YNcvHFF0ujRo3Mum+44QY5cuSI4/Nhw4bJXXfdJffcc48kJCTIyJEjy92P4uJiUyYtR1hYmNmnzz//3PG51kpYtWqVmUd/1/0uz3vvvSc9e/aUiIgIE/TrMczOznaZ56mnnpLExETz+Z133ikFBQWOz/ThyYQJE6Rx48YSGRlp9m3r1q3ms2+++UYmT54sGRkZpgzO5fjHP/4hnTp1MsdJj8PYsWMr+MYAAKgdBPQAAPhRUFCQCcKff/55SU1NrdG6Fi1aJPv375fvvvtO/vrXv5rq65deeqkJXJctWya33Xab3HrrrWW2owH/tGnTZM2aNTJ48GC57LLL5OjRo+az9PR0Of/88yUlJUVWrlxpAvBDhw7J+PHjXdbx5ptvSmhoqCxZskReeumlcsv3t7/9TZ5++mkTbK9fv94E/pdffrkjmD5w4IB0797dlEV/v/fee8usQ6dfe+21cuONN8qvv/5qAvCrrrpKbDabY57FixebTL/+1HJpFXp9OT/80H356KOPZOnSpWbZUaNGmaBfH2zow5KYmBizLXs5dP67777bPGzQ5gB6HM4555wafV8AANSYDQAA+MXEiRNtV1xxhfn9zDPPtN14443m9/nz52t06phvxowZtt69e7ss+8wzz9jatGnjsi59X1RU5JjWuXNn29ChQx3vCwsLbVFRUbZ3333XvN+5c6fZzhNPPOGYp6CgwNaqVSvbk08+ad4//vjjthEjRrhse+/evWa5zZs3m/fnnnuuLSUlpcr9TUpKss2cOdNl2oABA2x33HGH473up+5vRVatWmW2vWvXrnI/tx8H3Ve7cePG2a6++mrz+5YtW8zyS5YscXx+5MgRW0REhG3u3Lnm/euvv26LjY11We/7779vi4mJsWVmZla5nwAA1BYy9AAA1AHajl6zyZp1ri7NbgcGnv6vXauFa9V059oAWgU9LS3NZTnNytsFBwdL//79HeVYt26dyXRrdXv7q0uXLuYzzYLb9evXr9KyZWZmmtoDZ599tst0fe/JPvfu3VuGDx9u9mvcuHHy6quvlul/QI+D7qudVr2377NuS/dx0KBBjs/1mHTu3LnSclx44YWmXX/79u1Nk4M5c+ZITk6O2+UGAMAXCOgBAKgDtPq2VkGfPn16mc80SHeuUq6c24TbhYSEuLzX9t/lTdO27O7KysoyVfB1aDvnl1aTd65yrj3T1wYN1L/66iv57LPPpFu3bqapggbjO3fudMxT030uT3R0tKxevVreffdd84DgkUceMQ8XtEkCAAD+QkAPAEAdocPXffzxx6Zdt7OmTZvKwYMHXYJ6b44d/9NPPzl+1070tGO6rl27mvd9+/aVjRs3mg74Onbs6PLyJIjXNulJSUmmjb0zfa+BuSc0QNfM/mOPPWba/Wvb/fnz57u1rO6X7qP2KWCn/QVou3h7OXR9RUVFZZbVzL52wDd79mzTB8CuXbtMvwUAAPhLsN+2DAAAXGg18uuuu06ee+45l+nai/zhw4dNIKk9q2uHbJqh1iDZG/7+97+b3ts12H3mmWdMFXbtdE5pD/FarV07orv//vtNb/nbtm2T//znP/Laa6+5VG2vina+px31dejQwfRwrz3u64MJrb7uLg3EdXz6ESNGSLNmzcx7PTb2BxBV0f284oorZMqUKfLyyy+bzPsDDzwgLVu2NNOVPrzQmgm6Hc3Ca0/4Grjv2LHD1ErQTgY//fRTk/XX2gEAAPgLGXoAAOoQ7UW9dPVwDVZ1yDQNvDXAXL58ebk9wNekZoC+dN0//PCD6f1dh59T9qy6Zqw1iNaHDjo8nQ6L59xe3x3aS/zUqVNNL/a6Hn0wodvSINtd+hBDe/HXXunPOOMMeeihh0zP+Tr0nLv0QYK2+dcRALT/AK35oAG6vaq+9nSvIwJcffXVpnaEPkjR/f3ggw9Mj//6fWhP/lr9XtvrAwDgLwHaM57ftg4AAAAAAKqFDD0AAAAAABZEQA8AAAAAgAUR0AMAAAAAYEEE9AAAAAAAWBABPQAAAAAAFkRADwAAAACABRHQAwAAAABgQQT0AAAAAABYEAE9AAAAAAAWREAPAAAAAIAFEdADAAAAAGBBBPQAAAAAAIj1/D/2Wpi9S8SJBAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "# we plot the results of our sampling\n", "plt.rcParams[\"figure.figsize\"] = (12, 4)\n", "\n", "shots_set = sample_sizes.copy()\n", "shots_set.append(10000)\n", "\n", "plt.hlines(\n", " y=-0.5876463677224993,\n", " xmin=10,\n", " xmax=50000,\n", " ls=\"--\",\n", " colors=\"black\",\n", " label=\"Exact Energy\",\n", ")\n", "plt.plot(shots_set, noisy_H2_1E_energies, label=\"H2-1E\")\n", "plt.xscale(\"log\")\n", "plt.ylim([-1.3, -0.3])\n", "plt.xlabel(\"Number of shots\")\n", "plt.ylabel(\"Energy (Ha)\")\n", "plt.title(\n", " \"Convergence behavior of the expectation value for \"\n", " + r\"$\\theta=$%.5f\" % list(p.values())[0]\n", ")\n", "plt.legend()" ] }, { "attachments": {}, "cell_type": "markdown", "id": "f12c4ba2-cb30-4c82-8c1e-74517dc544c5", "metadata": {}, "source": [ "## 3. Noise mitigation methods in Quantinuum emulation\n", "\n", "We can use noise mitigation techniques to reduce the impact of noise in our expectation value. In this case we will 'purify' results by discarding a shot if it has a certain error. There are many other mitigation methods. \n", "\n", "Specifically, we will define the symmetries of the Qubit Operators in the system to use PMSV (Partition Measurement Symmetry Verification). As a result, noise mitigation improves the accuracy of the energy obtained from the quantum hardware compared to the unmitigated results and the exact energy of H2.\n", "\n", "State Preparation and Measurement (SPAM) correction, which calibrates the calculation for system noise, can also be used." ] }, { "cell_type": "code", "execution_count": null, "id": "afc57872-f90e-477a-864a-1532602f2f55", "metadata": {}, "outputs": [], "source": [ "from inquanto.protocols.averaging._mitigation import PMSV\n", "from inquanto.mappings import QubitMappingJordanWigner\n", "\n", "\n", "stabilizers = QubitMappingJordanWigner().operator_map(\n", " space.symmetry_operators_z2_in_sector(state)\n", ")\n", "\n", "mitms_pmsv = PMSV(stabilizers)\n", "\n", "miti_protocol = PauliAveraging(\n", " backend,\n", " shots_per_circuit=10000,\n", " pauli_partition_strategy=PauliPartitionStrat.CommutingSets,\n", " project_ref=project_ref\n", " )\n", "miti_protocol.build(\n", " p, ansatz, hamiltonian.qubit_encode(), noise_mitigation=mitms_pmsv\n", " )\n", "miti_protocol.compile_circuits()\n", "handles = miti_protocol.launch()" ] }, { "cell_type": "code", "execution_count": null, "id": "eef36129", "metadata": {}, "outputs": [], "source": [ "miti_results = handles.get_results()" ] }, { "cell_type": "code", "execution_count": null, "id": "ade8a4d1", "metadata": {}, "outputs": [], "source": [ "miti_H2_1E_energies = []\n", "\n", "# Once again we apply BackendResultBootstrap to resample 10000 shots\n", "for i in sample_sizes:\n", " # One sample, seed = 0 (default), with i number of shots\n", " resample = BackendResultBootstrap(1, 0, i)\n", " resampled_result = resample.get_sampled_results(miti_results)\n", " miti_H2_1E_energies.append(miti_protocol.retrieve(resampled_result[0]).evaluate_expectation_value(\n", " ansatz, hamiltonian.qubit_encode()))\n", "\n", "# Append the expectation value of the 10000 shots result\n", "miti_H2_1E_energies.append(miti_protocol.evaluate_expectation_value(\n", " ansatz, hamiltonian.qubit_encode()\n", "))\n" ] }, { "cell_type": "code", "execution_count": null, "id": "8ff54e2e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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t2jRImheaWnVNyReeeUVzZ49W08++aTqw9///nc988wzQfNs2+eff369bB+1Q0APAAAAABHiqKOO0hNPPBE0b+bMmbrgggv2WHfatGmuDf3TTz+tgQMHunlffvllUGp9bYNxW/f2228Pmte+ffs6fBLUBwJ6AAAAAM2Wpb1bTXm49l1b1nN97969g+atXbt2j/U+//xz12u9DdttneL5jBw5UvPnz69zMJ6enr7H/hE+BPQAAAAAmi1rw17btPfGzoausw7w7r//fl155ZVBy5KSkgjIm5CmdeYCAAAAQDNmafYWzFvv9uPGjdPGjRvd/Pj4eDdyWFVyc3O1dOlS/+sVK1a4mnx7T9euXf3zbZhw3zZ9EhIS1LJlywb5PGgi49ADAAAAAKr3/PPPu6B70qRJ6tixo38688wzq33fnDlzNHz4cDeZG264wT2/8847g9az9viB27XpvPPO42sJkygPg7NXKycnx7UTsaEe0tLS9tX3AgAAAKABFBQUuNrnHj16KDExkWOMRnkuhhqHUkMPAAAAAEAEIqAHAAAAACACEdADAAAAABCBCOgBAAAAAIhABPQAAAAAAEQgAnoAAAAAACIQAT0AAAAAABGIgB4AAAAAgAhEQA8AAAAAQAQioAcAAAAANBqfffaZoqKilJWVVe163bt31yOPPKLG6q677tKwYcMadB8E9AAAAADQyF188cUaO3ZsjcGvvT799NPVsWNHpaSkuIBy8uTJNW7/iy++0KmnnqrMzEy3valTp+6xzpFHHumWVZx++ctfqj4dcsgh2rBhg9LT093r5557ThkZGXusN3v2bF155ZURF4TXp9hwFwAAAAAAUD++/vprDRkyRL/73e/Uvn17vfPOO5owYYILjk855ZQq35eXl6ehQ4fq0ksv1ZlnnlnleldccYX++Mc/Bs1LTk6u168vPj5eHTp0qHG9tm3bqrmjhh4AAAAAmojf//73uueee1wtd69evfSb3/xGJ554ot54441q33fSSSfpT3/6k84444xq17Pg3YLtwCktLa3K9a1W/1e/+pWuv/56tWzZ0t1kePrpp90NhEsuuUSpqanq3bu33nvvvUqzDuy5rZedne3PCLBa9MpS7hctWqTRo0crMTFRAwYM0Mcff7xHtoHd6Nhvv/3c5+jZs6f+8Ic/qLi42J8JcPfdd+u7777z78vmGSvL5Zdf7m4i2Oc9+uij3XqB7rvvPvf57DNddtllKigoUEMjoAcAAADQfHk8UlFeeCbb9z5gwXCrVq0ULs8//7zatGmjWbNmueD+6quv1vjx491Nh3nz5un444/XhRdeqPz8/D3ea+tY0G5BtKXh23TTTTftsV5paalrkmCB+syZM/XUU0/p9ttv32M9C7YtSF+4cKEeffRRd3Ph4YcfdsvOOecc3XjjjRo4cKB/XzbPWHk3b97sbjzMnTtX+++/v4455hht377dLX/llVfcjYY///nPmjNnjmvy8Pe//10NjZR7AAAAAM1Xcb7058zw7Pv366X4lJBXt/T5Fi1a7BHIVscCTWtr/uSTT6o+WJD6zDPPBM2zbZ9//vlVvsdS+e+44w73/LbbbnM12RbgW/q+ufPOO/XEE0/o+++/18EHH7xH+r01F7Da8urS8D/66CMtW7bM1ej71rv33nt13HHHBa3nK4evht9uDvznP//RLbfcoqSkJHd8Y2Njg/b11VdfuZsRFtAnJCS4eQ8++KCr+X/ttddcO3676WC18jYZy3awDIGGrqUnoAcAAACACHDUUUe5wDeQ1UZfcMEFla4/bdo0l65utdBW62y+/PJLl14fajBeka1bsebb0syrY236fWJiYtS6dWsNHjx4j/dbwFxXixcvVpcuXYIC8QMPPHCP9f773//qsccec8F/bm6uSkpKqm0yYCy13ta1cgfatWuX24756aef9ugccNSoUe47aEgE9AAAAACar7hkb015uPZdC9ZrvbU3D7R27dpK1/38889dr/WWTm6d4vmMHDlS8+fPDzkYr8hqyyuWoSZxcXFBr622PXCevTZlZWVqSDNmzHA3JKyd/AknnOA+i9XOP/TQQ9W+z4J5S6G32v+KKut9f18ioAcAAADQfFkwWYu090hggaf1aH///ffvMaybpZXXNiAPN0u7r6lpQd++fbVmzRpt2rTJf5PCmhpUHAGgW7duQRkGq1atqnFf1l5+48aNLhXf0vQr079/f5ctEXjz5JtvvlFDI6AHAAAAgCbCUrwtmLfe7ceNG+cCUV+gWl3HeFYLvXTpUv/rFStWuJp8e0/Xrl39863jOt82faxdufVg31AsiLbyffLJJ649vnV8V3GovOOOO8716n/RRRfpgQce0M6dO/3t5X0ZAH369NHq1atdrfwBBxyg//3vf5oy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xL89f712Fpa4+Razj+7dRmeN6KwTBnZQYhxjxgMAADRXOSEG9HWuSt+0aZOef/55V0O/atUqnXXWWbrssstcgG0B8zfffKMPP/xQ9WHGjBnKyMjwB/Pm2GOPdan3M2fO1BlnnFHp+w455BD997//1cknn+ze/8orr6igoEBHHnlklfsqLCx0U+CBBBqVghxp8bveNvHLPpXKisuXdRy6O4g/Q2rZLZylRAVbdhZq6rfrXCC/ZHOuf37nlkkaP6KLxo3opM4t6+cmKAAAAJqHWgf0b7zxhp599ll98MEHrtb8mmuu0QUXXOAC5sBAun///vVWSGsL365du6B5ltbfqlUrt6wqFsCfc845rlbe1reMgSlTpqh3795VvmfSpEm6++67663sQL0ozJV+ft9bE7/kI6m0/KaT2g2UBp3hDeRb9+KANyLFpWX6bPEWF8RPW7RZJbvHjE+IjdaYwR1dSv3BPVorOpqUegAAAOyDgN7arp977rmaPn26a8NeGUuBt87namJp+VabX1O6fV394Q9/cG3oP/74Y9cUYOrUqa6H/i+//FKDBw+u9D233XabbrjhhqAa+i5dutS5DECdFeVLSz70ton/+UOppLyjNLXp620TbzXxbftykBuRrbmFmrdqh2au2K435693r32GdcnQ2SO76JShHZWWGBfWcgIAACDy1boNfX5+fr21jbeO9bZtK+8IqjI9e/Z0PevfeOON2rFjh39+SUmJEhMT9eqrr1aacr9s2TJXE//jjz9q4MCBQan6Nv8f//hHSGWkDT32qeICaenH3pr4xe9JxXnly1r19NbCWyDfboC30TXCqqS0TIs27tS81TtcED9vdZZWb88PWqdNi3idaWPGj+isPu1Tw1ZWAAAARI4Ga0NvgXRl7cqtF+aEhATFx8eHvK22bdu6qSajRo1yNe1z587ViBEj3LxPP/1UZWVlOuigg6q88WCsnX2gmJgY9z6g0SgpkpZP87aJt7bxhQHXV0ZXby28BfLWPp4gPqy25Rbq29VZmrs7gP9+bbZ2FQd0RLi7c7s+7Vpo/64tdXS/djqqXzvFMWY8AAAAGkCtA3prK1/dEEqdO3fWxRdf7IaHqxhM15W1xz/xxBN1xRVXuJp1G7buuuuuc6n/vh7u161bp2OOOUYvvPCCDjzwQPXr18/VxF911VV68MEHXTt6S7m3Menf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cbLjcNZZZ1XxjQEAsG8Q0AMAEEYxMTEuCH/88ce1du3avdrWp59+qvXr1+uLL77QX/7yF5e+fsopp7jAdebMmfrlL3+pq666ao/9WMB/44036ttvv9WoUaN06qmnatu2bW5ZVlaWjj76aA0fPlxz5sxxAfimTZt09tlnB23j+eefV3x8vKZPn65//OMflZbv0Ucf1UMPPeSC7e+//94F/qeddpo/mN6wYYMGDhzoymLPb7rppj22YfPPO+88XXrppfrpp59cAH7mmWfK4/H415k2bZqr6bdHK5el0NsUePPDPstbb72lGTNmuPeOGTPGBf12Y8NulqSlpbl9+cph6//61792NxusOYAdh8MPP3yvvi8AAPaaBwAAhMVFF13kOf30093zgw8+2HPppZe651OmTLHo1L/exIkTPUOHDg1678MPP+zp1q1b0LbsdWlpqX9e3759PYcddpj/dUlJiSclJcXz8ssvu9crVqxw+7nvvvv86xQXF3s6d+7suf/++93re+65x3P88ccH7XvNmjXufYsXL3avjzjiCM/w4cNr/LyZmZmee++9N2jeAQcc4Lnmmmv8r+1z2uetyty5c92+V65cWely33Gwz+ozfvx4zznnnOOe//zzz+7906dP9y/funWrJykpyfPKK6+4188++6wnPT09aLuvv/66Jy0tzZOTk1Pj5wQAYF+hhh4AgEbA2tFbbbLVOteV1W5HR5f/125p4ZaaHpgNYCnomzdvDnqf1cr7xMbGauTIkf5yfPfdd66m29LtfVO/fv3cMqsF9xkxYkS1ZcvJyXHZA4ceemjQfHtdm888dOhQHXPMMe5zjR8/Xk8//fQe/Q/YcbDP6mOp977PbPuyz3jQQQf5l9sx6du3b7XlOO6441y7/p49e7omB5MnT1Z+fn7I5QYAoCEQ0AMA0AhY+raloN922217LLMgPTCl3AS2CfeJi4sLem3tvyubZ23ZQ5Wbm+tS8G1ou8DJ0uQDU86tZ/p9wQL1jz76SO+9954GDBjgmipYML5ixQr/Onv7mSuTmpqqefPm6eWXX3Y3CO688053c8GaJAAAEC4E9AAANBI2fN3bb7/t2nUHatu2rTZu3BgU1Nfn2PHffPON/7l1omcd0/Xv39+93n///bVgwQLXAV/v3r2DptoE8dYmPTMz07WxD2SvLTCvDQvQrWb/7rvvdu3+re3+lClTQnqvfS77jNangI/1F2Dt4n3lsO2Vlpbu8V6r2bcO+B544AHXB8DKlStdvwUAAIRLbNj2DAAAglga+fnnn6/HHnssaL71Ir9lyxYXSFrP6tYhm9VQW5BcH/72t7+53tst2H344YddCrt1Omesh3hLa7eO6G655RbXW/7SpUv1n//8R88880xQantNrPM966ivV69erod763HfbkxY+nqoLBC38emPP/54tWvXzr22Y+O7AVET+5ynn366rrjiCj355JOu5v3WW29Vp06d3HxjNy8sM8H2Y7Xw1hO+Be7Lly93WQnWyeC7777rav0tOwAAgHChhh4AgEbEelGvmB5uwaoNmWaBtwWYs2bNqrQH+L3JDLDJtv3VV1+53t9t+Dnjq1W3GmsLou2mgw1PZ8PiBbbXD4X1En/DDTe4XuxtO3ZjwvZlQXao7CaG9eJvvdLvt99+uuOOO1zP+Tb0XKjsRoK1+bcRAKz/AMt8sADdl6pvPd3biADnnHOOy46wGyn2ed944w3X4799H9aTv6XfW3t9AADCJcp6xgvb3gEAAAAAQJ1QQw8AAAAAQAQioAcAAAAAIAIR0AMAAAAAEIEI6AEAAAAAiEAE9AAAAAAARCACegAAAAAAIhABPQAAAAAAEYiAHgAAAACACERADwAAAABABCKgBwAAAAAgAhHQAwAAAAAQgQjoAQAAAABQ5Pl/bfYgmximl24AAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#statevector \n", "plt.hlines(\n", " y=-0.5876463677224993,\n", " xmin=10,\n", " xmax=50000,\n", " ls=\"--\",\n", " colors=\"black\",\n", " label=\"Exact Energy\",\n", ")\n", "plt.plot(shots_set, noisy_H2_1E_energies, label=\"H2-1E\")\n", "plt.plot(shots_set, miti_H2_1E_energies, label=\"H2-1E mitigated\")\n", "plt.xscale(\"log\")\n", "plt.ylim([-1.3, -0.3])\n", "plt.xlabel(\"Number of shots\")\n", "plt.ylabel(\"Energy (Ha)\")\n", "plt.title(\n", " \"Convergence behavior of the expectation value for \"\n", " + r\"$\\theta=$%.5f\" % list(p.values())[0]\n", ")\n", "plt.legend()" ] }, { "attachments": {}, "cell_type": "markdown", "id": "c132e5c7-acf8-4a77-9ffd-1a247c256249", "metadata": {}, "source": [ "One may also explore the impact of SPAM on enhancing the convergence behavior of the expectation value. In the case of this simple system with a shallow circuit, the energy converges with slightly improved efficiency and/or heightened precision upon employing noise mitigation techniques.\n", "\n", "Transitioning to hardware experiments is straightforward. The user simply changes the device name (e.g., from \"H2-1E\" to \"H2-1\"), and the circuit will be run on the physical quantum device provided sufficient credits and circuit syntax. " ] }, { "cell_type": "markdown", "id": "2553c96e", "metadata": {}, "source": [] } ], "metadata": { "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 5 }