{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "65235269", "metadata": { "execution": { "iopub.execute_input": "2024-04-26T18:19:43.793892Z", "iopub.status.busy": "2024-04-26T18:19:43.793615Z", "iopub.status.idle": "2024-04-26T18:19:43.797264Z", "shell.execute_reply": "2024-04-26T18:19:43.796831Z" }, "nbsphinx": "hidden" }, "outputs": [], "source": [ "# Copyright 2024 Keysight Technologies Inc." ] }, { "cell_type": "raw", "id": "48a1fa4d", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "Example: Running Randomized Compiling\n", "=====================================\n", "\n", "This example provides a short demonstration of |True-Q|'s\n", ":py:meth:`~trueq.randomly_compile` function and how it can be used to generate a set\n", "of randomly compiled circuits from a single input circuit, while implementing the same\n", "unitary as the original circuit. For more background information, check out our\n", "Randomized Compiling (:tqdoc:`RC`\\) user guide page.\n", "\n", ".. note::\n", " Randomized compiling produces a new circuit collection after each call, so the\n", " output of this example will be different if it's executed again.\n", "\n", "Generating randomly compiled circuits\n", "-------------------------------------\n", "\n", "We begin by creating a simple two-qubit circuit with alternating cycles:" ] }, { "cell_type": "code", "execution_count": 2, "id": "1cd8b4f2", "metadata": { "execution": { "iopub.execute_input": "2024-04-26T18:19:43.799159Z", "iopub.status.busy": "2024-04-26T18:19:43.798876Z", "iopub.status.idle": "2024-04-26T18:19:46.139996Z", "shell.execute_reply": "2024-04-26T18:19:46.139503Z" } }, "outputs": [ { "data": { "text/html": [ "
0 1 Key: Labels: (0,) Name: Gate.h Aliases: Gate.h Gate.f Gate.cliff12 Generators: Z: 127.28 X: 127.28 0.71 0.71 0.71 -0.71 H Labels: (0, 1) Name: Gate.cz Aliases: Gate.cz Locally Equivalent: CNOT Generators: ZZ: -90.00 ZI: 90.00 IZ: 90.00 1.00 1.00 1.00 -1.00 CZ CZ Labels: (1,) Name: Gate.h Aliases: Gate.h Gate.f Gate.cliff12 Generators: Z: 127.28 X: 127.28 0.71 0.71 0.71 -0.71 H Labels: (0,) Name: Gate.h Aliases: Gate.h Gate.f Gate.cliff12 Generators: Z: 127.28 X: 127.28 0.71 0.71 0.71 -0.71 H Labels: (0, 1) Name: Gate.cz Aliases: Gate.cz Locally Equivalent: CNOT Generators: ZZ: -90.00 ZI: 90.00 IZ: 90.00 1.00 1.00 1.00 -1.00 CZ CZ Labels: (1,) Name: Gate.h Aliases: Gate.h Gate.f Gate.cliff12 Generators: Z: 127.28 X: 127.28 0.71 0.71 0.71 -0.71 H Labels: (0,) Name: Gate.h Aliases: Gate.h Gate.f Gate.cliff12 Generators: Z: 127.28 X: 127.28 0.71 0.71 0.71 -0.71 H Labels: (0, 1) Name: Gate.cz Aliases: Gate.cz Locally Equivalent: CNOT Generators: ZZ: -90.00 ZI: 90.00 IZ: 90.00 1.00 1.00 1.00 -1.00 CZ CZ Labels: (1,) Name: Gate.h Aliases: Gate.h Gate.f Gate.cliff12 Generators: Z: 127.28 X: 127.28 0.71 0.71 0.71 -0.71 H 1 Labels: (0,) Name: Meas M Labels: (1,) Name: Meas M
" ], "text/plain": [ "DisplayWrapper(" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sim = tq.Simulator()\n", "ideal_result = sim.sample(circuit, n_shots=np.inf)\n", "ideal_result.plot()" ] }, { "cell_type": "raw", "id": "63866523", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "We can also inspect the operator that this circuit is implementing:" ] }, { "cell_type": "code", "execution_count": 4, "id": "1f6082a4", "metadata": { "execution": { "iopub.execute_input": "2024-04-26T18:19:46.250668Z", "iopub.status.busy": "2024-04-26T18:19:46.250224Z", "iopub.status.idle": "2024-04-26T18:19:46.351764Z", "shell.execute_reply": "2024-04-26T18:19:46.351326Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "circuit_operator = sim.operator(circuit).mat()\n", "tq.math.Superop(circuit_operator).plot_rowstack()" ] }, { "cell_type": "raw", "id": "64d29c49", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "To generate a set of randomly compiled versions of this circuit, we call the\n", ":py:meth:`~trueq.randomly_compile` function and pass our circuit as argument,\n", "together with the desired number of compilations:" ] }, { "cell_type": "code", "execution_count": 5, "id": "29f2ec2f", "metadata": { "execution": { "iopub.execute_input": "2024-04-26T18:19:46.354159Z", "iopub.status.busy": "2024-04-26T18:19:46.353832Z", "iopub.status.idle": "2024-04-26T18:19:46.361373Z", "shell.execute_reply": "2024-04-26T18:19:46.360980Z" } }, "outputs": [], "source": [ "n_compilations = 30\n", "rc_circuits = tq.randomly_compile(circuit, n_compilations=n_compilations)" ] }, { "cell_type": "raw", "id": "2269031b", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "This function returns a :py:class:`~trueq.CircuitCollection` of 30 randomized versions\n", "of our original circuit. For example, the first circuit in this collection looks like\n", "this:" ] }, { "cell_type": "code", "execution_count": 6, "id": "6080b943", "metadata": { "execution": { "iopub.execute_input": "2024-04-26T18:19:46.363511Z", "iopub.status.busy": "2024-04-26T18:19:46.363198Z", "iopub.status.idle": "2024-04-26T18:19:46.375756Z", "shell.execute_reply": "2024-04-26T18:19:46.375397Z" } }, "outputs": [ { "data": { "text/html": [ "
0 1 Key: twirl: Paulis on [0, 1] protocol: RC Labels: (0,) Name: Gate.cliff13 Aliases: Gate.cliff13 Generators: Z: 127.28 X: -127.28 0.71 -0.71 -0.71 -0.71 13 Labels: (1,) Name: Gate.z Aliases: Gate.z Gate.cliff3 Generators: Z: 180.00 1.00 -1.00 Z 2 Labels: (0, 1) Name: Gate.cz Aliases: Gate.cz Locally Equivalent: CNOT Generators: ZZ: -90.00 ZI: 90.00 IZ: 90.00 1.00 1.00 1.00 -1.00 CZ CZ Labels: (0,) Name: Gate.sy Aliases: Gate.sy Gate.cliff7 Generators: Y: 90.00 0.71 -0.71 0.71 0.71 SY Labels: (1,) Name: Gate.cliff6 Aliases: Gate.cliff6 Generators: Y: -90.00 0.71 0.71 -0.71 0.71 6 3 Labels: (0, 1) Name: Gate.cz Aliases: Gate.cz Locally Equivalent: CNOT Generators: ZZ: -90.00 ZI: 90.00 IZ: 90.00 1.00 1.00 1.00 -1.00 CZ CZ Labels: (0,) Name: Gate.cliff13 Aliases: Gate.cliff13 Generators: Z: 127.28 X: -127.28 0.71 -0.71 -0.71 -0.71 13 Labels: (1,) Name: Gate.cliff13 Aliases: Gate.cliff13 Generators: Z: 127.28 X: -127.28 0.71 -0.71 -0.71 -0.71 13 4 Labels: (0, 1) Name: Gate.cz Aliases: Gate.cz Locally Equivalent: CNOT Generators: ZZ: -90.00 ZI: 90.00 IZ: 90.00 1.00 1.00 1.00 -1.00 CZ CZ Labels: (0,) Name: Gate.z Aliases: Gate.z Gate.cliff3 Generators: Z: 180.00 1.00 -1.00 Z Labels: (1,) Name: Gate.sy Aliases: Gate.sy Gate.cliff7 Generators: Y: 90.00 0.71 -0.71 0.71 0.71 SY 1 Labels: (0,) Name: Meas M Labels: (1,) Name: Meas M
" ], "text/plain": [ "DisplayWrapper(" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "rc_circuit_operator = sim.operator(rc_circuits[0]).mat()\n", "tq.math.Superop(rc_circuit_operator).plot_rowstack()" ] }, { "cell_type": "raw", "id": "ca8eefdd", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "For a phase-insensitive comparison, we can calculate the process infidelity between\n", "these two operators. The process infidelity is a metric for how different two\n", "operations are; an infidelity of zero means they are equivalent up to a phase. We can\n", "use the built-in :py:meth:`~trueq.math.general.proc_infidelity` function for this:" ] }, { "cell_type": "code", "execution_count": 8, "id": "a5e24ddd", "metadata": { "execution": { "iopub.execute_input": "2024-04-26T18:19:46.476149Z", "iopub.status.busy": "2024-04-26T18:19:46.475713Z", "iopub.status.idle": "2024-04-26T18:19:46.478896Z", "shell.execute_reply": "2024-04-26T18:19:46.478535Z" } }, "outputs": [ { "data": { "text/plain": [ "-8.881784197001252e-16" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tq.math.proc_infidelity(circuit_operator, rc_circuit_operator)" ] }, { "cell_type": "raw", "id": "b1f4dcad", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "Finally, when we sample from the final state's probability distribution every\n", "circuit yields the same result:" ] }, { "cell_type": "code", "execution_count": 9, "id": "a084782b", "metadata": { "execution": { "iopub.execute_input": "2024-04-26T18:19:46.480740Z", "iopub.status.busy": "2024-04-26T18:19:46.480464Z", "iopub.status.idle": "2024-04-26T18:19:46.501062Z", "shell.execute_reply": "2024-04-26T18:19:46.500685Z" } }, "outputs": [], "source": [ "for rc_circuit in rc_circuits:\n", " assert tq.utils.dicts_close(sim.sample(rc_circuit, n_shots=np.inf), ideal_result)" ] }, { "cell_type": "raw", "id": "f7f25a51", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "Measuring RC performance\n", "------------------------\n", "\n", "To test how well Randomized Compiling works in practice, let's walk through a short\n", "simulation of the circuit above with a noisy simulator and look at how the RC circuits\n", "perform relative to the bare circuit.\n", "\n", "First, we create a simulator with an overrotation error as the noise source and\n", "simulate the outcomes of the bare circuit under this noise model:" ] }, { "cell_type": "code", "execution_count": 10, "id": "3d0f933c", "metadata": { "execution": { "iopub.execute_input": "2024-04-26T18:19:46.502829Z", "iopub.status.busy": "2024-04-26T18:19:46.502557Z", "iopub.status.idle": "2024-04-26T18:19:46.599930Z", "shell.execute_reply": "2024-04-26T18:19:46.599522Z" } }, "outputs": [ { "data": { "image/png": "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FCg2NlbZ2dnOxd15eXkym3+6MLZo0SJVVlbqwQcfdBln+vTpmjFjhiRp6tSpKisr0/jx41VcXKw+ffooOzv7mtZBAQAAGA5OsbGxMplMcjgczrapU6de1u83v/mNkpKSalVESkqKUlJSanwtJyfHZf/gwYM/O57JZNJzzz2n5557rlZ1AAAAXI3h4HTgwIH6rAMAAKDBMxycbrnllvqsAwAAoMFz+wGYkrRz507l5eWpsrLSpf3++++/pqIAAAAaIreC0w8//KDhw4fr//7v/1zWPZlMJkmS3W6vuwoBAAAaCLee4zRx4kRFR0fr+PHjCgwM1I4dO/Tll18qLi7ussXcAAAA3sKtK065ubn6xz/+odDQUJnNZpnNZvXp00fp6el64okn9M0339R1nQAAAB7n1hUnu92uFi1aSPrxa1OOHj0q6ccF5Hv27Km76gAAABoQt644devWTd9++62io6MVHx+vuXPnytfXV6+++qrat29f1zUCAAA0CG4Fp2nTpqmsrEyS9Nxzz+nXv/61+vbtq5tuukkrVqyo0wIBAAAaCreCU2JiovPnjh07avfu3Tp16pRCQkKcn6wDAADwNtf0HCdJys/PlyRFRkZeczEAAAANmVuLwy9cuKBnn31WwcHBioqKUlRUlIKDgzVt2jRVVVXVdY0AAAANgltXnP77v/9bq1at0ty5c5WQkCDpx0cUzJgxQydPntSiRYvqtEgAAICGwK3g9M4772j58uUaMmSIsy0mJkaRkZEaNWoUwQkAAHglt27V+fn5KSoq6rL26Oho+fr6XmtNAAAADZJbwSklJUWzZs1SRUWFs62iokIvvPCCUlJS6qw4AACAhsTwrboRI0a47H/++ee6+eab1aNHD0nSt99+q8rKSg0cOLBuKwQAAGggDAen4OBgl/0HHnjAZZ/HEQAAAG9nODgtXbq0PusAAABo8K7pAZhFRUXOL/Xt3LmzWrduXSdFAQAANERuLQ4vKyvTo48+qrZt26pfv37q16+fIiIiNHbsWJWXl9d1jQAAAA2CW8HJarVq/fr1+uijj1RcXKzi4mL97//+r9avX69JkybVdY0AAAANglu36t5//3299957GjBggLPt3nvvVUBAgB5++GEegAkAALySW1ecysvLFRYWdll7mzZtuFUHAAC8llvBKSEhQdOnT9f58+edbefOndPMmTOd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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "noisy_sim = tq.Simulator().add_overrotation(single_sys=0.1, multi_sys=0.1)\n", "noisy_result = noisy_sim.sample(circuit, n_shots=np.inf)\n", "noisy_result.plot()" ] }, { "cell_type": "raw", "id": "cc046852", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "Note that we are no longer seeing the equal superposition that the noise-free\n", "simulation produced.\n", "\n", "Next, we simulate the randomly compiled circuits under the same noise model, and\n", "sum the outcomes over all circuits:" ] }, { "cell_type": "code", "execution_count": 11, "id": "2ca9179e", "metadata": { "execution": { "iopub.execute_input": "2024-04-26T18:19:46.601931Z", "iopub.status.busy": "2024-04-26T18:19:46.601529Z", "iopub.status.idle": "2024-04-26T18:19:46.711901Z", "shell.execute_reply": "2024-04-26T18:19:46.711497Z" } }, "outputs": [ { "data": { "image/png": "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CE4AAAAmEZwAAABMIjgBAACYRHACAAAwieAEAABgEsEJAADAJIITAACASQQnAAAAkwhOAAAAJhGcAAAATCI4AQAAmNSg4FRWVqb/+7//87/+n//5H40ePVrPPfecamtrG604AACA5qRBwemJJ57Q3r17JUn/+Mc/lJWVpcjISK1Zs0ZTp05t1AIBAACaiwYFp7179yo1NVWStGbNGt1///1auXKlli1bprfffrsx6wMAAGg2GhScDMOQz+eTJK1bt07f//73JUmJiYk6fvx441UHAADQjDQoOA0YMEAvvviifv/732v9+vUaNWqUJOnAgQOKjY1t1AIBAACaiwYFp1/96lcqKytTTk6Onn/+efXs2VOS9NZbb+m+++5r1AIBAACai1YNuahfv34Bn6q77KWXXlKrVg0aEgAAoNlr0IpT9+7ddeLEiSvaL168qDvuuOOGiwIAAGiOGhScDh48KK/Xe0V7TU2NDh8+fMNFAQAANEfX9b7ae++95//zhx9+qKioKP9rr9crl8ulbt26NV51AAAAzch1BafRo0dLkmw2m8aNGxdwrnXr1kpKStLLL7/caMUBAAA0J9cVnC4/u6lbt27avHmzYmJimqQoAACA5qhBH4E7cOBAY9cBAADQ7DX42QEul0sul0uVlZX+lajLli5desOFAQAANDcNCk6/+MUv9MILL2jAgAGKj4+XzWZr7LoAAACanQYFp6KiIi1btkyPPvpoY9cDAADQbDXoOU61tbV8tQoAAGhxGhScHn/8ca1cubKxawEAAGjWGvRW3cWLF/Xqq69q3bp1SklJUevWrQPOz58/v1GKAwAAaE4atOK0fft2paamym63a8eOHfr888/9x7Zt265rrEWLFikpKUnh4eFKS0vTpk2b6u27c+dO/ehHP1JSUpJsNpsKCwuv6DNz5kzZbLaAo0+fPtd5hwAAAFdq0IrTJ5980ig/fPXq1XI6nSoqKlJaWpoKCwuVkZGhPXv2qHPnzlf0P3/+vLp3766HH35YzzzzTL3j3nXXXVq3bp3/datWDX7qAgAAgF+DVpway/z58zV+/HhlZ2crOTlZRUVFioyMrPc5UAMHDtRLL72krKwshYWF1Ttuq1atFBcX5z94wjkAAGgMDVqKeeCBB6767Ka//vWv1xyjtrZWW7duVW5urr/NbrfL4XCotLS0IWX57du3TwkJ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r77SlClT1KlTJ0VGRmr69OlKSkrStGnT9Prrr6tdu3byeDz685//rE6dOll9C7hO9c351KlT6wxPtbW1euONN9S2bVv+gdTECE63qMsb/+69917t27dPe/bsUe/evSV9/Uv0scce0549e/T2229r8uTJmj17tiTxNOlb3LXm/Wc/+5n27Nmj9957T//1X/+ltm3bKikpSbt371avXr0srh4NZbfb1b9/f912223KzMxUTEyMsrKyJMkfnux2u8aOHav7779fhw4d0vnz59W3b1916dLF4urREFeb87rC09/+9jd9+umncrlchKamZuCWtn//fiMmJsb42c9+Zpw9e9YwDMPw+XyGYRjGoUOHDJvNZrz//vv+/pfP4dZmZt7Xrl1rZYloZOfOnQt4vWrVKsNmsxmTJ082qqqqDMMwjEuXLhlffvmlFeWhCVxtzo8fP24YhmF4vV7j0KFDhmEYxsmTJ296jS0RK063uB49euiPf/yjRo4cqYiICM2cOdP/L5HWrVsrJSVF0dHR/v58PDU4mJl3NoAHl8v7lLxer+x2uzIzM2UYhv793/9dNptNkyZN0rx58/Tll19qxYoVioyM5P/3W5zZOT9w4IBWrlwZ8Hc9mg7BKQg88MADWrNmjR5++GEdO3ZMjzzyiFJSUrRixQpVVlYqMTHR6hLRBJj3likkJESGYcjn8ykrK0s2m02PPvqo3nvvPf3973/X5s2b2QweZK4155s2bVJERITVZbYYPAAziJSVlcnpdOrgwYNq1aqVQkJCtGrVKt1zzz1Wl4YmxLy3TJf/6rbZbBo2bJi2bdumkpIS9e3b1+LK0FSY8+aB4BRkPB6PTp48qbNnzyo+Pr7ej64iuDDvLZPX69WUKVNUWFiobdu2KSUlxeqS0MSYc+vxVl2Qad++vdq3b291GbjJmPeW66677lJZWRm/QFsQ5txarDgBwC3M4DvJWhzm3FoEJwAAAJN4EiIAAIBJBCcAAACTCE4AAAAmEZwAAABMIjgBAACYRHACAAAwieAEAABgEsEJAADAJIITAACASf8PWBJDRYY78pcAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# run all circuits on the simulator\n", "noisy_sim.run(rc_circuits, n_shots=np.inf)\n", "\n", "# sum over the outcomes\n", "rc_result = rc_circuits.sum_results()\n", "\n", "# for plotting, we normalize the summed results to be between 0 and 1\n", "rc_result.normalized().plot()" ] }, { "cell_type": "raw", "id": "834ee247", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "Under Randomized Compiling, the noisy simulation produces a result that is much\n", "closer to the noise-free simulation. In fact, we can use the\n", ":py:meth:`trueq.Results.tvd` method of the :py:class:`~trueq.Results` class to\n", "quantify this difference:" ] }, { "cell_type": "code", "execution_count": 12, "id": "aad50130", "metadata": { "execution": { "iopub.execute_input": "2024-04-26T18:19:46.714032Z", "iopub.status.busy": "2024-04-26T18:19:46.713606Z", "iopub.status.idle": "2024-04-26T18:19:46.718076Z", "shell.execute_reply": "2024-04-26T18:19:46.717723Z" }, "lines_to_next_cell": 2 }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Noisy simulation without RC: 0.1686\n", "Noisy simulation with RC: inf\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Warning: divide by zero encountered in divide\n", " (/home/jenkins/workspace/release trueq/trueq/results.py:489)\n" ] } ], "source": [ "bare_tvd = noisy_result.tvd(ideal_result)\n", "rc_tvd = rc_result.normalized().tvd(ideal_result)\n", "\n", "print(\"Noisy simulation without RC: {:.4f}\".format(bare_tvd[0]))\n", "print(\"Noisy simulation with RC: {:.4f}\".format(rc_tvd[0]))" ] }, { "cell_type": "raw", "id": "6c1a4661", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "The TVD, or Total Variation Distance is a measure for how far two probability\n", "distributions are apart. A value of zero means the distributions are equivalent.\n", "\n", "Finally, we can produce a visual summary of these results:" ] }, { "cell_type": "code", "execution_count": 13, "id": "780f3731", "metadata": { "execution": { "iopub.execute_input": "2024-04-26T18:19:46.720086Z", "iopub.status.busy": "2024-04-26T18:19:46.719709Z", "iopub.status.idle": "2024-04-26T18:19:46.858170Z", "shell.execute_reply": "2024-04-26T18:19:46.857688Z" }, "lines_to_next_cell": 0 }, "outputs": [ { "data": { "image/png": "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DhxIQEAA8fHxAMyYMYOJEyeydOlSjEajZdySu7s77u7uGAwGRo0axcsvv0z79u1p3bo1L774Ii1atKBv37521yciIiJSzu7gdPfdd5OQkMBbb70FgMFgoKCggEmTJnHffffZXUBUVBS5ublMnDiR7OxsQkJCWLt2rWVwd0ZGBg4O/7swNn/+fEpKSnj00Uet+pk0aRKTJ08GYMyYMRQWFjJs2DBOnjzJbbfdxtq1a69oHJSIiIiI3cFp9uzZREZGEhQUxNmzZ/n73//OwYMH8fX15cMPP6xUETExMcTExFS4LiUlxer9b7/9dtn+DAYDU6ZMYcqUKZWqR0RERKQidgenli1b8t1337F8+XK+++47CgoKGDJkCI8//rjVYHERERGR+sbu4ATQoEEDHn/8cR5//PGqrkdERESkzrL7U3WOjo6Eh4dz4sQJq+U5OTl2zxwuIiIicjWxOziZzWaKi4sJDQ3lhx9+uGCdiIiISH1ld3AyGAx8/PHH/OUvf6Fnz558+umnVutERERE6qtKXXFydHRk7ty5zJo1i6ioKF5++WVdbRIREZF6r1KDw8sNGzaM9u3b069fP7755puqqklERESkTrL7ilOrVq2sBoGHh4ezdetWPd9NRERE6j27rzj9+uuvFyxr164du3fvvuDBuiIiIiL1id1XnC7GxcWFVq1aVVV3IiIiInWOTVecGjduzIEDB/D19cXHx+eSn5778/xOIiIiIvWFTcHp1VdfxcPDA4CEhITqrEdERESkzrIpOA0aNKjCr0VERESuJTYFp/z8fJs79PT0rHQxIiIiInWZTcHJ29v7srOCm81mDAYDZWVlVVKYiIiISF1jU3BKTk6u7jpERERE6jybglNYWFh11yEiIiJS51X6kStFRUVkZGRQUlJitbxz585XXJSIiIhIXWT3BJi5ubk88MADeHh4cOONN9KlSxerl73mzZuH0WjExcWFHj16sH379ou2/eGHH/jrX/+K0WjEYDBcdGqEzMxMnnjiCZo0aYKrqyudOnVi586ddtcmIiIi8kd2B6dRo0Zx8uRJtm3bhqurK2vXrmXx4sW0b9+e1atX29XX8uXLiY2NZdKkSezatYvg4GAiIyM5evRohe2Liopo06YN06dPx9/fv8I2eXl53HrrrTRs2JAvv/ySvXv3Mnv2bHx8fOw9VBERERErdt+q+/rrr/n0008JDQ3FwcGBVq1acdddd+Hp6Ul8fDz333+/zX3NmTOHoUOHEh0dDUBiYiJr1qxhwYIFvPDCCxe079atG926dQOocD3AjBkzCAwMZOHChZZlrVu3tucQRURERCpk9xWnwsJCmjVrBoCPjw+5ubkAdOrUiV27dtncT0lJCWlpaURERPyvGAcHIiIiSE1Ntbcsi9WrVxMaGkq/fv1o1qwZXbp04e233650fyIiIiLl7A5OHTp0YP/+/QAEBwfz5ptvkpmZSWJiIs2bN7e5n2PHjlFWVoafn5/Vcj8/P7Kzs+0ty+KXX35h/vz5tG/fnnXr1vH0008zYsQIFi9efNFtiouLyc/Pt3qJiIiI/Jndt+pGjhxJVlYWAJMmTeKee+7hgw8+wMnJiUWLFlV1fXYzmUyEhobyyiuvANClSxf27NlDYmLiRR8XEx8fz0svvVSTZYqIiMhVyO7g9MQTT1i+7tq1K4cOHeLHH3/kuuuuw9fX1+Z+fH19cXR0JCcnx2p5Tk7ORQd+26J58+YEBQVZLbvhhhv4+OOPL7rNuHHjiI2NtbzPz88nMDCw0jWIiIhI/WT3rbo/c3Nz4+abb7YrNAE4OTnRtWtXkpKSLMtMJhNJSUn07Nmz0vXceuutlluJ5Q4cOECrVq0uuo2zszOenp5WLxEREZE/s/uKk9ls5qOPPiI5OZmjR49iMpms1q9cudLmvmJjYxk0aBChoaF0796dhIQECgsLLZ+yGzhwIAEBAcTHxwPnB5Tv3bvX8nVmZibp6em4u7vTrl07AEaPHk2vXr145ZVX6N+/P9u3b+ett97irbfesvdQRURERKzYHZxGjRrFm2++SXh4OH5+fpd9+O+lREVFkZuby8SJE8nOziYkJIS1a9daBoxnZGTg4PC/i2JHjhyxmmRz1qxZzJo1i7CwMFJSUoDzUxZ88sknjBs3jilTptC6dWsSEhJ4/PHHK12niIiICFQiOL333nusXLmS++67r0oKiImJISYmpsJ15WGonNFoxGw2X7bPBx54gAceeKAqyhMRERGxsHuMk5eXF23atKmOWkRERETqNLuD0+TJk3nppZc4c+ZMddQjIiIiUmfZfauuf//+fPjhhzRr1gyj0UjDhg2t1tsze7iIiIjI1cTu4DRo0CDS0tJ44oknrnhwuIiIiMjVxO7gtGbNGtatW8dtt91WHfWIiIiI1Fl2j3EKDAzUBJEiIiJyTbI7OM2ePZsxY8bw22+/VUM5IiIiInVXpZ5VV1RURNu2bXFzc7tgcPiJEyeqrDgRERGRusTu4JSQkFANZYiIiIjUfXYFp9LSUjZu3MiLL75I69atq6smERERkTrJrjFODRs25OOPP66uWkRERETqNLsHh/ft25dVq1ZVQykiIiIidZvdY5zat2/PlClT2Lx5M127dqVRo0ZW60eMGFFlxYmIiIjUJXYHp3fffRdvb2/S0tJIS0uzWmcwGBScREREpN6yOzj9+uuv1VGHiIiISJ1n9xinPzKbzZjN5qqqRURERKROq1RwWrJkCZ06dcLV1RVXV1c6d+7Me++9V9W1iYiIiNQpdt+qmzNnDi+++CIxMTHceuutAGzatImnnnqKY8eOMXr06CovUkRERKQusDs4vf7668yfP5+BAwdalj344IPceOONTJ48WcFJRERE6i27b9VlZWXRq1evC5b36tWLrKysShUxb948jEYjLi4u9OjRg+3bt1+07Q8//MBf//pXjEYjBoOhwkfAxMfH061bNzw8PGjWrBl9+/Zl//79lapNREREpJzdwaldu3b897//vWD58uXLad++vd0FLF++nNjYWCZNmsSuXbsIDg4mMjKSo0ePVti+qKiINm3aMH36dPz9/Stss3HjRp555hm2bt3K+vXrKS0t5e6776awsNDu+kRERETK2X2r7qWXXiIqKopvvvnGMsZp8+bNJCUlVRioLmfOnDkMHTqU6OhoABITE1mzZg0LFizghRdeuKB9t27d6NatG0CF6wHWrl1r9X7RokU0a9aMtLQ0evfubXeNIiIiIlCJK05//etf2bZtG76+vqxatYpVq1bh6+vL9u3befjhh+3qq6SkhLS0NCIiIv5XkIMDERERpKam2lvaRZ06dQqAxo0bV7i+uLiY/Px8q5eIiIjIn9l9xQmga9euvP/++1e882PHjlFWVoafn5/Vcj8/P3788ccr7h/AZDIxatQobr31Vm666aYK28THx/PSSy9Vyf5ERESk/rqiCTCvBs888wx79uxh2bJlF20zbtw4Tp06ZXkdPny4BisUERGRq4XNV5wcHBwwGAyXbGMwGDh37pzNO/f19cXR0ZGcnByr5Tk5ORcd+G2PmJgYPv/8c7755htatmx50XbOzs44Oztf8f5ERESkfrM5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MZlMVpPQSv1nNpv1nE6Ri9C/hmKX77//np49ezJgwACioqK46aab+PDDDzlx4kRtlyZVaM+ePURERHD48GEcHBwwmUy1XZJUgwMHDjB27Fiio6OZO3cuBw8eBM4/ukpXkuuPo0ePcvLkydouo95QcBKb5ebmEhUVxeOPP86XX37J3r17CQ4OZurUqbz22mvk5ubWdolSBX777TcefvhhNm7cyJ133snvv/+u8FQP7d27l+7du/P9999z+vRpJk2axPDhw3nnnXcAhaf6Yt++fQQGBjJ06FDy8/Nru5x6QcFJbJabm8vZs2d55JFHaNOmDS1atGDZsmU8+OCDrFy5kkWLFlFUVFTbZcoVOHv2LO+++y6dOnViw4YNNG/enNtuu03hqZ4pKSkhPj6e/v378+WXX/LRRx+xc+dOmjRpwrvvvstrr70GoNt1V7mcnBz+8Y9/cNttt5GSksI//vEPhacqoOAkNispKaG0tNQSjs6cOQPA9OnTCQ8PZ/78+fz000+ABoxfrVxcXAgKCiIqKoo77riDJUuWcN111yk81TNOTk7k5ORYgpHZbKZdu3bMnDmTjh078tFHH/HZZ5/VcpVypXbv3o3RaGTGjBmsWbOGpKQkhacqoGfVySWZTCbMZrNlAPjtt9+Og4MDGzduBM4/PLL8oZHdunWjXbt2fPjhh7VWr1SOyWSirKyMhg0bWi03m838+uuvREdHc+jQITZv3kxAQADFxcXs3buXDh064ObmVktVS2WUlZVhMpn45z//yenTp3n//fdxcnLCbDbj4ODAL7/8whNPPMF1113HsmXLartcuQK5ubn88MMP9OnTB4CtW7dy//33c+edd/L222/j5eUF6MMA9tIVJ7movXv3MnDgQCIjIxk6dCgbN25k7ty5ZGZm0r9/fwCcnZ05d+4cAL1796awsLA2S5ZKKD/P9957L0899RRr1qyxWt+mTRsWLFhAq1atuPXWW/n111957rnnGDZsGCUlJbVUtdirrKwMAEdHRxo2bMigQYP45JNPePPNNzEYDDg4OFBWVkabNm2Ij49nxYoV/PDDD7Vctdir/DwDNG3a1BKaTCYTt9xyC1988QVJSUmWMU+lpaUkJiayfv36Wqr46qPgJBXav38/vXr1oqysjG7durFjxw7i4uJ45513mDp1KmlpaTz88MOUlpZaPqp+9OhRGjVqxLlz53Sr7irx5/O8detWJk+ezOjRo4H/DRBu27YtCxcupHXr1rRt25ZFixbxn//8B29v79o9ALHJgQMHSEhIICsry7IsLCyMGTNmMHr0aMuA8PIryx4eHnTo0IFGjRrVSr1SORWd53Ll/0736NGDL7/80hKe/vnPfzJy5EjatGlT0+VetTSPk1zAbDazZMkSIiMjLbfdxo8fT0JCAp9//jmnTp1izpw5jBkzhptuuomgoCCcnJxYs2YNW7dupUED/VhdDS52nl977TU++ugjhg0bxltvvWW5hN+yZUv8/f3x8fHh22+/JSgoqDbLFxv99NNP9OzZk7y8PI4fP05sbCy+vr4APP300xQWFjJs2DAOHTrEI488QqtWrVixYgWlpaUKTleRS53nP+vevTurV6/m9ttvx8fHh61bt9K2bdsarvjqpb9wcgGDwcCRI0fIzs62LPPw8GDUqFG4urqycuVKDhw4wM6dO5k2bRrHjx/HxcWF7du364/pVeRi53nEiBG4uLiwbNkyZsyYwdixYzGbzbz55pusWLGCHTt26DxfJQoLC4mPj+fBBx+kW7duxMTEcO7cOeLi4mjatClubm5MmDABo9HI2LFjWbhwIR4eHuTn5/PZZ5/RtGnT2j4EscHFzvOYMWMqDE8lJSW8//77uLu763+CKkHBSayUDxK8+eabOXjwIPv376dDhw7A+T+qQ4YMYf/+/Xz88cc8//zzTJ8+HUCzS19lLneeBw8ezP79+1m9ejXPPPMM7u7uGI1G9u3bR/v27Wu5erGVg4MDXbt2pUmTJkRFReHr68vf/vY3AEt4cnBwYODAgfTu3ZuMjAyKioro1KkTAQEBtVy92OpS57mi8PTdd9/x7bffkpSUpNBUGWaRCvz0009mX19f8+DBg82nT582m81ms8lkMpvNZnNGRobZYDCY16xZY2lfvk6uLrac5y+++KI2S5QrVFBQYPV+2bJlZoPBYH7++efNubm5ZrPZbC4tLTUfOnSoNsqTKnKp83zs2DGz2Ww2l5WVmTMyMsxms9l84sSJGq+xvtAVJ6lQ27Zt+e9//8u9996Lq6srkydPtvxfS8OGDencuTM+Pj6W9voo69XJlvOsAeBXt/JxSmVlZTg4OBAVFYXZbObvf/87BoOBUaNGMWvWLA4dOsSSJUtwc3PT7/NVyNbz/Ouvv7J06VKrf7/FPgpOclHh4eGsWLGCfv36kZWVRf/+/encuTNLlizh6NGjBAYG1naJUgV0nq8Njo6OmM1mTCYTf/vb3zAYDAwYMIDVq1fz888/s2PHDg0Grwcud563b9+Oq6trbZd5VdMEmHJZu3btIjY2lt9++40GDRrg6OjIsmXL6NKlS22XJlVI5/naUP5PvsFg4M477yQ9PZ2UlBQ6depUy5VJVdJ5rj4KTmKT/Px8Tpw4wenTp2nevPlFP+YqVzed52tDWVkZcXFxJCQkkJ6eTufOnWu7JKkGOs/VQ7fqxCaenp54enrWdhlSzXSerx033ngju3bt0h/Tek7nuerpipOIyDXIrOeTXRN0nquegpOIiIiIjTRjoYiIiIiNFJxEREREbKTgJCIiImIjBScRERERGyk4iYiIiNhIwUlERETERgpOIiIiIjZScBIRERGxkYKTiIiIiI0UnERERERs9P8AW9zzBhYNRyUAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "tq.visualization.plot_results(\n", " ideal_result,\n", " noisy_result,\n", " rc_result,\n", " labels=[\"Ideal Outcome\", \"Without RC\", \"With RC\"],\n", ")" ] }, { "cell_type": "raw", "id": "593f4f54", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "Randomized Compiling with Qudits\n", "--------------------------------\n", "\n", "Randomized compiling works for higher-dimensional qudits in the same way as for\n", "qubits. The random gates which are added around hard cycles are drawn uniformly\n", "from the :math:`d`\\-dimensional Weyl-Heisenberg group, and the original circuit must\n", "be expressed in terms of gates belonging to the :math:`d`\\-dimensional Clifford group,\n", "that is the group which preserves the :math:`d`\\-dimensional Weyl-Heisenberg group\n", "(see :doc:`../../guides/fundamentals/qudit_math` for more information).\n", "\n", "Let's start by defining a simple circuit following the qubit example above but for\n", "qutrits:" ] }, { "cell_type": "code", "execution_count": 14, "id": "31baa808", "metadata": { "execution": { "iopub.execute_input": "2024-04-26T18:19:46.860373Z", "iopub.status.busy": "2024-04-26T18:19:46.860063Z", "iopub.status.idle": "2024-04-26T18:19:46.887630Z", "shell.execute_reply": "2024-04-26T18:19:46.887182Z" } }, "outputs": [ { "data": { "text/html": [ "
0 1 Key: Labels: (0,) Name: Gate.f3 Aliases: Gate.f3 0.58 0.58 0.58 0.58 -0.29 0.50j -0.29 -0.50j 0.58 -0.29 -0.50j -0.29 0.50j F3 Labels: (0, 1) Name: Gate.cz3 Aliases: Gate.cz3 1.00 1.00 1.00 1.00 -0.50 0.87j -0.50 -0.87j 1.00 -0.50 -0.87j -0.50 0.87j CZ CZ Labels: (1,) Name: Gate.f3 Aliases: Gate.f3 0.58 0.58 0.58 0.58 -0.29 0.50j -0.29 -0.50j 0.58 -0.29 -0.50j -0.29 0.50j F3 Labels: (0,) Name: Gate.f3 Aliases: Gate.f3 0.58 0.58 0.58 0.58 -0.29 0.50j -0.29 -0.50j 0.58 -0.29 -0.50j -0.29 0.50j F3 Labels: (0, 1) Name: Gate.cz3 Aliases: Gate.cz3 1.00 1.00 1.00 1.00 -0.50 0.87j -0.50 -0.87j 1.00 -0.50 -0.87j -0.50 0.87j CZ CZ Labels: (1,) Name: Gate.f3 Aliases: Gate.f3 0.58 0.58 0.58 0.58 -0.29 0.50j -0.29 -0.50j 0.58 -0.29 -0.50j -0.29 0.50j F3 Labels: (0,) Name: Gate.f3 Aliases: Gate.f3 0.58 0.58 0.58 0.58 -0.29 0.50j -0.29 -0.50j 0.58 -0.29 -0.50j -0.29 0.50j F3 Labels: (0, 1) Name: Gate.cz3 Aliases: Gate.cz3 1.00 1.00 1.00 1.00 -0.50 0.87j -0.50 -0.87j 1.00 -0.50 -0.87j -0.50 0.87j CZ CZ Labels: (1,) Name: Gate.f3 Aliases: Gate.f3 0.58 0.58 0.58 0.58 -0.29 0.50j -0.29 -0.50j 0.58 -0.29 -0.50j -0.29 0.50j F3 1 Labels: (0,) Name: Meas M Labels: (1,) Name: Meas M
" ], "text/plain": [ "DisplayWrapper( 0 1 Key: twirl: Paulis on [0, 1] protocol: RC Labels: (0,) Name: Gate 0.58 -0.29 -0.50j -0.29 0.50j -0.29 -0.50j -0.29 -0.50j -0.29 -0.50j -0.29 0.50j -0.29 -0.50j 0.58 Labels: (1,) Name: Gate.y3 Aliases: Gate.y3 Gate.y3pow1 1.00 -0.50 0.87j -0.50 -0.87j Y3 2 Labels: (0, 1) Name: Gate.cz3 Aliases: Gate.cz3 1.00 1.00 1.00 1.00 -0.50 0.87j -0.50 -0.87j 1.00 -0.50 -0.87j -0.50 0.87j CZ CZ Labels: (0,) Name: Gate 0.58 -0.29 -0.50j -0.29 0.50j -0.29 -0.50j -0.29 -0.50j -0.29 -0.50j -0.29 0.50j -0.29 -0.50j 0.58 Labels: (1,) Name: Gate -0.29 -0.50j 0.58 -0.29 0.50j 0.58 -0.29 -0.50j -0.29 0.50j -0.29 0.50j -0.29 0.50j -0.29 0.50j 3 Labels: (0, 1) Name: Gate.cz3 Aliases: Gate.cz3 1.00 1.00 1.00 1.00 -0.50 0.87j -0.50 -0.87j 1.00 -0.50 -0.87j -0.50 0.87j CZ CZ Labels: (0,) Name: Gate -0.29 -0.50j 0.58 -0.29 0.50j -0.29 -0.50j -0.29 0.50j 0.58 -0.29 -0.50j -0.29 -0.50j -0.29 -0.50j Labels: (1,) Name: Gate 0.58 -0.29 -0.50j -0.29 0.50j 0.58 0.58 0.58 0.58 -0.29 0.50j -0.29 -0.50j 4 Labels: (0, 1) Name: Gate.cz3 Aliases: Gate.cz3 1.00 1.00 1.00 1.00 -0.50 0.87j -0.50 -0.87j 1.00 -0.50 -0.87j -0.50 0.87j CZ CZ Labels: (0,) Name: Gate.y3 Aliases: Gate.y3 Gate.y3pow1 1.00 -0.50 0.87j -0.50 -0.87j Y3 Labels: (1,) Name: Gate -0.29 -0.50j 0.58 -0.29 0.50j -0.29 0.50j 0.58 -0.29 -0.50j 0.58 0.58 0.58 1 Labels: (0,) Name: Meas M Labels: (1,) Name: Meas M " ], "text/plain": [ "DisplayWrapper(" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "tq.visualization.plot_results(\n", " ideal_result,\n", " noisy_result,\n", " rc_result,\n", " labels=[\"Ideal Outcome\", \"Without RC\", \"With RC\"],\n", ")" ] } ], "metadata": { "jupytext": { "cell_metadata_filter": "nbsphinx,raw_mimetype,-all", "main_language": "python", "notebook_metadata_filter": "-all", "text_representation": { "extension": ".py", "format_name": "percent" } }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" } }, "nbformat": 4, "nbformat_minor": 5 }