{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# $SU(2)$ Benchmarking\n", "\n", "$SU(2)$ benchmarking is a QCVV routine that can measure the two qubit gate fidelity independently of\n", "any additional single qubit gate errors. To demonstrate this, we define a noise model which applies\n", "single qubit bit-flip errors and two qubit depolarising errors.\n" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "from __future__ import annotations\n", "\n", "import cirq\n", "import cirq_superstaq as css" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "class IndependentNoiseModel(cirq.NoiseModel):\n", " \"Applies single and two qubit noise channels independently.\"\n", "\n", " def __init__(self, single_qubit_error: float, two_qubit_error: float) -> None:\n", " super().__init__()\n", " self.single_qubit_error = single_qubit_error\n", " self.two_qubit_error = two_qubit_error\n", " self.single_qubit_error_channel = cirq.BitFlipChannel(p=single_qubit_error)\n", " self.two_qubit_error_channel = cirq.DepolarizingChannel(\n", " p=15 / 16 * two_qubit_error, n_qubits=2\n", " )\n", "\n", " def noisy_operation(self, operation: cirq.Operation) -> list[cirq.OP_TREE]:\n", " if isinstance(operation.gate, css.Barrier):\n", " return []\n", " if len(operation.qubits) == 1:\n", " return [operation, self.single_qubit_error_channel(*operation.qubits)]\n", " if len(operation.qubits) == 2:\n", " return [operation, self.two_qubit_error_channel(*operation.qubits)]\n", " return [operation]\n", "\n", "\n", "TWO_QUBIT_ERROR = 0.05\n", "SINGLE_QUBIT_ERROR = 0.001\n", "noise = IndependentNoiseModel(\n", " single_qubit_error=SINGLE_QUBIT_ERROR, two_qubit_error=TWO_QUBIT_ERROR\n", ")\n", "simulator = cirq.DensityMatrixSimulator(noise=noise, seed=0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now run the experiment for a CNOT gate\n" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "282d4d7ef3124bfda9a1600cdd538d27", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Building circuits: 0%| | 0/100 [00:00" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from supermarq.qcvv import SU2\n", "\n", "experiment = SU2(20, [1, 4, 8, 12, 20], two_qubit_gate=cirq.CNOT, seed=0)\n", "results = experiment.run_with_simulator(simulator=simulator)\n", "results.analyze()" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Estimated two qubit gate fidelity: 0.94966 +/- 0.00019498\n", "Estimated single qubit noise: 0.069692 +/- 0.0042711\n", "\n" ] }, { "data": { "image/png": "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8veXLD4iIiKybEzsWpCo06E2MxOGGq2xTZuWBplN3f6xMgeuZUdERETmw8SuBRnKy3Fx5iyTtuzZs43fB69b29ohERERkRVhYteC5BoNglZ/D31BIS48/zwAwH/xYsjdXI3HiYiIiMyFiV1LEgQISiUUXp7GJoWXJyAIxuNERERE5sLEriXJZA2TN0G40ibj6jJERERkPkzsWpDK1xfw9YU2MxNBq78HUDf8qgoIkDgyIiIisgZM7Mzh8pBs/fdERERErYGJnRmo/P0BrldHRERErUzySV9LlixBSEgI1Go1oqKisGvXruueHx8fj6ioKKjVanTo0AFffPFFK0VKRERE1LZJmtitWbMGM2bMwJtvvomkpCQMHDgQI0eOREZGRqPnp6am4u6778bAgQORlJSEN954Ay+++CLWr1/fypETERERtT2CKOHu9P369UNkZCSWLl1qbAsLC8OYMWMwf/78Bue/9tpr2Lx5M06ePGlsmzp1Ko4cOYK9e/c26T1LS0uh0WhQUlICJyenW/8QRERERGbUnNxFsh47rVaLxMREDBs2zKR92LBhSEhIaPQ5e/fubXD+8OHDcejQIdTW1jb6nJqaGpSWlpp8EREREVkiyRK7/Px86PV6eHl5mbR7eXkhJyen0efk5OQ0er5Op0N+fn6jz5k/fz40Go3xK4BLjxAREZGFkrx4QvjbciCiKDZou9H5jbXXe/3111FSUmL8yszMvMWIiYiIiNomyZY7cXd3h1wub9A7l5eX16BXrp63t3ej5ysUCri5uTX6HBsbG9jY2LRM0ERERERtmGQ9diqVClFRUYiLizNpj4uLQ2xsbKPPiYmJaXD+77//jujoaCjrFwQmIiIislKSDsXOmjULX331Fb7++mucPHkSM2fOREZGBqZOnQqgbhj18ccfN54/depUpKenY9asWTh58iS+/vpr/Pe//8XLL78s1UcgIiIiajMk3Xli3LhxKCgowLx585CdnY3w8HBs2bIFQUFBAIDs7GyTNe1CQkKwZcsWzJw5E59//jl8fX3x6aef4oEHHpDqIxARERG1GZKuYycFrmNHRERE7Um7WMeOiIiIiFqWpEOxUqjvoORCxURERNQe1OcsTRlktbrErqysDAC4UDERERG1K2VlZdBoNNc9x+rm2BkMBmRlZcHR0fG6CyFbutLSUgQEBCAzM9Pq5xryWlzBa1GH1+EKXosreC2u4LW4ojWuhSiKKCsrg6+vL2Sy68+is7oeO5lMBn9/f6nDaDOcnJys/i9lPV6LK3gt6vA6XMFrcQWvxRW8FleY+1rcqKeuHosniIiIiCwEEzsiIiIiC8HEzkrZ2Nhgzpw53EcXvBZX47Wow+twBa/FFbwWV/BaXNHWroXVFU8QERERWSr22BERERFZCCZ2RERERBaCiR0RERGRhWBiZ2Xmzp0LQRBMvry9vaUOy+x27tyJUaNGwdfXF4IgYNOmTSbHRVHE3Llz4evrC1tbWwwePBjHjx+XJlgzu9G1mDx5coN7pH///tIEa0bz589Hnz594OjoCE9PT4wZMwYpKSkm51jLfdGUa2Et98XSpUvRs2dP45pkMTEx+PXXX43HreWeAG58Lazlnvi7+fPnQxAEzJgxw9jWlu4LJnZWqHv37sjOzjZ+HTt2TOqQzK6iogIRERFYvHhxo8c/+OADLFy4EIsXL8bBgwfh7e2NoUOHGregsyQ3uhYAMGLECJN7ZMuWLa0YYeuIj4/HtGnTsG/fPsTFxUGn02HYsGGoqKgwnmMt90VTrgVgHfeFv78/FixYgEOHDuHQoUO48847MXr0aOM/0tZyTwA3vhaAddwTVzt48CCWLVuGnj17mrS3qftCJKsyZ84cMSIiQuowJAVA3Lhxo/GxwWAQvb29xQULFhjbqqurRY1GI37xxRcSRNh6/n4tRFEUJ02aJI4ePVqSeKSUl5cnAhDj4+NFUbTu++Lv10IUrfe+EEVRdHFxEb/66iurvifq1V8LUbS+e6KsrEwMDQ0V4+LixEGDBonTp08XRbHt/a5gj50VOnPmDHx9fRESEoLx48fj/PnzUockqdTUVOTk5GDYsGHGNhsbGwwaNAgJCQkSRiadHTt2wNPTE507d8aUKVOQl5cndUhmV1JSAgBwdXUFYN33xd+vRT1ruy/0ej1++OEHVFRUICYmxqrvib9fi3rWdE9MmzYN99xzD+666y6T9rZ2X1jdXrHWrl+/fli5ciU6d+6M3NxcvPvuu4iNjcXx48fh5uYmdXiSyMnJAQB4eXmZtHt5eSE9PV2KkCQ1cuRIPPTQQwgKCkJqaireeust3HnnnUhMTGwzC3C2NFEUMWvWLNx2220IDw8HYL33RWPXArCu++LYsWOIiYlBdXU1HBwcsHHjRnTr1s34j7Q13RPXuhaAdd0TP/zwAw4fPoyDBw82ONbWflcwsbMyI0eONH7fo0cPxMTEoGPHjlixYgVmzZolYWTSEwTB5LEoig3arMG4ceOM34eHhyM6OhpBQUH45ZdfMHbsWAkjM5/nn38eR48exe7duxscs7b74lrXwpruiy5duiA5ORnFxcVYv349Jk2ahPj4eONxa7onrnUtunXrZjX3RGZmJqZPn47ff/8darX6mue1lfuCQ7FWzt7eHj169MCZM2ekDkUy9VXB9f/rqpeXl9fgf2DWyMfHB0FBQRZ7j7zwwgvYvHkztm/fDn9/f2O7Nd4X17oWjbHk+0KlUqFTp06Ijo7G/PnzERERgU8++cQq74lrXYvGWOo9kZiYiLy8PERFRUGhUEChUCA+Ph6ffvopFAqF8WffVu4LJnZWrqamBidPnoSPj4/UoUgmJCQE3t7eiIuLM7ZptVrEx8cjNjZWwsjahoKCAmRmZlrcPSKKIp5//nls2LABf/75J0JCQkyOW9N9caNr0RhLvS8aI4oiampqrOqeuJb6a9EYS70nhgwZgmPHjiE5Odn4FR0djUcffRTJycno0KFD27ovWr1cgyT10ksviTt27BDPnz8v7tu3T7z33ntFR0dHMS0tTerQzKqsrExMSkoSk5KSRADiwoULxaSkJDE9PV0URVFcsGCBqNFoxA0bNojHjh0TH3nkEdHHx0csLS2VOPKWd71rUVZWJr700ktiQkKCmJqaKm7fvl2MiYkR/fz8LO5aPPvss6JGoxF37NghZmdnG78qKyuN51jLfXGja2FN98Xrr78u7ty5U0xNTRWPHj0qvvHGG6JMJhN///13URSt554QxetfC2u6JxpzdVWsKLat+4KJnZUZN26c6OPjIyqVStHX11ccO3asePz4canDMrvt27eLABp8TZo0SRTFunL1OXPmiN7e3qKNjY14++23i8eOHZM2aDO53rWorKwUhw0bJnp4eIhKpVIMDAwUJ02aJGZkZEgddotr7BoAEL/55hvjOdZyX9zoWljTffHkk0+KQUFBokqlEj08PMQhQ4YYkzpRtJ57QhSvfy2s6Z5ozN8Tu7Z0XwiiKIqt1z9IRERERObCOXZEREREFoKJHREREZGFYGJHREREZCGY2BERERFZCCZ2RERERBaCiR0RERGRhWBiR0RERGQhmNgRERERWQgmdkRk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yZIl+PzzzxEREYEDBw40WjF6sxYsWID3338fERER2LVrF3766SdjRaOvry/27NkDvV6P4cOHIzw8HNOnT4dGozGZz9cUL774Il566SW89NJL6NGjB3777Tds3rwZoaGhzXqdl19+GXK5HN26dTMOJwJ1w9kAMGjQIGMyM2jQIOj1epPEDgC++eYbREVF4d5770VMTAxEUcSWLVsaDF3Xk8lk2LhxI2pqatC3b188/fTT+Ne//mVyjlKpxOrVq3Hq1ClERETg/fffx7vvvtvgtezs7PDaa69hwoQJiImJga2tLX744Ydrft4pU6agS5cuiI6OhoeHB/bs2dPoeQsXLkRMTAzuvfde3HXXXRgwYADCwsKgVqsB1PWoLV++HGvXrkW3bt2wYMGCBkOlfn5+eOeddzB79mx4eXnh+eefB1B3X7799tuYP38+wsLCMHz4cPzvf/9DSEgIgLqevtdffx09e/bE7bffDrlcft3PRGStBPFak0GIiEhygiBg48aNrbYzRHNUVFTAz88PH330EZ566impwyEisHiCiIiaKCkpCadOnULfvn1RUlKCefPmAcA1h5eJqPUxsSMioib78MMPkZKSApVKhaioKOzatYsLBRO1IRyKJSIiIrIQLJ4gIiIishBM7IiIiIgsBBM7IiIiIgvBxI6IiIjIQjCxIyIiIrIQTOyIiIiILAQTOyIiIiILwcSOiIiIyEIwsSMiIiKyEP8PsSXAKxSZgmYAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "results.analyze()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we then compare the output results we see that the experiment has accurately estimated the two\n", "qubit gate error.\n" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Estimated two qubit gate error: 0.0503 +/ 0.0002\n", "True two qubit gate error: 0.0500\n" ] } ], "source": [ "print(\n", " f\"Estimated two qubit gate error: {results.two_qubit_gate_error:.4f} +/ {results.two_qubit_gate_error_std:.4f}\"\n", ")\n", "print(f\"True two qubit gate error: {TWO_QUBIT_ERROR:.4f}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally we can check the accuracy of the single qubit noise estimate. The estimate provided by the\n", "results object is the total single qubit noise, so to estimate the single qubit gate noise we divide\n", "by the number of single qubit gates (which is constant across all circuits in SU2 benchmarking).\n", "This can then be compared to the known single qubit gate error in our simulation. Note that our\n", "noise model contains a bit-flip channel with average error $p$. The corresponding depolarising error\n", "is $\\tfrac{3}{4}p$, which we compare to the estimate above.\n" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Estimated single qubit depolarising error: 0.0008 +/ 0.0001\n", "True single qubit depolarising error: 0.0008\n" ] } ], "source": [ "num_1q_gates = len(\n", " list(experiment.samples[0].circuit.findall_operations(lambda x: x.gate.num_qubits() == 1))\n", ")\n", "estimated_single_qubit_gate_depolarising_error = results.single_qubit_noise / num_1q_gates\n", "estimated_single_qubit_gate_depolarising_error_std = results.single_qubit_noise_std / num_1q_gates\n", "print(\n", " \"Estimated single qubit depolarising error: \"\n", " f\"{estimated_single_qubit_gate_depolarising_error:.4f} +/ \"\n", " f\"{estimated_single_qubit_gate_depolarising_error_std:.4f}\"\n", ")\n", "print(f\"True single qubit depolarising error: {3 / 4 * SINGLE_QUBIT_ERROR:.4f}\")" ] } ], "metadata": { "kernelspec": { "display_name": "client_superstaq", "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.13.2" } }, "nbformat": 4, "nbformat_minor": 2 }