{ "cells": [ { "cell_type": "markdown", "id": "8f452aaac6ed270c", "metadata": {}, "source": [ "# Graph converter and resources estimator" ] }, { "cell_type": "markdown", "id": "ebf5f19f0c411fd0", "metadata": {}, "source": [ "In this notebook, we show how to convert Qiskit circuits to graph representations and estimate the photonic resources required for implementing quantum circuits on photonic hardware." ] }, { "cell_type": "markdown", "id": "47db863cd5561deb", "metadata": {}, "source": [ "As usual, we start by importing the needed libraries. Note that this notebook requires the installation of Qiskit (which can be easily done with `pip install qiskit`)." ] }, { "cell_type": "code", "execution_count": 1, "id": "275ae16b78992f93", "metadata": {}, "outputs": [], "source": [ "from qiskit.circuit.random import random_circuit\n", "from perceval import pdisplay, Format\n", "from perceval_interop import CircuitToGraphConverter\n", "from perceval_interop.qiskit import ResourcesEstimator" ] }, { "cell_type": "markdown", "id": "1a647b786e9bd923", "metadata": {}, "source": [ "We create a random Qiskit circuit." ] }, { "cell_type": "code", "execution_count": 2, "id": "f9575cc2e2e06b8f", "metadata": {}, "outputs": [], "source": [ "qiskit_circuit = random_circuit(8, 10, max_operands=2)" ] }, { "cell_type": "markdown", "id": "3bf5d08d0e815632", "metadata": {}, "source": [ "Then we convert it to a graph." ] }, { "cell_type": "code", "execution_count": 3, "id": "949d00ab9e6cfbb2", "metadata": {}, "outputs": [ { "data": { "image/png": "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XZZyNQHn+ccff7TmzZtnvfTSS1bv3r2thg0bWsWKFTOd8GxDgaSs6667zqpTp47VrVs3a+TIkaab24YNG/TeTSUYaSShObnjYKDMmDHDXC80znISXOc9evQw20Znz2PHjgXts++77z4rZ86c1r59+6xo44Sf87eGCVwK4ibocf/0009GW5zfldCEAL755hvTy4G4/r59+4yrvnXr1kZYhoYo6dJdTL3p1Utk0qQLMmVKOrnjDpH8+WNzCX74QeSFF0S++OLiZ/O27t1j8wnSUitOL3qS2hJ7+OYgEH6www0JHxp+uJQff/zR3FenT5+WOXPmmPi2F2jYsKH8/fffJgHSiXCsu3btauYaRJHspkNp4dixYyb8QHI1DcOi6Vo/6ef8rcaAC9m8ebM0adLEKG3Nnz/fNSInXjUAfPnkk0XSvPnlEhNTnSBAMt9yXkqV+kM2bMgrmTKFZj+4tRkEkzIU9u/fH/daGrzYhkJCgwExnWjraknXvXvuucccC353cqOhQDh8+LAUKFBAxo8fLz3jJ684ChL+OP4IFD399NPy5JNPms6EaW0URnUVi6d27dpJtHBScwa8CfHhbNmyWeXLlw9ZjW40hwD69u2baAjAn1plXJA0gapfv5nVo8cFK3168gfOmZ4EvjkCGTLQHGaxddllWa0vv/zSihS+4QfCTDR9ufPOO/0KP6C9v379euv48eOWlyDUNnz4cBN6a9GihalX9xLkmGTIkMGEP5wOuRlDhw4NqiZBmzZtrNy5cxstlmjhhOYMeI/XXnvN3BiInXhtkHKSAcCk6K8BYIOaWu3atc377YFm2LDXrAwZBln16l2wKle2rPr1YwWG+DfJfnXr1rWyZ89ubdy40XIa7A+KcajUkdCF0h4D6S233GLlyJEjXlJjrly5rMqVK5tufYMHDzaJWhw/Gve4SfCFjoMdOnRwTcfB1FClShWrcePGltuarF177bXWVVddZX388cdp+qyDBw+a6xV11mjhhBoD3oGBmcxxO5s5lDKeXieYBoAvVACwmly2bFncc1QE0MUuKWi3WqFCBStfvnzW77//brlp9Xz06FHr22+/tWbOnGmkZe3qB/uY2g+y1skSb9q0qTnm48aNsz777DPTTttJ8r0YLpUqVXJVx8FA4RrjnFCx4ja43u666y6z/STQYrilFvafz/noo4+saOCEGgPe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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "converter = CircuitToGraphConverter(qiskit_circuit=qiskit_circuit)\n", "graph = converter.generate_graph()\n", "pdisplay(graph, output_format=Format.MPLOT)" ] }, { "cell_type": "markdown", "id": "c22c2e109a25e85a", "metadata": {}, "source": [ "We can also estimate the resources needed to convert the Qiskit circuit into a photonic circuit." ] }, { "cell_type": "code", "execution_count": 4, "id": "245328f58815f242", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Encoding: [[0], [1], [2], [3], [4], [5], [6], [7]]\n", "Number of modes needed: 16\n", "Number of photons needed: 120\n", "Encoding: [[0, 1], [2, 3], [4, 5], [6, 7]]\n", "Number of modes needed: 16\n", "Number of photons needed: 348\n" ] } ], "source": [ "estimator = ResourcesEstimator(qiskit_circuit)\n", "\n", "print('Encoding:', estimator.encoding)\n", "print('Number of modes needed:', estimator.num_modes_needed)\n", "print('Number of photons needed:', estimator.num_photons_needed)\n", "\n", "custom_encoding = [[0, 1], [2, 3], [4, 5], [6, 7]] # Force a given encoding\n", "est2 = ResourcesEstimator(qiskit_circuit, custom_encoding)\n", "\n", "print('Encoding:', est2.encoding)\n", "print('Number of modes needed:', est2.num_modes_needed)\n", "print('Number of photons needed:', est2.num_photons_needed)" ] } ], "metadata": { "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 5 }