{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Decoding 5-qubit perfect code" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this experiment, we decode the 5-qubit code using ``mdopt``. Here, we demonstrate direct-error input decoding, which means that the decoder takes a Pauli error as input and outputs the most likely logical operator. This pipeline is sufficient for threshold computation. After each run, the algorithm yields a probability distribution over the Pauli operators (I, X, Z, Y) to apply to the encoded logical qubit." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import qecsim.paulitools as pt\n", "import matplotlib.pyplot as plt\n", "from matplotlib import colormaps\n", "from matplotlib.colors import LogNorm, Normalize\n", "from matplotlib.ticker import FuncFormatter, FormatStrFormatter\n", "from tqdm import tqdm\n", "from scipy.stats import sem\n", "\n", "from mdopt.mps.utils import create_custom_product_state\n", "from mdopt.contractor.contractor import mps_mpo_contract\n", "from mdopt.optimiser.utils import (\n", " apply_constraints,\n", " SWAP,\n", " COPY_LEFT,\n", " XOR_BULK,\n", " XOR_LEFT,\n", " XOR_RIGHT,\n", ")\n", "\n", "from examples.decoding.decoding import (\n", " custom_code_checks,\n", " custom_code_logicals,\n", " custom_code_logicals_sites,\n", " custom_code_constraint_sites,\n", " apply_bitflip_bias,\n", " apply_depolarising_bias,\n", " pauli_to_mps,\n", " decode_custom,\n", " css_code_stabilisers,\n", " multiply_pauli_strings,\n", " map_distribution_to_pauli,\n", " generate_pauli_error_string,\n", ")\n", "from examples.decoding.visualisation import plot_parity_check_mpo" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us first define the code. Here, we won't be using `qecstruct` as in the other examples because it lacks the machinery we need. Instead, we define the code as a list of stabilizers and logical operators." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "stabilizer_generators = [\n", " \"XZZXI\",\n", " \"IXZZX\",\n", " \"XIXZZ\",\n", " \"ZXIXZ\",\n", "]\n", "x_logical_operators = [\n", " \"XXXXX\",\n", "]\n", "z_logical_operators = [\n", " \"ZZZZZ\",\n", "]\n", "logical_operators = x_logical_operators + z_logical_operators\n", "num_qubits = len(stabilizer_generators[0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us first take a look at the code in terms of the MPS sites where the checks will be applied." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Stabilizer generators:\n", "[2, 5, 7, 8]\n", "[4, 7, 9, 10]\n", "[2, 6, 9, 11]\n", "[3, 4, 8, 11]\n" ] } ], "source": [ "checks = custom_code_checks(stabilizer_generators, logical_operators)\n", "\n", "print(\"Stabilizer generators:\")\n", "for check in checks:\n", " print(check)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now transform this into lists of sites where all the logical constraints are applied." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "MPS constraint sites:\n", "[[2], [5, 7], [3, 4, 6], [8]]\n", "[[4], [7, 9], [5, 6, 8], [10]]\n", "[[2], [6, 9], [3, 4, 5, 7, 8, 10], [11]]\n", "[[3], [4, 8], [5, 6, 7, 9, 10], [11]]\n" ] } ], "source": [ "constraint_sites = custom_code_constraint_sites(\n", " stabilizer_generators, logical_operators\n", ")\n", "\n", "print(\"MPS constraint sites:\")\n", "for string in constraint_sites:\n", " print(string)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Logical operators:\n", "[[2, 4, 6, 8, 10]]\n", "[[3, 5, 7, 9, 11]]\n" ] } ], "source": [ "logicals = custom_code_logicals(x_logical_operators, z_logical_operators)\n", "\n", "print(\"Logical operators:\")\n", "print(logicals[0])\n", "print(logicals[1])" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "MPS logical constraint sites:\n", "[[[0], [2, 4, 6, 8], [1, 3, 5, 7, 9], [10]]]\n", "[[[1], [3, 5, 7, 9], [2, 4, 6, 8, 10], [11]]]\n" ] } ], "source": [ "logicals_sites = custom_code_logicals_sites(x_logical_operators, z_logical_operators)\n", "\n", "print(\"MPS logical constraint sites:\")\n", "print(logicals_sites[0])\n", "print(logicals_sites[1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This quantum error correcting code is defined on $5$ physical qubits and has $2$ logical operators because it encodes $1$ logical qubit. This means we will need $5*2 + 2 = 12$ sites in our MPS." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "num_logicals = len(x_logical_operators) + len(z_logical_operators)\n", "num_sites = 2 * len(stabilizer_generators[0]) + num_logicals\n", "\n", "assert num_sites == 12\n", "assert num_logicals == 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, let us define the initial state. First of all we will check that no error implies no correction. This means starting from the all-zero state followed by decoding will return the all-zero state for the logical operators (the final logical operator will thus be identity operator). Thus, we start from the all-zero state for the error and the $|+\\rangle$ state for the logicals." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "error_state = \"0\" * (num_sites - num_logicals)\n", "logicals_state = \"+\" * num_logicals\n", "state_string = logicals_state + error_state\n", "error_mps = create_custom_product_state(\n", " string=state_string, tolerance=1e-17, form=\"Right-canonical\"\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The lists of sites in the previous cells identify the sites where we will apply the XOR constraints. However, the MPOs will also consist of other tensors, such as SWAPs (a.k.a. the tensors' legs crossings) and boundary XOR constraints. In what follows, we define the list of these auxiliary tensors." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "constraints_tensors = [XOR_LEFT, XOR_BULK, SWAP, XOR_RIGHT]\n", "logicals_tensors = [COPY_LEFT, XOR_BULK, SWAP, XOR_RIGHT]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now the fun part, MPS-MPO contraction. But first, we apply the bias channel to our error state. This is done to bias our output towards the received input. This is done by distributing the amplitude around the initial basis product state to other basis product states in the descending order by Hamming distance." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "renormalise = True\n", "sites_to_bias = list(range(num_logicals, num_sites))\n", "error_mps = apply_bitflip_bias(\n", " mps=error_mps,\n", " prob_bias_list=0.01,\n", " sites_to_bias=sites_to_bias,\n", ")" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 1/1 [00:00<00:00, 161.76it/s]\n", "100%|██████████| 1/1 [00:00<00:00, 133.74it/s]\n", "100%|██████████| 4/4 [00:00<00:00, 128.54it/s]\n" ] } ], "source": [ "entropies, bond_dims = [], []\n", "\n", "# for the X and the Z logicals\n", "for i in [0, 1]:\n", " error_mps, entrps, bnd_dims = apply_constraints(\n", " error_mps,\n", " logicals_sites[i],\n", " logicals_tensors,\n", " cut=1e-17,\n", " chi_max=1e4,\n", " renormalise=renormalise,\n", " strategy=\"Optimised\",\n", " return_entropies_and_bond_dims=True,\n", " )\n", " entropies += entrps\n", " bond_dims += bnd_dims\n", "\n", "# for the stabilizer checks\n", "error_mps, entrps, bnd_dims = apply_constraints(\n", " error_mps,\n", " constraint_sites,\n", " constraints_tensors,\n", " cut=1e-17,\n", " chi_max=1e4,\n", " renormalise=renormalise,\n", " strategy=\"Optimised\",\n", " return_entropies_and_bond_dims=True,\n", ")\n", "entropies += entrps\n", "bond_dims += bnd_dims" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us now take a look at how the bond dimensions and entropies behave throughout the decoding process while applying the parity checks." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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aBMAAr0YX3zxhboYd911l+zYsUPdUFG++eYbiUQbNmxQN4otW7bIxx9/LIWFheqX5+zZsz7fhxENR48edZaffvpJItXVV1/tdq6bNm3yum+0XT/46quv3D4friPccsstUXn98LuHvzPcsD159tln5YUXXpD58+fLl19+KRdddJH6m7xw4ULQ/o7DWQOYPXu2jBo1SoYPHy4tWrRQn7NatWqyaNEij/u/+eabct9990mrVq3Ug8urr74qdrtd1q5dK2FjaKJDhw7GmDFjnK+Li4uNBg0aGBkZGR73HzRokNG3b1+3bR07djTuueceIxocP35ctWxu2LDB6z6vvfaaUaNGDSMapKenG8nJyab3j/brB+PGjTMuu+wyw263R/31w+/ie++953yNz5SYmGjMnDnTue3XX381KleubLz11ltB+zv25dSpU+q8erSaZPRum+6z9Gg1Se176NAh9T5HuXDhgsdj5+fnG7GxsW6fGYYNG2b079/f1Pnl5eUZVapUMT744AMjXLSoARQUFEh2draqYrrmCcJrVLU8wXbX/QFPGt72jzQYrwwXX3yxz/3OnDkjjRs3VtXNAQMGyLfffiuRCs0DaE649NJLZejQoXLw4EGv+0b79cPv7D/+8Q8ZMWKEz0SG0XT9XOXk5Ehubq7bNcKYfDTpeLtGZfk7DmgUkL8iov474zwdBU2vnpw8eVKKi4ulXr16btvxGp/bjEcffVT9vpf8Pa5IWowC8nUxdu/e7fE9uEjluXjhhGrj+PHj5frrr5eWLVt63e/KK69U1dFrr71WBYznnntOOnfurG4igSbRCzXcGNDmjXNGU8fUqVNVhxmadNDvodP1A7SX//rrr3LnnXdqcf1KclyHQK5RWf6OTbGbWPLL/ts/JbOUhmrG8owZM2Tp0qWqXyCc/TpaBACrQV8Aboy+2sihU6dOqjjg5tG8eXN5+eWX5amnnpJIctNNNzm/xg0PAQFPvm+//bZq59fNwoUL1Wf2leo4mq5fJAskG2iCySyltWvXltjYWDl27JjbdrxOTEz0+V4EcgSATz75RP2uh5MWTUBluRjYXpaLF25jx46VDz/8UI0kCPQpsFKlStK6dWvZt2+fRLqaNWtKs2bNvJ5rtF4/QEcu/vhHjhyp7fVzXIdArlF5bqrBagIyKz4+Xtq2bevWgevo0HUN2p46xhG816xZI+3atZNw0yIAlOViYHvJ3neMyvB18cIJ/Wy4+b/33nvy6aefStOmTQM+BqrXu3btUsPyIh3avvfv3+/1XKPt+rl67bXX1FDevn37anv98PuJm7brNUJuHowG8naNynpTDUcAAIxWwtj+119/Xb7//nsZPXq0GhmFUUEwbNgwmTx5sjg888wzMmXKFNWsh2GuaApDwe962BiaWLp0qRphsHjxYuO7774z7r77bqNmzZpGbm6u+v4dd9xhTJo0ybn/559/bsTFxRnPPfec8f3336tRKJUqVTJ27dplRKLRo0erESHr1683jh496iznzp1z7lPyM06dOtXIysoy9u/fb2RnZxu33nqrGnXw7bffGpFm4sSJ6rPl5OSoa5OSkmLUrl1bjXbS4fq5jmq55JJLjEcffbTU96Lt+p0+fdrYsWOHKriVzJ49W339008/qe/PmDFD/Q2uXLnS+Prrr40BAwYYTZs2Nc6fP+88Ro8ePYx58+aZ/jsuyyigns0nGn1aPuaz9Gw+Ue2L9wQC547rGR8fr0Ywbdmyxfm9rl27Gqmpqc7XjRs3dsxJdiv43Q0XbQJAoBcD3n77baNZs2Zq/6uvvtpYtWqVEak8/eKgYKigt884fvx453+PevXqGTfffLOxfft2IxINHjzYqF+/vjrXhg0bqtf79u3T5vo54IaO67Znz55S34u267du3TqPv5OOz4ChoFOmTFHnjpt6z549S31u3BRL3gB9/R2XJQCkNJtg3Nh8ss+S0mxCmQJAtGM6aCLSOh10yhUPSlys79E8RcX58sne55kOmohIK0jz4G/FF7s1n4MZAIhIb0wH7RUDABFpzswoH0OsiAGAiPTGGoBXDABEpDfVvs8+AE8YAIhIb4b9t+JvHwtiACAivbEJSO9UEFQxPK36FO26deumMquSxort5ooFMQCQcuLECZXL5JJLLlEpcJHHBfn1P//8c+c+SNPsyNr5448/qoCwc+fOMJ41kQmqC8BfLiCxJDYBkfKXv/xFLciBxFZYkAUZGJGE6+eff3buEw2ZNiMBkrYhOGIxE4oAbALyir+hpBYm+eyzz1S2wu7du6s8/B06dFCZDPv37++xCciRjRTpibEdTSkOWOsUeeux0AXWPn3ppZd8/ny894EHHpBHHnlErXCGQINF4h081TZwztiGBTUA/+J1VlaWOicsQt6jRw+1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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(4, 3))\n", "plt.imshow(entropies, cmap=\"viridis\")\n", "plt.colorbar(label=\"Entropy\")\n", "plt.xlabel(\"Site number\")\n", "plt.ylabel(\"Time ←\")\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(4, 3))\n", "plt.imshow(bond_dims, cmap=\"viridis\", norm=LogNorm(vmin=2**1, vmax=2**10))\n", "cbar = plt.colorbar(\n", " label=\"Bond dimension\",\n", " format=FuncFormatter(lambda x, pos: f\"$2^{{{int(np.log2(x))}}}$\"),\n", " ticks=[2**i for i in range(1, 11, 3)],\n", ")\n", "plt.ylabel(\"Time ←\")\n", "plt.xlabel(\"Site number\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's now take a look at how the truncation error behaves for different bond dimension cutoffs. First, let's look at the bond dimensions appearing in the MPS if we do not impose any truncation." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[2, 4, 8, 16, 32, 64, 32, 16, 8, 4, 2]\n" ] } ], "source": [ "print(error_mps.bond_dimensions)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 8/8 [00:00<00:00, 24.25it/s]\n" ] } ], "source": [ "bond_dims = [np.inf, 128, 64, 32, 16, 8, 4, 2]\n", "inv_bond_dims = [1 / bd for bd in bond_dims]\n", "errors = []\n", "for chi in tqdm(bond_dims):\n", " errors.append(\n", " np.linalg.norm(\n", " error_mps.compress(\n", " chi_max=chi, renormalise=True, return_truncation_errors=True\n", " )[1]\n", " )\n", " )" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(4, 3))\n", "plt.plot(inv_bond_dims, errors, marker=\"o\", label=\"Truncation Error\")\n", "plt.xlabel(\"Inverse Max Bond Dimension\")\n", "plt.ylabel(\"Truncation Error\")\n", "plt.grid(True)\n", "plt.yscale(\"log\")\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, we marginalise over the message bits to get the probability distribution over the four possibilities of a logical operator: $I$, $X$, $Z$, $Y$." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0.9999731 0.00513518 0.00513518 0.0010249 ]\n" ] } ], "source": [ "sites_to_marginalise = list(range(num_logicals, len(error_state) + num_logicals))\n", "logical = error_mps.marginal(sites_to_marginalise=sites_to_marginalise)\n", "logical = logical.dense(flatten=True, renormalise=True)\n", "print(logical)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For the record, we're hunting for the most likely logical operator to be the identity operator. So that's it, we see the biggest probability assigned to the identity operator. Let's see how the probabilities of the four operators change as we change the bond dimension cutoff." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 8/8 [00:00<00:00, 44.33it/s]\n" ] } ], "source": [ "strategy = \"Optimised\"\n", "logical_values = [[] for _ in range(4)]\n", "\n", "for max_bond_dim in tqdm(bond_dims):\n", " error_state = \"0\" * (num_sites - num_logicals)\n", " logicals_state = \"+\" * num_logicals\n", " state_string = logicals_state + error_state\n", " error_mps = create_custom_product_state(string=state_string)\n", "\n", " error_mps = apply_bitflip_bias(\n", " mps=error_mps,\n", " prob_bias_list=0.01,\n", " sites_to_bias=sites_to_bias,\n", " )\n", " for i in [0, 1]:\n", " error_mps = apply_constraints(\n", " error_mps,\n", " logicals_sites[i],\n", " logicals_tensors,\n", " renormalise=renormalise,\n", " strategy=strategy,\n", " chi_max=max_bond_dim,\n", " silent=True,\n", " cut=1e-17,\n", " )\n", " error_mps = apply_constraints(\n", " error_mps,\n", " constraint_sites,\n", " constraints_tensors,\n", " renormalise=renormalise,\n", " strategy=strategy,\n", " chi_max=max_bond_dim,\n", " silent=True,\n", " cut=1e-17,\n", " )\n", "\n", " sites_to_marginalise = list(range(num_logicals, len(error_state) + num_logicals))\n", " logical = error_mps.marginal(sites_to_marginalise=sites_to_marginalise)\n", " logical = logical.dense(flatten=True, renormalise=True)\n", "\n", " for i in range(4):\n", " logical_values[i].append(logical[i])" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAawAAAFLCAYAAACKibiWAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABWcklEQVR4nO2dB3wUxRfHXwppkIQOSei99yIoTWmKgFgoIlLEXv50RHoREBFQpAnSi6KCiCJNRVRqaNKlE3pPQiB9/5/fwz33LnfJ3eVCbvfe9/NZyO3O7s7szs6befPmPS9FURQSBEEQBDfHO7szIAiCIAj2IAJLEARB0AUisARBEARdIAJLEARB0AUisARBEARdIAJLEARB0AUisARBEARdIAJLEARB0AUisARBEARd4NECq2nTprxlFSVKlKAePXqQ0colOA7qAeqDkeqZqxk1ahR5eXll2/2joqIoICCA/vrrLzJifWmaDe3Cli1b+J3if5XOnTtTx44d9SuwFi5cyIWKjIwkT2LVqlVc7nnz5tlMs2nTJk7z2WefPdS86b3RUzdvb28KCwujp59+mnbs2EHuDhoUbd5DQkKofPny1K1bN64LQtYxZswYql+/Pj366KNpjv3444/UunVrypcvHwu1cuXK0YABA+jmzZtO3+/SpUtcX/fv30+exODBg+m7776jAwcOOHyuL3kwGzduzNb7t2nThkJDQ2n58uXUu3dvq2lwzMfHh3slgv3MmjWLcuXKRampqdxznjt3LjVu3Jh27dpFNWrUIHemSJEiNGHCBP47Li6OTp48yZ2bpUuXcs8U/+fIkcOU/vjx4yzc9M6wYcPo/fffz5Z7X79+nRYtWsSbJRBMn3zyCVWvXp0b27x589LevXvp888/p6+++op++eUX7lQ4I7BGjx7NIynLOon6irprpPZOpWbNmlSnTh1+posXLyZH8GiB5efnl6339/f3p+eff54WLFjAlTc8PNzseHx8PK1evZpatGhBBQsWzLZ86hE81/z585t+P/PMM1SlShX65ptv3F5goRPz0ksvme2bOHEivffeezRz5kxu4D766COzemQEfH19ecsO0AnAvdu2bWu2f8WKFdywdurUiZYtW8adR63arlmzZvTCCy+wAHNl3rUdEqO0d1rQ8Ro5ciTXZ3Qs7UVX3bJ9+/bRk08+yWoSFPKJJ56wqub5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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(4, 3))\n", "plt.plot(inv_bond_dims, logical_values[0], marker=\"o\", label=f\"Pr(I)\")\n", "plt.xlabel(\"Inverse Max Bond Dimension\")\n", "plt.ylabel(\"Logical Value\")\n", "plt.title(\"Logical Values vs Bond Dimension (Optimised)\")\n", "plt.grid(True)\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(4, 3))\n", "plt.plot(inv_bond_dims, logical_values[1], marker=\"o\", label=f\"Pr(X)\")\n", "plt.plot(inv_bond_dims, logical_values[2], marker=\"o\", label=f\"Pr(Z)\")\n", "plt.plot(inv_bond_dims, logical_values[3], marker=\"o\", label=f\"Pr(Y)\")\n", "plt.xlabel(\"Inverse Max Bond Dimension\")\n", "plt.ylabel(\"Logical Value\")\n", "plt.title(\"Logical Values vs Bond Dimension (Optimised)\")\n", "plt.grid(True)\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's now put all of this into a function. We'll need this to run the decoder over a bunch of single- and multiqubit errors. For this, we first generate all possible one-, two- and three-qubit errors using `qecsim`." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "one_qubit_paulis = pt.ipauli(n_qubits=num_qubits, min_weight=1, max_weight=1)\n", "two_qubit_paulis = pt.ipauli(n_qubits=num_qubits, min_weight=2, max_weight=2)\n", "three_qubit_paulis = pt.ipauli(n_qubits=num_qubits, min_weight=3, max_weight=3)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "15it [00:00, 84.47it/s]\n" ] } ], "source": [ "one_qubit_outputs = [\n", " decode_custom(\n", " stabilizers=stabilizer_generators,\n", " x_logicals=x_logical_operators,\n", " z_logicals=z_logical_operators,\n", " error=error,\n", " chi_max=1e4,\n", " cut=1e-10,\n", " tolerance=1e-10,\n", " bias_prob=0,\n", " silent=True,\n", " )\n", " for error in tqdm(one_qubit_paulis)\n", "]\n", "one_qubit_corrections_distribution = [output[0] for output in one_qubit_outputs]" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "90it [00:03, 26.20it/s]\n" ] } ], "source": [ "two_qubit_outputs = [\n", " decode_custom(\n", " stabilizers=stabilizer_generators,\n", " x_logicals=x_logical_operators,\n", " z_logicals=z_logical_operators,\n", " error=error,\n", " chi_max=1e4,\n", " cut=1e-10,\n", " tolerance=1e-10,\n", " bias_type=\"Depolarising\",\n", " bias_prob=1e-2,\n", " silent=True,\n", " )\n", " for error in tqdm(two_qubit_paulis)\n", "]\n", "two_qubit_corrections_distribution = [output[0] for output in two_qubit_outputs]" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "270it [00:08, 33.25it/s]\n" ] } ], "source": [ "three_qubit_outputs = [\n", " decode_custom(\n", " stabilizers=stabilizer_generators,\n", " x_logicals=x_logical_operators,\n", " z_logicals=z_logical_operators,\n", " error=error,\n", " chi_max=1e4,\n", " cut=1e-10,\n", " tolerance=1e-10,\n", " bias_type=\"Depolarising\",\n", " bias_prob=1e-2,\n", " silent=True,\n", " )\n", " for error in tqdm(three_qubit_paulis)\n", "]\n", "three_qubit_corrections_distribution = [output[0] for output in three_qubit_outputs]" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.hist(map_distribution_to_pauli(one_qubit_corrections_distribution))\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGdCAYAAACyzRGfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAYDElEQVR4nO3dDWxV5f3A8V8rUFBoEaYthCIucwNfN9FB1S2K3RrjjATmdNFMDdHNIQ7I4uzm+8zK3CaMhRdnEDTRsJFNHRoxWxcxixUVY+Z0Mt1w1GHL3NYWWShE+s85SRur+J+F26e0/XySk7bn3N4+kEv65TnPObeoo6OjIwAAEilO9YMAADLiAwBISnwAAEmJDwAgKfEBACQlPgCApMQHAJCU+AAAkhoSh5h9+/bF9u3bY9SoUVFUVNTXwwEAPoLsnqU7d+6M8ePHR3Fxcf+Kjyw8Kisr+3oYAMABaGxsjAkTJvSv+MhmPDoHX1pa2tfDAQA+gra2tnzyoPP3eL+Kj85TLVl4iA8A6F8+ypIJC04BgKTEBwCQlPgAAJISHwBAUuIDAEhKfAAASYkPACAp8QEAJCU+AICkxAcAkJT4AACSEh8AQFLiAwBISnwAAEkNiUFm0g2PRX/zxqLz+3oIAFAwZj4AgEM7Pv7xj3/EZZddFmPHjo0RI0bESSedFM8//3zX8Y6Ojrj55ptj3Lhx+fHq6up47bXXCj1uAGAwxMd//vOfOPPMM2Po0KHx+OOPxyuvvBI/+clP4sgjj+x6zJ133hlLly6NlStXxqZNm+KII46Impqa2L17d2+MHwAYyGs+fvjDH0ZlZWWsXr26a9+xxx7bbdZjyZIlceONN8aFF16Y77v//vujvLw8Hn744bjkkksKOXYAYKDPfPzmN7+J0047LS666KI4+uij4zOf+Uzcc889Xce3bt0aTU1N+amWTmVlZTFt2rRoaGjY73O2t7dHW1tbtw0AGLh6FB9/+9vfYsWKFXHcccfFE088Eddcc01cd911cd999+XHs/DIZDMd75V93Xns/erq6vJA6dyymRUAYODqUXzs27cvTj311PjBD36Qz3pcffXVcdVVV+XrOw5UbW1ttLa2dm2NjY0H/FwAwACLj+wKluOPP77bvilTpsS2bdvyzysqKvKPzc3N3R6Tfd157P1KSkqitLS02wYADFw9io/sSpctW7Z02/eXv/wljjnmmK7Fp1lk1NfXdx3P1nBkV71UVVUVaswAwGC52mXBggVxxhln5KddvvKVr8Szzz4bP//5z/MtU1RUFPPnz4877rgjXxeSxchNN90U48ePj5kzZ/bWnwEAGKjxcfrpp8dDDz2Ur9O4/fbb87jILq299NJLux5z/fXXx65du/L1IC0tLXHWWWfFhg0bYvjw4b0xfgCgnynqyG7OcQjJTtNkV71ki097Y/2H93YBgL79/e29XQCApMQHAJCU+AAAkhIfAEBS4gMASEp8AABJiQ8AICnxAQAkJT4AgKTEBwCQlPgAAJISHwBAUuIDAEhKfAAASYkPACAp8QEAJCU+AICkxAcAkJT4AACSEh8AQFLiAwBISnwAAEmJDwAgKfEBACQlPgCApMQHAJCU+AAAkhIfAEBS4gMASEp8AABJiQ8AICnxAQAkJT4AgKTEBwCQlPgAAJISHwBAUuIDAEhKfAAASYkPACAp8QEAJCU+AICkxAcAkJT4AACSEh8AQFLiAwBISnwAAEmJDwDg0I2PW2+9NYqKirptkydP7jq+e/fumDt3bowdOzZGjhwZs2fPjubm5t4YNwAwWGY+TjjhhHjrrbe6tj/84Q9dxxYsWBDr16+PdevWxcaNG2P79u0xa9asQo8ZAOjHhvT4G4YMiYqKig/sb21tjVWrVsWDDz4YM2bMyPetXr06pkyZEs8880xMnz69MCMGAAbXzMdrr70W48ePj49//ONx6aWXxrZt2/L9mzdvjr1790Z1dXXXY7NTMhMnToyGhoYPfb729vZoa2vrtgEAA1eP4mPatGmxZs2a2LBhQ6xYsSK2bt0an/vc52Lnzp3R1NQUw4YNi9GjR3f7nvLy8vzYh6mrq4uysrKurbKy8sD/NADAwDrtct5553V9fvLJJ+cxcswxx8Qvf/nLGDFixAENoLa2NhYuXNj1dTbzIUAAYOA6qEtts1mOT37yk/H666/n60D27NkTLS0t3R6TXe2yvzUinUpKSqK0tLTbBgAMXAcVH++880789a9/jXHjxsXUqVNj6NChUV9f33V8y5Yt+ZqQqqqqQowVABhsp12+/e1vxwUXXJCfaskuo73lllvisMMOi69+9av5eo05c+bkp1DGjBmTz2DMmzcvDw9XugAABxQfb775Zh4a//rXv+Koo46Ks846K7+MNvs8s3jx4iguLs5vLpZdxVJTUxPLly/vyY8AAAa4oo6Ojo44hGQLTrNZlOy+Ib2x/mPSDY9Ff/PGovP7eggAULDf397bBQBISnwAAEmJDwAgKfEBACQlPgCApMQHAJCU+AAAkhIfAEBS4gMASEp8AABJiQ8AICnxAQAkJT4AgKTEBwCQlPgAAJISHwBAUuIDAEhKfAAASYkPACAp8QEAJCU+AICkxAcAkJT4AACSEh8AQFLiAwBISnwAAEmJDwAgKfEBACQlPgCApMQHAJCU+AAAkhIfAEBS4gMASEp8AABJiQ8AICnxAQAkJT4AgKTEBwCQlPgAAJISHwBAUuIDAEhKfAAASYkPACAp8QEAJCU+AICkxAcA0H/iY9GiRVFUVBTz58/v2rd79+6YO3dujB07NkaOHBmzZ8+O5ubmQowVABjM8fHcc8/F3XffHSeffHK3/QsWLIj169fHunXrYuPGjbF9+/aYNWtWIcYKAAzW+HjnnXfi0ksvjXvuuSeOPPLIrv2tra2xatWquOuuu2LGjBkxderUWL16dTz99NPxzDPPFHLcAMBgio/stMr5558f1dXV3fZv3rw59u7d223/5MmTY+LEidHQ0LDf52pvb4+2trZuGwAwcA3p6TesXbs2Xnjhhfy0y/s1NTXFsGHDYvTo0d32l5eX58f2p66uLm677baeDgMAGAwzH42NjfGtb30rHnjggRg+fHhBBlBbW5ufruncsp8BAAxcPYqP7LTKjh074tRTT40hQ4bkW7aodOnSpfnn2QzHnj17oqWlpdv3ZVe7VFRU7Pc5S0pKorS0tNsGAAxcPTrtcu6558ZLL73Ubd+VV16Zr+v4zne+E5WVlTF06NCor6/PL7HNbNmyJbZt2xZVVVWFHTkAMPDjY9SoUXHiiSd223fEEUfk9/To3D9nzpxYuHBhjBkzJp/FmDdvXh4e06dPL+zIAYDBseD0f1m8eHEUFxfnMx/ZlSw1NTWxfPnyQv8YAKCfKuro6OiIQ0h2qW1ZWVm++LQ31n9MuuGx6G/eWHR+Xw8BAAr2+9t7uwAASYkPACAp8QEAJCU+AICkxAcAkJT4AACSEh8AQFLiAwBISnwAAEmJDwAgKfEBACQlPgCApMQHAJCU+AAAkhIfAEBS4gMASEp8AABJiQ8AICnxAQAkJT4AgKTEBwCQlPgAAJISHwBAUuIDAEhKfAAASYkPACAp8QEAJCU+AICkxAcAkJT4AACSEh8AQFLiAwBISnwAAEmJDwAgKfEBACQlPgCApMQHAJCU+AAAkhIfAEBS4gMASEp8AABJiQ8AICnxAQAkJT4AgKTEBwCQlPgAAJISHwDAoRsfK1asiJNPPjlKS0vzraqqKh5//PGu47t37465c+fG2LFjY+TIkTF79uxobm7ujXEDAIMhPiZMmBCLFi2KzZs3x/PPPx8zZsyICy+8MF5++eX8+IIFC2L9+vWxbt262LhxY2zfvj1mzZrVW2MHAPqhoo6Ojo6DeYIxY8bEj370o/jyl78cRx11VDz44IP555lXX301pkyZEg0NDTF9+vSP9HxtbW1RVlYWra2t+exKoU264bHob95YdH5fDwEACvb7+4DXfLz77ruxdu3a2LVrV376JZsN2bt3b1RXV3c9ZvLkyTFx4sQ8Pj5Me3t7PuD3bgDAwNXj+HjppZfy9RwlJSXxjW98Ix566KE4/vjjo6mpKYYNGxajR4/u9vjy8vL82Iepq6vLS6lzq6ysPLA/CQAwMOPjU5/6VLz44ouxadOmuOaaa+Lyyy+PV1555YAHUFtbm0/RdG6NjY0H/FwAwKFvSE+/IZvd+MQnPpF/PnXq1Hjuuefipz/9aVx88cWxZ8+eaGlp6Tb7kV3tUlFR8aHPl82gZBsAMDgc9H0+9u3bl6/byEJk6NChUV9f33Vsy5YtsW3btnxNCABAj2c+slMk5513Xr6IdOfOnfmVLU8++WQ88cQT+XqNOXPmxMKFC/MrYLKVrvPmzcvD46Ne6QIADHw9io8dO3bE1772tXjrrbfy2MhuOJaFxxe+8IX8+OLFi6O4uDi/uVg2G1JTUxPLly/vrbEDAIPxPh+F5j4fH+Q+HwAc6pLc5wMA4ECIDwAgKfEBACQlPgCApMQHAJCU+AAAkhIfAEBS4gMASEp8AABJiQ8AICnxAQAkJT4AgKTEBwCQlPgAAJISHwBAUuIDAEhKfAAASYkPACAp8QEAJCU+AICkxAcAkJT4AACSEh8AQFLiAwBISnwAAEmJDwAgKfEBACQlPgCApMQHAJCU+AAAkhIfAEBS4gMASEp8AABJiQ8AICnxAQAkJT4AgKTEBwCQlPgAAJISHwBAUuIDAEhKfAAASYkPACAp8QEAJCU+AICkxAcAkJT4AACSEh8AwKEbH3V1dXH66afHqFGj4uijj46ZM2fGli1buj1m9+7dMXfu3Bg7dmyMHDkyZs+eHc3NzYUeNwAwGOJj48aNeVg888wz8dvf/jb27t0bX/ziF2PXrl1dj1mwYEGsX78+1q1blz9++/btMWvWrN4YOwDQDw3pyYM3bNjQ7es1a9bkMyCbN2+Oz3/+89Ha2hqrVq2KBx98MGbMmJE/ZvXq1TFlypQ8WKZPn17Y0QMAg2vNRxYbmTFjxuQfswjJZkOqq6u7HjN58uSYOHFiNDQ07Pc52tvbo62trdsGAAxcBxwf+/bti/nz58eZZ54ZJ554Yr6vqakphg0bFqNHj+722PLy8vzYh60jKSsr69oqKysPdEgAwECOj2ztx5/+9KdYu3btQQ2gtrY2n0Hp3BobGw/q+QCAAbTmo9O1114bjz76aDz11FMxYcKErv0VFRWxZ8+eaGlp6Tb7kV3tkh3bn5KSknwDAAaHHs18dHR05OHx0EMPxe9///s49thjux2fOnVqDB06NOrr67v2ZZfibtu2Laqqqgo3agBgcMx8ZKdasitZHnnkkfxeH53rOLK1GiNGjMg/zpkzJxYuXJgvQi0tLY158+bl4eFKFwCgx/GxYsWK/OPZZ5/dbX92Oe0VV1yRf7548eIoLi7Oby6WXclSU1MTy5cv97cNAPQ8PrLTLv/L8OHDY9myZfkGAPB+3tsFAEhKfAAASYkPACAp8QEAJCU+AICkxAcAkJT4AACSEh8AQFLiAwBISnwAAEmJDwAgKfEBACQlPgCApMQHAJCU+AAAkhIfAEBS4gMASEp8AABJiQ8AICnxAQAkJT4AgKTEBwCQlPgAAJISHwBAUuIDAEhKfAAASYkPACCpIWl/HED/M+mGx6I/emPR+X09BNgvMx8AQFLiAwBISnwAAEmJDwAgKfEBACQlPgCApMQHAJCU+AAAkhIfAEBS4gMASEp8AABJeW8X6Mfv3+G9O4D+yMwHAJCU+AAAkhIfAEBS4gMASEp8AABJiQ8A4NCOj6eeeiouuOCCGD9+fBQVFcXDDz/c7XhHR0fcfPPNMW7cuBgxYkRUV1fHa6+9VsgxAwCDKT527doVp5xySixbtmy/x++8885YunRprFy5MjZt2hRHHHFE1NTUxO7duwsxXgBgsN1k7Lzzzsu3/clmPZYsWRI33nhjXHjhhfm++++/P8rLy/MZkksuueTgRwwA9GsFXfOxdevWaGpqyk+1dCorK4tp06ZFQ0NDIX8UANBPFfT26ll4ZLKZjvfKvu489n7t7e351qmtra2QQwIADjF9frVLXV1dPjvSuVVWVvb1kACA/hIfFRUV+cfm5uZu+7OvO4+9X21tbbS2tnZtjY2NhRwSADCQ4+PYY4/NI6O+vr7baZTsqpeqqqr9fk9JSUmUlpZ22wCAgavHaz7eeeedeP3117stMn3xxRdjzJgxMXHixJg/f37ccccdcdxxx+UxctNNN+X3BJk5c2ahxw4ADIb4eP755+Occ87p+nrhwoX5x8svvzzWrFkT119/fX4vkKuvvjpaWlrirLPOig0bNsTw4cMLO3IAYHDEx9lnn53fz+PDZHc9vf322/MNAOCQu9oFABhcxAcAkJT4AACSEh8AQFLiAwBISnwAAEmJDwAgKfEBACQlPgCApMQHAJCU+AAAkhIfAEBS4gMASEp8AABJiQ8AICnxAQAkJT4AgKTEBwCQlPgAAJISHwBAUuIDAEhKfAAASYkPACAp8QEAJCU+AICkxAcAkJT4AACSEh8AQFLiAwBISnwAAEmJDwAgKfEBACQlPgCApMQHAJDUkLQ/DgAGlkk3PBb9zRuLzu/Tn2/mAwBISnwAAEmJDwAgKfEBACQlPgCApMQHAJCU+AAAkhIfAEBS4gMASEp8AABJiQ8AICnxAQAMjPhYtmxZTJo0KYYPHx7Tpk2LZ599trd+FAAw2OPjF7/4RSxcuDBuueWWeOGFF+KUU06Jmpqa2LFjR2/8OABgsMfHXXfdFVdddVVceeWVcfzxx8fKlSvj8MMPj3vvvbc3fhwA0I8MKfQT7tmzJzZv3hy1tbVd+4qLi6O6ujoaGho+8Pj29vZ869Ta2pp/bGtri96wr/2/0d/01t8F3XltMJBeGxmvjzT64+ujrRdeG53P2dHRkT4+3n777Xj33XejvLy82/7s61dfffUDj6+rq4vbbrvtA/srKysLPbR+q2xJX4+AQ5XXBv8frw/64rWxc+fOKCsrSxsfPZXNkGTrQzrt27cv/v3vf8fYsWOjqKio4FWWRU1jY2OUlpYW9LkZvLyu6A1eV/S311Y245GFx/jx4//nYwseHx/72MfisMMOi+bm5m77s68rKio+8PiSkpJ8e6/Ro0dHb8r+sv1jptC8rugNXlf0p9fW/5rx6LUFp8OGDYupU6dGfX19t9mM7OuqqqpC/zgAoJ/pldMu2WmUyy+/PE477bT47Gc/G0uWLIldu3blV78AAINbr8THxRdfHP/85z/j5ptvjqampvj0pz8dGzZs+MAi1NSy0zvZvUfef5oHDobXFb3B64qB/Noq6vgo18QAABSI93YBAJISHwBAUuIDAEhKfAAASQ2q+Ljiiiti5syZfT0MBoAnn3wyvwPvh23nnHNOXw+Rfihb/5+9D1b2LuDvt3z58vwGjG+++WafjI3+6913340zzjgjZs2a1W1/9l5q2Z1Ov/e97yUf06CKDyiU7B/yW2+99YHt7rvvzuPjm9/8Zl8PkX4oe+2sXr06Nm3alL+WOm3dujWuv/76+NnPfhYTJkzo0zHS/xx22GGxZs2a/JYXDzzwQNf+efPmxZgxY/LLblMbVJfaZjMfLS0t8fDDD/f1UBiA/vznP8e0adPiuuuuizvuuKOvh0M/dt9998W1114bf/zjH2PSpElx7rnn5rMev/71r/t6aPRjS5cujVtvvTVefvnlePbZZ+Oiiy6K5557Lk455ZTkYxEfUADZ6yq7m+/kyZPjkUceKfibIjL4ZKeIs2nxbKr8+9//fv4L46ijjurrYdGPdXR0xIwZM/KZkJdeeimf+bjxxhv7ZCziAw5S9t5FX/rSl+KNN97Ip8tHjRrV10NiANixY0eccMIJ+bt8/+pXv7JejYJ49dVXY8qUKXHSSSfFCy+8EEOG9M2b21vzAQfpu9/9bjQ0NOQzHsKDQjn66KPj61//ev6LQnhQKPfee28cfvjh+Tqivly8LD7gIKxduzZ+/OMf5x+PO+64vh4OA0z2v9K++p8pA8/TTz8dixcvjkcffTQ/TTxnzpz8VExfEB9wgF588cX8H++iRYv2e2kkwKHiv//9b7704JprrslvBbBq1ap80enKlSv7ZDziAw7A22+/nU+Fn3322XHZZZfl79783i17V2eAQ0VtbW0+y5H9ZymTXUWVzdpml3Bn69VSM58HB+Cxxx6Lv//97/k2bty4Dxw/5phj+uQfNMD7bdy4MZYtW5bfHDFb79EpW1OUXb6dzeD+7ne/S3qV3qC62gUA6HtOuwAASYkPACAp8QEAJCU+AICkxAcAkJT4AACSEh8AQFLiAwBISnwAAEmJDwAgKfEBACQlPgCASOn/AAHpVEdnNIAGAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.hist(map_distribution_to_pauli(two_qubit_corrections_distribution))\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.hist(map_distribution_to_pauli(three_qubit_corrections_distribution))\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's now check by hand that some of the decoder's nontrivial outputs are indeed correct. First of all, from all one-qubit errors we get the Identity operator which corresponds to the fact that the 5-qubit code corrects all one-qubit errors. However, this code can also correct some two-qubit errors." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "one_qubit_paulis = list(pt.ipauli(n_qubits=num_qubits, min_weight=1, max_weight=1))\n", "two_qubit_paulis = list(pt.ipauli(n_qubits=num_qubits, min_weight=2, max_weight=2))\n", "three_qubit_paulis = list(pt.ipauli(n_qubits=num_qubits, min_weight=3, max_weight=3))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's take a look at the errors which result in the Identity logical operator as the output." ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "XXIII\n", "XZIII\n", "XYIII\n", "ZXIII\n", "ZZIII\n", "ZYIII\n", "YXIII\n", "YZIII\n", "XIXII\n", "XIZII\n", "ZIXII\n", "ZIZII\n", "YIXII\n", "YIZII\n", "XIIXI\n", "XIIZI\n", "XIIYI\n", "ZIIXI\n", "ZIIZI\n", "ZIIYI\n", "YIIXI\n", "YIIZI\n", "YIIYI\n", "XIIIX\n", "XIIIZ\n", "ZIIIX\n", "ZIIIZ\n", "YIIIX\n", "YIIIZ\n", "YIIIY\n", "IXXII\n", "IXZII\n", "IXYII\n", "IZXII\n", "IZZII\n", "IYZII\n", "IXIXI\n", "IXIZI\n", "IXIYI\n", "IZIXI\n", "IZIZI\n", "IYIZI\n", "IXIIX\n", "IZIIX\n", "IZIIZ\n", "IYIIX\n", "IIXXI\n", "IIXZI\n", "IIXYI\n", "IIZXI\n", "IIZZI\n", "IIYZI\n", "IIXIX\n", "IIXIZ\n", "IIZIX\n", "IIZIZ\n", "IIYIZ\n", "IIIXX\n", "IIIXZ\n", "IIIZX\n", "IIIZZ\n" ] } ], "source": [ "for i, correction in enumerate(\n", " map_distribution_to_pauli(two_qubit_corrections_distribution)\n", "):\n", " if correction == \"I\":\n", " print(two_qubit_paulis[i])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now dive a bit more into what is happening inside the decoder to be able to better understand the results. For example, the first error $(X_0 X_1)$ from the list above would triggers all the parity checks. This can be seen from the actual tensor network we are building (see the image below). However, in the current setup the stabilisers are being set to $0$, which is the result of the fact that the $\\text{XOR}$ tensors we use project out the inputs of odd (i.e., equal to $1$) parity. After applying the logical-operator MPOs and performing marginalization, the process yields a marginal distribution over codewords, each reflecting different parities of the logical operators.\n", "\n", "\"Tensor-network" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Perfect, so we see how the failure rate goes down with the bond dimension." ] } ], "metadata": { "kernelspec": { "display_name": "mdopt-ZdbamFdU-py3.10", "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.10.16" } }, "nbformat": 4, "nbformat_minor": 2 }