{ "cells": [ { "cell_type": "markdown", "id": "5642d121", "metadata": {}, "source": [ "# Resonator Spectroscopy\n", "\n", "This notebook will go through resonator discovery and punchout spectroscopy for identifying the resonator and measuring it's resonant frequency." ] }, { "cell_type": "code", "execution_count": 1, "id": "eca0689a", "metadata": { "execution": { "iopub.execute_input": "2024-09-02T01:45:28.098632Z", "iopub.status.busy": "2024-09-02T01:45:28.098429Z", "iopub.status.idle": "2024-09-02T01:45:29.750788Z", "shell.execute_reply": "2024-09-02T01:45:29.750029Z" }, "title": "HEADER" }, "outputs": [], "source": [ "from __future__ import annotations\n", "\n", "import json\n", "\n", "import numpy as np\n", "import rich # noqa:F401\n", "from qcodes.instrument import find_or_create_instrument\n", "from qcodes.parameters import ManualParameter\n", "\n", "import quantify_core.data.handling as dh\n", "from qblox_instruments import Cluster, ClusterType\n", "from quantify_core.measurement.control import MeasurementControl\n", "from quantify_core.visualization.pyqt_plotmon import PlotMonitor_pyqt as PlotMonitor\n", "from quantify_scheduler import Schedule\n", "from quantify_scheduler.device_under_test.quantum_device import QuantumDevice\n", "from quantify_scheduler.gettables import ScheduleGettable\n", "from quantify_scheduler.instrument_coordinator import InstrumentCoordinator\n", "from quantify_scheduler.instrument_coordinator.components.qblox import (\n", " ClusterComponent,\n", ")\n", "from quantify_scheduler.operations.gate_library import Measure\n", "from quantify_scheduler.operations.pulse_library import IdlePulse" ] }, { "cell_type": "markdown", "id": "cd59085f", "metadata": {}, "source": [ "## Setup\n", "In this section we configure the hardware configuration which specifies the connectivity of our system.\n", "\n", "The experiments of this tutorial are meant to be executed with a Qblox Cluster controlling a transmon system.\n", "The experiments can also be executed using a dummy Qblox device that is created via an instance of the `Cluster` class, and is initialized with a dummy configuration.\n", "When using a dummy device, the analysis will not work because the experiments will return `np.nan` values.\n", "\n", "### Configuration file\n", "\n", "This is a template hardware configuration file for a 2-qubit system with a flux-control line which can be used to tune the qubit frequency. We will only work with qubit 0.\n", "\n", "The hardware setup is as follows, by cluster slot:\n", "- **QCM** (Slot 2)\n", " - Flux line for `q0`.\n", "- **QCM-RF** (Slot 6)\n", " - Drive line for `q0` using fixed 80 MHz IF.\n", "- **QRM-RF** (Slot 8)\n", " - Readout line for `q0` using a fixed LO set at 7.5 GHz.\n", "\n", "Note that in the hardware configuration below the mixers are uncorrected, but for high fidelity experiments this should also be done for all the modules." ] }, { "cell_type": "code", "execution_count": 2, "id": "84bb72db", "metadata": { "execution": { "iopub.execute_input": "2024-09-02T01:45:29.754066Z", "iopub.status.busy": "2024-09-02T01:45:29.753518Z", "iopub.status.idle": "2024-09-02T01:45:29.758044Z", "shell.execute_reply": "2024-09-02T01:45:29.757422Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Data will be saved in:\n", "/root/quantify-data\n" ] } ], "source": [ "with open(\"configs/tuning_transmon_coupled_pair_hardware_config.json\") as hw_cfg_json_file:\n", " hardware_cfg = json.load(hw_cfg_json_file)\n", "\n", "# Enter your own dataset directory here!\n", "dh.set_datadir(dh.default_datadir())" ] }, { "cell_type": "markdown", "id": "cc257833", "metadata": {}, "source": [ "### Scan For Clusters\n", "\n", "We scan for the available devices connected via ethernet using the Plug & Play functionality of the Qblox Instruments package (see [Plug & Play](https://qblox-qblox-instruments.readthedocs-hosted.com/en/main/api_reference/tools.html#api-pnp) for more info)." ] }, { "cell_type": "code", "execution_count": 3, "id": "95f5cd3a", "metadata": { "execution": { "iopub.execute_input": "2024-09-02T01:45:29.760233Z", "iopub.status.busy": "2024-09-02T01:45:29.760069Z", "iopub.status.idle": "2024-09-02T01:45:31.753351Z", "shell.execute_reply": "2024-09-02T01:45:31.749601Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "No devices found\r\n" ] } ], "source": [ "!qblox-pnp list" ] }, { "cell_type": "code", "execution_count": 4, "id": "24bc57e1", "metadata": { "execution": { "iopub.execute_input": "2024-09-02T01:45:31.761704Z", "iopub.status.busy": "2024-09-02T01:45:31.761518Z", "iopub.status.idle": "2024-09-02T01:45:31.764775Z", "shell.execute_reply": "2024-09-02T01:45:31.764130Z" } }, "outputs": [], "source": [ "cluster_ip = None # To run this tutorial on hardware, fill in the IP address of the cluster here\n", "cluster_name = \"cluster0\"" ] }, { "cell_type": "markdown", "id": "0d966b5c", "metadata": {}, "source": [ "### Connect to Cluster\n", "\n", "We now make a connection with the Cluster." ] }, { "cell_type": "code", "execution_count": 5, "id": "73ef3424", "metadata": { "execution": { "iopub.execute_input": "2024-09-02T01:45:31.767021Z", "iopub.status.busy": "2024-09-02T01:45:31.766847Z", "iopub.status.idle": "2024-09-02T01:45:32.381609Z", "shell.execute_reply": "2024-09-02T01:45:32.380879Z" }, "lines_to_next_cell": 0 }, "outputs": [], "source": [ "cluster = find_or_create_instrument(\n", " Cluster,\n", " recreate=True,\n", " name=cluster_name,\n", " identifier=cluster_ip,\n", " dummy_cfg=(\n", " {\n", " 2: ClusterType.CLUSTER_QCM,\n", " 4: ClusterType.CLUSTER_QRM,\n", " 6: ClusterType.CLUSTER_QCM_RF,\n", " 8: ClusterType.CLUSTER_QRM_RF,\n", " }\n", " if cluster_ip is None\n", " else None\n", " ),\n", ")" ] }, { "cell_type": "markdown", "id": "0792b632", "metadata": {}, "source": [ "### Quantum device settings\n", "Here we initialize our `QuantumDevice` and our qubit parameters, checkout this [tutorial](https://quantify-os.org/docs/quantify-scheduler/tutorials/Operations%20and%20Qubits.html) for further details.\n", "\n", "In short, a `QuantumDevice` contains device elements where we save our found parameters. Here we are loading a template for 2 qubits, but we will only use qubit 0." ] }, { "cell_type": "code", "execution_count": 6, "id": "da95a2a6", "metadata": { "execution": { "iopub.execute_input": "2024-09-02T01:45:32.384335Z", "iopub.status.busy": "2024-09-02T01:45:32.384138Z", "iopub.status.idle": "2024-09-02T01:45:32.396090Z", "shell.execute_reply": "2024-09-02T01:45:32.395418Z" } }, "outputs": [], "source": [ "quantum_device = QuantumDevice.from_json_file(\"devices/transmon_device_2q.json\")\n", "qubit = quantum_device.get_element(\"q0\")\n", "quantum_device.hardware_config(hardware_cfg)" ] }, { "cell_type": "markdown", "id": "8f8be318", "metadata": { "lines_to_next_cell": 2 }, "source": [ "### Configure measurement control loop\n", "We will use a `MeasurementControl` object for data acquisition as well as an `InstrumentCoordinator` for controlling the instruments in our setup.\n", "\n", "The `PlotMonitor` is used for live plotting.\n", "\n", "All of these are then associated with the `QuantumDevice`." ] }, { "cell_type": "code", "execution_count": 7, "id": "d0e18765", "metadata": { "execution": { "iopub.execute_input": "2024-09-02T01:45:32.398449Z", "iopub.status.busy": "2024-09-02T01:45:32.398255Z", "iopub.status.idle": "2024-09-02T01:45:32.405378Z", "shell.execute_reply": "2024-09-02T01:45:32.404736Z" } }, "outputs": [], "source": [ "def configure_measurement_control_loop(\n", " device: QuantumDevice, cluster: Cluster, live_plotting: bool = False\n", ") -> tuple[MeasurementControl, InstrumentCoordinator]:\n", " meas_ctrl = find_or_create_instrument(MeasurementControl, recreate=True, name=\"meas_ctrl\")\n", " ic = find_or_create_instrument(InstrumentCoordinator, recreate=True, name=\"ic\")\n", "\n", " # Add cluster to instrument coordinator\n", " ic_cluster = ClusterComponent(cluster)\n", " ic.add_component(ic_cluster)\n", "\n", " if live_plotting:\n", " # Associate plot monitor with measurement controller\n", " plotmon = find_or_create_instrument(PlotMonitor, recreate=False, name=\"PlotMonitor\")\n", " meas_ctrl.instr_plotmon(plotmon.name)\n", "\n", " # Associate measurement controller and instrument coordinator with the quantum device\n", " device.instr_measurement_control(meas_ctrl.name)\n", " device.instr_instrument_coordinator(ic.name)\n", "\n", " return (meas_ctrl, ic)\n", "\n", "\n", "meas_ctrl, instrument_coordinator = configure_measurement_control_loop(quantum_device, cluster)" ] }, { "cell_type": "markdown", "id": "932748d7", "metadata": { "lines_to_next_cell": 0, "title": "BODY" }, "source": [ "## Resonator Spectroscopy" ] }, { "cell_type": "code", "execution_count": 8, "id": "6fc4cae3", "metadata": { "execution": { "iopub.execute_input": "2024-09-02T01:45:32.407628Z", "iopub.status.busy": "2024-09-02T01:45:32.407426Z", "iopub.status.idle": "2024-09-02T01:45:32.412990Z", "shell.execute_reply": "2024-09-02T01:45:32.412376Z" }, "lines_to_next_cell": 0 }, "outputs": [], "source": [ "def resonator_spectroscopy_schedule(\n", " qubit, freqs: np.array, repetitions: int = 1 # noqa: ANN001\n", ") -> Schedule:\n", " \"\"\"Schedule to sweep the resonator frequency.\"\"\"\n", " sched = Schedule(\"schedule\", repetitions=repetitions)\n", " for i, freq in enumerate(freqs):\n", " sched.add(\n", " Measure(\n", " qubit.name,\n", " acq_index=i,\n", " freq=freq,\n", " )\n", " )\n", " sched.add(IdlePulse(8e-9))\n", " return sched\n", "\n", "\n", "freqs = ManualParameter(name=\"freq\", unit=\"Hz\", label=\"Frequency\")\n", "freqs.batched = True\n", "freqs.batch_size = 100\n", "\n", "spec_sched_kwargs = dict(\n", " qubit=qubit,\n", " freqs=freqs,\n", ")\n", "gettable = ScheduleGettable(\n", " quantum_device,\n", " schedule_function=resonator_spectroscopy_schedule,\n", " schedule_kwargs=spec_sched_kwargs,\n", " real_imag=False,\n", " batched=True,\n", ")\n", "\n", "meas_ctrl.gettables(gettable)" ] }, { "cell_type": "code", "execution_count": 9, "id": "be43f66b", "metadata": { "execution": { "iopub.execute_input": "2024-09-02T01:45:32.415121Z", "iopub.status.busy": "2024-09-02T01:45:32.414930Z", "iopub.status.idle": "2024-09-02T01:45:33.138171Z", "shell.execute_reply": "2024-09-02T01:45:33.137457Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Starting batched measurement...\n", "Iterative settable(s) [outer loop(s)]:\n", "\t --- (None) --- \n", "Batched settable(s):\n", "\t freq \n", "Batch size limit: 100\n", "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python3.9/site-packages/quantify_scheduler/backends/types/qblox.py:1220: ValidationWarning: Setting `auto_lo_cal=on_lo_interm_freq_change` will overwrite settings `dc_offset_i=0.0` and `dc_offset_q=0.0`. To suppress this warning, do not set either `dc_offset_i` or `dc_offset_q` for this port-clock.\n", " warnings.warn(\n", "/usr/local/lib/python3.9/site-packages/quantify_scheduler/backends/types/qblox.py:1235: ValidationWarning: Setting `auto_sideband_cal=on_interm_freq_change` will overwrite settings `amp_ratio=1.0` and `phase_error=0.0`. To suppress this warning, do not set either `amp_ratio` or `phase_error` for this port-clock.\n", " warnings.warn(\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python3.9/site-packages/quantify_scheduler/backends/types/qblox.py:1235: ValidationWarning: Setting `auto_sideband_cal=on_interm_freq_change` will overwrite settings `amp_ratio=1.0` and `phase_error=0.0`. To suppress this warning, do not set either `amp_ratio` or `phase_error` for this port-clock.\n", " warnings.warn(\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "17a709d2f84a4f508b9311e66e36f73a", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Completed: 0%| [ elapsed time: 00:00 | time left: ? ] it" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python3.9/site-packages/quantify_scheduler/backends/types/qblox.py:1235: ValidationWarning: Setting `auto_sideband_cal=on_interm_freq_change` will overwrite settings `amp_ratio=1.0` and `phase_error=0.0`. To suppress this warning, do not set either `amp_ratio` or `phase_error` for this port-clock.\n", " warnings.warn(\n" ] }, { "data": { "text/html": [ "
<xarray.Dataset> Size: 7kB\n", "Dimensions: (dim_0: 300)\n", "Coordinates:\n", " x0 (dim_0) float64 2kB 7.68e+09 7.68e+09 ... 7.72e+09 7.72e+09\n", "Dimensions without coordinates: dim_0\n", "Data variables:\n", " y0 (dim_0) float64 2kB nan nan nan nan nan nan ... nan nan nan nan nan\n", " y1 (dim_0) float64 2kB nan nan nan nan nan nan ... nan nan nan nan nan\n", "Attributes:\n", " tuid: 20240902-014532-417-6cbfd1\n", " name: resonator spectroscopy\n", " grid_2d: False\n", " grid_2d_uniformly_spaced: False\n", " 1d_2_settables_uniformly_spaced: False
<xarray.Dataset> Size: 32kB\n", "Dimensions: (dim_0: 1000)\n", "Coordinates:\n", " x0 (dim_0) float64 8kB 7.68e+09 7.68e+09 ... 7.72e+09 7.72e+09\n", " x1 (dim_0) float64 8kB 0.0 0.0 0.0 0.0 0.0 0.0 ... 1.0 1.0 1.0 1.0 1.0\n", "Dimensions without coordinates: dim_0\n", "Data variables:\n", " y0 (dim_0) float64 8kB nan nan nan nan nan nan ... nan nan nan nan nan\n", " y1 (dim_0) float64 8kB nan nan nan nan nan nan ... nan nan nan nan nan\n", "Attributes:\n", " tuid: 20240902-014533-157-d73c12\n", " name: resonator punchout\n", " grid_2d: True\n", " grid_2d_uniformly_spaced: True\n", " 1d_2_settables_uniformly_spaced: False\n", " xlen: 100\n", " ylen: 10
{\n", " 'config_type': 'quantify_scheduler.backends.qblox_backend.QbloxHardwareCompilationConfig',\n", " 'hardware_description': {\n", " 'cluster0': {\n", " 'instrument_type': 'Cluster',\n", " 'modules': {\n", " '6': {'instrument_type': 'QCM_RF'},\n", " '2': {'instrument_type': 'QCM'},\n", " '8': {'instrument_type': 'QRM_RF'}\n", " },\n", " 'sequence_to_file': False,\n", " 'ref': 'internal'\n", " }\n", " },\n", " 'hardware_options': {\n", " 'output_att': {'q0:mw-q0.01': 10, 'q1:mw-q1.01': 10, 'q0:res-q0.ro': 60, 'q1:res-q1.ro': 60},\n", " 'mixer_corrections': {\n", " 'q0:mw-q0.01': {\n", " 'auto_lo_cal': 'on_lo_interm_freq_change',\n", " 'auto_sideband_cal': 'on_interm_freq_change',\n", " 'dc_offset_i': None,\n", " 'dc_offset_q': None,\n", " 'amp_ratio': 1.0,\n", " 'phase_error': 0.0\n", " },\n", " 'q1:mw-q1.01': {\n", " 'auto_lo_cal': 'on_lo_interm_freq_change',\n", " 'auto_sideband_cal': 'on_interm_freq_change',\n", " 'dc_offset_i': None,\n", " 'dc_offset_q': None,\n", " 'amp_ratio': 1.0,\n", " 'phase_error': 0.0\n", " },\n", " 'q0:res-q0.ro': {\n", " 'auto_lo_cal': 'on_lo_interm_freq_change',\n", " 'auto_sideband_cal': 'on_interm_freq_change',\n", " 'dc_offset_i': None,\n", " 'dc_offset_q': None,\n", " 'amp_ratio': 1.0,\n", " 'phase_error': 0.0\n", " },\n", " 'q1:res-q1.ro': {\n", " 'auto_lo_cal': 'on_lo_interm_freq_change',\n", " 'auto_sideband_cal': 'on_interm_freq_change',\n", " 'dc_offset_i': None,\n", " 'dc_offset_q': None,\n", " 'amp_ratio': 1.0,\n", " 'phase_error': 0.0\n", " }\n", " },\n", " 'modulation_frequencies': {\n", " 'q0:mw-q0.01': {'interm_freq': 80000000.0},\n", " 'q1:mw-q1.01': {'interm_freq': 80000000.0},\n", " 'q0:res-q0.ro': {'lo_freq': 7500000000.0},\n", " 'q1:res-q1.ro': {'lo_freq': 7500000000.0}\n", " }\n", " },\n", " 'connectivity': {\n", " 'graph': [\n", " ['cluster0.module6.complex_output_0', 'q0:mw'],\n", " ['cluster0.module6.complex_output_1', 'q1:mw'],\n", " ['cluster0.module2.real_output_0', 'q0:fl'],\n", " ['cluster0.module2.real_output_1', 'q1:fl'],\n", " ['cluster0.module8.complex_output_0', 'q0:res'],\n", " ['cluster0.module8.complex_output_0', 'q1:res']\n", " ]\n", " }\n", "}\n", "\n" ], "text/plain": [ "\u001b[1m{\u001b[0m\n", " \u001b[32m'config_type'\u001b[0m: \u001b[32m'quantify_scheduler.backends.qblox_backend.QbloxHardwareCompilationConfig'\u001b[0m,\n", " \u001b[32m'hardware_description'\u001b[0m: \u001b[1m{\u001b[0m\n", " \u001b[32m'cluster0'\u001b[0m: \u001b[1m{\u001b[0m\n", " \u001b[32m'instrument_type'\u001b[0m: \u001b[32m'Cluster'\u001b[0m,\n", " \u001b[32m'modules'\u001b[0m: \u001b[1m{\u001b[0m\n", " \u001b[32m'6'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'instrument_type'\u001b[0m: \u001b[32m'QCM_RF'\u001b[0m\u001b[1m}\u001b[0m,\n", " \u001b[32m'2'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'instrument_type'\u001b[0m: \u001b[32m'QCM'\u001b[0m\u001b[1m}\u001b[0m,\n", " \u001b[32m'8'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'instrument_type'\u001b[0m: \u001b[32m'QRM_RF'\u001b[0m\u001b[1m}\u001b[0m\n", " \u001b[1m}\u001b[0m,\n", " \u001b[32m'sequence_to_file'\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n", " \u001b[32m'ref'\u001b[0m: \u001b[32m'internal'\u001b[0m\n", " \u001b[1m}\u001b[0m\n", " \u001b[1m}\u001b[0m,\n", " \u001b[32m'hardware_options'\u001b[0m: \u001b[1m{\u001b[0m\n", " \u001b[32m'output_att'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'q0:mw-q0.01'\u001b[0m: \u001b[1;36m10\u001b[0m, \u001b[32m'q1:mw-q1.01'\u001b[0m: \u001b[1;36m10\u001b[0m, \u001b[32m'q0:res-q0.ro'\u001b[0m: \u001b[1;36m60\u001b[0m, \u001b[32m'q1:res-q1.ro'\u001b[0m: \u001b[1;36m60\u001b[0m\u001b[1m}\u001b[0m,\n", " \u001b[32m'mixer_corrections'\u001b[0m: \u001b[1m{\u001b[0m\n", " \u001b[32m'q0:mw-q0.01'\u001b[0m: \u001b[1m{\u001b[0m\n", " \u001b[32m'auto_lo_cal'\u001b[0m: \u001b[32m'on_lo_interm_freq_change'\u001b[0m,\n", " \u001b[32m'auto_sideband_cal'\u001b[0m: \u001b[32m'on_interm_freq_change'\u001b[0m,\n", " \u001b[32m'dc_offset_i'\u001b[0m: \u001b[3;35mNone\u001b[0m,\n", " \u001b[32m'dc_offset_q'\u001b[0m: \u001b[3;35mNone\u001b[0m,\n", " \u001b[32m'amp_ratio'\u001b[0m: \u001b[1;36m1.0\u001b[0m,\n", " \u001b[32m'phase_error'\u001b[0m: \u001b[1;36m0.0\u001b[0m\n", " \u001b[1m}\u001b[0m,\n", " \u001b[32m'q1:mw-q1.01'\u001b[0m: \u001b[1m{\u001b[0m\n", " \u001b[32m'auto_lo_cal'\u001b[0m: \u001b[32m'on_lo_interm_freq_change'\u001b[0m,\n", " \u001b[32m'auto_sideband_cal'\u001b[0m: \u001b[32m'on_interm_freq_change'\u001b[0m,\n", " \u001b[32m'dc_offset_i'\u001b[0m: \u001b[3;35mNone\u001b[0m,\n", " \u001b[32m'dc_offset_q'\u001b[0m: \u001b[3;35mNone\u001b[0m,\n", " \u001b[32m'amp_ratio'\u001b[0m: \u001b[1;36m1.0\u001b[0m,\n", " \u001b[32m'phase_error'\u001b[0m: \u001b[1;36m0.0\u001b[0m\n", " \u001b[1m}\u001b[0m,\n", " \u001b[32m'q0:res-q0.ro'\u001b[0m: \u001b[1m{\u001b[0m\n", " \u001b[32m'auto_lo_cal'\u001b[0m: \u001b[32m'on_lo_interm_freq_change'\u001b[0m,\n", " \u001b[32m'auto_sideband_cal'\u001b[0m: \u001b[32m'on_interm_freq_change'\u001b[0m,\n", " \u001b[32m'dc_offset_i'\u001b[0m: \u001b[3;35mNone\u001b[0m,\n", " \u001b[32m'dc_offset_q'\u001b[0m: \u001b[3;35mNone\u001b[0m,\n", " \u001b[32m'amp_ratio'\u001b[0m: \u001b[1;36m1.0\u001b[0m,\n", " \u001b[32m'phase_error'\u001b[0m: \u001b[1;36m0.0\u001b[0m\n", " \u001b[1m}\u001b[0m,\n", " \u001b[32m'q1:res-q1.ro'\u001b[0m: \u001b[1m{\u001b[0m\n", " \u001b[32m'auto_lo_cal'\u001b[0m: \u001b[32m'on_lo_interm_freq_change'\u001b[0m,\n", " \u001b[32m'auto_sideband_cal'\u001b[0m: \u001b[32m'on_interm_freq_change'\u001b[0m,\n", " \u001b[32m'dc_offset_i'\u001b[0m: \u001b[3;35mNone\u001b[0m,\n", " \u001b[32m'dc_offset_q'\u001b[0m: \u001b[3;35mNone\u001b[0m,\n", " \u001b[32m'amp_ratio'\u001b[0m: \u001b[1;36m1.0\u001b[0m,\n", " \u001b[32m'phase_error'\u001b[0m: \u001b[1;36m0.0\u001b[0m\n", " \u001b[1m}\u001b[0m\n", " \u001b[1m}\u001b[0m,\n", " \u001b[32m'modulation_frequencies'\u001b[0m: \u001b[1m{\u001b[0m\n", " \u001b[32m'q0:mw-q0.01'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'interm_freq'\u001b[0m: \u001b[1;36m80000000.0\u001b[0m\u001b[1m}\u001b[0m,\n", " \u001b[32m'q1:mw-q1.01'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'interm_freq'\u001b[0m: \u001b[1;36m80000000.0\u001b[0m\u001b[1m}\u001b[0m,\n", " \u001b[32m'q0:res-q0.ro'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'lo_freq'\u001b[0m: \u001b[1;36m7500000000.0\u001b[0m\u001b[1m}\u001b[0m,\n", " \u001b[32m'q1:res-q1.ro'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'lo_freq'\u001b[0m: \u001b[1;36m7500000000.0\u001b[0m\u001b[1m}\u001b[0m\n", " \u001b[1m}\u001b[0m\n", " \u001b[1m}\u001b[0m,\n", " \u001b[32m'connectivity'\u001b[0m: \u001b[1m{\u001b[0m\n", " \u001b[32m'graph'\u001b[0m: \u001b[1m[\u001b[0m\n", " \u001b[1m[\u001b[0m\u001b[32m'cluster0.module6.complex_output_0'\u001b[0m, \u001b[32m'q0:mw'\u001b[0m\u001b[1m]\u001b[0m,\n", " \u001b[1m[\u001b[0m\u001b[32m'cluster0.module6.complex_output_1'\u001b[0m, \u001b[32m'q1:mw'\u001b[0m\u001b[1m]\u001b[0m,\n", " \u001b[1m[\u001b[0m\u001b[32m'cluster0.module2.real_output_0'\u001b[0m, \u001b[32m'q0:fl'\u001b[0m\u001b[1m]\u001b[0m,\n", " \u001b[1m[\u001b[0m\u001b[32m'cluster0.module2.real_output_1'\u001b[0m, \u001b[32m'q1:fl'\u001b[0m\u001b[1m]\u001b[0m,\n", " \u001b[1m[\u001b[0m\u001b[32m'cluster0.module8.complex_output_0'\u001b[0m, \u001b[32m'q0:res'\u001b[0m\u001b[1m]\u001b[0m,\n", " \u001b[1m[\u001b[0m\u001b[32m'cluster0.module8.complex_output_0'\u001b[0m, \u001b[32m'q1:res'\u001b[0m\u001b[1m]\u001b[0m\n", " \u001b[1m]\u001b[0m\n", " \u001b[1m}\u001b[0m\n", "\u001b[1m}\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\n", "\n", "rich.print(quantum_device.hardware_config())" ] }, { "cell_type": "code", "execution_count": 14, "id": "1400fab3", "metadata": { "execution": { "iopub.execute_input": "2024-09-02T01:45:34.752110Z", "iopub.status.busy": "2024-09-02T01:45:34.751930Z", "iopub.status.idle": "2024-09-02T01:45:34.757686Z", "shell.execute_reply": "2024-09-02T01:45:34.757057Z" } }, "outputs": [ { "data": { "text/plain": [ "'devices/device_2q_2024-09-02_01-45-34_UTC.json'" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "quantum_device.to_json_file(\"devices/\")" ] } ], "metadata": { "files_to_bundle_in_zip_file": [ "figures/S21-MagnPhase.svg", "figures/punchout.svg", "configs/tuning_transmon_coupled_pair_hardware_config.json", "devices/transmon_device_2q.json" ], "jupytext": { "main_language": "python", "notebook_metadata_filter": "files_to_bundle_in_zip_file" }, "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.9.19" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "09ee57c4c5494815b2f5d1818c7c3611": { "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 } }, "0d14e5b223934fb08d04c40429271892": { "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_feaaa54c1a77441987835c3dc8066e93", "placeholder": "", "style": "IPY_MODEL_168efbc863e54bed87c67a37e5ea5a0d", "tabbable": null, "tooltip": null, "value": " [ elapsed time: 00:00 | time left: 00:00 ] last batch size: 100" } }, "0d25608c3c224f289fddec74f5dd21d4": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_09ee57c4c5494815b2f5d1818c7c3611", "max": 100.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_7e91226d4621485a97b0421cd817ee2c", "tabbable": null, "tooltip": null, "value": 100.0 } }, "10dc3c0d01ec4b0b916254048fc70768": { "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_9b59703dda8448c29f7b9989bdceb1a3", "placeholder": "", "style": "IPY_MODEL_1fe144a58b76437b8681ce12fce87649", "tabbable": null, "tooltip": null, "value": "Completed: 100%" } }, "168efbc863e54bed87c67a37e5ea5a0d": { "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 } }, "17a709d2f84a4f508b9311e66e36f73a": { "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_5f43ef3aa9b54dcc809d967af61e71b6", "IPY_MODEL_0d25608c3c224f289fddec74f5dd21d4", "IPY_MODEL_0d14e5b223934fb08d04c40429271892" ], "layout": "IPY_MODEL_b6c8f7b27e044b2688f293125739784d", "tabbable": null, "tooltip": null } }, "1edf8e66989243338034055b7a9b3323": { "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 } }, "1fe144a58b76437b8681ce12fce87649": { "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 } }, "2a7539dbed7b4388914bf47091fc8d33": { "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 } }, "2fad8f5731a44015a01ed2bc8c0aee63": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_c815be5d0cff4ecb929c4411189fa841", "max": 100.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_e6b2430f33774be782160ca8d9e17f1f", "tabbable": null, "tooltip": null, "value": 100.0 } }, "3907ad9eeb7240589929335b833ff03e": { "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 } }, "5c15da449ec04d4086177ce6b2ffb730": { "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_3907ad9eeb7240589929335b833ff03e", "placeholder": "", "style": "IPY_MODEL_d0015cb60dfb40f2be7b7f9c1b595d36", "tabbable": null, "tooltip": null, "value": " [ elapsed time: 00:00 | time left: 00:00 ] last batch size: 1000" } }, "5f43ef3aa9b54dcc809d967af61e71b6": { "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_f7a8fc97d239421fa1e4042b305bbef8", "placeholder": "", "style": "IPY_MODEL_1edf8e66989243338034055b7a9b3323", "tabbable": null, "tooltip": null, "value": "Completed: 100%" } }, "7e91226d4621485a97b0421cd817ee2c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "9b59703dda8448c29f7b9989bdceb1a3": { "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 } }, "b6c8f7b27e044b2688f293125739784d": { "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 } }, "c1c3894bab82464595a9f46802adb56a": { "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_10dc3c0d01ec4b0b916254048fc70768", "IPY_MODEL_2fad8f5731a44015a01ed2bc8c0aee63", "IPY_MODEL_5c15da449ec04d4086177ce6b2ffb730" ], "layout": "IPY_MODEL_2a7539dbed7b4388914bf47091fc8d33", "tabbable": null, "tooltip": null } }, "c815be5d0cff4ecb929c4411189fa841": { "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 } }, "d0015cb60dfb40f2be7b7f9c1b595d36": { "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 } }, "e6b2430f33774be782160ca8d9e17f1f": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "f7a8fc97d239421fa1e4042b305bbef8": { "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 } }, "feaaa54c1a77441987835c3dc8066e93": { "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 } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 }