1474 lines
92 KiB
Plaintext
1474 lines
92 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "3d6f69f5-07dd-4053-82a2-56d224c73c8d",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"source": [
|
||
"{/* cspell:ignore mapsto multigraph inds extrap sharex sharey pidx */}\n",
|
||
"\n",
|
||
"# Utility-scale error mitigation with probabilistic error amplification\n",
|
||
"*Usage estimate: 60 minutes on IBM Kyiv (NOTE: This is an estimate only. Your runtime may vary.)*"
|
||
]
|
||
},
|
||
{
|
||
"attachments": {},
|
||
"cell_type": "markdown",
|
||
"id": "b06bc36a-212e-4f9a-a81e-e1870fc0e629",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Background\n",
|
||
"\n",
|
||
"The tutorial demonstrates how to run a utility-scale error mitigation experiment with Qiskit Runtime using an experimental version of *zero noise extrapolation* (ZNE) with *probabilistic error amplification* (PEA).\n",
|
||
"\n",
|
||
"\n",
|
||
"__Reference__: Y. Kim et al. *Evidence for the utility of quantum computing before fault tolerance.* [Nature 618.7965 (2023)](https://www.nature.com/articles/s41586-023-06096-3)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "8ea69d52-514c-4141-9317-3cb26a8685b8",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"source": [
|
||
"### Zero-Noise Extrapolation (ZNE)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "c6c0d2e9-25c7-4d80-8863-7fc4b86e75c1",
|
||
"metadata": {},
|
||
"source": [
|
||
"Zero-noise extrapolation (ZNE) is an error mitigation technique that removes the effects of an *unknown* noise during circuit execution that can be scaled in a *known* way.\n",
|
||
"\n",
|
||
"It assumes expectation values scale with noise by a known function\n",
|
||
"\n",
|
||
"$$\n",
|
||
"\\langle A(\\lambda) \\rangle = \\langle A(0) \\rangle =+ \\sum_{k=0}^{m} a_k \\lambda^k + R\n",
|
||
"$$\n",
|
||
"where $\\lambda$ parameterizes the noise strength and can be amplified."
|
||
]
|
||
},
|
||
{
|
||
"attachments": {},
|
||
"cell_type": "markdown",
|
||
"id": "fa804cd1-080e-4b2b-9024-0dffc08a427c",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"source": [
|
||
"We can implement ZNE with the following steps:\n",
|
||
"\n",
|
||
"1. Amplify circuit noise for several noise factors $\\lambda_1, \\lambda_2, ... $\n",
|
||
"2. Run every noise-amplified circuit to measure $\\langle A(\\lambda_1)\\rangle, ...$\n",
|
||
"3. Extrapolate back to the zero-noise limit $\\langle A(0)\\rangle$\n",
|
||
"\n",
|
||
"\n",
|
||
""
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "4bb6a1a4-7dc4-47ac-9e81-02929901feb7",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Amplify noise for ZNE"
|
||
]
|
||
},
|
||
{
|
||
"attachments": {},
|
||
"cell_type": "markdown",
|
||
"id": "b6bb245c-6dc1-49ae-b511-92e66619d7b3",
|
||
"metadata": {},
|
||
"source": [
|
||
"The main challenge in successfully implementing ZNE is to have an accurate model for noise in the expectation value and to amplify the noise in a known way.\n",
|
||
"\n",
|
||
"There are three common ways error amplification is implemented for ZNE.\n",
|
||
"\n",
|
||
"| **Pulse stretching** | **Gate folding** | **Probabilistic error amplification** |\n",
|
||
"|-----------|-----------|-----------|\n",
|
||
"| Scale pulse duration via calibration | Repeat gates in identity cycles $U\\mapsto U(U^{-1}U)^{\\lambda-1}/2$ | Add noise via sampling Pauli channels |\n",
|
||
"|  |  |  |\n",
|
||
"| Kandala et al. Nature (2019) | Shultz et al. PRA (2022) | Li & Benjamin PRX (2017) |"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "94188baa-79de-4258-912b-9f75d3bcbd30",
|
||
"metadata": {},
|
||
"source": [
|
||
"For utility-scale experiments, *probabilistic error amplification* (PEA) is the most attractive.\n",
|
||
"- Pulse stretching assumes gate noise is proportional to duration, which is typically not true. Calibration is also costly.\n",
|
||
"- Gate folding requires large stretch factors that greatly limit the depth of circuits that can be run.\n",
|
||
"- PEA can be applied to any circuit that can be run with native noise factor ($\\lambda=1$) but requires learning the noise model."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "87b0337b-cf2b-4d72-b22a-ad72b736f374",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"source": [
|
||
"### Learn the noise model for PEA"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "22c21618-fb61-457b-86e6-0029a2272633",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"source": [
|
||
"PEA assumes the same layer-based noise model as *probabilistic error cancellation* (PEC); however, it avoids the sampling overhead that scales exponentially with the circuit noise."
|
||
]
|
||
},
|
||
{
|
||
"attachments": {},
|
||
"cell_type": "markdown",
|
||
"id": "8f885d1c-a54a-47c3-b567-c6bc7389b3e7",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"source": [
|
||
"| **Step 1** | **Step 2** | **Step 3** |\n",
|
||
"|-----------|-----------|-----------|\n",
|
||
"| Pauli twirl layers of two-qubit gates | Repeat identity pairs of layers and learn the noise | Derive a fidelity (error for each noise channel) |\n",
|
||
"|  |  |  |\n",
|
||
"\n",
|
||
"__Reference__: E. van den Berg, Z. Minev, A. Kandala, and K. Temme, _Probabilistic error cancellation with sparse Pauli-Lindblad models on noisy quantum processors_ [arXiv:2201.09866](https://arxiv.org/abs/2201.09866)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "a6fc9357",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Requirements\n",
|
||
"\n",
|
||
"Before starting this tutorial, ensure that you have the following installed:\n",
|
||
"\n",
|
||
"- Qiskit SDK 1.0 or later with Visualization support (`pip install 'qiskit[visualization]'`)\n",
|
||
"- Qiskit Runtime 0.22 or later (`pip install qiskit-ibm-runtime`)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "eb1e2b8a",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Setup"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"id": "af76d0bc",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"from __future__ import annotations\n",
|
||
"from collections.abc import Sequence\n",
|
||
"from collections import defaultdict\n",
|
||
"import numpy as np\n",
|
||
"import rustworkx\n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"\n",
|
||
"from qiskit.circuit import QuantumCircuit, Parameter\n",
|
||
"from qiskit.circuit.library import CXGate, CZGate, ECRGate\n",
|
||
"from qiskit.providers import Backend\n",
|
||
"from qiskit.visualization import plot_error_map\n",
|
||
"from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager\n",
|
||
"from qiskit.quantum_info import SparsePauliOp\n",
|
||
"from qiskit.primitives import PubResult\n",
|
||
"\n",
|
||
"from qiskit_ibm_runtime import QiskitRuntimeService\n",
|
||
"from qiskit_ibm_runtime import EstimatorV2 as Estimator"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "aef7ca65-a2cd-4440-ac2e-953d218df219",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Step 1: Map classical inputs to a quantum problem"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "20ef0ab5-dc96-4e52-9836-f5339190899d",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Create a parameterized Ising model circuit"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "4729e2ed-64f1-44ce-ad02-8efe792ad90f",
|
||
"metadata": {},
|
||
"source": [
|
||
"First, choose a backend to run on. This demonstration runs on a 127-qubit backend, but you can modify this to any backend available to you."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "50c0b07c-b43a-4d48-8d06-d141469fd0e6",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"service = QiskitRuntimeService()\n",
|
||
"backend = service.least_busy(\n",
|
||
" operational=True, simulator=False, min_num_qubits=127\n",
|
||
")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "e589eef0-755e-4a98-bea4-3ee5e5fdbe85",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Helper functions for circuit construction"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "d63c2c20-7694-427a-b0f1-68bfe4c720d1",
|
||
"metadata": {},
|
||
"source": [
|
||
"Next, create some helper functions to construct the circuits for the Trotterized time evolution of a two-dimensional transverse-field Ising model that adheres to the topology of the backend."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"id": "795e151a-a4d9-44ea-b349-b10256663611",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"\"\"\"Trotter circuit generation\"\"\"\n",
|
||
"\n",
|
||
"\n",
|
||
"def remove_qubit_couplings(\n",
|
||
" couplings: Sequence[tuple[int, int]], qubits: Sequence[int] | None = None\n",
|
||
") -> list[tuple[int, int]]:\n",
|
||
" \"\"\"Remove qubits from a coupling list.\n",
|
||
"\n",
|
||
" Args:\n",
|
||
" couplings: A sequence of qubit couplings.\n",
|
||
" qubits: Optional, the qubits to remove.\n",
|
||
"\n",
|
||
" Returns:\n",
|
||
" The input couplings with the specified qubits removed.\n",
|
||
" \"\"\"\n",
|
||
" if qubits is None:\n",
|
||
" return couplings\n",
|
||
" qubits = set(qubits)\n",
|
||
" return [edge for edge in couplings if not qubits.intersection(edge)]\n",
|
||
"\n",
|
||
"\n",
|
||
"def coupling_qubits(\n",
|
||
" *couplings: Sequence[tuple[int, int]],\n",
|
||
" allowed_qubits: Sequence[int] | None = None,\n",
|
||
") -> list[int]:\n",
|
||
" \"\"\"Return a sorted list of all qubits involved in 1 or more couplings lists.\n",
|
||
"\n",
|
||
" Args:\n",
|
||
" couplings: 1 or more coupling lists.\n",
|
||
" allowed_qubits: Optional, the allowed qubits to include. If None all\n",
|
||
" qubits are allowed.\n",
|
||
"\n",
|
||
" Returns:\n",
|
||
" The intersection of all qubits in the couplings and the allowed qubits.\n",
|
||
" \"\"\"\n",
|
||
" qubits = set()\n",
|
||
" for edges in couplings:\n",
|
||
" for edge in edges:\n",
|
||
" qubits.update(edge)\n",
|
||
" if allowed_qubits is not None:\n",
|
||
" qubits = qubits.intersection(allowed_qubits)\n",
|
||
" return list(qubits)\n",
|
||
"\n",
|
||
"\n",
|
||
"def construct_layer_couplings(\n",
|
||
" backend: Backend,\n",
|
||
") -> list[list[tuple[int, int]]]:\n",
|
||
" \"\"\"Separate a coupling map into disjoint 2-qubit gate layers.\n",
|
||
"\n",
|
||
" Args:\n",
|
||
" backend: A backend to construct layer couplings for.\n",
|
||
"\n",
|
||
" Returns:\n",
|
||
" A list of disjoint layers of directed couplings for the input coupling map.\n",
|
||
" \"\"\"\n",
|
||
" coupling_graph = backend.coupling_map.graph.to_undirected(\n",
|
||
" multigraph=False\n",
|
||
" )\n",
|
||
" edge_coloring = rustworkx.graph_bipartite_edge_color(coupling_graph)\n",
|
||
"\n",
|
||
" layers = defaultdict(list)\n",
|
||
" for edge_idx, color in edge_coloring.items():\n",
|
||
" layers[color].append(\n",
|
||
" coupling_graph.get_edge_endpoints_by_index(edge_idx)\n",
|
||
" )\n",
|
||
" layers = [sorted(layers[i]) for i in sorted(layers.keys())]\n",
|
||
"\n",
|
||
" return layers\n",
|
||
"\n",
|
||
"\n",
|
||
"def entangling_layer(\n",
|
||
" gate_2q: str,\n",
|
||
" couplings: Sequence[tuple[int, int]],\n",
|
||
" qubits: Sequence[int] | None = None,\n",
|
||
") -> QuantumCircuit:\n",
|
||
" \"\"\"Generating a entangling layer for the specified couplings.\n",
|
||
"\n",
|
||
" This corresponds to a Trotter layer for a ZZ Ising term with angle Pi/2.\n",
|
||
"\n",
|
||
" Args:\n",
|
||
" gate_2q: The 2-qubit basis gate for the layer, should be \"cx\", \"cz\", or \"ecr\".\n",
|
||
" couplings: A sequence of qubit couplings to add CX gates to.\n",
|
||
" qubits: Optional, the physical qubits for the layer. Any couplings involving\n",
|
||
" qubits not in this list will be removed. If None the range up to the largest\n",
|
||
" qubit in the couplings will be used.\n",
|
||
"\n",
|
||
" Returns:\n",
|
||
" The QuantumCircuit for the entangling layer.\n",
|
||
" \"\"\"\n",
|
||
" # Get qubits and convert to set to order\n",
|
||
" if qubits is None:\n",
|
||
" qubits = range(1 + max(coupling_qubits(couplings)))\n",
|
||
" qubits = set(qubits)\n",
|
||
"\n",
|
||
" # Mapping of physical qubit to virtual qubit\n",
|
||
" qubit_mapping = {q: i for i, q in enumerate(qubits)}\n",
|
||
"\n",
|
||
" # Convert couplings to indices for virtual qubits\n",
|
||
" indices = [\n",
|
||
" [qubit_mapping[i] for i in edge]\n",
|
||
" for edge in couplings\n",
|
||
" if qubits.issuperset(edge)\n",
|
||
" ]\n",
|
||
"\n",
|
||
" # Layer circuit on virtual qubits\n",
|
||
" circuit = QuantumCircuit(len(qubits))\n",
|
||
"\n",
|
||
" # Get 2-qubit basis gate and pre and post rotation circuits\n",
|
||
" gate2q = None\n",
|
||
" pre = QuantumCircuit(2)\n",
|
||
" post = QuantumCircuit(2)\n",
|
||
"\n",
|
||
" if gate_2q == \"cx\":\n",
|
||
" gate2q = CXGate()\n",
|
||
" # Pre-rotation\n",
|
||
" pre.sdg(0)\n",
|
||
" pre.z(1)\n",
|
||
" pre.sx(1)\n",
|
||
" pre.s(1)\n",
|
||
" # Post-rotation\n",
|
||
" post.sdg(1)\n",
|
||
" post.sxdg(1)\n",
|
||
" post.s(1)\n",
|
||
" elif gate_2q == \"ecr\":\n",
|
||
" gate2q = ECRGate()\n",
|
||
" # Pre-rotation\n",
|
||
" pre.z(0)\n",
|
||
" pre.s(1)\n",
|
||
" pre.sx(1)\n",
|
||
" pre.s(1)\n",
|
||
" # Post-rotation\n",
|
||
" post.x(0)\n",
|
||
" post.sdg(1)\n",
|
||
" post.sxdg(1)\n",
|
||
" post.s(1)\n",
|
||
" elif gate_2q == \"cz\":\n",
|
||
" gate2q = CZGate()\n",
|
||
" # Identity pre-rotation\n",
|
||
" # Post-rotation\n",
|
||
" post.sdg([0, 1])\n",
|
||
" else:\n",
|
||
" raise ValueError(\n",
|
||
" f\"Invalid 2-qubit basis gate {gate_2q}, should be 'cx', 'cz', or 'ecr'\"\n",
|
||
" )\n",
|
||
"\n",
|
||
" # Add 1Q pre-rotations\n",
|
||
" for inds in indices:\n",
|
||
" circuit.compose(pre, qubits=inds, inplace=True)\n",
|
||
"\n",
|
||
" # Use barriers around 2-qubit basis gate to specify a layer for PEA noise learning\n",
|
||
" circuit.barrier()\n",
|
||
" for inds in indices:\n",
|
||
" circuit.append(gate2q, (inds[0], inds[1]))\n",
|
||
" circuit.barrier()\n",
|
||
"\n",
|
||
" # Add 1Q post-rotations after barrier\n",
|
||
" for inds in indices:\n",
|
||
" circuit.compose(post, qubits=inds, inplace=True)\n",
|
||
"\n",
|
||
" # Add physical qubits as metadata\n",
|
||
" circuit.metadata[\"physical_qubits\"] = tuple(qubits)\n",
|
||
"\n",
|
||
" return circuit\n",
|
||
"\n",
|
||
"\n",
|
||
"def trotter_circuit(\n",
|
||
" theta: Parameter | float,\n",
|
||
" layer_couplings: Sequence[Sequence[tuple[int, int]]],\n",
|
||
" num_steps: int,\n",
|
||
" gate_2q: str | None = \"cx\",\n",
|
||
" backend: Backend | None = None,\n",
|
||
" qubits: Sequence[int] | None = None,\n",
|
||
") -> QuantumCircuit:\n",
|
||
" \"\"\"Generate a Trotter circuit for the 2D Ising\n",
|
||
"\n",
|
||
" Args:\n",
|
||
" theta: The angle parameter for X.\n",
|
||
" layer_couplings: A list of couplings for each entangling layer.\n",
|
||
" num_steps: the number of Trotter steps.\n",
|
||
" gate_2q: The 2-qubit basis gate to use in entangling layers.\n",
|
||
" Can be \"cx\", \"cz\", \"ecr\", or None if a backend is provided.\n",
|
||
" backend: A backend to get the 2-qubit basis gate from, if provided\n",
|
||
" will override the basis_gate field.\n",
|
||
" qubits: Optional, the allowed physical qubits to truncate the\n",
|
||
" couplings to. If None the range up to the largest\n",
|
||
" qubit in the couplings will be used.\n",
|
||
"\n",
|
||
" Returns:\n",
|
||
" The Trotter circuit.\n",
|
||
" \"\"\"\n",
|
||
" if backend is not None:\n",
|
||
" try:\n",
|
||
" basis_gates = backend.configuration().basis_gates\n",
|
||
" except AttributeError:\n",
|
||
" basis_gates = backend.basis_gates\n",
|
||
" for gate in [\"cx\", \"cz\", \"ecr\"]:\n",
|
||
" if gate in basis_gates:\n",
|
||
" gate_2q = gate\n",
|
||
" break\n",
|
||
"\n",
|
||
" # If no qubits, get the largest qubit from all layers and\n",
|
||
" # specify the range so the same one is used for all layers.\n",
|
||
" if qubits is None:\n",
|
||
" qubits = range(1 + max(coupling_qubits(layer_couplings)))\n",
|
||
"\n",
|
||
" # Generate the entangling layers\n",
|
||
" layers = [\n",
|
||
" entangling_layer(gate_2q, couplings, qubits=qubits)\n",
|
||
" for couplings in layer_couplings\n",
|
||
" ]\n",
|
||
"\n",
|
||
" # Construct the circuit for a single Trotter step\n",
|
||
" num_qubits = len(qubits)\n",
|
||
" trotter_step = QuantumCircuit(num_qubits)\n",
|
||
" trotter_step.rx(theta, range(num_qubits))\n",
|
||
" for layer in layers:\n",
|
||
" trotter_step.compose(layer, range(num_qubits), inplace=True)\n",
|
||
"\n",
|
||
" # Construct the circuit for the specified number of Trotter steps\n",
|
||
" circuit = QuantumCircuit(num_qubits)\n",
|
||
" for _ in range(num_steps):\n",
|
||
" circuit.rx(theta, range(num_qubits))\n",
|
||
" for layer in layers:\n",
|
||
" circuit.compose(layer, range(num_qubits), inplace=True)\n",
|
||
"\n",
|
||
" circuit.metadata[\"physical_qubits\"] = tuple(qubits)\n",
|
||
" return circuit"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "c8ce28f6-91fe-4776-a127-84002a14f40d",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Define entangling layer couplings"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "ee25eb37-9519-48ff-b307-c4f66846e3fd",
|
||
"metadata": {},
|
||
"source": [
|
||
"To implement the Trotterized Ising simulation, define three layers of two-qubit gate couplings for the device, to be repeated at each of the Trotter steps. These define the three twirled layers you need to learn the noise for to implement mitigation."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"id": "6587f181-487a-41f5-977d-a8abb1079c07",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Layer 0:\n",
|
||
"[(5, 4), (10, 9), (11, 12), (16, 8), (20, 19), (21, 22), (23, 24), (26, 25), (28, 27), (29, 30), (31, 32), (33, 39), (35, 47), (36, 51), (37, 52), (40, 41), (44, 43), (45, 46), (50, 49), (54, 64), (58, 71), (60, 61), (63, 62), (66, 67), (68, 69), (72, 81), (73, 85), (77, 78), (84, 83), (88, 87), (89, 74), (91, 79), (92, 102), (94, 90), (96, 95), (98, 99), (100, 110), (103, 104), (105, 106), (108, 112), (109, 114), (111, 122), (116, 117), (118, 119), (121, 120), (125, 124)]\n",
|
||
"\n",
|
||
"Layer 1:\n",
|
||
"[(0, 14), (1, 2), (4, 3), (6, 5), (7, 8), (10, 11), (17, 12), (19, 18), (22, 15), (24, 25), (26, 16), (31, 30), (33, 20), (35, 28), (37, 38), (40, 39), (42, 41), (43, 34), (46, 47), (48, 49), (50, 51), (53, 60), (54, 45), (57, 56), (58, 59), (64, 65), (68, 55), (70, 74), (72, 62), (73, 66), (75, 76), (77, 71), (79, 78), (80, 81), (82, 83), (85, 84), (87, 86), (93, 106), (96, 109), (97, 98), (100, 99), (101, 102), (105, 104), (107, 108), (110, 118), (114, 115), (119, 120), (122, 121), (123, 124), (125, 126)]\n",
|
||
"\n",
|
||
"Layer 2:\n",
|
||
"[(0, 1), (2, 3), (4, 15), (7, 6), (8, 9), (13, 12), (14, 18), (17, 30), (21, 20), (22, 23), (26, 27), (29, 28), (34, 24), (36, 32), (39, 38), (42, 43), (45, 44), (48, 47), (53, 41), (55, 49), (56, 52), (57, 58), (59, 60), (61, 62), (63, 64), (66, 65), (67, 68), (69, 70), (75, 90), (76, 77), (80, 79), (82, 81), (85, 86), (87, 93), (88, 89), (91, 98), (92, 83), (94, 95), (96, 97), (101, 100), (103, 102), (107, 106), (111, 104), (114, 113), (116, 115), (117, 118), (122, 123), (126, 112)]\n",
|
||
"\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"layer_couplings = construct_layer_couplings(backend)\n",
|
||
"for i, layer in enumerate(layer_couplings):\n",
|
||
" print(f\"Layer {i}:\\n{layer}\\n\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "bed79488-f197-4f4d-af6e-4b0c0c91f95b",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Remove bad qubits"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "846ee187-85b3-47f1-87c2-9c2e52e61d89",
|
||
"metadata": {},
|
||
"source": [
|
||
"Look at the coupling map for the backend and see if any qubits connect to couplings with high error. Remove these \"bad\" qubits from your experiment."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"id": "401e2d48-1b39-40c8-bf32-7b439ae0980d",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"<Image src=\"/docs/images/tutorials/probabilistic-error-amplification/extracted-outputs/401e2d48-1b39-40c8-bf32-7b439ae0980d-0.avif\" alt=\"Output of the previous code cell\" />"
|
||
]
|
||
},
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Plot gate error map\n",
|
||
"# NOTE: These can change over time, so your results may look different\n",
|
||
"plot_error_map(backend)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 6,
|
||
"id": "2744f347-84c5-4acf-8eb8-873125b99c3a",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Physical qubits:\n",
|
||
" [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 57, 58, 59, 60, 61, 62, 64, 65, 66, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"bad_qubits = {\n",
|
||
" 56,\n",
|
||
" 63,\n",
|
||
" 67,\n",
|
||
"} # qubits removed based on high coupling error (1.00)\n",
|
||
"good_qubits = list(set(range(backend.num_qubits)).difference(bad_qubits))\n",
|
||
"print(\"Physical qubits:\\n\", good_qubits)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "27d0b3eb-233c-4ea9-bea1-4c8a56fa038a",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Main Trotter circuit generation"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 7,
|
||
"id": "40777c29-b2db-48e6-8255-eb00cd69b0b5",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"num_steps = 6\n",
|
||
"theta = Parameter(\"theta\")\n",
|
||
"circuit = trotter_circuit(\n",
|
||
" theta, layer_couplings, num_steps, qubits=good_qubits, backend=backend\n",
|
||
")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "698446a5-febd-4c1b-bfbc-746a833e3520",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Create a list of parameter values to be assigned later"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 8,
|
||
"id": "d3e78bc6-7ced-431a-a744-f42af3f835d6",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"num_params = 12\n",
|
||
"\n",
|
||
"# 12 parameter values for Rx between [0, pi/2].\n",
|
||
"# Reshape to outer product broadcast with observables\n",
|
||
"parameter_values = np.linspace(0, np.pi / 2, num_params).reshape(\n",
|
||
" (num_params, 1)\n",
|
||
")\n",
|
||
"num_params = parameter_values.size"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "59bc09ba-3a3c-400d-b25d-59e271465511",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Step 2: Optimize problem for quantum hardware execution"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "9772c2b1-96a0-45cd-acfb-df563e11d216",
|
||
"metadata": {},
|
||
"source": [
|
||
"### ISA circuit"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "ae9c228a-9402-4478-a68d-7d468fac3ecf",
|
||
"metadata": {},
|
||
"source": [
|
||
"Before running the circuit on hardware, optimize it for hardware execution. This process involves a few steps:\n",
|
||
"\n",
|
||
"- Pick a qubit layout that maps the virtual qubits of your circuit to physical qubits on the hardware.\n",
|
||
"- Insert swap gates as needed to route interactions between qubits that are not connected.\n",
|
||
"- Translate the gates in our circuit to [Instruction Set Architecture (ISA)](/docs/guides/transpile#instruction-set-architecture) instructions that can directly be executed on the hardware.\n",
|
||
"- Perform circuit optimizations to minimize the circuit depth and gate count.\n",
|
||
"\n",
|
||
"Although the transpiler built into Qiskit can perform all of these steps, this notebook demonstrates building the utility-scale Trotter circuit in a ground-up fashion. Select the good physical qubits and define entangling layers on connected qubit pairs from those selected qubits. Nonetheless, you still need to translate non-ISA gates in the circuit and avail any circuit optimization offered by the transpiler.\n",
|
||
"\n",
|
||
"Transpile your circuit for the chosen backend by creating a pass manager and then running the pass manager on the circuit. Also, fix the initial layout of the circuit to the already selected `good_qubits`. An easy way to create a pass manager is to use the [`generate_preset_pass_manager`](/docs/api/qiskit/qiskit.transpiler.generate_preset_pass_manager) function. See [Transpile with pass managers](/docs/guides/transpile-with-pass-managers) for a more detailed explanation of transpiling with pass managers."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 9,
|
||
"id": "45be8872-20c2-4ef5-a3de-443f1b8fd2b6",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"pm = generate_preset_pass_manager(\n",
|
||
" backend=backend,\n",
|
||
" initial_layout=good_qubits,\n",
|
||
" layout_method=\"trivial\",\n",
|
||
" optimization_level=1,\n",
|
||
")\n",
|
||
"\n",
|
||
"isa_circuit = pm.run(circuit)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "56b4f3ae-a06e-4e0a-89ce-c8f71f2de97e",
|
||
"metadata": {},
|
||
"source": [
|
||
"### ISA observables"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "76667b2a-06ad-468c-a808-36d850c8d8ea",
|
||
"metadata": {},
|
||
"source": [
|
||
"Next, create all weight-1 $\\langle Z \\rangle$ observables for each virtual qubit by padding the necessary number of $\\langle I \\rangle$ terms."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 10,
|
||
"id": "4a0439fb-599f-4974-9fd6-f7e7821cd687",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"observables = []\n",
|
||
"num_qubits = len(good_qubits)\n",
|
||
"for q in range(num_qubits):\n",
|
||
" observables.append(\n",
|
||
" SparsePauliOp(\"I\" * (num_qubits - q - 1) + \"Z\" + \"I\" * q)\n",
|
||
" )"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "bd05ea8e-7cd2-42ea-ae25-ac7824d7580b",
|
||
"metadata": {},
|
||
"source": [
|
||
"The transpilation process has mapped the virtual qubits of your circuit to physical qubits on the hardware. The information about the qubit layout is stored in the `layout` attribute of the transpiled circuit. Your observable is also defined in terms of the virtual qubits, so you need to apply this layout to the observable. This is done using the `apply_layout` method of `SparsePauliOp`.\n",
|
||
"\n",
|
||
"Notice that each observable is wrapped in a list in the following code block. It is done to _broadcast_ with parameter values so that each qubit observable is measured for each theta value. The broadcasting rules for primitives can be found [here](/docs/guides/primitives)."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 11,
|
||
"id": "3eaac647-f3ae-4533-a494-6cbeff2e6121",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"isa_observables = [\n",
|
||
" [obs.apply_layout(layout=isa_circuit.layout)] for obs in observables\n",
|
||
"]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "a0906ff6-4fed-4e03-b4d2-9e08dc7eb40d",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Step 3: Execute using Qiskit primitives"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 12,
|
||
"id": "4d94b8c5-28e0-4ea7-9ec7-750f5803353a",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"pub = (isa_circuit, isa_observables, parameter_values)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "9ebd1b29-6558-40bd-8c3b-0419392c5588",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Configure Estimator options"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "fbaca21d-0ebb-4b06-8b72-9d66792c487c",
|
||
"metadata": {},
|
||
"source": [
|
||
"Next configure the `Estimator` options needed to run the mitigation experiment. This includes options for the noise learning of the entangling layers, and for ZNE extrapolation.\n",
|
||
"\n",
|
||
"We use the following configuration:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 13,
|
||
"id": "a68c1ced-e098-44e3-9d68-5781b4c2c057",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Experiment options\n",
|
||
"num_randomizations = 700\n",
|
||
"num_randomizations_learning = 40\n",
|
||
"max_batch_circuits = 3 * num_params\n",
|
||
"shots_per_randomization = 64\n",
|
||
"learning_pair_depths = [0, 1, 2, 4, 6, 12, 24]\n",
|
||
"noise_factors = [1, 1.3, 1.6]\n",
|
||
"extrapolated_noise_factors = np.linspace(0, max(noise_factors), 20)\n",
|
||
"\n",
|
||
"# Base option formatting\n",
|
||
"options = {\n",
|
||
" # Builtin resilience settings for ZNE\n",
|
||
" \"resilience\": {\n",
|
||
" \"measure_mitigation\": True,\n",
|
||
" \"zne_mitigation\": True,\n",
|
||
" # TREX noise learning configuration\n",
|
||
" \"measure_noise_learning\": {\n",
|
||
" \"num_randomizations\": num_randomizations_learning,\n",
|
||
" \"shots_per_randomization\": 1024,\n",
|
||
" },\n",
|
||
" # PEA noise model configuration\n",
|
||
" \"layer_noise_learning\": {\n",
|
||
" \"max_layers_to_learn\": 3,\n",
|
||
" \"layer_pair_depths\": learning_pair_depths,\n",
|
||
" \"shots_per_randomization\": shots_per_randomization,\n",
|
||
" \"num_randomizations\": num_randomizations_learning,\n",
|
||
" },\n",
|
||
" \"zne\": {\n",
|
||
" \"amplifier\": \"pea\",\n",
|
||
" \"noise_factors\": noise_factors,\n",
|
||
" \"extrapolator\": (\"exponential\", \"linear\"),\n",
|
||
" \"extrapolated_noise_factors\": extrapolated_noise_factors.tolist(),\n",
|
||
" },\n",
|
||
" },\n",
|
||
" # Randomization configuration\n",
|
||
" \"twirling\": {\n",
|
||
" \"num_randomizations\": num_randomizations,\n",
|
||
" \"shots_per_randomization\": shots_per_randomization,\n",
|
||
" \"strategy\": \"active-circuit\",\n",
|
||
" },\n",
|
||
" # Optional Dynamical Decoupling (DD)\n",
|
||
" \"dynamical_decoupling\": {\"enable\": True, \"sequence_type\": \"XY4\"},\n",
|
||
"}"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "b1e67f48-ad36-4a70-a066-f8d9dbbb49c3",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Explanation of ZNE options"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "246cea82-7665-481d-84c0-89a8a50619ac",
|
||
"metadata": {},
|
||
"source": [
|
||
"The following gives details on the additional options in the experimental branch. Note that these options and names are not finalized, and everything here is subject to change before an official release.\n",
|
||
"\n",
|
||
"* __amplifier__: The method to use when amplifying noise to the intended noise factors.\n",
|
||
" Allowed values are `\"gate_folding\"`, which amplifies by repeating two-qubit basis gates,\n",
|
||
" and `\"pea\"`, which amplifies by probabilistic sampling after learning the Pauli-twirled\n",
|
||
" noise model for layers of twirled two-qubit basis gates. There are also `\"gate_folding_front\"` and `\"gate_folding_back\"` options which are explained in the [API documentation](/docs/api/qiskit-ibm-runtime/options-zne-options#amplifier)\n",
|
||
"* __extrapolated_noise_factors__: Specify one or more noise factor values at which to evaluate the\n",
|
||
" extrapolated models. If a sequence of values, the returned results will be array-valued with specified noise factor evaluated for the extrapolation model. A value\n",
|
||
" of 0 corresponds to zero-noise extrapolation."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "58afd2a7-844b-4c41-ae96-6ebf78b704d8",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Run the experiment"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 42,
|
||
"id": "ebf57c70-d167-44f7-be3b-9abb10d46fd0",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"estimator = Estimator(mode=backend, options=options)\n",
|
||
"job = estimator.run([pub])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 45,
|
||
"id": "386026be-d410-48c7-a1fd-5b48f7991427",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Job ID czz64rbd8drg008j141g\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(f\"Job ID {job.job_id()}\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "15b1431a-5bea-4674-84c8-fc1439a863af",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Step 4: Post-process and return result in desired classical format"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "84ef5b13-4cea-4c73-9fdc-c3662413786c",
|
||
"metadata": {},
|
||
"source": [
|
||
"Once the experiment is finished, you can view our results. You fetch the raw and mitigated expectation values and compare them with exact results. Then, plot the expectation values, both mitigated (extrapolated) and raw, averaged over all qubits for each parameter. Finally, plot expectation values for your choice of individual qubits."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 15,
|
||
"id": "f9029431-620b-4191-a248-a56ea2c70eff",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"primitive_result = job.result()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "a359efa8-b6fe-4535-9e6e-6258d4cb065b",
|
||
"metadata": {},
|
||
"source": [
|
||
"### General result shapes and metadata"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "5c454847-f488-4459-aac7-9f6014f508c7",
|
||
"metadata": {},
|
||
"source": [
|
||
"The `PrimitiveResult` object contains a list-like structure named `PubResult`. As we submit only one PUB to the estimator, the `PrimitiveResult` contains a single `PubResult` object.\n",
|
||
"\n",
|
||
"The PUB (primitive unified bloc) result expectation values and standard errors are array-valued. For estimator jobs with ZNE, there are several data fields of expectation values and standard errors available in the `PubResult`'s `DataBin` container. We will breifly discuss the data fields for expectation values here (similar data fields are available for standard errors (`stds`) as well).\n",
|
||
"\n",
|
||
"1. `pub_result.data.evs`: Expectation values corresponding to the zero noise (based on heuristically best extrapolation).\n",
|
||
" - The first axis is the virtual qubit index for observable $\\langle Z_i\\rangle$ ($124$ virtual-qubits/observables)\n",
|
||
" - The second axis indexes the parameter value for $\\theta$ ($12$ parameter values)\n",
|
||
"2. `pub_result.data.evs_extrapolated`: Expectation values for extrapolated noise factors for every extrapolator. This array has two additional axes.\n",
|
||
" - The third axis indexes the extrapolation methods ($2$ extrapolators, `exponential` and `linear`)\n",
|
||
" - The last axis indexes the `extrapolated_noise_factors` ($20$ extrapolation points specifed in the option)\n",
|
||
"3. `pub_result.data.evs_noise_factors`: Raw expectation values for each noise factor.\n",
|
||
" - The third axis indexes the raw `noise_factors` ($3$ factors)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 16,
|
||
"id": "d136d707-3f3b-42fe-b1e6-55e8f841d598",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"pub_result.data.evs.shape=(124, 12)\n",
|
||
"pub_result.data.evs_extrapolated.shape=(124, 12, 2, 20)\n",
|
||
"pub_result.data.evs_noise_factors.shape=(124, 12, 3)\n",
|
||
"\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"pub_result = primitive_result[0]\n",
|
||
"\n",
|
||
"print(\n",
|
||
" f\"{pub_result.data.evs.shape=}\\n\"\n",
|
||
" f\"{pub_result.data.evs_extrapolated.shape=}\\n\"\n",
|
||
" f\"{pub_result.data.evs_noise_factors.shape=}\\n\"\n",
|
||
")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "5b3a54d3-c651-4fcc-b221-53a22ce029c1",
|
||
"metadata": {},
|
||
"source": [
|
||
"Several metadata fields are also available in the `PrimitiveResult`. The metadata includes\n",
|
||
"- `resilience/zne/noise_factors`: The raw noise factors\n",
|
||
"- `resilience/zne/extrapolator`: The extrapolators used for each result"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 17,
|
||
"id": "6cbd9f65-e125-48fe-82d5-688e189954b0",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"{'dynamical_decoupling': {'enable': True,\n",
|
||
" 'sequence_type': 'XY4',\n",
|
||
" 'extra_slack_distribution': 'middle',\n",
|
||
" 'scheduling_method': 'alap'},\n",
|
||
" 'twirling': {'enable_gates': True,\n",
|
||
" 'enable_measure': True,\n",
|
||
" 'num_randomizations': 700,\n",
|
||
" 'shots_per_randomization': 64,\n",
|
||
" 'interleave_randomizations': True,\n",
|
||
" 'strategy': 'active-circuit'},\n",
|
||
" 'resilience': {'measure_mitigation': True,\n",
|
||
" 'zne_mitigation': True,\n",
|
||
" 'pec_mitigation': False,\n",
|
||
" 'zne': {'noise_factors': [1, 1.3, 1.6],\n",
|
||
" 'extrapolator': ['exponential', 'linear'],\n",
|
||
" 'extrapolated_noise_factors': [0,\n",
|
||
" 0.08421052631578947,\n",
|
||
" 0.16842105263157894,\n",
|
||
" 0.25263157894736843,\n",
|
||
" 0.3368421052631579,\n",
|
||
" 0.42105263157894735,\n",
|
||
" 0.5052631578947369,\n",
|
||
" 0.5894736842105263,\n",
|
||
" 0.6736842105263158,\n",
|
||
" 0.7578947368421053,\n",
|
||
" 0.8421052631578947,\n",
|
||
" 0.9263157894736842,\n",
|
||
" 1.0105263157894737,\n",
|
||
" 1.0947368421052632,\n",
|
||
" 1.1789473684210525,\n",
|
||
" 1.263157894736842,\n",
|
||
" 1.3473684210526315,\n",
|
||
" 1.431578947368421,\n",
|
||
" 1.5157894736842106,\n",
|
||
" 1.6]},\n",
|
||
" 'layer_noise_model': [LayerError(circuit=<qiskit.circuit.quantumcircuit.QuantumCircuit object at 0x7f729d983c80>, qubits=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 57, 58, 59, 60, 61, 62, 64, 65, 66, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], error=PauliLindbladError(generators=['IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...', ...], rates=[0.00149, 0.00113, 0.00031, 0.00045, 0.0, 3e-05, 4e-05, 5e-05, 0.0, 0.0, 0.00024, 0.00138, 0.00025, 0.0, 0.002, 0.00166, 0.0, 0.00014, 0.0, 0.00158, 3e-05, 0.00017, 0.0, 0.00081, 0.0002, 0.00023, 0.00215, 0.00079, 0.0, 0.0, 0.00018, 0.00046, 0.0002, 0.00029, 0.00027, 0.001, 3e-05, 0.0, 0.00068, 0.0, 0.00015, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00025, 0.00082, 0.00054, 7e-05, 0.0, 0.0004, 0.00095, 8e-05, 0.0, 0.00223, 0.00068, 0.00153, 0.00113, 0.00111, 0.00013, 0.00013, 0.00025, 0.00108, 1e-05, 1e-05, 0.0, 0.00086, 0.0, 0.0, 0.0, 0.03073, 0.0, 0.00122, 0.00055, 0.02822, 0.00023, 0.00035, 0.00016, 0.0, 0.0, 0.0, 0.00159, 0.00032, 0.0, 0.0, 1e-05, 0.00018, 0.00068, 0.0, 0.0, 9e-05, 0.00068, 0.0, 0.0, 0.00143, 2e-05, 0.00022, 0.00022, 5e-05, 0.00025, 9e-05, 0.00014, 0.00026, 0.00025, 0.00014, 9e-05, 0.00028, 0.00052, 8e-05, 0.0, 0.00042, 0.00037, 0.0, 9e-05, 0.00189, 0.0, 0.00078, 0.00057, 0.00013, 0.0, 9e-05, 0.0, 0.00026, 9e-05, 0.0, 0.0, 0.00052, 0.0, 0.0, 0.00145, 0.00099, 0.00035, 0.00022, 0.00065, 0.0, 0.00033, 0.0, 0.00223, 0.00116, 4e-05, 0.00042, 0.00067, 0.00074, 0.0, 0.00011, 0.00024, 0.00087, 3e-05, 1e-05, 0.00014, 0.00016, 0.00022, 0.00034, 0.00047, 0.00225, 9e-05, 0.0004, 5e-05, 0.00223, 6e-05, 0.00025, 0.00048, 0.00188, 0.00022, 0.00012, 0.00079, 0.0, 0.00129, 0.00029, 0.00043, 0.0, 0.00201, 0.0002, 0.00034, 0.0023, 0.00015, 0.00065, 0.00079, 0.00032, 0.00068, 0.0, 0.00019, 0.00053, 0.00048, 0.0, 0.00018, 0.00155, 0.00044, 0.00157, 0.00166, 0.00226, 0.0, 0.0, 0.0, 0.00191, 0.0, 0.0, 0.0, 0.00303, 0.0, 0.00014, 0.0004, 0.00115, 0.0, 0.0, 0.0, 0.00095, 2e-05, 0.0, 0.0, 0.00121, 0.0, 0.0, 0.00197, 0.0, 0.0, 0.0, 0.0, 0.00021, 1e-05, 4e-05, 0.00033, 4e-05, 1e-05, 4e-05, 0.00033, 0.00033, 0.0008, 6e-05, 0.00023, 0.0007, 0.00043, 0.0, 0.0, 0.00186, 0.00157, 0.00046, 0.00063, 0.01063, 0.0, 0.0, 0.0, 0.00747, 0.0, 0.0, 0.0, 0.00923, 0.0, 0.0, 0.0, 0.00305, 0.00128, 0.00177, 7e-05, 0.00747, 0.01063, 0.0, 0.0, 0.00016, 2e-05, 0.0003, 0.00036, 0.00161, 0.00294, 0.00192, 0.00035, 0.00021, 0.0005, 0.00143, 0.0, 0.00049, 0.00167, 0.00026, 0.0, 0.00016, 0.00088, 0.00028, 0.0, 0.0, 0.00234, 0.0, 0.0, 4e-05, 0.00096, 0.00121, 0.00203, 0.00014, 0.00076, 0.0, 0.0, 0.00157, 0.00016, 0.0, 6e-05, 0.00217, 0.0, 0.00064, 0.00055, 0.00055, 0.0, 0.0, 0.00069, 0.00018, 0.0, 0.0, 0.00018, 0.00068, 0.002, 0.0, 0.0, 0.0, 0.0017, 0.0, 0.0, 0.0017, 0.0, 0.0, 0.0, 0.002, 0.00145, 0.0016, 0.00142, 0.00016, 0.00016, 0.00163, 0.0, 0.0, 0.0, 9e-05, 0.0, 0.0, 0.00018, 4e-05, 0.0, 0.0, 0.00099, 0.00026, 0.0, 0.0, 0.00099, 0.00063, 0.00149, 0.00113, 0.00026, 0.00102, 0.0011, 0.00026, 0.00024, 0.00272, 0.00083, 0.0017, 0.00147, 0.00176, 7e-05, 4e-05, 0.0, 0.00169, 4e-05, 7e-05, 0.0, 0.00483, 0.0, 0.0, 0.00168, 0.0, 0.00308, 0.00327, 0.0, 0.00181, 0.00188, 0.00138, 0.0, 0.00076, 0.00021, 0.00251, 0.0, 0.0, 0.00279, 0.0, 0.0009, 0.00035, 0.00265, 0.0, 0.0, 0.00246, 0.00033, 0.00084, 0.0, 0.0, 0.00047, 0.00084, 0.0, 0.0, 0.00368, 0.0, 0.0, 0.0, 0.00063, 0.00132, 0.00118, 0.00085, 0.00031, 0.0, 0.0, 0.00079, 0.00059, 9e-05, 0.00013, 0.00052, 0.00041, 0.0, 0.0001, 0.00052, 8e-05, 0.0001, 0.0, 0.00052, 0.00188, 0.0, 0.0, 0.00939, 0.00159, 0.0, 0.0, 0.0, 0.00165, 0.0, 0.0, 0.0, 0.00268, 6e-05, 0.0, 0.0, 0.00213, 0.0, 0.0, 0.0, 0.0014, 0.0, 0.0, 0.0, 0.00152, 0.0, 0.0, 0.00217, 0.00035, 0.0, 0.0, 0.0002, 0.00065, 0.0, 0.0002, 0.0, 0.00117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00085, 0.00085, 0.00016, 0.00085, 0.00429, 0.0017, 0.00229, 0.00298, 0.00557, 0.0, 0.00554, 0.00624, 0.0, 0.00222, 0.00072, 0.00105, 0.0, 0.00104, 0.0009, 0.00901, 2e-05, 0.0, 0.0, 0.00357, 0.0002, 0.00035, 0.00071, 0.00198, 0.00038, 0.0, 0.00162, 0.0002, 0.00035, 0.00071, 0.00285, 0.00012, 0.00024, 0.0, 0.00285, 0.00012, 0.0, 0.00024, 0.00178, 0.0, 0.0001, 0.0001, 0.00062, 0.00321, 0.0032, 0.00095, 0.0, 0.0, 0.00022, 0.00125, 0.00058, 0.0, 0.00026, 0.00036, 0.00096, 4e-05, 0.0, 0.0, 0.001, 0.0, 2e-05, 0.00015, 0.00079, 0.00018, 9e-05, 0.00022, 0.00071, 0.00017, 0.00031, 0.00236, 0.0, 4e-05, 0.0, 0.0, 0.00017, 3e-05, 0.00026, 0.0, 0.0, 0.00016, 0.0, 0.00029, 0.00015, 0.00038, 0.0, 4e-05, 0.00038, 0.00146, 0.00183, 0.0, 0.00029, 0.00067, 0.00262, 5e-05, 0.0, 0.00322, 0.00019, 0.00105, 0.00069, 0.0, 0.00041, 0.0002, 0.00039, 0.0, 0.00027, 0.00048, 0.00046, 0.00173, 0.00048, 0.00048, 0.00285, 0.00247, 0.0015, 0.00127, 0.0, 0.0, 0.0, 0.0, 0.00183, 0.00075, 0.0, 0.0, 0.00091, 0.0, 0.00142, 0.00215, 0.0, 0.00045, 0.00032, 0.00042, 0.0, 0.0, 0.00105, 0.00143, 0.00126, 0.00041, 9e-05, 0.0, 0.00112, 0.00046, 0.00109, 0.00141, 0.00013, 0.00066, 0.01395, 0.0, 0.0, 0.0, 0.01585, 0.0, 0.0, 0.0, 0.00411, 0.0, 0.0, 0.0, 0.00082, 0.00056, 0.0, 0.0, 0.00046, 0.0, 0.0, 0.00035, 0.00111, 0.0, 0.0, 0.00035, 0.00056, 0.00077, 4e-05, 0.0, 0.00058, 0.00075, 7e-05, 0.0, 0.00394, 0.00025, 0.00187, 0.00121, 0.00051, 0.00085, 0.00055, 0.00026, 0.0, 0.0, 0.00011, 0.0, 0.0, 0.0, 0.00134, 4e-05, 0.00013, 0.0001, 0.00104, 0.0003, 0.00016, 0.00028, 0.00015, 6e-05, 0.00012, 0.00146, 0.00487, 0.00372, 0.00086, 0.00051, 0.0, 0.0, 0.00231, 0.00231, 0.0, 0.0, 0.00051, 0.00315, 0.00032, 0.0, 0.0, 0.00302, 0.0, 0.0, 9e-05, 0.00081, 0.00062, 0.00019, 0.00035, 0.00148, 0.0, 0.00028, 8e-05, 0.00072, 0.0002, 0.0, 9e-05, 0.0, 8e-05, 0.00018, 0.00176, 0.00276, 0.0, 4e-05, 4e-05, 0.00306, 0.0, 1e-05, 1e-05, 0.00215, 0.0, 0.00036, 0.00036, 0.00217, 0.00202, 0.00028, 0.0, 0.0007, 0.00058, 0.00122, 0.0, 0.00074, 0.00062, 0.00126, 0.00354, 0.00028, 0.00018, 0.00085, 0.00111, 0.0, 0.0, 1e-05, 0.00154, 0.0, 0.0, 0.0, 0.00115, 0.0, 0.0, 0.0002, 0.00058, 7e-05, 3e-05, 0.0, 0.0001, 0.0001, 0.0, 0.00043, 7e-05, 3e-05, 0.0, 0.0001, 0.0001, 0.0, 0.00347, 0.0, 0.0, 0.0, 3e-05, 0.0, 5e-05, 0.00087, 0.00073, 0.00088, 0.00049, 0.0, 0.0, 0.0, 0.00144, 0.00047, 0.0, 0.0, 0.00088, 0.00176, 0.00175, 4e-05, 9e-05, 0.00165, 0.00154, 0.00032, 0.00037, 0.00093, 0.00273, 0.0005, 0.00056, 0.00472, 0.00104, 0.00181, 0.00069, 0.00065, 0.00053, 0.00109, 0.00346, 0.00294, 0.00122, 0.00159, 0.00117, 0.00079, 0.0, 0.0, 0.0, 0.00026, 0.00043, 0.0, 0.0, 0.00087, 0.0, 0.00051, 0.00051, 0.00298, 0.0, 0.00058, 0.0, 0.00296, 0.00042, 0.00039, 0.0001, 0.00174, 0.00025, 8e-05, 0.00194, 0.00058, 7e-05, 0.0, 8e-05, 0.00037, 7e-05, 0.0, 8e-05, 0.00403, 0.0, 0.00012, 0.0, 0.00102, 0.00051, 0.00072, 1e-05, 0.00066, 0.00024, 0.0, 0.00181, 0.00115, 0.00011, 0.0001, 0.00133, 0.00105, 0.0, 0.00013, 0.00013, 0.00158, 8e-05, 0.0, 0.0, 0.00309, 3e-05, 0.00053, 0.00053, 0.00249, 0.00209, 0.002, 0.00015, 0.00031, 0.0, 0.0, 0.00229, 0.00085, 0.0, 0.0, 0.00176, 0.0, 0.0, 5e-05, 0.00013, 0.0, 4e-05, 0.0001, 0.00017, 0.0, 0.0, 0.0, 0.0, 0.00103, 0.0, 9e-05, 1e-05, 0.00079, 0.0, 9e-05, 1e-05, 0.002, 0.00023, 0.0, 0.0, 0.001, 0.0, 7e-05, 0.00023, 0.00034, 0.00014, 1e-05, 0.00034, 0.0, 0.00012, 0.0, 0.00032, 0.00131, 0.00103, 0.00036, 0.00227, 0.0, 0.0, 0.0, 0.00178, 0.0, 0.0, 0.0, 0.00149, 0.0, 0.0, 0.00147, 0.0, 0.00027, 0.00025, 0.00028, 0.00014, 9e-05, 0.0, 0.0, 0.0003, 0.00031, 0.00028, 0.00017, 0.00013, 2e-05, 0.0006, 0.0012, 0.00088, 0.00088, 0.0, 0.00018, 0.00015, 0.0009, 0.00113, 0.00104, 0.00017, 0.00022, 0.0001, 0.00037, 0.00075, 0.00036, 8e-05, 0.00015, 0.00061, 0.0, 0.0, 0.00026, 0.00026, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0486, 0.0, 0.0, 0.0, 0.0534, 0.00296, 0.002, 0.00256, 0.04011, 0.00265, 0.00307, 0.00363, 0.00498, 0.00015, 8e-05, 0.00299, 0.0, 0.0, 0.0, 0.00134, 0.00031, 0.00045, 0.00322, 0.0, 0.0, 0.0, 0.00185, 0.00063, 0.00075, 0.00271, 0.0, 0.0, 0.0, 0.0, 0.00082, 0.00026, 0.00026, 0.0, 0.00037, 0.00061, 0.00061, 0.0, 0.00068, 0.0005, 0.0005, 0.00197, 0.0, 0.0, 0.00039, 0.0, 0.0, 0.0, 0.00105, 0.0009, 0.0, 0.00048, 0.0018, 0.00249, 0.00286, 0.0, 6e-05, 0.0027, 0.00265, 0.0, 2e-05, 0.00102, 0.00024, 0.00278, 0.00078, 0.00083, 0.00098, 0.00122, 0.0004, 0.0, 0.0, 0.0, 0.00125, 0.0, 0.00017, 0.00123, 2e-05, 0.00014, 0.00013, 0.00091, 0.0, 0.00028, 0.00157, 0.00014, 2e-05, 0.00013, 0.00788, 0.00016, 0.0, 0.0, 0.00828, 0.0, 0.0, 0.0, 0.00335, 0.0, 2e-05, 2e-05, 0.00069, 0.00172, 0.00062, 0.00293, 0.0, 0.00042, 0.00035, 0.00167, 0.00075, 0.0009, 0.00083, 0.00215, 0.00114, 0.001, 0.0, 0.0, 0.00068, 0.00146, 0.0, 0.00011, 0.00214, 0.0, 0.00477, 0.00263, 6e-05, 0.00083, 0.0, 0.00031, 0.00027, 5e-05, 0.00025, 0.00026, 0.00063, 0.00038, 0.0, 5e-05, 0.00027, 0.00025, 0.00152, 0.00018, 0.00054, 0.00091, 0.0, 0.0, 0.00735, 0.00399, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00158, 0.00154, 0.0, 0.0, 0.001, 0.00213, 0.0, 0.0, 0.00347, 0.00043, 0.00194, 0.001, 0.00083, 0.0, 0.0, 0.00011, 0.00064, 0.0, 0.0, 0.0, 0.00227, 0.0, 0.0, 0.0, 0.00295, 0.0, 0.0, 8e-05, 0.00224, 0.00038, 0.0, 0.0, 0.00032, 1e-05, 0.0, 0.00074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00432, 0.00408, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00015, 0.0002, 0.00034, 7e-05, 0.0, 0.0, 0.0, 0.00061, 0.00034, 0.0002, 7e-05, 0.0, 0.0, 0.0, 0.00474, 0.0, 0.0, 0.00486, 0.0, 0.0, 0.0, 0.0, 0.00122, 0.00076, 0.00117, 0.00038, 0.00027, 0.00044, 0.00133, 0.00019, 0.00021, 0.0004, 0.00152, 0.00017, 0.0, 4e-05, 7e-05, 0.00048, 0.0, 7e-05, 4e-05, 0.00359, 0.0, 0.0, 0.0, 0.00126, 4e-05, 4e-05, 0.00018, 0.00105, 4e-05, 4e-05, 0.0, 0.00081, 0.00016, 0.00016, 0.00012, 0.00094, 0.00069, 0.0009, 0.00027, 0.0, 0.0, 0.0, 0.00565, 0.00042, 0.00047, 0.00522, 0.0, 0.00015, 0.0, 0.00477, 0.0, 0.0, 0.0061, 0.0, 0.00015, 0.0, 0.00084, 0.0, 8e-05, 0.00021, 0.00087, 0.0, 0.00021, 8e-05, 0.00145, 0.0, 0.0, 0.0, 0.00241, 0.00164, 0.00161, 0.00054, 0.00021, 0.00029, 0.0, 0.00124, 0.00066, 0.00014, 0.0, 0.00078, 0.00173, 0.0, 0.0, 0.0, 0.00123, 0.0, 0.0, 0.0, 0.0026, 0.0, 0.0, 0.0, 0.0, 0.00171, 0.00186, 0.0, 0.00123, 0.00173, 0.00174, 0.00088, 0.00036, 0.00023, 0.00141, 0.00072, 0.00086, 0.0034, 0.00157, 0.00036, 0.00023, 0.00141, 0.00076, 0.00015, 0.00271, 0.00819, 0.0, 0.0, 0.0, 0.00832, 9e-05, 0.0, 0.0, 0.00369, 0.0, 2e-05, 2e-05, 0.00122, 0.0, 0.00016, 0.0, 0.00052, 0.0, 0.00016, 0.0, 0.00206, 0.0, 0.0, 0.00103, 0.0, 0.0, 0.0, 0.0, 0.08899, 0.0, 0.0, 0.0, 0.07342, 0.02277, 0.02307, 0.03517, 0.00081, 0.00106, 0.00075, 0.0001, 0.00068, 0.0, 3e-05, 0.00128, 0.00076, 0.0, 1e-05, 0.0012, 6e-05, 0.00024, 0.0, 0.00049, 0.0003, 0.00024, 0.00049, 0.0, 0.0, 0.0002, 8e-05, 8e-05, 0.00112, 0.00068, 0.00138, 0.00095, 0.0, 1e-05, 0.0001, 0.00108, 0.00061, 0.0, 0.0, 0.00044, 0.0, 0.0, 0.0, 0.13953, 0.08899, 0.0, 0.0, 0.06132, 0.03641, 0.02121, 0.1129, 0.06888, 0.0, 0.0, 0.0, 0.01612, 0.00295, 0.0, 0.0, 0.0, 0.12611, 0.0, 0.0, 0.0, 0.0, 0.04144, 0.0, 0.0, 0.0, 0.03042, 0.0, 0.0, 0.0, 0.01013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00659, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00032, 9e-05, 0.00015, 0.00015, 0.00033, 0.0, 0.0, 0.00084, 9e-05, 0.00015, 0.00015, 0.00033, 0.0, 0.0, 0.00321, 0.0, 0.00022, 0.00022, 0.00038, 0.0, 0.0, 0.0, 0.00186, 0.00135, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00013, 0.00016, 0.00028, 0.0, 0.0, 0.0, 0.0, 0.0005, 0.00049, 0.00024, 0.00049, 0.0, 0.00419, 0.0, 0.0, 0.00226, 0.0, 0.00411, 0.0, 0.01139, 0.0, 0.00121, 0.0, 0.0, 0.0011, 0.00086, 0.00264, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00342, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00144, 0.0, 0.0, 0.0, 0.00166, 0.0, 0.0, 0.00037, 0.00166, 0.0, 0.0, 0.00209, 0.0, 0.00031, 0.0, 0.00059, 0.0, 0.0, 3e-05, 0.00062, 0.0, 0.0, 3e-05, 0.0003, 0.00151, 3e-05, 0.0, 0.0, 0.00214, 5e-05, 0.0, 0.0015, 0.0, 0.00065, 0.00062, 0.00165, 0.0, 0.0, 2e-05, 0.00039, 0.00019, 0.00035, 0.00164, 0.0, 0.0, 0.0, 0.0007, 0.0005, 0.00027, 0.00055, 0.0, 0.00044, 0.00047, 0.00099, 0.00079, 0.00019]))),\n",
|
||
" LayerError(circuit=<qiskit.circuit.quantumcircuit.QuantumCircuit object at 0x7f729db0a1e0>, qubits=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 57, 58, 59, 60, 61, 62, 64, 65, 66, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], error=PauliLindbladError(generators=['IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...', ...], rates=[0.00047, 0.00011, 0.00101, 0.00109, 4e-05, 8e-05, 0.0, 0.00134, 8e-05, 4e-05, 0.0, 0.00235, 5e-05, 5e-05, 0.00308, 0.00109, 0.00149, 0.00125, 0.00047, 7e-05, 0.0002, 0.0, 0.00073, 0.00034, 0.0, 0.0, 0.00046, 0.00145, 0.0, 0.0, 0.0, 0.00012, 3e-05, 0.00038, 0.0, 0.00034, 3e-05, 0.0, 0.00038, 0.0, 0.00118, 0.0, 0.0, 0.0, 0.00102, 0.0, 0.0, 0.00145, 0.00076, 0.00075, 0.00054, 0.00069, 4e-05, 0.0001, 0.00041, 0.0, 0.0, 0.00035, 0.00032, 0.0, 0.00031, 4e-05, 0.00034, 0.00253, 0.00151, 0.0, 0.0, 0.00115, 0.00289, 0.00049, 0.00042, 0.0, 0.0002, 0.00099, 0.00097, 0.0198, 0.00036, 0.0, 0.00058, 0.00336, 0.0, 0.00036, 0.00058, 0.00139, 0.0, 0.0, 0.00283, 0.00137, 0.00431, 0.02074, 0.00342, 0.0, 0.00097, 0.0001, 0.00128, 0.0, 0.0, 0.0, 0.00157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.04869, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.18579, 0.0, 0.0, 0.0, 0.01941, 0.0, 0.23547, 0.0, 0.01948, 0.08069, 0.0, 0.0, 0.01962, 0.00074, 0.00028, 0.00063, 0.0005, 0.00241, 0.0001, 0.0, 0.00155, 0.0013, 0.0, 2e-05, 0.00266, 0.00076, 0.0, 1e-05, 0.00091, 0.0, 0.00024, 0.00051, 0.00019, 0.00025, 0.00046, 0.00032, 0.0002, 0.0, 0.00011, 0.0, 0.0, 0.00424, 0.00033, 0.00086, 0.00133, 0.03112, 0.00033, 0.0015, 0.00068, 0.0, 0.3235, 0.27544, 0.0, 0.0, 0.0, 0.0, 0.0, 1.10851, 4.21433, 0.07687, 0.0, 0.00071, 0.0, 0.0, 0.0, 0.0002, 3e-05, 2e-05, 0.00023, 0.00032, 3e-05, 0.00023, 2e-05, 0.00038, 0.0008, 0.00027, 2e-05, 0.00064, 0.00054, 0.0, 0.0, 0.00101, 0.00032, 0.0006, 0.00048, 0.0, 0.0, 0.0, 0.0, 8e-05, 7e-05, 9e-05, 8e-05, 0.00078, 9e-05, 7e-05, 8e-05, 0.01529, 0.00034, 0.0, 0.0, 0.01645, 1e-05, 0.00021, 0.00021, 0.01182, 0.00025, 0.00018, 0.00018, 0.00094, 0.0007, 0.00027, 0.0003, 0.0, 0.0, 0.00035, 0.00014, 0.0015, 0.00075, 0.00046, 0.0, 0.0, 0.00035, 0.00333, 0.00058, 0.00122, 0.00094, 0.00186, 0.0007, 0.0, 0.00213, 0.0, 0.0, 0.0, 0.00214, 5e-05, 5e-05, 0.0, 0.00062, 0.00016, 0.00016, 0.0, 0.0, 3e-05, 2e-05, 0.00012, 0.0, 2e-05, 1e-05, 0.00011, 0.00148, 0.0, 0.0, 0.0, 0.0, 0.00029, 0.00032, 0.0, 0.00019, 0.0, 0.0, 0.00089, 0.00036, 0.00214, 0.00227, 0.00071, 0.00059, 0.00257, 0.0, 0.0, 0.0, 0.0, 0.00037, 0.0021, 0.00106, 0.0, 0.0, 0.0, 0.00037, 0.0, 0.00427, 0.00081, 0.03365, 0.00677, 0.00052, 0.0, 0.0, 0.0, 8e-05, 8e-05, 0.00033, 0.0, 0.0, 0.0, 0.00101, 0.00237, 1e-05, 1e-05, 0.0, 0.00171, 0.00023, 0.0, 0.00197, 0.0, 0.0, 0.0, 0.00142, 0.00022, 0.0, 0.0, 0.00183, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.47971, 0.0, 0.0, 0.0, 0.0, 0.0, 0.11256, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1064, 0.0, 0.0, 0.0, 0.10665, 0.0, 0.0, 0.0, 0.0, 0.00087, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00049, 0.00101, 0.00016, 0.00017, 0.00101, 0.00049, 0.00031, 0.00012, 0.00219, 7e-05, 0.00142, 0.00072, 0.0, 0.0, 0.0, 0.0, 4e-05, 5e-05, 0.00019, 5e-05, 0.00015, 0.0002, 4e-05, 5e-05, 0.00017, 0.0024, 0.0, 0.00021, 0.00012, 0.00245, 0.00023, 9e-05, 0.0, 0.00042, 0.00187, 0.00123, 0.00169, 0.0, 0.0, 0.0, 0.00169, 0.0, 0.0, 0.0, 0.00265, 0.0, 0.0, 0.0, 0.00143, 0.00218, 0.00104, 0.0, 0.00218, 0.00143, 0.0055, 0.0, 0.00367, 0.00292, 0.00189, 0.0, 0.00079, 0.00282, 0.00109, 0.00223, 0.0, 0.0, 0.0, 0.0, 0.00048, 0.00096, 0.0, 0.0, 0.0, 0.0, 7e-05, 0.00034, 0.00123, 0.00044, 0.0, 0.0, 0.0, 0.00012, 0.00079, 0.00087, 0.0016, 0.00111, 0.0, 0.0, 0.0009, 0.0018, 9e-05, 0.0, 0.00186, 0.0, 0.00216, 0.00161, 0.00188, 0.0, 0.0, 0.0, 0.0, 1e-05, 0.00017, 3e-05, 1e-05, 0.00019, 3e-05, 5e-05, 0.00037, 0.00053, 0.0, 0.0, 0.00036, 0.00055, 0.0, 0.0, 0.00066, 4e-05, 0.00073, 0.00066, 0.0, 0.00125, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00111, 0.00069, 0.00093, 0.0, 0.0, 6e-05, 0.00154, 0.00059, 0.00045, 0.00034, 0.00012, 0.00012, 0.00132, 0.05639, 0.0, 0.0, 0.0, 0.05643, 0.0, 0.0, 0.0005, 0.01457, 0.00169, 0.00181, 0.0, 0.0, 0.00015, 0.00029, 0.00281, 0.0, 0.00069, 0.00025, 0.0, 0.0, 0.00091, 0.00046, 0.0, 0.00386, 0.0, 0.0, 4e-05, 0.00628, 0.0, 0.0, 0.0, 0.00085, 0.0, 0.0, 0.0, 0.0, 0.00097, 0.00097, 0.0, 0.00635, 0.00393, 0.00031, 0.0, 0.00055, 0.0006, 6e-05, 0.00017, 0.00062, 0.00193, 0.00011, 0.00076, 0.00071, 0.00022, 0.00077, 0.00056, 0.00133, 0.00362, 0.0, 0.0, 0.00035, 0.00357, 0.0, 5e-05, 0.0, 0.00424, 0.0, 0.0, 0.0, 0.00313, 0.00381, 0.00392, 0.00076, 0.00084, 0.0, 0.0001, 0.00105, 0.00036, 0.00021, 9e-05, 0.00154, 0.0, 0.00018, 0.0, 0.0003, 0.00012, 0.00019, 0.00031, 0.0, 0.0029, 0.0, 7e-05, 7e-05, 0.00043, 0.00039, 0.00041, 0.0, 0.00062, 0.00048, 0.00054, 0.0, 0.00022, 0.0, 0.00024, 0.00012, 0.0, 0.00077, 0.0, 0.00047, 0.00021, 0.00049, 0.00015, 0.0, 0.00037, 0.0179, 0.0, 0.0, 0.00055, 0.01559, 0.0, 0.0, 0.0, 0.04409, 0.0, 0.0, 0.0, 0.0017, 0.0, 0.00036, 0.0, 0.00172, 0.0, 0.0, 0.00038, 0.00039, 0.0, 8e-05, 0.00011, 0.0, 0.00092, 0.0, 0.00041, 0.00011, 0.00077, 0.0, 0.00046, 0.0012, 0.0002, 0.00121, 0.00083, 0.0027, 0.0, 0.0, 0.0, 0.00218, 1e-05, 0.00012, 0.00021, 0.00239, 1e-05, 0.00022, 0.00012, 0.00184, 0.00173, 0.00107, 0.00045, 0.00048, 0.00034, 0.00026, 0.00031, 0.00048, 0.00034, 0.00026, 0.00458, 0.0, 0.00036, 0.0005, 0.00031, 0.00142, 0.00155, 0.00203, 0.0, 0.0, 0.0, 0.00187, 0.0, 0.0, 0.0, 0.002, 0.00082, 0.00209, 0.00207, 0.00043, 0.00016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00243, 0.0, 0.00156, 0.00028, 0.0, 0.00022, 9e-05, 0.00184, 2e-05, 0.00067, 0.00175, 0.00076, 0.0, 0.0, 0.0, 0.0014, 0.0, 0.0, 7e-05, 0.00168, 6e-05, 0.0, 0.00023, 0.00028, 0.00029, 0.0, 0.0001, 0.0, 0.00049, 0.00056, 0.00064, 0.0, 0.00036, 0.00043, 0.00051, 0.0016, 6e-05, 0.00024, 0.0005, 0.0024, 0.00021, 9e-05, 0.0005, 0.00448, 0.00046, 0.00049, 0.0021, 0.00176, 0.0032, 0.0024, 0.00087, 0.00017, 0.00012, 0.0, 0.00049, 0.0, 0.0, 0.00017, 0.0007, 0.00088, 9e-05, 0.0, 0.0, 0.00077, 0.0, 0.00012, 0.00034, 0.00072, 0.0, 0.00038, 8e-05, 0.00032, 0.00052, 0.0, 8e-05, 0.00035, 0.00049, 0.0, 9e-05, 0.00341, 0.00016, 0.00274, 0.00253, 0.00153, 0.00011, 0.00011, 0.0, 0.00143, 8e-05, 8e-05, 0.00018, 0.00294, 1e-05, 1e-05, 0.0, 0.00027, 0.00011, 0.0, 0.0, 0.00033, 0.00011, 0.0, 0.0, 0.00424, 0.0, 0.0, 0.0, 0.00209, 2e-05, 2e-05, 0.0, 0.0008, 0.0, 1e-05, 0.00019, 0.00137, 1e-05, 0.0, 0.00019, 0.00011, 0.00089, 0.00125, 0.00126, 0.0004, 0.0006, 0.0, 0.0, 0.00215, 0.00112, 0.00122, 0.00144, 0.00241, 0.00127, 0.00019, 0.00028, 0.00108, 0.00253, 0.0, 0.00021, 0.00328, 0.00038, 0.00118, 0.00123, 0.00082, 0.00045, 0.00038, 0.00052, 0.0, 9e-05, 0.00017, 0.00121, 0.00023, 0.0, 0.0, 0.00059, 0.00072, 0.00055, 0.00101, 0.00078, 0.00076, 0.00093, 0.0, 0.00011, 0.0003, 0.00013, 0.0005, 0.00041, 0.0, 1e-05, 0.00021, 0.00133, 0.00127, 0.00048, 0.00044, 0.0, 6e-05, 0.0, 0.00098, 0.00166, 0.00011, 0.0, 0.0, 0.0, 5e-05, 0.00087, 0.00148, 0.00185, 0.00127, 7e-05, 4e-05, 4e-05, 0.0, 1e-05, 4e-05, 0.0, 0.00034, 0.00019, 0.0, 0.0, 0.0, 0.0, 0.00011, 0.0, 0.0, 0.00316, 0.00048, 0.00044, 0.0, 0.00239, 0.0, 0.0, 0.00159, 0.00063, 8e-05, 0.00051, 0.01397, 0.0, 0.00324, 0.0, 0.01697, 0.00276, 0.0, 0.0, 0.02799, 0.0, 0.0, 0.0099, 0.03433, 0.0, 0.0, 0.0, 0.01998, 0.01707, 0.01221, 0.00336, 0.00019, 0.0003, 0.0, 0.00428, 0.0, 0.00508, 0.00369, 0.0003, 0.00019, 0.0, 0.00204, 0.0, 0.00475, 0.0, 0.0, 0.00089, 0.0, 0.0, 0.0, 0.0, 0.00088, 0.0026, 0.0, 0.0, 0.0, 0.00161, 0.00032, 0.00033, 0.00129, 0.0, 0.00076, 0.0, 0.00159, 0.00074, 0.00063, 0.0, 0.00067, 0.00154, 5e-05, 7e-05, 0.00012, 0.00072, 0.0, 0.00022, 8e-05, 0.00107, 0.0, 3e-05, 0.00027, 0.0, 0.0, 0.0, 0.0, 0.00148, 0.00014, 0.00016, 0.0, 0.0, 0.00032, 0.0, 0.00071, 0.0, 0.0, 0.00632, 0.0, 0.0, 0.00988, 0.0, 0.00137, 0.00101, 0.00516, 0.0, 0.0, 0.0098, 0.00428, 0.0, 0.00101, 0.00372, 0.01131, 0.00055, 0.00029, 0.00374, 0.00136, 0.0005, 0.00017, 0.00025, 0.0005, 0.00136, 0.00165, 0.0, 0.01083, 0.00399, 0.01595, 0.00895, 0.00412, 0.0, 0.0, 0.0, 0.00351, 0.0, 0.0, 0.00041, 0.00102, 0.0, 0.0, 0.0, 0.00135, 0.00011, 0.0, 0.0, 0.00038, 0.00015, 3e-05, 0.0014, 0.0, 0.0, 0.00015, 0.00011, 0.0, 0.00051, 0.00138, 0.0, 0.00069, 0.00103, 0.0002, 0.0, 0.00744, 0.0, 0.0, 0.0, 0.0, 0.00098, 0.0, 0.0, 0.0001, 0.00123, 0.00032, 0.00032, 0.00092, 0.00401, 0.0002, 0.00048, 0.0, 0.00464, 0.00017, 0.00045, 0.0, 0.00249, 0.0, 0.0002, 0.0, 0.00263, 0.0, 0.00015, 0.0002, 0.00294, 0.0, 2e-05, 7e-05, 0.00018, 0.0, 0.00016, 0.00021, 0.00018, 0.0, 0.0, 0.0, 0.00087, 0.0, 0.0, 0.0, 0.00525, 0.0, 0.0, 0.0, 0.00226, 0.0, 0.00036, 0.00094, 0.0021, 1e-05, 0.0, 0.0, 0.0, 0.00138, 0.00035, 0.00251, 0.0, 0.0, 0.0, 0.0, 0.00619, 0.00026, 0.00082, 0.0, 0.01414, 0.00694, 0.00589, 0.04511, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00281, 0.00038, 0.00017, 0.06768, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00186, 0.0, 0.0012, 0.0, 0.0024, 0.0, 0.00166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00057, 0.00098, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00242, 0.00168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00172, 0.00018, 0.0001, 0.00016, 0.00016, 0.00027, 9e-05, 0.00035, 0.00023, 0.00045, 9e-05, 0.00023, 0.00035, 0.0, 0.00093, 0.0, 0.0001, 0.0, 0.00105, 0.00012, 0.0, 0.00205, 0.00032, 0.00112, 0.00094, 0.00054, 0.0, 0.00013, 0.00025, 0.0003, 0.00018, 0.0, 0.00024, 0.00059, 0.00023, 0.00017, 0.00257, 0.00133, 0.00012, 0.0, 3e-05, 0.0007, 0.00093, 1e-05, 0.00038, 2e-05, 0.00011, 0.0005, 0.0, 0.0, 0.01091, 0.01008, 2e-05, 0.00011, 0.0005, 0.00016, 0.00094, 0.00121, 0.00115, 0.0, 0.00019, 0.00019, 0.00126, 0.0, 0.0, 0.0, 0.00052, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00017, 0.0001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00019, 0.0, 0.00167, 0.0, 0.0, 0.0, 0.00166, 0.0, 0.0, 0.00088, 0.00075, 0.00235, 0.00165, 0.0, 0.00111, 0.00041, 0.00368, 0.0, 0.0, 0.00096, 0.0, 0.00126, 0.0014, 0.00383, 0.00164, 0.00018, 0.00074, 0.00065, 0.0003, 0.00084, 0.00308, 0.0002, 0.00168, 0.00077, 0.00488, 0.00012, 0.00049, 0.0, 0.00507, 0.00011, 0.0, 0.00053, 0.0017, 0.0, 0.0, 3e-05, 0.00133, 0.0057, 0.0055, 0.00285, 0.0, 0.0, 0.0, 0.00144, 0.0, 0.0, 0.00037, 0.00094, 0.0325, 0.00336, 0.0, 0.04479, 0.00019, 0.0, 0.0, 0.05121, 0.0335, 0.01576, 0.0, 0.01813, 0.00123, 0.00031, 0.0, 0.0, 0.00124, 0.0, 0.00024, 0.0, 0.00447, 2e-05, 0.0, 0.00294, 0.00192, 0.00018, 0.0, 0.00011, 0.00244, 0.00064, 0.00018, 0.00052, 0.00074, 0.00049, 0.00191, 0.00224, 0.00214, 0.0, 0.00014, 0.00044, 0.00152, 8e-05, 0.0003, 0.0006, 0.0018, 0.0, 0.00065, 0.00095, 0.0062, 0.00404, 0.00019, 0.0, 0.00845, 0.00394, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00686, 0.0, 0.00258, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01445, 0.01468, 0.0, 0.0, 0.0, 0.00617, 0.00264, 0.00515, 0.00108, 0.0, 1e-05, 0.0, 0.00445, 0.0019, 0.0, 0.0, 0.00072, 0.00809, 0.0, 0.0, 0.0, 0.00939, 0.0, 0.0, 0.0, 0.00406, 0.0, 0.00065, 0.00247, 0.00111, 0.00056, 0.00062, 0.0, 0.00123, 0.00014, 0.00121, 0.0, 0.00156, 0.00076, 0.00025, 0.00138, 0.00138, 0.00152, 0.00153, 0.00151, 9e-05, 0.0, 0.0, 0.00078, 0.00024, 7e-05, 0.00202, 0.0001, 0.00037, 0.00012, 0.00127, 0.00044, 0.00024, 0.00153, 0.0001, 0.00037, 0.00012, 0.0, 0.00014, 0.00013, 4e-05, 0.0, 0.00014, 4e-05, 0.00012, 0.00131, 0.00015, 0.0, 0.0, 0.0, 0.00028, 0.00028, 0.0, 0.0, 0.00084, 0.00083, 0.00018, 0.00014, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00071, 0.0001, 0.0, 0.00062, 0.0, 0.0, 0.0, 0.0, 3e-05, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00079, 0.0, 0.00014, 0.00091, 0.0, 0.0, 0.0, 0.00159, 0.00029, 0.0, 0.00061, 0.0, 0.0, 0.00014, 0.0008, 9e-05, 0.0, 0.00013, 0.00078, 0.00016, 0.0, 0.00317, 0.00052, 0.00098, 0.00078, 0.00036, 0.00041, 0.00017, 0.00019, 0.00045, 2e-05, 0.00014, 6e-05, 0.00084, 0.00329, 0.0, 0.0, 0.00033, 0.00123, 0.0, 0.00033, 0.0, 0.0013, 0.00023, 0.0, 0.0, 0.00122, 0.0, 0.0, 0.0, 0.00156, 0.00361, 0.00072, 0.00032, 6e-05, 0.0, 8e-05, 0.00018, 0.00018, 0.00068, 0.00054, 6e-05, 0.0, 8e-05, 0.00024, 0.0, 0.00045]))),\n",
|
||
" LayerError(circuit=<qiskit.circuit.quantumcircuit.QuantumCircuit object at 0x7f729cf07dd0>, qubits=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 57, 58, 59, 60, 61, 62, 64, 65, 66, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], error=PauliLindbladError(generators=['IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...',\n",
|
||
" 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...', ...], rates=[0.0002, 0.00032, 0.00149, 0.00057, 0.00042, 0.0003, 0.0, 8e-05, 0.0, 9e-05, 0.00076, 0.00031, 0.0, 8e-05, 0.00053, 0.00023, 5e-05, 0.00015, 0.0003, 0.00028, 5e-05, 0.0003, 0.00015, 0.00092, 1e-05, 0.0, 0.0, 0.00049, 0.00079, 0.00074, 0.00019, 0.0001, 6e-05, 0.00015, 0.00045, 0.00019, 0.00019, 0.0, 0.00035, 0.00024, 3e-05, 0.00026, 0.0, 0.0003, 3e-05, 0.0, 0.00026, 0.00073, 0.00031, 0.0, 0.0, 0.00043, 0.00031, 0.00031, 0.00048, 0.00087, 0.0, 0.0, 0.0, 0.00041, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00077, 0.0, 0.0, 0.0, 0.0011, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00319, 0.00257, 0.00861, 0.00506, 0.0, 0.0, 0.13166, 0.00139, 0.0, 0.0, 0.0466, 0.0, 0.00174, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.05474, 0.13958, 0.00871, 0.0, 0.0, 0.0, 0.00039, 0.0001, 0.0, 0.00223, 0.0, 0.00438, 0.0, 0.0, 0.0, 0.00492, 0.0, 0.0, 0.0, 0.00433, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00043, 4e-05, 3e-05, 2e-05, 0.00076, 3e-05, 4e-05, 2e-05, 0.00118, 4e-05, 4e-05, 0.00107, 0.00057, 0.00083, 0.00077, 0.00087, 0.00033, 0.00051, 0.00032, 0.00111, 0.00044, 0.0003, 0.00012, 0.001, 0.0, 0.0064, 0.00652, 0.0, 0.00559, 0.0, 0.0, 0.0, 0.00427, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.37323, 0.0, 0.0, 0.0, 5.01919, 0.23716, 2.04426, 2.04465, 0.00067, 0.00084, 0.00052, 0.00014, 0.00013, 0.0, 0.00013, 0.00078, 0.00039, 0.0, 0.0, 0.00052, 0.00055, 6e-05, 8e-05, 8e-05, 0.00078, 2e-05, 6e-05, 6e-05, 0.00068, 0.0, 0.00025, 0.00025, 0.00134, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7e-05, 1e-05, 0.0, 0.00031, 0.00545, 0.00494, 0.0, 0.0, 0.0047, 0.00569, 0.0, 0.00051, 0.00245, 0.00108, 0.00276, 0.00095, 0.00063, 6e-05, 0.00016, 0.00017, 3e-05, 0.00021, 0.0, 0.00026, 6e-05, 0.00017, 0.00016, 0.00021, 3e-05, 0.0, 0.00141, 0.00031, 0.00034, 0.00034, 0.0, 0.0, 0.00244, 0.00133, 0.00088, 0.00125, 0.00072, 0.00051, 0.00015, 0.0, 0.00137, 0.00076, 0.00014, 0.0, 0.00111, 0.00132, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00017, 0.00022, 0.00061, 0.0, 0.00025, 0.00021, 0.00082, 0.0006, 0.00025, 0.00028, 0.00082, 0.00043, 0.00031, 0.00034, 0.0, 0.00328, 0.0, 0.0, 0.0, 0.0, 0.00157, 0.00063, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00261, 0.00167, 0.0, 0.0, 0.00118, 0.0, 0.0, 0.00111, 0.00116, 0.0, 0.0, 0.0, 0.00318, 0.00432, 0.00219, 0.0, 0.00085, 0.0, 0.0, 0.00131, 0.00081, 0.0, 1e-05, 0.00135, 0.01194, 5e-05, 0.0005, 0.0005, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.37323, 0.0, 9.94176, 0.0, 0.0, 0.0, 0.0, 5.07042, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.66309, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00227, 0.0, 0.0, 0.0, 0.00084, 0.0, 0.0, 0.0, 0.0013, 0.0, 0.0, 0.0, 0.00345, 0.00025, 0.0, 0.00012, 0.00311, 0.00026, 0.0, 5e-05, 0.00136, 0.00019, 0.00148, 0.00299, 0.00011, 0.00082, 0.0, 0.0, 0.00041, 0.00052, 3e-05, 0.0, 0.00219, 0.0, 0.00163, 0.00093, 0.00105, 0.0, 0.0, 0.0, 0.00198, 0.0, 0.0, 0.0, 0.00339, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00053, 0.00049, 0.0, 0.0, 0.00073, 0.00061, 0.0, 0.00119, 0.0013, 0.00084, 0.0037, 0.00212, 0.00162, 0.0, 0.01012, 0.0101, 0.0, 0.0, 0.00034, 0.00246, 0.00429, 0.0, 0.00021, 0.00233, 0.00416, 0.00513, 0.0, 0.0, 0.0, 0.00099, 0.0, 0.0, 0.00048, 0.0, 0.0, 0.0, 0.00564, 0.0, 0.0, 0.00143, 0.0, 0.0, 0.0, 0.00201, 0.00547, 0.00569, 0.00198, 9e-05, 9e-05, 0.00202, 0.00225, 0.00042, 0.00042, 0.00305, 0.00133, 0.0, 0.0, 0.00105, 0.00112, 0.0, 0.0, 0.00025, 3e-05, 1e-05, 0.0, 0.00028, 0.00072, 1e-05, 0.0, 0.00028, 0.00039, 9e-05, 0.0, 0.0, 0.00075, 9e-05, 0.0, 0.0, 0.00084, 0.0, 0.0, 0.0, 0.00025, 0.00041, 0.00041, 0.00062, 0.00091, 0.00055, 0.00056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00063, 0.0, 0.0, 0.0, 5e-05, 0.0, 0.00011, 0.00049, 0.05784, 0.0, 0.0, 0.0, 0.02164, 0.0, 0.00084, 0.0, 0.02131, 0.0, 0.0, 0.00096, 0.00158, 0.0, 0.0, 0.0, 0.0, 0.00259, 0.00065, 0.0, 0.00041, 0.00441, 0.02223, 0.02254, 0.00098, 0.0, 0.0, 0.0, 0.00146, 0.0, 0.0, 0.0, 0.00347, 0.0, 0.0, 0.0, 0.0, 0.00067, 0.00028, 0.0, 0.00167, 0.00078, 0.0, 0.0, 0.00073, 0.00031, 0.0, 0.00099, 0.00069, 0.00096, 0.0, 0.00196, 0.00154, 0.00014, 0.00195, 0.00165, 0.00191, 0.04114, 0.01572, 0.0, 0.0, 0.01562, 0.04121, 0.0, 0.0, 0.01431, 0.00296, 0.00563, 0.00253, 0.00114, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00057, 0.0, 0.00017, 0.0, 0.0, 0.00043, 0.00021, 0.00035, 5e-05, 0.00077, 0.00041, 0.00055, 0.0007, 0.00042, 0.00077, 0.00091, 0.00101, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00162, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00062, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00082, 0.00639, 0.0, 0.00011, 0.0, 0.00809, 0.0, 0.0, 0.0, 0.03816, 0.0, 0.0, 0.0, 0.00155, 0.00175, 0.00011, 5e-05, 0.00159, 0.00171, 3e-05, 0.00013, 0.00058, 0.00081, 0.00107, 0.00039, 0.0, 0.00064, 0.0, 0.0, 0.0, 0.00055, 0.0, 0.00027, 0.0, 0.0003, 0.0, 0.0, 0.00014, 0.00076, 0.0002, 0.00047, 0.00012, 0.00077, 0.0, 0.00067, 0.00191, 0.00123, 0.00237, 0.00141, 0.00049, 0.00033, 0.00043, 0.00035, 0.00033, 0.00049, 0.00245, 0.00595, 0.0, 0.0, 0.01324, 0.01263, 0.00348, 0.00264, 0.00657, 0.0, 0.0, 0.00062, 0.0, 0.0, 0.0, 0.0, 0.0006, 0.00238, 0.00064, 0.0, 0.0, 0.00062, 0.0, 0.0, 7e-05, 0.00043, 0.00046, 0.00018, 0.00021, 0.0, 7e-05, 0.0, 0.0, 0.00015, 0.0014, 0.00121, 7e-05, 0.0, 0.0, 0.0, 0.0001, 0.00039, 0.00035, 2e-05, 0.0, 0.00011, 0.0004, 2e-05, 0.00011, 0.0, 0.00107, 0.0, 0.0, 0.0, 0.00046, 0.00054, 0.00048, 0.00022, 2e-05, 0.0, 9e-05, 0.00123, 0.00028, 0.00026, 0.00011, 0.00097, 0.0172, 0.0012, 9e-05, 0.00014, 0.01606, 0.00044, 0.00102, 0.00048, 0.00538, 0.0014, 0.0006, 0.0016, 0.00194, 0.0, 0.0, 0.0, 0.00028, 0.0, 0.0, 0.00018, 0.00048, 0.0, 0.0, 0.00018, 0.00153, 0.00197, 0.00034, 0.0, 0.00138, 0.00213, 0.00026, 0.0, 0.00856, 0.00046, 0.00066, 0.00046, 0.00141, 0.0, 0.0, 0.0003, 0.00077, 5e-05, 5e-05, 0.0, 0.00331, 0.0, 0.0, 8e-05, 0.0044, 0.0, 0.00016, 0.0, 0.00185, 0.0, 0.00016, 0.0, 0.00416, 0.0, 0.0, 0.0, 0.00124, 0.00201, 0.00456, 0.00052, 0.00118, 0.0, 0.00023, 0.00174, 0.0013, 4e-05, 0.0, 0.00162, 0.00259, 0.0, 0.0, 0.0, 0.00285, 0.0, 1e-05, 0.0, 0.00164, 0.0, 0.0, 0.0, 0.00027, 0.00078, 0.00028, 0.00028, 0.00044, 0.00022, 0.00026, 0.00026, 0.0004, 0.0, 0.00035, 0.00035, 0.00642, 0.00041, 0.00041, 0.00017, 0.00825, 0.00018, 0.00018, 0.0, 0.00066, 0.0, 0.0, 0.00028, 0.00115, 0.0, 5e-05, 5e-05, 0.00124, 0.00012, 0.0, 0.0, 0.00064, 0.0, 0.00039, 0.00039, 0.00074, 0.00082, 0.00107, 0.00053, 0.00017, 0.0, 0.00033, 0.00021, 0.0, 0.00017, 0.00033, 0.00116, 6e-05, 6e-05, 0.00176, 0.0, 8e-05, 0.00036, 0.00065, 0.00072, 0.00104, 0.00041, 0.0, 0.0, 1e-05, 0.00105, 0.0, 0.0, 0.00259, 0.0, 0.00065, 0.00068, 0.00173, 0.0, 0.0, 0.00086, 0.00157, 0.00025, 0.0, 4e-05, 0.00159, 3e-05, 0.0, 0.0, 0.00072, 0.00046, 0.0, 0.00047, 0.00431, 0.0, 0.0, 0.0, 0.00132, 0.0, 0.00015, 0.00037, 0.00165, 0.0, 0.00015, 0.00037, 0.0193, 0.01682, 0.0001, 0.0, 0.01503, 0.02108, 3e-05, 0.0, 0.0211, 0.00883, 0.00217, 0.00185, 0.00198, 0.0, 0.0, 0.0, 0.00019, 0.00017, 0.00062, 0.0, 0.0003, 0.00052, 0.00074, 0.00153, 0.0, 0.0, 0.0004, 0.00036, 0.00057, 0.0008, 0.0, 0.00163, 0.0, 4e-05, 0.00031, 0.0, 0.00138, 0.0, 0.00036, 0.00017, 0.00121, 0.00129, 0.00073, 0.00368, 0.00312, 0.00112, 0.00017, 0.00016, 0.00057, 0.0, 5e-05, 4e-05, 0.0002, 0.00019, 0.00011, 0.0001, 0.00026, 0.01046, 0.00062, 0.0, 0.0, 0.00948, 0.0, 0.00046, 0.00054, 0.00582, 0.0001, 0.00017, 0.00026, 0.00109, 0.0, 0.0, 7e-05, 0.00035, 0.0, 0.00014, 0.00072, 0.0, 0.0, 7e-05, 0.00035, 0.0, 0.00014, 0.00194, 1e-05, 0.0, 0.0004, 0.0, 0.00067, 0.0, 0.0014, 0.00128, 0.00165, 0.00055, 0.00077, 0.0, 0.0, 0.00257, 0.00131, 0.00013, 0.0, 0.00203, 0.00023, 5e-05, 0.00032, 0.0003, 0.00023, 5e-05, 0.0003, 0.00032, 0.00549, 0.00023, 0.00065, 0.00065, 0.00199, 0.00014, 0.0, 0.0, 0.001, 0.0, 0.00014, 0.0, 0.00571, 0.0, 0.0, 0.00343, 0.00101, 0.0, 0.0, 4e-05, 0.00114, 0.00213, 0.00044, 0.0, 1e-05, 0.0, 0.00078, 3e-05, 0.00024, 0.0014, 0.0006, 3e-05, 0.0, 0.0008, 0.00038, 0.0, 0.00078, 0.00042, 0.00105, 0.00098, 0.0005, 0.0001, 0.0, 0.00011, 0.00077, 0.00016, 6e-05, 4e-05, 0.00071, 0.00241, 0.0, 0.0, 0.0, 0.00171, 0.0, 0.0, 0.0, 0.00305, 0.0, 0.0, 0.0, 0.00045, 0.00108, 0.0, 0.0, 0.00086, 0.00068, 0.0, 8e-05, 0.00104, 0.00053, 0.00137, 0.00097, 0.00146, 0.00103, 0.00103, 0.0, 7e-05, 0.00013, 0.00036, 0.00156, 0.00042, 4e-05, 0.0, 0.00118, 0.00152, 9e-05, 9e-05, 0.0, 0.00179, 9e-05, 0.0, 9e-05, 0.00118, 0.0, 0.00028, 0.00028, 0.00103, 0.00203, 0.00176, 0.0013, 0.0006, 0.00039, 0.00013, 0.00401, 0.00369, 0.00073, 0.00069, 0.00091, 0.00102, 0.00011, 0.00028, 4e-05, 0.00279, 0.00011, 4e-05, 0.00028, 0.0, 0.0, 0.0, 0.0, 0.00083, 0.00335, 0.00158, 0.00056, 0.0, 0.0, 0.00097, 0.00049, 0.0, 0.0, 0.00124, 0.00047, 0.00052, 0.00171, 0.00241, 0.00087, 0.0, 2e-05, 3e-05, 0.0, 0.00035, 0.00017, 0.00281, 0.0, 0.00037, 1e-05, 0.00045, 0.00016, 0.00031, 0.00185, 0.0, 0.00021, 0.0006, 0.00083, 7e-05, 9e-05, 0.00025, 0.00093, 0.00026, 0.00034, 0.00049, 0.00241, 0.00077, 0.00091, 0.00107, 0.0, 2e-05, 0.00015, 1e-05, 0.0, 0.0, 0.0, 8e-05, 0.0, 0.0, 0.0, 0.0002, 0.00044, 0.00068, 4e-05, 0.0, 0.00049, 0.00064, 0.0, 0.0, 0.00089, 0.00029, 0.00142, 0.00124, 0.0016, 0.0, 0.0, 0.0, 7e-05, 7e-05, 0.0, 0.00032, 0.00012, 0.0001, 7e-05, 0.0, 0.00013, 2e-05, 0.00012, 0.0001, 0.00012, 7e-05, 0.00013, 0.0, 2e-05, 0.00036, 0.00071, 0.0002, 0.0, 0.00052, 0.00055, 9e-05, 0.0, 0.00089, 7e-05, 0.00057, 0.00076, 0.00087, 0.00014, 0.00014, 0.0, 0.00046, 4e-05, 0.0, 0.0, 0.00118, 0.0, 4e-05, 0.0, 0.0012, 0.0, 0.0, 0.0, 0.00174, 0.0, 0.0, 0.0, 0.00175, 0.0, 0.00031, 0.00031, 0.0, 0.00014, 0.00103, 0.00099, 0.00208, 0.00371, 0.00085, 0.0, 0.00014, 0.0, 0.0, 0.00094, 0.00011, 0.00254, 0.0, 0.00081, 0.0, 0.00023, 0.00134, 0.0005, 0.00293, 0.0028, 0.0022, 0.0, 0.00022, 0.0021, 0.0029, 0.0, 0.0, 0.00356, 0.00145, 0.00504, 0.00382, 0.00046, 5e-05, 5e-05, 0.0, 0.0009, 0.0, 0.0, 2e-05, 0.0008, 6e-05, 6e-05, 0.0, 0.03525, 0.0, 0.0, 0.00099, 0.03159, 0.00013, 0.00013, 0.0, 0.04523, 0.0, 0.0, 0.00188, 0.00201, 0.00032, 0.00035, 0.00041, 0.00253, 0.00021, 0.00022, 0.00028, 0.0042, 0.00012, 0.00057, 0.00063, 0.0032, 0.00161, 0.0, 2e-05, 0.00115, 0.00365, 0.0, 7e-05, 0.0, 0.00058, 0.00154, 0.00082, 0.00086, 0.0, 0.0, 3e-05, 0.0, 4e-05, 0.0, 0.00039, 0.00028, 0.00027, 0.00023, 0.00062, 0.0, 0.0, 0.00061, 0.00824, 0.0, 0.00485, 0.0, 0.00997, 0.0, 0.0, 0.00441, 0.0, 0.00485, 0.0, 0.0138, 0.00364, 0.00419, 0.00232, 0.00996, 0.00398, 0.00167, 0.00103, 0.00061, 0.0, 0.00834, 0.0, 0.0, 0.0, 0.0007, 0.0004, 0.0003, 0.0, 0.00183, 0.0003, 0.0004, 0.0, 0.00231, 0.00341, 0.0, 0.00069, 0.00301, 0.00271, 0.00029, 0.00038, 0.00221, 0.00033, 0.00253, 0.00141, 0.0, 0.00018, 0.00019, 7e-05, 0.00066, 0.00022, 0.00021, 0.0001, 0.00291, 0.0, 0.0, 0.0029, 0.00019, 0.0, 0.0, 0.0, 0.00115, 0.00045, 0.0, 0.00027, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00168, 0.00168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00027, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00986, 0.00308, 0.00332, 0.0047, 0.0, 0.0, 0.0, 0.0, 0.01196, 0.0, 0.0, 0.0, 0.00473, 0.00832, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00202, 0.0, 0.0, 0.00046, 0.00046, 0.00179, 0.00012, 0.0, 0.0, 0.00028, 0.0, 0.0, 0.00133, 0.0, 0.0, 0.0, 0.00067, 0.00038, 0.0, 0.0, 0.00022, 0.00096, 4e-05, 0.0, 0.0, 0.00128, 0.00028, 2e-05, 7e-05, 0.00164, 0.00034, 0.0002, 0.00026, 0.00332, 0.0, 0.0, 0.0, 0.00412, 0.00031, 0.0, 0.0, 0.00671, 0.0, 0.0, 0.00082, 0.0, 0.00215, 0.0, 0.0, 0.00039, 0.00071, 0.00294, 0.0, 0.00308, 0.0, 0.0, 0.0, 0.00011, 0.00234, 0.00056, 0.00051, 0.00113, 0.00046, 0.00065, 0.00049, 0.00039])))]},\n",
|
||
" 'version': 2}"
|
||
]
|
||
},
|
||
"execution_count": 17,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"primitive_result.metadata"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "1f8c5fee-7b20-46ef-b991-a313871bccd7",
|
||
"metadata": {},
|
||
"source": [
|
||
"The `PubResult` object has additional resilience metadata about the learned noise models used in mitigation."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 18,
|
||
"id": "df429d8a-9a8e-4d2c-8960-1745875f2252",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"noise_overhead: Infinity\n",
|
||
"total_mitigated_layers: 18\n",
|
||
"unique_mitigated_layers: 3\n",
|
||
"unique_mitigated_layers_noise_overhead: [3.791143096348365e+26, 3.3275292822235375e+53, 7422.268372344261]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# Print learned layer noise metadata\n",
|
||
"for field, value in pub_result.metadata[\"resilience\"][\"layer_noise\"].items():\n",
|
||
" print(f\"{field}: {value}\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 19,
|
||
"id": "b309df58-8d84-4222-9fd4-7ede91bfdc37",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Exact data computed using the methods described in the original reference\n",
|
||
"# Y. Kim et al. \"Evidence for the utility of quantum computing before fault tolerance\" (Nature 618, 500–505 (2023))\n",
|
||
"# Directly used here for brevity\n",
|
||
"exact_data = np.array(\n",
|
||
" [\n",
|
||
" 1,\n",
|
||
" 0.9899,\n",
|
||
" 0.9531,\n",
|
||
" 0.8809,\n",
|
||
" 0.7536,\n",
|
||
" 0.5677,\n",
|
||
" 0.3545,\n",
|
||
" 0.1607,\n",
|
||
" 0.0539,\n",
|
||
" 0.0103,\n",
|
||
" 0.0012,\n",
|
||
" 0.0,\n",
|
||
" ]\n",
|
||
")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "28be7131-af2d-43e4-a61f-12f328e90b4f",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Plot Trotter simulation results\n",
|
||
"\n",
|
||
"The following code creates a plot to compare the raw and mitigated experiment results against the exact solution."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 20,
|
||
"id": "0338f87d-9b37-46a7-91a1-de206a794843",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"\"\"\"Result visualization functions\"\"\"\n",
|
||
"\n",
|
||
"\n",
|
||
"def plot_trotter_results(\n",
|
||
" pub_result: PubResult,\n",
|
||
" angles: Sequence[float],\n",
|
||
" plot_noise_factors: Sequence[float] | None = None,\n",
|
||
" plot_extrapolator: Sequence[str] | None = None,\n",
|
||
" exact: np.ndarray = None,\n",
|
||
" close: bool = True,\n",
|
||
"):\n",
|
||
" \"\"\"Plot average magnetization from ZNE result data.\n",
|
||
" Args:\n",
|
||
" pub_result: The Estimator PubResult for the PEA experiment.\n",
|
||
" angles: The Rx angle values for the experiment.\n",
|
||
" plot_raw: If provided plot the unextrapolated data for the noise factors.\n",
|
||
" plot_extrapolator: If provided plot all extrapolators, if False only plot\n",
|
||
" the Automatic method.\n",
|
||
" exact: Optional, the exact values to include in the plot. Should be a 1D\n",
|
||
" array-like where the values represent exact magnetization.\n",
|
||
" close: Close the Matplotlib figure before returning.\n",
|
||
" Returns:\n",
|
||
" The figure.\n",
|
||
" \"\"\"\n",
|
||
" data = pub_result.data\n",
|
||
"\n",
|
||
" evs = data.evs\n",
|
||
" num_qubits = evs.shape[0]\n",
|
||
" num_params = evs.shape[1]\n",
|
||
" angles = np.asarray(angles).ravel()\n",
|
||
" if angles.shape != (num_params,):\n",
|
||
" raise ValueError(\n",
|
||
" f\"Incorrect number of angles for input data {angles.size} != {num_params}\"\n",
|
||
" )\n",
|
||
"\n",
|
||
" # Take average magnetization of qubits and its standard error\n",
|
||
" x_vals = angles / np.pi\n",
|
||
" y_vals = np.mean(evs, axis=0)\n",
|
||
" y_errs = np.std(evs, axis=0) / np.sqrt(num_qubits)\n",
|
||
"\n",
|
||
" fig, _ = plt.subplots(1, 1)\n",
|
||
"\n",
|
||
" # Plot auto method\n",
|
||
" plt.errorbar(x_vals, y_vals, y_errs, fmt=\"o-\", label=\"ZNE (automatic)\")\n",
|
||
"\n",
|
||
" # Plot individual extrapolator results\n",
|
||
" if plot_extrapolator:\n",
|
||
" y_vals_extrap = np.mean(data.evs_extrapolated, axis=0)\n",
|
||
" y_errs_extrap = np.std(data.evs_extrapolated, axis=0) / np.sqrt(\n",
|
||
" num_qubits\n",
|
||
" )\n",
|
||
" for i, extrap in enumerate(plot_extrapolator):\n",
|
||
" plt.errorbar(\n",
|
||
" x_vals,\n",
|
||
" y_vals_extrap[:, i, 0],\n",
|
||
" y_errs_extrap[:, i, 0],\n",
|
||
" fmt=\"s-.\",\n",
|
||
" alpha=0.5,\n",
|
||
" label=f\"ZNE ({extrap})\",\n",
|
||
" )\n",
|
||
"\n",
|
||
" # Plot raw results\n",
|
||
" if plot_noise_factors:\n",
|
||
" y_vals_raw = np.mean(data.evs_noise_factors, axis=0)\n",
|
||
" y_errs_raw = np.std(data.evs_noise_factors, axis=0) / np.sqrt(\n",
|
||
" num_qubits\n",
|
||
" )\n",
|
||
" for i, nf in enumerate(plot_noise_factors):\n",
|
||
" plt.errorbar(\n",
|
||
" x_vals,\n",
|
||
" y_vals_raw[:, i],\n",
|
||
" y_errs_raw[:, i],\n",
|
||
" fmt=\"d:\",\n",
|
||
" alpha=0.5,\n",
|
||
" label=f\"Raw (nf={nf:.1f})\",\n",
|
||
" )\n",
|
||
"\n",
|
||
" # Plot exact data\n",
|
||
" if exact is not None:\n",
|
||
" plt.plot(x_vals, exact, \"--\", color=\"black\", alpha=0.5, label=\"Exact\")\n",
|
||
"\n",
|
||
" plt.ylim(-0.1, 1.2)\n",
|
||
" plt.xlabel(\"θ/π\")\n",
|
||
" plt.ylabel(r\"$\\overline{\\langle Z \\rangle}$\")\n",
|
||
" plt.legend()\n",
|
||
" plt.title(\n",
|
||
" f\"Error Mitigated Average Magnetization for Rx(θ) [{num_qubits}-qubit]\"\n",
|
||
" )\n",
|
||
" if close:\n",
|
||
" plt.close(fig)\n",
|
||
" return fig"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 21,
|
||
"id": "2e0f0e84-32ba-4655-91c1-8445016bbeb2",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"<Image src=\"/docs/images/tutorials/probabilistic-error-amplification/extracted-outputs/2e0f0e84-32ba-4655-91c1-8445016bbeb2-0.avif\" alt=\"Output of the previous code cell\" />"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"zne_metadata = primitive_result.metadata[\"resilience\"][\"zne\"]\n",
|
||
"# Plot Trotter simulation results\n",
|
||
"fig = plot_trotter_results(\n",
|
||
" pub_result,\n",
|
||
" parameter_values,\n",
|
||
" plot_extrapolator=zne_metadata[\"extrapolator\"],\n",
|
||
" plot_noise_factors=zne_metadata[\"noise_factors\"],\n",
|
||
" exact=exact_data,\n",
|
||
")\n",
|
||
"display(fig)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "a5414c0f-4b6f-47b4-ae5a-17b7f8d1859c",
|
||
"metadata": {},
|
||
"source": [
|
||
"While the noisy (noise factor `nf=1.0`) values show high deviation from exact values, the mitigated values are close to exact values, demonstrating the utility of the PEA-based mitigation technique."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "3a04fdb0-287d-44ec-b263-25aa8d0eb674",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Plot extrapolation results for individual qubits\n",
|
||
"\n",
|
||
"Finally, the following code creates a plot to show the extrapolation curves for different values of theta on a specific qubit."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 22,
|
||
"id": "f7971ece-944e-4dfd-ba4c-066d2c4b7ddc",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def plot_qubit_zne_data(\n",
|
||
" pub_result: PubResult,\n",
|
||
" angles: Sequence[float],\n",
|
||
" qubit: int,\n",
|
||
" noise_factors: Sequence[float],\n",
|
||
" extrapolator: Sequence[str] | None = None,\n",
|
||
" extrapolated_noise_factors: Sequence[float] | None = None,\n",
|
||
" num_cols: int | None = None,\n",
|
||
" close: bool = True,\n",
|
||
"):\n",
|
||
" \"\"\"Plot ZNE extrapolation data for specific virtual qubit\n",
|
||
" Args:\n",
|
||
" pub_result: The Estimator PubResult for the PEA experiment.\n",
|
||
" angles: The Rx theta angles used for the experiment.\n",
|
||
" qubit: The virtual qubit index to plot.\n",
|
||
" noise_factors: the raw noise factors.\n",
|
||
" extrapolator: The extrapolator metadata for multiple extrapolators.\n",
|
||
" extrapolated_noise_factors: The noise factors used for extrapolation.\n",
|
||
" num_cols: The number of columns for the generated subplots.\n",
|
||
" close: Close the Matplotlib figure before returning.\n",
|
||
" Returns:\n",
|
||
" The Matplotlib figure.\n",
|
||
" \"\"\"\n",
|
||
" data = pub_result.data\n",
|
||
"\n",
|
||
" evs_auto = data.evs[qubit]\n",
|
||
" stds_auto = data.stds[qubit]\n",
|
||
" evs_extrap = data.evs_extrapolated[qubit]\n",
|
||
" stds_extrap = data.stds_extrapolated[qubit]\n",
|
||
" evs_raw = data.evs_noise_factors[qubit]\n",
|
||
" stds_raw = data.stds_noise_factors[qubit]\n",
|
||
"\n",
|
||
" num_params = evs_auto.shape[0]\n",
|
||
" angles = np.asarray(angles).ravel()\n",
|
||
" if angles.shape != (num_params,):\n",
|
||
" raise ValueError(\n",
|
||
" f\"Incorrect number of angles for input data {angles.size} != {num_params}\"\n",
|
||
" )\n",
|
||
"\n",
|
||
" # Make a square subplot\n",
|
||
" num_cols = num_cols or int(np.ceil(np.sqrt(num_params)))\n",
|
||
" num_rows = int(np.ceil(num_params / num_cols))\n",
|
||
" fig, axes = plt.subplots(\n",
|
||
" num_rows, num_cols, sharex=True, sharey=True, figsize=(12, 5)\n",
|
||
" )\n",
|
||
" fig.suptitle(f\"ZNE data for virtual qubit {qubit}\")\n",
|
||
"\n",
|
||
" for pidx, ax in zip(range(num_params), axes.flat):\n",
|
||
" # Plot auto extrapolated\n",
|
||
" ax.errorbar(\n",
|
||
" 0,\n",
|
||
" evs_auto[pidx],\n",
|
||
" stds_auto[pidx],\n",
|
||
" fmt=\"o\",\n",
|
||
" label=\"PEA (automatic)\",\n",
|
||
" )\n",
|
||
"\n",
|
||
" # Plot extrapolators\n",
|
||
" if (\n",
|
||
" extrapolator is not None\n",
|
||
" and extrapolated_noise_factors is not None\n",
|
||
" ):\n",
|
||
" for i, method in enumerate(extrapolator):\n",
|
||
" ax.errorbar(\n",
|
||
" extrapolated_noise_factors,\n",
|
||
" evs_extrap[pidx, i],\n",
|
||
" stds_extrap[pidx, i],\n",
|
||
" fmt=\"-\",\n",
|
||
" alpha=0.5,\n",
|
||
" label=f\"PEA ({method})\",\n",
|
||
" )\n",
|
||
"\n",
|
||
" # Plot raw\n",
|
||
" ax.errorbar(\n",
|
||
" noise_factors, evs_raw[pidx], stds_raw[pidx], fmt=\"d\", label=\"Raw\"\n",
|
||
" )\n",
|
||
"\n",
|
||
" ax.set_yticks([0, 0.5, 1, 1.5, 2])\n",
|
||
" ax.set_ylim(0, max(1, 1.1 * max(evs_auto)))\n",
|
||
"\n",
|
||
" ax.set_xticks([0, *noise_factors])\n",
|
||
" ax.set_title(f\"θ/π = {angles[pidx]/np.pi:.2f}\")\n",
|
||
" if pidx == 0:\n",
|
||
" ax.set_ylabel(r\"$\\langle Z_{\" + str(qubit) + r\"} \\rangle$\")\n",
|
||
" if pidx == num_params - 1:\n",
|
||
" ax.set_xlabel(\"Noise Factor\")\n",
|
||
" ax.legend()\n",
|
||
" if close:\n",
|
||
" plt.close(fig)\n",
|
||
" return fig"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 23,
|
||
"id": "6948475c-bc15-493f-8af9-f8e66d0e467c",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"<Image src=\"/docs/images/tutorials/probabilistic-error-amplification/extracted-outputs/6948475c-bc15-493f-8af9-f8e66d0e467c-0.avif\" alt=\"Output of the previous code cell\" />"
|
||
]
|
||
},
|
||
"execution_count": 23,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"virtual_qubit = 1\n",
|
||
"plot_qubit_zne_data(\n",
|
||
" pub_result=pub_result,\n",
|
||
" angles=parameter_values,\n",
|
||
" qubit=virtual_qubit,\n",
|
||
" noise_factors=zne_metadata[\"noise_factors\"],\n",
|
||
" extrapolator=zne_metadata[\"extrapolator\"],\n",
|
||
" extrapolated_noise_factors=zne_metadata[\"extrapolated_noise_factors\"],\n",
|
||
")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "2fc07ea9",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Tutorial survey\n",
|
||
"\n",
|
||
"Please take one minute to provide feedback on this tutorial. Your insights will help us improve our content offerings and user experience.\n",
|
||
"\n",
|
||
"[Link to survey](https://your.feedback.ibm.com/jfe/form/SV_9z7nltLeb5cX9Cm)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "cf8eff5f",
|
||
"metadata": {},
|
||
"source": [
|
||
"© IBM Corp. 2024"
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"description": "Run a utility-scale error mitigation experiment with zero noise extrapolation and probabilistic error amplification.",
|
||
"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"
|
||
},
|
||
"platform": "cloud",
|
||
"title": "Utility-scale error mitigation with probabilistic error amplification"
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 5
|
||
}
|