{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "DkA0Fobtb9dM" }, "source": [ "##### Copyright 2022 The Cirq Developers" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "cellView": "form", "execution": { "iopub.execute_input": "2024-07-19T09:31:11.340312Z", "iopub.status.busy": "2024-07-19T09:31:11.340062Z", "iopub.status.idle": "2024-07-19T09:31:11.344332Z", "shell.execute_reply": "2024-07-19T09:31:11.343565Z" }, "id": "tUshu7YfcAAW" }, "outputs": [], "source": [ "# @title Licensed under the Apache License, Version 2.0 (the \"License\");\n", "# you may not use this file except in compliance with the License.\n", "# You may obtain a copy of the License at\n", "#\n", "# https://www.apache.org/licenses/LICENSE-2.0\n", "#\n", "# Unless required by applicable law or agreed to in writing, software\n", "# distributed under the License is distributed on an \"AS IS\" BASIS,\n", "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", "# See the License for the specific language governing permissions and\n", "# limitations under the License." ] }, { "cell_type": "markdown", "metadata": { "id": "4ySIERZGZN0d" }, "source": [ "# QVM Basic Example" ] }, { "cell_type": "markdown", "metadata": { "id": "vGUeqO9jn1vc" }, "source": [ "\n", " \n", " \n", " \n", " \n", "
\n", " View on QuantumAI\n", " \n", " Run in Google Colab\n", " \n", " View source on GitHub\n", " \n", " Download notebook\n", "
" ] }, { "cell_type": "markdown", "metadata": { "id": "cd6e59ef3edd" }, "source": [ "This notebook walks through running a simple circuit on the [Quantum Virtual Machine](./quantum_virtual_machine.ipynb), including the necessary constraints on a device-runnable circuit and how to satisfy them. " ] }, { "cell_type": "markdown", "metadata": { "id": "Lfira0gPf0Gd" }, "source": [ "## **Install** Cirq and qsim" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "cellView": "form", "execution": { "iopub.execute_input": "2024-07-19T09:31:11.348083Z", "iopub.status.busy": "2024-07-19T09:31:11.347526Z", "iopub.status.idle": "2024-07-19T09:31:26.739513Z", "shell.execute_reply": "2024-07-19T09:31:26.738505Z" }, "id": "zs5J6wAXqvtW" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "installing cirq...\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\r\n", "tensorflow-metadata 1.15.0 requires protobuf<4.21,>=3.20.3; python_version < \"3.11\", but you have protobuf 4.25.3 which is incompatible.\u001b[0m\u001b[31m\r\n", "\u001b[0m" ] }, { "name": "stdout", "output_type": "stream", "text": [ "installed cirq.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "installing qsimcirq...\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "installed qsimcirq.\n" ] } ], "source": [ "# @title Install `cirq_google` and `qsimcirq`\n", "\n", "try:\n", " import cirq\n", " import cirq_google\n", "except ImportError:\n", " print(\"installing cirq...\")\n", " !pip install --quiet cirq-google\n", " print(\"installed cirq.\")\n", " import cirq\n", " import cirq_google\n", "\n", "try:\n", " import qsimcirq\n", "except ImportError:\n", " print(\"installing qsimcirq...\")\n", " !pip install --quiet qsimcirq\n", " print(f\"installed qsimcirq.\")\n", " import qsimcirq\n", "\n", "# Other modules used in this colab\n", "import matplotlib.pyplot as plt\n", "import time" ] }, { "cell_type": "markdown", "metadata": { "id": "p2JAfQa8gVSe" }, "source": [ "## Create a **Quantum Virtual Machine**\n", "\n", "The following cell builds a Quantum Virtual Machine that mimics a particular Google quantum hardware device (currently Rainbow or Weber) using the following customizable steps: \n", "- Constructing a `cirq.NoiseModel` object from device calibration data saved in Cirq. See [Representing Noise](../noise/representing_noise.ipynb) for more on noise models. \n", "- Building a `qsimcirq.QsimSimulator` that uses this noise model. See [Noisy Simulation](./noisy_simulation.ipynb) and [Noise simulation with qsim](/qsim/tutorials/noisy_qsimcirq) for more. \n", "- Creating a `cirq.Device` that imposes the same constraints on circuits that the original device would. See [Devices](../hardware/devices.ipynb) for more on these constraint objects. \n", "- Packaging the simulator and device into an object that implements the `cirq.Engine` interface that the hardware device would use. \n", "\n", "If you don't need this level of control, you can also instantiate a QVM with `cirq_google.engine.create_default_noisy_quantum_virtual_machine`, as in [QVM Creation Template](./qvm_builder_code.ipynb). " ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "cellView": "form", "execution": { "iopub.execute_input": "2024-07-19T09:31:26.744714Z", "iopub.status.busy": "2024-07-19T09:31:26.743204Z", "iopub.status.idle": "2024-07-19T09:31:27.034748Z", "shell.execute_reply": "2024-07-19T09:31:27.034040Z" }, "id": "pbHCUPLpq5WE" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Your quantum virtual machine weber is ready, here is the qubit grid: \n", "========================\n", "\n", " (0, 5)───(0, 6)\n", " │ │\n", " │ │\n", " (1, 4)───(1, 5)───(1, 6)───(1, 7)\n", " │ │ │ │\n", " │ │ │ │\n", " (2, 4)───(2, 5)───(2, 6)───(2, 7)───(2, 8)\n", " │ │ │ │ │\n", " │ │ │ │ │\n", " (3, 2)───(3, 3)───(3, 4)───(3, 5)───(3, 6)───(3, 7)───(3, 8)───(3, 9)\n", " │ │ │ │ │ │ │ │\n", " │ │ │ │ │ │ │ │\n", " (4, 1)───(4, 2)───(4, 3)───(4, 4)───(4, 5)───(4, 6)───(4, 7)───(4, 8)───(4, 9)\n", " │ │ │ │ │ │ │ │\n", " │ │ │ │ │ │ │ │\n", "(5, 0)───(5, 1)───(5, 2)───(5, 3)───(5, 4)───(5, 5)───(5, 6)───(5, 7)───(5, 8)\n", " │ │ │ │ │ │ │\n", " │ │ │ │ │ │ │\n", " (6, 1)───(6, 2)───(6, 3)───(6, 4)───(6, 5)───(6, 6)───(6, 7)\n", " │ │ │ │ │\n", " │ │ │ │ │\n", " (7, 2)───(7, 3)───(7, 4)───(7, 5)───(7, 6)\n", " │ │ │\n", " │ │ │\n", " (8, 3)───(8, 4)───(8, 5)\n", " │\n", " │\n", " (9, 4)\n" ] } ], "source": [ "# @title Choose a processor (\"rainbow\" or \"weber\")\n", "processor_id = \"weber\" # @param {type:\"string\"}\n", "\n", "# Construct a simulator with a noise model based on the specified processor.\n", "cal = cirq_google.engine.load_median_device_calibration(processor_id)\n", "noise_props = cirq_google.noise_properties_from_calibration(cal)\n", "noise_model = cirq_google.NoiseModelFromGoogleNoiseProperties(noise_props)\n", "sim = qsimcirq.QSimSimulator(noise=noise_model)\n", "\n", "# Create a device from the public device description\n", "device = cirq_google.engine.create_device_from_processor_id(processor_id)\n", "# Build the simulated local processor from the simulator and device.\n", "sim_processor = cirq_google.engine.SimulatedLocalProcessor(\n", " processor_id=processor_id, sampler=sim, device=device, calibrations={cal.timestamp // 1000: cal}\n", ")\n", "# Package the processor to use an Engine interface\n", "sim_engine = cirq_google.engine.SimulatedLocalEngine([sim_processor])\n", "print(\n", " \"Your quantum virtual machine\",\n", " processor_id,\n", " \"is ready, here is the qubit grid:\",\n", " \"\\n========================\\n\",\n", ")\n", "print(sim_engine.get_processor(processor_id).get_device())" ] }, { "cell_type": "markdown", "metadata": { "id": "TJfN17frwo-0" }, "source": [ "## **Create** a circuit, **transform** it (to make it executable on Google quantum hardware) and **choose qubits** on the processor. \n", "\n", "The circuit you use needs to be _device ready_, which means it: \n", "- Is comprised of operations from the device's gate set. \n", "- Is applied to qubits that exist on the device. \n", "- Respects the connectivity of qubits on the device.\n", "\n", "Below is an example of a circuit that has the correct topology to be placed on the Weber device, and how it is prepared to be run on the QVM." ] }, { "cell_type": "markdown", "metadata": { "id": "a_arTtfcwqrz" }, "source": [ "### Create a GHZ state builder circuit\n", "\n", "The generalized [Greenberger–Horne–Zeilinger (GHZ) state](https://en.wikipedia.org/wiki/Greenberger%E2%80%93Horne%E2%80%93Zeilinger_state){:.external} has the form $\\frac{|00..0⟩ + |11..1⟩}{\\sqrt{2}}$ and, in this case, will be constructed using 17 qubits, with a Hadamard and a sequence of CNOT gates:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2024-07-19T09:31:27.038626Z", "iopub.status.busy": "2024-07-19T09:31:27.038081Z", "iopub.status.idle": "2024-07-19T09:31:27.056678Z", "shell.execute_reply": "2024-07-19T09:31:27.055986Z" }, "id": "mZFn6OmwwqaR" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0: ────H───@───────────────────────────────────────────────────────────────M('out')───\n", " │ │\n", "1: ────────X───@───────────────────────────────────────────────────────────M──────────\n", " │ │\n", "2: ────────────X───@───────────────────────────────────────────────────────M──────────\n", " │ │\n", "3: ────────────────X───@───────────────────────────────────────────────────M──────────\n", " │ │\n", "4: ────────────────────X───@───────────────────────────────────────────────M──────────\n", " │ │\n", "5: ────────────────────────X───@───────────────────────────────────────────M──────────\n", " │ │\n", "6: ────────────────────────────X───@───────────────────────────────────────M──────────\n", " │ │\n", "7: ────────────────────────────────X───@───────────────────────────────────M──────────\n", " │ │\n", "8: ────────────────────────────────────X───@───────────────────────────────M──────────\n", " │ │\n", "9: ────────────────────────────────────────X───@───────────────────────────M──────────\n", " │ │\n", "10: ───────────────────────────────────────────X───@───────────────────────M──────────\n", " │ │\n", "11: ───────────────────────────────────────────────X───@───────────────────M──────────\n", " │ │\n", "12: ───────────────────────────────────────────────────X───@───────────────M──────────\n", " │ │\n", "13: ───────────────────────────────────────────────────────X───@───────────M──────────\n", " │ │\n", "14: ───────────────────────────────────────────────────────────X───@───────M──────────\n", " │ │\n", "15: ───────────────────────────────────────────────────────────────X───@───M──────────\n", " │ │\n", "16: ───────────────────────────────────────────────────────────────────X───M──────────\n" ] } ], "source": [ "# Define an abstract line of 17 qubits\n", "number_of_qubits = 17\n", "qubits = cirq.LineQubit.range(number_of_qubits)\n", "\n", "# Create a GHZ circuit on this qubit line\n", "ghz_circuit = cirq.Circuit(\n", " cirq.H(qubits[0]),\n", " *[cirq.CNOT(qubits[i - 1], qubits[i]) for i in range(1, number_of_qubits)],\n", " cirq.measure(*qubits, key='out'),\n", ")\n", "print(ghz_circuit)" ] }, { "cell_type": "markdown", "metadata": { "id": "tc5L80jjMknb" }, "source": [ "Notice that this circuit consists of a sequence of CNOT gates applied consecutively to a single chain of qubits. The connectivity required by the circuit is simple in the sense that it needs a line of qubits which are only connected to their adjacent neighbor in the sequence. As constructed, this consists of 17 `cirq.LineQubit`s indexed `0, 1, 2...16`. " ] }, { "cell_type": "markdown", "metadata": { "id": "gmgGLI7eZLQt" }, "source": [ "### Transform the circuit \n", "\n", "Before executing a circuit on (virtual) quantum hardware, the operations in the circuit need to be translated to use the types of gates the device supports. The `cirq.optimize_for_target_gateset` function does this for you, transforming the operations to use the `cirq.SqrtIswapTargetGateset`, which is supported by the Weber processor that this QVM is based on. Learn more about the gate set constraints of Google hardware at the [Hardware](../hardware) page." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2024-07-19T09:31:27.060144Z", "iopub.status.busy": "2024-07-19T09:31:27.059607Z", "iopub.status.idle": "2024-07-19T09:31:27.440558Z", "shell.execute_reply": "2024-07-19T09:31:27.439816Z" }, "id": "MqdssGOhY9-S" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0: ────PhXZ(a=-1,x=0.25,z=-0.5)────────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M('out')───\n", " │ │ │\n", "1: ────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "2: ───────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "3: ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "4: ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "5: ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "6: ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "7: ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "8: ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "9: ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "10: ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "11: ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "12: ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "13: ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "14: ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "15: ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)─────M──────────\n", " │ │ │\n", "16: ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.5,x=0.75,z=-0.5)───M──────────\n" ] } ], "source": [ "# Convert the gates in the GHZ circuit to the \"SqrtIswap\" gateset, which the device uses.\n", "translated_ghz_circuit = cirq.optimize_for_target_gateset(\n", " ghz_circuit, context=cirq.TransformerContext(deep=True), gateset=cirq.SqrtIswapTargetGateset()\n", ")\n", "print(translated_ghz_circuit)" ] }, { "cell_type": "markdown", "metadata": { "id": "JfFfiNkbDDQy" }, "source": [ "### Choose qubits on the virtual device\n", "\n", "Choose qubits on the device to execute your device ready circuit on. Look at the device map (as above) and choose a set of qubits that fit your circuit (eg a line or a block). The Rainbow and Weber devices have different topologies, some qubit maps may be possible on only one of these devices. As noted, the GHZ example circuit as constructed will fit on a 17 qubit chain of adjacent qubits on the device, so you only need to find this consecutive line of qubits. See [Qubit Picking](../hardware/qubit_picking.ipynb) for more advice and methods for selecting qubits. " ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2024-07-19T09:31:27.445628Z", "iopub.status.busy": "2024-07-19T09:31:27.444960Z", "iopub.status.idle": "2024-07-19T09:31:27.450398Z", "shell.execute_reply": "2024-07-19T09:31:27.449736Z" }, "id": "k4PsLLFnDGN-" }, "outputs": [], "source": [ "# Choose qubits on the virtual device\n", "device_qubit_chain = [\n", " cirq.GridQubit(5, 2),\n", " cirq.GridQubit(5, 3),\n", " cirq.GridQubit(4, 3),\n", " cirq.GridQubit(4, 2),\n", " cirq.GridQubit(4, 1),\n", " cirq.GridQubit(5, 1),\n", " cirq.GridQubit(6, 1),\n", " cirq.GridQubit(6, 2),\n", " cirq.GridQubit(6, 3),\n", " cirq.GridQubit(6, 4),\n", " cirq.GridQubit(6, 5),\n", " cirq.GridQubit(7, 5),\n", " cirq.GridQubit(8, 5),\n", " cirq.GridQubit(8, 4),\n", " cirq.GridQubit(8, 3),\n", " cirq.GridQubit(7, 3),\n", " cirq.GridQubit(7, 4),\n", "]\n", "# Layout:\n", "#\n", "# q(4, 1)───q(4, 2)───q(4, 3)\n", "# │ │\n", "# │ │\n", "# q(5, 1) q(5, 2)───q(5, 3)\n", "# │\n", "# │\n", "# q(6, 1)───q(6, 2)───q(6, 3)───q(6, 4)───q(6, 5)\n", "# │\n", "# │\n", "# q(7, 3)───q(7, 4) q(7, 5)\n", "# │ │\n", "# │ │\n", "# q(8, 3)───q(8, 4)───q(8, 5)" ] }, { "cell_type": "markdown", "metadata": { "id": "UD28ccnyrezn" }, "source": [ "### Map the transformed circuit to the qubits you chose on the device\n", "\n", "The transformed GHZ circuit still needs to be re-mapped to use the selected qubits. The `transform_qubits` function of `cirq.Circuit` does this automatically, returning a new transformed circuit when given a qubit mapping function. \n", "\n", "Because the connectivity qubit chain in the GHZ circuit example follows the sequence of `cirq.LineQubit`s in `qubits`, it suffices to zip the circuit's qubits together with the chosen device qubits, since both are connected chains of 17 qubits. The dictionary built from these paired qubits can then be turned into a simple lambda function for use with `transform_qubits`, as follows:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2024-07-19T09:31:27.453757Z", "iopub.status.busy": "2024-07-19T09:31:27.453215Z", "iopub.status.idle": "2024-07-19T09:31:27.501156Z", "shell.execute_reply": "2024-07-19T09:31:27.500507Z" }, "id": "znPgxQ81rjb3" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(4, 1): ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap──────────────────────────────iSwap───────PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │ │ │\n", "(4, 2): ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap──────────────────────────────iSwap───────PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap^0.5───PhXZ(a=-0.5,x=1,z=0)───iSwap^0.5───PhXZ(a=-1,x=0.5,z=0.25)─────────┼──────────────────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │ │ │\n", "(4, 3): ──────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap──────────────────────────────iSwap───────PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap^0.5───PhXZ(a=-0.5,x=1,z=0)───iSwap^0.5───PhXZ(a=-1,x=0.5,z=0.25)────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │ │ │\n", "(5, 1): ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │ │ │\n", "(5, 2): ───PhXZ(a=-1,x=0.25,z=-0.5)────────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)─────────┼──────────────────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M('out')───\n", " │ │ │ │ │ │ │\n", "(5, 3): ───PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap^0.5───PhXZ(a=-0.5,x=1,z=0)───iSwap^0.5───PhXZ(a=-1,x=0.5,z=0.25)──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "(6, 1): ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "(6, 2): ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "(6, 3): ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "(6, 4): ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "(6, 5): ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "(7, 3): ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap──────────────────────────────iSwap───────PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)─────M──────────\n", " │ │ │ │ │ │ │\n", "(7, 4): ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼───────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.5,x=0.75,z=-0.5)───M──────────\n", " │ │ │ │ │\n", "(7, 5): ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │ │ │\n", "(8, 3): ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼──────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap──────────────────────────────iSwap───────PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap^0.5───PhXZ(a=-0.5,x=1,z=0)───iSwap^0.5───PhXZ(a=-1,x=0.5,z=0.25)────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │ │ │\n", "(8, 4): ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼───────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap──────────────────────────────iSwap───────PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap^0.5───PhXZ(a=-0.5,x=1,z=0)───iSwap^0.5───PhXZ(a=-1,x=0.5,z=0.25)───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │ │ │\n", "(8, 5): ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap^0.5───PhXZ(a=-0.5,x=1,z=0)───iSwap^0.5───PhXZ(a=-1,x=0.5,z=0.25)──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n" ] } ], "source": [ "# Map the line of circuit qubits to the chosen line of device qubits.\n", "qubit_map = dict(zip(qubits, device_qubit_chain))\n", "# Then replace qubits in the circuit according to that map.\n", "device_ready_ghz_circuit = translated_ghz_circuit.transform_qubits(lambda q: qubit_map[q])\n", "print(device_ready_ghz_circuit)" ] }, { "cell_type": "markdown", "metadata": { "id": "dWYXJmyWqg3x" }, "source": [ "### **Running other circuits**\n", "\n", "In principle, you can run any custom [Circuit](../build/circuits.ipynb) with a quantum virtual machine, but realistically there are some constraints. As mentioned, the circuits need to be mappable to the device. Additionally, the number of qubits that are simulatable depends highly on the hardware available to you and how long you are able to run your simulation. As the QVM is instantiated as above, with a `qsimcirq.QSimSimulator`, it only uses the default, local [qsim](https://quantumai.google/qsim) simulator. However, qsim has plenty of support for being run in a [Google Cloud instance](/qsim/tutorials/gcp_before_you_begin){:.external}, with a variable amount of compute power. In order to get the most capacity possible for qsim, use [Multinode Simulation](/qsim/tutorials/multinode).\n", "\n", "For an example of building and running a much larger circuit, see the [QVM Stabilizer Example](./qvm_stabilizer_example.ipynb) tutorial. " ] }, { "cell_type": "markdown", "metadata": { "id": "Zxv0RtJuhaof" }, "source": [ "## **Execute** Your Circuit on the Quantum Virtual Machine\n", "\n", "You can run the now device-ready circuit, as you would with any other `cirq.Engine` instance, by getting a sampler from it and using the `run` function on the circuits. Your choice of `repetitions` is intrinsically related to the accuracy of your simulated results. We recommend 3000 repetitions for trial runs, and 10,000 repetitions for accuracy-critical runs, but you can stick to one to ten repetitions when testing a code pipeline. You can read more about this in [this paper](https://arxiv.org/abs/2111.02396){:.external}." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "cellView": "form", "execution": { "iopub.execute_input": "2024-07-19T09:31:27.505316Z", "iopub.status.busy": "2024-07-19T09:31:27.504724Z", "iopub.status.idle": "2024-07-19T09:32:02.422623Z", "shell.execute_reply": "2024-07-19T09:32:02.421809Z" }, "id": "bFjnNSqRZsFu" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Circuit successfully executed on your quantum virtual machine weber\n", "QVM runtime: 34.91s (3000 repetitions)\n", "You can now print or plot \"results\"\n" ] } ], "source": [ "# @title Execute your device ready circuit on the Quantum Virtual Machine\n", "circuit = device_ready_ghz_circuit\n", "\n", "repetitions = 3000\n", "start = time.time()\n", "results = sim_engine.get_sampler(processor_id).run(circuit, repetitions=repetitions)\n", "elapsed = time.time() - start\n", "\n", "print('Circuit successfully executed on your quantum virtual machine', processor_id)\n", "print(f'QVM runtime: {elapsed:.04g}s ({repetitions} repetitions)')\n", "print('You can now print or plot \"results\"')" ] }, { "cell_type": "markdown", "metadata": { "id": "na6nqbvviW7U" }, "source": [ "## **Visualize** Output\n", "\n", "Finally, you can use a [state histogram](./state_histograms.ipynb) to plot the measured results." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "execution": { "iopub.execute_input": "2024-07-19T09:32:02.426657Z", "iopub.status.busy": "2024-07-19T09:32:02.425912Z", "iopub.status.idle": "2024-07-19T09:32:05.513388Z", "shell.execute_reply": "2024-07-19T09:32:05.512595Z" }, "id": "O92KP1EwZwV9" }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1IAAAFxCAYAAAB5gZm2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA1zklEQVR4nO3deXgUVb7/8U+HLJClOwZIwhJ2NEQRMAg0IqAsEZGRAcaNkYC4MUFGIqhclXU0iiLoiOL1KgExdxxwVISRVUGFiBAWEQWBQQOSBZCkWbPW7w9/6UubAH0gkA68X8/Tj+lTp059q9Ik+VhVp2yWZVkCAAAAAHjNr6oLAAAAAIDqhiAFAAAAAIYIUgAAAABgiCAFAAAAAIYIUgAAAABgiCAFAAAAAIYIUgAAAABgiCAFAAAAAIYIUgAAAABgiCAFADBms9k0ceLEqi6j2uG4AcClgyAFAD4mNTVVNpvN/fL391eDBg00dOhQ/fLLL1VdXoXWrl2riRMnKi8vz+t1PvnkE3Xr1k2RkZEKDg5Ws2bNdMcdd2jJkiXuPvv379fEiRO1efPmc67t3//+9wUJLxMnTpTNZtPBgwcrXN6kSRPddttt572dtLQ0zZgx47zHAQBULoIUAPioyZMn691339WsWbPUp08fzZs3T926ddPJkyerurRy1q5dq0mTJnkdpF566SX94Q9/kM1m07hx4zR9+nQNHDhQO3fu1D/+8Q93v/3792vSpEnnHaQmTZp0zutXphMnTujpp582WocgBQC+yb+qCwAAVKxPnz5q3769JOn+++9XnTp19MILL2jhwoW64447qri6c1dcXKwpU6aoV69eWrZsWbnlubm5VVDVxVGzZs2qLsHYsWPHFBISUtVlAIDP4YwUAFQTN954oyRp9+7dHu3bt2/XoEGDFBERoZo1a6p9+/ZauHChR5+ioiJNmjRJLVu2VM2aNVW7dm116dJFy5cvd/fp3r27unfvXm67Q4cOVZMmTU5b18SJEzV27FhJUtOmTd2XJP70008V9j948KBcLpduuOGGCpdHRkZKklatWqXrr79ekjRs2DD3uKmpqZKkL7/8Un/605/UqFEjBQUFKSYmRqNHj9aJEyc8ap85c6YkeVwuWaa0tFQzZszQ1VdfrZo1ayoqKkoPPfSQDh8+fNr9PR+/v0fqyJEjevTRR9WkSRMFBQUpMjJSvXr10saNGyX99j1ZvHixfv75Z3ftp34vcnNzNXz4cEVFRalmzZpq06aN5syZU267hw4d0r333iu73a7w8HAlJiZqy5YtHsdT+u14hYaGavfu3br11lsVFhamwYMHS/LueJ86RmZmpm677TaFhoaqQYMG7u/D1q1bdfPNNyskJESNGzdWWlpaJR1dALi4OCMFANVEWTC54oor3G3btm3TDTfcoAYNGujJJ59USEiI/vnPf6p///764IMP9Mc//lHSb2EnJSVF999/vzp06CCXy6UNGzZo48aN6tWr13nVNWDAAP3444/63//9X02fPl116tSRJNWtW7fC/pGRkapVq5Y++eQTPfLII4qIiKiwX6tWrTR58mSNHz9eDz74oDtIdu7cWZI0f/58HT9+XCNGjFDt2rX1zTff6O9//7v27dun+fPnS5Ieeugh7d+/X8uXL9e7775bbhsPPfSQUlNTNWzYMI0aNUp79uzRa6+9pk2bNmnNmjUKCAg46/7/+uuvFbaXlpaedd2HH35YCxYs0MiRIxUXF6dDhw7pq6++0g8//KDrrrtOTz31lPLz87Vv3z5Nnz5dkhQaGirpt8sEu3fvrl27dmnkyJFq2rSp5s+fr6FDhyovL09//etf3XX069dP33zzjUaMGKHY2Fh9/PHHSkxMrLCm4uJiJSQkqEuXLnrppZcUHBwsybvjXaakpER9+vRR165dNXXqVL333nsaOXKkQkJC9NRTT2nw4MEaMGCAZs2apSFDhsjpdKpp06ZnPV4A4FMsAIBPmT17tiXJWrFihXXgwAFr79691oIFC6y6detaQUFB1t69e919e/ToYbVu3do6efKku620tNTq3Lmz1bJlS3dbmzZtrL59+55xu926dbO6detWrj0xMdFq3LixR5ska8KECe73L774oiXJ2rNnj1f7OH78eEuSFRISYvXp08d69tlnrYyMjHL91q9fb0myZs+eXW7Z8ePHy7WlpKRYNpvN+vnnn91tSUlJVkW/7r788ktLkvXee+95tC9ZsqTC9t+bMGGCJemMr98f898fN4fDYSUlJZ1xO3379i13/C3LsmbMmGFJsubNm+duKywstJxOpxUaGmq5XC7Lsizrgw8+sCRZM2bMcPcrKSmxbr755nLHNjEx0ZJkPfnkk+W25+3xLhvjueeec7cdPnzYqlWrlmWz2ax//OMf7vbt27eXOyYAUF1waR8A+KiePXuqbt26iomJ0aBBgxQSEqKFCxeqYcOGkn47E/LZZ5/pjjvu0JEjR3Tw4EEdPHhQhw4dUkJCgnbu3Ome5S88PFzbtm3Tzp07q3KX3CZNmqS0tDS1a9dOS5cu1VNPPaX4+Hhdd911+uGHH7wao1atWu6vjx07poMHD6pz586yLEubNm066/rz58+Xw+FQr1693Mfu4MGDio+PV2hoqD7//HOv6vjggw+0fPnycq+oqKizrhseHq5169Zp//79Xm3rVP/+978VHR2tu+++290WEBCgUaNG6ejRo1q9erUkacmSJQoICNADDzzg7ufn56ekpKTTjj1ixIhybabH+/7773d/HR4erquuukohISEe9/ddddVVCg8P13/+8x8v9xoAfAeX9gGAj5o5c6auvPJK5efn65133tEXX3yhoKAg9/Jdu3bJsiw988wzeuaZZyocIzc3Vw0aNNDkyZN1++2368orr9Q111yjW265Rffee6+uvfbai7U75dx99926++675XK5tG7dOqWmpiotLU39+vXTd999d9aJGTIzMzV+/HgtXLiw3D1N+fn5Z93+zp07lZ+f774n6/e8nfSia9eu7ssZT+XNxBJTp05VYmKiYmJiFB8fr1tvvVVDhgxRs2bNzrruzz//rJYtW8rPz/P/ibZq1cq9vOy/9erVc1+iV6ZFixYVjuvv7+8O66cyOd41a9Ysd2mnw+FQw4YNPe5RK2u/UPekAcCFRJACAB/VoUMH96x9/fv3V5cuXXTPPfdox44dCg0Ndd+DM2bMGCUkJFQ4Rtkfy127dtXu3bv18ccfa9myZfqf//kfTZ8+XbNmzXKfObDZbLIsq9wYJSUlF2L33Ox2u3r16qVevXopICBAc+bM0bp169StW7fTrlNSUqJevXrp119/1RNPPKHY2FiFhITol19+0dChQ726P6m0tFSRkZF67733Klx+unu8KtMdd9yhG2+8UR9++KGWLVumF198US+88IL+9a9/qU+fPhd8+xUJCgoqF85Mj3eNGjUqHPt07RV97gDA1xGkAKAaqFGjhlJSUnTTTTfptdde05NPPuk+axEQEKCePXuedYyIiAgNGzZMw4YN09GjR9W1a1dNnDjRHaSuuOKKCi+xKjuzcSa/P8twrtq3b685c+YoKyvrjONu3bpVP/74o+bMmaMhQ4a420+dhfBstTVv3lwrVqzQDTfc4HHZ2sVWr149/eUvf9Ff/vIX5ebm6rrrrtOzzz7rDlKnq79x48b69ttvVVpa6hF8tm/f7l5e9t/PP/9cx48f9zgrtWvXLq9rNDneAHC54B4pAKgmunfvrg4dOmjGjBk6efKkIiMj1b17d7355pvu4HGqAwcOuL8+dOiQx7LQ0FC1aNFCBQUF7rbmzZtr+/btHutt2bJFa9asOWttZc8Z8uaBvMePH1d6enqFyz799FNJv907c6Zxy85snHomw7IsvfLKK17Xdscdd6ikpERTpkwpt05xcbHXDxc+VyUlJeUuiYuMjFT9+vU9vi8hISEVXqp46623Kjs7W++//767rbi4WH//+98VGhrqPqOXkJCgoqIivfXWW+5+paWl7unIvWFyvAHgcsEZKQCoRsaOHas//elPSk1N1cMPP6yZM2eqS5cuat26tR544AE1a9ZMOTk5Sk9P1759+7RlyxZJUlxcnLp37674+HhFRERow4YN7mm3y9x33316+eWXlZCQoOHDhys3N1ezZs3S1VdfLZfLdca64uPjJUlPPfWU7rrrLgUEBKhfv34VPsj1+PHj6ty5szp16qRbbrlFMTExysvL00cffaQvv/xS/fv3V7t27ST9Fu7Cw8M1a9YshYWFKSQkRB07dlRsbKyaN2+uMWPG6JdffpHdbtcHH3xQ4b02ZbWNGjVKCQkJqlGjhu666y5169ZNDz30kFJSUrR582b17t1bAQEB2rlzp+bPn69XXnlFgwYNOrdvlBeOHDmihg0batCgQWrTpo1CQ0O1YsUKrV+/XtOmTfOo//3331dycrKuv/56hYaGql+/fnrwwQf15ptvaujQocrIyFCTJk20YMECrVmzRjNmzFBYWJik3y4L7dChgx577DHt2rVLsbGxWrhwoXvadm/OJpocbwC4bFTZfIEAgAqVTX++fv36cstKSkqs5s2bW82bN7eKi4sty7Ks3bt3W0OGDLGio6OtgIAAq0GDBtZtt91mLViwwL3e3/72N6tDhw5WeHi4VatWLSs2NtZ69tlnrcLCQo/x582bZzVr1swKDAy02rZtay1dutSr6c8ty7KmTJliNWjQwPLz8zvjVOhFRUXWW2+9ZfXv399q3LixFRQUZAUHB1vt2rWzXnzxRaugoMCj/8cff2zFxcVZ/v7+HtN1f//991bPnj2t0NBQq06dOtYDDzxgbdmypdyU3sXFxdYjjzxi1a1b17LZbOWmQv/v//5vKz4+3qpVq5YVFhZmtW7d2nr88cet/fv3V1h/mbLpzw8cOFDh8saNG59x+vOCggJr7NixVps2baywsDArJCTEatOmjfX66697rHP06FHrnnvuscLDwy1JHt+LnJwca9iwYVadOnWswMBAq3Xr1hVOFX/gwAHrnnvuscLCwiyHw2ENHTrUWrNmjSXJYzryxMREKyQkpML98fZ4n26Mbt26WVdffbVXxwkAqgObZXGHJwAAl5uPPvpIf/zjH/XVV1/phhtuqOpyAKDaIUgBAHCJO3HihMeEGiUlJerdu7c2bNig7OzsKp1sAwCqK+6RAgDgEvfII4/oxIkTcjqdKigo0L/+9S+tXbtWzz33HCEKAM4RZ6QAALjEpaWladq0adq1a5dOnjypFi1aaMSIER6TjQAAzBCkAAAAAMAQz5ECAAAAAEPcI6XfHky4f/9+hYWFefU8DQAAAACXJsuydOTIEdWvX19+fqc/70SQkrR//37FxMRUdRkAAAAAfMTevXvVsGHD0y4nSEnup7/v3btXdru9iqsBAAAAUFVcLpdiYmLcGeF0CFKS+3I+u91OkAIAAABw1lt+mGwCAAAAAAwRpAAAAADAEEEKAAAAAAwRpAAAAADAUJUGqYkTJ8pms3m8YmNj3ctPnjyppKQk1a5dW6GhoRo4cKBycnI8xsjMzFTfvn0VHBysyMhIjR07VsXFxRd7VwAAAABcRqp81r6rr75aK1ascL/39/+/kkaPHq3Fixdr/vz5cjgcGjlypAYMGKA1a9ZIkkpKStS3b19FR0dr7dq1ysrK0pAhQxQQEKDnnnvuou8LAAAAgMtDlQcpf39/RUdHl2vPz8/X22+/rbS0NN18882SpNmzZ6tVq1b6+uuv1alTJy1btkzff/+9VqxYoaioKLVt21ZTpkzRE088oYkTJyowMPBi7w4AAACAy0CV3yO1c+dO1a9fX82aNdPgwYOVmZkpScrIyFBRUZF69uzp7hsbG6tGjRopPT1dkpSenq7WrVsrKirK3SchIUEul0vbtm077TYLCgrkcrk8XgAAAADgrSoNUh07dlRqaqqWLFmiN954Q3v27NGNN96oI0eOKDs7W4GBgQoPD/dYJyoqStnZ2ZKk7OxsjxBVtrxs2emkpKTI4XC4XzExMZW7YwAAAAAuaVV6aV+fPn3cX1977bXq2LGjGjdurH/+85+qVavWBdvuuHHjlJyc7H7vcrkIUwAAAAC8VuWX9p0qPDxcV155pXbt2qXo6GgVFhYqLy/Po09OTo77nqro6Ohys/iVva/ovqsyQUFBstvtHi8AAAAA8JZPBamjR49q9+7dqlevnuLj4xUQEKCVK1e6l+/YsUOZmZlyOp2SJKfTqa1btyo3N9fdZ/ny5bLb7YqLi7vo9QMAAAC4PFTppX1jxoxRv3791LhxY+3fv18TJkxQjRo1dPfdd8vhcGj48OFKTk5WRESE7Ha7HnnkETmdTnXq1EmS1Lt3b8XFxenee+/V1KlTlZ2draefflpJSUkKCgqqyl0DAAAAcAmr0iC1b98+3X333Tp06JDq1q2rLl266Ouvv1bdunUlSdOnT5efn58GDhyogoICJSQk6PXXX3evX6NGDS1atEgjRoyQ0+lUSEiIEhMTNXny5KraJQAAAACXAZtlWVZVF1HVXC6XHA6H8vPzuV8KAAAAuIx5mw186h4pAAAAAKgOCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGfCZIPf/887LZbHr00UfdbSdPnlRSUpJq166t0NBQDRw4UDk5OR7rZWZmqm/fvgoODlZkZKTGjh2r4uLii1w9AAAAgMuJTwSp9evX680339S1117r0T569Gh98sknmj9/vlavXq39+/drwIAB7uUlJSXq27evCgsLtXbtWs2ZM0epqakaP378xd4FAAAAAJeRKg9SR48e1eDBg/XWW2/piiuucLfn5+fr7bff1ssvv6ybb75Z8fHxmj17ttauXauvv/5akrRs2TJ9//33mjdvntq2bas+ffpoypQpmjlzpgoLC0+7zYKCArlcLo8XAAAAAHiryoNUUlKS+vbtq549e3q0Z2RkqKioyKM9NjZWjRo1Unp6uiQpPT1drVu3VlRUlLtPQkKCXC6Xtm3bdtptpqSkyOFwuF8xMTGVvFcAAAAALmVVGqT+8Y9/aOPGjUpJSSm3LDs7W4GBgQoPD/doj4qKUnZ2trvPqSGqbHnZstMZN26c8vPz3a+9e/ee554AAAAAuJz4V9WG9+7dq7/+9a9avny5ataseVG3HRQUpKCgoIu6TQAAAACXjio7I5WRkaHc3Fxdd9118vf3l7+/v1avXq1XX31V/v7+ioqKUmFhofLy8jzWy8nJUXR0tCQpOjq63Cx+Ze/L+gAAAABAZauyINWjRw9t3bpVmzdvdr/at2+vwYMHu78OCAjQypUr3evs2LFDmZmZcjqdkiSn06mtW7cqNzfX3Wf58uWy2+2Ki4u76PsEAAAA4PJQZZf2hYWF6ZprrvFoCwkJUe3atd3tw4cPV3JysiIiImS32/XII4/I6XSqU6dOkqTevXsrLi5O9957r6ZOnars7Gw9/fTTSkpK4tI9AAAAABdMlQUpb0yfPl1+fn4aOHCgCgoKlJCQoNdff929vEaNGlq0aJFGjBghp9OpkJAQJSYmavLkyVVYNQAAAIBLnc2yLKuqi6hqLpdLDodD+fn5stvtVV0OAAAAgCribTao8udIAQAAAEB1Q5ACAAAAAEMEKQAAAAAwRJACAAAAAEMEKQAAAAAwRJACAAAAAEMEKQAAAAAwRJACAAAAAEMEKQAAAAAwRJACAAAAAEMEKQAAAAAwRJACAAAAAEMEKQAAAAAwRJACAAAAAEMEKQAAAAAwRJACAAAAAEMEKQAAAAAwRJACAAAAAEMEKQAAAAAwRJACAAAAAEMEKQAAAAAwRJACAAAAAEMEKQAAAAAwRJACAAAAAEMEKQAAAAAwRJACAAAAAEMEKQAAAAAwRJACAAAAAEMEKQAAAAAwRJACAAAAAEMEKQAAAAAwRJACAAAAAEMEKQAAAAAwRJACAAAAAEMEKQAAAAAwRJACAAAAAEMEKQAAAAAwZByk5s6dq4KCgnLthYWFmjt3bqUUBQAAAAC+zGZZlmWyQo0aNZSVlaXIyEiP9kOHDikyMlIlJSWVWuDF4HK55HA4lJ+fL7vdXtXlAAAAAKgi3mYD4zNSlmXJZrOVa9+3b58cDofpcAAAAABQ7fh727Fdu3ay2Wyy2Wzq0aOH/P3/b9WSkhLt2bNHt9xyywUpEgAAAAB8iddBqn///pKkzZs3KyEhQaGhoe5lgYGBatKkiQYOHFjpBQIAAACAr/E6SE2YMEGS1KRJE915552qWbPmBSsKAAAAAHyZ10GqTGJioqTfZunLzc1VaWmpx/JGjRpVTmUAAAAA4KOMg9TOnTt13333ae3atR7tZZNQVMdZ+wAAAADAhHGQGjp0qPz9/bVo0SLVq1evwhn8AAAAAOBSZhykNm/erIyMDMXGxl6IegAAAADA5xk/RyouLk4HDx68ELUAAAAAQLVgHKReeOEFPf7441q1apUOHTokl8vl8TLxxhtv6Nprr5XdbpfdbpfT6dSnn37qXn7y5EklJSWpdu3aCg0N1cCBA5WTk+MxRmZmpvr27avg4GBFRkZq7NixKi4uNt0tAAAAAPCa8aV9PXv2lCT16NHDo/1cJpto2LChnn/+ebVs2VKWZWnOnDm6/fbbtWnTJl199dUaPXq0Fi9erPnz58vhcGjkyJEaMGCA1qxZI+m3BwH37dtX0dHRWrt2rbKysjRkyBAFBAToueeeM901AAAAAPCKzbIsy2SF1atXn3F5t27dzqugiIgIvfjiixo0aJDq1q2rtLQ0DRo0SJK0fft2tWrVSunp6erUqZM+/fRT3Xbbbdq/f7+ioqIkSbNmzdITTzyhAwcOKDAw0KttulwuORwO5efny263n1f9AAAAAKovb7OB8Rmp8w1Kp1NSUqL58+fr2LFjcjqdysjIUFFRkfsMmCTFxsaqUaNG7iCVnp6u1q1bu0OUJCUkJGjEiBHatm2b2rVrV+G2CgoKVFBQ4H5vekkiAAAAgMubcZD64osvzri8a9euRuNt3bpVTqdTJ0+eVGhoqD788EPFxcVp8+bNCgwMVHh4uEf/qKgoZWdnS5Kys7M9QlTZ8rJlp5OSkqJJkyYZ1QkAAAAAZYyDVPfu3cu1nfosKdMH8l511VXavHmz8vPztWDBAiUmJp718sHzNW7cOCUnJ7vfu1wuxcTEXNBtAgAAALh0GAepw4cPe7wvKirSpk2b9Mwzz+jZZ581LiAwMFAtWrSQJMXHx2v9+vV65ZVXdOedd6qwsFB5eXkeZ6VycnIUHR0tSYqOjtY333zjMV7ZrH5lfSoSFBSkoKAg41oBAAAAQDqH6c8dDofHq06dOurVq5d7WvTzVVpaqoKCAsXHxysgIEArV650L9uxY4cyMzPldDolSU6nU1u3blVubq67z/Lly2W32xUXF3fetQAAAABARYzPSJ1OVFSUduzYYbTOuHHj1KdPHzVq1EhHjhxRWlqaVq1apaVLl8rhcGj48OFKTk5WRESE7Ha7HnnkETmdTnXq1EmS1Lt3b8XFxenee+/V1KlTlZ2draefflpJSUmccQIAAABwwRgHqW+//dbjvWVZysrK0vPPP6+2bdsajZWbm6shQ4YoKytLDodD1157rZYuXapevXpJkqZPny4/Pz8NHDhQBQUFSkhI0Ouvv+5ev0aNGlq0aJFGjBghp9OpkJAQJSYmavLkyaa7BQAAAABeM36OlJ+fn2w2m36/WqdOnfTOO+8oNja2Ugu8GHiOFAAAAADpAj5Has+ePR7v/fz8VLduXdWsWdO8SgAAAACohoyDVOPGjS9EHQAAAABQbRjP2idJq1evVr9+/dSiRQu1aNFCf/jDH/Tll19Wdm0AAAAA4JOMg9S8efPUs2dPBQcHa9SoURo1apRq1aqlHj16KC0t7ULUCAAAAAA+xXiyiVatWunBBx/U6NGjPdpffvllvfXWW/rhhx8qtcCLgckmAAAAAEjeZwPjM1L/+c9/1K9fv3Ltf/jDH8pNRAEAAAAAlyLjIBUTE6OVK1eWa1+xYoViYmIqpSgAAAAA8GXGs/Y99thjGjVqlDZv3qzOnTtLktasWaPU1FS98sorlV4gAAAAAPga4yA1YsQIRUdHa9q0afrnP/8p6bf7pt5//33dfvvtlV4gAAAAAPga48kmLkVMNgEAAABAuoCTTaxfv17r1q0r175u3Tpt2LDBdDgAAAAAqHaMg1RSUpL27t1brv2XX35RUlJSpRQFAAAAAL7MOEh9//33uu6668q1t2vXTt9//32lFAUAAAAAvsw4SAUFBSknJ6dce1ZWlvz9jeeuAAAAAIBqxzhI9e7dW+PGjVN+fr67LS8vT//1X/+lXr16VWpxAAAAAOCLjE8hvfTSS+ratasaN26sdu3aSZI2b96sqKgovfvuu5VeIAAAAAD4GuMg1aBBA3377bd67733tGXLFtWqVUvDhg3T3XffrYCAgAtRIwAAAAD4lHO6qSkkJEQPPvhgZdcCAAAAANWC8T1SAAAAAHC5I0gBAAAAgCGCFAAAAAAYIkgBAAAAgCHjINWsWTMdOnSoXHteXp6aNWtWKUUBAAAAgC8zDlI//fSTSkpKyrUXFBTol19+qZSiAAAAAMCXeT39+cKFC91fL126VA6Hw/2+pKREK1euVJMmTSq1OAAAAADwRV4Hqf79+0uSbDabEhMTPZYFBASoSZMmmjZtWqUWBwAAAAC+yOsgVVpaKklq2rSp1q9frzp16lywogAAAADAl3kdpMrs2bPnQtQBAAAAANWGV0Hq1Vdf9XrAUaNGnXMxAAAAAFAd2CzLss7WqWnTpt4NZrPpP//5z3kXdbG5XC45HA7l5+fLbrdXdTkAAAAAqoi32cCrM1JczgcAAAAA/8f4OVIAAAAAcLkznmzivvvuO+Pyd95555yLAQAAAIDqwDhIHT582ON9UVGRvvvuO+Xl5enmm2+utMIAAAAAwFcZB6kPP/ywXFtpaalGjBih5s2bV0pRAAAAAODLKuUeKT8/PyUnJ2v69OmVMRwAAAAA+LRKm2xi9+7dKi4urqzhAAAAAMBnGV/al5yc7PHesixlZWVp8eLFSkxMrLTCAAAAAMBXGQepTZs2ebz38/NT3bp1NW3atLPO6AcAAAAAlwLjIPX5559fiDoAAAAAoNowvkfqxIkTOn78uPv9zz//rBkzZmjZsmWVWhgAAAAA+CrjIHX77bdr7ty5kqS8vDx16NBB06ZN0+2336433nij0gsEAAAAAF9jHKQ2btyoG2+8UZK0YMECRUdH6+eff9bcuXP16quvVnqBAAAAAOBrjIPU8ePHFRYWJklatmyZBgwYID8/P3Xq1Ek///xzpRcIAAAAAL7GOEi1aNFCH330kfbu3aulS5eqd+/ekqTc3FzZ7fZKLxAAAAAAfI1xkBo/frzGjBmjJk2aqEOHDnI6nZJ+OzvVrl27Si8QAAAAAHyNzbIsy3Sl7OxsZWVlqU2bNvLz+y2LffPNN7Lb7YqNja30Ii80l8slh8Oh/Px8zqoBAAAAlzFvs4HxGSlJio6OVlhYmJYvX64TJ05Ikq6//vpqGaIAAAAAwJRxkDp06JB69OihK6+8UrfeequysrIkScOHD9djjz1W6QUCAAAAgK8xDlKjR49WQECAMjMzFRwc7G6/8847tWTJEqOxUlJSdP311yssLEyRkZHq37+/duzY4dHn5MmTSkpKUu3atRUaGqqBAwcqJyfHo09mZqb69u2r4OBgRUZGauzYsSouLjbdNQAAAADwinGQWrZsmV544QU1bNjQo71ly5bG05+vXr1aSUlJ+vrrr7V8+XIVFRWpd+/eOnbsmLvP6NGj9cknn2j+/PlavXq19u/frwEDBriXl5SUqG/fviosLNTatWs1Z84cpaamavz48aa7BgAAAABeMZ5sIiwsTBs3blTLli0VFhamLVu2qFmzZtqwYYMSEhJ06NChcy7mwIEDioyM1OrVq9W1a1fl5+erbt26SktL06BBgyRJ27dvV6tWrZSenq5OnTrp008/1W233ab9+/crKipKkjRr1iw98cQTOnDggAIDA8ttp6CgQAUFBe73LpdLMTExTDYBAAAAXOYu2GQTN954o+bOnet+b7PZVFpaqqlTp+qmm246t2r/v/z8fElSRESEJCkjI0NFRUXq2bOnu09sbKwaNWqk9PR0SVJ6erpat27tDlGSlJCQIJfLpW3btlW4nZSUFDkcDvcrJibmvOoGAAAAcHnxN11h6tSp6tGjhzZs2KDCwkI9/vjj2rZtm3799VetWbPmnAspLS3Vo48+qhtuuEHXXHONpN+mWQ8MDFR4eLhH36ioKGVnZ7v7nBqiypaXLavIuHHjlJyc7H5fdkYKAAAAALxhHKSuueYa/fjjj3rttdcUFhamo0ePasCAAUpKSlK9evXOuZCkpCR99913+uqrr855DG8FBQUpKCjogm8HAAAAwKXJKEgVFRXplltu0axZs/TUU09VWhEjR47UokWL9MUXX3hMYhEdHa3CwkLl5eV5nJXKyclRdHS0u88333zjMV7ZrH5lfQAAAACgMhndIxUQEKBvv/220jZuWZZGjhypDz/8UJ999pmaNm3qsTw+Pl4BAQFauXKlu23Hjh3KzMyU0+mUJDmdTm3dulW5ubnuPsuXL5fdbldcXFyl1QoAAAAAZYwnm/jzn/+st99+u1I2npSUpHnz5iktLU1hYWHKzs5Wdna2Tpw4IUlyOBwaPny4kpOT9fnnnysjI0PDhg2T0+lUp06dJEm9e/dWXFyc7r33Xm3ZskVLly7V008/raSkJC7fAwAAAHBBGN8jVVxcrHfeeUcrVqxQfHy8QkJCPJa//PLLXo/1xhtvSJK6d+/u0T579mwNHTpUkjR9+nT5+flp4MCBKigoUEJCgl5//XV33xo1amjRokUaMWKEnE6nQkJClJiYqMmTJ5vuGgAAAAB4xfg5Umea4txms+mzzz4776IuNm/nigcAAABwafM2Gxifkfr888/PqzAAAAAAqO6M75ECAAAAgMsdQQoAAAAADBGkAAAAAMAQQQoAAAAADBGkAAAAAMAQQQoAAAAADBGkAAAAAMAQQQoAAAAADBGkAAAAAMAQQQoAAAAADBGkAAAAAMAQQQoAAAAADBGkAAAAAMAQQQoAAAAADBGkAAAAAMAQQQoAAAAADBGkAAAAAMAQQQoAAAAADBGkAAAAAMAQQQoAAAAADBGkAAAAAMAQQQoAAAAADBGkAAAAAMAQQQoAAAAADBGkAAAAAMAQQQoAAAAADBGkAAAAAMAQQQoAAAAADBGkAAAAAMAQQQoAAAAADBGkAAAAAMAQQQoAAAAADBGkAAAAAMAQQQoAAAAADBGkAAAAAMAQQQoAAAAADBGkAAAAAMAQQQoAAAAADBGkAAAAAMAQQQoAAAAADBGkAAAAAMAQQQoAAAAADBGkAAAAAMAQQQoAAAAADBGkAAAAAMAQQQoAAAAADBGkAAAAAMBQlQapL774Qv369VP9+vVls9n00UcfeSy3LEvjx49XvXr1VKtWLfXs2VM7d+706PPrr79q8ODBstvtCg8P1/Dhw3X06NGLuBcAAAAALjdVGqSOHTumNm3aaObMmRUunzp1ql599VXNmjVL69atU0hIiBISEnTy5El3n8GDB2vbtm1avny5Fi1apC+++EIPPvjgxdoFAAAAAJchm2VZVlUXIUk2m00ffvih+vfvL+m3s1H169fXY489pjFjxkiS8vPzFRUVpdTUVN1111364YcfFBcXp/Xr16t9+/aSpCVLlujWW2/Vvn37VL9+fa+27XK55HA4lJ+fL7vdfkH2DwAAAIDv8zYb+Ow9Unv27FF2drZ69uzpbnM4HOrYsaPS09MlSenp6QoPD3eHKEnq2bOn/Pz8tG7dutOOXVBQIJfL5fECAAAAAG/5bJDKzs6WJEVFRXm0R0VFuZdlZ2crMjLSY7m/v78iIiLcfSqSkpIih8PhfsXExFRy9QAAAAAuZT4bpC6kcePGKT8/3/3au3dvVZcEAAAAoBrx2SAVHR0tScrJyfFoz8nJcS+Ljo5Wbm6ux/Li4mL9+uuv7j4VCQoKkt1u93gBAAAAgLd8Nkg1bdpU0dHRWrlypbvN5XJp3bp1cjqdkiSn06m8vDxlZGS4+3z22WcqLS1Vx44dL3rNAAAAAC4P/lW58aNHj2rXrl3u93v27NHmzZsVERGhRo0a6dFHH9Xf/vY3tWzZUk2bNtUzzzyj+vXru2f2a9WqlW655RY98MADmjVrloqKijRy5EjdddddXs/YBwAAAACmqjRIbdiwQTfddJP7fXJysiQpMTFRqampevzxx3Xs2DE9+OCDysvLU5cuXbRkyRLVrFnTvc57772nkSNHqkePHvLz89PAgQP16quvXvR9AQAAAHD58JnnSFUlniMFAAAAQLoEniMFAAAAAL6KIAUAAAAAhghSAAAAAGCIIAUAAAAAhghSAAAAAGCIIAUAAAAAhghSAAAAAGCIIAUAAAAAhghSAAAAAGCIIAUAAAAAhghSAAAAAGCIIAUAAAAAhghSAAAAAGCIIAUAAAAAhghSAAAAAGCIIAUAAAAAhghSAAAAAGCIIAUAAAAAhghSAAAAAGCIIAUAAAAAhghSAIBLQpMnF1d1CQCAywhBCgAAAAAMEaQAAAAAwBBBCgAAAAAMEaQAAAAAwBBBCgAAAAAMEaQAAAAAwBBBCgAAAAAMEaQAAAAAwBBBCgAAAAAMEaQAAAAAwBBBCgAAAAAMEaQAAAAAwBBBCgAAAAAMEaQAAAAAwBBBysc1eXJxVZcAAAAA4HcIUgAAAABgiCAFVCOcoQQAAPANBCkAAAAAMESQAgAAAABDBCkfxOVbAAAAgG8jSAEAAACAIYJUNcPZKt/B9wIAAFQn/O1SuQhSPuxS+7D7wv74Qg0AAMD3XKy/Efhb5NJBkAKASxC/qOHL+HwCuBQQpC5x/LLC5YrPPi5VfLYBwDcQpAAAAABUmer6P4gIUjBSXT/oAAAAQGUiSAE4L4RrAKha1fHncHWsGfi9SyZIzZw5U02aNFHNmjXVsWNHffPNN1Vd0kXFDyQAAFBZqvPfFdW5dlQvl0SQev/995WcnKwJEyZo48aNatOmjRISEpSbm1vVpQGVoip+KfCLCDg3vvxvx5dru5g4Dufv98eQY3p6px4bb4/T5XI8q/t++ld1AZXh5Zdf1gMPPKBhw4ZJkmbNmqXFixfrnXfe0ZNPPlmuf0FBgQoKCtzv8/PzJUkul+viFHwWpQXH5XK5VFpwXJLUaPR8fTcpwWPZNROWSlK59orGajR6vrvvNROWevy3zOnaT112pu1UtN7p9subvt4601gV7aN0+u+zN3V5cyzOZezTfT/KnPqZuFif04o+axV9Ts5UU2V+r73x+7pO/eyf73iVVZfp5+xct1O2/xWNc6Z/7+dSk2m9Z/u8e9v2+/04dZ9//zPStBbTf7On+v2/ifP5HFW0H+fzc8Cbdc/1M2pyzKX/+1lc0TE3+Yyey+f51ONQlT+nznTMKlp2us/r+fw+OtP38vdjnulnzJmOaWV/js/mbLVU9DPibH8jVORsPxfLxj+1nrK/7c72t5S3x8f083um3w3ejOnN59LbesvGKvtd7St/h0v/V4tlWWfsZ7PO1sPHFRYWKjg4WAsWLFD//v3d7YmJicrLy9PHH39cbp2JEydq0qRJF7FKAAAAANXJ3r171bBhw9Mur/ZnpA4ePKiSkhJFRUV5tEdFRWn79u0VrjNu3DglJye735eWlurXX39V7dq1ZbPZLmi9AAAAAHyXZVk6cuSI6tevf8Z+1T5InYugoCAFBQV5tIWHh1dNMQAAAAB8isPhOGufaj/ZRJ06dVSjRg3l5OR4tOfk5Cg6OrqKqgIAAABwKav2QSowMFDx8fFauXKlu620tFQrV66U0+mswsoAAAAAXKouiUv7kpOTlZiYqPbt26tDhw6aMWOGjh075p7FDwAAAAAq0yURpO68804dOHBA48ePV3Z2ttq2baslS5aUm4ACAAAAACpDtZ/+HABw+frpp5/UtGlTbdq0SW3btq2wz6pVq3TTTTfp8OHDTCwEAKg01f4eKQAAzqRz587Kyspyz8CUmpp63oHqXMdYtWqVbDab8vLyzmv7AICqd0lc2gcAwOkEBgYyiysAoNJxRgoAUCWOHTumIUOGKDQ0VPXq1dO0adPUvXt3Pfroo+4+NptNH330kcd64eHhSk1N9Wjbvn27OnfurJo1a+qaa67R6tWr3ctOPQu0atUqDRs2TPn5+bLZbLLZbJo4cWKF9W3ZskU33XSTwsLCZLfbFR8frw0bNpxxjHfffVft27dXWFiYoqOjdc899yg3N1fSb5ch3nTTTZKkK664QjabTUOHDpX022yzKSkpatq0qWrVqqU2bdpowYIF53xsAQAXHkEKAFAlxo4dq9WrV+vjjz/WsmXLtGrVKm3cuPGcx3rssce0adMmOZ1O9evXT4cOHSrXr3PnzpoxY4bsdruysrKUlZWlMWPGVDjm4MGD1bBhQ61fv14ZGRl68sknFRAQcMYxioqKNGXKFG3ZskUfffSRfvrpJ3dYiomJ0QcffCBJ2rFjh7KysvTKK69IklJSUjR37lzNmjVL27Zt0+jRo/XnP//ZIxACAHwLl/YBAC66o0eP6u2339a8efPUo0cPSdKcOXPUsGHDcxpv5MiRGjhwoCTpjTfe0JIlS/T222/r8ccf9+gXGBgoh8Mhm8121sv9MjMzNXbsWMXGxkqSWrZs6V52ujHuu+8+99fNmjXTq6++quuvv15Hjx5VaGioIiIiJEmRkZHue6wKCgr03HPPacWKFe7nHzZr1kxfffWV3nzzTXXr1u0cjggA4ELjjBQA4KLbvXu3CgsL1bFjR3dbRESErrrqqnMa79QHsPv7+6t9+/b64YcfzqvG5ORk3X///erZs6eef/557d69+6zrZGRkqF+/fmrUqJHCwsLcISgzM/O06+zatUvHjx9Xr169FBoa6n7NnTvXq20CAKoGQQoA4LNsNpt+/5SOoqKii7LtiRMnatu2berbt68+++wzxcXF6cMPPzxt/2PHjikhIUF2u13vvfee1q9f7+5fWFh42vWOHj0qSVq8eLE2b97sfn3//ffcJwUAPowgBQC46Jo3b66AgACtW7fO3Xb48GH9+OOPHv3q1q2rrKws9/udO3fq+PHj5cb7+uuv3V8XFxcrIyNDrVq1qnDbgYGBKikp8arOK6+8UqNHj9ayZcs0YMAAzZ49+7RjbN++XYcOHdLzzz+vG2+8UbGxse6JJk7dtiSPdePi4hQUFKTMzEy1aNHC4xUTE+NVnQCAi497pAAAF11oaKiGDx+usWPHqnbt2oqMjNRTTz0lPz/P/793880367XXXpPT6VRJSYmeeOIJBQQElBtv5syZatmypVq1aqXp06fr8OHDHvcrnapJkyY6evSoVq5cqTZt2ig4OFjBwcEefU6cOKGxY8dq0KBBatq0qfbt26f169e778OqaIxGjRopMDBQf//73/Xwww/ru+++05QpUzzGbdy4sWw2mxYtWqRbb71VtWrVUlhYmMaMGaPRo0ertLRUXbp0UX5+vtasWSO73a7ExMTzOdQAgAvFAgCgChw5csT685//bAUHB1tRUVHW1KlTrW7dull//etf3X1++eUXq3fv3lZISIjVsmVL69///rflcDis2bNnW5ZlWXv27LEkWWlpaVaHDh2swMBAKy4uzvrss8/cY3z++eeWJOvw4cPutocfftiqXbu2JcmaMGFCudoKCgqsu+66y4qJibECAwOt+vXrWyNHjrROnDhxxjHS0tKsJk2aWEFBQZbT6bQWLlxoSbI2bdrkXm/y5MlWdHS0ZbPZrMTERMuyLKu0tNSaMWOGddVVV1kBAQFW3bp1rYSEBGv16tXne5gBABeIzbJ+d/E5AABVpHv37mrbtq1mzJhR1aUAAHBG3CMFAAAAAIYIUgAAAABgiEv7AAAAAMAQZ6QAAAAAwBBBCgAAAAAMEaQAAAAAwBBBCgAAAAAMEaQAAAAAwBBBCgAAAAAMEaQAAAAAwBBBCgAAAAAM/T80FLtt2TUIsgAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ax = cirq.plot_state_histogram(results.histogram(key='out'))\n", "ax.get_xaxis().set_ticks([])\n", "plt.gcf().set_size_inches(10, 4)\n", "plt.show(ax)" ] }, { "cell_type": "markdown", "metadata": { "id": "XOTvkKq_Z1UY" }, "source": [ "The leftmost and rightmost bars correspond to $|00..0\\rangle$ and $|11..1\\rangle$, respectively, which matches expectation for a GHZ state. Natural $|1\\rangle → |0\\rangle$ decay causes $|11..1\\rangle$ to be much less common than $|00..0\\rangle$, and other states also appear due to the various error mechanisms in the hardware that are mimicked by the simulated noise model. Learn more about these errors [here](https://arxiv.org/abs/2111.02396){:.external}.\n" ] } ], "metadata": { "colab": { "collapsed_sections": [ "Lfira0gPf0Gd" ], "name": "qvm_basic_example.ipynb", "toc_visible": true }, "kernelspec": { "display_name": "Python 3", "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.14" } }, "nbformat": 4, "nbformat_minor": 0 }