{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "6c478d2e", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T19:02:11.304477Z", "iopub.status.busy": "2024-03-26T19:02:11.304154Z", "iopub.status.idle": "2024-03-26T19:02:11.306898Z", "shell.execute_reply": "2024-03-26T19:02:11.306488Z" }, "nbsphinx": "hidden" }, "outputs": [], "source": [ "# Copyright 2024 Keysight Technologies Inc." ] }, { "cell_type": "raw", "id": "db34aece", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "Example: Running Jobs on Qiskit Backends\n", "========================================\n", "\n", "|True-Q| supports direct execution of circuit collections on hardware and simulators\n", "that use a Qiskit backend. This includes the `IBMQ superconducting qubit chips\n", "`_ . Transpiling to the given backend is done\n", "automatically for any backend whose gates are a subset of\n", "``['id', 'rz', 'sx', 'x', 'cx']`` [#f1]_.\n", "\n", "Qiskit backends accept job requests that contain one or more circuits to be run at a\n", "specified number of shots. Like many modern quantum hardware platforms, these backends\n", "have restrictions on how many circuits a user can submit per job, and jobs are\n", "prioritized in a queuing system that contains many users' jobs. Thus, large circuits\n", "collections (e.g. as generated by |True-Q| diagnostic protocols) must be batched into\n", "multiple jobs.\n", "\n", "The |True-Q| :py:class:`~trueq.interface.Executor` class automates the batching and\n", "job submission process according to the above restrictions. An asynchronous thread\n", "monitors the status of each submitted job, and submits new jobs as spots open in the\n", "queue." ] }, { "cell_type": "code", "execution_count": 2, "id": "6449221e", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T19:02:11.308780Z", "iopub.status.busy": "2024-03-26T19:02:11.308512Z", "iopub.status.idle": "2024-03-26T19:02:13.774755Z", "shell.execute_reply": "2024-03-26T19:02:13.774245Z" } }, "outputs": [], "source": [ "import trueq as tq\n", "import qiskit as qk" ] }, { "cell_type": "raw", "id": "86db2c18", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "Running jobs on a Qiskit backend requires credentials for the provider of the backend.\n", "See the provider's documentation for instructions for how to set this up. For example,\n", "the following snippet demonstrates how one instantiates a remote backend object from\n", "the IBM Quantum Experience. This example file does not have any credentials, so we\n", "make do with the local Qiskit simulator which uses the same backend abstraction." ] }, { "cell_type": "code", "execution_count": 3, "id": "9ae40d9a", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T19:02:13.777471Z", "iopub.status.busy": "2024-03-26T19:02:13.776992Z", "iopub.status.idle": "2024-03-26T19:02:14.192807Z", "shell.execute_reply": "2024-03-26T19:02:14.192317Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Warning: The class ``qiskit.providers.fake_provider.fake_backend.FakeBackendV2`` is deprecated as of qiskit 0.46.0. It will be removed in qiskit 1.0. All fake backend instances based on real device snapshots (`FakeVigo`,`FakeSherbrooke`,...) have been migrated to the `qiskit_ibm_runtime` package. To migrate your code, run `pip install qiskit-ibm-runtime` and use `from qiskit_ibm_runtime.fake_provider import FakeExample` instead of `from qiskit.providers.fake_provider import FakeExample`. \n", " (/tmp/ipykernel_13085/41091723.py:11)\n" ] } ], "source": [ "have_credentials = False\n", "\n", "if have_credentials:\n", " qk.IBMQ.load_account()\n", " provider = qk.IBMQ.get_provider()\n", " backend = provider.get_backend(\"ibmq_manila\")\n", "else:\n", " from qiskit_aer import AerSimulator\n", " from qiskit.providers.fake_provider import FakeMelbourneV2\n", "\n", " backend = AerSimulator.from_backend(FakeMelbourneV2())" ] }, { "cell_type": "raw", "id": "99402e80", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "Submitting a Circuit\n", "--------------------\n", "\n", "The :py:class:`~trueq.interface.Executor` accepts both single\n", ":py:class:`~trueq.Circuit`\\s and :py:class:`~trueq.CircuitCollection`\\s. For example:" ] }, { "cell_type": "code", "execution_count": 4, "id": "ceae856a", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T19:02:14.195333Z", "iopub.status.busy": "2024-03-26T19:02:14.194908Z", "iopub.status.idle": "2024-03-26T19:02:14.554690Z", "shell.execute_reply": "2024-03-26T19:02:14.554216Z" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "
True-Q formatting will not be loaded without trusting this\n", "notebook or rerunning the affected cells. Notebooks can be marked as trusted by clicking\n", "\"File -> Trust Notebook\".
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "ename": "ValueError", "evalue": "A circuit specifies gates between the qubits {frozenset({0, 1})}, but these qubits are not connected on 'aer_simulator(fake_melbourne).", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[4], line 5\u001b[0m\n\u001b[1;32m 2\u001b[0m circuit \u001b[38;5;241m=\u001b[39m tq\u001b[38;5;241m.\u001b[39mCircuit([{\u001b[38;5;241m0\u001b[39m: tq\u001b[38;5;241m.\u001b[39mGate\u001b[38;5;241m.\u001b[39mh}, {(\u001b[38;5;241m0\u001b[39m, \u001b[38;5;241m1\u001b[39m): tq\u001b[38;5;241m.\u001b[39mGate\u001b[38;5;241m.\u001b[39mcx}])\n\u001b[1;32m 3\u001b[0m circuit\u001b[38;5;241m.\u001b[39mmeasure_all()\n\u001b[0;32m----> 5\u001b[0m ex \u001b[38;5;241m=\u001b[39m \u001b[43mtq\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minterface\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mExecutor\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcircuit\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbackend\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mn_shots\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m128\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 7\u001b[0m \u001b[38;5;66;03m# the executor is asynchronous, call a blocking function to wait for it to finish\u001b[39;00m\n\u001b[1;32m 8\u001b[0m ex\u001b[38;5;241m.\u001b[39mblock()\n", "File \u001b[0;32m~/workspace/release trueq/trueq/interface/qiskit_submission.py:629\u001b[0m, in \u001b[0;36mExecutor.__init__\u001b[0;34m(self, circuits, backend, filename, n_shots, max_submissions, overwrite, store_compiled)\u001b[0m\n\u001b[1;32m 627\u001b[0m extra \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mset\u001b[39m(count_streaks(circuit))\u001b[38;5;241m.\u001b[39mdifference(config\u001b[38;5;241m.\u001b[39mconnectivity)\n\u001b[1;32m 628\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(extra) \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[0;32m--> 629\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[1;32m 630\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mA circuit specifies gates between the qubits \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mextra\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m, but \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 631\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mthese qubits are not connected on \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mbackend\u001b[38;5;241m.\u001b[39mname\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 632\u001b[0m )\n\u001b[1;32m 634\u001b[0m \u001b[38;5;66;03m# compile circuits, initialize batch executors\u001b[39;00m\n\u001b[1;32m 635\u001b[0m logger\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mExecutor - Compiling circuits and creating batches\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", "\u001b[0;31mValueError\u001b[0m: A circuit specifies gates between the qubits {frozenset({0, 1})}, but these qubits are not connected on 'aer_simulator(fake_melbourne)." ] } ], "source": [ "# Define a simple 2-qubit circuit to work with.\n", "circuit = tq.Circuit([{0: tq.Gate.h}, {(0, 1): tq.Gate.cx}])\n", "circuit.measure_all()\n", "\n", "ex = tq.interface.Executor(circuit, backend, n_shots=128)\n", "\n", "# the executor is asynchronous, call a blocking function to wait for it to finish\n", "ex.block()" ] }, { "cell_type": "raw", "id": "a791c9c4", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "The :py:class:`~trueq.interface.Executor` automatically populates the\n", ":py:class:`~trueq.Results` attribute of the submitted circuit:" ] }, { "cell_type": "code", "execution_count": 5, "id": "735259c0", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T19:02:14.557039Z", "iopub.status.busy": "2024-03-26T19:02:14.556617Z", "iopub.status.idle": "2024-03-26T19:02:14.732497Z", "shell.execute_reply": "2024-03-26T19:02:14.732038Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Results({}, dim=None)\n" ] }, { "ename": "TypeError", "evalue": "unsupported operand type(s) for ** or pow(): 'NoneType' and 'int'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[5], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28mprint\u001b[39m(circuit\u001b[38;5;241m.\u001b[39mresults)\n\u001b[0;32m----> 2\u001b[0m \u001b[43mcircuit\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresults\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mplot\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[0;32m~/workspace/release trueq/trueq/results.py:645\u001b[0m, in \u001b[0;36mResults.plot\u001b[0;34m(self, sparse_cutoff, axis, error_bars)\u001b[0m\n\u001b[1;32m 619\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 620\u001b[0m \u001b[38;5;124;03mPlots a bar graph of these results. See also\u001b[39;00m\n\u001b[1;32m 621\u001b[0m \u001b[38;5;124;03m:py:func:`~trueq.visualization.plot_results` for plotting several\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 641\u001b[0m \u001b[38;5;124;03m:type error_bars: :py:class:`bool`\u001b[39;00m\n\u001b[1;32m 642\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 643\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mtrueq\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mvisualization\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mgeneral\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m plot_results\n\u001b[0;32m--> 645\u001b[0m \u001b[43mplot_results\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 646\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msparse_cutoff\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msparse_cutoff\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43maxis\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43maxis\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43merror_bars\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43merror_bars\u001b[49m\n\u001b[1;32m 647\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[0;32m~/workspace/release trueq/trueq/visualization/general.py:154\u001b[0m, in \u001b[0;36mplot_results\u001b[0;34m(labels, normalize, sparse_cutoff, axis, style, error_bars, *results)\u001b[0m\n\u001b[1;32m 151\u001b[0m all_items \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mlambda\u001b[39;00m: chain\u001b[38;5;241m.\u001b[39mfrom_iterable(r\u001b[38;5;241m.\u001b[39mitems() \u001b[38;5;28;01mfor\u001b[39;00m r \u001b[38;5;129;01min\u001b[39;00m group\u001b[38;5;241m.\u001b[39mvalues())\n\u001b[1;32m 153\u001b[0m \u001b[38;5;66;03m# create axis labels\u001b[39;00m\n\u001b[0;32m--> 154\u001b[0m size \u001b[38;5;241m=\u001b[39m \u001b[43mdim\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mn_sys\u001b[49m\n\u001b[1;32m 155\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mtype\u001b[39m(sparse_cutoff) \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mbool\u001b[39m:\n\u001b[1;32m 156\u001b[0m cutoff \u001b[38;5;241m=\u001b[39m sparse_cutoff\n", "\u001b[0;31mTypeError\u001b[0m: unsupported operand type(s) for ** or pow(): 'NoneType' and 'int'" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print(circuit.results)\n", "circuit.results.plot()" ] }, { "cell_type": "raw", "id": "bc1a5b64", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "Submitting a Circuit Collection\n", "-------------------------------\n", "\n", "To submit a :py:class:`~trueq.CircuitCollection` we can make use of the\n", ":py:meth:`~trueq.CircuitCollection.batch` method (see also :doc:`batching`), as the\n", "following example demonstrates:" ] }, { "cell_type": "code", "execution_count": 6, "id": "30876f28", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T19:02:14.734807Z", "iopub.status.busy": "2024-03-26T19:02:14.734392Z", "iopub.status.idle": "2024-03-26T19:02:14.941574Z", "shell.execute_reply": "2024-03-26T19:02:14.941026Z" } }, "outputs": [], "source": [ "# Define a 3-qubit cycle to work with.\n", "cycle = {0: tq.Gate.x, 1: tq.Gate.y, 2: tq.Gate.h}\n", "\n", "# Generate a circuit collection to measure noise.\n", "circuits = tq.make_knr(cycle, [4, 32, 64], 24)" ] }, { "cell_type": "raw", "id": "b4345456", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "The executor (defined below) will automatically attempt to batch the circuit\n", "collection into the maximum number of circuits per job that the backend supports.\n", "Here, however, we manually batch beforehand. Supposing the backend accepts at most\n", "75 circuits and has a memory cutoff for the number of gates allowed per job, we\n", "choose to riffle circuits in the batch by circuit depth. In our protocol above, we\n", "selected 3 sequence lengths, 4, 32, and 64, with 24 random circuits per sequence\n", "length per configuration. Thus we use fit :math:`24\\times 3+2=72` circuits per batch,\n", "where the extra :math:`2` are readout calibration (:tqdoc:`RCAL`\\) circuits." ] }, { "cell_type": "code", "execution_count": 7, "id": "6755d3bb", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T19:02:14.944344Z", "iopub.status.busy": "2024-03-26T19:02:14.943877Z", "iopub.status.idle": "2024-03-26T19:02:14.947008Z", "shell.execute_reply": "2024-03-26T19:02:14.946584Z" } }, "outputs": [], "source": [ "ro_circuits = tq.make_rcal(circuits.labels)\n", "batches = circuits.batch(74, extra_circuits=ro_circuits, sequencer=tq.sequencer.RIFFLER)" ] }, { "cell_type": "raw", "id": "0184eb69", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "Run the batches on our backend. If a filename is provided, it will periodically save\n", "to the given file so that we can resume the experiment if, for example, our Python\n", "kernel crashes." ] }, { "cell_type": "code", "execution_count": 8, "id": "d7bd0211", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T19:02:14.948931Z", "iopub.status.busy": "2024-03-26T19:02:14.948652Z", "iopub.status.idle": "2024-03-26T19:02:40.085336Z", "shell.execute_reply": "2024-03-26T19:02:40.084884Z" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "
True-Q formatting will not be loaded without trusting this\n", "notebook or rerunning the affected cells. Notebooks can be marked as trusted by clicking\n", "\"File -> Trust Notebook\".
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e6b771f56a034abeb02c928384205d17", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HTML(value='')" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "2aae67dbd9494011be4ef5f6a3231565", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HTML(value='')" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "c4e341b5c1a54b7f8ae24e166fbb3128", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HTML(value='')" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "9a85495b6d4c4f3c9baf4392201d8b53", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HTML(value='')" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "7821754e7116408e8779d4707e35e1bc", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(Button(button_style='danger', description='Cancel', disabled=True, layout=Layout(width='9em'), …" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA94AAAEeCAYAAAB8Gs22AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABAX0lEQVR4nO3deVyU5f7/8fewgwiIgAuCIu57WpmVS0mpmZl60tSOS1lZmlkey04LWr/j0r5Z2SZ5TmZqWVpqmWuLLa6pqKlpGuGCCKi4wvX7gy+jEzOAyjDc8Ho+HjxgPvfFNZ+Zi7mZz9zXfd02Y4wRAAAAAABwCy9PJwAAAAAAQHlG4Q0AAAAAgBtReAMAAAAA4EYU3gAAAAAAuBGFNwAAAAAAbkThDQAAAACAG1F4AwAAAADgRhTeAAAAAAC4EYU3AAAAAABuROENAMD/sdlsGj9+vKfT0J49e2Sz2ZSUlOTpVAAAQAmg8AYAlIqkpCTZbDb7l4+Pj6KjozVkyBClpKR4Oj2nfvjhB40fP14ZGRmX3Nf48eMdHr+rr06dOl3yfblbcnKyxo8frz179ng6FQAALMHH0wkAACqWp59+WnFxcTp58qR+/PFHJSUl6bvvvtPmzZsVEBDg6fQc/PDDD5owYYKGDBmisLCwS+qrd+/eqlevnv32sWPHdN9996lXr17q3bu3PV6tWjXVrl1bJ06ckK+v7yXdp7skJydrwoQJ6tSpk+rUqePpdAAAKPMovAEApapbt266/PLLJUnDhg1TRESEpkyZovnz56tv374ezs59WrRooRYtWthvp6Wl6b777lOLFi10xx13FGhf1j6EAAAAF4+p5gAAj2rfvr0kadeuXQ7xbdu26R//+IfCw8MVEBCgyy+/XPPnz3doc+bMGU2YMEH169dXQECAqlatqmuvvVZLliyxt+nUqZPT6dtDhgwp9Gjt+PHjNXbsWElSXFycfSp4/vTqJUuW6Nprr1VYWJiCg4PVsGFD/fvf/76IZ6AgZ+d4DxkyRMHBwdq7d69uvvlmBQcHKzo6WlOnTpUkbdq0Sddff70qVaqk2rVra+bMmQX6zcjI0OjRoxUTEyN/f3/Vq1dPU6ZMUW5urkO7WbNmqU2bNqpcubJCQkLUvHlzvfLKK5LyThm47bbbJEnXXXed/XlZsWKFJOnzzz9X9+7dVbNmTfn7+ys+Pl7PPPOMcnJyHO6jU6dOatasmX799Vd17NhRQUFBqlevnubOnStJWrlypdq2bavAwEA1bNhQ33zzjcPv50/d37Ztm/r27auQkBBVrVpVDz74oE6ePOnQ1p1jBQBAcXDEGwDgUfmFbJUqVeyxLVu26JprrlF0dLTGjRunSpUqafbs2br11lv1ySefqFevXpLyiq9JkyZp2LBhuvLKK5WVlaU1a9Zo3bp1uuGGGy4pr969e+u3337TRx99pJdeekkRERGSpMjISG3ZskU333yzWrRooaefflr+/v7auXOnvv/++0u6z6Lk5OSoW7du6tChg5599ll9+OGHGjlypCpVqqTHH39cAwcOVO/evfXWW29p0KBBateuneLi4iRJ2dnZ6tixo1JSUnTvvfcqNjZWP/zwgx577DGlpqbq5ZdflpRXpPbv31+dO3fWlClTJElbt27V999/rwcffFAdOnTQqFGj9Oqrr+rf//63GjduLEn270lJSQoODtbDDz+s4OBgLVu2TE899ZSysrL03HPPOTyeI0eO6Oabb9btt9+u2267TW+++aZuv/12ffjhhxo9erSGDx+uAQMG6LnnntM//vEP7du3T5UrV3boo2/fvqpTp44mTZqkH3/8Ua+++qqOHDmiGTNmSJLHxgoAAAcGAIBSMH36dCPJfPPNN+bQoUNm3759Zu7cuSYyMtL4+/ubffv22dt27tzZNG/e3Jw8edIey83NNVdffbWpX7++PdayZUvTvXv3Qu+3Y8eOpmPHjgXigwcPNrVr13aISTKJiYn2288995yRZHbv3u3Q7qWXXjKSzKFDh4p+4C4cOnSowP3l2717t5Fkpk+f7pCvJDNx4kR77MiRIyYwMNDYbDYza9Yse3zbtm0F+n7mmWdMpUqVzG+//eZwX+PGjTPe3t5m7969xhhjHnzwQRMSEmLOnj3rMvc5c+YYSWb58uUFtmVnZxeI3XvvvSYoKMhhPDt27GgkmZkzZxbI28vLy/z444/2+FdffVXg+UhMTDSSzC233OJwX/fff7+RZDZu3GiMKZmxAgDgUjHVHABQqhISEhQZGamYmBj94x//UKVKlTR//nzVqlVLkpSenq5ly5apb9++Onr0qNLS0pSWlqbDhw+rS5cu2rFjh30V9LCwMG3ZskU7duwo1ceQv9Da559/XmCatrsNGzbMIY+GDRuqUqVKDufHN2zYUGFhYfr999/tsTlz5qh9+/aqUqWK/TlNS0tTQkKCcnJytGrVKnufx48fd5iufyECAwPtP+ePX/v27ZWdna1t27Y5tA0ODtbtt99eIO/GjRurbdu29nj+z+c/nnwjRoxwuP3AAw9IkhYuXGh/PJJnxgoAgHwU3gCAUjV16lQtWbJEc+fO1U033aS0tDT5+/vbt+/cuVPGGD355JOKjIx0+EpMTJQkHTx4UFLeCukZGRlq0KCBmjdvrrFjx+rXX391+2Po16+frrnmGg0bNkzVqlXT7bffrtmzZ7u9sAsICFBkZKRDLDQ0VLVq1ZLNZisQP3LkiP32jh07tHjx4gLPaUJCgqRzz+n999+vBg0aqFu3bqpVq5buvPNOLV68uNg5btmyRb169VJoaKhCQkIUGRlpXzwuMzPToa2rvGNiYgrEJDk8nnz169d3uB0fHy8vLy/7KQyeGisAAM7HOd4AgFJ15ZVX2lc1v/XWW3XttddqwIAB2r59u4KDg+0F0b/+9S916dLFaR/5l+Xq0KGDdu3apc8//1xff/213n33Xb300kt666237EeGbTabjDEF+vj7Yl8XIjAwUKtWrdLy5cv15ZdfavHixfr44491/fXX6+uvv5a3t/dF910YV/26ip//uHNzc3XDDTfokUcecdq2QYMGkqSoqCht2LBBX331lRYtWqRFixZp+vTpGjRokD744INC88vIyFDHjh0VEhKip59+WvHx8QoICNC6dev06KOPFih2L+XxuPL3Qt5TYwUAwPkovAEAHuPt7a1Jkybpuuuu0+uvv65x48apbt26kiRfX1/70djChIeHa+jQoRo6dKiOHTumDh06aPz48fbCu0qVKk6nKP/xxx9F9v33Iu58Xl5e6ty5szp37qwXX3xREydO1OOPP67ly5cXK+/SFh8fr2PHjhUrNz8/P/Xo0UM9evRQbm6u7r//fk2bNk1PPvmk6tWr5/J5WbFihQ4fPqxPP/1UHTp0sMd3795dYo/j73bs2GFfQE7KmzGRm5vrsGK91cYKAFD+MNUcAOBRnTp10pVXXqmXX35ZJ0+eVFRUlDp16qRp06YpNTW1QPtDhw7Zfz58+LDDtuDgYNWrV0+nTp2yx+Lj47Vt2zaH39u4cWOxVrWuVKmSpLwjuedLT08v0LZVq1aS5HDfZUnfvn21evVqffXVVwW2ZWRk6OzZs5IKPqdeXl7264/nPzZXz0v+0ePzj0yfPn1ab7zxRsk8CCfyL6eW77XXXpOUd714yZpjBQAofzjiDQDwuLFjx+q2225TUlKShg8frqlTp+raa69V8+bNdffdd6tu3bo6cOCAVq9erT///FMbN26UJDVp0kSdOnVSmzZtFB4erjVr1mju3LkaOXKkve8777xTL774orp06aK77rpLBw8e1FtvvaWmTZsqKyur0LzatGkjSXr88cd1++23y9fXVz169NDTTz+tVatWqXv37qpdu7YOHjyoN954Q7Vq1dK1117rvifqEowdO1bz58/XzTffrCFDhqhNmzY6fvy4Nm3apLlz52rPnj2KiIjQsGHDlJ6eruuvv161atXSH3/8oddee02tWrWyXzKsVatW8vb21pQpU5SZmSl/f39df/31uvrqq1WlShUNHjxYo0aNks1m03//+99iTRG/WLt379Ytt9yirl27avXq1frf//6nAQMGqGXLlpJkybECAJQ/FN4AAI/r3bu34uPj9fzzz+vuu+9WkyZNtGbNGk2YMEFJSUk6fPiwoqKidNlll+mpp56y/96oUaM0f/58ff311zp16pRq166t//f//p/Gjh1rb9O4cWPNmDFDTz31lB5++GE1adJE//3vfzVz5kytWLGi0LyuuOIKPfPMM3rrrbe0ePFi5ebm2gu9PXv26P3331daWpoiIiLUsWNHTZgwwb4QWFkTFBSklStXauLEiZozZ45mzJihkJAQNWjQwCHvO+64Q2+//bbeeOMNZWRkqHr16urXr5/Gjx8vL6+8iXLVq1fXW2+9pUmTJumuu+5STk6Oli9frk6dOumLL77QmDFj9MQTT6hKlSq644471LlzZ5fn61+qjz/+WE899ZTGjRsnHx8fjRw50uF64VYcKwBA+WMz7vwYGgAAwA3Gjx+vCRMm6NChQ4qIiPB0OgAAFIpzvAEAAAAAcCMKbwAAAAAA3IjCGwAAAAAAN+IcbwAAAAAA3Igj3gAAAAAAuJFlLyeWm5urv/76S5UrV5bNZvN0OgAAAAAANzHG6OjRo6pZs6b98pZWYtnC+6+//lJMTIyn0wAAAAAAlJJ9+/apVq1ank7jglm28K5cubKkvCc+JCTEw9kAAAAAANwlKytLMTEx9jrQaixbeOdPLw8JCaHwBgAAAIAKwKqnGVtvcjwAAAAAABZC4Q0AAAAAgBtReAMAAAAA4EaWPccbAAAAADwtJydHZ86c8XQalufr6ytvb29Pp+E2FN4oN1IzT2h32nHFRVRSjdBAT6cDAACAcswYo/379ysjI8PTqZQbYWFhql69umUXUCsMhTfKhY9/2avHPt2kXCN52aRJvZur3xWxnk4LAAAA5VR+0R0VFaWgoKByWSyWFmOMsrOzdfDgQUlSjRo1PJxRyaPwhuWlZp6wF92SlGukf3+6WR0aRHLkGwAAACUuJyfHXnRXrVrV0+mUC4GBee/bDx48qKioqHI37ZzF1WB5u9OO24vufDnGaE9atmcSAgAAQLmWf053UFCQhzMpX/Kfz/J4zjyFNywvLqKSvP42s8fbZlOdCHaEAAAAcB+ml5es8vx8UnjD8mqEBmpS7+by/r8XqrfNpom9mzHNHABKUGrmCf2wK02pmSc8nQoAAJbDOd4oF/pdEasODSK1Jy1bdSKCKLoBoASxgCUAAJeGI94oN2qEBqpdfFWKbgAoQa4WsOTINwAAxUfhDQAAXGIBSwAoX4YMGaJbb73VITZ37lwFBATohRde0JAhQ2Sz2TR58mSHNp999pnDOdgrVqyQzWazf0VGRuqmm27Spk2bSuNhWA6FNwAAcIkFLAGUZaw/ceneffddDRw4UG+++abGjBkjSQoICNCUKVN05MiRIn9/+/btSk1N1VdffaVTp06pe/fuOn36tLvTthwKbwAA4BILWAIoqz7+Za+umbxMA975SddMXqaPf9nr6ZQuiic/PHj22Wf1wAMPaNasWRo6dKg9npCQoOrVq2vSpElF9hEVFaXq1aurdevWGj16tPbt26dt27a5M21LYnE1AABQKBawBFDWuFp/okODSEvtozy5eOWjjz6qN954Q1988YU6d+7ssM3b21sTJ07UgAEDNGrUKNWqVavI/jIzMzVr1ixJkp+fn1tytjIKbwAAUKQaoYGWejMLoHwrbP0Jq+yrPPnhwaJFi/T5559r6dKluv7665226dWrl1q1aqXExES99957LvvKL8qPHz8uSbrlllvUqFGjkk/a4phqDgAAAMBS4iIqFYjZJEutP+HJxStbtGihOnXqKDExUceOHXPZbsqUKfrggw+0detWl22+/fZbrV27VklJSWrQoIHeeustd6RseRTeAACgSBv3HdE73+7Sxn1FL7QDAO52MOtk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LvtNTU3VgAED1KBBA3l5eWn06NEF2pw5c0ZPP/204uPjFRAQoJYtW2rx4sVF5pyenq6BAwcqJCREYWFhuuuuu3Ts2DH79hUrVqhnz56qUaOGKlWqpFatWunDDz8sst/9+/frlVde0eOPP26PderUyWnuSUlJCgsLkyTVqVNHNpvN5deQIUMkSTt37tTQoUNVq1Yt+fv7Ky4uTv3797c/jxERERo0aJASExOLzNUKKLwBAACACmblypUaMWKEfvzxRy1ZskRnzpzRjTfeqOPHj9vbPPTQQ1qwYIHmzJmjlStX6q+//lLv3r3t29euXauoqCj973//05YtW/T444/rscce0+uvv17g/jIyMjRo0CB17ty52DnGxMQoKSnJIZaSkqKlS5eqRo0aF/6gz2OM0dmzZwvEV61apRtuuEELFy7U2rVrdd1116lHjx5av369vc2RI0d0zTXXyNfXV4sWLVJycrJeeOEFValSxeX9nTp1SpGRkXriiSfUsmVLp22eeOIJTZs2Ta+99pqSk5M1fPhw9erVy+G+nRk4cKC2bNmiJUuW6IsvvtCqVascjlL/8MMPatGihT755BP9+uuvGjp0qAYNGqQvvvii0H7fffddXX311apdu3ah7f7ul19+UWpqqlJTU/XJJ59IkrZv326PvfLKK1qzZo3atGmj3377TdOmTVNycrLmzZunRo0aacyYMfa+hg4dqg8//FDp6ekXlEOZdEEXHwMAAABQ7hw8eNBIMitXrjTGGJORkWF8fX3NnDlz7G22bt1qJJnVq1e77Of+++831113XYF4v379zBNPPGESExNNy5Yti8ynY8eO5r777jNVq1Y13333nT3+n//8x/To0cO0bNnSJCYm2uMzZswwbdq0McHBwaZatWqmf//+5sCBA/bty5cvN5LMwoULTevWrY2vr69Zvnx5kXkYY0yTJk3MhAkT7LcfffRRc+211xbrd109tgcffLBAvEaNGub11193iPXu3dsMHDjQZV/JyclGkvnll1/ssUWLFhmbzWZSUlJc/t5NN91khg4dWmieTZs2LZCPq9ynT59uQkNDC8Tzn/cjR47YY7m5uaZp06amTZs2Jicnp8DvnN/WGGPi4uLMu+++W2iuVsARbwAAAKCCy8zMlCSFh4dLyjuafebMGSUkJNjbNGrUSLGxsVq9enWh/eT3kW/69On6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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ex = tq.interface.Executor(batches, backend, n_shots=128)\n", "\n", "# the executor is asynchronous, call a blocking function to wait for it to finish\n", "ex.block()\n", "\n", "circuits.plot.timestamps()" ] }, { "cell_type": "raw", "id": "b5b6b569", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ ".. note ::\n", "\n", " When running in Jupyter, the executor has an automatically updating output which\n", " relies on IPywidgets being installed and enabled. If these are not installed then\n", " no display will show up when running the executor in Jupyter.\n", "\n", "Transpiling for a Specific Backend\n", "----------------------------------\n", "Sometimes it is useful to see what the circuit conversion is doing for a particular\n", "circuit. To do this, we first instantiate a True-Q configuration object from our\n", "desired backend. This will contain the device topology and native gates of the\n", "backend. We create a compiler object based on this configuration.\n", "\n", ".. note ::\n", "\n", " This process is done during submission automatically by the\n", " :py:class:`~trueq.interface.Executor`\\, and the steps below should only be used as\n", " a reference. The output of this should not be put into the ``Executor`` or it will\n", " apply the same compiler operations a second time, which may alter the circuit\n", " further." ] }, { "cell_type": "code", "execution_count": 9, "id": "c976b28f", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T19:02:40.087502Z", "iopub.status.busy": "2024-03-26T19:02:40.087113Z", "iopub.status.idle": "2024-03-26T19:02:40.202404Z", "shell.execute_reply": "2024-03-26T19:02:40.201932Z" } }, "outputs": [], "source": [ "config = tq.interface.qiskit.config_from_backend(backend)\n", "transpiler = tq.Compiler.from_config(config)" ] }, { "cell_type": "raw", "id": "baf826b5", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "Define a circuit." ] }, { "cell_type": "code", "execution_count": 10, "id": "6daf5c65", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T19:02:40.204458Z", "iopub.status.busy": "2024-03-26T19:02:40.204061Z", "iopub.status.idle": "2024-03-26T19:02:40.225449Z", "shell.execute_reply": "2024-03-26T19:02:40.225022Z" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "
True-Q formatting will not be loaded without trusting this\n", "notebook or rerunning the affected cells. Notebooks can be marked as trusted by clicking\n", "\"File -> Trust Notebook\".
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", "
\n", "
\n", "
Circuit
\n", "
\n", "
\n", "
Key:
\n", "
\n", " No key present in circuit.\n", "
\n", "
\n", "
\n", "
\n", "
\n", "
\n", "  \n", "
\n", "
Marker 0
\n", " Compilation tools may only recompile cycles with equal markers.\n", "
\n", "
\n", "
\n", "
\n", " \n", " (4):\n", " Gate(Y, X, ...)\n", " \n", " \n", "\n", "\n", "
\n", "
\n", "
Name:
\n", "
\n", "
    \n", "
  • Gate(Y, X, ...)
  • \n", "
\n", "
\n", "\n", " \n", "\n", " \n", "\n", "\n", " \n", "
Generators:
\n", "
\n", "
    \n", "
  • 'Y': 79.235
  • \n", "
  • 'X': -61.292
  • \n", "
  • 'Z': 2.266
  • \n", "
\n", "
\n", "
\n", "
\n", "
Matrix:
\n", "
\n", "
    \n", "
  • \n", " \n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " -0.13\n", " \n", " \n", " 0.63j\n", " \n", " \n", " \n", " \n", " \n", " \n", " -0.32\n", " \n", " \n", " -0.70j\n", " \n", " \n", " \n", " \n", " \n", " \n", " -0.60\n", " \n", " \n", " 0.48j\n", " \n", " \n", " \n", " \n", " \n", " \n", " -0.16\n", " \n", " \n", " 0.62j\n", " \n", " \n", " \n", "\n", "\n", "
  • \n", "
\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", " \n", " (5):\n", " Gate.x\n", " \n", " \n", "\n", "\n", "
\n", "
\n", "
Name:
\n", "
\n", "
    \n", "
  • Gate.x
  • \n", "
\n", "
\n", "\n", " \n", "
Aliases:
\n", "
\n", "
    \n", "
  • Gate.x
  • \n", "
  • Gate.cliff1
  • \n", "
\n", "
\n", "\n", " \n", "\n", "\n", " \n", "
Generators:
\n", "
\n", "
    \n", "
  • 'X': 180.0
  • \n", "
\n", "
\n", "
\n", "
\n", "
Matrix:
\n", "
\n", "
    \n", "
  • \n", " \n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " 1.00\n", " \n", " \n", " \n", " \n", " \n", " \n", " 1.00\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "
  • \n", "
\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "\n", "\n", "\n", "\n" ], "text/plain": [ "Circuit(Cycle((4,): Gate(Y, X, ...), (5,): Gate.x))" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "circuit = tq.Circuit([{4: tq.Gate.random(2), 5: tq.Gate.x}])\n", "circuit" ] }, { "cell_type": "raw", "id": "60698c72", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "Transpile the circuit based on the device." ] }, { "cell_type": "code", "execution_count": 11, "id": "37eaf730", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T19:02:40.227407Z", "iopub.status.busy": "2024-03-26T19:02:40.227105Z", "iopub.status.idle": "2024-03-26T19:02:40.239570Z", "shell.execute_reply": "2024-03-26T19:02:40.239161Z" }, "lines_to_next_cell": 2 }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "
True-Q formatting will not be loaded without trusting this\n", "notebook or rerunning the affected cells. Notebooks can be marked as trusted by clicking\n", "\"File -> Trust Notebook\".
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", "
\n", "
\n", "
Circuit
\n", "
\n", "
\n", "
Key:
\n", "
\n", " No key present in circuit.\n", "
\n", "
\n", "
\n", "
\n", "
\n", "
\n", "  \n", "
\n", "
Marker 0
\n", " Compilation tools may only recompile cycles with equal markers.\n", "
\n", "
\n", "
\n", "
\n", " \n", " (4):\n", " RZGate(phi)\n", " \n", " \n", "\n", "\n", "
\n", "
\n", "
Name:
\n", "
\n", "
    \n", "
  • RZGate(phi)
  • \n", "
\n", "
\n", "\n", " \n", "\n", " \n", "\n", " \n", "
Parameters:
\n", "
\n", "
    \n", "
  • phi = -3.772961
  • \n", "
\n", "
\n", "\n", " \n", "
Generators:
\n", "
\n", "
    \n", "
  • 'Z': -216.175
  • \n", "
\n", "
\n", "
\n", "
\n", "
Matrix:
\n", "
\n", "
    \n", "
  • \n", " \n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " -0.31\n", " \n", " \n", " 0.95j\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " -0.31\n", " \n", " \n", " -0.95j\n", " \n", " \n", " \n", "\n", "\n", "
  • \n", "
\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", " \n", " (5):\n", " RZGate(phi)\n", " \n", " \n", "\n", "\n", "
\n", "
\n", "
Name:
\n", "
\n", "
    \n", "
  • RZGate(phi)
  • \n", "
\n", "
\n", "\n", " \n", "
Aliases:
\n", "
\n", "
    \n", "
  • Gate.cliff8
  • \n", "
\n", "
\n", "\n", " \n", "\n", " \n", "
Parameters:
\n", "
\n", "
    \n", "
  • phi = -1.570796
  • \n", "
\n", "
\n", "\n", " \n", "
Generators:
\n", "
\n", "
    \n", "
  • 'Z': -90.0
  • \n", "
\n", "
\n", "
\n", "
\n", "
Matrix:
\n", "
\n", "
    \n", "
  • \n", " \n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 0.71\n", " \n", " \n", " 0.71j\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " 0.71\n", " \n", " \n", " -0.71j\n", " \n", " \n", " \n", "\n", "\n", "
  • \n", "
\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", "  \n", "
\n", "
Marker 0
\n", " Compilation tools may only recompile cycles with equal markers.\n", "
\n", "
\n", "
\n", "
\n", " \n", " (4):\n", " SXGate()\n", " \n", " \n", "\n", "\n", "
\n", "
\n", "
Name:
\n", "
\n", "
    \n", "
  • SXGate()
  • \n", "
\n", "
\n", "\n", " \n", "
Aliases:
\n", "
\n", "
    \n", "
  • Gate.sx
  • \n", "
  • Gate.cliff5
  • \n", "
\n", "
\n", "\n", " \n", "\n", " \n", "\n", " \n", "
Generators:
\n", "
\n", "
    \n", "
  • 'X': 90.0
  • \n", "
\n", "
\n", "
\n", "
\n", "
Matrix:
\n", "
\n", "
    \n", "
  • \n", " \n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 0.50\n", " \n", " \n", " 0.50j\n", " \n", " \n", " \n", " \n", " \n", " \n", " 0.50\n", " \n", " \n", " -0.50j\n", " \n", " \n", " \n", " \n", " \n", " \n", " 0.50\n", " \n", " \n", " -0.50j\n", " \n", " \n", " \n", " \n", " \n", " \n", " 0.50\n", " \n", " \n", " 0.50j\n", " \n", " \n", " \n", "\n", "\n", "
  • \n", "
\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", " \n", " (5):\n", " SXGate()\n", " \n", " \n", "\n", "\n", "
\n", "
\n", "
Name:
\n", "
\n", "
    \n", "
  • SXGate()
  • \n", "
\n", "
\n", "\n", " \n", "
Aliases:
\n", "
\n", "
    \n", "
  • Gate.sx
  • \n", "
  • Gate.cliff5
  • \n", "
\n", "
\n", "\n", " \n", "\n", " \n", "\n", " \n", "
Generators:
\n", "
\n", "
    \n", "
  • 'X': 90.0
  • \n", "
\n", "
\n", "
\n", "
\n", "
Matrix:
\n", "
\n", "
    \n", "
  • \n", " \n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 0.50\n", " \n", " \n", " 0.50j\n", " \n", " \n", " \n", " \n", " \n", " \n", " 0.50\n", " \n", " \n", " -0.50j\n", " \n", " \n", " \n", " \n", " \n", " \n", " 0.50\n", " \n", " \n", " -0.50j\n", " \n", " \n", " \n", " \n", " \n", " \n", " 0.50\n", " \n", " \n", " 0.50j\n", " \n", " \n", " \n", "\n", "\n", "
  • \n", "
\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", "  \n", "
\n", "
Marker 0
\n", " Compilation tools may only recompile cycles with equal markers.\n", "
\n", "
\n", "
\n", "
\n", " \n", " (4):\n", " RZGate(phi)\n", " \n", " \n", "\n", "\n", "
\n", "
\n", "
Name:
\n", "
\n", "
    \n", "
  • RZGate(phi)
  • \n", "
\n", "
\n", "\n", " \n", "\n", " \n", "\n", " \n", "
Parameters:
\n", "
\n", "
    \n", "
  • phi = 1.393392
  • \n", "
\n", "
\n", "\n", " \n", "
Generators:
\n", "
\n", "
    \n", "
  • 'Z': 79.835
  • \n", "
\n", "
\n", "
\n", "
\n", "
Matrix:
\n", "
\n", "
    \n", "
  • \n", " \n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 0.77\n", " \n", " \n", " -0.64j\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " 0.77\n", " \n", " \n", " 0.64j\n", " \n", " \n", " \n", "\n", "\n", "
  • \n", "
\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", " \n", " (5):\n", " RZGate(phi)\n", " \n", " \n", "\n", "\n", "
\n", "
\n", "
Name:
\n", "
\n", "
    \n", "
  • RZGate(phi)
  • \n", "
\n", "
\n", "\n", " \n", "
Aliases:
\n", "
\n", "
    \n", "
  • Gate.id
  • \n", "
  • Gate.i
  • \n", "
  • Gate.cliff0
  • \n", "
\n", "
\n", "\n", " \n", "
Likeness:
\n", "
\n", "
    \n", "
  • Identity
  • \n", "
\n", "
\n", "\n", " \n", "
Parameters:
\n", "
\n", "
    \n", "
  • phi = 0.0
  • \n", "
\n", "
\n", "\n", " \n", "
Generators:
\n", "
\n", "
    \n", "
  • 'I': 0
  • \n", "
\n", "
\n", "
\n", "
\n", "
Matrix:
\n", "
\n", "
    \n", "
  • \n", " \n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 1.00\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " 1.00\n", " \n", " \n", " \n", "\n", "\n", "
  • \n", "
\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", "  \n", "
\n", "
Marker 0
\n", " Compilation tools may only recompile cycles with equal markers.\n", "
\n", "
\n", "
\n", "
\n", " \n", " (4):\n", " SXGate()\n", " \n", " \n", "\n", "\n", "
\n", "
\n", "
Name:
\n", "
\n", "
    \n", "
  • SXGate()
  • \n", "
\n", "
\n", "\n", " \n", "
Aliases:
\n", "
\n", "
    \n", "
  • Gate.sx
  • \n", "
  • Gate.cliff5
  • \n", "
\n", "
\n", "\n", " \n", "\n", " \n", "\n", " \n", "
Generators:
\n", "
\n", "
    \n", "
  • 'X': 90.0
  • \n", "
\n", "
\n", "
\n", "
\n", "
Matrix:
\n", "
\n", "
    \n", "
  • \n", " \n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 0.50\n", " \n", " \n", " 0.50j\n", " \n", " \n", " \n", " \n", " \n", " \n", " 0.50\n", " \n", " \n", " -0.50j\n", " \n", " \n", " \n", " \n", " \n", " \n", " 0.50\n", " \n", " \n", " -0.50j\n", " \n", " \n", " \n", " \n", " \n", " \n", " 0.50\n", " \n", " \n", " 0.50j\n", " \n", " \n", " \n", "\n", "\n", "
  • \n", "
\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", " \n", " (5):\n", " SXGate()\n", " \n", " \n", "\n", "\n", "
\n", "
\n", "
Name:
\n", "
\n", "
    \n", "
  • SXGate()
  • \n", "
\n", "
\n", "\n", " \n", "
Aliases:
\n", "
\n", "
    \n", "
  • Gate.sx
  • \n", "
  • Gate.cliff5
  • \n", "
\n", "
\n", "\n", " \n", "\n", " \n", "\n", " \n", "
Generators:
\n", "
\n", "
    \n", "
  • 'X': 90.0
  • \n", "
\n", "
\n", "
\n", "
\n", "
Matrix:
\n", "
\n", "
    \n", "
  • \n", " \n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 0.50\n", " \n", " \n", " 0.50j\n", " \n", " \n", " \n", " \n", " \n", " \n", " 0.50\n", " \n", " \n", " -0.50j\n", " \n", " \n", " \n", " \n", " \n", " \n", " 0.50\n", " \n", " \n", " -0.50j\n", " \n", " \n", " \n", " \n", " \n", " \n", " 0.50\n", " \n", " \n", " 0.50j\n", " \n", " \n", " \n", "\n", "\n", "
  • \n", "
\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", "  \n", "
\n", "
Marker 0
\n", " Compilation tools may only recompile cycles with equal markers.\n", "
\n", "
\n", "
\n", "
\n", " \n", " (4):\n", " RZGate(phi)\n", " \n", " \n", "\n", "\n", "
\n", "
\n", "
Name:
\n", "
\n", "
    \n", "
  • RZGate(phi)
  • \n", "
\n", "
\n", "\n", " \n", "\n", " \n", "\n", " \n", "
Parameters:
\n", "
\n", "
    \n", "
  • phi = 0.685438
  • \n", "
\n", "
\n", "\n", " \n", "
Generators:
\n", "
\n", "
    \n", "
  • 'Z': 39.273
  • \n", "
\n", "
\n", "
\n", "
\n", "
Matrix:
\n", "
\n", "
    \n", "
  • \n", " \n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 0.94\n", " \n", " \n", " -0.34j\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " 0.94\n", " \n", " \n", " 0.34j\n", " \n", " \n", " \n", "\n", "\n", "
  • \n", "
\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", " \n", " (5):\n", " RZGate(phi)\n", " \n", " \n", "\n", "\n", "
\n", "
\n", "
Name:
\n", "
\n", "
    \n", "
  • RZGate(phi)
  • \n", "
\n", "
\n", "\n", " \n", "
Aliases:
\n", "
\n", "
    \n", "
  • Gate.cliff8
  • \n", "
\n", "
\n", "\n", " \n", "\n", " \n", "
Parameters:
\n", "
\n", "
    \n", "
  • phi = -1.570796
  • \n", "
\n", "
\n", "\n", " \n", "
Generators:
\n", "
\n", "
    \n", "
  • 'Z': -90.0
  • \n", "
\n", "
\n", "
\n", "
\n", "
Matrix:
\n", "
\n", "
    \n", "
  • \n", " \n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 0.71\n", " \n", " \n", " 0.71j\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " 0.71\n", " \n", " \n", " -0.71j\n", " \n", " \n", " \n", "\n", "\n", "
  • \n", "
\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "\n", "\n", "\n", "\n" ], "text/plain": [ "Circuit(Cycle((4,): RZGate(phi), (5,): RZGate(phi)),Cycle((4,): SXGate(), (5,): SXGate()),Cycle((4,): RZGate(phi), (5,): RZGate(phi)),Cycle((4,): SXGate(), (5,): SXGate()),Cycle((4,): RZGate(phi), (5,): RZGate(phi)))" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "transpiled_circuit = transpiler.compile(circuit)\n", "transpiled_circuit" ] }, { "cell_type": "raw", "id": "f6069254", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ ".. rubric:: Footnotes\n", "\n", ".. [#f1] For older IBM devices, we also support the gateset\n", " ``['u1', 'u2', 'u3', 'cx']``." ] } ], "metadata": { "jupytext": { "cell_metadata_filter": "raw_mimetype,nbsphinx,-all", "main_language": "python", "notebook_metadata_filter": "-all", "text_representation": { "extension": ".py", "format_name": "percent" } }, "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.8.10" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "0879ddd2feea423bb7be2b0bb28266d7": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": "flex-end", "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": "flex", "flex": null, "flex_flow": "column", "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "2a278df7981d4de4a2be9b08e8f67ec1": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ButtonModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ButtonModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "ButtonView", "button_style": "danger", "description": "Cancel", "disabled": true, "icon": "", "layout": "IPY_MODEL_da6294a1fda6498b9a88a6786f25fe5f", "style": "IPY_MODEL_97e9e33176104e80b97d623769b3b925", "tabbable": null, "tooltip": "Cancel all submitted jobs" } }, "2aae67dbd9494011be4ef5f6a3231565": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_de4f2ef8e9904f94abe18a874964b590", "placeholder": "​", "style": "IPY_MODEL_59c188f1487943e290e136b6b7e6378f", "tabbable": null, "tooltip": null, "value": "\n
\n
\n
1 / 3
\n
DONE
\n
Job successful.
\n
\n" } }, "32311751c6c14f70bdf6e55ab319b08e": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "59c188f1487943e290e136b6b7e6378f": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "724bdd07bdf54703a488863895a8a71e": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "7821754e7116408e8779d4707e35e1bc": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_2a278df7981d4de4a2be9b08e8f67ec1", "IPY_MODEL_a5a272e3e72041a9800e1dc27b723872" ], "layout": "IPY_MODEL_0879ddd2feea423bb7be2b0bb28266d7", "tabbable": null, "tooltip": null } }, "7fa45428782241eeaaa57df5f1ccd173": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "97e9e33176104e80b97d623769b3b925": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ButtonStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ButtonStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "button_color": null, "font_family": null, "font_size": null, "font_style": null, "font_variant": null, "font_weight": null, "text_color": null, "text_decoration": null } }, "9a85495b6d4c4f3c9baf4392201d8b53": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_32311751c6c14f70bdf6e55ab319b08e", "placeholder": "​", "style": "IPY_MODEL_ca16b0a9f5914403928559eae19b1f28", "tabbable": null, "tooltip": null, "value": "\n
\n
\n
3 / 3
\n
DONE
\n
Job successful.
\n
\n" } }, "a5a272e3e72041a9800e1dc27b723872": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "CheckboxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "CheckboxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "CheckboxView", "description": "Enable Cancel", "description_allow_html": false, "disabled": false, "indent": false, "layout": "IPY_MODEL_aedc0fcd455d4404bd6eed623cac6809", "style": "IPY_MODEL_d9f8e66c96594d2b919c6c155f4639c0", "tabbable": null, "tooltip": null, "value": false } }, "ae71df4066b14cf793fff3e7c7f08346": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "aedc0fcd455d4404bd6eed623cac6809": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "8em" } }, "c4e341b5c1a54b7f8ae24e166fbb3128": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_ae71df4066b14cf793fff3e7c7f08346", "placeholder": "​", "style": "IPY_MODEL_7fa45428782241eeaaa57df5f1ccd173", "tabbable": null, "tooltip": null, "value": "\n
\n
\n
2 / 3
\n
DONE
\n
Job successful.
\n
\n" } }, "c690116c93d846d39fc0af357b84769f": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "ca16b0a9f5914403928559eae19b1f28": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "d9f8e66c96594d2b919c6c155f4639c0": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "CheckboxStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "CheckboxStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "" } }, "da6294a1fda6498b9a88a6786f25fe5f": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "9em" } }, "de4f2ef8e9904f94abe18a874964b590": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e6b771f56a034abeb02c928384205d17": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_724bdd07bdf54703a488863895a8a71e", "placeholder": "​", "style": "IPY_MODEL_c690116c93d846d39fc0af357b84769f", "tabbable": null, "tooltip": null, "value": "\n
\n
100% complete on 'aer_simulator(fake_melbourne)
\n
Save Queued
\n
\n \n
\n Warning: No filename\n
\n
\n
\n" } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 }