From 476b53837c49f4375c3cf2b3571d71925cfef622 Mon Sep 17 00:00:00 2001 From: KU-QM Date: Tue, 21 Jul 2026 17:51:34 +0100 Subject: [PATCH 01/35] Add files from pr/qd-ld-02-resonator-spectroscopy --- .../resonator_spectroscopy/__init__.py | 14 + .../resonator_spectroscopy/analysis.py | 115 +++++++ .../resonator_spectroscopy/parameters.py | 31 ++ .../resonator_spectroscopy/plotting.py | 153 +++++++++ .../simulated_data_generator.py | 92 +++++ .../__init__.py | 13 + .../analysis.py | 149 ++++++++ .../parameters.py | 38 +++ .../plotting.py | 63 ++++ .../simulated_data_generator.py | 88 +++++ .../__init__.py | 13 + .../analysis.py | 172 ++++++++++ .../parameters.py | 45 +++ .../plotting.py | 94 ++++++ .../simulated_data_generator.py | 108 ++++++ .../02a_resonator_spectroscopy.py | 262 +++++++++++++++ .../02b_resonator_spectroscopy_vs_power.py | 317 ++++++++++++++++++ .../02c_resonator_spectroscopy_vs_detuning.py | 282 ++++++++++++++++ .../02a_resonator_spectroscopy/README.md | 58 ++++ .../02a_resonator_spectroscopy/README.md | 74 ++++ .../02a_resonator_spectroscopy/amplitude.png | Bin 0 -> 127325 bytes .../02a_resonator_spectroscopy/phase.png | Bin 0 -> 103736 bytes .../README.md | 85 +++++ .../amplitude.png | Bin 0 -> 310510 bytes .../02a_resonator_spectroscopy/README.md | 46 +++ .../02a_resonator_spectroscopy/simulation.png | Bin 0 -> 36294 bytes .../README.md | 56 ++++ .../simulation.png | Bin 0 -> 43437 bytes 28 files changed, 2368 insertions(+) create mode 100644 qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy/__init__.py create mode 100644 qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy/analysis.py create mode 100644 qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy/parameters.py create mode 100644 qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy/plotting.py create mode 100644 qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy/simulated_data_generator.py create mode 100644 qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_detuning/__init__.py create mode 100644 qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_detuning/analysis.py create mode 100644 qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_detuning/parameters.py create mode 100644 qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_detuning/plotting.py create mode 100644 qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_detuning/simulated_data_generator.py create mode 100644 qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_power/__init__.py create mode 100644 qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_power/analysis.py create mode 100644 qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_power/parameters.py create mode 100644 qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_power/plotting.py create mode 100644 qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_power/simulated_data_generator.py create mode 100644 qualibration_graphs/quantum_dots/calibrations/loss_divincenzo/02a_resonator_spectroscopy.py create mode 100644 qualibration_graphs/quantum_dots/calibrations/loss_divincenzo/02b_resonator_spectroscopy_vs_power.py create mode 100644 qualibration_graphs/quantum_dots/calibrations/loss_divincenzo/02c_resonator_spectroscopy_vs_detuning.py create mode 100644 tests/analysis/artifacts/02a_resonator_spectroscopy/README.md create mode 100644 tests/execute/artifacts/02a_resonator_spectroscopy/README.md create mode 100644 tests/execute/artifacts/02a_resonator_spectroscopy/amplitude.png create mode 100644 tests/execute/artifacts/02a_resonator_spectroscopy/phase.png create mode 100644 tests/execute/artifacts/02b_resonator_spectroscopy_vs_power/README.md create mode 100644 tests/execute/artifacts/02b_resonator_spectroscopy_vs_power/amplitude.png create mode 100644 tests/simulation/artifacts/02a_resonator_spectroscopy/README.md create mode 100644 tests/simulation/artifacts/02a_resonator_spectroscopy/simulation.png create mode 100644 tests/simulation/artifacts/02b_resonator_spectroscopy_vs_power/README.md create mode 100644 tests/simulation/artifacts/02b_resonator_spectroscopy_vs_power/simulation.png diff --git a/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy/__init__.py b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy/__init__.py new file mode 100644 index 000000000..f40cfc8dc --- /dev/null +++ b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy/__init__.py @@ -0,0 +1,14 @@ +from .parameters import Parameters +from .analysis import process_raw_dataset, fit_raw_data, log_fitted_results +from .plotting import plot_raw_phase, plot_raw_amplitude_with_fit +from .simulated_data_generator import generate_simulated_dataset + +__all__ = [ + "Parameters", + "process_raw_dataset", + "fit_raw_data", + "log_fitted_results", + "plot_raw_phase", + "plot_raw_amplitude_with_fit", + "generate_simulated_dataset", +] diff --git a/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy/analysis.py b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy/analysis.py new file mode 100644 index 000000000..e9bd097c4 --- /dev/null +++ b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy/analysis.py @@ -0,0 +1,115 @@ +import logging +from dataclasses import dataclass +from typing import Tuple, Dict +import numpy as np +import xarray as xr + +from qualibrate.core import QualibrationNode +from qualibration_libs.data import add_amplitude_and_phase +from qualibration_libs.analysis import peaks_dips + + +@dataclass +class FitParameters: + """Stores the relevant resonator spectroscopy experiment fit parameters for a single sensor""" + + frequency: float + fwhm: float + success: bool + + +def log_fitted_results(fit_results: Dict, log_callable=None): + """ + Logs the node-specific fitted results for all sensors from the fit results + Parameters: + ----------- + fit_results : dict + Dictionary containing the fitted results for all sensors. + logger : logging.Logger, optional + Logger for logging the fitted results. If None, a default logger is used. + """ + if log_callable is None: + log_callable = logging.getLogger(__name__).info + for q in fit_results.keys(): + s_sensor = f"Results for sensor {q}: " + s_freq = ( + f"\tResonator frequency: {1e-9 * fit_results[q]['frequency']:.3f} GHz | " + ) + s_fwhm = f"FWHM: {1e-3 * fit_results[q]['fwhm']:.1f} kHz | " + if fit_results[q]["success"]: + s_sensor += " SUCCESS!\n" + else: + s_sensor += " FAIL!\n" + log_callable(s_sensor + s_freq + s_fwhm) + + +def process_raw_dataset(ds: xr.Dataset, node: QualibrationNode): + """Process raw dataset to add amplitude and phase information.""" + ds = add_amplitude_and_phase(ds, "detuning", subtract_slope_flag=True) + full_freq = np.array( + [ + ds.detuning + q.readout_resonator.intermediate_frequency + for q in node.namespace["sensors"] + ] + ) + ds = ds.assign_coords(full_freq=(["sensors", "detuning"], full_freq)) + ds.full_freq.attrs = {"long_name": "RF frequency", "units": "Hz"} + return ds + + +def fit_raw_data( + ds: xr.Dataset, node: QualibrationNode +) -> Tuple[xr.Dataset, dict[str, FitParameters]]: + """ + Fit the resonator dip for each sensor and return the resonance frequency and FWHM. + + Parameters: + ----------- + ds : xr.Dataset + Dataset containing the raw data. + node : QualibrationNode + The QUAlibrate node. + + Returns: + -------- + xr.Dataset + Dataset containing the fit results. + """ + # Fit the resonator line + fit_results = peaks_dips(ds.IQ_abs, "detuning") + # Extract the relevant fitted parameters + fit_data, fit_results = _extract_relevant_fit_parameters(fit_results, node) + return fit_data, fit_results + + +def _extract_relevant_fit_parameters(fit: xr.Dataset, node: QualibrationNode): + """Add metadata to the dataset and fit results.""" + full_freq = np.array( + [q.readout_resonator.intermediate_frequency for q in node.namespace["sensors"]] + ) + res_freq = fit.position + full_freq + fit = fit.assign_coords(res_freq=("sensors", res_freq.data)) + fit.res_freq.attrs = {"long_name": "resonator frequency", "units": "Hz"} + # Get the fitted FWHM + fwhm = np.abs(fit.width) + fit = fit.assign_coords(fwhm=("sensors", fwhm.data)) + fit.fwhm.attrs = {"long_name": "resonator fwhm", "units": "Hz"} + # Assess whether the fit was successful or not + freq_success = ( + np.abs(res_freq.data) < node.parameters.frequency_span_in_mhz * 1e6 + full_freq + ) + fwhm_success = ( + np.abs(fwhm.data) < node.parameters.frequency_span_in_mhz * 1e6 + full_freq + ) + success_criteria = freq_success & fwhm_success + fit = fit.assign_coords(success=("sensors", success_criteria)) + + fit_results = { + q: FitParameters( + frequency=fit.sel(sensors=q).res_freq.values.__float__(), + fwhm=fit.sel(sensors=q).fwhm.values.__float__(), + success=fit.sel(sensors=q).success.values.__bool__(), + ) + for q in fit.sensors.values + } + return fit, fit_results diff --git a/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy/parameters.py b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy/parameters.py new file mode 100644 index 000000000..f29056619 --- /dev/null +++ b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy/parameters.py @@ -0,0 +1,31 @@ +from qualibrate.core import NodeParameters +from qualibrate.core.parameters import RunnableParameters +from calibration_utils.common_utils.experiment import BaseExperimentNodeParameters +from qualibration_libs.parameters import CommonNodeParameters +from calibration_utils.run_video_mode.video_mode_specific_parameters import ( + VideoModeCommonParameters, +) + +from typing import List, Optional + + +class NodeSpecificParameters(RunnableParameters): + num_shots: int = 100 + """Number of averages to perform. Default is 100.""" + frequency_span_in_mhz: int = 30 + """Span of frequencies to sweep in MHz. Default is 30 MHz.""" + frequency_step_in_mhz: float = 0.1 + """Step size for frequency sweep in MHz. Default is 0.1 MHz.""" + sensor_names: Optional[List[str]] = None + """The list of sensor dot names to be included in the measurement. """ + use_simulated_data: bool = False + """Whether to generate simulated data instead of measuring via the OPX. Default False.""" + + +class Parameters( + NodeParameters, + BaseExperimentNodeParameters, + CommonNodeParameters, + NodeSpecificParameters, +): + pass diff --git a/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy/plotting.py b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy/plotting.py new file mode 100644 index 000000000..6d92e4587 --- /dev/null +++ b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy/plotting.py @@ -0,0 +1,153 @@ +from typing import List +import xarray as xr +from matplotlib.axes import Axes +from matplotlib.figure import Figure +import matplotlib.pyplot as plt + +from qualang_tools.units import unit +from qualibration_libs.analysis import lorentzian_dip + +u = unit(coerce_to_integer=True) + + +def plot_raw_phase(ds: xr.Dataset, sensors: List) -> Figure: + """ + Plots the raw phase data for the given sensors. + + Parameters + ---------- + ds : xr.Dataset + The dataset containing the quadrature data. + sensors : list + A list of sensors to plot. + + Returns + ------- + Figure + The matplotlib figure object containing the plots. + + Notes + ----- + - The function creates a grid of subplots, one for each sensor. + - Each subplot contains two x-axes: one for the full frequency in GHz and one for the detuning in MHz. + """ + num_sensors = len(sensors) + + fig, axes = plt.subplots( + 1, num_sensors, figsize=(5 * num_sensors, 4), squeeze=False + ) + axes = axes.flatten() + + for ax, sensor in zip(axes, sensors): + sensor_data = ds.sel(sensors=sensor.name) + + # Create a first x-axis for full_freq_GHz + ax.plot(sensor_data.full_freq / u.GHz, sensor_data.phase, "o-", markersize=2) + ax.set_xlabel("RF frequency [GHz]") + ax.set_ylabel("Phase [rad]") + ax.set_title(f"Sensor: {sensor.name}") + + # Create a second x-axis for detuning_MHz + ax2 = ax.twiny() + ax2.plot( + sensor_data.detuning / u.MHz, sensor_data.phase, "o-", markersize=2, alpha=0 + ) + ax2.set_xlabel("Detuning [MHz]") + + fig.suptitle("Resonator spectroscopy (phase)") + fig.tight_layout() + return fig + + +def plot_raw_amplitude_with_fit( + ds: xr.Dataset, sensors: List, fits: xr.Dataset = None +) -> Figure: + """ + Plots the resonator spectroscopy amplitude IQ_abs with fitted curves for the given sensors. + + Parameters + ---------- + ds : xr.Dataset + The dataset containing the quadrature data. + sensors : list + A list of sensor objects to plot. + fits : xr.Dataset + The dataset containing the fit parameters. + + Returns + ------- + Figure + The matplotlib figure object containing the plots. + """ + num_sensors = len(sensors) + fig, axes = plt.subplots( + 1, num_sensors, figsize=(5 * num_sensors, 4), squeeze=False + ) + axes = axes.flatten() + + for ax, sensor in zip(axes, sensors): + sensor_data = ds.sel(sensors=sensor.name) + fit_data = fits.sel(sensors=sensor.name) if fits is not None else None + + plot_individual_amplitude_with_fit(ax, sensor_data, sensor.name, fit_data) + + fig.suptitle("Resonator spectroscopy (amplitude + fit)") + fig.tight_layout() + return fig + + +def plot_individual_amplitude_with_fit( + ax: Axes, sensor_data: xr.Dataset, sensor_id: str, fit: xr.Dataset = None +): + """ + Plots individual sensor data on a given axis with optional fit. + + Parameters + ---------- + ax : matplotlib.axes.Axes + The axis on which to plot the data. + sensor_data : xr.Dataset + The dataset containing the sensor's quadrature data. + sensor_id : str + The sensor ID for the title. + fit : xr.Dataset, optional + The dataset containing the fit parameters (default is None). + """ + # Plot the amplitude data + ax.plot( + sensor_data.full_freq / u.GHz, + sensor_data.IQ_abs / u.mV, + "o-", + markersize=2, + label="Data", + ) + ax.set_xlabel("RF frequency [GHz]") + ax.set_ylabel(r"$R=\sqrt{I^2 + Q^2}$ [mV]") + ax.set_title(f"Sensor: {sensor_id}") + + # Create a second x-axis for detuning_MHz + ax2 = ax.twiny() + ax2.plot( + sensor_data.detuning / u.MHz, + sensor_data.IQ_abs / u.mV, + "o-", + markersize=2, + alpha=0, + ) + ax2.set_xlabel("Detuning [MHz]") + + # Plot the fitted data if available + if fit is not None and all( + k in fit for k in ["amplitude", "position", "width", "base_line"] + ): + fitted_data = lorentzian_dip( + sensor_data.detuning, + float(fit.amplitude.values), + float(fit.position.values), + float(fit.width.values) / 2, + float(fit.base_line.mean().values), + ) + ax2.plot(sensor_data.detuning / u.MHz, fitted_data / u.mV, "r--", label="Fit") + ax.legend() + + ax.grid(True, alpha=0.3) diff --git a/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy/simulated_data_generator.py b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy/simulated_data_generator.py new file mode 100644 index 000000000..8cadf8793 --- /dev/null +++ b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy/simulated_data_generator.py @@ -0,0 +1,92 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING + +import numpy as np +import xarray as xr +from qualang_tools.units import unit + +if TYPE_CHECKING: + from qualibrate.core import QualibrationNode + +from calibration_utils.common_utils.experiment import get_sensors + + +def generate_simulated_dataset(node: QualibrationNode) -> xr.Dataset: + """Generate simulated 1D resonator spectroscopy data. + + Models the complex reflection coefficient S11 of a notch-type + resonator: far from resonance the signal is close to the baseline; + on resonance there is both an amplitude dip and a ~pi phase swing. + Seeded standing-wave ripples are superimposed on the baseline to + mimic cable reflections. + + Parameters + ---------- + node : QualibrationNode + Calibration node whose ``parameters`` and ``machine`` are already set. + Writes ``sensors`` and ``sweep_axes`` into ``node.namespace``. + """ + u = unit(coerce_to_integer=True) + + node.namespace["sensors"] = sensors = get_sensors(node) + + span = node.parameters.frequency_span_in_mhz * u.MHz + step = node.parameters.frequency_step_in_mhz * u.MHz + dfs = np.arange(-span / 2, +span / 2, step) + + node.namespace["sweep_axes"] = { + "sensors": xr.DataArray(sensors.get_names()), + "detuning": xr.DataArray( + dfs, + attrs={"long_name": "readout frequency", "units": "Hz"}, + ), + } + + rng = np.random.default_rng(seed=42) + + I_data = [] + Q_data = [] + + for i, _sensor in enumerate(sensors): + dip_shift = rng.uniform(-span * 0.05, span * 0.05) + kappa = rng.uniform(0.5e6, 2e6) + coupling = 0.7 + + # Complex S11 of a notch resonator: + # S11(f) = 1 - coupling * kappa / (kappa/2 + j*(f - f0)) + # This gives an amplitude dip AND a phase swing through resonance. + delta = dfs - dip_shift + denom = kappa / 2 + 1j * delta + s11 = 1.0 - coupling * (kappa / 2) / denom + + baseline = 1e-3 * (1 + 0.1 * i) + + # Standing-wave ripples on the baseline (cable reflections) + ripple = np.zeros_like(dfs) + n_modes = rng.integers(2, 5) + for _ in range(n_modes): + period = rng.uniform(span * 0.1, span * 0.4) + ripple_amp = rng.uniform(0.02, 0.08) + ripple_phase = rng.uniform(0, 2 * np.pi) + ripple += ripple_amp * np.sin(2 * np.pi * dfs / period + ripple_phase) + + # Overall complex signal: baseline * (1 + ripple) * S11, rotated by + # an arbitrary cable phase. + cable_phase = rng.uniform(0, 2 * np.pi) + signal = baseline * (1 + ripple) * s11 * np.exp(1j * cable_phase) + + noise = 1e-5 + I_data.append(signal.real + rng.normal(0, noise, size=len(dfs))) + Q_data.append(signal.imag + rng.normal(0, noise, size=len(dfs))) + + sensor_names = sensors.get_names() + coords = {"sensors": sensor_names, "detuning": dfs} + dims = ["sensors", "detuning"] + + return xr.Dataset( + { + "I": xr.DataArray(I_data, dims=dims, coords=coords), + "Q": xr.DataArray(Q_data, dims=dims, coords=coords), + } + ) diff --git a/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_detuning/__init__.py b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_detuning/__init__.py new file mode 100644 index 000000000..384039d5f --- /dev/null +++ b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_detuning/__init__.py @@ -0,0 +1,13 @@ +from .parameters import Parameters +from .analysis import process_raw_dataset, fit_raw_data, log_fitted_results +from .plotting import plot_raw_data_with_fit +from .simulated_data_generator import generate_simulated_dataset + +__all__ = [ + "Parameters", + "process_raw_dataset", + "fit_raw_data", + "log_fitted_results", + "plot_raw_data_with_fit", + "generate_simulated_dataset", +] diff --git a/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_detuning/analysis.py b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_detuning/analysis.py new file mode 100644 index 000000000..8f1dc6f9c --- /dev/null +++ b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_detuning/analysis.py @@ -0,0 +1,149 @@ +import logging +from dataclasses import dataclass +from typing import Dict, Tuple + +import numpy as np +import xarray as xr + +from qualibrate.core import QualibrationNode +from qualibration_libs.data import add_amplitude_and_phase + + +@dataclass +class FitParameters: + """Relevant fit outputs for resonator spectroscopy vs detuning.""" + + success: bool + resonator_frequency: float + frequency_shift: float + optimal_detuning: float + peak_pca_signal: float + + +def log_fitted_results(fit_results: Dict, log_callable=None): + """Log fitted PCA-map optimal points for all sensors.""" + if log_callable is None: + log_callable = logging.getLogger(__name__).info + for sensor_name, result in fit_results.items(): + status = "SUCCESS!" if result["success"] else "FAIL!" + msg = ( + f"Results for sensor {sensor_name}: {status}\n" + f"Peak PCA signal: {result['peak_pca_signal']:.3e} | " + f"Optimal detuning: {result['optimal_detuning']:.4f} V | " + f"Resonator frequency: {1e-9 * result['resonator_frequency']:.3f} GHz " + f"(shift of {1e-6 * result['frequency_shift']:.2f} MHz)" + ) + log_callable(msg) + + +def process_raw_dataset(ds: xr.Dataset, node: QualibrationNode): + """Add derived IQ fields and absolute readout-frequency coordinate.""" + ds = add_amplitude_and_phase(ds, "frequency", subtract_slope_flag=True) + full_freq = np.array( + [ + ds.frequency + sensor.readout_resonator.intermediate_frequency + for sensor in node.namespace["sensors"] + ] + ) + ds = ds.assign_coords(full_freq=(["sensor", "frequency"], full_freq)) + ds.full_freq.attrs = {"long_name": "RF frequency", "units": "Hz"} + return ds + + +def fit_raw_data( + ds: xr.Dataset, node: QualibrationNode +) -> Tuple[xr.Dataset, dict[str, FitParameters]]: + """Compute a 2D PCA signal map and extract the peak point per sensor.""" + ds_fit = xr.Dataset(coords=ds.coords) + pca_signal = np.full(ds.I.shape, np.nan, dtype=float) + pca_signal_abs = np.full(ds.I.shape, np.nan, dtype=float) + + optimal_frequency_shift = np.full(len(ds.sensor), np.nan, dtype=float) + optimal_detuning = np.full(len(ds.sensor), np.nan, dtype=float) + peak_pca_signal = np.full(len(ds.sensor), np.nan, dtype=float) + + for i, sensor_name in enumerate(ds.sensor.values): + i_map = np.asarray(ds.I.sel(sensor=sensor_name).values, dtype=float) + q_map = np.asarray(ds.Q.sel(sensor=sensor_name).values, dtype=float) + + i_map = i_map - np.nanmean(i_map, axis = 1, keepdims=True) + q_map = q_map - np.nanmean(q_map, axis = 1, keepdims=True) + + i_flat = i_map.ravel() + q_flat = q_map.ravel() + finite_mask = np.isfinite(i_flat) & np.isfinite(q_flat) + if np.count_nonzero(finite_mask) < 2: + continue + + x = np.column_stack([i_flat[finite_mask], q_flat[finite_mask]]) + x_centered = x - np.mean(x, axis=0, keepdims=True) + cov = np.cov(x_centered, rowvar=False) + eigvals, eigvecs = np.linalg.eigh(cov) + pc1 = eigvecs[:, int(np.argmax(eigvals))] + + projection = x_centered @ pc1 + if np.abs(np.nanmin(projection)) > np.abs(np.nanmax(projection)): + projection = -projection + + proj_full = np.full(i_flat.shape, np.nan, dtype=float) + proj_full[finite_mask] = projection + proj_map = proj_full.reshape(i_map.shape) + + abs_map = np.abs(proj_map) + pca_signal[i] = proj_map + pca_signal_abs[i] = abs_map + + if np.any(np.isfinite(abs_map)): + max_index = np.unravel_index(np.nanargmax(abs_map), abs_map.shape) + freq_idx, det_idx = max_index + optimal_frequency_shift[i] = float(ds.frequency.values[freq_idx]) + optimal_detuning[i] = float(ds.detuning.values[det_idx]) + peak_pca_signal[i] = float(abs_map[max_index]) + + ds_fit["pca_signal"] = xr.DataArray( + pca_signal, dims=["sensor", "frequency", "detuning"], coords=ds.coords + ) + ds_fit["pca_signal_abs"] = xr.DataArray( + pca_signal_abs, dims=["sensor", "frequency", "detuning"], coords=ds.coords + ) + + ds_fit = ds_fit.assign_coords( + { + "optimal_frequency_shift": ("sensor", optimal_frequency_shift), + "optimal_detuning": ("sensor", optimal_detuning), + "peak_pca_signal": ("sensor", peak_pca_signal), + } + ) + return _extract_relevant_fit_parameters(ds_fit, node) + + +def _extract_relevant_fit_parameters(fit: xr.Dataset, node: QualibrationNode): + """Add final coordinates and build fit-result dictionary.""" + intermediate_freq = np.array( + [sensor.readout_resonator.intermediate_frequency for sensor in node.namespace["sensors"]] + ) + res_freq = fit.optimal_frequency_shift.data + intermediate_freq + fit = fit.assign_coords(res_freq=("sensor", res_freq)) + fit.res_freq.attrs = {"long_name": "resonator frequency", "units": "Hz"} + + span_hz = node.parameters.frequency_span_in_mhz * 1e6 + freq_success = np.abs(fit.optimal_frequency_shift.data) <= span_hz / 2.0 + finite_success = np.isfinite(fit.optimal_frequency_shift.data) & np.isfinite( + fit.optimal_detuning.data + ) + success_criteria = freq_success & finite_success + fit = fit.assign_coords(success=("sensor", success_criteria)) + + fit_results = { + sensor_name: FitParameters( + success=bool(fit.sel(sensor=sensor_name).success.values), + resonator_frequency=float(fit.res_freq.sel(sensor=sensor_name).values), + frequency_shift=float( + fit.optimal_frequency_shift.sel(sensor=sensor_name).values + ), + optimal_detuning=float(fit.optimal_detuning.sel(sensor=sensor_name).values), + peak_pca_signal=float(fit.peak_pca_signal.sel(sensor=sensor_name).values), + ) + for sensor_name in fit.sensor.values + } + return fit, fit_results diff --git a/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_detuning/parameters.py b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_detuning/parameters.py new file mode 100644 index 000000000..d47b6d5b7 --- /dev/null +++ b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_detuning/parameters.py @@ -0,0 +1,38 @@ +from qualibrate.core import NodeParameters +from qualibrate.core.parameters import RunnableParameters +from qualibration_libs.parameters import CommonNodeParameters +from calibration_utils.common_utils.experiment import BaseExperimentNodeParameters + +from typing import Optional, List + + +class NodeSpecificParameters(RunnableParameters): + num_shots: int = 100 + """Number of averages to perform. Default is 100.""" + sensor_names: Optional[List[str]] = None + """The list of sensor dot names to be included in the measurement. """ + quantum_dot_pair: str = "virtual_dot_1_virtual_dot_2_pair" + """The name of the QD pair to sweep detuning.""" + detuning_start: float = 0 + """The first detuning value.""" + detuning_stop: float = 0.5 + """The last detuning value.""" + detuning_step: float = 0.005 + """The step in detuning. """ + point_duration: int = 1000 + """How long to stay on each detuning point for before measurement.""" + frequency_span_in_mhz: float = 15 + """Span of frequencies to sweep in MHz. Default is 15 MHz.""" + frequency_step_in_mhz: float = 0.1 + """Step size for frequency sweep in MHz. Default is 0.1 MHz.""" + use_simulated_data: bool = False + """Whether to generate simulated data instead of measuring via the OPX. Default False.""" + + +class Parameters( + NodeParameters, + CommonNodeParameters, + NodeSpecificParameters, + BaseExperimentNodeParameters, +): + pass diff --git a/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_detuning/plotting.py b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_detuning/plotting.py new file mode 100644 index 000000000..b6f88728b --- /dev/null +++ b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_detuning/plotting.py @@ -0,0 +1,63 @@ +from typing import List +import xarray as xr +from matplotlib.axes import Axes +import matplotlib.pyplot as plt + +from quam_builder.architecture.quantum_dots.components import SensorDot + + +def plot_raw_data_with_fit(ds: xr.Dataset, sensors: List[SensorDot], fits: xr.Dataset): + """Plot PCA signal maps and extracted optimal points for all sensors.""" + num_sensors = len(sensors) + fig, axes = plt.subplots( + 1, num_sensors, figsize=(5 * num_sensors, 4), squeeze=False + ) + axes = axes.flatten() + + for ax, sensor in zip(axes, sensors): + sensor_data = ds.sel(sensor=sensor.name) + fit_data = fits.sel(sensor=sensor.name) if fits is not None else None + + plot_individual_raw_data_with_fit(ax, sensor_data, sensor.name, fit_data) + + fig.suptitle("Resonator spectroscopy vs detuning (PCA signal)") + fig.set_size_inches(15, 9) + fig.tight_layout() + return fig + + +def plot_individual_raw_data_with_fit( + ax: Axes, sensor_data: xr.Dataset, sensor_id: str, fit: xr.Dataset = None +): + """Plot a single sensor PCA signal map with optional optimal-point marker.""" + sensor_data.assign_coords(freq_GHz=sensor_data.full_freq / 1e9).IQ_abs.plot( + ax=ax, add_colorbar=False, x="freq_GHz", y="detuning", linewidth=0.5 + ) + ax.set_xlabel("Readout frequency [GHz]") + ax.set_ylabel("Detuning [V]") + ax.set_title(sensor_id) + + if fit is not None: + sensor_data.assign_coords( + freq_GHz=sensor_data.full_freq / 1e9 + ).assign({"pca_signal": fit.pca_signal_abs}).pca_signal.plot( + ax=ax, + add_colorbar=True, + x="freq_GHz", + y="detuning", + cmap="magma", + alpha=0.7, + ) + try: + if bool(fit.success): + ax.scatter( + float(fit.res_freq) / 1e9, + float(fit.optimal_detuning), + color="cyan", + edgecolors="black", + s=80, + marker="x", + zorder=10, + ) + except Exception: + pass diff --git a/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_detuning/simulated_data_generator.py b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_detuning/simulated_data_generator.py new file mode 100644 index 000000000..ca557da39 --- /dev/null +++ b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_detuning/simulated_data_generator.py @@ -0,0 +1,88 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING + +import numpy as np +import xarray as xr +from qualang_tools.units import unit + +if TYPE_CHECKING: + from qualibrate.core import QualibrationNode + +from calibration_utils.common_utils.experiment import get_sensors + + +def generate_simulated_dataset(node: QualibrationNode) -> xr.Dataset: + """Generate a synthetic frequency x detuning dataset with a localized PCA feature.""" + u = unit(coerce_to_integer=True) + + node.namespace["sensors"] = sensors = get_sensors(node) + + span = node.parameters.frequency_span_in_mhz * u.MHz + step = node.parameters.frequency_step_in_mhz * u.MHz + frequency = np.arange(-span / 2, +span / 2, step) + detuning = np.arange( + node.parameters.detuning_start, + node.parameters.detuning_stop, + node.parameters.detuning_step, + ) + + node.namespace["sweep_axes"] = { + "sensor": xr.DataArray(sensors.get_names()), + "frequency": xr.DataArray( + frequency, + attrs={"long_name": "readout frequency", "units": "Hz"}, + ), + "detuning": xr.DataArray( + detuning, + attrs={"long_name": "quantum dot pair detuning", "units": "V"}, + ), + } + + rng = np.random.default_rng(seed=42) + + I_data = [] + Q_data = [] + freq_grid, det_grid = np.meshgrid(frequency, detuning, indexing="ij") + + for sensor_index, _sensor in enumerate(sensors): + center_frequency = rng.uniform(-0.15 * span, 0.15 * span) + center_detuning = rng.uniform( + detuning.min() + 0.2 * (detuning.max() - detuning.min()), + detuning.max() - 0.2 * (detuning.max() - detuning.min()), + ) + sigma_frequency = rng.uniform(0.04 * span, 0.08 * span) + sigma_detuning = rng.uniform( + 0.08 * (detuning.max() - detuning.min()), + 0.16 * (detuning.max() - detuning.min()), + ) + + transition = np.exp( + -0.5 + * ( + ((freq_grid - center_frequency) / sigma_frequency) ** 2 + + ((det_grid - center_detuning) / sigma_detuning) ** 2 + ) + ) + background = ( + 0.1e-3 * (freq_grid / max(np.max(np.abs(frequency)), 1.0)) + + 0.1e-3 * (det_grid - np.mean(detuning)) + ) + phase = rng.uniform(0, 2 * np.pi) + signal = (0.8e-3 * transition + background) * np.exp(1j * phase) + signal += 0.05e-3 * transition * sensor_index + + noise_scale = 0.04e-3 + I_data.append(signal.real + rng.normal(0.0, noise_scale, size=signal.shape)) + Q_data.append(signal.imag + rng.normal(0.0, noise_scale, size=signal.shape)) + + sensor_names = sensors.get_names() + coords = {"sensor": sensor_names, "frequency": frequency, "detuning": detuning} + dims = ["sensor", "frequency", "detuning"] + + return xr.Dataset( + { + "I": xr.DataArray(I_data, dims=dims, coords=coords), + "Q": xr.DataArray(Q_data, dims=dims, coords=coords), + } + ) diff --git a/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_power/__init__.py b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_power/__init__.py new file mode 100644 index 000000000..384039d5f --- /dev/null +++ b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_power/__init__.py @@ -0,0 +1,13 @@ +from .parameters import Parameters +from .analysis import process_raw_dataset, fit_raw_data, log_fitted_results +from .plotting import plot_raw_data_with_fit +from .simulated_data_generator import generate_simulated_dataset + +__all__ = [ + "Parameters", + "process_raw_dataset", + "fit_raw_data", + "log_fitted_results", + "plot_raw_data_with_fit", + "generate_simulated_dataset", +] diff --git a/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_power/analysis.py b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_power/analysis.py new file mode 100644 index 000000000..f1c977e08 --- /dev/null +++ b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_power/analysis.py @@ -0,0 +1,172 @@ +import logging +from dataclasses import dataclass +from typing import Tuple, Dict +import numpy as np +import xarray as xr + +from qualibrate.core import QualibrationNode +from qualibration_libs.data import add_amplitude_and_phase +from qualibration_libs.analysis import peaks_dips + + +@dataclass +class FitParameters: + """Stores the relevant node-specific fitted parameters used to update the state at the end of the node.""" + + success: bool + resonator_frequency: float + frequency_shift: float + optimal_power: float + + +def log_fitted_results(fit_results: Dict, log_callable=None): + """ + Logs the node-specific fitted results for all sensors from the fit results + + Parameters: + ----------- + fit_results : dict + Dictionary containing the fitted results for all sensors. + logger : logging.Logger, optional + Logger for logging the fitted results. If None, a default logger is used. + + """ + if log_callable is None: + log_callable = logging.getLogger(__name__).info + for q in fit_results.keys(): + s_qubit = f"Results for sensor {q}: " + s_power = f"Optimal readout power: {fit_results[q]['optimal_power']:.2f} dBm | " + s_freq = f"Resonator frequency: {1e-9 * fit_results[q]['resonator_frequency']:.3f} GHz | " + s_shift = f"(shift of {1e-6 * fit_results[q]['frequency_shift']:.0f} MHz)\n" + if fit_results[q]["success"]: + s_qubit += " SUCCESS!\n" + else: + s_qubit += " FAIL!\n" + log_callable(s_qubit + s_power + s_freq + s_shift) + + +def process_raw_dataset(ds: xr.Dataset, node: QualibrationNode): + """Processes the raw dataset by converting the 'I' and 'Q' quadratures to V, or adding the intermediate_frequency as a coordinate for instance.""" + + # Add the amplitude and phase to the raw dataset + ds = add_amplitude_and_phase(ds, "detuning", subtract_slope_flag=True) + # Add the RF frequency as a coordinate of the raw dataset + full_freq = np.array( + [ + ds.detuning + s.readout_resonator.intermediate_frequency + for s in node.namespace["sensors"] + ] + ) + ds = ds.assign_coords(full_freq=(["sensor", "detuning"], full_freq)) + ds.full_freq.attrs = {"long_name": "RF frequency", "units": "Hz"} + # Normalize the IQ_abs with respect to the amplitude axis + ds = ds.assign({"IQ_abs_norm": ds["IQ_abs"] / ds.IQ_abs.mean(dim=["detuning"])}) + return ds + + +def fit_raw_data( + ds: xr.Dataset, node: QualibrationNode +) -> Tuple[xr.Dataset, dict[str, FitParameters]]: + """ + Fit the T1 relaxation time for each sensor according to ``a * np.exp(t * decay) + offset``. + + Parameters: + ----------- + ds : xr.Dataset + Dataset containing the raw data. + node_parameters : Parameters + Parameters related to the node, including whether state discrimination is used. + + Returns: + -------- + xr.Dataset + Dataset containing the fit results. + """ + + ds_fit = ds + # Generate 1D dataset tracking the minimum IQ value, as a proxy for resonator frequency + ds_fit["rr_min_response"] = ds.IQ_abs_norm.idxmin(dim="detuning") + # Calculate the derivative along the power axis + ds_fit["rr_min_response_diff"] = ds_fit.rr_min_response.differentiate( + coord="power" + ).dropna("power") + ds_fit["rr_min_response_filtered"] = ds_fit.rr_min_response.where( + np.abs(ds_fit["rr_min_response_diff"]) < 1e6 + ) + # Calculate the moving average of the derivative + ds_fit["rr_min_response_avg"] = ( + ds_fit.rr_min_response_filtered.rolling( + power=node.parameters.derivative_smoothing_window_num_points, + center=True, # window size in points + ) + .mean() + .dropna("power") + ) + # ensure rr_min_response_avg buffer is writeable + ds_fit["rr_min_response_avg"].data = ds_fit["rr_min_response_avg"].data.copy() + # Apply a filter to scale down the initial noisy values in the moving average if needed + for j in range(node.parameters.moving_average_filter_window_num_points): + ds_fit.rr_min_response_avg.isel(power=j).data /= ( + node.parameters.moving_average_filter_window_num_points - j + ) + # Find the first position where the moving average crosses below the threshold + ds_fit["below_threshold"] = ( + ds_fit.rr_min_response_avg + < node.parameters.derivative_crossing_threshold_in_hz_per_dbm + ) + # Get the first occurrence below the derivative threshold + optimal_power = ds_fit.below_threshold.idxmax(dim="power") + optimal_power = ( + optimal_power - node.parameters.buffer_from_crossing_threshold_in_dbm + ) + ds_fit = ds_fit.assign_coords({"optimal_power": (["sensor"], optimal_power.data)}) + + # Define a function to fit the resonator line at the optimal power for each qubit + def _select_optimal_power(ds, sensor): + return peaks_dips( + ds.sel(power=ds["optimal_power"].sel(sensor=sensor).data, method="nearest") + .sel(sensor=sensor) + .IQ_abs, + "detuning", + ) + + # Get the resonance frequency shift at the optimal power + freq_shift = [] + for q in node.namespace["sensors"]: + freq_shift.append(float(_select_optimal_power(ds_fit, q.name).position.data)) + ds_fit = ds_fit.assign_coords({"freq_shift": (["sensor"], freq_shift)}) + + # Extract the relevant fitted parameters + fit_dataset, fit_results = _extract_relevant_fit_parameters(ds_fit, node) + return fit_dataset, fit_results + + +def _extract_relevant_fit_parameters(fit: xr.Dataset, node: QualibrationNode): + """Add metadata to the fit dataset and fit result dictionary.""" + + # Get the fitted resonator frequency + full_freq = np.array( + [s.readout_resonator.intermediate_frequency for s in node.namespace["sensors"]] + ) + res_freq = fit.freq_shift + full_freq + fit = fit.assign_coords(res_freq=("sensor", res_freq.data)) + fit.res_freq.attrs = {"long_name": "resonator frequency", "units": "Hz"} + # Assess whether the fit was successful or not + freq_success = ( + np.abs(fit.freq_shift.data) < node.parameters.frequency_span_in_mhz * 1e6 + ) + nan_success = np.isnan(fit.freq_shift.data) | np.isnan(fit.optimal_power.data) + success_criteria = freq_success & ~nan_success + fit = fit.assign_coords(success=("sensor", success_criteria)) + + fit_results = { + s: FitParameters( + success=fit.sel(sensor=s).success.values.__bool__(), + resonator_frequency=float(fit.res_freq.sel(sensor=s).values), + frequency_shift=float(fit.freq_shift.sel(sensor=s).data), + optimal_power=float(fit.optimal_power.sel(sensor=s).data), + ) + for s in fit.sensor.values + } + + return fit, fit_results diff --git a/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_power/parameters.py b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_power/parameters.py new file mode 100644 index 000000000..e2930e8b3 --- /dev/null +++ b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_power/parameters.py @@ -0,0 +1,45 @@ +from qualibrate.core import NodeParameters +from qualibrate.core.parameters import RunnableParameters +from qualibration_libs.parameters import CommonNodeParameters +from calibration_utils.common_utils.experiment import BaseExperimentNodeParameters + +from typing import Optional, List + + +class NodeSpecificParameters(RunnableParameters): + num_shots: int = 100 + """Number of averages to perform. Default is 100.""" + sensor_names: Optional[List[str]] = None + """The list of sensor dot names to be included in the measurement. """ + frequency_span_in_mhz: float = 15 + """Span of frequencies to sweep in MHz. Default is 15 MHz.""" + frequency_step_in_mhz: float = 0.1 + """Step size for frequency sweep in MHz. Default is 0.1 MHz.""" + min_power_dbm: int = -50 + """Minimum power level in dBm. Default is -50 dBm.""" + max_power_dbm: int = -25 + """Maximum power level in dBm. Default is -25 dBm.""" + num_power_points: int = 100 + """Number of points of the readout power axis. Default is 100.""" + max_amp: float = 0.1 + """Maximum readout amplitude for the experiment. Default is 0.1.""" + derivative_crossing_threshold_in_hz_per_dbm: int = -50_000 + """Threshold for derivative crossing in Hz/dBm. Default is -50000 Hz/dBm.""" + derivative_smoothing_window_num_points: int = 10 + """Size of the window in number of points corresponding to the rolling average (number of points). Default is 10.""" + moving_average_filter_window_num_points: int = 10 + """Size of the moving average filter window (number of points). Default is 5.""" + buffer_from_crossing_threshold_in_dbm: int = 1 + """Buffer from the crossing threshold in dBm - the optimal readout power will be set to be this number in Db below + the threshold. Default is 1 dBm.""" + use_simulated_data: bool = False + """Whether to generate simulated data instead of measuring via the OPX. Default False.""" + + +class Parameters( + NodeParameters, + CommonNodeParameters, + NodeSpecificParameters, + BaseExperimentNodeParameters, +): + pass diff --git a/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_power/plotting.py b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_power/plotting.py new file mode 100644 index 000000000..000fc6bb2 --- /dev/null +++ b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_power/plotting.py @@ -0,0 +1,94 @@ +from typing import List +import xarray as xr +from matplotlib.axes import Axes +import matplotlib.pyplot as plt + +from qualang_tools.units import unit +from quam_builder.architecture.quantum_dots.components import SensorDot + +u = unit(coerce_to_integer=True) + + +def plot_raw_data_with_fit(ds: xr.Dataset, sensors: List[SensorDot], fits: xr.Dataset): + """ + Plots the raw data with fitted curves for the given sensors. + + Parameters + ---------- + ds : xr.Dataset + The dataset containing the quadrature data. + sensors : list of SensorDot + A list of qubits to plot. + fits : xr.Dataset + The dataset containing the fit parameters. + + Returns + ------- + Figure + The matplotlib figure object containing the plots. + + Notes + ----- + - The function creates a grid of subplots, one for each sensor. + - Each subplot contains the raw data and the fitted curve. + """ + num_sensors = len(sensors) + fig, axes = plt.subplots( + 1, num_sensors, figsize=(5 * num_sensors, 4), squeeze=False + ) + axes = axes.flatten() + + for ax, sensor in zip(axes, sensors): + sensor_data = ds.sel(sensor=sensor.name) + fit_data = fits.sel(sensor=sensor.name) if fits is not None else None + + plot_individual_raw_data_with_fit(ax, sensor_data, sensor.name, fit_data) + + fig.suptitle("Resonator spectroscopy vs power") + fig.set_size_inches(15, 9) + fig.tight_layout() + return fig + + +def plot_individual_raw_data_with_fit( + ax: Axes, sensor_data: xr.Dataset, sensor_id: str, fit: xr.Dataset = None +): + """ + Plots individual sensor data on a given axis with optional fit. + + Parameters + ---------- + ax : matplotlib.axes.Axes + The axis on which to plot the data. + sensor_data : xr.Dataset + The dataset containing the sensor's quadrature data. + sensor_id : str + The sensor ID for the title. + fit : xr.Dataset, optional + The dataset containing the fit parameters (default is None). + """ + + sensor_data.assign_coords(freq_GHz=sensor_data.full_freq / 1e9).IQ_abs.plot( + ax=ax, add_colorbar=False, x="freq_GHz", y="power", linewidth=0.5 + ) + ax.set_ylabel("Power (dBm)") + + ax2 = ax.twiny() + sensor_data.assign_coords( + detuning_MHz=sensor_data.detuning / u.MHz + ).IQ_abs_norm.plot( + ax=ax2, add_colorbar=False, x="detuning_MHz", y="power", robust=True + ) + ax2.set_xlabel("Detuning [MHz]") + ax2.set_title(sensor_id) + + if fit is not None: + ax2.plot((fit.rr_min_response) * 1e-6, fit.power, color="orange", linewidth=0.5) + try: + if bool(fit.success): + ax2.axhline(y=float(fit.optimal_power), color="g", linestyle="-") + ax2.axvline( + x=float(fit.freq_shift) * 1e-6, color="blue", linestyle="--" + ) + except Exception: + pass diff --git a/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_power/simulated_data_generator.py b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_power/simulated_data_generator.py new file mode 100644 index 000000000..97fb8cd2c --- /dev/null +++ b/qualibration_graphs/quantum_dots/calibration_utils/resonator_spectroscopy_vs_power/simulated_data_generator.py @@ -0,0 +1,108 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING + +import numpy as np +import xarray as xr +from qualang_tools.units import unit + +if TYPE_CHECKING: + from qualibrate.core import QualibrationNode + +from calibration_utils.common_utils.experiment import get_sensors + + +def generate_simulated_dataset(node: QualibrationNode) -> xr.Dataset: + """Generate simulated resonator spectroscopy vs power 2D data. + + For each sensor, the complex S11 of a notch-type resonator is + simulated across a frequency x power grid. The resonance frequency in + detuning coordinates does not vary with drive power (``delta`` omits a + power dependence); linewidth broadens with power via ``kappa``. The notch + parameters ``kappa_base`` and ``dip_center`` are sampled once for all + sensors so seeded fake data does not give one unrelated Lorentzian + draw per channel (which made the derivative-based optimal-power sweep + succeed for one sensor and arbitrarily fail for another). + + Channels still differ by cable phase and (optional) amplitude scale. + + + Parameters + ---------- + node : QualibrationNode + Calibration node whose ``parameters`` and ``machine`` are already set. + Writes ``sensors`` and ``sweep_axes`` into ``node.namespace``. + """ + u = unit(coerce_to_integer=True) + + node.namespace["sensors"] = sensors = get_sensors(node) + + span = node.parameters.frequency_span_in_mhz * u.MHz + step = node.parameters.frequency_step_in_mhz * u.MHz + dfs = np.arange(-span / 2, +span / 2, step) + + power_dbm = np.linspace( + node.parameters.min_power_dbm, + node.parameters.max_power_dbm, + node.parameters.num_power_points, + ) + + node.namespace["sweep_axes"] = { + "sensor": xr.DataArray(sensors.get_names()), + "detuning": xr.DataArray( + dfs, + attrs={"long_name": "readout frequency", "units": "Hz"}, + ), + "power": xr.DataArray( + power_dbm, + attrs={"long_name": "readout power", "units": "dBm"}, + ), + } + + rng = np.random.default_rng(seed=42) + + # One Lorentzian notch for every sensor; same fixed center vs power (see ``delta``). + kappa_base = rng.uniform(0.5e6, 1.5e6) + dip_center = rng.uniform(-span * 0.05, span * 0.05) + coupling = 0.7 + + I_data = [] + Q_data = [] + + for i, _sensor in enumerate(sensors): + + # Voltage scales as 10^(P/20) relative to max power + power_linear = 10 ** ((power_dbm - power_dbm.max()) / 20) + power_norm = (power_dbm - power_dbm.min()) / (power_dbm.max() - power_dbm.min()) + + freq_grid, _ = np.meshgrid(dfs, power_dbm, indexing="ij") + pwr_lin_grid = np.meshgrid(dfs, power_linear, indexing="ij")[1] + pwr_norm_grid = np.meshgrid(dfs, power_norm, indexing="ij")[1] + + # Fixed resonance frequency; linewidth broadens slightly at high power + kappa = kappa_base * (1 + 0.5 * pwr_norm_grid) + delta = freq_grid - dip_center + + # Complex S11: notch resonator model + denom = kappa / 2 + 1j * delta + s11 = 1.0 - coupling * (kappa / 2) / denom + + baseline = 1e-3 * pwr_lin_grid * (1 + 0.1 * i) + + cable_phase = rng.uniform(0, 2 * np.pi) + signal = baseline * s11 * np.exp(1j * cable_phase) + + noise = 1e-5 + I_data.append(signal.real + rng.normal(0, noise, size=signal.shape)) + Q_data.append(signal.imag + rng.normal(0, noise, size=signal.shape)) + + sensor_names = sensors.get_names() + coords = {"sensor": sensor_names, "detuning": dfs, "power": power_dbm} + dims = ["sensor", "detuning", "power"] + + return xr.Dataset( + { + "I": xr.DataArray(I_data, dims=dims, coords=coords), + "Q": xr.DataArray(Q_data, dims=dims, coords=coords), + } + ) diff --git a/qualibration_graphs/quantum_dots/calibrations/loss_divincenzo/02a_resonator_spectroscopy.py b/qualibration_graphs/quantum_dots/calibrations/loss_divincenzo/02a_resonator_spectroscopy.py new file mode 100644 index 000000000..793281757 --- /dev/null +++ b/qualibration_graphs/quantum_dots/calibrations/loss_divincenzo/02a_resonator_spectroscopy.py @@ -0,0 +1,262 @@ +# %% {Imports} +import matplotlib.pyplot as plt +import numpy as np +import xarray as xr +from dataclasses import asdict + +from qm.qua import * + +from qualang_tools.loops import from_array +from qualang_tools.multi_user import qm_session +from calibration_utils.common_utils.experiment import progress_counter_with_log +from qualang_tools.units import unit + +from qualibrate.core import QualibrationNode +from quam_config import Quam +from calibration_utils.common_utils.annotation import annotate_node_figures +from calibration_utils.common_utils.experiment import get_sensors +from calibration_utils.resonator_spectroscopy import ( + Parameters, + process_raw_dataset, + fit_raw_data, + log_fitted_results, + plot_raw_amplitude_with_fit, + plot_raw_phase, + generate_simulated_dataset, +) +from qualibration_libs.runtime import simulate_and_plot +from qualibration_libs.data import XarrayDataFetcher + +# %% {Node initialisation} +description = """ + 1D RESONATOR SPECTROSCOPY +This sequence involves measuring the resonator by sending a readout pulse and demodulating the signals to extract the +'I' and 'Q' quadratures across varying readout intermediate frequencies for sensors. +The data is then post-processed to determine the resonator resonance frequency. +This frequency is used to update the readout frequency in the state. + +Prerequisites: + - If applicable, having calibrated the IQ mixer/Octave connected to the readout line (node 01a_mixer_calibration.py). + - Having calibrated the time of flight, offsets, and gains (node 01a_time_of_flight.py). + - Having initialized the QUAM state parameters for the readout pulse amplitude and duration. + +State update: + - The readout frequency: sensor.readout_resonator.intermediate_frequency +""" + +# Be sure to include [Parameters, Quam] so the node has proper type hinting +node = QualibrationNode[Parameters, Quam]( + name="02a_resonator_spectroscopy", # Name should be unique + description=description, # Describe what the node is doing, which is also reflected in the QUAlibrate GUI + parameters=Parameters(), # Node parameters defined under quam_experiment/experiments/node_name +) + + +# Any parameters that should change for debugging purposes only should go in here +# These parameters are ignored when run through the GUI or as part of a graph +@node.run_action(skip_if=node.modes.external) +def custom_param(node: QualibrationNode[Parameters, Quam]): + """Allow the user to locally set the node parameters for debugging purposes, or execution in the Python IDE.""" + # You can get type hinting in your IDE by typing node.parameters. + # node.parameters.sensors = ["q1", "q2"] + # node.parameters.sensor_names = ["virtual_sensor_1", "virtual_sensor_2"] + # node.parameters.num_shots = 2 + # node.parameters.frequency_span_in_mhz = 10 + # node.parameters.frequency_step_in_mhz = 5 + pass + + +# Instantiate the QUAM class from the state file +node.machine = Quam.load() + + +# %% {Create_QUA_program} +@node.run_action( + skip_if=node.parameters.load_data_id is not None + or node.parameters.use_simulated_data +) +def create_qua_program(node: QualibrationNode[Parameters, Quam]): + """Create the sweep axes and generate the QUA program from the pulse sequence and the node parameters.""" + # Class containing tools to help handle units and conversions. + u = unit(coerce_to_integer=True) + + # Get the relevant sensor dots rom the node + node.namespace["sensors"] = sensors = get_sensors(node) + + num_sensors = len(sensors) + + # Extract the sweep parameters and axes from the node parameters + n_avg = node.parameters.num_shots + + # The frequency sweep around the resonator resonance frequency + span = node.parameters.frequency_span_in_mhz * u.MHz + step = node.parameters.frequency_step_in_mhz * u.MHz + dfs = np.arange(-span / 2, +span / 2, step) + + # Register the sweep axes to be added to the dataset when fetching data + node.namespace["sweep_axes"] = { + "sensors": xr.DataArray(sensors.get_names()), + "detuning": xr.DataArray( + dfs, attrs={"long_name": "readout frequency", "units": "Hz"} + ), + } + + # The QUA program stored in the node namespace to be transfer to the simulation and execution run_actions + with program() as node.namespace["qua_program"]: + + I, I_st, Q, Q_st, n, n_st = node.machine.declare_qua_variables( + num_IQ_pairs=num_sensors + ) + df = declare(int) # QUA variable for the readout frequency + + # No qubits yet at this point in the experiment - we only have sensors, batched by multiplexing. Simultaneous operation no problem + for multiplexed_sensors in sensors.batch(): + align() + with for_(n, 0, n < n_avg, n + 1): + save(n, n_st) + with for_(*from_array(df, dfs)): + + for i, sensor in multiplexed_sensors.items(): + rr = sensor.readout_resonator + # Update the resonator frequencies for all resonators + rr.update_frequency(df + rr.intermediate_frequency) + # Measure the resonator + rr.measure("readout", qua_vars=(I[i], Q[i])) + # wait for the resonator + rr.wait(1000) + # save data + save(I[i], I_st[i]) + save(Q[i], Q_st[i]) + align() + + with stream_processing(): + n_st.save("n") + for i in range(num_sensors): + I_st[i].buffer(len(dfs)).average().save(f"I{i + 1}") + Q_st[i].buffer(len(dfs)).average().save(f"Q{i + 1}") + + +# %% {Simulate} +@node.run_action( + skip_if=node.parameters.load_data_id is not None + or not node.parameters.simulate + or node.parameters.use_simulated_data +) +def simulate_qua_program(node: QualibrationNode[Parameters, Quam]): + """Connect to the QOP and simulate the QUA program""" + # Connect to the QOP + qmm = node.machine.connect() + # Get the config from the machine + config = node.machine.generate_config() + # Simulate the QUA program, generate the waveform report and plot the simulated samples + samples, fig, wf_report = simulate_and_plot( + qmm, config, node.namespace["qua_program"], node.parameters + ) + # Store the figure, waveform report and simulated samples + node.results["simulation"] = { + "figure": fig, + "wf_report": wf_report, + "samples": samples, + } + + +# %% {Execute} +@node.run_action( + skip_if=node.parameters.load_data_id is not None + or node.parameters.simulate + or node.parameters.use_simulated_data +) +def execute_qua_program(node: QualibrationNode[Parameters, Quam]): + """Connect to the QOP, execute the QUA program and fetch the raw data and store it in a xarray dataset called "ds_raw".""" + # Connect to the QOP + qmm = node.machine.connect() + # Get the config from the machine + config = node.machine.generate_config() + # Execute the QUA program only if the quantum machine is available (this is to avoid interrupting running jobs). + with qm_session(qmm, config, timeout=node.parameters.timeout) as qm: + # The job is stored in the node namespace to be reused in the fetching_data run_action + node.namespace["job"] = job = qm.execute(node.namespace["qua_program"]) + # Display the progress bar + data_fetcher = XarrayDataFetcher(job, node.namespace["sweep_axes"]) + for dataset in data_fetcher: + progress_counter_with_log( + data_fetcher.get("n", 0), + node.parameters.num_shots, + start_time=data_fetcher.t_start, + node=node + ) + # Display the execution report to expose possible runtime errors + node.log(job.execution_report()) + # Register the raw dataset + node.results["ds_raw"] = dataset + + +# %% {Generate_simulated_data} +@node.run_action(skip_if=not node.parameters.use_simulated_data) +def generate_simulated_data(node: QualibrationNode[Parameters, Quam]): + """Generate simulated resonator spectroscopy data so the full analysis pipeline can run without hardware.""" + node.results["ds_raw"] = generate_simulated_dataset(node) + node.log("[sim] Simulated dataset generated successfully.") + + +# %% {Load_historical_data} +@node.run_action(skip_if=node.parameters.load_data_id is None) +def load_data(node: QualibrationNode[Parameters, Quam]): + """Load a previously acquired dataset.""" + load_data_id = node.parameters.load_data_id + node.load_from_id(node.parameters.load_data_id) + node.parameters.load_data_id = load_data_id + node.namespace["sensors"] = get_sensors(node) + + +# %% {Analyse_data} +@node.run_action(skip_if=node.parameters.simulate) +def analyse_data(node: QualibrationNode[Parameters, Quam]): + """Analyse the raw data and store the fitted data in another xarray dataset "ds_fit" and the fitted results in the "fit_results" dictionary.""" + node.results["ds_raw"] = process_raw_dataset(node.results["ds_raw"], node) + node.results["ds_fit"], fit_results = fit_raw_data(node.results["ds_raw"], node) + node.results["fit_results"] = {k: asdict(v) for k, v in fit_results.items()} + + # Log the relevant information extracted from the data analysis + log_fitted_results(node.results["fit_results"], log_callable=node.log) + node.outcomes = { + sensor_name: ("successful" if fit_result["success"] else "failed") + for sensor_name, fit_result in node.results["fit_results"].items() + } + + +# %% {Plot_data} +@node.run_action(skip_if=node.parameters.simulate) +def plot_data(node: QualibrationNode[Parameters, Quam]): + """Plot the raw and fitted data in specific figures whose shape is given by sensors.grid_location.""" + fig_raw_phase = plot_raw_phase(node.results["ds_raw"], node.namespace["sensors"]) + fig_fit_amplitude = plot_raw_amplitude_with_fit( + node.results["ds_raw"], node.namespace["sensors"], node.results["ds_fit"] + ) + plt.show() + # Store the generated figures + node.results["figures"] = { + "phase": fig_raw_phase, + "amplitude": fig_fit_amplitude, + } + annotate_node_figures(node) + + +# %% {Update_state} +@node.run_action(skip_if=node.parameters.simulate) +def update_state(node: QualibrationNode[Parameters, Quam]): + """Update the relevant parameters if the sensor_name data analysis was successful.""" + with node.record_state_updates(): + for s in node.namespace["sensors"]: + if node.outcomes[s.name] == "failed": + continue + + s.readout_resonator.intermediate_frequency = float( + node.results["fit_results"][s.name]["frequency"] + ) + + +# %% {Save_results} +@node.run_action() +def save_results(node: QualibrationNode[Parameters, Quam]): + node.save() diff --git a/qualibration_graphs/quantum_dots/calibrations/loss_divincenzo/02b_resonator_spectroscopy_vs_power.py b/qualibration_graphs/quantum_dots/calibrations/loss_divincenzo/02b_resonator_spectroscopy_vs_power.py new file mode 100644 index 000000000..d820693bc --- /dev/null +++ b/qualibration_graphs/quantum_dots/calibrations/loss_divincenzo/02b_resonator_spectroscopy_vs_power.py @@ -0,0 +1,317 @@ +# %% {Imports} +import matplotlib.pyplot as plt +import numpy as np +import xarray as xr +from dataclasses import asdict + +from qm.qua import * + +from qualang_tools.loops import from_array +from qualang_tools.multi_user import qm_session +from calibration_utils.common_utils.experiment import progress_counter_with_log +from qualang_tools.units import unit + +from qualibrate.core import QualibrationNode +from quam_config import Quam +from calibration_utils.resonator_spectroscopy_vs_power import ( + Parameters, + process_raw_dataset, + plot_raw_data_with_fit, + log_fitted_results, + fit_raw_data, + generate_simulated_dataset, +) +from quam_builder.tools.power_tools import calculate_voltage_scaling_factor +from quam_builder.architecture.quantum_dots.components import ReadoutResonatorSingle +from qualibration_libs.runtime import simulate_and_plot +from qualibration_libs.data import XarrayDataFetcher +from qualibration_libs.core import tracked_updates + +from calibration_utils.common_utils.annotation import annotate_node_figures +from calibration_utils.common_utils.experiment import get_sensors + +# %% {Node initialisation} +description = """ + RESONATOR SPECTROSCOPY VERSUS READOUT POWER +This sequence involves measuring the resonator by sending a readout pulse and +demodulating the signals to extract the 'I' and 'Q' quadratures for all resonators +simultaneously. This is done across various readout frequencies and amplitudes. +Based on the results, one can then adjust the readout amplitude, choosing a +readout amplitude value just before the observed frequency splitting. + +Prerequisites: + - Having calibrated the resonator frequency (node 02a_resonator_spectroscopy.py). + - Having instantiated a starting readout amplitude. + +State update: + - The readout power: sensor.readout_resonator.set_output_power() + - The readout frequency for the optimal readout power. +""" + + +# Be sure to include [Parameters, Quam] so the node has proper type hinting +node = QualibrationNode[Parameters, Quam]( + name="02b_resonator_spectroscopy_vs_power", # Name should be unique + description=description, # Describe what the node is doing, which is also reflected in the QUAlibrate GUI + parameters=Parameters(), # Node parameters defined under quam_experiment/experiments/node_name +) + + +# Any parameters that should change for debugging purposes only should go in here +# These parameters are ignored when run through the GUI or as part of a graph +@node.run_action(skip_if=node.modes.external) +def custom_param(node: QualibrationNode[Parameters, Quam]): + """Allow the user to locally set the node parameters for debugging purposes, or execution in the Python IDE.""" + # You can get type hinting in your IDE by typing node.parameters. + # node.parameters.qubits = ["q1", "q2", "q3"] + # node.parameters.sensor_names = ["virtual_sensor_1", "virtual_sensor_2"] + # node.parameters.num_shots = 1 + node.parameters.frequency_span_in_mhz = 50 + node.parameters.frequency_step_in_mhz = 0.1 + node.parameters.max_power_dbm = -25 + node.parameters.min_power_dbm = -60 + node.parameters.num_power_points = 100 + # node.parameters.moving_average_filter_window_num_points = 1 + node.parameters.use_simulated_data = True + pass + + +# Instantiate the QUAM class from the state file +node.machine = Quam.load() + + +# %% {Create_QUA_program} +@node.run_action( + skip_if=node.parameters.load_data_id is not None + or node.parameters.use_simulated_data +) +def create_qua_program(node: QualibrationNode[Parameters, Quam]): + """Create the sweep axes and generate the QUA program from the pulse sequence and the node parameters.""" + # Class containing tools to help handle units and conversions. + u = unit(coerce_to_integer=True) + # Extract the sweep parameters and axes from the node parameters + n_avg = node.parameters.num_shots + # Power values as an array + power_dbm = np.linspace( + node.parameters.min_power_dbm, + node.parameters.max_power_dbm, + node.parameters.num_power_points, + ) + # Get the active sensors from the node and organize them by batches + node.namespace["sensors"] = sensors = get_sensors(node) + num_sensors = len(sensors) + # Update the readout power to match the desired range, this change will be reverted at the end of the node. + + node.namespace["tracked_resonators"] = [] + for i, sensor in enumerate(sensors): + with tracked_updates( + sensor.readout_resonator, auto_revert=False, dont_assign_to_none=True + ) as resonator: + if isinstance(resonator._obj, ReadoutResonatorSingle): + base_amplitude = u.dBm2volts(node.parameters.max_power_dbm, Z=50) + # Set the resonator power to the max of the sweep. + resonator.operations["readout"].amplitude = base_amplitude + else: + resonator.set_output_power( + power_in_dbm=node.parameters.max_power_dbm, + max_amplitude=node.parameters.max_amp, + ) + node.namespace["tracked_resonators"].append(resonator) + + # The readout amplitude sweep (as a pre-factor of the readout amplitude) - must be within [-2; 2) + amp_min = calculate_voltage_scaling_factor( + node.parameters.max_power_dbm, node.parameters.min_power_dbm + ) + amps = np.geomspace(amp_min, 1, node.parameters.num_power_points) + + # The frequency sweep around the resonator resonance frequency + span = node.parameters.frequency_span_in_mhz * u.MHz + step = node.parameters.frequency_step_in_mhz * u.MHz + dfs = np.arange(-span / 2, +span / 2, step) + + # Register the sweep axes to be added to the dataset when fetching data + node.namespace["sweep_axes"] = { + "sensor": xr.DataArray(sensors.get_names()), + "detuning": xr.DataArray( + dfs, attrs={"long_name": "readout frequency", "units": "Hz"} + ), + "power": xr.DataArray( + power_dbm, attrs={"long_name": "readout power", "units": "dBm"} + ), + } + + # The QUA program stored in the node namespace to be transfer to the simulation and execution run_actions + with program() as node.namespace["qua_program"]: + # Declare 'I' and 'Q' and the corresponding streams for the two resonators. + # For instance, here 'I' is a python list containing two QUA fixed variables. + I, I_st, Q, Q_st, n, n_st = node.machine.declare_qua_variables() + a = declare(fixed) # QUA variable for the readout amplitude pre-factor + df = declare(int) # QUA variable for the readout frequency + + for multiplexed_sensors in sensors.batch(): + align() + + with for_(n, 0, n < n_avg, n + 1): # QUA for_ loop for averaging + save(n, n_st) + with for_( + *from_array(df, dfs) + ): # QUA for_ loop for sweeping the frequency + for i, sensor in multiplexed_sensors.items(): + rr = sensor.readout_resonator + # Update the resonator frequencies for all resonators + update_frequency(rr.name, df + rr.intermediate_frequency) + # QUA for_ loop for sweeping the readout amplitude + # with for_(*from_array(a, amps)): + with for_each_(a, amps): + # readout the resonator + rr.measure( + "readout", qua_vars=(I[i], Q[i]), amplitude_scale=a + ) + # wait for the resonator to deplete + rr.wait(1000) + # save data + save(I[i], I_st[i]) + save(Q[i], Q_st[i]) + + with stream_processing(): + n_st.save("n") + for i in range(num_sensors): + I_st[i].buffer(len(amps)).buffer(len(dfs)).average().save(f"I{i + 1}") + Q_st[i].buffer(len(amps)).buffer(len(dfs)).average().save(f"Q{i + 1}") + + +# %% {Simulate} +@node.run_action( + skip_if=node.parameters.load_data_id is not None + or not node.parameters.simulate + or node.parameters.use_simulated_data +) +def simulate_qua_program(node: QualibrationNode[Parameters, Quam]): + """Connect to the QOP and simulate the QUA program""" + # Connect to the QOP + qmm = node.machine.connect() + # Get the config from the machine + config = node.machine.generate_config() + # Simulate the QUA program, generate the waveform report and plot the simulated samples + samples, fig, wf_report = simulate_and_plot( + qmm, config, node.namespace["qua_program"], node.parameters + ) + # Store the figure, waveform report and simulated samples + node.results["simulation"] = { + "figure": fig, + "wf_report": wf_report, + "samples": samples, + } + + +# %% {Execute} +@node.run_action( + skip_if=node.parameters.load_data_id is not None + or node.parameters.simulate + or node.parameters.use_simulated_data +) +def execute_qua_program(node: QualibrationNode[Parameters, Quam]): + """Connect to the QOP, execute the QUA program and fetch the raw data and store it in a xarray dataset called "ds_raw".""" + # Connect to the QOP + qmm = node.machine.connect() + # Get the config from the machine + config = node.machine.generate_config() + # Execute the QUA program only if the quantum machine is available (this is to avoid interrupting running jobs). + with qm_session(qmm, config, timeout=node.parameters.timeout) as qm: + # The job is stored in the node namespace to be reused in the fetching_data run_action + node.namespace["job"] = job = qm.execute(node.namespace["qua_program"]) + # Display the progress bar + data_fetcher = XarrayDataFetcher(job, node.namespace["sweep_axes"]) + for dataset in data_fetcher: + progress_counter_with_log( + data_fetcher.get("n", 0), + node.parameters.num_shots, + start_time=data_fetcher.t_start, + node=node + ) + # Display the execution report to expose possible runtime errors + node.log(job.execution_report()) + # Register the raw dataset + node.results["ds_raw"] = dataset + + +# %% {Generate_simulated_data} +@node.run_action(skip_if=not node.parameters.use_simulated_data) +def generate_simulated_data(node: QualibrationNode[Parameters, Quam]): + """Generate simulated resonator spectroscopy vs power data so the full analysis pipeline can run without hardware.""" + node.results["ds_raw"] = generate_simulated_dataset(node) + node.log("[sim] Simulated dataset generated successfully.") + + +# %% {Load_historical_data} +@node.run_action(skip_if=node.parameters.load_data_id is None) +def load_data(node: QualibrationNode[Parameters, Quam]): + """Load a previously acquired dataset.""" + + load_data_id = node.parameters.load_data_id + # Load the specified dataset + node.load_from_id(node.parameters.load_data_id) + node.parameters.load_data_id = load_data_id + # Get the active sensors from the loaded node parameters + node.namespace["sensors"] = get_sensors(node) + + +# %% {Analyse_data} +@node.run_action(skip_if=node.parameters.simulate) +def analyse_data(node: QualibrationNode[Parameters, Quam]): + """Analyse the raw data and store the fitted data in another xarray dataset "ds_fit" and the fitted results in the "fit_results" dictionary.""" + node.results["ds_raw"] = process_raw_dataset(node.results["ds_raw"], node) + node.results["ds_fit"], fit_results = fit_raw_data(node.results["ds_raw"], node) + node.results["fit_results"] = {k: asdict(v) for k, v in fit_results.items()} + log_fitted_results(node.results["fit_results"], log_callable=node.log) + node.outcomes = { + sensor_name: ("successful" if fit_result["success"] else "failed") + for sensor_name, fit_result in node.results["fit_results"].items() + } + + +# %% {Plot_data} +@node.run_action(skip_if=node.parameters.simulate) +def plot_data(node: QualibrationNode[Parameters, Quam]): + """Plot the raw and fitted data.""" + fig_raw_fit = plot_raw_data_with_fit( + node.results["ds_raw"], node.namespace["sensors"], node.results["ds_fit"] + ) + plt.show() + node.results["figures"] = {"amplitude": fig_raw_fit} + annotate_node_figures(node) + + +# %% {Update_state} +@node.run_action(skip_if=node.parameters.simulate) +def update_state(node: QualibrationNode[Parameters, Quam]): + """Update the relevant parameters if the sensor data analysis was successful.""" + # Revert the change done at the beginning of the node + for tracked_resonator in node.namespace.get("tracked_resonators", []): + tracked_resonator.revert_changes() + + # Update the state + with node.record_state_updates(): + for s in node.namespace["sensors"]: + if node.outcomes[s.name] == "failed": + continue + + # Update the readout power + for op in s.readout_resonator.operations: + if not op.startswith("readout"): + continue + s.readout_resonator.set_output_power( + power_in_dbm=node.results["fit_results"][s.name]["optimal_power"], + max_amplitude=node.parameters.max_amp, + operation = op, + ) + # Update the readout frequency + s.readout_resonator.intermediate_frequency += node.results["fit_results"][ + s.name + ]["frequency_shift"] + + +# %% {Save_results} +@node.run_action() +def save_results(node: QualibrationNode[Parameters, Quam]): + node.save() diff --git a/qualibration_graphs/quantum_dots/calibrations/loss_divincenzo/02c_resonator_spectroscopy_vs_detuning.py b/qualibration_graphs/quantum_dots/calibrations/loss_divincenzo/02c_resonator_spectroscopy_vs_detuning.py new file mode 100644 index 000000000..f925b9505 --- /dev/null +++ b/qualibration_graphs/quantum_dots/calibrations/loss_divincenzo/02c_resonator_spectroscopy_vs_detuning.py @@ -0,0 +1,282 @@ +# %% {Imports} +import matplotlib.pyplot as plt +import numpy as np +import xarray as xr +from dataclasses import asdict + +from qm.qua import * + +from qualang_tools.loops import from_array +from qualang_tools.multi_user import qm_session +from calibration_utils.common_utils.experiment import progress_counter_with_log +from qualang_tools.units import unit + +from qualibrate.core import QualibrationNode +from quam_config import Quam +from calibration_utils.resonator_spectroscopy_vs_detuning import ( + Parameters, + process_raw_dataset, + plot_raw_data_with_fit, + log_fitted_results, + fit_raw_data, + generate_simulated_dataset, +) +from qualibration_libs.runtime import simulate_and_plot +from qualibration_libs.data import XarrayDataFetcher + +from calibration_utils.common_utils.annotation import annotate_node_figures +from calibration_utils.common_utils.experiment import get_sensors, suppress_fetcher_axis_log_spam + +# %% {Node initialisation} +description = """ + RESONATOR SPECTROSCOPY VERSUS DETUNING +This sequence involves measuring the resonator by sending a readout pulse and +demodulating the signals to extract the 'I' and 'Q' quadratures for all resonators +simultaneously. This is done across various readout frequencies and detuning values. +Based on the results, one can then adjust the readout frequency, choosing a +readout frequency value which shows the strongest signal. . + +Prerequisites: + - Having calibrated the resonator frequency (node 02a_resonator_spectroscopy.py). + - Having calibrated the resonator power (node 02b_resonator_spectroscopy_vs_power.py). + - Having identified a suitable detuning transition. + +State update: + - The readout frequency which maximises the PCA sigal. +""" + + +# Be sure to include [Parameters, Quam] so the node has proper type hinting +node = QualibrationNode[Parameters, Quam]( + name="02c_resonator_spectroscopy_vs_detuning", # Name should be unique + description=description, # Describe what the node is doing, which is also reflected in the QUAlibrate GUI + parameters=Parameters(), # Node parameters defined under quam_experiment/experiments/node_name +) + + +# Any parameters that should change for debugging purposes only should go in here +# These parameters are ignored when run through the GUI or as part of a graph +@node.run_action(skip_if=node.modes.external) +def custom_param(node: QualibrationNode[Parameters, Quam]): + """Allow the user to locally set the node parameters for debugging purposes, or execution in the Python IDE.""" + # You can get type hinting in your IDE by typing node.parameters. + node.parameters.quantum_dot_pair = "virtual_dot_1_virtual_dot_2_pair" + node.parameters.sensor_names = ["virtual_sensor_1"] + node.parameters.use_simulated_data = False + pass + + +# Instantiate the QUAM class from the state file +node.machine = Quam.load() + + +# %% {Create_QUA_program} +@node.run_action( + skip_if=node.parameters.load_data_id is not None + or node.parameters.use_simulated_data +) +def create_qua_program(node: QualibrationNode[Parameters, Quam]): + """Create the sweep axes and generate the QUA program from the pulse sequence and the node parameters.""" + # Class containing tools to help handle units and conversions. + u = unit(coerce_to_integer=True) + # Extract the sweep parameters and axes from the node parameters + n_avg = node.parameters.num_shots + + # Get the active sensors from the node and organize them by batches + node.namespace["sensors"] = sensors = get_sensors(node) + num_sensors = len(sensors) + + + # Find QD pair + node.namespace["quantum_dot_pair"] = qd_pair = node.machine.get_component(node.parameters.quantum_dot_pair) + + # The detuning + detuning_min = node.parameters.detuning_start + detuning_max = node.parameters.detuning_stop + detuning_step = node.parameters.detuning_step + det_array = np.arange(detuning_min, detuning_max, detuning_step) + + # The frequency sweep around the resonator resonance frequency + span = node.parameters.frequency_span_in_mhz * u.MHz + step = node.parameters.frequency_step_in_mhz * u.MHz + dfs = np.arange(-span / 2, +span / 2, step) + + # Register the sweep axes to be added to the dataset when fetching data + node.namespace["sweep_axes"] = { + "sensor": xr.DataArray(sensors.get_names()), + "frequency" : xr.DataArray( + dfs, attrs={"long_name": "Frequency Detuning", "units": "Hz"} + ), + "detuning": xr.DataArray( + det_array, attrs={"long_name": "Quantum Dot Pair Detuning", "units": "V"} + ), + } + + # The QUA program stored in the node namespace to be transfer to the simulation and execution run_actions + with program() as node.namespace["qua_program"]: + # Declare 'I' and 'Q' and the corresponding streams for the two resonators. + # For instance, here 'I' is a python list containing two QUA fixed variables. + I, I_st, Q, Q_st, n, n_st = node.machine.declare_qua_variables() + det = declare(fixed) # QUA variable for the readout amplitude pre-factor + df = declare(int) # QUA variable for the readout frequency + + for multiplexed_sensors in sensors.batch(): + align() + with for_(n, 0, n < n_avg, n + 1): # QUA for_ loop for averaging + save(n, n_st) + with for_(*from_array(df, dfs)): + # Update the sensor frequency + for i, sensor in multiplexed_sensors.items(): + rr = sensor.readout_resonator + update_frequency(rr.name, df + rr.intermediate_frequency) + # Loop over detuning values + with for_(*from_array(det, det_array)): + align() + qd_pair.voltage_sequence.step_to_voltages({qd_pair.name : det}, duration = node.parameters.point_duration) + align() + readout_pulse_length = sensor.readout_resonator.operations["readout" + f"_{qd_pair.name}"].length + qd_pair.voltage_sequence.track_sticky_duration(readout_pulse_length) + for i, sensor in multiplexed_sensors.items(): + rr = sensor.readout_resonator + # QUA for_ loop for sweeping the readout amplitude + readout_pulse_name = "readout" + f"_{qd_pair.name}" + rr.measure( + readout_pulse_name, qua_vars=(I[i], Q[i]) + ) + # save data + save(I[i], I_st[i]) + save(Q[i], Q_st[i]) + + align() + qd_pair.voltage_sequence.ramp_to_zero() + + with stream_processing(): + n_st.save("n") + for i in range(num_sensors): + I_st[i].buffer(len(det_array)).buffer(len(dfs)).average().save(f"I{i + 1}") + Q_st[i].buffer(len(det_array)).buffer(len(dfs)).average().save(f"Q{i + 1}") + + +# %% {Simulate} +@node.run_action( + skip_if=node.parameters.load_data_id is not None + or not node.parameters.simulate + or node.parameters.use_simulated_data +) +def simulate_qua_program(node: QualibrationNode[Parameters, Quam]): + """Connect to the QOP and simulate the QUA program""" + # Connect to the QOP + qmm = node.machine.connect() + # Get the config from the machine + config = node.machine.generate_config() + # Simulate the QUA program, generate the waveform report and plot the simulated samples + samples, fig, wf_report = simulate_and_plot( + qmm, config, node.namespace["qua_program"], node.parameters + ) + # Store the figure, waveform report and simulated samples + node.results["simulation"] = { + "figure": fig, + "wf_report": wf_report, + "samples": samples, + } + + +# %% {Execute} +@node.run_action( + skip_if=node.parameters.load_data_id is not None + or node.parameters.simulate + or node.parameters.use_simulated_data +) +def execute_qua_program(node: QualibrationNode[Parameters, Quam]): + """Connect to the QOP, execute the QUA program and fetch the raw data and store it in a xarray dataset called "ds_raw".""" + suppress_fetcher_axis_log_spam() + # Connect to the QOP + qmm = node.machine.connect() + # Get the config from the machine + config = node.machine.generate_config() + # Execute the QUA program only if the quantum machine is available (this is to avoid interrupting running jobs). + with qm_session(qmm, config, timeout=node.parameters.timeout) as qm: + # The job is stored in the node namespace to be reused in the fetching_data run_action + node.namespace["job"] = job = qm.execute(node.namespace["qua_program"]) + # Display the progress bar + data_fetcher = XarrayDataFetcher(job, node.namespace["sweep_axes"]) + for dataset in data_fetcher: + progress_counter_with_log( + data_fetcher.get("n", 0), + node.parameters.num_shots, + start_time=data_fetcher.t_start, + node=node + ) + # Display the execution report to expose possible runtime errors + node.log(job.execution_report()) + # Register the raw dataset + node.results["ds_raw"] = dataset + + +# %% {Generate_simulated_data} +@node.run_action(skip_if=not node.parameters.use_simulated_data) +def generate_simulated_data(node: QualibrationNode[Parameters, Quam]): + """Generate simulated resonator spectroscopy vs power data so the full analysis pipeline can run without hardware.""" + node.results["ds_raw"] = generate_simulated_dataset(node) + node.log("[sim] Simulated dataset generated successfully.") + + +# %% {Load_historical_data} +@node.run_action(skip_if=node.parameters.load_data_id is None) +def load_data(node: QualibrationNode[Parameters, Quam]): + """Load a previously acquired dataset.""" + + load_data_id = node.parameters.load_data_id + # Load the specified dataset + node.load_from_id(node.parameters.load_data_id) + node.parameters.load_data_id = load_data_id + # Get the active sensors from the loaded node parameters + node.namespace["sensors"] = get_sensors(node) + node.namespace["quantum_dot_pair"] = node.machine.get_component(node.parameters.quantum_dot_pair) + + +# %% {Analyse_data} +@node.run_action(skip_if=node.parameters.simulate) +def analyse_data(node: QualibrationNode[Parameters, Quam]): + """Analyse the raw data and store the fitted data in another xarray dataset "ds_fit" and the fitted results in the "fit_results" dictionary.""" + node.results["ds_raw"] = process_raw_dataset(node.results["ds_raw"], node) + node.results["ds_fit"], fit_results = fit_raw_data(node.results["ds_raw"], node) + node.results["fit_results"] = {k: asdict(v) for k, v in fit_results.items()} + log_fitted_results(node.results["fit_results"], log_callable=node.log) + node.outcomes = { + sensor_name: ("successful" if fit_result["success"] else "failed") + for sensor_name, fit_result in node.results["fit_results"].items() + } + + +# %% {Plot_data} +@node.run_action(skip_if=node.parameters.simulate) +def plot_data(node: QualibrationNode[Parameters, Quam]): + """Plot the raw and fitted data.""" + fig_raw_fit = plot_raw_data_with_fit( + node.results["ds_raw"], node.namespace["sensors"], node.results["ds_fit"] + ) + plt.show() + node.results["figures"] = {"amplitude": fig_raw_fit} + annotate_node_figures(node) + + +# %% {Update_state} +@node.run_action(skip_if=node.parameters.simulate) +def update_state(node: QualibrationNode[Parameters, Quam]): + """Update the relevant parameters if the sensor data analysis was successful.""" + with node.record_state_updates(): + for s in node.namespace["sensors"]: + if node.outcomes[s.name] == "failed": + continue + + # Update the readout frequency + s.readout_resonator.intermediate_frequency += node.results["fit_results"][ + s.name + ]["frequency_shift"] + + +# %% {Save_results} +@node.run_action() +def save_results(node: QualibrationNode[Parameters, Quam]): + node.save() diff --git a/tests/analysis/artifacts/02a_resonator_spectroscopy/README.md b/tests/analysis/artifacts/02a_resonator_spectroscopy/README.md new file mode 100644 index 000000000..4e777937f --- /dev/null +++ b/tests/analysis/artifacts/02a_resonator_spectroscopy/README.md @@ -0,0 +1,58 @@ +# 02a_resonator_spectroscopy + +## Description + + + 1D RESONATOR SPECTROSCOPY +This sequence involves measuring the resonator by sending a readout pulse and demodulating the signals to extract the +'I' and 'Q' quadratures across varying readout intermediate frequencies for sensors. +The data is then post-processed to determine the resonator resonance frequency. +This frequency is used to update the readout frequency in the state. + +Prerequisites: + - If applicable, having calibrated the IQ mixer/Octave connected to the readout line (node 01a_mixer_calibration.py). + - Having calibrated the time of flight, offsets, and gains (node 01a_time_of_flight.py). + - Having initialized the QUAM state parameters for the readout pulse amplitude and duration. + +State update: + - The readout frequency: sensor.readout_resonator.intermediate_frequency + + +## Parameters + +| Parameter | Value | Description | +|-----------|-------|-------------| +| `num_shots` | `8` | Number of averages to perform. Default is 100. | +| `frequency_span_in_mhz` | `12` | Span of frequencies to sweep in MHz. Default is 30 MHz. | +| `frequency_step_in_mhz` | `0.04` | Step size for frequency sweep in MHz. Default is 0.1 MHz. | +| `sensor_names` | `['virtual_sensor_1']` | The list of sensor dot names to be included in the measurement. | +| `use_simulated_data` | `False` | Whether to generate simulated data instead of measuring via the OPX. Default False. | +| `simulate` | `False` | Simulate the waveforms on the OPX instead of executing the program. Default is False. | +| `simulation_duration_ns` | `50000` | Duration over which the simulation will collect samples (in nanoseconds). Default is 50_000 ns. | +| `use_waveform_report` | `True` | Whether to use the interactive waveform report in simulation. Default is True. | +| `timeout` | `120` | Waiting time for the OPX resources to become available before giving up (in seconds). Default is 120 s. | +| `load_data_id` | `None` | Optional QUAlibrate node run index for loading historical data. Default is None. | +| `multiplexed` | `False` | Whether to play control pulses, readout pulses and active/thermal reset at the same time for all qubits (True) +or to play the experiment sequentially for each qubit (False). Default is False. | +| `use_state_discrimination` | `False` | Whether to use on-the-fly state discrimination and return the qubit 'state', or simply return the demodulated +quadratures 'I' and 'Q'. Default is False. | +| `reset_wait_time` | `5000` | The wait time for qubit reset. | + +## Fit Results + +| Qubit | f_res (GHz) | t_pi (ns) | Omega_R (rad/ns) | gamma (1/ns) | T2* (ns) | success | +|-------|-------------|----------|--------------|----------|----------|--------| +| virtual_sensor_1 | 0.0000 | nan | nan | nan | inf | True | + +## Updated State + +| Qubit | intermediate_frequency (Hz) | xy.operations.x180.length (ns) | +|-------|-----------------------------|-----------------------------------------| +| virtual_sensor_1 | 0 | nan | + +## Analysis Output + +![Analysis simulation](simulation.png) + +--- +*Generated by analysis test infrastructure (virtual_qpu)* diff --git a/tests/execute/artifacts/02a_resonator_spectroscopy/README.md b/tests/execute/artifacts/02a_resonator_spectroscopy/README.md new file mode 100644 index 000000000..8ce554b7b --- /dev/null +++ b/tests/execute/artifacts/02a_resonator_spectroscopy/README.md @@ -0,0 +1,74 @@ +# 02a_resonator_spectroscopy + +## Description + + + 1D RESONATOR SPECTROSCOPY +This sequence involves measuring the resonator by sending a readout pulse and demodulating the signals to extract the +'I' and 'Q' quadratures across varying readout intermediate frequencies for sensors. +The data is then post-processed to determine the resonator resonance frequency. +This frequency is used to update the readout frequency in the state. + +Prerequisites: + - If applicable, having calibrated the IQ mixer/Octave connected to the readout line (node 01a_mixer_calibration.py). + - Having calibrated the time of flight, offsets, and gains (node 01a_time_of_flight.py). + - Having initialized the QUAM state parameters for the readout pulse amplitude and duration. + +State update: + - The readout frequency: sensor.readout_resonator.intermediate_frequency + + +## Parameters + +| Parameter | Value | Description | +|-----------|-------|-------------| +| `num_shots` | `10` | Number of averages to perform. Default is 100. | +| `frequency_span_in_mhz` | `40` | Span of frequencies to sweep in MHz. Default is 30 MHz. | +| `frequency_step_in_mhz` | `5.0` | Step size for frequency sweep in MHz. Default is 0.1 MHz. | +| `sensor_names` | `None` | The list of sensor dot names to be included in the measurement. | +| `use_simulated_data` | `False` | Whether to generate simulated data instead of measuring via the OPX. Default False. | +| `simulate` | `False` | Simulate the waveforms on the OPX instead of executing the program. Default is False. | +| `simulation_duration_ns` | `40000` | Duration over which the simulation will collect samples (in nanoseconds). Default is 50_000 ns. | +| `use_waveform_report` | `True` | Whether to use the interactive waveform report in simulation. Default is True. | +| `timeout` | `120` | Waiting time for the OPX resources to become available before giving up (in seconds). Default is 120 s. | +| `load_data_id` | `None` | Optional QUAlibrate node run index for loading historical data. Default is None. | +| `multiplexed` | `False` | Whether to play control pulses, readout pulses and active/thermal reset at the same time for all qubits (True) +or to play the experiment sequentially for each qubit (False). Default is False. | +| `use_state_discrimination` | `False` | Whether to use on-the-fly state discrimination and return the qubit 'state', or simply return the demodulated +quadratures 'I' and 'Q'. Default is False. | +| `reset_wait_time` | `5000` | The wait time for qubit reset. | + +## Execution Output + +![Phase](phase.png) +![Amplitude](amplitude.png) + + +## Fit Results + +### virtual_sensor_1 +| Parameter | Value | +|-----------|-------| +| `frequency` | `nan` | +| `fwhm` | `nan` | +| `success` | `False` | + +### virtual_sensor_2 +| Parameter | Value | +|-----------|-------| +| `frequency` | `nan` | +| `fwhm` | `nan` | +| `success` | `False` | + + +## Metadata + +| Key | Value | +|-----|-------| +| Timestamp | 2026-04-29T00:43:21 UTC | +| Node | 02a_resonator_spectroscopy | +| Duration | 5.1s | +| Status | completed | + +--- +*Generated by execute test infrastructure* diff --git a/tests/execute/artifacts/02a_resonator_spectroscopy/amplitude.png b/tests/execute/artifacts/02a_resonator_spectroscopy/amplitude.png new file mode 100644 index 0000000000000000000000000000000000000000..c5683b57c365c9125b3dd14e45f8cfc8d57a5998 GIT binary patch literal 127325 zcmeFZ_ghnG^ev8}C@NwZ3rJJ3pcJV}$4UoBq*tXAIs_zCVMeTgROuZ=N~CuX3sFh} z1QI$bB|zu_B82kY$C>$j@BIVr5BGU)o@YiA@SL3Y?04_A*IN5LyQ`(lwvTfk6B84g zs>-cFMerBO>DTKffXD;%+O_WQ@kcQCMA74B==zACdodICr2Gn07ER zsouJN|54J+(C)JPJ@gNYnhG_wwYP2KE+0vR<<*Zd@6BakR$jcJJMN0dYd2 zbIr3MSdySWZZdJh%BW^2Rty9lKsQ%osmDeu^Z5K#$og03>$A#P&OH|$ol9uO3 zMg~)5(C;?Zso2xLE^wmHQorxZ-sd{GTHo-=vf~8B?dUl307JDnVW)txZl=8tFUuaz zi;7vvt#lfw_}kYlV&BFFjZk9Iw9{kz%L#LdCh=QlxiXtGO4AGQdFymfe!G9WT;q7G z@mP8&k65zta!%8V1+Oxs+3cLz$lM{Ox7oHg4|jE_2t)^iBjL*{+XGj9L{sv{2+3*$A4d~O2vS4Z9BC$ zoi@=Pb&y-;YZ$j|+ct0DMzP$&2j+XVUQQKqOniK!xbQeMl@!n5EzwZPU?F&P~jvV zKHFceZss$7EYGaIW~?Pfy~L*7A$GnP#}fr#d5?rSx33wFf3_z-u1^c1R(wD+uGq1! zBqwR>ji@F3{$(>t`uHz&b%K=BwBJl>;Fg;(b~A^1ILxWshi2omHXfI4)1EN#rh|8W z7H9C#-ri8?u>bZZJ#m~k-tDG~=AC3*MUga80=InPMJ=D;oN`;o?Gq>8ysv3T4^Y>s zB~lLEDlF_gf)qlkcDI;A-r(t*Pu`5`R_5~H`bur%md0DvE1id|)|aQAna#&s)^FJ_ zQfCnsbK~!Q@s_v6*E~hoil&m$YYFGo-MhsC^$H-kPO=RM-D z?_4u=-s4rLf8o{okrHclS`vC@J!9ZL)@g-G_BNv}W4ExQf%Aja#CbW-MB{

8dO$ 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 literal 0 HcmV?d00001 diff --git a/tests/execute/artifacts/02a_resonator_spectroscopy/phase.png b/tests/execute/artifacts/02a_resonator_spectroscopy/phase.png new file mode 100644 index 0000000000000000000000000000000000000000..66bcb4e6fc6d6946673f303a962de1b3f466e18e GIT binary patch literal 103736 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 z�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 E02L%p;{X5v literal 0 HcmV?d00001 diff --git a/tests/execute/artifacts/02b_resonator_spectroscopy_vs_power/README.md b/tests/execute/artifacts/02b_resonator_spectroscopy_vs_power/README.md new file mode 100644 index 000000000..35bd0dd4c --- /dev/null +++ b/tests/execute/artifacts/02b_resonator_spectroscopy_vs_power/README.md @@ -0,0 +1,85 @@ +# 02b_resonator_spectroscopy_vs_power + +## Description + + + RESONATOR SPECTROSCOPY VERSUS READOUT POWER +This sequence involves measuring the resonator by sending a readout pulse and +demodulating the signals to extract the 'I' and 'Q' quadratures for all resonators +simultaneously. This is done across various readout frequencies and amplitudes. +Based on the results, one can then adjust the readout amplitude, choosing a +readout amplitude value just before the observed frequency splitting. + +Prerequisites: + - Having calibrated the resonator frequency (node 02a_resonator_spectroscopy.py). + - Having instantiated a starting readout amplitude. + +State update: + - The readout power: sensor.readout_resonator.set_output_power() + - The readout frequency for the optimal readout power. + + +## Parameters + +| Parameter | Value | Description | +|-----------|-------|-------------| +| `multiplexed` | `False` | Whether to play control pulses, readout pulses and active/thermal reset at the same time for all qubits (True) +or to play the experiment sequentially for each qubit (False). Default is False. | +| `use_state_discrimination` | `False` | Whether to use on-the-fly state discrimination and return the qubit 'state', or simply return the demodulated +quadratures 'I' and 'Q'. Default is False. | +| `reset_wait_time` | `5000` | The wait time for qubit reset. | +| `num_shots` | `10` | Number of averages to perform. Default is 100. | +| `sensor_names` | `None` | The list of sensor dot names to be included in the measurement. | +| `frequency_span_in_mhz` | `40.0` | Span of frequencies to sweep in MHz. Default is 15 MHz. | +| `frequency_step_in_mhz` | `5.0` | Step size for frequency sweep in MHz. Default is 0.1 MHz. | +| `min_power_dbm` | `-50` | Minimum power level in dBm. Default is -50 dBm. | +| `max_power_dbm` | `-25` | Maximum power level in dBm. Default is -25 dBm. | +| `num_power_points` | `100` | Number of points of the readout power axis. Default is 100. | +| `max_amp` | `0.1` | Maximum readout amplitude for the experiment. Default is 0.1. | +| `derivative_crossing_threshold_in_hz_per_dbm` | `-50000` | Threshold for derivative crossing in Hz/dBm. Default is -50000 Hz/dBm. | +| `derivative_smoothing_window_num_points` | `10` | Size of the window in number of points corresponding to the rolling average (number of points). Default is 10. | +| `moving_average_filter_window_num_points` | `10` | Size of the moving average filter window (number of points). Default is 5. | +| `buffer_from_crossing_threshold_in_dbm` | `1` | Buffer from the crossing threshold in dBm - the optimal readout power will be set to be this number in Db below +the threshold. Default is 1 dBm. | +| `use_simulated_data` | `False` | Whether to generate simulated data instead of measuring via the OPX. Default False. | +| `simulate` | `False` | Simulate the waveforms on the OPX instead of executing the program. Default is False. | +| `simulation_duration_ns` | `40000` | Duration over which the simulation will collect samples (in nanoseconds). Default is 50_000 ns. | +| `use_waveform_report` | `True` | Whether to use the interactive waveform report in simulation. Default is True. | +| `timeout` | `120` | Waiting time for the OPX resources to become available before giving up (in seconds). Default is 120 s. | +| `load_data_id` | `None` | Optional QUAlibrate node run index for loading historical data. Default is None. | + +## Execution Output + +![Amplitude](amplitude.png) + + +## Fit Results + +### virtual_sensor_1 +| Parameter | Value | +|-----------|-------| +| `success` | `False` | +| `resonator_frequency` | `nan` | +| `frequency_shift` | `nan` | +| `optimal_power` | `-51.0` | + +### virtual_sensor_2 +| Parameter | Value | +|-----------|-------| +| `success` | `False` | +| `resonator_frequency` | `nan` | +| `frequency_shift` | `nan` | +| `optimal_power` | `-51.0` | + + +## Metadata + +| Key | Value | +|-----|-------| +| Timestamp | 2026-04-29T00:43:27 UTC | +| Node | 02b_resonator_spectroscopy_vs_power | +| Duration | 5.0s | +| Status | completed | + +--- +*Generated by execute test infrastructure* diff --git a/tests/execute/artifacts/02b_resonator_spectroscopy_vs_power/amplitude.png b/tests/execute/artifacts/02b_resonator_spectroscopy_vs_power/amplitude.png new file mode 100644 index 0000000000000000000000000000000000000000..96de818086db15faf8018243642adc0e77d73b50 GIT binary patch literal 310510 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%0Dk0v+bKR8ki;Is(=-9b+;S4a@ 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