{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Estimating Randomized Benchmarking Fidelities #" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Introduction ##" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This Notebook demonstrates how to use QInfer to the fidelity of a gateset using experimental data from randomized benchmarking." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Setup ##" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, to make sure that this example works in both Python 2 and 3, we tell Python 2 to use 3-style division and printing." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from __future__ import division, print_function" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, we import QInfer itself, along with NumPy and Matplotlib." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/cgranade/anaconda/envs/qinfer-binder/lib/python3.5/site-packages/qinfer/metrics.py:51: UserWarning: Could not import scikit-learn. Some features may not work.\n", " warnings.warn(\"Could not import scikit-learn. Some features may not work.\")\n", "/home/cgranade/anaconda/envs/qinfer-binder/lib/python3.5/site-packages/matplotlib/__init__.py:872: UserWarning: axes.color_cycle is deprecated and replaced with axes.prop_cycle; please use the latter.\n", " warnings.warn(self.msg_depr % (key, alt_key))\n", "/home/cgranade/anaconda/envs/qinfer-binder/lib/python3.5/site-packages/IPython/parallel.py:13: ShimWarning: The `IPython.parallel` package has been deprecated. You should import from ipyparallel instead.\n", " \"You should import from ipyparallel instead.\", ShimWarning)\n", "/home/cgranade/anaconda/envs/qinfer-binder/lib/python3.5/site-packages/qinfer/parallel.py:53: UserWarning: Could not import IPython parallel. Parallelization support will be disabled.\n", " \"Could not import IPython parallel. \"\n" ] } ], "source": [ "import qinfer as qi\n", "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For pretty-printing later, we'll need to borrow some unicode compatibility from ``future``, so that this notebook also works under Python 2. We'll also import ``reduce`` in a 2/3 compatible manner." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from future.utils import python_2_unicode_compatible\n", "from builtins import str\n", "from functools import reduce" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We finish by configuring Matplotlib for plotting in Jupyter Notebook." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib inline\n", "try: plt.style.use('ggplot')\n", "except: pass" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Randomized Benchmarking ##" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In a randomized benchmarking (RB) experiment, one chooses a random sequence of gates from a 2-design (for example, the Clifford group), then inverts the ideal action of the sequence and measures if the inversion was successful.\n", "Magesan *et al.* [10/tfz](https://dx.doi.org/10/tfz) showed that this results in an exponentially decay in the length $m$ of each sequence,\n", "$$\n", " A p^m + B,\n", "$$\n", "where $p$ is related to the the average fidelity $F$ of the 2-design used by $F = 1 - (1 - p) (d - 1) / d$ for a $d$-dimensional system, and where $A$ and $B$ are nuisance parameters. We will give a more precise definition later, and will show a numerical example of how this model arises. For now, though, we will synthesize some data by assuming the correctness of the model." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "p = 0.995\n", "A = 0.5\n", "B = 0.5" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [], "source": [ "ms = np.linspace(1, 800, 201).astype(int)\n", "signal = A * p ** ms + B" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [], "source": [ "n_shots = 25\n", "counts = np.random.binomial(p=signal, n=n_shots)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEECAYAAAAvY19bAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnXl4U2Xa/z8nKWlp0xZS2lIoWKFAoQiIBRnrwjo4/hyF\ncezMCL4ujIAgA+4LbqN9ZxwVFWUEdbCo6Gj1naL4+g6DC7IoS4EqtBaoSIVCd6BNV9qc3x81MWnT\n5iQ5SU7a53NdvZqcPMv3ec7JnZOT5/4eSZZlGYFAIBD0GHSBFiAQCAQC/yICv0AgEPQwROAXCASC\nHoYI/AKBQNDDEIFfIBAIehgi8AsEAkEPI8RVgdWrV7Nv3z6io6N59tlnnZZ5/fXXycvLIzQ0lMWL\nF5OUlKS2ToFAIBCohMsz/ilTprB8+fJOX9+/fz9lZWW8+OKLzJ8/n9dee01x5/n5+YrLBhKhU12E\nTvUIBo0gdKqNtzpdBv6UlBQiIiI6fX3Pnj1cccUVAAwbNoz6+nrOnDmjqPOeMsn+QuhUl2DQGQwa\nQehUG58HfldUV1cTExNje24ymaiurva2WYFAIBD4CPHjrkAgEPQwJCVePRUVFfztb39z+uPuq6++\nyujRo7nkkksAWLZsGY8//jh9+vTpUDY/P9/hK0pGRoY32gUCgaDHkp2dbXucmppKamqq4rouV/UA\nyLJMZ58PaWlpbNq0iUsuuYTDhw8TERHhNOh3Jm7vLdfzwa/ugZAQMkbHkFNQzdxxsQCsz6tg9iiT\nbZvRoFc8MDWJjIyktrY2IH27g9CpLsGgMxg0gtCpNgMGDPDqxNll4F+5ciUFBQXU1tZy++23k5GR\nQUtLC5IkMX36dMaPH8/+/ftZsmQJYWFh3H777W4JMA5PgeIiGDKCCIOeueNiydpbBpLELePjMP60\nbX1eRUCDv0AgEHQXFF3q8SUfbs1jxKvLkRbcx6GwBNIGGtlWXIMkw6VJUbZy5uZWCisaSBto9LvG\nYDkLEDrVJRh0BoNGEDrVZsCAAV7VD/iPuxOS4zDO+j3h/1zNRQm9AbjsvCiHoA9gNOgDEvQFAoGg\nuxHwwA8g/WIqhIYhb/m/QEsRCASCbo+iH3d9jSRJ6ObejuXpB5HH/wKpT4zrSgKBQPMYjUYkSUKv\n1xMZGRloOS7Rmk5ZljGbzaq3q4nADyAlDEK6fCbyu/9AWnh/oOUIBAIVkCQpKK6ZaxVffQhp4lKP\nle0XXMW2syHI+762bdtWXMP2YzUO5ZxtMze3klvS9smYW2K2PTc3tzq8bl9OIBAIeiIBD/z2gfmb\niia+HXcVtdnrkOtqMTe3knfSzP7SOodyzratz6sgJbbtx+GU2N6sz6tgULSB9XkVlJmbHZ5bywkE\nAkFPJOCXeuyTtG65KB6I563KDGa/9w4bRl/70zZn5TpP8LJf+z9zWDSZW05wV/qAgCeCCQQCgRYI\n+Bn/7FEm5n94lNmjTBgNeowGPbOvnMiC0CuYFXLy523OyrXbZo/19WWfFLNwYjzLPjnmtJxAIBC0\nJycnhzlz5vi8n6+//pq0tDSf99OegAf+nIJqXr12CDkF1ZibWzE3t7Lh+zpeGdVIzrZCas+2XZd3\nVq79Nnusr79w1Xms2V3GC1clOS0nEAh6Lrt37+baa69l5MiRjB49mtmzZ/Ptt98ye/Zs3n77bb9o\nkCTJL/3YE/BLPdZLLx2tGvoz99uvydq4Cyl5lIN9gytLB+s1f+tloIcnJ5JTUM3sUSZh/SAQCAAw\nm83cfPPNPPXUU/z617+mubmZXbt2YTAYAi3N5wT8jN/+uvy4AUYu7B/x87brb2Rc8R7GWaq6LvdT\n8C+saACgsKKBueNiOX62mbnjYok3GhyeW8sJBIKey9GjR5EkiWuuuQZJkggNDeXyyy8nJSWF7Oxs\nZs+ebSv75ZdfcvnllzNq1Cgeeughfvvb3/Luu+8C2Mo++eSTpKamcskll/DFF1/Y6r733ntMnjyZ\nESNGkJ6ezvr16/0+1vYEPPDb096qQQo3ctnVU7lk40rkxvpOy4GjpUPaQKPtuf2Hg/12gUDQsxky\nZAg6nY5ly5bxxRdfcPbsWYfXrZdgqqurWbBgAcuXL+fgwYMMHTqUvXv3OpTNy8tj2LBhHDx4kIUL\nF3LPPffYXouNjeWtt97i0KFDPPfcczz++OMcPHjQ9wPsgoBf6nGFNHYi0v6dyO+tRbppSaDlCAQC\nFWm97RpV2tG/9pHbdYxGIzk5Obz88svcd999lJeXM23aNJ5++mmHcp9//jkjRoxg5syZAMybN481\na9Y4lBk4cCC///3vAbj++utZvnw5lZWV9OvXj6lTp9rKXXzxxVxxxRXs3r2b0aNHu61ZLTQf+AGk\n3/8RyxPLkPN2Io2bFGg5AoFAJTwJ2GqSnJzMc889B8D333/PkiVLeOyxx2z3EQcoKyvr4IaZkJDg\n8DwuLs72uHfv3siyTF1dHf369ePzzz/n+eef5+jRo8iyTGNjIyNHjvThqFyjqUs9nSGFhaO7dRmW\n9auRa04HWo5AIOiGDB06lIyMDA4dOuSwPS4ujpMnTzpsO3XqlKI2m5ubmT9/PosWLeLAgQMUFBQw\nZcqUTm9s5S80EfjtrRWstLdWkJJHsffi31D71qsOk2Ytp6QNtTUJBILgpaioiFdeecUWxEtKStiw\nYQPjx493KDdt2jQOHTrEf/7zH1pbW8nKyqKyslJRH+fOnePcuXOYTCZ0Oh2ff/45X375pepjcRdN\nBH6rxUJnFgxWRv6/mbwtDcW89dMO5ZS2obYmgUAQnBiNRvbv38/VV1/N8OHDbev5H3vsMYdyJpOJ\nV155hSeffJILLriAoqIixowZ0+WyT+sPwxERETzxxBMsWLCA1NRUPvzwQ9tvBYEk4Hfgsn6Far/2\nvrO19rXHilmfs43Zv5nChjK9QzmlbSjF2t6NEwbz1p4fNb/+P1juHiR0qofWNWpdnyfIskxaWhqr\nVq3iF7/4hU/76mz+gv4OXFZcWTBYiUw6j9mj+rJgey2zRkQ7lFPahruabnjnW2H3IBD0YL788ktq\nampoampi5cqVAB0uCQUTigJ/Xl4ey5YtY+nSpWzYsKHD63V1dTz77LPce++9LF++nBMnTrgtxJUF\ng325DX3Hs6Z6Izn/t9uhnNI23NX0zg1jhN2DQNCD2bt3L5dccgljx47ls88+4/XXXyc0NDTQsjzG\nZeC3WCysXbuW5cuXs2LFCnbs2EFJSYlDmZycHJKSknjmmWdYvHgxWVlZbomwXlKxz7K1v77esVwc\n/W+ez5y8f7L+8wKbd4+SNjzR1D8q1Ov2BAJB8HLXXXdx8OBBCgsL2bhxI2PHjg20JK9wGfiLiopI\nSEggNjaWkJAQ0tPT2bNnj0OZEydO2JIRBgwYQHl5OTU1Nc6ac4rVYqEzCwZn5aTIaCJvXsQNX7zE\ndz+UK25DbU0CgUAQbLgM/NXV1cTE/HwPXJPJRHV1tUOZ8847j927dwNtHxSVlZVUVVUpFmFvrWDF\nmbVC+3JSyhiM6ZMZ//HfuSiht6I21NYkEAgEwYYqmbuzZs0iKyuL+++/n0GDBnH++eej03X8TMnP\nzyc/P9/2PCMjw+t7Ssp/+CPmJ++m12cbCfvNjV611RkGg0FTN2DuDKFTXYJBp9Y16vViQYQ3dHXz\n9+zsbNvj1NRUUlNTFbfrMvCbTCaHZIXq6mpMJpNDmd69e7No0SLb88WLFxMfH9+hLWfi1FjqJd+y\njMbMO2k+bxjScOWDV0qwLEkTOtUlGHRqXaOWP5SCgdbWVqf7NzIykoyMDI/bdXmpJzk5mdLSUioq\nKmhpaWHHjh0d7hhTX19PS0sLAJ9++imjRo0iLCzMY1HuIvWNQXfzn7D8Y4WwdBAIBAIXuDzj1+l0\nzJs3j8zMTGRZZurUqSQmJrJ582YkSWL69OmcOHGCv//97+h0OhITE7n99ttVF5pbYiYl1vE6/rbi\nGiQZLk2KQrogDemSqdS+tpJDGXcxYVCU0/qFFQ22dszNrbbnhRUN4vq9QCDoEWgmc9cV9ssrrUG7\n/Z24ahubWb/+38yNOk1kxk1O61uzetv/7yorV+tfp60IneoSDDq1rlHL+i6++GIqKyvp1asXer2e\nYcOGcd111zF37lyXt0M8ceIEkyZN4scff3T6e6ZadPvMXVfY32KxzNzM+rwKbrkonlvGx9m2vf1t\nNXOvu5zwfduw7NnutH5OQTUzh0WTueUEM4f1UcXaQSAQKEcNA0Q12pAkiTfffJPCwkJ27drF4sWL\nefnll7n77rtd1pVlGUmSAu6y6SlBE/jBuSVD+22Rffugu/1B5HfWIJ/80Wn9ZZ8Us3BiPMs+OSas\nGAQCP6OGAaJaJorWwG00GpkxYwarV6/m/fff5/Dhw3z22WfMnDmTlJQUJk6caPPtB7juuusAGDly\nJCNGjGDfvn0UFxeTkZHB6NGjGTNmDEuWLNHst52gCvzOLBmcbZPOG4r021uwrP4rckN9h/ovXHUe\na3aX8cJVScKKQSDwM86+vbv7rVuNNpwxbtw4EhIS2LVrFxEREbz44osUFhby5ptv8tZbb/Gf//wH\ngH/9618AHDp0iEOHDjF+/HhkWWbJkiXk5eWxZcsWTp06xYoVK7zS4yuCJvA7s2TI2ltG1r5ypzYN\nuvRpSCMuwPL6C8gWi8M1/k1HzvLw5EQ2HTnD7FEmYcUgEPgZNQwV1TZltBIfH8+ZM2eYNGkSI0aM\nACAlJYVrrrmGr7/+2qGs/aWepKQkLrvsMkJCQjCZTNx2223s3LlTFU1qEzSB35mFwrgBRi7sH9Gp\nrYL0u9vAXIP84Tu2+sfPNjt8UFifCysGgcB/qGGoqLYpo5XS0lL69OnD/v37uf766xkzZgwjR45k\n/fr1HVwL7KmsrGTRokVcdNFFjBw5kiVLlnRZPpAETeB3ZqFw2XlRXJrkuGzT3lZB6tUL3e0PIO/a\nwvgTe22v2X9QWJ+LpZwCgX9Qw1BRbVNGK3l5eZSVlTFx4kTuuOMOrrzySvbu3ct3333H3LlzbWf4\nzlb9PPXUU+h0Or744gu+++47XnrpJc3++Bs0gd9TpKg+6O54GPnd15CPHnJdQSAQ+BQ1DBDVNlE0\nm81s3ryZxYsXc9111zFixAjq6uqIjo6mV69e7N+/38GS3norxWPHjjm0ER4ejtFo5NSpU6xevdoj\nLf4gaNbxe4v8zR4s6/+O7sFnkEyxbtXV8lpke4ROdQkGnVrXqGV9kyZNorKykpCQEHQ6nW0d/403\n3ogkSXzyySf8+c9/5uzZs0yaNIlBgwZx9uxZXnzxRQBWrFjBG2+8QWtrK+vXryciIoKlS5dy9OhR\nkpKSuO6663jttdc6uBm7g6/W8feYwA9g2fQv5F1forv/b0ihyi0ltHzw2iN0qksw6NS6Rq3r0zo9\nLoFLaYJG+3K5JWbKzM0O5az1pF/ORho0BMva59hzvMbrBBBPxrCtuIbtxxzvVaB2vz0dNZJ7tEB3\nGYdAe2g28CtN0GhfblC0gcwtJxgUbehQT5IkpLmLoL6OlO0fqJIA4u4Y8k6a2V9a59N+ezpqJfcE\nmu4yDoH20GzgV5qg0b5cTkE1D09OJKeg2mk9qVcvdIseJLxwH3Oqd6ueAOJqDO1tJnzRb0/HV8k9\n/qa7jEOgPTQb+EF5gkb7cvFGQ5f1pHAjuqWPEf75Bma1fK96AoirMfgq8UTwM91ljrvLOATaQtOB\nX2mCRvty1jP/rupJpljqFz1Mzq4feOWCFp9ZNyi1mRCoS3eZ4+4yDoG20GzgV5qg0b7c7FEmMrec\nsJ35d1Xv7fJw5k6/gNh1f2NOXJPq1g3u2kwI1MFXyT3+pruMQ6A9NLuc09mNV6w3TrHPsm1fLrfE\nzKBoA8fPNtvKuapn2bkFOedN6u/8C4dajR2yeD1dkubq5jFdjcsTgmXpnK91Kj12XBHo+VQyjkBr\ndIXRaESSJPR6Pa2t2v/A0ppOWZYxmzuu4hLr+FXC8ulHyF98gu7+vyJF9XV4TetvLitCp7oEg85g\n0AhCp9p023X8/kY3/RqkSZOxPP8Ycp1YJy0QCLovIvDbIV39O6SRY7G8+GfkRuHWKRAIuicub7YO\nbY5169atQ5ZlpkyZwqxZsxxer6+v56WXXqKyshKLxcKvf/1rJk+e7Au9PkWSJLj+VnhzFZaX/4Ju\nySNIvQyBliUQCASq4vKM32KxsHbtWpYvX86KFSvYsWMHJSUlDmU2bdrEoEGDeOaZZ3jsscd48803\nNfUDiTv2D3XnLEg3LkIKN2J55Wlq65vYWXzG4zbd1bmt2NFKwtzcyvZjNR6325XOYLQECEbNAoHW\ncBn4i4qKSEhIIDY2lpCQENLT0zu4zUmSREND26WRxsZGIiMj0eu1k2jirv1DXQtIf7yLOqkX69/9\nlNR+HQ3dfJFOnxLbm7yTZrL2ldvW+2ftLWN/aZ3H7XalMxgtAYJRs0CgNVwG/urqamJiYmzPTSZT\nh7vKXHnllZw4cYIFCxZw7733cvPNN6su1Bs8sX8ob5R556IbmdNwEN2avyC3tHjUprs6b7koHmSZ\n1/aU8eqeUpAkbhkf53G7XekMRkuAYNQsEGgNl8s5d+7cyTfffMOCBQsA2Lp1K0VFRdx6660OZQ4f\nPsx//dd/UVpaSmZmJs8++yxhYY5nyvn5+eTn59ueZ2Rk+HXpVGlNEze88y3v3DCG/lGhisrF95Zo\nWPkEsk5H+J8eRQoJ6bRsV216ohNwq12DwUBzc3OXbTprzxdj8FSnUvyhWQ2dviYYNILQqTaRkZFk\nZ2fbnqemppKamqq4vsvAf/jwYd5//32WL18OYLsLjf0PvE899RSzZs0iJSUFgCeeeII5c+YwdOhQ\nlwL8tY7f/mbrOQXVnZ4lOivXPyqcs888DCG90N12jy34K23TXZ1Ze8tosYCMTC+9TvEZf2drkLvS\n6YsxeKpTKf7SHAxruoNBIwidauPzdfzJycmUlpZSUVFBS0sLO3bsIC0tzaFMv379OHDgAABnzpzh\n1KlTxMfHeyVMTTy1f7CWq7Po0C18AFrOYXntGeSWcz5Jp7cGfSSJ2ybEM39Cf5Bl2zV/tccejJYA\nwahZINAaijJ38/LyyMrKQpZlpk6dyqxZs9i8eTOSJDF9+nROnz7Nyy+/zOnTp4G2bwOXXnqpIgH+\nOOP31P7BWq7YDKkmPfK5c1hefQZazrFv1p8YmRDltS1Ae50NLRYuTIhwOCPPO1lHWC+dy3adna10\nNXZAFWsDd/HmrEotOwYlBMPZXzBoBKFTbYRlgx+wPxjk1lbkdSuRqyvR3fEwUu/wAKv7mWA5aIVO\n9QgGjSB0qo2wbPAzkl6PdMsypAGDsKx4GNlc47qSQCAQaAgR+D1A0umQbljYZu/wzEPIZ6pdVxII\nBAKNIAK/h0iShO66m5AuvgLL0w8gl2v/kpVAIBCACPxeo7vqeqQrf4Pl6QeRfzgcaDkCgUDgEhH4\nUeBn09Ti9DVr3fpJM9DduBjLS08if7vHbe8Yd/10thXXsP1YTYfy6/aUeOxj46kHTjB65wSjZoFA\nTUTgx7WfzdrdJU5fs69bN/IidHc8TO3br/HW/+1zyzvGXT+dvJNm9pfWdSh/5YgYj31sPPXACUbv\nnGDULBCoif7xxx9/PJACtLB0yqDX2YLBoGgD2QeqbNmgBr2O8YNNvL67pMNr7esOThrA+8YLmLPt\nFSLqz8KI0W1Wz1723/61m8bHcWFCRIfyCX2NDInWO23HGw1q1wsNDQ1oWrxSzYHWqYRg0AhCp9pE\nRkZ6VV+c8f+E0aBn9igT8z88yuxRJocgYAwN6fS1DnUvGkTkfU8g5+9D/scK5OYm7/t38lpn5btq\nxxsNvqgXSIJRs0CgFiLw/4S5uZWcgmpevXYIOQXVjp74TS2dvuasbl1YFLp7/htkGcuzy5HPnvau\nfyevdVa+q3a80eCLeoEkGDULBGohLvXg6P9i6t3LdhkgJbY3za0y6/Mq+MMFpg6vGfS6TuuO7B+J\nYUI6nD2N/PYapJQxSNF9Pe7f/rWsvWXkldZz04VxDuWH9otg/b5TTtsx6Lv+jO9KQ1d1PakX6K/T\nSjUHWqcSgkEjCJ1q4+2lHmHZgGs/mwnnxyI3N3R4LW2gUZF3jGXPduR/voLuvxYjjZvkdv/tX9tW\nXIMkw6VJUQ7lNx2tY+aQCI98bDz1wPGkXqDT4pVqDrROJQSDRhA61UZ49fgBNQ4G+YcjWFb/FenS\nGW03ddepf5UtWA5aoVM9gkEjCJ1qI7x6ggTp/GHolq9ALvwGy6pM5DqxZlwgEAQGEfj9iBTdF91d\nmUhxCVj++y7kEz8EWpJAIOiBiMDvZ6SQEHS/vw3p2jlYVjyCZdeXgZYkEAh6GCLwK2Bn8RmXKf7u\n2gDoLr4C3d1PIn/4Npa3Xla83r8zlFhLqGFToLbdga/sE/xhy6CmzUVnNhzd1UZC2GYEFhH4FTC6\nv9Flir8nNgBS4vnoHnkBGuqw/OUe5FMnPNao1FrCW5sCte0OfGWf4A9bBjVtLjqz4eiuNhLCNiOw\niHX8CogM7+3SCsFTywOpVy8Yfwno9chrn4OoPkiDzndbozvWEu7aObTvx9t27NdKq6XL1zrV7MMd\nGw5XbQXLuvP2On21370lWOZTWDb4CSUp/p7aAEiShO7ymejuzkT+vw+wvP48cmO9+xrdsZbwwqZA\nbbsDX9kn+MOWQU2bi55mI9HTxqslFAX+vLw8li1bxtKlS9mwYUOH1z/66CPuu+8+7r//fu6++25+\n//vfU1dXp7rYQKIkxd9bGwApMQndw8+BPgTLE8uQiwrc0+imtYSnNgVq2x34yj7BH7YMatpc9DQb\niZ42Xi3h8lKPxWLhL3/5C4888gjXXnstWVlZpKamEhX1c9boiBEjmDFjBjNmzKBfv36cPXuW6dOn\nKxIQDJd6zqHn9d0lXab4e2p50B4pJARp3MVIplgsrz8P9XUwbJTLhC9r/+5aS7irT4127L9Oq6XL\n1zrV7MNZvc5sOFy1FSyXJtrr9NV+V1unVvH2Uo/LwH/kyBGOHz/OlVdeiU6no76+npMnT5KSkuK0\n/AcffEBaWhrnn6/sOnUwBP78iiYuHxzR4Xp5YUUDA6IMAHxbWs/UodFdlnEHKSERadJk5K2bkD/b\niDRsFFJkdKflvy2t5+rR/THQ6rR/tfSp0Y79m0vtefOVTjX7cFav2SKTYDSQHNPbrbaCJVC11+mr\n/e4twTKfPvfq2blzJ9988w0LFiwAYOvWrRQVFXHrrbd2KNvc3MzChQt56aWXiIiIUCSgp1g2eIos\ny23Bf8NbSFf+Fmn6NUh659dCgyXdXOhUj2DQCEKn2nhr2RCikg4AcnNzSUlJ6TTo5+fnk5+fb3ue\nkZHh9SeXPzAYDIHVefX1tE5Ip+HVZ5H3f034gnvRDx7SoVjAdSpE6FSPYNAIQqcvyM7Otj1OTU0l\nNTVVcV2Xgd9kMlFZWWl7Xl1djclkclr2q6++Ij09vdO2nIkLhk9XTZwFhEciL30ceftmap+4E2nK\nVUhXXY8U0stWRBM6FSB0qkcwaAShU20iIyPJyMjwuL7LX1GSk5MpLS2loqKClpYWduzYQVpaWody\n9fX1FBQUMGHCBI/FCLpGkiR0l/0S3aMrkX88iuXJO5F/OBxoWQKBIMhwGfh1Oh3z5s0jMzOTu+66\ni/T0dBITE9m8eTOffvqprdzu3bsZO3YsBkPgfpjxNdY0c/t0c/vnztLN1Ujrtz621pP6xlB/2wPs\nnTwXy6pMLO+tdbru35u0eE/qujs/wZK2747OYBmTu3hy7GsRNfdPV+9R0LYNh6J1U+PGjWPlypW8\n+OKLzJo1C4AZM2Y4LNmcPHkyS5cu9Y1KjWCfabg+r4Iyc7PDc2fp5mqk9afE9iZrXzlZe8tIie2N\nubmVt7+pZFT6BHSPvwT1ZiyPLKb5q8+x/63em7R4T+q6Oz/Bkrbvjs5gGZO7eHLsaxE194+r96iW\nbTiEZYMCrEu8rEvOsg9UMXNYNH/bdpIbx8Xy8aHTnaabq5HWP9QURn5ZPUgSw2PCHNqQQsOQLpyE\nNGQ4Lf/zBpY925CShiFFRnuVFu9JXaXz034+tZa2b8UTnf4ek7+WH3py7AdCpytc7R93dLp6j3pq\nw6EEYdngZ6xp5ss+KWbhxHiWfXLMZbq5Gmn9GRf0I2N0TKdtSMmjiPzLK0gX/gLLMw9heT8LubHe\nq7R4T+q6Oz/Bkrbvjs5gGZO7eHLsaxE194+r96hWjwUR+N3Emmb+wlXnsWZ3GS9cleQy3VyNtP7s\nA5VkH6zqsg1Jr0c37Wp0f34Jas9geWQxtTu+JKeg63pq6nZ3foIlbd8dncEyJnfx5NjXImruH1fv\nUa0eCyLwu4H1Gt3sUSY2HTnLw5MT2XTkDLNHmRyuGzqrM3dcLPFGA3PHxXZatrN6EQY9SBLIMhEG\nvcs2pKi+6G69k/pb72X9t5Xc8OlK4koOK+7bU93uzo+nc+Nv3NEZLGNyF0+OfS2i5v5x9R7N2ltG\n1r5yTR4L4mbrCrCu7c0tMdvSylNie2M06DE3t9qeF1Y0kDbQ6FDXWsf+K561TvuyndWzPgZs9Zy1\n0X4Ncm6JmRExoUR8+zXyv96ExCTqr72JQ7q+XfbtqW6l89N+Pt2dG3/hiU5/j8lf6849OfYDodMV\nrvaPOzpdvUe3FdcgyXBp0s++ZmodC95m7orArwCtHLSu6EqnfK4Z+fP/Rf73/yBNuBTp13/o0vvH\nl3SH+dQKwaARhE618Tbwi0s9PQSplwHdzNnonnwZdHosjy7C8tE7yPXdyz5bIBC4RgT+HoZkjEL3\n+9vQPfgsVJZhWb4Ay/9mIzc2BFqaQCDwEyLw91CkuAR0t96J7r6n4OSPWB6aj2VTDnKTdzd9FwgE\n2kcE/nY4TeluanHL5sAflgXe6LRHSkhk31ULqf/Tk8hHC9n9t6ep3fy/1NbW29pSatWgdBw7i89o\nxtZADUsNpfVcpfj7cw4CZcHQft5yS8yUmZsd+tOKrYGvCaS9hwj87XCW0r12d4lbNgf+sCzwRqez\ntt4uD6OD7SytAAAgAElEQVRh3n2MmvsHso7ryHr9I0bs+ze1Z2oUWzUoHcfo/kbN2BqoYamhtJ6r\nFH9/zkGgLBjaz9ugaAOZW04wKLrN40tLtga+JpD2HsKyoR3OUrrn/2Kw7c5WSuoqTWtX21JBqc6u\n2kpO6k+BJQrJFMuwk/lkf32UufJRjIMHI4U5PyDdHUdkeG+GROs1YdXQlfau0ve9sbRwZcPhDp5a\nIXhrweAundlf5BRUs2BCPDkF1QE/Fux1+gNv3v/CssEHdEizDlV+vxp/WhZ4o7OrtjIu6EfGxMEs\nCL2C2ddPJ6KlActjd2B562XkcufLb90dh5ZS2dWw1HDX0kKJDYevCZQFQ/t5izcaNHMs+JtAvQ9E\n4HdChzTrpha36/rDssAbnV21ZZ96vuGURP1189qWgRqjsPz1PlpXZSJ/942DE6i749BSKrsalhru\nWlooteHwJYGyYGg/b2XmZs0cC/4mUO8DEfjb4Syle+3uErdsDvxhWeCNzq7a6sweoi4sEt3sueie\nWos0Jg3LP1/F8uc/Ydm+mdq6BrfGYW5q0YytgRqWGu5aWnhiw6E2gbJgaD9vs0eZyNxywnbmryVb\nA18TSHsPkbnbDmcp3ZKhN3t+qFBsc6A0rd2b9H5vdHbVllJ7CFmW4bs8LJ9uJLdaZtTY4RivmIFk\n6udyHPnVrZxnRBNWDV3tgykpCZ3+BuWNpYU78+wKTzNNvbVgcJfO7C9yS8wMijZw/Gyzrb9A2nb4\nM3PXm/e/sGzwA8GSxh0onXLpCeTPP0betRWGjUJ3+UwYPR5J18mPu2I+VSMYNILQqTbCskEQcKT+\niehuWIju6deRxk7EsvFdLA/Ox/Lxu8hnqgItTyAQtMPzZSACQTuk0DCky34Jl/0Sufh75K3/xvLY\nHTD8AnTp02D0RUgh4pATCAKNondhXl4e69atQ5ZlpkyZYrvvrj35+fm88cYbtLa2EhUVxWOPPaa6\nWEHwIJ03FOnGxcjX34K8exuWTf+CN1chTbyclum/Ro6JR5KkQMsUCHokLi/1WCwW1q5dy/Lly1mx\nYgU7duygpKTEoUx9fT1r167lgQceYMWKFdx5550+ExysqJGu7yzFe1txDduP1bjcpkYquCdjkMLC\n0V0+E/39f2PfvEzqwiKpW/FI24qg/+RQW1lFbom5y/T13BIz24prHF43N7ey/ViNT60V7K0lrHPa\n1Xh9YeNg7deZtcK24hq+KHK8lKam3USgLAW82d/u9tNhfB7Ynihq14t5c9aet7gM/EVFRSQkJBAb\nG0tISAjp6ens2bPHocz27du5+OKLMZlMAERFRTlrqkejRrq+sxTvvJNm9pfWudymRiq4t2MYOSyR\ntwdMRvfMm+j+MJ+6kpOsf/MThr/7LCMO7WD9nhKnmlNie5N30kzWvnJbYMzaW8b+0jqfWisk9Q2z\n2RnknTSzp8Tc5Xh9YeNg3ZfOrBXyTprZe6LG7f2sVGegLAW82d/u9qOW7Ymrdr2ZN2fteYtLy4Yj\nR45QU1NDWloaAOXl5ZSUlHDhhRfaymzbto2mpiY2btzIpk2bMBgMnHfeeYoEBMMv6GqkcauRru8s\nxfum8XFcmBDR1m4/I+v3nXLYpmYavLdjsNX/ppKBSQPIls5n7q/GExkVSa+DexixNZv1J0MYVHOC\n7HIDc8f3x2jQY9DrSI0PJ++kmdySOvaeNKPX6bhlfJxHc6ZUZ/bBKqYPMfK3bSe5aXwcRVUNXY7X\nFzYO1n3pzFrhpvFxpA+N5fXdJW7tZ6U6vbEUaI877yFv9rc7qGl74qpdb95/ztqbkpLglUaXyzl3\n7tzJN998w4IFCwDYunUrRUVF3HrrrbYyr7/+OkePHuXRRx+lqamJhx9+mAcffJD+/fs7tJWfn09+\nfr7teUZGRlAEfoPBoJp/R2lNEze88y3v3DAGwPa4f1SoR21Y6yndpoUxVDVauH7d3g515KZGju/c\nxc3fhbNm/wsMGDIIw6TJhIz/BbrIaFu/gCpzplTnymtSWPpRoeLxetKXqzm1vm6vpX9UKAaDgR8r\na1U7jtQaT3s8eQ95s7896eedG8YwuF+kT97rami3b2/YwH5kZ2fbXktNTSU1NVVxWy4D/+HDh3n/\n/fdZvnw5ABs2bABw+IF3w4YNnDt3juuvvx6ANWvWMG7cOCZNmuRSQE9ax2+fLZl9oBIkiYzRMeQU\nVCs+I7Bvw1oPYH1eBTdOGMxbe3502GZfTo2zJW/HYG5uJbvgLP8v2dihjsPYDpQzRz5K+P7tcOhb\n6gaPYN35v6KlbyyEhtFLr/wM0NmcKdU55bzePLfjFHelD+DjwmqX4/W0r67mFNr25cxh0TYtm46c\nYe64WCKNRlZv/8Ht/axUpyfjcYa77yHr5Z0WC8jIbu1vd2g/vtsvPR+52fubEqk1b52198Ss8V7p\nc3mNPzk5mdLSUioqKmhpaWHHjh22yz5WJkyYQGFhIRaLhaamJo4cOUJiYqJXwrobaqTrO0vxztpb\nRta+cuaOi6V/VGiHbWqmgns7Bmv9eRMHdtDVYWwXJfB2yHAabruf+r+8zhsjr0Oqr+OP/36KP366\nAvnYEbK+PEJt4zm350ypzt+NjbfZGXxcWE2LhS7H6wsbB+u+dGatkLW3jDVfH/eZ3USgLAWsQR9J\n4rYJ8cyf0B9k2XbNX81+1LI9cdWuN/PmrD1vUZS5m5eXR1ZWFrIsM3XqVGbNmsXmzZuRJInp06cD\n8NFHH7FlyxZ0Oh3Tpk3jV7/6lSIBPeWMX410fWcp3tuKa5BkuDQpyqbTfpsVNdLgvR2DtU5CTB/b\nfFrrAJ2mrwM0tFi4MCGCiBAJfjiMOS+Xfd9XENZYy4TB0ZA6HmnUOKSISKd9emKtUGzGZi1hndNx\nAyI6Ha8vbBys/Yb10nWwVmhosdA7LIy0eIPi/tzR6Y2lQHvceQ/llpht+9v+22DeyTrCeulUs3JQ\n0/bEVbvevP+ctScsG/xAsKRx90SdctlJ5IP7kPP3wZF8SBiElDoeKfVCOH84kt7zr9fBMJ/BoBGE\nTrXxNvCLNEpBUCPFD0CKHwDTrkY+dw6KCpDz92N5ew1Ul0PK2LZvAiMugPgBImlMIEAEfkE3QurV\nC0aORRo5Fn57M/KZauSC/fDdN1g+fg+QkYZfACNGI6VcALEJ4oNA0CMRgV/QbZH6mJAumQaXTGuz\nka4oRT50AA4dwLLxn4DU9gEwfDRS8ijoP1B8EAh6BMKdswfij1T89n3klpgpMzc79NGZTYCSdH1r\n+/bl7W0V7G0OckvMSJKEFJeA7rJfovvj3eiezkJ3z3/DsFQoPMDu19+k9t55tL70JJZP3kc+dJDa\nmjpFc+KPFP2u2uus/D+/rbDVs/637oP229XGfr/klpgxN7U43S+ejNdVv9a2PLVG0QK+fo+KwN8D\n8Ucqfvs+BkUbyNxygkHRhi77VJqub5/JmHfSzGt7ythzvJY9JWZe3V3qYHPgbFySJCHFD0B3+Ux0\nt91N6r33886sR6m/eBrU1lD7r3dY/VwWw9/8byzvvoZl91bk8pM4WwvhjxT9rtrrrPzUIdG2OVqf\nV0FMuJ7MLSeICdc7bPeFBYP9fhwUbWDN18c73S9qzp8a1ihawNfvUbGqRwHB8ku/OzrVTjBR0of1\nv32iWWdJQ0qSd6ztzxwWzbPbT5LUJwxZlik+28w9l/6c5KR0XO31Lpw4EPnIAeSi75CPHYZjRdBY\nD+clI52XjJSUDOclQ0wcdecsPk3Y6aw96z7vrLz9HD234xQLJ8azZneZQxKYr27wbb8f0ekpqqzr\ndL+oeTx6k2Sopfd6V3MilnP6AS0dDF3hrs4yczPzPzzKq9cOId5ocF3BA9r3obRPazmgy7LWcn+Z\nMYiHNh8HsD32ZFz2+pITYjrMp1xzBoq/Ry4+gnysqO3DoLUFkpKpGDSKBQ1jeOXSSOIHJSDpvPtC\nrWSu7Pd5Z+Xbz5E38+PpGMD1flHzeLRvC1Dcrtbe653NiQj8fkBrB0NniDN+dc/4labvy2eqMH9f\nxPqiJmZV5bLhXAJzjv6biP5xSIlJkJiENPCn/+ERHmkRZ/zu9SvO+LvGpTunr9HKJHeFGu6c/kCp\nTvsUcFPvXrbriSmxvTHo1fnZp30f1mv8CybEM7hfJEOi9U77tE/Xn5cWz0UDjeSdNJNXWk9qXLit\nbPs3RZ+wXkiAXqejb5ie70838dvUGLIPVCkaV2dzMsxkcFm3ThfK26d6ceOUFGImpTNy/CjeNk1g\n5LiRGPTA8R+Qd25B/tebyFs3IRd+CyeOIZ+pbvu2EBaOFNLLpRZn4wgNDaXa3OC0vNXJcfYoEx8f\nOsON4/rx0s5S7kpPYNORsz8FRmXz4y72+/H3Y/rx/ZlzGENwul/UPB7t2zLodeSV1oMsM3FQJGP6\nR7hsVyvvdVdzEhkZ6bqRLhBn/ArQ0llAVyjVqXZKuZI+ckvMDIo2cPxsM1NSEmxnqc5sApSk61vb\nt1oXXJgQwf5TdTZbBWt5axlX4/ImfV/pfMoWC1SWwvFjyCd/hFPHkU+dgPISMEZB/0FICYnk9hnO\nyMExGAcNQoqM7rQ9aNvnXxSectr/xsJqfp1iorCiwTYP1n1gfa50ftzFfj8WVjQw4fxYas1mp/tF\nzePRW1sRrbzXXc2JuNTjB7RyMLhC6FQXf+mULa1QVfHzB8Gp48ilbf+RdBCXgBSbAHFtf9JP/zFG\nERUVJeZSRYJFp7BsEAiCHEmnh9j+ENsfacwE23ZZlqH2bFviWfkpKD8FB/dhqfjpsaWV2v4DscTE\nt9WPS0DqFw8xcdC3n7ixvaBTxJEhEGgUSZIgqg9E9UEamtLhdbmult51NdT9UAQVp+DQQSxffdb2\n7eHs6ba6MbFIpjjoF/fz45ifHht8c2MTgfYRgV8gCFKkiEhC+g9AFzeww2tySwucqYKqCuSqcqgq\nh6OHseTugMoyOF0JvSOgbwz0iUHqEwN9TXaP27YTHiFsLLohIvALBN0QKSQE+sVDv3ichW3ZYoGa\n03C6Gs5UIZ+pgtNVcDgfy5kqONO2ndaWtg8A+w+HqL5t30Ki+kBUdNs3C2NU2yUrQVDQowO/P1a3\nBDOBnp9A9O+Pm2j4cgz2q53a37jFfiWNpNPZAjoMQ+qkbm1NHYU/VpAin+W78jrSmk+1fVsoLmJ3\nUwQjq44QcaYcGuog3Ehdnzi+MyUzIbTOdpmKyGjOxScg9wptW71kjITQ3j77JtHVijLrnHuyD5TO\nrZK6/lxh5YweHfita2PbJ7uocWuz7kCg5ycQ/dv3GQle9+nvMVj7mz3K1CF5zlW/TusW1jJ71ADe\nLghj7mWx6Ow+wFLtxhKhB/PpM7zzbRVzYuqg4QzU/PR36jhNebuwnK6E2hqoqwGLBSIi2/6Mbf8l\nY1S755EQEWV7TkSkohvrtJ9zaw7Jw5Pbbgfr6T5Qc25nDosmc8sJ7kpPcNjur/dWj1/OqSRjMFiW\nePlCpy8yfLWWYdxZn64yjN1tzxdjcDaX7bN13cnSdbeuuxnGVuTmJqgzt30ImGuhrhbZXAvmGqir\nBXMtcl3bdutz6s3QywC9w9t+nwiPgN4RbdnQ4RE/bTdCeAR1hgjePtuHWYN6saEihFnDo9jw4zlm\npcay4TvlOr2dn67qepNFLdbxq4Arj5CeHPhBfU8fLXoK+bpPX42hs7ls78/jTr/u1nXXU8hTZFmG\npkaor2u7tNRQB/V1yPV10FDf9sHQYH1cR1kjLOx3DWu+f524s6WUt/Zi4YR7WZP3AnFSM4T1/vkv\nNAwprDe9IqM4p9PbbW/7L9keh1Emh7Jgu5n/vjyO5VvLvZpbT32T/BL48/LyWLduHbIsM2XKFGbN\nmuXwekFBAU8//TTx8fEATJw4keuuu06RgEAHfnHG3zXijF+c8fvijN/XdOYTNWtEFBvyq5gzpBfG\n1uY2t9WmBmhsQG5sJAwLjWfPQGPjT9vrkRsb2j5wGhuoa27l7T5p/PLUbl5IupZlBf/kPwMnMefk\nFiL0gMEAhlCHP+mn/3WhEazXJTMztJrnm4ayMLqcNeb+3Blfw3/qIpkz0IKxt6HtW02vXm1thTg+\nt/6A7vPAb7FYWLp0KY8++ih9+/blwQcfZNmyZQwc+PMSsoKCAjZu3Mj999/vtoBABn77a33tr7/a\nH7w9NfArnR9f6fRV/0r7TIjpw6mqM1716esxtJ/LzgKekg8dd+u6MzZ/vofa6ygzN9uu8ccbDR7r\n7PTDZFgkG76rZk5yGEb5HDQ32f01Izc3UdfQzPqqCGYbysmp68NMTvH8uaHc2fINm+QBzKovYEOv\nZOacziWi2Qznmn/6O2f3uBl0OggxMOhf27yaI5eB//Dhw3zwwQc89NBDAGzYsAHA4ay/oKCAjz76\niAceeMBtAYEM/EpXXPTUwO+rFSla8hTqqk9750utruppP5dqrjxxVdedsfnzPeTNqp6udAZ6VY8s\ny9DaCueaGTg02dPpARQE/p07d/LNN9+wYMECALZu3UpRURG33nqrrUxBQQErVqzAZDJhMpm48cYb\nSUxMVCQg0Jd6lNBTA7+vEDrVIxg0gtCpNprw6hkyZAgvv/wyoaGh7N+/n2eeeYaVK1d2KJefn09+\nfr7teUZGhtf2ov7AYDAInSoidKpHMGgEodMXZGdn2x6npqaSmpqquK7LwG8ymaisrLQ9r66uxmQy\nOZQJCwuzPb7wwgv5xz/+gdlsxmh0/MriTFwwfLoGy1mA0KkuwaAzGDSC0Kk2kZGRZGRkeFzf5V0O\nkpOTKS0tpaKigpaWFnbs2EFaWppDmTNnztgeFxUVAXQI+gKBQCDQBi4Dv06nY968eWRmZnLXXXeR\nnp5OYmIimzdv5tNPPwXafge4++67ue+++1i3bh3Lli3zuXCBZ+SWmDE3tzpsMze3klti9l9/TS0+\n689tLW6OXWkb9uWsj+3LeTrnuSVmthXXOGgwN7fyxr5yth+rcanLk/7cmbPOyu8sPuOyra5e9+Vx\n66ztbcU1bD9W4/CatT+lmrtqX6n2zup6i6L7mo0bN46VK1fy4osv2lbzzJgxg+nTpwNw5ZVXsmLF\nCp5++mkyMzMZNmyY18IEvsGaOm5/MFtv6eav/tbuLvFZf+5qcXfsStuwL5cS25usfeVk7S0jJba3\nV3OeEtubvJNmsvaVt32YNLWQtbeMqoYW9pfWqb5f3Z2zzsqP7m902VZXr/vyuHXWdt5JM/tL6xgU\nbWB9XgVl5mbb7SyVavZ0DpXMp7eIe+4qQCv34XSFEp0Gva7DPVl9uS7eWX/zfzEYA96ftaihpaux\nO5tPpW3YlxtqCiO/rB4kieExYV7NuUGvIzU+nLyTZnJL6n46a5T5Y1o8FyZEqL5f3Z2zzsrHRIZD\n67ku2+qqL18etw77qp+R9ftOcdP4OC5MiCD7QBUzh0Xzt20nuXFcLB8fOq1Ys6dzqGg++0R7NWZh\n2aCAYPrBR6lOf9sg2PeXnBAT0PlUOvau5lNpG/blANXm3Nou4NCer/aru+22L28/l67a6up1Xx63\nztpWal+hRJc32tvX9XY5p3u3sBd0C8zNreQUVPPqtUPIKahW5ZqhW/01tfi0P7e0eDB2pW3Yl8s+\nUEn2wSpV5tzc3Er2gUomJ0UxY1gM2QerbL8h+GK/uttuV+VdteVNXTXG+M4NY2xtW7e9cNV5rNld\nxgtXJbmtWQ3tvhi3CPw9DPt09XijgbnjYh2uIfqjv7W7S3z+YaNUi7tjV9qGfbkIgx4kCWSZCIPe\nqzk3N7eStbcMJInbJsSz5NLBIMu8uqeMrH3lqu9Xd+es0/JNLS7b6up1Xx639m33jwpl7rhYsva2\nzefsUSY2HTnLw5MT2XTkjM0+WYlmT+dQyXx6i7jUo4DudKknUDcGse9PMvRmzw8Vfr/Zjbtjdzaf\nStuwL2d9DNjKeTrnuSVmGlosXJgQYbOVOFV1hv85WMVQUxiXJkUpGps7/bkzZ52VLzZDQ0NDl211\n1Rfgs+PWmU3HtuIaJBnCeum6tGdQMj/evOc6qzs8aZBXYxaBXwHdKfBrAaFTPYJBIwidaiOu8QsE\nAoHALUTgFwgEgh6GCPwCgUDQwxCBX9Bj8bd9hZbxdi78MZf2dgnW/2XmZqfb1dbniVWHJ/34CxH4\nBT0Wf9tXaBlv58Ifc2mfwbo+r4KYcD2ZW04QE653aqcQiPEFyzElAr+gx2K0W1Nv9WLxxz19tYi3\nc+GPubT2kVNQbbsn8MKJ8Ty34xQzh/Xp8taS/hpfsBxTIvALejRGg57Zo0zM//Aos0eZNPcG9Sfe\nzoU/5tLax7JPilk4MZ6HNh9n4cR4ln1yzGWf/hpfMBxTIvALejT+tq/QMt7OhT/msr2Nwl9mDOrS\nTkFNfZ5YdWj1mBKBX9Bj8bd9hZbxdi78MZfWPqw2CnelJ7Bmdxl3pSc4tVMIxPiC5ZgSmbsKCJZs\nPqHTPVyl0mtFZ1eopdFbKw9/zKW1D3vbhEHRBo6fbe6wvb1mpePrTKcnVh1dlfMWbzN3ReBXQDAE\nABA61SYYdAaDRhA61UZYNggEAoHALUTgFwgEgh6GosCfl5fHsmXLWLp0KRs2bOi0XFFREX/4wx/Y\ntWuXagIFAoFAoC4uA7/FYmHt2rUsX76cFStWsGPHDkpKSpyWe+eddxg7dqxPhAoEgp6Hr6wSOiu/\ns/iMCqrdw95qYltxje3GM9bt24/VqG754DLwFxUVkZCQQGxsLCEhIaSnp7Nnz54O5f79738zadIk\noqKinLQiEAgE7uMrq4TOyo/u79+bA9lrGRRtIO+kmdf2lJG1t4xB0Qay9paxv7ROdcsHl4G/urqa\nmJgY23OTyUR1dXWHMnv27OGXv/ylquIEAkHPxldWCZ2WDw3xx7CcaskpqObqlL4UVTfQ2CLz9jcV\nIEncMj5O9exfVUa5bt065syZY3ve2QrR/Px88vPzbc8zMjKIjIxUQ4JPMRgMQqeKCJ3qEQwawTud\nkcCNE3pzwzvf8s4NY+gfFepVua7KB2o+7bWsvCaFpR8VAnQ5juzsbNvj1NRUUlNTFffnch3/4cOH\nef/991m+fDmA7cfdWbNm2crccccdQFvAr62tJTQ0lAULFpCWluZSgFjHrx5Cp7oEg85g0Aje6bTP\n2O3KiE1pua7KJ8T0Cch8WrXMHBbNs9tPktQnDL0Oeul1Ts/4fb6OPzk5mdLSUioqKmhpaWHHjh0d\nAvqqVatYtWoVf//735k0aRJ//OMfFQV9gUAg6ApfWSV0Wr6pxR/Dcqpl9igTHxeeJtnUm7AQiTlj\nY0GWydpXrrrlg8tLPTqdjnnz5pGZmYksy0ydOpXExEQ2b96MJElMnz5dVUECgUBgpbCiweHM3Xo9\nvL0FgtJyrsofLDWTavKvm6ZVS2FFA+MGGLkwIcK2/ZaL4sk7Wae65YOwbFBAT/g67U+ETvUIBo0g\ndKqNsGwQCAQCgVuIwC8QCAQ9DBH4BQKBoIchAr/AJe6mw2uR7jAGrdKd5nZn8ZluM5auEIFf4BJ3\n0+G1SHcYg1bpTnM7ur+x24ylK0TgF7jE3XR4LdIdxqBVutPcGkNDus1YukIEfoEijAY9s0eZmP/h\nUWaPMgXlG6E7jEGrdKe57U5j6QwR+AWKMDe3klNQzavXDiGnoFpzN49WQncYg1bpTnPbncbSGSLw\nC1zibjq8FukOY9Aq3WluzU0t3WYsXSECv8AlXaXDBwvdYQxapTvN7cFSc7cZS1cIywYFBEsat9Cp\nLsGgMxg0gtCpNsKyQSAQCARuIQK/QCAQ9DBE4BcIBIIehgj8AoHALbqTRYM9uSXmDjdi0dK4nM27\np4jALxAI3KI7WTTYkxLbm7W7SzQ7rvbz7g0i8AsEArfoThYN9hgNeuZNHKjZcdnPu7eIwC8QCNym\nu9oaGENDND0u67x7i8t77gLk5eWxbt06ZFlmypQpzJo1y+H13Nxc3nvvPSRJQq/Xc9NNN5GSkuK1\nOIFAoE3a2xpo6czYG8xNLZoel3XeLxye5FU7LgO/xWJh7dq1PProo/Tt25cHH3yQCRMmMHDgQFuZ\nCy64gLS0NAB+/PFHnn/+eZ5//nmvhAkEAm1ib9Fgf/lBa0HSXczNrWTnlWh2XPbz7i0uL/UUFRWR\nkJBAbGwsISEhpKens2fPHocyoaGhtseNjY1IkuS1MIFAoE26k0WDPYUVDcybOFCz42o/797g8oy/\nurqamJgY23OTyURRUVGHcrt37+af//wnNTU1PPDAA14LEwgE2iRtoLHDNqNB73R7MJE20IgxNITa\n5p+3aWlcaupQdI1fCRMnTmTixIkUFhby7rvv8sgjj6jVtEAgEAhUxGXgN5lMVFZW2p5XV1djMnX+\nq3JKSgrl5eWYzWaMRsdPqPz8fPLz823PMzIyiIyM9ES3XzEYDEKnigid6hEMGkHo9AXZ2dm2x6mp\nqaSmpiqu6zLwJycnU1paSkVFBX379mXHjh0sXbrUoUxpaSn9+/cH4OjRo7S0tHQI+p2JCwYnvGBx\n7BM61SUYdAaDRhA61SYyMpKMjAyP67sM/Dqdjnnz5pGZmYksy0ydOpXExEQ2b96MJElMnz6dXbt2\nsXXrVkJCQjAYDNx5550eCxIIBAKBbxF+/AoIprMAoVM9gkFnMGgEoVNthB+/QCAQCNxCBH6BQCDo\nYYjALxAIBD0MEfgFAoGghyECv0AgEPQwROAXCASCHoYI/AKBQNDDEIFfIBAIehgi8AsEAkEPQwR+\ngUAg6GGIwC8QCIKW3BIz5uZWh23m5lZyS8wBUhQciMAvEAiClpTY3qzPq7AFf+vtCVNiewdYmbYR\ngV8gEAQt9vfGLTM3a+oeuVpGBH6BQBDUGA16Zo8yMf/Do8weZRJBXwEi8AsEgqDG3NxKTkE1r147\nhJyC6g7X/AUdEYFfIBAELdZr+nPHxRJvNNgu+4jg3zUi8AsEgqClsKLB4Zq+9Zp/YUVDgJVpG5e3\nXk9eHZMAAAgsSURBVBQIBAKtkjaw4729jQa90+2CnxFn/AKBQNDDUHTGn5eXx7p165BlmSlTpjBr\n1iyH17dv386HH34IQFhYGLfddhuDBw9WX61AIBAIvMblGb/FYmHt2rUsX76cFStWsGPHDkpKShzK\nxMXF8ec//5lnnnmG6667jldeecVnggUCgUDgHS4Df1FREQkJCcTGxhISEkJ6ejp79uxxKDN8+HDC\nw8MBGDZsGNXV1b5RKxAIBAKvcRn4q6uriYmJsT03mUxdBvbPPvuMcePGqaNOIBAIBKqj6o+7Bw8e\nZMuWLcyZM0fNZgUCgUCgIi5/3DWZTFRWVtqeV1dXYzKZOpQrLi7m1Vdf5aGHHsJodL6UKj8/n/z8\nfNvzjIwMBgwY4IluvxMZGRloCYoQOtUlGHQGg0YQOtUmOzvb9jg1NZXU1FTllWUXtLa2ynfccYdc\nXl4unzt3Tr7nnnvk48ePO5SpqKiQlyxZIh86dMhVcw689957bpUPFEKnugid6hEMGmVZ6FQbb3W6\nPOPX6XTMmzePzMxMZFlm6tSpJCYmsnnzZiRJYvr06XzwwQeYzWbWrl2LLMvo9Xr++te/evQpJhAI\nBALfomgd/7hx41i5cqXDthkzZtgeL1y4kIULF6qrTCAQCAQ+Qf/4448/HkgBcXFxgexeMUKnugid\n6hEMGkHoVBtvdEqyLMsqahEIBAKBxhFePQKBQNDDEIFfIBAIehgBs2V2ZfzmT1avXs2+ffuIjo7m\n2WefBcBsNvPCCy9QUVFBXFwcd955p82WIicnhy+++AK9Xs/NN9/M2LFjfa6xqqqKVatWcfbsWSRJ\nYtq0aVx11VWa03nu3Dkee+wxWlpaaG1tZdKkSVx//fWa0wltPlQPPvggJpOJ+++/X5MaARYvXkx4\neDiSJNlWzGlNa319PWvWrOH48eNIksTtt99OQkKCpjSePHmSF154AUmSkGWZsrIyfve733H55Zdr\nSifAxx9/zBdffIEkSQwePJhFixbR2Nionk6vF5R6gLPcgBMnTgRCiizLsvzdd9/JP/zwg3z33Xfb\ntr311lvyhg0bZFmW5ZycHHn9+vWyLMvy8ePH5XvvvVduaWmRy8rK5DvuuEO2WCw+13j69Gn5hx9+\nkGVZlhsaGuQ//elP8okTJzSnU5ZlubGxUZbltv380EMPyUeOHNGkzo0bN8orV66Un3rqKVmWtbfP\nrSxevFiura112KY1ratWrZI///xzWZZluaWlRa6rq9OcRntaW1vl+fPnyxUVFZrTWVVVJS9evFg+\nd+6cLMuy/Nxzz8lffPGFqjoDcqlHifGbP0lJSSEiIsJhW25uLldccQUAkydPtunLzc3lkksuQa/X\nExcXR0JCAkVFRT7X2KdPH5KSkoA26+uBAwdSVVWlOZ0AoaGhQNvZf2trq02PlnRWVVWxf/9+pk2b\nZtumNY1WZFlGbrcGQ0ta6+vrKSwsZMqUKQDo9XrCw8M1pbE9Bw4cID4+nn79+mlSp8ViobGxkdbW\nVpqbmzGZTKrqDMilHmfGb/7e8a44e/Ysffr0AdqC7tmzZ4E27cOHD7eVc2Va5wvKy8spLi5m+PDh\nmtRpsVh44IEHKCsrY+bMmSQnJ2tO5xtvvMGNN95IfX29bZvWNFqRJInMzEx0Oh3Tp09n2rRpmtJa\nXl5OZGQkL7/8MsXFxQwZMoSbb75ZUxrb89VXX3HppZcC2tvvJpOJq6++mkWLFhEaGsqYMWMYM2aM\nqjrFrRcVIklSoCUA0NjYyHPPPcfNN99MWFhYh9e1oFOn0/H0009TX1/Ps88+y/HjxzuUCaRO6+85\nSUlJDt5R7dHCXAI8+eST9O3bl5qaGjIzM536WwVSq8Vi4YcffmDevHkMHTqUdevWsWHDhg7ltDKf\nLS0t5ObmdmomGWiddXV15Obm8vLLLxMeHs5zzz3Htm3bOpTzRmdAAr9S47dA0qdPH86cOWP7Hx0d\nDXTUXlVV5Tftra2trFixgssvv5wJEyZoVqeV8PBwRo0aRV5enqZ0FhYWkpuby/79+2lubqahoYGX\nXnpJUxrt6du3LwBRUVFMmDCBoqIiTWk1mUzExMQwdOhQACZNmsSGDRs0pdGevLw8hgwZQlRUFKC9\n99CBAweIi4uzmV1OnDiRQ4cOqaozINf4k5OTKS0tpaKigpaWFnbs2EFaWlogpNhofx31oosuYsuW\nLQBs2bLFpi8tLY2vvvqKlpYWysvLKS0tJTk52S8aV69eTWJiIldddZVmddbU1NgunzQ3N3PgwAEG\nDhyoKZ033HADq1evZtWqVSxbtozRo0ezZMkSTWm00tTURGNjI9D2be/bb79l8ODBmtLap08fYmJi\nOHnyJNAWuBITEzWl0Z7t27eTnp5ue641nf369ePIkSM0Nzcjy7JP5jNgmbt5eXlkZWXZjN8CuZxz\n5cqVFBQUUFtbS3R0NBkZGUyYMIHnn3+eyspKYmNjufPOO20/AOfk5PD5558TEhLityVehYWFPPbY\nYwwePBhJkpAkiT/84Q8kJydrSuePP/7I3//+dywWC7Isc8kll/Cb3/wGs9msKZ1WCgoK2Lhxo205\np9Y0lpeX88wzzyBJEq2trVx22WXMmjVLc1qPHTvGK6+8QktLC/Hx8SxatAiLxaIpjdD2Qbpo0SJW\nrVpF7969ATQ3lwDvv/8+X331FXq9nqSkJBYuXEhjY6NqOoVlg0AgEPQwROauQCAQ9DBE4BcIBIIe\nhgj8AoFA0MMQgV8gEAh6GCLwCwQCQQ9DBH6BQCDoYYjALxAIBD0MEfgFAoGgh/H/AeJ7FPNnaZ11\nAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(ms, signal, label='Signal')\n", "plt.plot(ms, counts / n_shots, 'x', label='Data')\n", "plt.ylim(ymax=1)\n", "plt.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Analyzing RB Data ##" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now pack our synthetic data up for analysis by **QInfer**." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "data = np.column_stack([counts, ms, n_shots * np.ones_like(counts)])" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Estimated p: 0.9925 ± 0.0020\n" ] } ], "source": [ "mean, cov, extra = qi.simple_est_rb(data, return_all=True, n_particles=12000)\n", "print(\"Estimated p: {:0.4f} ± {:0.4f}\".format(mean[0], np.sqrt(cov[0, 0])))" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nR9v3u7XRX5feucmY6A8P4wGPAczHPyyAjowMwr290cf6fmHAXPT6YQ30HPtxJmsHeZmn/0sH+wx9\nOfp+9fbLydUHAAAJCklEQVREf8D29HAWS6S3N/oarxe8GdHfY9uLXHid5+N90fe8i9/fXpS577V9\nv0fCH/+AjIQv/B658CvcP7e98Ly+H9S9PdHvTcqCzEyYdOFXRjTnR5MyiXg8kJePycuHnNz+72U8\nF4oiA65agOeWO2Dm7OgP/8iF9zGejz9TJAznu6G7K1oGfbxemJwD2ZOHXOy11kJHOzSfiebo22e+\nAiiYgsmY1O/5GT4fpr190O2Ju3j+3Z9h12zAvvJLInv+KvqPgbz8C/9IyKbfz4dkj/oe35PwTSal\nGAKBAC0tLbGvQ6EQgUCg33Nqa2upra2NfV1eXs7MmSm4SchnN0d/iaTCNSO/jILPl75nJqdzdjvY\nP7iGNTP69/uFP09onrHYu3dv7M+lpaWUlsZ5uLJNgnA4bL/4xS/apqYm29PTY7/yla/YU6dODfma\n559/PhlRUkb5naX8zknn7NYq/0CSMmLweDx84Qtf4LHHHsNay+23305xse4jKyKSDpK2xrB06VJ2\n7dqVrM2LiEiSuObsmLjnxBym/M5Sfuekc3ZQ/oEYa8e88iIiIuOQa0YMIiLiDioGERHpx7GL6J07\nd449e/bQ2NhIZmYmW7dujR251NnZyTPPPMOpU6cwxrB161auvvpqXnjhBV566SUKCgoAuOuuu1i6\ndKlrstfX17Nz506MMVhraWxs5LOf/Szr16+no6ODnTt30tzcTFFRERUVFeTk5CQ8e7Lyp2rfx5Mf\n4Oc//zlVVVUYY5gzZw7btm0jIyMjLfb/UPnTZf//4he/4KWXXgJg7dq1rF+/HiBt9v9g+VO1//fs\n2cOhQ4coKCjgySefHPA5P/jBDzh8+DBZWVncf//9lJSUDPm5x7TvE34ArB34PIa6urp+z/nxj39s\nX3jhBWuttadPn7bf/OY3Y9/bvXu3/dWvfmWttba3t9eeO3fOWmvt3r177T/+4z8mI3LCsl+8nXvv\nvde2tLTEXrNv3z5rrbWVlZX27/7u79Iqfyr2fbz5g8Ggvf/++21PT4+11tqnnnrKVldXx17j9v0/\nVP502P8ffPCB/fKXv2zPnz9vw+Gw/eY3v2kbGhpir3H7/h8qf6r2/zvvvGNPnDhhv/zlLw/4/UOH\nDtlvfetb1lprjx07Zr/+9a9ba4f+3GPZ90mZSrr4InoZGRmxi+hdrK6ujuuuuw6AmTNn0tTUxNmz\nZ+ns7OTIkSOsWbMGAK/X26/dbJLXyuPJfrE333yT6dOnx64ZVVNTw6pVqwBYvXr1Zdt0e35I/r5P\nRP5IJEJXVxfhcJju7u7YGffpsv8vzT9lyscXaXP7/j99+jTz589n0qRJeDwerr32Wl599VUgPfb/\nUPkhNft/4cKF5ObmDvr9gwcPxvbj1VdfTWdnJ62trUN+7rHs+6QUw0AX0QuFQv2ec+WVV/Laa68B\n0b/MlpYWgsEgTU1N+Hw+vve97/Hggw/y7LPPcv78+djrXnzxRb761a/yzDPP0NnZ6arsF9u/fz+3\n3HJL7Ou2tjb8fj8Afr+ftra2hGdPZn5I/r6PN38gEGDDhg1s27aN++67j9zcXBYvXgykx/4fKP/1\n118fe53b9//s2bM5cuQIHR0ddHd38/vf/z7231U67P+h8kNq9v9wBvt8Q33usex7xxafN27cSEdH\nBw8++CAvvvgiV111FR6Ph0gkwokTJ1i3bh1PPPEEWVlZ7Nu3D4B169axe/dutm/fjt/v54c//KGr\nsvfp7e2lpqaGFStWDLoNJy+nPJb8btn3MHj+c+fOUVNTw/e+9z2effZZurq6eOWVVwbchhv3/1D5\n02H/z5o1izvvvJPHHnuMxx9/nJKSkn7/XV3Mjft/qPxu2v/xGsm+d+wiepMnT2bbtm2xr++//36m\nT59OV1cXU6dOZd68eQDcfPPNsWLIz8+PPX/t2rU88cQTrsre5/Dhw8ydO7dfXr/fT2tra+z3vkWs\ndMmfin0PY8v/xS9+kenTp3P48GGKiorIy8sD4KabbuLo0aPceuutrt7/I8nv5v1/8X8/a9asiU0D\n//SnP439K9bN+38k+VO1/4cTCAT6jWL6Rpq9vb2Dfu6x7PukjBjmz59PQ0MDzc3N9Pb28tvf/pay\nsrJ+z+ns7KT3wuWM/+Vf/oVrr72W7Oxs/H4/U6dOpb6+HojOdfcdMdDa2hp7/auvvsrs2bNdlb3P\nK6+8ctk0zLJly6iurgagurr6sm26PX8q9v1Y8y9atIjs7GymTZvGu+++y/nz57HW8uabb8ZuDuXm\n/T+S/G7e/xf/99O3VtLS0sJrr73GrbfeCrh7/48kf6r2P0TXMgZbzygrK+PXv/41AMeOHSM3Nxe/\n3z/k5x7Lvk/amc+HDx/mb/7mb2IX0du4cSO//OUvMcZwxx13cOzYMb773e/i8XgoLi5m69atsUXm\nkydP8uyzz9Lb28v06dPZtm0bOTk57N69m5MnT2KMobCwkHvvvTc2d+aW7N3d3Wzbto3du3czefLk\n2DY7OjrYsWMHLS0tFBYWUlFRMeQik9vyp2rfx5v/hRdeYP/+/Xi9XkpKSrjvvvtih6umw/4fLH+6\n7P9HHnmEjo4OvF4v99xzT+xyDemy/wfLn6r9v2vXLt5++23a29spKCigvLyc3t7eWHaA73//+xw+\nfJjs7Gy2bt3K3LlzB/3cMLZ9r0tiiIhIPzrzWURE+lExiIhIPyoGERHpR8UgIiL9qBhERKQfFYOI\niPSjYhARkX5UDCIi0o+KQURE+lExiIhIP0m7tadIujt16hTvvvsudXV1LFq0iLa2NjIyMli9erXT\n0USSSiMGkUEEg0FKSkpobm5m+fLlfOITn6CystLpWCJJp2IQGcTSpUt5/fXXWbZsGQAnTpzA5/M5\nnEok+VQMIkN44403uPbaawH4zW9+w6c//WmHE4kkn9YYRAbR1dVFa2sr77zzDm+88Qbz5s3jpptu\ncjqWSNKpGEQG8dZbb3HDDTewatUqp6OIpJSmkkQGcObMGX7+859z9uxZzp0753QckZTSHdxERKQf\njRhERKQfFYOIiPSjYhARkX5UDCIi0o+KQURE+lExiIhIPyoGERHpR8UgIiL9/H/57LXNuuW1pQAA\nAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "extra['updater'].plot_posterior_marginal(range_max=1)\n", "plt.xlim(xmax=1)\n", "ylim = plt.ylim(ymin=0)\n", "plt.vlines(p, *ylim)\n", "plt.ylim(*ylim);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that in analyzing, we have assumed that the true value of $p$ can be anything in the range $[0, 1]$, such that this will often underestimate the true fidelity. Including even a very modest assumption such as $p\\ge 0.8$ can help dramatically." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Estimated p: 0.9958 ± 0.0010\n" ] } ], "source": [ "mean, cov, extra = qi.simple_est_rb(data, return_all=True, n_particles=12000, p_min=0.8)\n", "print(\"Estimated p: {:0.4f} ± {:0.4f}\".format(mean[0], np.sqrt(cov[0, 0])))" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "extra['updater'].plot_posterior_marginal(range_max=1)\n", "plt.xlim(xmax=1)\n", "ylim = plt.ylim(ymin=0)\n", "plt.vlines(p, *ylim)\n", "plt.ylim(*ylim);" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAAEBCAYAAAC353MXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAACuxJREFUeJzt3cFrFPcfxvEnsepBEoZOpSUXN4mgsFBaCMRe3CBexCX0\ntL0Xvfc/KIX20EBP9dJbjyUUFkMusqElJDklVBD2kOgKQSEudGRM4krRTX6H0iXGTTL56e7M+rxf\np+w6kI/f5L2bGSd++3Z3d3cFwE5/2gMASAfxA6aIHzBF/IAp4gdMET9givgBU8QPmCJ+HOnly5e6\ndetW2mNk1u3bt/XNN9/ojz/+0NzcnKampvT333+nPdaRPkh7gG5aW1vT8vKyzp07p5MnT2pra0tX\nr15Ne6zMW1xcVK1WS3uMzDp//rwajYauXLkiSXry5ImWl5d17dq1lCc7nNU7/+7urprNpoaGhjQ+\nPq6lpaW0R8q8RqOh/v5+NRqNtEfJrPv37+vixYuSpM3NTa2trWlsbCzlqY5mFf+FCxf0+PFjjYyM\naHt7W81mM+2RMm9xcVFffPGF+vv7tbOzk/Y4mVSr1fTPP//o7t27+vXXX3Xz5k2dPXs27bGOZBX/\nq1ev1NfXJ0laWVnR5cuXU54o2+I41unTp3Xq1CkNDAxoc3Mz7ZEyaXt7W5cuXdLnn3+ur776Sr/8\n8kvaIyViFX+tVtOJEye0srKiOI453z9CpVLRixcvVKlU1Gw29ezZs7RHypynT59qcHCw9XhwcFCP\nHj1KcaLkrC74ra6u6vr168rn8z1xTpamer2u4eHh1jqtrq7yzt/GgwcPNDw83Ho8Nzen8fHxFCdK\nzuadv16va2lpSVEUpT1K5t27d09TU1M6c+aMJOnhw4fa2NjQwsKCnj9/nvJ02VGtVlWpVLSxsaE7\nd+7o999/V71e140bN9IeLZE+/jMPwJPNOz+A1xE/YIr4AVPED5gifsCUbfzVajXtEXoC65Rcr60V\n8eNQrFNyvbZWtvED7ogfMMUdfoCprv1iz3fffdetT5VIoVDQ/Px82mNkHuuUXBbX6ttvvz3wz/ix\nHzBF/IAp4gdMET9givgBU8QPmCJ+wBTxA6aIHzBF/IAp4gdMET9givgBU8QPmCJ+wBTxA6aIHzBF\n/IAp4gdMET9givgBU8QPmCJ+wBTxA6aIHzBF/IAp4gdMET9givgBU8QPmOraFt3IvmKxqDAMX3su\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "extra['updater'].plot_covariance()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", " SMCUpdater for model of type BinomialModel (based on RandomizedBenchmarkingModel):\n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", "
Current estimated parameters
$p$$A$$B$
$1.00 \\pm 0.00$$0.5 \\pm 0.0$$0.5 \\pm 0.0$
\n", " Resample count: 12\n", " " ], "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "extra['updater']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## [Advanced] RB With Gate-Level Simulation ##" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also synthesize data by simulating gates, instead of assuming the correctness of the Magesan *et al.* model *a priori*. We will do so here using QuTiP. Let's start by modeling each gate $S_i$ as the ideal unitary followed by a gate-independent noise channel, $S_i = \\Lambda U_i$. We will take $\\Lambda = e^{-0.08i \\sigma_x}$ to demonstrate that the RB model arises even when the noise is purely unitary, so long as the noise remains gate- and time-independent." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import qutip as qt\n", "from operator import mul" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/latex": [ "Quantum object: dims = [[[2], [2]], [[2], [2]]], shape = [4, 4], type = super, isherm = False\\begin{equation*}\\left(\\begin{array}{*{11}c}0.994 & -0.080j & 0.080j & 0.006\\\\-0.080j & 0.994 & 0.006 & 0.080j\\\\0.080j & 0.006 & 0.994 & -0.080j\\\\0.006 & 0.080j & -0.080j & 0.994\\\\\\end{array}\\right)\\end{equation*}" ], "text/plain": [ "Quantum object: dims = [[[2], [2]], [[2], [2]]], shape = [4, 4], type = super, isherm = False\n", "Qobj data =\n", "[[ 0.99361364+0.j 0.00000000-0.0796591j 0.00000000+0.0796591j\n", " 0.00638636+0.j ]\n", " [ 0.00000000-0.0796591j 0.99361364+0.j 0.00638636+0.j\n", " 0.00000000+0.0796591j]\n", " [ 0.00000000+0.0796591j 0.00638636+0.j 0.99361364+0.j\n", " 0.00000000-0.0796591j]\n", " [ 0.00638636+0.j 0.00000000+0.0796591j 0.00000000-0.0796591j\n", " 0.99361364+0.j ]]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lambda_ = qt.to_super((-1j * 0.08 * qt.sigmax()).expm())\n", "lambda_" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The value of $p$ for this gate then serves as the true value that we are attempting to learn:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.99148485558375188" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "qi.rb.p(qt.average_gate_fidelity(lambda_))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For simplicity, we'll take the preparation and measurement to be perfect— because this assumption is represented as a pair of QuTiP Qobj instances, it's easy to change. " ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [], "source": [ "rho = qt.ket2dm(qt.basis(2, 0))\n", "meas = rho" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For standard randomized benchmarking, however, we need to do a bit more work, since the ideal action of each sequence must be the identity. In particular, we need to be able to quickly find which gate we need to add to the end of each sequence to invert the previous gates.\n", "\n", "To do so, we will lean heavily on the presentation of the Clifford group used in the [**newsynth**](http://hackage.haskell.org/package/newsynth-0.3.0.2) Haskell package by Ross and Selinger." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Clifford Presentation as $\\mathbb{Z}_3 \\times \\mathbb{Z}_2 \\times \\mathbb{Z}_4 \\times \\mathbb{Z}_8$ ###" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from itertools import product" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Following the **newsynth** approach, we will represent each single-qubit Clifford gate $U$ by a tuple of integers $(i, j, k, l)$ such that\n", "$$\n", " (i, j, k, l) \\mapsto \\omega^l E^i X^j S^k,\n", "$$\n", "where $S = \\operatorname{diag}(1, i)$, $X = \\sigma_x = \\left(\\begin{matrix}0&1\\\\1&0\\end{matrix}\\right)$, $\\omega = e^{2 \\pi i /\n", "8}$, $H = \\left(\\begin{matrix}1&1\\\\1&-1\\end{matrix}\\right) / \\sqrt{2}$ is the Hadamard gate, and where $E = H S^3 \\omega^3$. This is a convienent presentation, as $\\omega^8 = 1$ and $E^3 = X^2 = S^4 = \\mathbb{1}$, such that each element of $\\mathbb{Z}_3 \\times \\mathbb{Z}_2 \\times \\mathbb{Z}_4 \\times \\mathbb{Z}_8$ represents exactly one single-qubit Clifford gate. This in turn makes it very convienent to randomly select Clifford group elements without having to worry that we have double-counted any gates due to our presentation." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": true }, "outputs": [], "source": [ "w = np.exp(1j * 2 * np.pi / 8)\n", "H = qt.snot()\n", "\n", "X = qt.sigmax()\n", "S = qt.phasegate(np.pi / 2)\n", "E = H * (S ** 3) * w ** 3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We'll port the **newsynth** presentation to Python by subclassing ``tuple`` with methods that implement multiplication and inversion, and that return an ordinary QuTiP ``Qobj`` representing each gate. These methods will depend on three lookup tables that represent the commutation relatons between the generators $E$, $X$ and $S$. First, we implement the **newsynth** table $(k, j) \\mapsto (k', l')$ such that $X^j S^k = S^{k'} X^j \\omega^{l'}$. This table will let us commute $X$ past $S$ in products." ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": true }, "outputs": [], "source": [ "CLIFFORD_SX = {\n", " (0, 0): (0,0),\n", " (0, 1): (0,0),\n", " (1, 0): (1,0),\n", " (1, 1): (3,2),\n", " (2, 0): (2,0),\n", " (2, 1): (2,4),\n", " (3, 0): (3,0),\n", " (3, 1): (1,6),\n", "}" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [], "source": [ "for k, j in product(range(4), range(2)):\n", " kp, lp = CLIFFORD_SX[k, j]\n", " assert (\n", " X**j * S**k -\n", " S**kp * X**j * w**lp\n", " ).norm() <= 1e-8" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, we'll implement the table $(j, k, i) \\mapsto (i', j', k', l')$ such that $X^j S^k E^i = E^{i'} X^{j'} S^{k'} \\omega^{l'}$. This will let us commute $E$ into its proper position." ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": true }, "outputs": [], "source": [ "CLIFFORD_XSE = {\n", " (0, 0, 0): (0,0,0,0),\n", " (0, 0, 1): (1,0,0,0),\n", " (0, 0, 2): (2,0,0,0),\n", " (0, 1, 0): (0,0,1,0),\n", " (0, 1, 1): (2,0,3,6),\n", " (0, 1, 2): (1,1,3,4),\n", " (0, 2, 0): (0,0,2,0),\n", " (0, 2, 1): (1,1,2,2),\n", " (0, 2, 2): (2,1,0,0),\n", " (0, 3, 0): (0,0,3,0),\n", " (0, 3, 1): (2,1,3,6),\n", " (0, 3, 2): (1,0,1,2),\n", " (1, 0, 0): (0,1,0,0),\n", " (1, 0, 1): (1,0,2,0),\n", " (1, 0, 2): (2,1,2,2),\n", " (1, 1, 0): (0,1,1,0),\n", " (1, 1, 1): (2,1,1,0),\n", " (1, 1, 2): (1,1,1,0),\n", " (1, 2, 0): (0,1,2,0),\n", " (1, 2, 1): (1,1,0,6),\n", " (1, 2, 2): (2,0,2,6),\n", " (1, 3, 0): (0,1,3,0),\n", " (1, 3, 1): (2,0,1,4),\n", " (1, 3, 2): (1,0,3,2),\n", "}" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [], "source": [ "for j, k, i in product(range(2), range(4), range(3)):\n", " ip, jp, kp, lp = CLIFFORD_XSE[j, k, i]\n", " assert (\n", " X**j * S**k * E**i -\n", " E**ip * X**jp * S**kp * w**lp\n", " ).norm() <= 1e-8" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The last table we will need is $(i, j, k) \\mapsto (i', j', k', l')$ such that $(E^i S^j X^k)^{-1} = E^{i'} S^{j'} X^{k'} \\omega^{l'}$. That is, the table that stores the inverse of each Clifford gate with phase $l = 0$." ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": true }, "outputs": [], "source": [ "CLIFFORD_INV = {\n", " (0, 0, 0): (0,0,0,0),\n", " (0, 0, 1): (0,0,3,0),\n", " (0, 0, 2): (0,0,2,0),\n", " (0, 0, 3): (0,0,1,0),\n", " (0, 1, 0): (0,1,0,0),\n", " (0, 1, 1): (0,1,1,6),\n", " (0, 1, 2): (0,1,2,4),\n", " (0, 1, 3): (0,1,3,2),\n", " (1, 0, 0): (2,0,0,0),\n", " (1, 0, 1): (1,0,1,2),\n", " (1, 0, 2): (2,1,0,0),\n", " (1, 0, 3): (1,1,3,4),\n", " (1, 1, 0): (2,1,2,2),\n", " (1, 1, 1): (1,1,1,6),\n", " (1, 1, 2): (2,0,2,2),\n", " (1, 1, 3): (1,0,3,4),\n", " (2, 0, 0): (1,0,0,0),\n", " (2, 0, 1): (2,1,3,6),\n", " (2, 0, 2): (1,1,2,2),\n", " (2, 0, 3): (2,0,3,6),\n", " (2, 1, 0): (1,0,2,0),\n", " (2, 1, 1): (2,1,1,6),\n", " (2, 1, 2): (1,1,0,2),\n", " (2, 1, 3): (2,0,1,6),\n", "}" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [], "source": [ "for i, j, k in product(range(3), range(2), range(4)):\n", " ip, jp, kp, lp = CLIFFORD_INV[i, j, k]\n", " assert (\n", " (E**i * X**j * S**k).dag() -\n", " E**ip * X**jp * S**kp * w**lp\n", " ).norm() <= 1e-8" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We are now equipped to represent each element of the Ross and Selinger presentation as an instance of a new class ``Clifford``. By overriding ``Clifford.__new__``, we can ensure that exactly one instance is created for each combination of $i$, $j$, $k$ and $l$. This will effectively let us lazily compute the different properties of each gate, making it much faster to sample each sequence." ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sup_numerals = u\"⁰¹²³⁴⁵⁶⁷⁸⁹\"" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [], "source": [ "@python_2_unicode_compatible\n", "class Clifford(tuple):\n", " \n", " # Maintain a dictionary of which Clifford instances already\n", " # exist, so that __new__ can return such existing instances.\n", " __instances = {} \n", " \n", " def __new__ (cls, i=0, j=0, k=0, l=0):\n", " if (i, j, k, l) in cls.__instances:\n", " return cls.__instances[i, j, k, l]\n", " else:\n", " new = super(Clifford, cls).__new__(cls, (i % 3, j % 2, k % 4, l % 8))\n", " cls.__instances[i, j, k, l] = new\n", " return new\n", " \n", " # Lazily store the QuTiP representation of each gate.\n", " _Q = None \n", " \n", " def __mul__(self, other):\n", " \"\"\"\n", " Returns the product of this Clifford gate with another one.\n", " \"\"\"\n", " \n", " # Unpack the powers of E, S, X and omega for each gate.\n", " i1, j1, k1, l1 = self\n", " i2, j2, k2, l2 = other\n", " \n", " # Commute E^i₂ past X^j₁ S^k₁.\n", " i3, j3, k3, l3 = CLIFFORD_XSE[j1, k1, i2]\n", " \n", " # Commute S past X.\n", " k4, l4 = CLIFFORD_SX[k3, j2]\n", " \n", " return Clifford(\n", " i1 + i3,\n", " j3 + j2,\n", " k4 + k2,\n", " # Accumulate the phases we picked up at each step.\n", " l4 + l3 + l1 + l2\n", " )\n", " @property\n", " def inv(self):\n", " (i2, j2, k2, l2) = CLIFFORD_INV[self[0], self[1], self[2]]\n", " return Clifford(\n", " i2, j2, k2, l2 - self[3]\n", " )\n", " \n", " def qobj(self):\n", " if not self._Q:\n", " self._Q = E**self[0] * X**self[1] * S**self[2] * w**self[3]\n", " return self._Q\n", " \n", " # Finally, we'll add some support for pretty-printing.\n", " \n", " def __repr__(self):\n", " return u\"Clifford({0[0]}, {0[1]}, {0[2]}, {0[3]})\".format(self)\n", " \n", " def __str__(self):\n", " if self[3] >= 4:\n", " return u\"-\" + str(Clifford(self[0], self[1], self[2], self[3] % 4))\n", " elif self[3] >= 2:\n", " return u\"i\" + str(Clifford(self[0], self[1], self[2], self[3] % 2))\n", " elif self[3] == 1:\n", " return u\"ω\" + str(Clifford(self[0], self[1], self[2]))\n", " elif self == Clifford(0, 0, 0, 0):\n", " return u\"𝟙\"\n", " else:\n", " return u\"\".join([\n", " u\"{}{}\".format(U, sup_numerals[power] if power > 1 else u\"\")\n", " for U, power in zip(u\"EXS\", self[:3])\n", " if power\n", " ])\n" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": true }, "outputs": [], "source": [ "clifford_group = [\n", " Clifford(i, j, k, l)\n", " for i, j, k, l in\n", " product(range(3), range(2), range(4), range(8))\n", "]" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "𝟙, ω𝟙, i𝟙, iω𝟙, -𝟙, -ω𝟙, -i𝟙, -iω𝟙, S, ωS, iS, iωS, -S, -ωS, -iS, -iωS, S², ωS², iS², iωS², -S², -ωS², -iS², -iωS², S³, ωS³, iS³, iωS³, -S³, -ωS³, -iS³, -iωS³, X, ωX, iX, iωX, -X, -ωX, -iX, -iωX, XS, ωXS, iXS, iωXS, -XS, -ωXS, -iXS, -iωXS, XS², ωXS², iXS², iωXS², -XS², -ωXS², -iXS², -iωXS², XS³, ωXS³, iXS³, iωXS³, -XS³, -ωXS³, -iXS³, -iωXS³, E, ωE, iE, iωE, -E, -ωE, -iE, -iωE, ES, ωES, iES, iωES, -ES, -ωES, -iES, -iωES, ES², ωES², iES², iωES², -ES², -ωES², -iES², -iωES², ES³, ωES³, iES³, iωES³, -ES³, -ωES³, -iES³, -iωES³, EX, ωEX, iEX, iωEX, -EX, -ωEX, -iEX, -iωEX, EXS, ωEXS, iEXS, iωEXS, -EXS, -ωEXS, -iEXS, -iωEXS, EXS², ωEXS², iEXS², iωEXS², -EXS², -ωEXS², -iEXS², -iωEXS², EXS³, ωEXS³, iEXS³, iωEXS³, -EXS³, -ωEXS³, -iEXS³, -iωEXS³, E², ωE², iE², iωE², -E², -ωE², -iE², -iωE², E²S, ωE²S, iE²S, iωE²S, -E²S, -ωE²S, -iE²S, -iωE²S, E²S², ωE²S², iE²S², iωE²S², -E²S², -ωE²S², -iE²S², -iωE²S², E²S³, ωE²S³, iE²S³, iωE²S³, -E²S³, -ωE²S³, -iE²S³, -iωE²S³, E²X, ωE²X, iE²X, iωE²X, -E²X, -ωE²X, -iE²X, -iωE²X, E²XS, ωE²XS, iE²XS, iωE²XS, -E²XS, -ωE²XS, -iE²XS, -iωE²XS, E²XS², ωE²XS², iE²XS², iωE²XS², -E²XS², -ωE²XS², -iE²XS², -iωE²XS², E²XS³, ωE²XS³, iE²XS³, iωE²XS³, -E²XS³, -ωE²XS³, -iE²XS³, -iωE²XS³\n" ] } ], "source": [ "print(\", \".join(map(str, clifford_group)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we can sample, multiply and invert Clifford gates efficiently, we have everything we need to define *sequences* of Cliffords. We will do so in terms of a gateset that defines the noisy implementation of each Clifford gate. For this example, we will hold to the traditional RB assumptions and the same noise channel $\\Lambda$ after the ideal action of each gate." ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": true }, "outputs": [], "source": [ "gateset = {\n", " gate: lambda_ * qt.to_super(gate.qobj())\n", " for gate in clifford_group\n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To form a sequence, we pick gates at random from the Clifford group, then append the inverse gate to the end." ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def seq(m, gateset):\n", " gates = [clifford_group[idx] for idx in np.random.randint(len(clifford_group), size=m)]\n", " inv_gate = reduce(mul, reversed(gates)).inv\n", " gates = [inv_gate] + list(gates)\n", " return reduce(mul, [\n", " gateset[gate] for gate in reversed(gates)\n", " ])" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/latex": [ "Quantum object: dims = [[[2], [2]], [[2], [2]]], shape = [4, 4], type = super, isherm = False\\begin{equation*}\\left(\\begin{array}{*{11}c}0.756 & (-0.305-0.302j) & (-0.305+0.302j) & 0.244\\\\(0.352-0.246j) & (0.745+0.129j) & (-0.043+0.240j) & (-0.352+0.246j)\\\\(0.352+0.246j) & (-0.043-0.240j) & (0.745-0.129j) & (-0.352-0.246j)\\\\0.244 & (0.305+0.302j) & (0.305-0.302j) & 0.756\\\\\\end{array}\\right)\\end{equation*}" ], "text/plain": [ "Quantum object: dims = [[[2], [2]], [[2], [2]]], shape = [4, 4], type = super, isherm = False\n", "Qobj data =\n", "[[ 0.75637527+0.j -0.30459068-0.30248345j -0.30459068+0.30248345j\n", " 0.24362473+0.j ]\n", " [ 0.35180016-0.24598449j 0.74524982+0.12925265j -0.04329705+0.23974649j\n", " -0.35180016+0.24598449j]\n", " [ 0.35180016+0.24598449j -0.04329705-0.23974649j 0.74524982-0.12925265j\n", " -0.35180016-0.24598449j]\n", " [ 0.24362473+0.j 0.30459068+0.30248345j 0.30459068-0.30248345j\n", " 0.75637527+0.j ]]" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "seq(100, gateset)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def sample_rb_datum(m, gateset, rho, meas):\n", " S = seq(m, gateset)\n", " pr = (\n", " qt.operator_to_vector(meas).dag() * S * qt.operator_to_vector(rho)\n", " )[0, 0]\n", " return 1 if np.random.random() < pr else 0" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false }, "outputs": [], "source": [ "counts = np.empty_like(ms)\n", "progbar = qi.IPythonProgressBar()\n", "progbar.start(ms.sum())\n", "progress = 0\n", "\n", "for idx, m in enumerate(ms):\n", " progbar.description = u'𝑚 = {}...'.format(m)\n", " counts[idx] = sum([\n", " sample_rb_datum(m, gateset, rho, meas)\n", " for _ in range(n_shots)\n", " ])\n", " progress += m\n", " progbar.update(progress)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Estimated p: 0.9911 ± 0.0017\n", "Estimated A: 0.4432 ± 0.0261\n", "Estimated B: 0.5063 ± 0.0118\n" ] } ], "source": [ "data = np.column_stack([counts, ms, n_shots * np.ones_like(counts)])\n", "mean, cov, extra = qi.simple_est_rb(data, return_all=True, n_particles=12000, p_min=0.8)\n", "print(\"Estimated p: {:0.4f} ± {:0.4f}\".format(mean[0], np.sqrt(cov[0, 0])))\n", "print(\"Estimated A: {:0.4f} ± {:0.4f}\".format(mean[1], np.sqrt(cov[1, 1])))\n", "print(\"Estimated B: {:0.4f} ± {:0.4f}\".format(mean[2], np.sqrt(cov[2, 2])))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the Magesan *et al.* model, $A$ and $B$ are defined as\n", "\\begin{align*}\n", " A & \\mathrel{:=} \\operatorname{Tr}(E \\Lambda(\\rho - \\mathbb{1} / d)) \\textrm{ and} \\\\\n", " B & \\mathrel{:=} \\operatorname{Tr}(E \\Lambda(\\mathbb{1} / d)),\n", "\\end{align*}\n", "where $d$ is the dimension of the system (in this case, 2). By using our description of $\\Lambda$, $\\rho$ and $E$, we can calculate these parameters and plot the \"true\" model for our data, along side the data and our reconstruction from the estimated values of $p$, $A$ and $B$." ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": true }, "outputs": [], "source": [ "A = (qt.operator_to_vector(meas).dag() * lambda_ * qt.operator_to_vector(rho - qt.qeye(2) / 2))[0, 0]\n", "B = (qt.operator_to_vector(meas).dag() * lambda_ * qt.operator_to_vector(qt.qeye(2) / 2))[0, 0]" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/cgranade/anaconda/envs/qinfer-binder/lib/python3.5/site-packages/numpy/core/numeric.py:482: ComplexWarning: Casting complex values to real discards the imaginary part\n", " return array(a, dtype, copy=False, order=order)\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(ms, A + B * qi.rb.p(qt.average_gate_fidelity(lambda_)) ** ms, label='True Model')\n", "plt.plot(ms, counts / n_shots, 'x', label='Data')\n", "plt.plot(ms, mean[2] + mean[1] * mean[0] ** ms, label='Estimated Model')\n", "plt.legend()" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/cgranade/anaconda/envs/qinfer-binder/lib/python3.5/site-packages/numpy/core/numeric.py:482: ComplexWarning: Casting complex values to real discards the imaginary part\n", " return array(a, dtype, copy=False, order=order)\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nSUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.semilogy(ms, B * qi.rb.p(qt.average_gate_fidelity(lambda_)) ** ms, label='True Model')\n", "# plt.plot(ms, (counts / n_shots) - mean[1], 'x', label='Data')\n", "plt.semilogy(ms, mean[1] * mean[0] ** ms, label='Estimated Model')\n", "plt.legend()" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nYf4/a7NXTEf32lQAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "extra['updater'].plot_posterior_marginal(range_max=1)\n", "plt.xlim(xmax=1)\n", "ylim = plt.ylim(ymin=0)\n", "plt.vlines(qi.rb.p(qt.average_gate_fidelity(lambda_)), *ylim)\n", "plt.ylim(*ylim);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also look at the posterior marginal distributions over each of $A$ and $B$." ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/cgranade/anaconda/envs/qinfer-binder/lib/python3.5/site-packages/numpy/core/numeric.py:482: ComplexWarning: Casting complex values to real discards the imaginary part\n", " return array(a, dtype, copy=False, order=order)\n" ] }, { "data": { "image/png": "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\nOTmZyy+/nPXr159ym7S0tO6vW1tbMScth2itjevqNf3JC/Dqq68ya9YssrOzB3xfL2QF7+7bnjJ5\ndd/2tv+8uG/feustLr300u6V2breD17ct71lBW/u25O9/fbbXH755YO6r1f0J/eECRPIyMgAYPz4\n8dTV1XX/LJ6/o2jOMW78fvx0TvTT+TDavODNfeuF82G0ebu2e2nfOnk+dKQNo66ujvz8T9ZTz8vL\nY/v27Wfc7t133+UnP/kJjY2NfP3rn6wHbozhscceIxAIMGfOHK677jonYkWVt66ujvXr17N48eJT\nftbf1+qFrODNfQuwbds2HnjgAfLy8rjtttsoKSnx5L7tLSt4c99WV1cTCoX4zne+Q2trKzfccANX\nXXWVJ/dtb1nBm/u2S3t7O5s3b+bOO+8c8H29ZKC5X3/9daZNm9b9fTx/R9GcY9z4/fjpnOin82G0\necF7+xa8cT6MNi94b986eT50rGe5P2bOnMnMmTPZunUrL730EosWLQLg0UcfZdiwYTQ2NvLoo49S\nUlLS3bvllhdeeIFbb73V1Qz9dXrWk/+y8+K+Pe+883juuedIS0tj06ZNPPXUU55dKOFsWb24b8Ph\nMDt37uRb3/oWbW1t/O3f/i0TJkxwNVNvestaVFTkyX3bZcOGDZSVlZGZmel2lLj54IMPWLduHY88\n8kj3Ni/+jno7x3iVX86Jfjofgr/OiX46H4K/zolOng8dKZbz8vI4cuRI9/d1dXXdw949KSsro6am\nhubmZrKyshg2bBgQGSKfOXMm27dvj+kO7k/eHTt28Oyzz2KtpampiU2bNpGUlDTg1+pW1uTkZKZP\nn+7JfZuent799UUXXcQ//uM/0tzc7Ml921tWr75v8/LyCAaDpKamkpqaysSJE9m1a5cn921vWYuK\nijy5b7v87ne/627BGOh9vaS/uXfv3s0Pf/hDvvnNb5KVldW9PZ6/o2jOMW78fvx0TvTT+TCavG6c\nE/10Pow2rxfft06eDx3pWT7//PM5ePAghw8fprOzk7fffpvp06efcpuDBw92f71jxw46OzvJysqi\nra2N1tZWINK39f777zN69GgnYkWVd/ny5Sxfvpzvf//7zJo1iy996UtMnz69X/f1Slav7tv6+vru\nr7s++sjKyvLkvu0tq1f37YwZM9i6dSvhcJi2tja2bdtGSUmJJ/dtb1m9um8BWlpaqKqqYsaMGQO+\nr9f0J/eRI0dYunQp9957L0VFRd3b4/07iuYc48bvx0/nRD+dD6PN68V965XzYbR5vbhvnTwfOjKy\nHGqz3KUAAANFSURBVAgEuPPOO3nsscew1nLttddSUlLCb3/7W4wxXHfddbzzzju88cYbJCcnk5qa\nysKFCwFoaGjgqaeewhhDKBTiyiuvZOrUqU7EiirvQO/rxaxe3bd/+MMf+O1vf0tSUhKpqal85Stf\nOet9vZjVq/u2uLiYqVOn8rWvfY1AIMB1113XvQ+9tm97y1pTU+PJfQuRHtOpU6eSmpra5329rj+v\n+d/+7d9obm7m+eefx1rbPR1UvN//0Zxj3Pj9+Omc6KfzYbR5vbhvvXI+jDavF/etk+dDLXctIiIi\nItILreAnIiIiItILFcsiIiIiIr1QsSwiIiIi0gsVyyIiIiIivVCxLCIiIiLSCxXLIiIiIiK9ULEs\nIiIiItILFcsiIiIiIr1wZAU/ES9pb2/nscce45FHHnE7ioiI9GDHjh2sWrWK9vZ2rrjiCgD27NlD\nRkYGFRUVLqcTOZWKZRlyfv3rX/Pxxx8TDocJBPThiYiI15x33nmkp6dz/fXXc9FFFwHQ2trK7bff\nzk033URaWprLCUU+oUpChpSdO3cyatQokpOTqa+vdzuOiIj0Ytu2bZSXl3d/v2bNGv7sz/5MhbJ4\njkaWZcgIh8P8/ve/55ZbbiEnJ4e6ujry8vLcjiUiIqfZt28fwWCQDz/8EGstGzZsYOzYscyZM8ft\naCJnULEsQ8arr77KtddeC0Bubi51dXUuJxIRkZ588MEHzJw5k6lTpwJw4YUXsnDhQsrLyykqKnI5\nncip1IYhQ8KhQ4fYvn07H330EevWrSMcDnP06FG3Y4mISA+qqqooKyvr/j45OZn09HT27t3rYiqR\nnmlkWYaEtWvXcu+993Zf0Ldr1y4VyyIiHmSt5aOPPuK+++7r3rZx40ZaWlqYPHmyi8lEeqZiWXzt\n448/5uc///kpF4Rs3bqV3bt3097eztSpU5k4caKLCUVEpMvOnTv5/e9/Tzgc5r/+67+w1tLc3ExN\nTQ2PPPII6enpbkcUOYOx1lq3Q4iIiIiIeJF6lkVEREREeqFiWURERESkFyqWRURERER6oWJZRERE\nRKQXKpZFRERERHqhYllEREREpBcqlkVEREREeqFiWURERESkFyqWRURERER68f8AffNBaP21JIYA\nAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(12, 4))\n", "plt.subplot(1, 2, 1)\n", "extra['updater'].plot_posterior_marginal(idx_param=1)\n", "ylim = plt.ylim(ymin=0)\n", "plt.vlines(A, *ylim)\n", "plt.ylim(*ylim);\n", "\n", "plt.subplot(1, 2, 2)\n", "extra['updater'].plot_posterior_marginal(idx_param=2)\n", "ylim = plt.ylim(ymin=0)\n", "plt.vlines(B, *ylim)\n", "plt.ylim(*ylim);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we can plot the covariance matrix for all three parameters, showing how our uncertianty about each of the parameters $p$, $A$ and $B$ are correlated. We do so as a [Hinton diagram](http://tonysyu.github.io/mpltools/auto_examples/special/plot_hinton.html), in which each positive element is plotted as a white square while each negative element is plotted as a black square. The respective sizes of each element show their magnitudes. That we see a large black square in the $(A, B)$ and $(B, A)$ matrix elements tells us that the estimates of $A$ and $B$ are strongly anti-correlated, such that learning about one tells us a lot about the other." ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "extra['updater'].plot_covariance()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This becomes more obvious if we plot the correlation matrix instead, where each matrix element is rescaled as $\\operatorname{Corr}(X, Y) = \\operatorname{Cov}(X, Y) / \\sqrt{\\operatorname{Cov}(X, X) \\operatorname{Cov}(Y, Y)}$." ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAAEBCAYAAAC353MXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAACxNJREFUeJzt3c9rFPcfx/FX4lc9iGHoViy5uAmCwkKhEIhe3CBexLD0\ntL0Xvfc/KIV6MNBTvfTWYwmFxeBFNlhCklNCBWEOia4QFOJCV8ZNXCm62e+hJPj9ErufNZ/5te/n\n4+SSMPPZwWfmM5vJZ0Z6vV5PAMwZTXsAANJB/IBRxA8YRfyAUcQPGEX8gFHEDxhF/IBRxI++3r17\np7t376Y9jMy6d++evvvuOz18+FCLi4uam5vTX3/9lfaw+vpP2gNI0ubmptbW1nTu3DkdP35cOzs7\nunbtWtrDyryVlRU1Go20h5FZ58+fV6fT0dWrVyVJL1++1Nramq5fv57yyP6dqTN/r9dTt9vV+Pi4\npqentbq6mvaQMq/T6Wh0dFSdTiftoWTWkydPdPHiRUlSu93W5uampqamUh5Vf6biv3Dhgl68eKHJ\nyUnt7u6q2+2mPaTMW1lZ0eXLlzU6Oqq9vb20h5NJjUZDf//9tx49eqRff/1Vt27d0pkzZ9IeVl+m\n4n///r1GRkYkSevr67py5UrKI8q2KIp08uRJnThxQqdPn1a73U57SJm0u7urS5cu6auvvtI333yj\nX375Je0hOTEVf6PR0LFjx7S+vq4oirje76Ner+vt27eq1+vqdrt6/fp12kPKnFevXmlsbOzg9djY\nmJ4/f57iiNyZ+sBvY2NDN27cUKlUysU1WZqazaYmJiYOjtPGxgZn/kM8ffpUExMTB68XFxc1PT2d\n4ojcmTnzN5tNra6uqtVqpT2UzHv8+LHm5uZ06tQpSdKzZ8+0vb2t5eVlvXnzJuXRZUcYhqrX69re\n3taDBw/0+++/q9ls6ubNm2kPzckIi3kANpk58wP4X8QPGEX8gFHEDxhF/IBRZuMPwzDtIeQCx8ld\n3o4V8eNfcZzc5e1YmY0fsI74AaO4ww8wKrE/7Pnhhx+S2pWTcrmspaWltIeReRwnd1k8Vt9///1H\nv8a0HzCK+AGjiB8wivgBo4gfMIr4AaOIHzCK+AGjMrd67+zsrAqFQuz7CYJAxWIx9v20Wi3dv38/\n9v0Ag8pc/IVCIZEopX9+AABWMe0HjCJ+wCjiB4wifsCozH3gByRhYWHB+6PbarWaoijyus1CoaBK\n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\n9V/XWQ0lXvWOLgAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "extra['updater'].plot_covariance(corr=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This shows that improving our knowledge of $B$ can have a large impact on our uncertianty in $p$." ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "## Custom Priors and Updater Loop ##" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can exploit this by providing a prior distribution that is relatively certain about the values of $A$ and $B$. Such a prior can be justified, for instance, by other experiments that demonstrate high-fidelity measurements. In this example, we will assume a prior distribution over $A$ and $B$ that is narrowly centered around the true values to demonstrate the utility of prior information.\n", "\n", "Instead of using ``simple_est_rb``, we'll use ``RandomizedBenchmarkingModel`` directly, and then wrapping this model with a ``BinomialModel`` to describe multiple shots." ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "collapsed": true }, "outputs": [], "source": [ "model = qi.BinomialModel(qi.RandomizedBenchmarkingModel())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can then use ``PostselectedDistribution`` to ensure that our prior is always valid for randomized benchmarking." ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "collapsed": false }, "outputs": [], "source": [ "prior = qi.PostselectedDistribution(\n", " qi.ProductDistribution(\n", " qi.UniformDistribution([0.8, 1]),\n", " qi.MultivariateNormalDistribution(\n", " np.array([0.498, 0.499]),\n", " np.diag([0.004, 0.002]) ** 2\n", " )\n", " ),\n", " model\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, we'll set up an updater to consume the data we simulated in the previous section." ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": true }, "outputs": [], "source": [ "updater = qi.smc.SMCUpdater(model, 12000, prior)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We then setup arrays to hold our outcomes and our experiment parameters." ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "collapsed": false }, "outputs": [], "source": [ "outcomes = np.array(counts, dtype='uint')[:, np.newaxis]\n", "expparams = np.empty(outcomes.shape, dtype=model.expparams_dtype)\n", "expparams['n_meas'] = n_shots\n", "expparams['m'][:, 0] = ms" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we can update our prior with the data to find the posterior distribution." ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "collapsed": false }, "outputs": [], "source": [ "for outcome, experiment in zip(outcomes, expparams):\n", " updater.update(outcome, experiment)" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "collapsed": true }, "outputs": [], "source": [ "mean = updater.est_mean()\n", "cov = updater.est_covariance_mtx()" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Estimated p: 0.9916 ± 0.0006\n", "Estimated A: 0.4950 ± 0.0031\n", "Estimated B: 0.4987 ± 0.0019\n" ] } ], "source": [ "print(\"Estimated p: {:0.4f} ± {:0.4f}\".format(mean[0], np.sqrt(cov[0, 0])))\n", "print(\"Estimated A: {:0.4f} ± {:0.4f}\".format(mean[1], np.sqrt(cov[1, 1])))\n", "print(\"Estimated B: {:0.4f} ± {:0.4f}\".format(mean[2], np.sqrt(cov[2, 2])))" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/cgranade/anaconda/envs/qinfer-binder/lib/python3.5/site-packages/numpy/core/numeric.py:482: ComplexWarning: Casting complex values to real discards the imaginary part\n", " return array(a, dtype, copy=False, order=order)\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n8MDPGGNe5n9sVixgeqOsRgAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(ms, A + B * qi.rb.p(qt.average_gate_fidelity(lambda_)) ** ms, label='True Model')\n", "plt.plot(ms, counts / n_shots, 'x', label='Data')\n", "plt.plot(ms, mean[2] + mean[1] * mean[0] ** ms, label='Estimated Model')\n", "plt.legend()" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/cgranade/anaconda/envs/qinfer-binder/lib/python3.5/site-packages/numpy/core/numeric.py:482: ComplexWarning: Casting complex values to real discards the imaginary part\n", " return array(a, dtype, copy=False, order=order)\n" ] }, { "data": { "image/png": "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\nuAAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(18, 4))\n", "plt.subplot(1, 3, 1)\n", "extra['updater'].plot_posterior_marginal(idx_param=0)\n", "ylim = plt.ylim(ymin=0)\n", "plt.vlines(qi.rb.p(qt.average_gate_fidelity(lambda_)), *ylim)\n", "plt.ylim(*ylim);\n", "\n", "\n", "plt.subplot(1, 3, 2)\n", "extra['updater'].plot_posterior_marginal(idx_param=1)\n", "ylim = plt.ylim(ymin=0)\n", "plt.vlines(A, *ylim)\n", "plt.ylim(*ylim);\n", "\n", "plt.subplot(1, 3, 3)\n", "extra['updater'].plot_posterior_marginal(idx_param=2)\n", "ylim = plt.ylim(ymin=0)\n", "plt.vlines(B, *ylim)\n", "plt.ylim(*ylim);" ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nPuWlfDsAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.subplot(1, 2, 1)\n", "updater.plot_covariance()\n", "\n", "plt.subplot(1, 2, 2)\n", "updater.plot_covariance(corr=True)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.1" }, "widgets": { "state": { "2653fdeffff44239a6f4d648d760a848": { "views": [] }, "2aa33dc93c1f4d45a70b06d26f8e90c9": { "views": [] }, "32a674f47af142aeb8dcb958f60a56df": { "views": [] }, "51aaf408951149f9b28a82874c30832c": { "views": [] }, "56ef519037cb4465bdadda75831cd233": { "views": [ { "cell_index": 61 } ] }, "8da704a48c304af787dd0ecf4b840475": { "views": [] }, "93c5336e127641838814eec76adc5e38": { "views": [] }, "b7327a25159743c7a317cb522313dee6": { "views": [] }, "e9f0dcb9c9a24b7fb8020e085855f067": { "views": [] }, "f05e60aca97649f1814044438c6b59a3": { "views": [] } }, "version": "1.1.1" } }, "nbformat": 4, "nbformat_minor": 0 }