Skip to content

Instantly share code, notes, and snippets.

@enakai00
Last active November 3, 2022 02:52
Show Gist options
  • Save enakai00/2820efeb3aeba1740fb313ebdf5d8a03 to your computer and use it in GitHub Desktop.
Save enakai00/2820efeb3aeba1740fb313ebdf5d8a03 to your computer and use it in GitHub Desktop.
qiqo-exercise-8-11.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"collapsed_sections": [],
"authorship_tag": "ABX9TyOguuWlaPBkD1FFdiqNSQqp",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/enakai00/2820efeb3aeba1740fb313ebdf5d8a03/qiqo-exercise-8-11.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"source": [
"Simulate the randomized benchmarking to estimate the average fiedlity of the following gates:\n",
"\n",
"- Hadamrd $\\displaystyle H = \\frac{1}{\\sqrt{2}}\\begin{pmatrix}1 & 1 \\\\ 1 & -1\\end{pmatrix}$\n",
"\n",
"- Phase $\\displaystyle S = \\begin{pmatrix}i & 0 \\\\ 0 & -i\\end{pmatrix}$\n",
"\n",
"The error model consits of relaxation and dephasing:\n",
"$$\n",
"\\displaystyle \\rho(t) = \\begin{pmatrix}\n",
"\\rho_{11} e^{-\\frac{t}{T_1}} & \\rho_{10} e^{-\\frac{t}{T^*_2}} \\\\\n",
"\\rho_{01} e^{-\\frac{t}{T^*_2}} &\n",
"\\rho_{00} + \\rho_{11}\\left(1-e^{-\\frac{t}{T_1}}\\right)\\end{pmatrix}\n",
"$$\n",
"\n",
"where $\\displaystyle T^*_2 = \\left(\\frac{1}{2T_1}+\\frac{1}{T_\\phi}\\right)^{-1}$\n"
],
"metadata": {
"id": "LFS6dcOeS0TB"
}
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "O_j8FUvxhGtv"
},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"\n",
"plt.rcParams.update({'font.size': 12})"
]
},
{
"cell_type": "code",
"source": [
"hadamard = (1 / np.sqrt(2)) * np.array([[1, 1], [1, -1]])\n",
"phase = np.array([[1, 0], [0, 0+1j]])\n",
"\n",
"sigma_z = np.array([[1,0], [0, -1]])\n",
"sigma_x = np.array([[0,1], [1, 0]])\n",
"sigma_y = np.array([[0,0-1j], [0+1j, 0]])\n",
"\n",
"ops1 = [hadamard, phase]\n",
"ops1_inverse = [hadamard, np.matmul(sigma_z, phase)]\n",
"\n",
"ops2 = [sigma_z, sigma_x, sigma_y]\n",
"ops2_inverse = ops2"
],
"metadata": {
"id": "n3frUt_0F09q"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"def simulate(params):\n",
" t1 = params['t1']\n",
" t_phi = params['t_phi']\n",
" t2 = 1 / ((1/(2*t1))+(1/t_phi))\n",
"\n",
" t_step = params['t_step']\n",
" max_gates = params['max_gates']\n",
" num_experiments = params['num_experiments']\n",
" num_repates = params['num_repates']\n",
"\n",
" results = []\n",
" for l in np.random.randint(1, max_gates+1, num_experiments):\n",
" success = 0\n",
" for _ in range(num_repates):\n",
" state = np.array([[0, 0], [0, 1.0]])\n",
" inverse = np.eye(2)\n",
" for _ in range(l):\n",
" op = np.random.randint(len(ops2))\n",
" state = np.matmul(np.matmul(ops2[op], state), np.conj(ops2[op].T))\n",
" inverse = np.matmul(inverse, ops2_inverse[op])\n",
" state[1, 1] += (1 - np.exp(-t_step/t1)) * state[0, 0]\n",
" state[0, 0] -= (1 - np.exp(-t_step/t1)) * state[0, 0]\n",
" state[1, 0] *= np.exp(-t_step/t2)\n",
" state[0, 1] *= np.exp(-t_step/t2)\n",
"\n",
" op = np.random.randint(len(ops1))\n",
" state = np.matmul(np.matmul(ops1[op], state), np.conj(ops1[op].T))\n",
" inverse = np.matmul(inverse, ops1_inverse[op])\n",
" state[1, 1] += (1 - np.exp(-t_step/t1)) * state[0, 0]\n",
" state[0, 0] -= (1 - np.exp(-t_step/t1)) * state[0, 0]\n",
" state[1, 0] *= np.exp(-t_step/t2)\n",
" state[0, 1] *= np.exp(-t_step/t2)\n",
" state = np.matmul(np.matmul(inverse, state), np.conj(inverse.T))\n",
" if np.random.random() <= np.abs(state[1][1])**2:\n",
" success += 1\n",
" results.append((l, success/num_repates))\n",
"\n",
" return results"
],
"metadata": {
"id": "QO-1yM0LFLxN"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"def post_process(params, results):\n",
" ls = [l for (l, r) in results]\n",
" rs = [r for (l, r) in results]\n",
" coefficients = np.polyfit(ls, np.log(rs), 1)\n",
" p = np.exp(coefficients[0])\n",
" a = np.exp(coefficients[1])\n",
"\n",
" fig = plt.figure(figsize=(7, 4))\n",
" subplot = fig.add_subplot(1, 1, 1)\n",
" subplot.scatter(ls, rs)\n",
" subplot.set_xlabel('Number of gates')\n",
" subplot.set_ylabel('Success rate')\n",
"\n",
" xs = np.linspace(0, max(ls), 100)\n",
" ys = a * p ** xs\n",
" subplot.plot(xs, ys, color='red', label='p={:.4f}'.format(p))\n",
" #subplot.set_yscale('log')\n",
" subplot.legend()\n",
"\n",
" f_avg = p + (1-p)/2\n",
" print('Estimated average fiedlity: {:0.4f}'.format(f_avg))\n",
"\n",
" t1 = params['t1']\n",
" t_phi = params['t_phi']\n",
" t2 = 1 / ((1/(2*t1))+(1/t_phi))\n",
" t_step = params['t_step']\n",
" f_proc = (1/4) * (1 + np.exp(-t_step/t1) + 2 * np.exp(-t_step/t2))\n",
" print('Theoretical average fiedlity: {:0.4f}'.format((2/3)*f_proc+(1/3)))"
],
"metadata": {
"id": "Ux82JRhG0BZS"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"params = {\n",
" 't1': 1*1e-6,\n",
" 't_phi': 1*1e-6,\n",
" 't_step': 10*1e-9,\n",
" 'max_gates': 10,\n",
" 'num_experiments':50,\n",
" 'num_repates': 200,\n",
"}\n",
"results = simulate(params)\n",
"post_process(params, results)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 324
},
"id": "2rgsdoKGy1p6",
"outputId": "f5d20927-4abb-4631-b074-15950cd52454"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Estimated average fiedlity: 0.9887\n",
"Theoretical average fiedlity: 0.9934\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 504x288 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"source": [
"params = {\n",
" 't1': 0.5*1e-6,\n",
" 't_phi': 0.5*1e-6,\n",
" 't_step': 10*1e-9,\n",
" 'max_gates': 10,\n",
" 'num_experiments':50,\n",
" 'num_repates': 200,\n",
"}\n",
"results = simulate(params)\n",
"post_process(params, results)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 322
},
"id": "RAc3FIujYAYw",
"outputId": "abc59e90-6f5c-4655-b4f0-0ca235f87a94"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Estimated average fiedlity: 0.9774\n",
"Theoretical average fiedlity: 0.9868\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 504x288 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"source": [
"params = {\n",
" 't1': 1*1e-7,\n",
" 't_phi': 1*1e-7,\n",
" 't_step': 10*1e-9,\n",
" 'max_gates': 10,\n",
" 'num_experiments':50,\n",
" 'num_repates': 200,\n",
"}\n",
"results = simulate(params)\n",
"post_process(params, results)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 322
},
"id": "NKKkw6oZ3BDi",
"outputId": "19b8533c-bce0-4427-fee9-8c8dcc128815"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Estimated average fiedlity: 0.9478\n",
"Theoretical average fiedlity: 0.9377\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 504x288 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAcAAAAEMCAYAAABTD2a8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3dd3zUVfb/8dchRAmhS1kJAopSREQUy4JgWRVdZUFQRLCxIi6urmVFQGVF1AVlddWvbe2dtQFiRRfs5acoICKCgqAGaWLEYFDK+f1xBwwhA5NkWjLv5+PxeTjc+ZSTQebkfj733mPujoiISKapluoAREREUkEJUEREMpISoIiIZCQlQBERyUhKgCIikpGqpzqAeGnYsKG3bNky1WGIiEga+eijj1a5e6PS3qsyCbBly5bMmDEj1WGIiEgaMbMl0d7TLVAREclISoAiIpKRlABFRCQjKQGKiEhGqjKDYEREkmHNmjWsWLGC9evXpzoUAbKzs2ncuDF16tQp87FKgGlo8sx8xk+dz9KCIprWy2FYjzb07pSX6rBEMt6aNWtYvnw5eXl55OTkYGapDimjuTtFRUXk5+cDlDkJ6hZompk8M5+RE+eQX1CEA/kFRYycOIfJM/NTHZpIxluxYgV5eXnUrFlTyS8NmBk1a9YkLy+PFStWlPn4pCVAM2tgZpPMbK2ZLTGzAVH229nM7jKz5Wa22syeM7OM6f6MnzqfovUbt2orWr+R8VPnpygiEdls/fr15OTkpDoMKSEnJ6dct6ST2QO8HfgVaAIMBO40s/al7Hch8HtgX6Ap8APwf8kKMtWWFhSVqV1Ekks9v/RT3r+TpCRAM8sF+gKj3L3Q3d8GpgCnl7L77sBUd1/u7uuAJ4DSEmWV1LRe6b9dRmsXEZHySVYPsDWwwd0XFGubTemJ7T6gq5k1NbOahN7iS6Wd1MyGmNkMM5uxcuXKuAedCsN6tCEnO2urtpzsLIb1aJOiiEREqqZkJcBawJoSbT8CtUvZ9wvgGyA/ckw7YExpJ3X3u929s7t3btSo1LVOK53enfIY26cDefVyMCCvXg5j+3TQKFARSYpp06bRtm1batasyRFHHMGSJVGX0mTWrFl069aNunXr0qxZM6655pqt3r/33nvZc889qVWrFsceeyxLly7d8t7o0aPJzs6mVq1aW7ZFixZted/MyM3N3fLe4MGD4/6zJisBFgIlx6fWAX4qZd/bgZ2BXYBcYCJReoBVVe9Oebwz4ki+Gnc874w4UslPRJJi1apV9OnTh2uuuYbVq1fTuXNnTjnllKj7DxgwgO7du7N69WreeOMN7rjjDqZMmQLA66+/zuWXX86zzz7L6tWr2X333Tn11FO3Ov6UU06hsLBwy7bHHnts9f7s2bO3vHfvvffG/edNVgJcAFQ3s72KtXUE5pay737Ag+6+2t1/IQyAOcjMGiYhThGRSqtly5aMHTuWvffem/r16zNo0CDWrVsX8/ETJ06kffv2nHzyydSoUYPRo0cze/ZsPv/881L3X7x4MQMHDiQrK4tWrVpx6KGHMndu+Fp//vnnOfnkk2nfvj077bQTo0aN4s0332ThwoVx+VnjISkT4d19rZlNBMaY2WBCkusFdCll9w+BM8zsdeBn4DxgqbuvSkasIiIxu+gimDUrsdfYbz+4+eaYd3/ssceYOnUqubm59OzZk2uvvZYhQ4aw7777Rj3mjjvuYMCAAcydO5eOHTtuac/NzaVVq1bMnTuXtm3bbnPcRRddxMMPP8w111zDokWLeO+997jsssu2vO/u27z+9NNPadWqFQDPPfccDRo0YNddd+X8889n6NChW52/e/fubNq0iS5dunDTTTcR75qvyZwGcR6QA6wAJgBD3X2umXUzs8Ji+10KrCM8C1wJ/BE4MYlxiohUWueffz677bYbDRo04IorrmDChAk0b96cgoKCqNuAAWFadmFhIXXr1t3qfHXr1uWnn0p7WgUnnHACTz/9NDk5ObRt25azzz6bAw88EIBjjz2WJ598kk8++YSioiLGjBmDmfHzzz8D0K9fP+bNm8fKlSu55557GDNmDBMmTNhy7jfeeIPFixfz+eef07RpU0444QQ2bNgQ188qaUuhuftqoHcp7W8RBsls/vP3hJGfIiLprQw9s2TZbbfdtrxu0aLFVgNPdqRWrVqsWbP1eMU1a9ZQu/a24xVXr17Nsccey2233caAAQNYtmwZJ510Ek2aNOG8887jqKOO4uqrr6Zv376sWbOGiy66iNq1a9OsWTMA9t577y3n6tKlCxdeeCFPP/30lueE3bt3B2CnnXbilltuoU6dOsybN48OHTrE/mHsgJZCExGpQr755pstr7/++muaNm3K119/vdVoy5LbY489BkD79u2ZPXv2luPXrl3LwoULad9+2xlrixYtIisrizPOOIPq1avTrFkz+vfvz4svvrhln7/+9a988cUXLF++nL59+7Jhwwb22WefUuM2s61umZb1/fJQAhQRqUJuv/12vv32W1avXs11113HKaecQvPmzbcabVlyGzgw3HQ78cQT+fTTT3nmmWdYt24dY8aMYd999y31+V/r1q1xdx5//HE2bdrEsmXLeOKJJ7Y8a1y3bh2ffvop7s7XX3/NkCFDuPDCC6lfvz4Azz77LD/88APuzgcffMCtt95Kr169AJg7dy6zZs1i48aNFBYW8ve//528vDzatWsX3w/L3avEdsABB7iISCJ99tlnqQ5hu1q0aOH//Oc/vV27dl63bl0/44wzfO3atWU6x6uvvupt2rTxGjVq+GGHHeZfffXVlvfOPfdcP/fcc7f8edq0ad65c2evU6eON2nSxAcPHrzlej/88IN36NDBa9as6U2aNPERI0b4hg0bthzbv39/b9Cggefm5nqbNm38lltu2eq8rVu39po1a3qjRo28V69evmDBgu3GHe3vBpjhUfKGeZy7lKnSuXNnnzFjRqrDEJEqbN68efHvhcRRy5YtuffeeznqqKNSHUrSRfu7MbOP3L1zacfoFqiIiGQkJUAREclIqggvIlJFLF68ONUhVCrqAYqISEZSAixu2DD417+gigwMEpH427RpU6pDkBLK+3eiBLjZxo2wZElIggMHQmS5HhGRzXJzc8nPz+fXX3+N+6RsKTt359dffyU/P5/c3NwyH69ngJtlZcETT8D++8Pll8Nnn8GkSbD77qmOTETSRLNmzVi1ahVLliyJ+7qUUj7Vq1enbt26NGxY9oJBmgdYmpdfhlNPhWrV4L//haOPjs95RUQkqTQPsKyOPRZmzICmTcPrceP0XFBEpIpRAoymVSt47z04+WQYORJOOgmilAQREZHKR88At6dWLZgwAQ46CC67LPx30iQoZWHYeJo8M5/xU+eztKCIpvVyGNajDb075SX0mpUpHhGReFAPcEfM4JJL4NVX4fvv4cAD4ZlnEna5yTPzGTlxDvkFRTiQX1DEyIlzmDwzP2HXrEzxiIjEixJgrI44Aj7+GNq3D7dDL7sMEjAKbPzU+RSt37hVW9H6jYyfOj/u16qM8YiIxIsSYFk0awZvvAFDh8L48WF0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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment