{ "cells": [ { "cell_type": "markdown", "id": "d07312b3-3d4c-4b8b-9fda-5862e61f383f", "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "source": [ "# Circuit-Cutting with Cutqc2\n", "\n", "This notebook illustrates the use of `Cutqc2` to cut, save and run quantum circuits (`qiskit.QuantumCircuit` objects) and reconstruct the probability state vector of the original uncut circuit." ] }, { "cell_type": "code", "execution_count": 1, "id": "initial_id", "metadata": { "collapsed": false, "is_executing": true, "jupyter": { "outputs_hidden": false } }, "outputs": [], "source": [ "from math import pi\n", "\n", "import qiskit\n", "\n", "from cutqc2.core.cut_circuit import CutCircuit" ] }, { "cell_type": "markdown", "id": "12f0901d-0e85-40f4-9c14-3c9cfaf6a3be", "metadata": {}, "source": [ "## The uncut circuit\n", "\n", "The circuit we intend to cut is a regular `qiskit.QuantumCircuit` object. Here we create a simple circuit corresponding to Figure 4 in the original CutQC paper." ] }, { "cell_type": "code", "execution_count": 2, "id": "9ccd562b-493e-4e64-af64-5ec39d24048f", "metadata": {}, "outputs": [], "source": [ "def example_circuit():\n", " qc = qiskit.QuantumCircuit(5)\n", " qc.reset(0)\n", " qc.reset(1)\n", " qc.reset(2)\n", " qc.reset(3)\n", " qc.reset(4)\n", "\n", " qc.h(0)\n", " qc.h(1)\n", " qc.h(2)\n", " qc.h(3)\n", " qc.h(4)\n", "\n", " qc.cz(0, 1)\n", " qc.t(2)\n", " qc.t(3)\n", " qc.t(4)\n", "\n", " qc.cz(0, 2)\n", " qc.rx(pi / 2, 4)\n", "\n", " qc.rx(pi / 2, 0)\n", " qc.rx(pi / 2, 1)\n", " qc.cz(2, 4)\n", "\n", " qc.t(0)\n", " qc.t(1)\n", " qc.cz(2, 3)\n", " qc.rx(pi / 2, 4)\n", "\n", " qc.h(0)\n", " qc.h(1)\n", " qc.h(2)\n", " qc.h(3)\n", " qc.h(4)\n", "\n", " return qc\n", "\n", "\n", "circuit = example_circuit()" ] }, { "cell_type": "markdown", "id": "7e135edc-81b8-4cf4-93a5-f66c8b9f915d", "metadata": {}, "source": [ "## The `CutCircuit` class\n", "\n", "We create a `CutCircuit` object by providing it with a `qiskit.QuantumCircuit` object using the `circuit` parameter in the constructor. Initialization using `qasm3` strings is also possible." ] }, { "cell_type": "code", "execution_count": 3, "id": "16f932b8-6be8-4e63-a163-46ebb926af80", "metadata": {}, "outputs": [], "source": [ "cut_circuit = CutCircuit(circuit=circuit)" ] }, { "cell_type": "markdown", "id": "03702ef7-c0f7-4e7b-9f4c-5d58c13c06b5", "metadata": {}, "source": [ "The uncut circuit is a `qiskit.QuantumCircuit` object, and stored as the `circuit` attribute of `cut_circuit`. Let's draw it out." ] }, { "cell_type": "code", "execution_count": 4, "id": "6beffb64-ab31-4330-b807-cb8c74dd3dc4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " ┌───┐ ┌─────────┐ ┌───┐ ┌───┐\n", "q_0: ─|0>─┤ H ├──■───────■─────┤ Rx(π/2) ├───┤ T ├───┤ H ├\n", " ├───┤ │ │ ├─────────┤ ├───┤ ├───┤\n", "q_1: ─|0>─┤ H ├──■───────┼─────┤ Rx(π/2) ├───┤ T ├───┤ H ├\n", " ├───┤┌───┐ │ └─────────┘ └───┘ ├───┤\n", "q_2: ─|0>─┤ H ├┤ T ├─────■──────────■──────────■─────┤ H ├\n", " ├───┤├───┤ │ │ ├───┤\n", "q_3: ─|0>─┤ H ├┤ T ├────────────────┼──────────■─────┤ H ├\n", " ├───┤├───┤┌─────────┐ │ ┌─────────┐├───┤\n", "q_4: ─|0>─┤ H ├┤ T ├┤ Rx(π/2) ├─────■─────┤ Rx(π/2) ├┤ H ├\n", " └───┘└───┘└─────────┘ └─────────┘└───┘\n" ] } ], "source": [ "print(cut_circuit.circuit.draw(fold=-1))" ] }, { "cell_type": "markdown", "id": "d3df93dc-85f7-4e69-ae92-7cf38dc57574", "metadata": {}, "source": [ "### Cutting\n", "\n", "Perform circuit-cutting by invoking the `cut` method. Pay attention to the parameters to this method. The `num_subcircuits` parameter is a list of integers, indicating the number of subcircuits for the optimizer to try." ] }, { "cell_type": "code", "execution_count": 5, "id": "b0eb7938-5b6f-4b63-b83c-4fe873ba912e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Trying with 2 subcircuits\n", "Set parameter Username\n", "(INFO) (mip.py) (29-Sep-25 19:18:25) Set parameter Username\n", "Set parameter LicenseID to value 2646086\n", "(INFO) (mip.py) (29-Sep-25 19:18:25) Set parameter LicenseID to value 2646086\n", "Academic license - for non-commercial use only - expires 2026-04-01\n", "(INFO) (mip.py) (29-Sep-25 19:18:25) Academic license - for non-commercial use only - expires 2026-04-01\n" ] } ], "source": [ "cut_circuit.cut(\n", " max_subcircuit_width=3, # Max qubits per subcircuit\n", " max_cuts=1, # Max total cuts in the circuit\n", " num_subcircuits=[2], # Desired number of subcircuits to try\n", ")" ] }, { "cell_type": "markdown", "id": "1636e299-9243-4671-bc62-4a7a4bd53de4", "metadata": {}, "source": [ "Printing the `cut_circuit` object gives us the location of the auto-placed cuts (as the placeholder `//` gates)." ] }, { "cell_type": "code", "execution_count": 6, "id": "8da1aabd-ddbf-4ac1-9506-e88ec82bd50a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " ┌───┐ ┌─────────┐┌───┐ ┌───┐ \n", "q_0: ─|0>─┤ H ├──■──────────────■─┤ Rx(π/2) ├┤ T ├───┤ H ├────────\n", " ├───┤ │ ┌─────────┐ │ └──┬───┬──┘├───┤ └───┘ \n", "q_1: ─|0>─┤ H ├──■──┤ Rx(π/2) ├─┼────┤ T ├───┤ H ├────────────────\n", " ├───┤┌───┐└─────────┘ │ ├───┴┐ └───┘ ┌───┐\n", "q_2: ─|0>─┤ H ├┤ T ├────────────■────┤ // ├────■───────■─────┤ H ├\n", " ├───┤├───┤ └────┘ │ │ ├───┤\n", "q_3: ─|0>─┤ H ├┤ T ├───────────────────────────┼───────■─────┤ H ├\n", " ├───┤├───┤┌─────────┐ │ ┌─────────┐├───┤\n", "q_4: ─|0>─┤ H ├┤ T ├┤ Rx(π/2) ├────────────────■──┤ Rx(π/2) ├┤ H ├\n", " └───┘└───┘└─────────┘ └─────────┘└───┘\n" ] } ], "source": [ "print(cut_circuit)" ] }, { "cell_type": "markdown", "id": "6f64a013-17c1-4965-94e2-68449a7bcc3b", "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "source": [ "### Subcircuits\n", "\n", "Once cut, the individual subcircuits (`qiskit.QuantumCircuit` objects), can be printed." ] }, { "cell_type": "code", "execution_count": 7, "id": "63049c4a-46e6-4958-9c81-1eb3834ac650", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " ┌───┐ ┌─────────┐┌───┐┌───┐\n", "q_0: ─|0>─┤ H ├──■──────────────■─┤ Rx(π/2) ├┤ T ├┤ H ├\n", " ├───┤ │ ┌─────────┐ │ └──┬───┬──┘├───┤└───┘\n", "q_1: ─|0>─┤ H ├──■──┤ Rx(π/2) ├─┼────┤ T ├───┤ H ├─────\n", " ├───┤┌───┐└─────────┘ │ └───┘ └───┘ \n", "q_2: ─|0>─┤ H ├┤ T ├────────────■──────────────────────\n", " └───┘└───┘ \n", " ┌───┐ \n", "q_0: ───────────────────────────■──■────┤ H ├────────\n", " ┌───┐┌───┐┌─────────┐ │ │ ┌──┴───┴──┐┌───┐\n", "q_1: ─|0>─┤ H ├┤ T ├┤ Rx(π/2) ├─■──┼─┤ Rx(π/2) ├┤ H ├\n", " ├───┤├───┤└─────────┘ │ └──┬───┬──┘└───┘\n", "q_2: ─|0>─┤ H ├┤ T ├───────────────■────┤ H ├────────\n", " └───┘└───┘ └───┘ \n" ] } ], "source": [ "for subcircuit in cut_circuit.subcircuits:\n", " print(subcircuit.draw(fold=-1))" ] }, { "cell_type": "markdown", "id": "b62fa48b-b9a7-489f-9e58-b25e19778bc8", "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "source": [ "### Running\n", "\n", "Subcircuits of a `CutCircuit` object can be run using the `run_subcircuits()` method." ] }, { "cell_type": "code", "execution_count": 8, "id": "e68e8816-e130-4533-bb6b-6536145593b5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Running subcircuit 0 on backend: statevector_simulator\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Running subcircuit 1 on backend: statevector_simulator\n" ] } ], "source": [ "# Run all the subcircuits - by default we use the `statevector_simulator` backend from qiskit.\n", "cut_circuit.run_subcircuits()" ] }, { "cell_type": "markdown", "id": "e5900a35-7d52-43d0-b8be-7231a47c8ce8", "metadata": {}, "source": [ "### Saving\n", "\n", "The `CutCircuit` object (along with the state vectors of its subcircuits) can be saved using the `to_file()` method. Currently, the `zarr` format is supported." ] }, { "cell_type": "code", "execution_count": 9, "id": "aff96710-2a87-4181-8cb0-126597ac39d8", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/media/vineetb/delta/projects/cutqc2/.venv/lib/python3.12/site-packages/zarr/core/dtype/npy/structured.py:318: UnstableSpecificationWarning: The data type (Structured(fields=(('subcircuit', Int32(endianness='little')), ('qubit', Int32(endianness='little'))))) does not have a Zarr V3 specification. That means that the representation of arrays saved with this data type may change without warning in a future version of Zarr Python. Arrays stored with this data type may be unreadable by other Zarr libraries. Use this data type at your own risk! Check https://github.com/zarr-developers/zarr-extensions/tree/main/data-types for the status of data type specifications for Zarr V3.\n", " v3_unstable_dtype_warning(self)\n", "/media/vineetb/delta/projects/cutqc2/.venv/lib/python3.12/site-packages/zarr/core/dtype/npy/string.py:248: UnstableSpecificationWarning: The data type (FixedLengthUTF32(length=20, endianness='little')) does not have a Zarr V3 specification. That means that the representation of arrays saved with this data type may change without warning in a future version of Zarr Python. Arrays stored with this data type may be unreadable by other Zarr libraries. Use this data type at your own risk! Check https://github.com/zarr-developers/zarr-extensions/tree/main/data-types for the status of data type specifications for Zarr V3.\n", " v3_unstable_dtype_warning(self)\n" ] } ], "source": [ "cut_circuit.to_file(\"cut_circuit.zarr\")" ] }, { "cell_type": "markdown", "id": "9e9de122-d67e-4048-8926-95dc932e3701", "metadata": {}, "source": [ "### Loading\n", "\n", "A previously saved `CutCircuit` object can be loaded using the `from_file` static method of `CutCircuit`." ] }, { "cell_type": "code", "execution_count": 10, "id": "fdd06f71-c84e-4326-8d9a-0f48c23158fa", "metadata": {}, "outputs": [], "source": [ "cut_circuit = CutCircuit.from_file(\"cut_circuit.zarr\")" ] }, { "cell_type": "markdown", "id": "94217ac1-736c-4f38-bd4d-2af291407104", "metadata": {}, "source": [ "### Reconstruction\n", "\n", "The *reconstruction* process - calculating the state vector of the original uncut circuit using the individual subcircuit state vectors, can be invoked by using the `postprocess` method of the `CutCircuit` class.\n", "\n", "The `capacity` parameter indicates the number of qubits we are able to hold in memory at a time during the reconstruction process. The reconstructed state vector will be of size $2^{capacity}$.\n", "\n", "The `max_recursion` parameter is a measure of how many iterations of reconstruction we're willing to perform. A greater value of `max_recursion` will allow for better reconstruction.\n", "\n", "`capacity`/`max_recursion` are specify tradeoffs between space- and time- complexity of the reconstruction process." ] }, { "cell_type": "code", "execution_count": 11, "id": "9fcf5ddb-ed27-4d5e-8125-479e672bf8e7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Postprocessing the cut circuit\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Starting dynamic definition run\n", "(INFO) (dynamic_definition.py) (29-Sep-25 19:18:25) Calculating initial probabilities for qubit spec AAAMM\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec AAAMM\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (dynamic_definition.py) (29-Sep-25 19:18:25) recursion_level=1, qubit_spec='AAAMM'\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 00000\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 00001\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 00010\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 00011\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 00100\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 00101\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 00110\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 00111\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 01000\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 01001\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 01010\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 01011\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 01100\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 01101\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 01110\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 01111\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 10000\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 10001\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 10010\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 10011\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 10100\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 10101\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 10110\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 10111\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 11000\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 11001\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 11010\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 11011\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 11100\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 11101\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 11110\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Computing probabilities for qubit spec 11111\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Processed 0/4 initializations\n", "(INFO) (dynamic_definition.py) (29-Sep-25 19:18:25) recursion_level=2, qubit_spec='00000'\n" ] } ], "source": [ "cut_circuit.postprocess(capacity=3, max_recursion=9)" ] }, { "cell_type": "markdown", "id": "2ed97572-3f74-46f9-b63b-88b057266b49", "metadata": {}, "source": [ "### Verification\n", "\n", "For small quantum circuits, we can verify that the reconstructed state vector along with the ground truth state vector (determined by running the uncut qiskit circuit against the `statevector_simulator` backend)." ] }, { "cell_type": "code", "execution_count": 12, "id": "f982973f-f29f-485e-87d2-6008b39f3690", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Converting quasi to real probabilities\n", "(INFO) (conversions.py) (29-Sep-25 19:18:25) Computing nearest probability distribution\n", "(INFO) (conversions.py) (29-Sep-25 19:18:25) Sorting\n", "(INFO) (conversions.py) (29-Sep-25 19:18:25) Computed nearest probability distribution\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Verifying cut circuit against original circuit\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Evaluating ground truth using statevector_simulator\n", "Verification error: 2.7382709336055705e-15\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_120396/542888601.py:1: UserWarning: Generating all 2^num_qubits states. This may be memory intensive.\n", " probabilities = cut_circuit.get_probabilities()\n" ] } ], "source": [ "probabilities = cut_circuit.get_probabilities()\n", "error = cut_circuit.verify(probabilities, raise_error=False)\n", "print(f\"Verification error: {error}\")" ] }, { "cell_type": "markdown", "id": "318f3914-ce08-43f8-9f6e-0236cd73a89a", "metadata": {}, "source": [ "### Plotting\n", "\n", "For small quantum circuits, we can plot out the reconstructed state vector along with the ground truth state vector (determined by running the uncut qiskit circuit against the `statevector_simulator` backend)." ] }, { "cell_type": "code", "execution_count": 13, "id": "83d5f4a0-ab1b-4c84-aa01-85191be85389", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Evaluating ground truth using statevector_simulator\n", "(INFO) (cut_circuit.py) (29-Sep-25 19:18:25) Converting quasi to real probabilities\n", "(INFO) (conversions.py) (29-Sep-25 19:18:25) Computing nearest probability distribution\n", "(INFO) (conversions.py) (29-Sep-25 19:18:25) Sorting\n", "(INFO) (conversions.py) (29-Sep-25 19:18:25) Computed nearest probability distribution\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_120396/402829356.py:1: UserWarning: Generating all 2^num_qubits states. This may be memory intensive.\n", " cut_circuit.plot(plot_ground_truth=True)\n" ] }, { "data": { "image/png": "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R7v1SpoDyV0niIjIWdicdcyePRvjxo1DfHy8tbLm7e2NRYsWVXr83Llz0b9/f0yePBnNmzfHa6+9hg4dOuDDDz+0HrNt2zaMGTMGffr0QXR0NB5++GG0bdv2hpVAIkd4W3edYGJHRETOwabErqCgALt370a/fv1KT+Dign79+mH79u2VPmb79u3ljgeAuLi4csd369YNP//8M86dOwdBELBp0yYcO3YMt912W6XnzM/PR0ZGRrmb3oRnXEDjC6dg5gIK3fIqkIZiq55j98zWL/Hz50/h9n//UCssIiIiu9mU2F28eBHFxcUIDQ0td39oaChSUlIqfUxKSsoNj//ggw/QokUL1KtXDx4eHujfvz/mzZuHXr16VXrOmTNnIiAgwHqLjIy05dtQxY9fPov1i8aj0aUzWodCVdhVrwVm9RqNNU17VHlMvfRUtEk5gfDMiypGRkREZB9drIr94IMP8Ndff+Hnn39GVFQUtm7divHjxyMiIqJCtQ8Apk6dikmTJlk/z8jI0F1yJzUp5u4T+rU/oin2RzS97jFST0K2OyEiIiOwKbELDg6Gq6srUlNTy92fmpqKsLCwSh8TFhZ23eNzc3PxwgsvYMWKFRg4cCAAoE2bNti3bx/eeeedShM7s9kMs7nq4TM9yGUvO6cg9bHzYYJOREQGYNNQrIeHBzp27IiEhATrfRaLBQkJCYiNja30MbGxseWOB4D169dbjy8sLERhYSFcXMqH4urqCovFuK1C2MtO/6KuJKNlaiICc6ueo5njzu3hiIjIOGweip00aRLGjBmDTp06oUuXLpgzZw6ys7MRHx8PABg9ejTq1q2LmTNnAgAmTpyI3r17491338XAgQPx7bffYteuXVi4cCEAwN/fH71798bkyZPh5eWFqKgobNmyBV988QVmz54t47eqrtKKHRMCvXp265cY9O/veLXvOCzuNKTSY6QhdZ8Cvo5ERKR/Nid2I0aMwIULF/Dyyy8jJSUF7dq1w9q1a60LJE6fPl2u+tatWzcsXboUL730El544QU0btwYK1euRKtWrazHfPvtt5g6dSruu+8+XL58GVFRUfi///s/PProozJ8i9rgtmL651WNBsU5nGNHREQGYtfiiQkTJmDChAmVfm3z5s0V7hs+fDiGDx9e5fnCwsKwePFie0LRLetQLCs9uiUl3bnXSewyzD647OV/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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cut_circuit.plot(plot_ground_truth=True)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.9" } }, "nbformat": 4, "nbformat_minor": 5 }