Experiment Workflows¶
This tutorial shows how to use the experiments in the Applications Library, which are all implemented using the Workflow objects of LabOne Q.
A Workflow
is a collection of logically connected Tasks
or other workflows whose inputs and outputs depend on each other. The parent Workflow
automatically distributes options to all its Tasks
and saves their inputs and outputs. To learn more about Tasks
, check out the tutorial on using Tasks in LabOne Q
When instantiated, a function decorated with @workflow
builds a graph of tasks that will be executed later. This graph may be inspected. The graph of tasks is not executed directly by Python, but by a workflow engine provided by LabOne Q. To learn more about workflows, tasks, options, and the saving functionality of workflows check out the tutorials in the LabOne Q core manual.
Experiment Workflows
have the standard tasks shown in the image below:
Let's see what these tasks are:
create_experiment
for creating the experimental pulse sequence as an instance of the LabOne Q Experiment class. This task is typically unique for every experiment.compile_experiment
for compiling theExperiment
returned bycreate_experiment
.run_experiment
for running theCompiledExperiment
returned bycompile_experiment
.analysis_workflow
for running the analysis on theRunExperimentResults
returned byrun_experiment
.update_qubits
for updating the relevant qubit parameters with the values found in theanalysis_workflow
.
The Tasks
compile_experiment
, run_experiment
, and update_qubits
can be used for all experiments, because they are independent of the details of the experiment being implemented. create_experiment
and analysis_workflow
typically need to be implemented for every experiment.
Experiment Workflows
also have a few standard input parameters:
session
: a LabOne QSession
.qpu
: aQPU
object containing the most up-to-date knowledge about the parameters of the quantum processor.qubits
: the list of qubit instances on theqpu
, on which to run the experiment.- (the sweep points if relevant)
temporary_parameters
for temporarily overwriting the qubit parameters during the execution of the experiment.options
: an instance ofWorkflowOptions
.
Let's look at all of this in more detail.
Create a device setup and session¶
First, we create a LabOne Q DeviceSetup
, and 6 TunableTransmonQubits
and their corresponding TunableTransmonOperations
using the demo QuantumPlatform
provided by the Applications Library for running in emulation mode. See the Getting Started tutorial for more details about the QuantumPlatform
and how to create your experimental setup and prepare it for running experiments.
import numpy as np
from laboneq.core.exceptions import LabOneQException
from laboneq.simple import *
from laboneq_applications.qpu_types.tunable_transmon import demo_platform
# Create a demonstration QuantumPlatform for a tunable-transmon QPU:
qt_platform = demo_platform(n_qubits=6)
# The platform contains a setup, which is an ordinary LabOne Q DeviceSetup:
setup = qt_platform.setup
# And a tunable-transmon QPU:
qpu = qt_platform.qpu
# Inside the QPU, we have qubits, which is a list of six LabOne Q Application
# Library TunableTransmonQubit qubits:
qubits = qpu.qubits
session = Session(setup)
session.connect(do_emulation=True)
[2024.12.19 17:10:33.150] INFO Logging initialized from [Default inline config in laboneq.laboneq_logging] logdir is /builds/qccs/laboneq-applications/docs/sources/tutorials/sources/laboneq_output/log
[2024.12.19 17:10:33.152] INFO VERSION: laboneq 2.43.0
[2024.12.19 17:10:33.153] INFO Connecting to data server at localhost:8004
[2024.12.19 17:10:33.155] INFO Connected to Zurich Instruments LabOne Data Server version 24.10 at localhost:8004
[2024.12.19 17:10:33.157] INFO Configuring the device setup
[2024.12.19 17:10:33.193] INFO The device setup is configured
<laboneq.dsl.session.ConnectionState at 0x74e5853ba240>
Create a FolderStore for Saving Data¶
The experiment Workflows
can automatically save the inputs and outputs of all their tasks to the folder path we specify when instantiating the FolderStore. Here, we choose the current working directory.
# import FolderStore from the `workflow` namespace of LabOne Q, which was imported
# from `laboneq.simple`
from pathlib import Path
folder_store = workflow.logbook.FolderStore(Path.cwd())
We disable saving in this tutorial. To enable it, simply run folder_store.activate()
.
folder_store.deactivate()
Inspect an experiment Workflow¶
Let's start by inspecting the experiment Workflow
for the Ramsey experiment.
from laboneq_applications.experiments import ramsey
Inspect the source code of the ramsey
Workflow
to see that the tasks follow the standard structure and logic of experiment workflows shown above. Notice that the workflow uses special constructions for conditional logic (with workflow.if_(condition)
). Have a look at the Workflow syntax tutorial to learn more about the syntax used by Workflows
.
ramsey.experiment_workflow.src
@workflow.workflow(name="ramsey")
def experiment_workflow(
session: Session,
qpu: QPU,
qubits: Qubits,
delays: QubitSweepPoints,
detunings: float | Sequence[float] | None = None,
temporary_parameters: dict[str, dict | TransmonParameters] | None = None,
options: TuneUpWorkflowOptions | None = None,
) -> None:
"""The Ramsey Workflow.
The workflow consists of the following steps:
- [create_experiment]()
- [compile_experiment]()
- [run_experiment]()
- [analysis_workflow]()
- [update_qubits]()
Arguments:
session:
The connected session to use for running the experiment.
qpu:
The qpu consisting of the original qubits and quantum operations.
qubits:
The qubits to run the experiments on. May be either a single
qubit or a list of qubits.
delays:
The delays (in seconds) of the second x90 pulse to sweep over for each
qubit. If `qubits` is a single qubit, `delays` must be a list of numbers
or an array. Otherwise, it must be a list of lists of numbers or arrays.
detunings:
The detuning in Hz to generate oscillating qubit occupations. `detunings`
is a list of float values for each qubits following the order in `qubits`.
temporary_parameters:
The temporary parameters to update the qubits with.
options:
The options for building the workflow.
In addition to options from [WorkflowOptions], the following
custom options are supported:
- create_experiment: The options for creating the experiment.
Returns:
result:
The result of the workflow.
Example:
```python
options = experiment_workflow.options()
options.create_experiment.count(10)
options.create_experiment.transition("ge")
qpu = QPU(
setup=DeviceSetup("my_device"),
qubits=[TunableTransmonQubit("q0"), TunableTransmonQubit("q1")],
quantum_operations=TunableTransmonOperations(),
)
temp_qubits = qpu.copy_qubits()
result = experiment_workflow(
session=session,
qpu=qpu,
qubits=temp_qubits,
delays=[[0.1, 0.5, 1], [0.1, 0.5, 1]],
detunings = {'q0':1e6,'q1':1.346e6},
options=options,
).run()
```
"""
qubits = temporary_modify(qubits, temporary_parameters)
exp = create_experiment(
qpu,
qubits,
delays=delays,
detunings=detunings,
)
compiled_exp = compile_experiment(session, exp)
result = run_experiment(session, compiled_exp)
with workflow.if_(options.do_analysis):
analysis_results = analysis_workflow(result, qubits, delays, detunings)
qubit_parameters = analysis_results.output
with workflow.if_(options.update):
update_qubits(qpu, qubit_parameters["new_parameter_values"])
workflow.return_(result)
Instantiate the experiment Workflow¶
Let's instantiate the ramsey
Workflow
for one single qubit.
Note, instantiating the Workflow
does not run it. Instantiation only resolves the dependencies of the tasks within the workflow.
experiment_workflow = ramsey.experiment_workflow(
session=session,
qpu=qpu,
qubits=qubits[0],
delays=np.linspace(0, 20e-6, 51),
detunings=0.67e6,
)
Inspect the tree display of the built dependency graph:
experiment_workflow.graph.tree
workflow(name=ramsey) ├─ task(name=temporary_modify) ├─ task(name=create_experiment) ├─ task(name=compile_experiment) ├─ task(name=run_experiment) ├─ conditional │ └─ if_() │ ├─ workflow(name=analysis_workflow) │ │ ├─ task(name=calculate_qubit_population) │ │ ├─ task(name=fit_data) │ │ ├─ task(name=extract_qubit_parameters) │ │ ├─ conditional │ │ │ └─ if_() │ │ │ ├─ conditional │ │ │ │ └─ if_() │ │ │ │ └─ task(name=plot_raw_complex_data_1d) │ │ │ └─ conditional │ │ │ └─ if_() │ │ │ └─ task(name=plot_population) │ │ └─ return_() │ └─ conditional │ └─ if_() │ └─ task(name=update_qubits) └─ return_()
Run the experiment Workflow¶
To execute the experiment Workflow
, we call its run()
method:
workflow_result = experiment_workflow.run()
[2024.12.19 17:10:33.363] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:10:33.363] INFO Workflow 'ramsey': execution started at 2024-12-19 17:10:33.362784Z
[2024.12.19 17:10:33.364] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:10:33.365] INFO Task 'temporary_modify': started at 2024-12-19 17:10:33.365039Z
[2024.12.19 17:10:33.365] INFO Task 'temporary_modify': ended at 2024-12-19 17:10:33.365726Z
[2024.12.19 17:10:33.366] INFO Task 'create_experiment': started at 2024-12-19 17:10:33.366400Z
[2024.12.19 17:10:33.369] INFO Task 'create_experiment': ended at 2024-12-19 17:10:33.368835Z
[2024.12.19 17:10:33.369] INFO Task 'compile_experiment': started at 2024-12-19 17:10:33.369539Z
[2024.12.19 17:10:33.377] INFO Resolved modulation type of oscillator 'q0_readout_acquire_osc' on signal '/logical_signal_groups/q0/acquire' to SOFTWARE
[2024.12.19 17:10:33.378] INFO Resolved modulation type of oscillator 'q0_drive_ge_osc' on signal '/logical_signal_groups/q0/drive' to HARDWARE
[2024.12.19 17:10:33.378] INFO Resolved modulation type of oscillator 'q0_drive_ef_osc' on signal '/logical_signal_groups/q0/drive_ef' to HARDWARE
[2024.12.19 17:10:33.379] INFO Starting LabOne Q Compiler run...
[2024.12.19 17:10:33.418] INFO Schedule completed. [0.037 s]
[2024.12.19 17:10:33.512] INFO Code generation completed for all AWGs. [0.094 s]
[2024.12.19 17:10:33.513] INFO Completed compilation step 1 of 1. [0.132 s]
[2024.12.19 17:10:33.517] INFO ─────────────────────────────────────────────────────────────────────
[2024.12.19 17:10:33.518] INFO Device AWG SeqC LOC CT entries Waveforms Samples
[2024.12.19 17:10:33.518] INFO ─────────────────────────────────────────────────────────────────────
[2024.12.19 17:10:33.519] INFO device_hdawg 0 4 1 0 0
[2024.12.19 17:10:33.519] INFO device_shfqc 0 162 0 1 8000
[2024.12.19 17:10:33.520] INFO device_shfqc_sg 0 370 54 53 12064
[2024.12.19 17:10:33.520] INFO ─────────────────────────────────────────────────────────────────────
[2024.12.19 17:10:33.520] INFO TOTAL 536 55 20064
[2024.12.19 17:10:33.521] INFO ─────────────────────────────────────────────────────────────────────
[2024.12.19 17:10:33.525] INFO Finished LabOne Q Compiler run.
[2024.12.19 17:10:33.530] INFO Task 'compile_experiment': ended at 2024-12-19 17:10:33.530594Z
[2024.12.19 17:10:33.531] INFO Task 'run_experiment': started at 2024-12-19 17:10:33.531422Z
[2024.12.19 17:10:33.541] INFO Starting near-time execution...
[2024.12.19 17:10:33.566] INFO Finished near-time execution.
[2024.12.19 17:10:33.568] INFO Task 'run_experiment': ended at 2024-12-19 17:10:33.567877Z
[2024.12.19 17:10:33.569] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:10:33.569] INFO Workflow 'analysis_workflow': execution started at 2024-12-19
[2024.12.19 17:10:33.570] INFO 17:10:33.568945Z
[2024.12.19 17:10:33.570] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:10:33.570] INFO Task 'calculate_qubit_population': started at 2024-12-19 17:10:33.570748Z
[2024.12.19 17:10:33.572] INFO Task 'calculate_qubit_population': ended at 2024-12-19 17:10:33.572125Z
[2024.12.19 17:10:33.573] INFO Task 'fit_data': started at 2024-12-19 17:10:33.572780Z
[2024.12.19 17:10:33.856] INFO Task 'fit_data': ended at 2024-12-19 17:10:33.856673Z
[2024.12.19 17:10:33.857] INFO Task 'extract_qubit_parameters': started at 2024-12-19 17:10:33.857519Z
[2024.12.19 17:10:33.858] INFO Task 'extract_qubit_parameters': ended at 2024-12-19 17:10:33.858721Z
[2024.12.19 17:10:33.859] INFO Task 'plot_raw_complex_data_1d': started at 2024-12-19 17:10:33.859460Z
[2024.12.19 17:10:33.886] INFO Artifact: 'Raw_data_q0' of type 'Figure' logged at 2024-12-19 17:10:33.886336Z
[2024.12.19 17:10:33.887] INFO Task 'plot_raw_complex_data_1d': ended at 2024-12-19 17:10:33.887128Z
[2024.12.19 17:10:33.888] INFO Task 'plot_population': started at 2024-12-19 17:10:33.888056Z
[2024.12.19 17:10:33.900] INFO Artifact: 'Ramsey_q0' of type 'Figure' logged at 2024-12-19 17:10:33.900694Z
[2024.12.19 17:10:33.901] INFO Task 'plot_population': ended at 2024-12-19 17:10:33.901500Z
[2024.12.19 17:10:33.902] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:10:33.903] INFO Workflow 'analysis_workflow': execution ended at 2024-12-19 17:10:33.902184Z
[2024.12.19 17:10:33.903] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:10:33.904] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:10:33.905] INFO Workflow 'ramsey': execution ended at 2024-12-19 17:10:33.904147Z
[2024.12.19 17:10:33.905] INFO ──────────────────────────────────────────────────────────────────────────────
Inspect an executed experiment Workflow¶
Now that the Workflow
has run, we can inspect its inputs and outputs, as well as the inputs and outputs of all its tasks.
Workflow inputs¶
Let's first inspect the input parameters of the ramsey
Workflow
workflow_result.input
{'session': <laboneq.dsl.session.Session at 0x74e5849d37d0>, 'qpu': QPU( │ qubits=[ │ │ 'q0', │ │ 'q1', │ │ 'q2', │ │ 'q3', │ │ 'q4', │ │ 'q5' │ ], │ quantum_operations='TunableTransmonOperations' ) , 'qubits': TunableTransmonQubit( │ uid='q0', │ signals={'drive': '/logical_signal_groups/q0/drive', 'drive_ef': '/logical_signal_groups/q0/drive_ef', 'measure': '/logical_signal_groups/q0/measure', 'acquire': '/logical_signal_groups/q0/acquire', 'flux': '/logical_signal_groups/q0/flux'}, │ parameters=TunableTransmonQubitParameters( │ │ resonance_frequency_ge=6500000000.0, │ │ resonance_frequency_ef=6300000000.0, │ │ drive_lo_frequency=6400000000, │ │ readout_resonator_frequency=7100000000.0, │ │ readout_lo_frequency=7000000000.0, │ │ readout_integration_delay=2e-08, │ │ drive_range=10, │ │ readout_range_out=5, │ │ readout_range_in=10, │ │ flux_offset_voltage=0, │ │ user_defined={}, │ │ ge_T1=0, │ │ ge_T2=0, │ │ ge_T2_star=0, │ │ ef_T1=0, │ │ ef_T2=0, │ │ ef_T2_star=0, │ │ ge_drive_amplitude_pi=0.8, │ │ ge_drive_amplitude_pi2=0.4, │ │ ge_drive_length=5.1e-08, │ │ ge_drive_pulse={ │ │ │ 'function': 'drag', │ │ │ 'beta': 0.01, │ │ │ 'sigma': 0.21 │ │ }, │ │ ef_drive_amplitude_pi=0.7, │ │ ef_drive_amplitude_pi2=0.3, │ │ ef_drive_length=5.2e-08, │ │ ef_drive_pulse={ │ │ │ 'function': 'drag', │ │ │ 'beta': 0.01, │ │ │ 'sigma': 0.21 │ │ }, │ │ readout_amplitude=1.0, │ │ readout_length=2e-06, │ │ readout_pulse={ │ │ │ 'function': 'const' │ │ }, │ │ readout_integration_length=2e-06, │ │ readout_integration_kernels_type='default', │ │ readout_integration_kernels=None, │ │ readout_integration_discrimination_thresholds=None, │ │ reset_delay_length=1e-06, │ │ spectroscopy_length=5e-06, │ │ spectroscopy_amplitude=1, │ │ spectroscopy_pulse={ │ │ │ 'function': 'const', │ │ │ 'can_compress': True │ │ }, │ │ dc_slot=0, │ │ dc_voltage_parking=0.0 │ ) ) , 'delays': array([0.00e+00, 4.00e-07, 8.00e-07, 1.20e-06, 1.60e-06, 2.00e-06, 2.40e-06, 2.80e-06, 3.20e-06, 3.60e-06, 4.00e-06, 4.40e-06, 4.80e-06, 5.20e-06, 5.60e-06, 6.00e-06, 6.40e-06, 6.80e-06, 7.20e-06, 7.60e-06, 8.00e-06, 8.40e-06, 8.80e-06, 9.20e-06, 9.60e-06, 1.00e-05, 1.04e-05, 1.08e-05, 1.12e-05, 1.16e-05, 1.20e-05, 1.24e-05, 1.28e-05, 1.32e-05, 1.36e-05, 1.40e-05, 1.44e-05, 1.48e-05, 1.52e-05, 1.56e-05, 1.60e-05, 1.64e-05, 1.68e-05, 1.72e-05, 1.76e-05, 1.80e-05, 1.84e-05, 1.88e-05, 1.92e-05, 1.96e-05, 2.00e-05]), 'detunings': 670000.0, 'temporary_parameters': None, 'options': TuneUpWorkflowOptions(do_analysis=True, update=False, _task_options={})}
Workflow tasks¶
Inspect the tasks of the Workflow
. Notice that the update_qubits
tasks does not appear in this task list. This is because the updating functionality is disabled by default. We will see later how to enable it using the options.
for t in workflow_result.tasks:
print(t)
TaskResult(name=temporary_modify, index=()) TaskResult(name=create_experiment, index=()) TaskResult(name=compile_experiment, index=()) TaskResult(name=run_experiment, index=()) WorkflowResult(name=analysis_workflow, index=())
Inspect the source code of the create_experiment
task to see how the experiment pulse sequence was created:
workflow_result.tasks["create_experiment"].src
@workflow.task
@dsl.qubit_experiment
def create_experiment(
qpu: QPU,
qubits: Qubits,
delays: QubitSweepPoints,
detunings: float | Sequence[float] | None = None,
options: TuneupExperimentOptions | None = None,
) -> Experiment:
"""Creates a Ramsey Experiment.
Arguments:
qpu:
The qpu consisting of the original qubits and quantum operations.
qubits:
The qubits to run the experiments on. May be either a single
qubit or a list of qubits.
delays:
The delays (in seconds) of the second x90 pulse to sweep over for each
qubit. If `qubits` is a single qubit, `delays` must be a list of numbers
or an array. Otherwise, it must be a list of lists of numbers or arrays.
detunings:
The detuning in Hz introduced in order to generate oscillations of the qubit
state vector around the Bloch sphere. This detuning and the frequency of the
fitted oscillations is used to calculate the true qubit resonance frequency.
`detunings` is a list of float values for each qubit following the order
in `qubits`.
options:
The options for building the experiment.
See [TuneupExperimentOptions] and [BaseExperimentOptions] for
accepted options.
Overwrites the options from [TuneupExperimentOptions] and
[BaseExperimentOptions].
Returns:
experiment:
The generated LabOne Q experiment instance to be compiled and executed.
Raises:
ValueError:
If the lengths of `qubits` and `delays` do not match.
ValueError:
If `delays` is not a list of numbers when a single qubit is passed.
ValueError:
If `delays` is not a list of lists of numbers when a list of qubits
is passed.
ValueError:
If the experiment uses calibration traces and the averaging mode is
sequential.
Example:
```python
options = TuneupExperimentOptions()
qpu = QPU(
qubits=[TunableTransmonQubit("q0"), TunableTransmonQubit("q1")],
quantum_operations=TunableTransmonOperations(),
)
temp_qubits = qpu.copy_qubits()
create_experiment(
qpu=qpu,
qubits=temp_qubits,
delays=[
np.linspace(0, 20e-6, 51),
np.linspace(0, 30e-6, 52),
],
detunings = [1e6, 1.346e6],
options=options,
)
```
"""
# Define the custom options for the experiment
opts = TuneupExperimentOptions() if options is None else options
qubits, delays = validation.validate_and_convert_qubits_sweeps(qubits, delays)
detunings = validate_and_convert_detunings(qubits, detunings)
if (
opts.use_cal_traces
and AveragingMode(opts.averaging_mode) == AveragingMode.SEQUENTIAL
):
raise ValueError(
"'AveragingMode.SEQUENTIAL' (or {AveragingMode.SEQUENTIAL}) cannot be used "
"with calibration traces because the calibration traces are added "
"outside the sweep."
)
swp_delays = []
swp_phases = []
for i, q in enumerate(qubits):
q_delays = delays[i]
swp_delays += [
SweepParameter(
uid=f"wait_time_{q.uid}",
values=q_delays,
),
]
swp_phases += [
SweepParameter(
uid=f"x90_phases_{q.uid}",
values=np.array(
[
((wait_time - q_delays[0]) * detunings[i] * 2 * np.pi)
% (2 * np.pi)
for wait_time in q_delays
]
),
),
]
# We will fix the length of the measure section to the longest section among
# the qubits to allow the qubits to have different readout and/or
# integration lengths.
max_measure_section_length = qpu.measure_section_length(qubits)
qop = qpu.quantum_operations
with dsl.acquire_loop_rt(
count=opts.count,
averaging_mode=opts.averaging_mode,
acquisition_type=opts.acquisition_type,
repetition_mode=opts.repetition_mode,
repetition_time=opts.repetition_time,
reset_oscillator_phase=opts.reset_oscillator_phase,
):
with dsl.sweep(
name="ramsey_sweep",
parameter=swp_delays + swp_phases,
):
if opts.active_reset:
qop.active_reset(
qubits,
active_reset_states=opts.active_reset_states,
number_resets=opts.active_reset_repetitions,
measure_section_length=max_measure_section_length,
)
with dsl.section(name="main", alignment=SectionAlignment.RIGHT):
with dsl.section(name="main_drive", alignment=SectionAlignment.RIGHT):
for q, wait_time, phase in zip(qubits, swp_delays, swp_phases):
qop.prepare_state.omit_section(q, opts.transition[0])
qop.ramsey.omit_section(
q, wait_time, phase, transition=opts.transition
)
with dsl.section(name="main_measure", alignment=SectionAlignment.LEFT):
for q in qubits:
sec = qop.measure(q, dsl.handles.result_handle(q.uid))
# Fix the length of the measure section
sec.length = max_measure_section_length
qop.passive_reset(q)
if opts.use_cal_traces:
qop.calibration_traces.omit_section(
qubits=qubits,
states=opts.cal_states,
active_reset=opts.active_reset,
active_reset_states=opts.active_reset_states,
active_reset_repetitions=opts.active_reset_repetitions,
measure_section_length=max_measure_section_length,
)
Inspect the LabOne Q Experiment
object returned by the create_experiment
task:
workflow_result.tasks["create_experiment"].output
Experiment( │ uid='create_experiment', │ name='unnamed', │ signals={ │ │ '/logical_signal_groups/q0/drive': ExperimentSignal( │ │ │ uid='/logical_signal_groups/q0/drive', │ │ │ calibration=SignalCalibration( │ │ │ │ oscillator=Oscillator( │ │ │ │ │ uid='q0_drive_ge_osc', │ │ │ │ │ frequency=100000000.0, │ │ │ │ │ modulation_type=ModulationType.AUTO, │ │ │ │ │ carrier_type=None │ │ │ │ ), │ │ │ │ local_oscillator=Oscillator( │ │ │ │ │ uid='q0_drive_local_osc', │ │ │ │ │ frequency=6400000000, │ │ │ │ │ modulation_type=ModulationType.AUTO, │ │ │ │ │ carrier_type=None │ │ │ │ ), │ │ │ │ mixer_calibration=None, │ │ │ │ precompensation=None, │ │ │ │ port_delay=None, │ │ │ │ port_mode=None, │ │ │ │ delay_signal=None, │ │ │ │ voltage_offset=None, │ │ │ │ range=10, │ │ │ │ threshold=None, │ │ │ │ amplitude=None, │ │ │ │ amplifier_pump=None, │ │ │ │ added_outputs=None, │ │ │ │ automute=False │ │ │ ), │ │ │ mapped_logical_signal_path='/logical_signal_groups/q0/drive' │ │ ), │ │ '/logical_signal_groups/q0/drive_ef': ExperimentSignal( │ │ │ uid='/logical_signal_groups/q0/drive_ef', │ │ │ calibration=SignalCalibration( │ │ │ │ oscillator=Oscillator( │ │ │ │ │ uid='q0_drive_ef_osc', │ │ │ │ │ frequency=-100000000.0, │ │ │ │ │ modulation_type=ModulationType.AUTO, │ │ │ │ │ carrier_type=None │ │ │ │ ), │ │ │ │ local_oscillator=Oscillator( │ │ │ │ │ uid='q0_drive_local_osc', │ │ │ │ │ frequency=6400000000, │ │ │ │ │ modulation_type=ModulationType.AUTO, │ │ │ │ │ carrier_type=None │ │ │ │ ), │ │ │ │ mixer_calibration=None, │ │ │ │ precompensation=None, │ │ │ │ port_delay=None, │ │ │ │ port_mode=None, │ │ │ │ delay_signal=None, │ │ │ │ voltage_offset=None, │ │ │ │ range=10, │ │ │ │ threshold=None, │ │ │ │ amplitude=None, │ │ │ │ amplifier_pump=None, │ │ │ │ added_outputs=None, │ │ │ │ automute=False │ │ │ ), │ │ │ mapped_logical_signal_path='/logical_signal_groups/q0/drive_ef' │ │ ), │ │ '/logical_signal_groups/q0/measure': ExperimentSignal( │ │ │ uid='/logical_signal_groups/q0/measure', │ │ │ calibration=SignalCalibration( │ │ │ │ oscillator=Oscillator( │ │ │ │ │ uid='q0_readout_acquire_osc', │ │ │ │ │ frequency=100000000.0, │ │ │ │ │ modulation_type=ModulationType.AUTO, │ │ │ │ │ carrier_type=None │ │ │ │ ), │ │ │ │ local_oscillator=Oscillator( │ │ │ │ │ uid='q0_readout_local_osc', │ │ │ │ │ frequency=7000000000.0, │ │ │ │ │ modulation_type=ModulationType.AUTO, │ │ │ │ │ carrier_type=None │ │ │ │ ), │ │ │ │ mixer_calibration=None, │ │ │ │ precompensation=None, │ │ │ │ port_delay=None, │ │ │ │ port_mode=None, │ │ │ │ delay_signal=None, │ │ │ │ voltage_offset=None, │ │ │ │ range=5, │ │ │ │ threshold=None, │ │ │ │ amplitude=None, │ │ │ │ amplifier_pump=None, │ │ │ │ added_outputs=None, │ │ │ │ automute=False │ │ │ ), │ │ │ mapped_logical_signal_path='/logical_signal_groups/q0/measure' │ │ ), │ │ '/logical_signal_groups/q0/acquire': ExperimentSignal( │ │ │ uid='/logical_signal_groups/q0/acquire', │ │ │ calibration=SignalCalibration( │ │ │ │ oscillator=Oscillator( │ │ │ │ │ uid='q0_readout_acquire_osc', │ │ │ │ │ frequency=100000000.0, │ │ │ │ │ modulation_type=ModulationType.AUTO, │ │ │ │ │ carrier_type=None │ │ │ │ ), │ │ │ │ local_oscillator=Oscillator( │ │ │ │ │ uid='q0_readout_local_osc', │ │ │ │ │ frequency=7000000000.0, │ │ │ │ │ modulation_type=ModulationType.AUTO, │ │ │ │ │ carrier_type=None │ │ │ │ ), │ │ │ │ mixer_calibration=None, │ │ │ │ precompensation=None, │ │ │ │ port_delay=2e-08, │ │ │ │ port_mode=None, │ │ │ │ delay_signal=None, │ │ │ │ voltage_offset=None, │ │ │ │ range=10, │ │ │ │ threshold=None, │ │ │ │ amplitude=None, │ │ │ │ amplifier_pump=None, │ │ │ │ added_outputs=None, │ │ │ │ automute=False │ │ │ ), │ │ │ mapped_logical_signal_path='/logical_signal_groups/q0/acquire' │ │ ), │ │ '/logical_signal_groups/q0/flux': ExperimentSignal( │ │ │ uid='/logical_signal_groups/q0/flux', │ │ │ calibration=SignalCalibration( │ │ │ │ oscillator=None, │ │ │ │ local_oscillator=None, │ │ │ │ mixer_calibration=None, │ │ │ │ precompensation=None, │ │ │ │ port_delay=None, │ │ │ │ port_mode=None, │ │ │ │ delay_signal=None, │ │ │ │ voltage_offset=0, │ │ │ │ range=None, │ │ │ │ threshold=None, │ │ │ │ amplitude=None, │ │ │ │ amplifier_pump=None, │ │ │ │ added_outputs=None, │ │ │ │ automute=False │ │ │ ), │ │ │ mapped_logical_signal_path='/logical_signal_groups/q0/flux' │ │ ) │ }, │ version=DSLVersion.V3_0_0, │ epsilon=0.0, │ sections=[ │ │ AcquireLoopRt( │ │ │ uid='unnamed_0', │ │ │ name='unnamed', │ │ │ alignment=SectionAlignment.LEFT, │ │ │ execution_type=ExecutionType.REAL_TIME, │ │ │ length=None, │ │ │ play_after=None, │ │ │ children=[ │ │ │ │ Sweep( │ │ │ │ │ uid='ramsey_sweep_0', │ │ │ │ │ name='ramsey_sweep', │ │ │ │ │ alignment=SectionAlignment.LEFT, │ │ │ │ │ execution_type=None, │ │ │ │ │ length=None, │ │ │ │ │ play_after=None, │ │ │ │ │ children=[ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ uid='main_0', │ │ │ │ │ │ │ name='main', │ │ │ │ │ │ │ alignment=SectionAlignment.RIGHT, │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ │ │ uid='main_drive_0', │ │ │ │ │ │ │ │ │ name='main_drive', │ │ │ │ │ │ │ │ │ alignment=SectionAlignment.RIGHT, │ │ │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ │ │ │ │ uid='ramsey_q0_0', │ │ │ │ │ │ │ │ │ │ │ name='ramsey_q0', │ │ │ │ │ │ │ │ │ │ │ alignment=SectionAlignment.RIGHT, │ │ │ │ │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ │ │ │ │ │ │ uid='x90_q0_0', │ │ │ │ │ │ │ │ │ │ │ │ │ name='x90_q0', │ │ │ │ │ │ │ │ │ │ │ │ │ alignment=SectionAlignment.RIGHT, │ │ │ │ │ │ │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive_ef' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/measure' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/acquire' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/flux' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ PlayPulse( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive', │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ pulse=PulseFunctional( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ function='drag', │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ uid='rx_pulse_0', │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ amplitude=1.0, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ length=1e-07, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ can_compress=False, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ pulse_parameters={ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ 'beta': 0.01, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ 'sigma': 0.21 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ } │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ amplitude=0.4, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ increment_oscillator_phase=None, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ phase=0.0, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ set_oscillator_phase=None, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ length=5.1e-08, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ precompensation_clear=None, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ marker=None │ │ │ │ │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ │ │ │ │ │ │ uid='delay_q0_0', │ │ │ │ │ │ │ │ │ │ │ │ │ name='delay_q0', │ │ │ │ │ │ │ │ │ │ │ │ │ alignment=SectionAlignment.LEFT, │ │ │ │ │ │ │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive_ef' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/measure' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/acquire' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/flux' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ Delay( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive', │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ time=SweepParameter( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ uid='wait_time_q0', │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ values=array([0.00e+00, 4.00e-07, 8.00e-07, 1.20e-06, 1.60e-06, 2.00e-06, │ 2.40e-06, 2.80e-06, 3.20e-06, 3.60e-06, 4.00e-06, 4.40e-06, │ 4.80e-06, 5.20e-06, 5.60e-06, 6.00e-06, 6.40e-06, 6.80e-06, │ 7.20e-06, 7.60e-06, 8.00e-06, 8.40e-06, 8.80e-06, 9.20e-06, │ 9.60e-06, 1.00e-05, 1.04e-05, 1.08e-05, 1.12e-05, 1.16e-05, │ 1.20e-05, 1.24e-05, 1.28e-05, 1.32e-05, 1.36e-05, 1.40e-05, │ 1.44e-05, 1.48e-05, 1.52e-05, 1.56e-05, 1.60e-05, 1.64e-05, │ 1.68e-05, 1.72e-05, 1.76e-05, 1.80e-05, 1.84e-05, 1.88e-05, │ 1.92e-05, 1.96e-05, 2.00e-05]), │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ axis_name=None, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ driven_by=None │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ precompensation_clear=None │ │ │ │ │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ │ │ │ │ │ │ uid='x90_q0_1', │ │ │ │ │ │ │ │ │ │ │ │ │ name='x90_q0', │ │ │ │ │ │ │ │ │ │ │ │ │ alignment=SectionAlignment.RIGHT, │ │ │ │ │ │ │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive_ef' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/measure' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/acquire' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/flux' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ PlayPulse( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive', │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ pulse=PulseFunctional( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ function='drag', │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ uid='rx_pulse_0', │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ amplitude=1.0, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ length=1e-07, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ can_compress=False, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ pulse_parameters={ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ 'beta': 0.01, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ 'sigma': 0.21 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ } │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ amplitude=0.4, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ increment_oscillator_phase=None, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ phase=SweepParameter( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ uid='x90_phases_q0', │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ values=array([0. , 1.68389366, 3.36778732, 5.05168099, 0.45238934, │ 2.136283 , 3.82017667, 5.50407033, 0.90477868, 2.58867235, │ 4.27256601, 5.95645967, 1.35716803, 3.04106169, 4.72495535, │ 0.12566371, 1.80955737, 3.49345103, 5.17734469, 0.57805305, │ 2.26194671, 3.94584037, 5.62973404, 1.03044239, 2.71433605, │ 4.39822972, 6.08212338, 1.48283173, 3.16672539, 4.85061906, │ 0.25132741, 1.93522107, 3.61911474, 5.3030084 , 0.70371675, │ 2.38761042, 4.07150408, 5.75539774, 1.1561061 , 2.83999976, │ 4.52389342, 6.20778708, 1.60849544, 3.2923891 , 4.97628276, │ 0.37699112, 2.06088478, 3.74477844, 5.42867211, 0.82938046, │ 2.51327412]), │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ axis_name=None, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ driven_by=None │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ set_oscillator_phase=None, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ length=5.1e-08, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ precompensation_clear=None, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ marker=None │ │ │ │ │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ │ │ uid='main_measure_0', │ │ │ │ │ │ │ │ │ name='main_measure', │ │ │ │ │ │ │ │ │ alignment=SectionAlignment.LEFT, │ │ │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ │ │ │ │ uid='measure_q0_0', │ │ │ │ │ │ │ │ │ │ │ name='measure_q0', │ │ │ │ │ │ │ │ │ │ │ alignment=SectionAlignment.LEFT, │ │ │ │ │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ │ │ │ │ length=2e-06, │ │ │ │ │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive' │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive_ef' │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/measure' │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/acquire' │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/flux' │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ PlayPulse( │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/measure', │ │ │ │ │ │ │ │ │ │ │ │ │ pulse=PulseFunctional( │ │ │ │ │ │ │ │ │ │ │ │ │ │ function='const', │ │ │ │ │ │ │ │ │ │ │ │ │ │ uid='readout_pulse_0', │ │ │ │ │ │ │ │ │ │ │ │ │ │ amplitude=1.0, │ │ │ │ │ │ │ │ │ │ │ │ │ │ length=1e-07, │ │ │ │ │ │ │ │ │ │ │ │ │ │ can_compress=False, │ │ │ │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ amplitude=1.0, │ │ │ │ │ │ │ │ │ │ │ │ │ increment_oscillator_phase=None, │ │ │ │ │ │ │ │ │ │ │ │ │ phase=None, │ │ │ │ │ │ │ │ │ │ │ │ │ set_oscillator_phase=None, │ │ │ │ │ │ │ │ │ │ │ │ │ length=2e-06, │ │ │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None, │ │ │ │ │ │ │ │ │ │ │ │ │ precompensation_clear=None, │ │ │ │ │ │ │ │ │ │ │ │ │ marker=None │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ Acquire( │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/acquire', │ │ │ │ │ │ │ │ │ │ │ │ │ handle='q0/result', │ │ │ │ │ │ │ │ │ │ │ │ │ kernel=[ │ │ │ │ │ │ │ │ │ │ │ │ │ │ PulseFunctional( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ function='const', │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ uid='integration_kernel_q0_0', │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ amplitude=1.0, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ length=2e-06, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ can_compress=False, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None │ │ │ │ │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ │ │ │ │ length=2e-06, │ │ │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None │ │ │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ │ │ │ │ uid='passive_reset_q0_0', │ │ │ │ │ │ │ │ │ │ │ name='passive_reset_q0', │ │ │ │ │ │ │ │ │ │ │ alignment=SectionAlignment.LEFT, │ │ │ │ │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive' │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive_ef' │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/measure' │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/acquire' │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/flux' │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ Delay( │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive', │ │ │ │ │ │ │ │ │ │ │ │ │ time=1e-06, │ │ │ │ │ │ │ │ │ │ │ │ │ precompensation_clear=None │ │ │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ ) │ │ │ │ │ ], │ │ │ │ │ trigger={}, │ │ │ │ │ on_system_grid=False, │ │ │ │ │ parameters=[ │ │ │ │ │ │ SweepParameter( │ │ │ │ │ │ │ uid='wait_time_q0', │ │ │ │ │ │ │ values=array([0.00e+00, 4.00e-07, 8.00e-07, 1.20e-06, 1.60e-06, 2.00e-06, │ 2.40e-06, 2.80e-06, 3.20e-06, 3.60e-06, 4.00e-06, 4.40e-06, │ 4.80e-06, 5.20e-06, 5.60e-06, 6.00e-06, 6.40e-06, 6.80e-06, │ 7.20e-06, 7.60e-06, 8.00e-06, 8.40e-06, 8.80e-06, 9.20e-06, │ 9.60e-06, 1.00e-05, 1.04e-05, 1.08e-05, 1.12e-05, 1.16e-05, │ 1.20e-05, 1.24e-05, 1.28e-05, 1.32e-05, 1.36e-05, 1.40e-05, │ 1.44e-05, 1.48e-05, 1.52e-05, 1.56e-05, 1.60e-05, 1.64e-05, │ 1.68e-05, 1.72e-05, 1.76e-05, 1.80e-05, 1.84e-05, 1.88e-05, │ 1.92e-05, 1.96e-05, 2.00e-05]), │ │ │ │ │ │ │ axis_name=None, │ │ │ │ │ │ │ driven_by=None │ │ │ │ │ │ ), │ │ │ │ │ │ SweepParameter( │ │ │ │ │ │ │ uid='x90_phases_q0', │ │ │ │ │ │ │ values=array([0. , 1.68389366, 3.36778732, 5.05168099, 0.45238934, │ 2.136283 , 3.82017667, 5.50407033, 0.90477868, 2.58867235, │ 4.27256601, 5.95645967, 1.35716803, 3.04106169, 4.72495535, │ 0.12566371, 1.80955737, 3.49345103, 5.17734469, 0.57805305, │ 2.26194671, 3.94584037, 5.62973404, 1.03044239, 2.71433605, │ 4.39822972, 6.08212338, 1.48283173, 3.16672539, 4.85061906, │ 0.25132741, 1.93522107, 3.61911474, 5.3030084 , 0.70371675, │ 2.38761042, 4.07150408, 5.75539774, 1.1561061 , 2.83999976, │ 4.52389342, 6.20778708, 1.60849544, 3.2923891 , 4.97628276, │ 0.37699112, 2.06088478, 3.74477844, 5.42867211, 0.82938046, │ 2.51327412]), │ │ │ │ │ │ │ axis_name=None, │ │ │ │ │ │ │ driven_by=None │ │ │ │ │ │ ) │ │ │ │ │ ], │ │ │ │ │ reset_oscillator_phase=False, │ │ │ │ │ chunk_count=1 │ │ │ │ ), │ │ │ │ Section( │ │ │ │ │ uid='cal_g_0', │ │ │ │ │ name='cal_g', │ │ │ │ │ alignment=SectionAlignment.RIGHT, │ │ │ │ │ execution_type=None, │ │ │ │ │ length=None, │ │ │ │ │ play_after=None, │ │ │ │ │ children=[ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ uid='cal_prep_g_0', │ │ │ │ │ │ │ name='cal_prep_g', │ │ │ │ │ │ │ alignment=SectionAlignment.RIGHT, │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ children=[], │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ ), │ │ │ │ │ │ Section( │ │ │ │ │ │ │ uid='cal_measure_g_0', │ │ │ │ │ │ │ name='cal_measure_g', │ │ │ │ │ │ │ alignment=SectionAlignment.LEFT, │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ │ │ uid='measure_q0_1', │ │ │ │ │ │ │ │ │ name='measure_q0', │ │ │ │ │ │ │ │ │ alignment=SectionAlignment.LEFT, │ │ │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ │ │ length=2e-06, │ │ │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive_ef' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/measure' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/acquire' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/flux' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ PlayPulse( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/measure', │ │ │ │ │ │ │ │ │ │ │ pulse=PulseFunctional( │ │ │ │ │ │ │ │ │ │ │ │ function='const', │ │ │ │ │ │ │ │ │ │ │ │ uid='readout_pulse_0', │ │ │ │ │ │ │ │ │ │ │ │ amplitude=1.0, │ │ │ │ │ │ │ │ │ │ │ │ length=1e-07, │ │ │ │ │ │ │ │ │ │ │ │ can_compress=False, │ │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ amplitude=1.0, │ │ │ │ │ │ │ │ │ │ │ increment_oscillator_phase=None, │ │ │ │ │ │ │ │ │ │ │ phase=None, │ │ │ │ │ │ │ │ │ │ │ set_oscillator_phase=None, │ │ │ │ │ │ │ │ │ │ │ length=2e-06, │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None, │ │ │ │ │ │ │ │ │ │ │ precompensation_clear=None, │ │ │ │ │ │ │ │ │ │ │ marker=None │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Acquire( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/acquire', │ │ │ │ │ │ │ │ │ │ │ handle='q0/cal_trace/g', │ │ │ │ │ │ │ │ │ │ │ kernel=[ │ │ │ │ │ │ │ │ │ │ │ │ PulseFunctional( │ │ │ │ │ │ │ │ │ │ │ │ │ function='const', │ │ │ │ │ │ │ │ │ │ │ │ │ uid='integration_kernel_q0_0', │ │ │ │ │ │ │ │ │ │ │ │ │ amplitude=1.0, │ │ │ │ │ │ │ │ │ │ │ │ │ length=2e-06, │ │ │ │ │ │ │ │ │ │ │ │ │ can_compress=False, │ │ │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None │ │ │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ │ │ length=2e-06, │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ │ │ uid='passive_reset_q0_1', │ │ │ │ │ │ │ │ │ name='passive_reset_q0', │ │ │ │ │ │ │ │ │ alignment=SectionAlignment.LEFT, │ │ │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive_ef' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/measure' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/acquire' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/flux' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Delay( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive', │ │ │ │ │ │ │ │ │ │ │ time=1e-06, │ │ │ │ │ │ │ │ │ │ │ precompensation_clear=None │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ ) │ │ │ │ │ ], │ │ │ │ │ trigger={}, │ │ │ │ │ on_system_grid=False │ │ │ │ ), │ │ │ │ Section( │ │ │ │ │ uid='cal_e_0', │ │ │ │ │ name='cal_e', │ │ │ │ │ alignment=SectionAlignment.RIGHT, │ │ │ │ │ execution_type=None, │ │ │ │ │ length=None, │ │ │ │ │ play_after=None, │ │ │ │ │ children=[ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ uid='cal_prep_e_0', │ │ │ │ │ │ │ name='cal_prep_e', │ │ │ │ │ │ │ alignment=SectionAlignment.RIGHT, │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ │ │ uid='x180_q0_0', │ │ │ │ │ │ │ │ │ name='x180_q0', │ │ │ │ │ │ │ │ │ alignment=SectionAlignment.RIGHT, │ │ │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive_ef' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/measure' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/acquire' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/flux' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ PlayPulse( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive', │ │ │ │ │ │ │ │ │ │ │ pulse=PulseFunctional( │ │ │ │ │ │ │ │ │ │ │ │ function='drag', │ │ │ │ │ │ │ │ │ │ │ │ uid='rx_pulse_0', │ │ │ │ │ │ │ │ │ │ │ │ amplitude=1.0, │ │ │ │ │ │ │ │ │ │ │ │ length=1e-07, │ │ │ │ │ │ │ │ │ │ │ │ can_compress=False, │ │ │ │ │ │ │ │ │ │ │ │ pulse_parameters={ │ │ │ │ │ │ │ │ │ │ │ │ │ 'beta': 0.01, │ │ │ │ │ │ │ │ │ │ │ │ │ 'sigma': 0.21 │ │ │ │ │ │ │ │ │ │ │ │ } │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ amplitude=0.8, │ │ │ │ │ │ │ │ │ │ │ increment_oscillator_phase=None, │ │ │ │ │ │ │ │ │ │ │ phase=0.0, │ │ │ │ │ │ │ │ │ │ │ set_oscillator_phase=None, │ │ │ │ │ │ │ │ │ │ │ length=5.1e-08, │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None, │ │ │ │ │ │ │ │ │ │ │ precompensation_clear=None, │ │ │ │ │ │ │ │ │ │ │ marker=None │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ ), │ │ │ │ │ │ Section( │ │ │ │ │ │ │ uid='cal_measure_e_0', │ │ │ │ │ │ │ name='cal_measure_e', │ │ │ │ │ │ │ alignment=SectionAlignment.LEFT, │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ │ │ uid='measure_q0_2', │ │ │ │ │ │ │ │ │ name='measure_q0', │ │ │ │ │ │ │ │ │ alignment=SectionAlignment.LEFT, │ │ │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ │ │ length=2e-06, │ │ │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive_ef' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/measure' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/acquire' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/flux' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ PlayPulse( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/measure', │ │ │ │ │ │ │ │ │ │ │ pulse=PulseFunctional( │ │ │ │ │ │ │ │ │ │ │ │ function='const', │ │ │ │ │ │ │ │ │ │ │ │ uid='readout_pulse_0', │ │ │ │ │ │ │ │ │ │ │ │ amplitude=1.0, │ │ │ │ │ │ │ │ │ │ │ │ length=1e-07, │ │ │ │ │ │ │ │ │ │ │ │ can_compress=False, │ │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ amplitude=1.0, │ │ │ │ │ │ │ │ │ │ │ increment_oscillator_phase=None, │ │ │ │ │ │ │ │ │ │ │ phase=None, │ │ │ │ │ │ │ │ │ │ │ set_oscillator_phase=None, │ │ │ │ │ │ │ │ │ │ │ length=2e-06, │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None, │ │ │ │ │ │ │ │ │ │ │ precompensation_clear=None, │ │ │ │ │ │ │ │ │ │ │ marker=None │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Acquire( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/acquire', │ │ │ │ │ │ │ │ │ │ │ handle='q0/cal_trace/e', │ │ │ │ │ │ │ │ │ │ │ kernel=[ │ │ │ │ │ │ │ │ │ │ │ │ PulseFunctional( │ │ │ │ │ │ │ │ │ │ │ │ │ function='const', │ │ │ │ │ │ │ │ │ │ │ │ │ uid='integration_kernel_q0_0', │ │ │ │ │ │ │ │ │ │ │ │ │ amplitude=1.0, │ │ │ │ │ │ │ │ │ │ │ │ │ length=2e-06, │ │ │ │ │ │ │ │ │ │ │ │ │ can_compress=False, │ │ │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None │ │ │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ │ │ length=2e-06, │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ │ │ uid='passive_reset_q0_2', │ │ │ │ │ │ │ │ │ name='passive_reset_q0', │ │ │ │ │ │ │ │ │ alignment=SectionAlignment.LEFT, │ │ │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive_ef' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/measure' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/acquire' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/flux' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Delay( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive', │ │ │ │ │ │ │ │ │ │ │ time=1e-06, │ │ │ │ │ │ │ │ │ │ │ precompensation_clear=None │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ ) │ │ │ │ │ ], │ │ │ │ │ trigger={}, │ │ │ │ │ on_system_grid=False │ │ │ │ ) │ │ │ ], │ │ │ trigger={}, │ │ │ on_system_grid=False, │ │ │ acquisition_type=AcquisitionType.INTEGRATION, │ │ │ averaging_mode=AveragingMode.CYCLIC, │ │ │ count=1024, │ │ │ repetition_mode=RepetitionMode.FASTEST, │ │ │ repetition_time=None, │ │ │ reset_oscillator_phase=False │ │ ) │ ] )
Inspect the pulse sequence using plot_simulation
and the LabOne Q CompiledExperiment
object returned by the compile_experiment
task:
from laboneq.contrib.example_helpers.plotting.plot_helpers import plot_simulation
plot_simulation(
workflow_result.tasks["compile_experiment"].output,
signal_names_to_show=["drive", "measure"],
start_time=0,
length=50e-6,
)
Workflow output - acquired data¶
Inspect the RunExperimentResults
containing the acquired data. The RunExperimentResults
can be access either from the output of the Workflow
, or from the output of the run_experiment
tasks:
acquired_data = workflow_result.output
acquired_data
{ │ 'q0': { │ │ 'result': AcquiredResult( │ │ │ data=array([0.04101562+0.j , 0.04101562+0.00097656j, │ 0.04101562+0.00195312j, 0.04101562+0.00292969j, │ 0.04101562+0.00390625j, 0.04101562+0.00488281j, │ 0.04101562+0.00585938j, 0.04101562+0.00683594j, │ 0.04101562+0.0078125j , 0.04101562+0.00878906j, │ 0.04101562+0.00976562j, 0.04101562+0.01074219j, │ 0.04101562+0.01171875j, 0.04101562+0.01269531j, │ 0.04101562+0.01367188j, 0.04101562+0.01464844j, │ 0.04101562+0.015625j , 0.04101562+0.01660156j, │ 0.04101562+0.01757812j, 0.04101562+0.01855469j, │ 0.04101562+0.01953125j, 0.04101562+0.02050781j, │ 0.04101562+0.02148438j, 0.04101562+0.02246094j, │ 0.04101562+0.0234375j , 0.04101562+0.02441406j, │ 0.04101562+0.02539062j, 0.04101562+0.02636719j, │ 0.04101562+0.02734375j, 0.04101562+0.02832031j, │ 0.04101562+0.02929688j, 0.04101562+0.03027344j, │ 0.04101562+0.03125j , 0.04101562+0.03222656j, │ 0.04101562+0.03320312j, 0.04101562+0.03417969j, │ 0.04101562+0.03515625j, 0.04101562+0.03613281j, │ 0.04101562+0.03710938j, 0.04101562+0.03808594j, │ 0.04101562+0.0390625j , 0.04101562+0.04003906j, │ 0.04101562+0.04101562j, 0.04101562+0.04199219j, │ 0.04101562+0.04296875j, 0.04101562+0.04394531j, │ 0.04101562+0.04492188j, 0.04101562+0.04589844j, │ 0.04101562+0.046875j , 0.04101562+0.04785156j, │ 0.04101562+0.04882812j]), │ │ │ axis_name=[ │ │ │ │ [ │ │ │ │ │ 'wait_time_q0', │ │ │ │ │ 'x90_phases_q0' │ │ │ │ ] │ │ │ ], │ │ │ axis=[ │ │ │ │ [ │ │ │ │ │ array([0.00e+00, 4.00e-07, 8.00e-07, 1.20e-06, 1.60e-06, 2.00e-06, │ 2.40e-06, 2.80e-06, 3.20e-06, 3.60e-06, 4.00e-06, 4.40e-06, │ 4.80e-06, 5.20e-06, 5.60e-06, 6.00e-06, 6.40e-06, 6.80e-06, │ 7.20e-06, 7.60e-06, 8.00e-06, 8.40e-06, 8.80e-06, 9.20e-06, │ 9.60e-06, 1.00e-05, 1.04e-05, 1.08e-05, 1.12e-05, 1.16e-05, │ 1.20e-05, 1.24e-05, 1.28e-05, 1.32e-05, 1.36e-05, 1.40e-05, │ 1.44e-05, 1.48e-05, 1.52e-05, 1.56e-05, 1.60e-05, 1.64e-05, │ 1.68e-05, 1.72e-05, 1.76e-05, 1.80e-05, 1.84e-05, 1.88e-05, │ 1.92e-05, 1.96e-05, 2.00e-05]), │ │ │ │ │ array([0. , 1.68389366, 3.36778732, 5.05168099, 0.45238934, │ 2.136283 , 3.82017667, 5.50407033, 0.90477868, 2.58867235, │ 4.27256601, 5.95645967, 1.35716803, 3.04106169, 4.72495535, │ 0.12566371, 1.80955737, 3.49345103, 5.17734469, 0.57805305, │ 2.26194671, 3.94584037, 5.62973404, 1.03044239, 2.71433605, │ 4.39822972, 6.08212338, 1.48283173, 3.16672539, 4.85061906, │ 0.25132741, 1.93522107, 3.61911474, 5.3030084 , 0.70371675, │ 2.38761042, 4.07150408, 5.75539774, 1.1561061 , 2.83999976, │ 4.52389342, 6.20778708, 1.60849544, 3.2923891 , 4.97628276, │ 0.37699112, 2.06088478, 3.74477844, 5.42867211, 0.82938046, │ 2.51327412]) │ │ │ │ ] │ │ │ ] │ │ ), │ │ 'cal_trace': { │ │ │ 'g': AcquiredResult( │ │ │ │ data=(0.041015625+0.0498046875j), │ │ │ │ axis_name=[], │ │ │ │ axis=[] │ │ │ ), │ │ │ 'e': AcquiredResult( │ │ │ │ data=(0.041015625+0.05078125j), │ │ │ │ axis_name=[], │ │ │ │ axis=[] │ │ │ ) │ │ } │ }, │ 'errors': [], │ 'neartime_callbacks': {} }
workflow_result.tasks["run_experiment"].output
{ │ 'q0': { │ │ 'result': AcquiredResult( │ │ │ data=array([0.04101562+0.j , 0.04101562+0.00097656j, │ 0.04101562+0.00195312j, 0.04101562+0.00292969j, │ 0.04101562+0.00390625j, 0.04101562+0.00488281j, │ 0.04101562+0.00585938j, 0.04101562+0.00683594j, │ 0.04101562+0.0078125j , 0.04101562+0.00878906j, │ 0.04101562+0.00976562j, 0.04101562+0.01074219j, │ 0.04101562+0.01171875j, 0.04101562+0.01269531j, │ 0.04101562+0.01367188j, 0.04101562+0.01464844j, │ 0.04101562+0.015625j , 0.04101562+0.01660156j, │ 0.04101562+0.01757812j, 0.04101562+0.01855469j, │ 0.04101562+0.01953125j, 0.04101562+0.02050781j, │ 0.04101562+0.02148438j, 0.04101562+0.02246094j, │ 0.04101562+0.0234375j , 0.04101562+0.02441406j, │ 0.04101562+0.02539062j, 0.04101562+0.02636719j, │ 0.04101562+0.02734375j, 0.04101562+0.02832031j, │ 0.04101562+0.02929688j, 0.04101562+0.03027344j, │ 0.04101562+0.03125j , 0.04101562+0.03222656j, │ 0.04101562+0.03320312j, 0.04101562+0.03417969j, │ 0.04101562+0.03515625j, 0.04101562+0.03613281j, │ 0.04101562+0.03710938j, 0.04101562+0.03808594j, │ 0.04101562+0.0390625j , 0.04101562+0.04003906j, │ 0.04101562+0.04101562j, 0.04101562+0.04199219j, │ 0.04101562+0.04296875j, 0.04101562+0.04394531j, │ 0.04101562+0.04492188j, 0.04101562+0.04589844j, │ 0.04101562+0.046875j , 0.04101562+0.04785156j, │ 0.04101562+0.04882812j]), │ │ │ axis_name=[ │ │ │ │ [ │ │ │ │ │ 'wait_time_q0', │ │ │ │ │ 'x90_phases_q0' │ │ │ │ ] │ │ │ ], │ │ │ axis=[ │ │ │ │ [ │ │ │ │ │ array([0.00e+00, 4.00e-07, 8.00e-07, 1.20e-06, 1.60e-06, 2.00e-06, │ 2.40e-06, 2.80e-06, 3.20e-06, 3.60e-06, 4.00e-06, 4.40e-06, │ 4.80e-06, 5.20e-06, 5.60e-06, 6.00e-06, 6.40e-06, 6.80e-06, │ 7.20e-06, 7.60e-06, 8.00e-06, 8.40e-06, 8.80e-06, 9.20e-06, │ 9.60e-06, 1.00e-05, 1.04e-05, 1.08e-05, 1.12e-05, 1.16e-05, │ 1.20e-05, 1.24e-05, 1.28e-05, 1.32e-05, 1.36e-05, 1.40e-05, │ 1.44e-05, 1.48e-05, 1.52e-05, 1.56e-05, 1.60e-05, 1.64e-05, │ 1.68e-05, 1.72e-05, 1.76e-05, 1.80e-05, 1.84e-05, 1.88e-05, │ 1.92e-05, 1.96e-05, 2.00e-05]), │ │ │ │ │ array([0. , 1.68389366, 3.36778732, 5.05168099, 0.45238934, │ 2.136283 , 3.82017667, 5.50407033, 0.90477868, 2.58867235, │ 4.27256601, 5.95645967, 1.35716803, 3.04106169, 4.72495535, │ 0.12566371, 1.80955737, 3.49345103, 5.17734469, 0.57805305, │ 2.26194671, 3.94584037, 5.62973404, 1.03044239, 2.71433605, │ 4.39822972, 6.08212338, 1.48283173, 3.16672539, 4.85061906, │ 0.25132741, 1.93522107, 3.61911474, 5.3030084 , 0.70371675, │ 2.38761042, 4.07150408, 5.75539774, 1.1561061 , 2.83999976, │ 4.52389342, 6.20778708, 1.60849544, 3.2923891 , 4.97628276, │ 0.37699112, 2.06088478, 3.74477844, 5.42867211, 0.82938046, │ 2.51327412]) │ │ │ │ ] │ │ │ ] │ │ ), │ │ 'cal_trace': { │ │ │ 'g': AcquiredResult( │ │ │ │ data=(0.041015625+0.0498046875j), │ │ │ │ axis_name=[], │ │ │ │ axis=[] │ │ │ ), │ │ │ 'e': AcquiredResult( │ │ │ │ data=(0.041015625+0.05078125j), │ │ │ │ axis_name=[], │ │ │ │ axis=[] │ │ │ ) │ │ } │ }, │ 'errors': [], │ 'neartime_callbacks': {} }
The information in the RunExperimentResults
object can be accessed both via standard Python dictionary notation and the dot-notation at any level of the nested structure:
acquired_data.q0.result
AcquiredResult(data=array([0.04101562+0.j , 0.04101562+0.00097656j, 0.04101562+0.00195312j, 0.04101562+0.00292969j, 0.04101562+0.00390625j, 0.04101562+0.00488281j, 0.04101562+0.00585938j, 0.04101562+0.00683594j, 0.04101562+0.0078125j , 0.04101562+0.00878906j, 0.04101562+0.00976562j, 0.04101562+0.01074219j, 0.04101562+0.01171875j, 0.04101562+0.01269531j, 0.04101562+0.01367188j, 0.04101562+0.01464844j, 0.04101562+0.015625j , 0.04101562+0.01660156j, 0.04101562+0.01757812j, 0.04101562+0.01855469j, 0.04101562+0.01953125j, 0.04101562+0.02050781j, 0.04101562+0.02148438j, 0.04101562+0.02246094j, 0.04101562+0.0234375j , 0.04101562+0.02441406j, 0.04101562+0.02539062j, 0.04101562+0.02636719j, 0.04101562+0.02734375j, 0.04101562+0.02832031j, 0.04101562+0.02929688j, 0.04101562+0.03027344j, 0.04101562+0.03125j , 0.04101562+0.03222656j, 0.04101562+0.03320312j, 0.04101562+0.03417969j, 0.04101562+0.03515625j, 0.04101562+0.03613281j, 0.04101562+0.03710938j, 0.04101562+0.03808594j, 0.04101562+0.0390625j , 0.04101562+0.04003906j, 0.04101562+0.04101562j, 0.04101562+0.04199219j, 0.04101562+0.04296875j, 0.04101562+0.04394531j, 0.04101562+0.04492188j, 0.04101562+0.04589844j, 0.04101562+0.046875j , 0.04101562+0.04785156j, 0.04101562+0.04882812j]), axis_name=[['wait_time_q0', 'x90_phases_q0']], axis=[[array([0.00e+00, 4.00e-07, 8.00e-07, 1.20e-06, 1.60e-06, 2.00e-06, 2.40e-06, 2.80e-06, 3.20e-06, 3.60e-06, 4.00e-06, 4.40e-06, 4.80e-06, 5.20e-06, 5.60e-06, 6.00e-06, 6.40e-06, 6.80e-06, 7.20e-06, 7.60e-06, 8.00e-06, 8.40e-06, 8.80e-06, 9.20e-06, 9.60e-06, 1.00e-05, 1.04e-05, 1.08e-05, 1.12e-05, 1.16e-05, 1.20e-05, 1.24e-05, 1.28e-05, 1.32e-05, 1.36e-05, 1.40e-05, 1.44e-05, 1.48e-05, 1.52e-05, 1.56e-05, 1.60e-05, 1.64e-05, 1.68e-05, 1.72e-05, 1.76e-05, 1.80e-05, 1.84e-05, 1.88e-05, 1.92e-05, 1.96e-05, 2.00e-05]), array([0. , 1.68389366, 3.36778732, 5.05168099, 0.45238934, 2.136283 , 3.82017667, 5.50407033, 0.90477868, 2.58867235, 4.27256601, 5.95645967, 1.35716803, 3.04106169, 4.72495535, 0.12566371, 1.80955737, 3.49345103, 5.17734469, 0.57805305, 2.26194671, 3.94584037, 5.62973404, 1.03044239, 2.71433605, 4.39822972, 6.08212338, 1.48283173, 3.16672539, 4.85061906, 0.25132741, 1.93522107, 3.61911474, 5.3030084 , 0.70371675, 2.38761042, 4.07150408, 5.75539774, 1.1561061 , 2.83999976, 4.52389342, 6.20778708, 1.60849544, 3.2923891 , 4.97628276, 0.37699112, 2.06088478, 3.74477844, 5.42867211, 0.82938046, 2.51327412])]])
acquired_data["q0"].result
AcquiredResult(data=array([0.04101562+0.j , 0.04101562+0.00097656j, 0.04101562+0.00195312j, 0.04101562+0.00292969j, 0.04101562+0.00390625j, 0.04101562+0.00488281j, 0.04101562+0.00585938j, 0.04101562+0.00683594j, 0.04101562+0.0078125j , 0.04101562+0.00878906j, 0.04101562+0.00976562j, 0.04101562+0.01074219j, 0.04101562+0.01171875j, 0.04101562+0.01269531j, 0.04101562+0.01367188j, 0.04101562+0.01464844j, 0.04101562+0.015625j , 0.04101562+0.01660156j, 0.04101562+0.01757812j, 0.04101562+0.01855469j, 0.04101562+0.01953125j, 0.04101562+0.02050781j, 0.04101562+0.02148438j, 0.04101562+0.02246094j, 0.04101562+0.0234375j , 0.04101562+0.02441406j, 0.04101562+0.02539062j, 0.04101562+0.02636719j, 0.04101562+0.02734375j, 0.04101562+0.02832031j, 0.04101562+0.02929688j, 0.04101562+0.03027344j, 0.04101562+0.03125j , 0.04101562+0.03222656j, 0.04101562+0.03320312j, 0.04101562+0.03417969j, 0.04101562+0.03515625j, 0.04101562+0.03613281j, 0.04101562+0.03710938j, 0.04101562+0.03808594j, 0.04101562+0.0390625j , 0.04101562+0.04003906j, 0.04101562+0.04101562j, 0.04101562+0.04199219j, 0.04101562+0.04296875j, 0.04101562+0.04394531j, 0.04101562+0.04492188j, 0.04101562+0.04589844j, 0.04101562+0.046875j , 0.04101562+0.04785156j, 0.04101562+0.04882812j]), axis_name=[['wait_time_q0', 'x90_phases_q0']], axis=[[array([0.00e+00, 4.00e-07, 8.00e-07, 1.20e-06, 1.60e-06, 2.00e-06, 2.40e-06, 2.80e-06, 3.20e-06, 3.60e-06, 4.00e-06, 4.40e-06, 4.80e-06, 5.20e-06, 5.60e-06, 6.00e-06, 6.40e-06, 6.80e-06, 7.20e-06, 7.60e-06, 8.00e-06, 8.40e-06, 8.80e-06, 9.20e-06, 9.60e-06, 1.00e-05, 1.04e-05, 1.08e-05, 1.12e-05, 1.16e-05, 1.20e-05, 1.24e-05, 1.28e-05, 1.32e-05, 1.36e-05, 1.40e-05, 1.44e-05, 1.48e-05, 1.52e-05, 1.56e-05, 1.60e-05, 1.64e-05, 1.68e-05, 1.72e-05, 1.76e-05, 1.80e-05, 1.84e-05, 1.88e-05, 1.92e-05, 1.96e-05, 2.00e-05]), array([0. , 1.68389366, 3.36778732, 5.05168099, 0.45238934, 2.136283 , 3.82017667, 5.50407033, 0.90477868, 2.58867235, 4.27256601, 5.95645967, 1.35716803, 3.04106169, 4.72495535, 0.12566371, 1.80955737, 3.49345103, 5.17734469, 0.57805305, 2.26194671, 3.94584037, 5.62973404, 1.03044239, 2.71433605, 4.39822972, 6.08212338, 1.48283173, 3.16672539, 4.85061906, 0.25132741, 1.93522107, 3.61911474, 5.3030084 , 0.70371675, 2.38761042, 4.07150408, 5.75539774, 1.1561061 , 2.83999976, 4.52389342, 6.20778708, 1.60849544, 3.2923891 , 4.97628276, 0.37699112, 2.06088478, 3.74477844, 5.42867211, 0.82938046, 2.51327412])]])
Analysis Workflow¶
Let's also inspect the Ramsey analysis Workflow
executed as part of the experiment Workflow
. First, let's look at the source code. The Ramsey analysis workflow contains the following tasks:
calculate_qubit_population
for interpreting the raw data into qubit population.fit_data
for fitting a cosine module to the qubit population as a function of the pulse amplitude.extract_qubit_parameters
for extracting the new qubit frequency and the $T_2^*$ value from the exponentially decaying cosine fit.plot_raw_complex_data_1d
for plotting the raw data.plot_population
for plotting the qubit population and the fit results.
ramsey.analysis_workflow.src
@workflow.workflow
def analysis_workflow(
result: RunExperimentResults,
qubits: Qubits,
delays: QubitSweepPoints,
detunings: float | Sequence[float] | None = None,
options: TuneUpAnalysisWorkflowOptions | None = None,
) -> None:
"""The Ramsey analysis Workflow.
The workflow consists of the following steps:
- [calculate_qubit_population]()
- [fit_data]()
- [extract_qubit_parameters]()
- [plot_raw_complex_data_1d]()
- [plot_population]()
Arguments:
result:
The experiment results returned by the run_experiment task.
qubits:
The qubits on which to run the analysis. May be either a single qubit or
a list of qubits. The UIDs of these qubits must exist in the result.
delays:
The delays that were swept over in the Ramsey experiment for
each qubit. If `qubits` is a single qubit, `delays` must be an array of
numbers. Otherwise, it must be a list of arrays of numbers.
detunings:
The detuning in Hz introduced in order to generate oscillations of the qubit
state vector around the Bloch sphere. This detuning and the frequency of the
fitted oscillations is used to calculate the true qubit resonance frequency.
`detunings` is a list of float values for each qubit following the order
in qubits.
options:
The options for building the workflow, passed as an instance of
[TuneUpAnalysisWorkflowOptions].
In addition to options from [WorkflowOptions], the following
custom options are supported: do_fitting, do_plotting, do_raw_data_plotting,
do_qubit_population_plotting, and the options of the
[TuneupAnalysisOptions] class. See the docstring of
[TuneUpAnalysisWorkflowOptions] for more details.
Returns:
WorkflowBuilder:
The builder for the analysis workflow.
Example:
```python
result = analysis_workflow(
results=results
qubits=[q0, q1],
delays=[
np.linspace(0, 20e-6, 51),
np.linspace(0, 30e-6, 52),
],
detunings = [1e6, 1.346e6],
options=analysis_workflow.options()
).run()
```
"""
processed_data_dict = calculate_qubit_population(qubits, result, delays)
fit_results = fit_data(qubits, processed_data_dict)
qubit_parameters = extract_qubit_parameters(qubits, fit_results, detunings)
with workflow.if_(options.do_plotting):
with workflow.if_(options.do_raw_data_plotting):
plot_raw_complex_data_1d(
qubits,
result,
delays,
xlabel="Pulse Separation, $\\tau$ ($\\mu$s)",
xscaling=1e6,
)
with workflow.if_(options.do_qubit_population_plotting):
plot_population(
qubits, processed_data_dict, fit_results, qubit_parameters, detunings
)
workflow.return_(qubit_parameters)
Let's check that these tasks were actually run in the analysis workflow:
analysis_workflow_results = workflow_result.tasks["analysis_workflow"]
for t in analysis_workflow_results.tasks:
print(t)
TaskResult(name=calculate_qubit_population, index=()) TaskResult(name=fit_data, index=()) TaskResult(name=extract_qubit_parameters, index=()) TaskResult(name=plot_raw_complex_data_1d, index=()) TaskResult(name=plot_population, index=())
All the inputs and outputs of these tasks can be inspected. For example, let's get back the fit results returned by the fit_data
task and the final Ramsey figures returned by the plot_population
task:
fit_results_per_qubit = analysis_workflow_results.tasks["fit_data"].output
ramsey_figures_per_qubit = analysis_workflow_results.tasks["plot_population"].output
We can access the qubit parameters extracted by the analysis from the output of the analysis-workflow. Notice that the analysis workflow collects both the original qubit parameters with which the experiment was run (old_parameter_values
) and the new ones extracted from the analysis (new_parameter_values
).
from pprint import pprint
qubit_parameters = analysis_workflow_results.output
pprint(qubit_parameters) # noqa: T203
{'new_parameter_values': {'q0': {'ge_T2_star': 0.004025287045176684+/-8.391677364368277, 'resonance_frequency_ge': 6500577217.321515+/-175204.4546653028}}, 'old_parameter_values': {'q0': {'ge_T2_star': 0, 'resonance_frequency_ge': 6500000000.0}}}
Manually Updating the Qubit Parameters¶
The run above did not update the qubit parameters with the values in qubit_parameters["new_parameter_values"]
because updating is disabled by default (we will see in the next section how to enable it via the experiment-workflow options). We can check this by inspecting the resonance_frequency_ge
parameter of the qubit, which will still have the original value collected by the analysis in qubit_parameters["old_parameter_values"]
:
qubits[0].parameters.resonance_frequency_ge
6500000000.0
In practice, we sometimes want to disable automatic updating if we are not sure that the experiment runs correctly. In this case, we can still update the qubit parameters manually after the experiment has run using the update_qubits
task:
ramsey.update_qubits(qpu, qubit_parameters["new_parameter_values"])
Similarly, if we had accidentally updated our qubit parameters during the experiment run, we can revert them using the same task and old_parameter_values
:
ramsey.update_qubits(qpu, qubit_parameters["old_parameter_values"])
Change the options¶
We can change the options of the ramsey experiment Workflow
by using the options feature Workflows
(see the Options tutorial in LabOne Q Core for more details).
Let's start by creating the Workflow
options:
options = ramsey.experiment_workflow.options()
options
TuneUpWorkflowOptions( │ do_analysis=True, │ update=False, │ _task_options={ │ │ 'create_experiment': TuneupExperimentOptions( │ │ │ transition='ge', │ │ │ use_cal_traces=True, │ │ │ cal_states='ge', │ │ │ count=1024, │ │ │ acquisition_type=AcquisitionType.INTEGRATION, │ │ │ averaging_mode=AveragingMode.CYCLIC, │ │ │ repetition_mode=RepetitionMode.FASTEST, │ │ │ repetition_time=None, │ │ │ reset_oscillator_phase=False, │ │ │ active_reset=False, │ │ │ active_reset_repetitions=1, │ │ │ active_reset_states='ge' │ │ ), │ │ 'run_experiment': RunExperimentOptions( │ │ │ return_legacy_results=False │ │ ), │ │ 'analysis_workflow': TuneUpAnalysisWorkflowOptions( │ │ │ do_fitting=True, │ │ │ do_plotting=True, │ │ │ do_raw_data_plotting=True, │ │ │ do_qubit_population_plotting=True, │ │ │ _task_options={ │ │ │ │ 'calculate_qubit_population': TuneupAnalysisOptions( │ │ │ │ │ count=1024, │ │ │ │ │ acquisition_type=AcquisitionType.INTEGRATION, │ │ │ │ │ averaging_mode=AveragingMode.CYCLIC, │ │ │ │ │ repetition_mode=RepetitionMode.FASTEST, │ │ │ │ │ repetition_time=None, │ │ │ │ │ reset_oscillator_phase=False, │ │ │ │ │ active_reset=False, │ │ │ │ │ active_reset_repetitions=1, │ │ │ │ │ active_reset_states='ge', │ │ │ │ │ transition='ge', │ │ │ │ │ use_cal_traces=True, │ │ │ │ │ cal_states='ge', │ │ │ │ │ do_rotation=True, │ │ │ │ │ do_pca=False, │ │ │ │ │ do_fitting=True, │ │ │ │ │ fit_parameters_hints=None, │ │ │ │ │ save_figures=True, │ │ │ │ │ close_figures=True │ │ │ │ ), │ │ │ │ 'fit_data': TuneupAnalysisOptions( │ │ │ │ │ count=1024, │ │ │ │ │ acquisition_type=AcquisitionType.INTEGRATION, │ │ │ │ │ averaging_mode=AveragingMode.CYCLIC, │ │ │ │ │ repetition_mode=RepetitionMode.FASTEST, │ │ │ │ │ repetition_time=None, │ │ │ │ │ reset_oscillator_phase=False, │ │ │ │ │ active_reset=False, │ │ │ │ │ active_reset_repetitions=1, │ │ │ │ │ active_reset_states='ge', │ │ │ │ │ transition='ge', │ │ │ │ │ use_cal_traces=True, │ │ │ │ │ cal_states='ge', │ │ │ │ │ do_rotation=True, │ │ │ │ │ do_pca=False, │ │ │ │ │ do_fitting=True, │ │ │ │ │ fit_parameters_hints=None, │ │ │ │ │ save_figures=True, │ │ │ │ │ close_figures=True │ │ │ │ ), │ │ │ │ 'extract_qubit_parameters': TuneupAnalysisOptions( │ │ │ │ │ count=1024, │ │ │ │ │ acquisition_type=AcquisitionType.INTEGRATION, │ │ │ │ │ averaging_mode=AveragingMode.CYCLIC, │ │ │ │ │ repetition_mode=RepetitionMode.FASTEST, │ │ │ │ │ repetition_time=None, │ │ │ │ │ reset_oscillator_phase=False, │ │ │ │ │ active_reset=False, │ │ │ │ │ active_reset_repetitions=1, │ │ │ │ │ active_reset_states='ge', │ │ │ │ │ transition='ge', │ │ │ │ │ use_cal_traces=True, │ │ │ │ │ cal_states='ge', │ │ │ │ │ do_rotation=True, │ │ │ │ │ do_pca=False, │ │ │ │ │ do_fitting=True, │ │ │ │ │ fit_parameters_hints=None, │ │ │ │ │ save_figures=True, │ │ │ │ │ close_figures=True │ │ │ │ ), │ │ │ │ 'plot_raw_complex_data_1d': PlotRawDataOptions( │ │ │ │ │ use_cal_traces=True, │ │ │ │ │ cal_states='ge', │ │ │ │ │ save_figures=True, │ │ │ │ │ close_figures=True │ │ │ │ ), │ │ │ │ 'plot_population': TuneupAnalysisOptions( │ │ │ │ │ count=1024, │ │ │ │ │ acquisition_type=AcquisitionType.INTEGRATION, │ │ │ │ │ averaging_mode=AveragingMode.CYCLIC, │ │ │ │ │ repetition_mode=RepetitionMode.FASTEST, │ │ │ │ │ repetition_time=None, │ │ │ │ │ reset_oscillator_phase=False, │ │ │ │ │ active_reset=False, │ │ │ │ │ active_reset_repetitions=1, │ │ │ │ │ active_reset_states='ge', │ │ │ │ │ transition='ge', │ │ │ │ │ use_cal_traces=True, │ │ │ │ │ cal_states='ge', │ │ │ │ │ do_rotation=True, │ │ │ │ │ do_pca=False, │ │ │ │ │ do_fitting=True, │ │ │ │ │ fit_parameters_hints=None, │ │ │ │ │ save_figures=True, │ │ │ │ │ close_figures=True │ │ │ │ ) │ │ │ } │ │ ) │ } )
Using workflow.show_fields
, you can also read a description of each of the options fields, as well as their default values and the tasks that use them within the Ramsey experiment workflow.
workflow.show_fields(options)
Option Fields ============= acquisition_type: Description: Acquisition type to use for the experiment. Classes and Defaults: [('TuneupExperimentOptions', AcquisitionType.INTEGRATION), ('TuneupAnalysisOptions', AcquisitionType.INTEGRATION)], active_reset: Description: Whether to use active reset. Classes and Defaults: [('TuneupExperimentOptions', False), ('TuneupAnalysisOptions', False)], active_reset_repetitions: Description: The number of times to repeat the active resets. Classes and Defaults: [('TuneupExperimentOptions', 1), ('TuneupAnalysisOptions', 1)], active_reset_states: Description: The qubit states to actively reset. Classes and Defaults: [('TuneupExperimentOptions', 'ge'), ('TuneupAnalysisOptions', 'ge')], averaging_mode: Description: Averaging mode to use for the experiment. Classes and Defaults: [('TuneupExperimentOptions', AveragingMode.CYCLIC), ('TuneupAnalysisOptions', AveragingMode.CYCLIC)], cal_states: Description: The states to prepare in the calibration traces. Classes and Defaults: [('TuneupExperimentOptions', 'ge'), ('TuneupAnalysisOptions', 'ge')], Description: The states to prepare in the calibration traces.Can be any string or tuple made from combining the characters 'g', 'e', 'f'. Classes and Defaults: [('PlotRawDataOptions', 'ge')], close_figures: Description: Whether to close the figures. Classes and Defaults: [('TuneupAnalysisOptions', True), ('PlotRawDataOptions', True)], count: Description: The number of repetitions. Classes and Defaults: [('TuneupExperimentOptions', 1024), ('TuneupAnalysisOptions', 1024)], do_analysis: Description: Whether to run the analysis workflow. Classes and Defaults: [('TuneUpWorkflowOptions', True)], do_fitting: Description: Whether to perform the fit. Classes and Defaults: [('TuneUpAnalysisWorkflowOptions', True), ('TuneupAnalysisOptions', True)], do_pca: Description: Whether to perform principal component analysis on the raw data independent of whether there were calibration traces in the experiment. Classes and Defaults: [('TuneupAnalysisOptions', False)], do_plotting: Description: Whether to make plots. Classes and Defaults: [('TuneUpAnalysisWorkflowOptions', True)], do_qubit_population_plotting: Description: Whether to plot the qubit population. Classes and Defaults: [('TuneUpAnalysisWorkflowOptions', True)], do_raw_data_plotting: Description: Whether to plot the raw data. Classes and Defaults: [('TuneUpAnalysisWorkflowOptions', True)], do_rotation: Description: Whether to rotate the raw data based on calibration traces or principal component analysis. Classes and Defaults: [('TuneupAnalysisOptions', True)], fit_parameters_hints: Description: Parameters hints accepted by lmfit. Classes and Defaults: [('TuneupAnalysisOptions', None)], logstore: Description: The logstores to use. Classes and Defaults: [('TuneUpWorkflowOptions', None), ('TuneUpAnalysisWorkflowOptions', None)], repetition_mode: Description: The repetition mode to use for the experiment. Classes and Defaults: [('TuneupExperimentOptions', RepetitionMode.FASTEST), ('TuneupAnalysisOptions', RepetitionMode.FASTEST)], repetition_time: Description: The repetition time. Classes and Defaults: [('TuneupExperimentOptions', None), ('TuneupAnalysisOptions', None)], reset_oscillator_phase: Description: Whether to reset the oscillator phase. Classes and Defaults: [('TuneupExperimentOptions', False), ('TuneupAnalysisOptions', False)], return_legacy_results: Description: Whether to return an instance of the LabOne Q Results instead of an instance of RunExperimentResults. Classes and Defaults: [('RunExperimentOptions', False)], save_figures: Description: Whether to save the figures. Classes and Defaults: [('TuneupAnalysisOptions', True), ('PlotRawDataOptions', True)], transition: Description: Transition to perform the experiment on. May be any transition supported by the quantum operations. Classes and Defaults: [('TuneupExperimentOptions', 'ge'), ('TuneupAnalysisOptions', 'ge')], update: Description: Whether to update the setup based on the results from the analysis. Classes and Defaults: [('TuneUpWorkflowOptions', False)], use_cal_traces: Description: Whether to include calibration traces in the experiment. Classes and Defaults: [('TuneupExperimentOptions', True), ('TuneupAnalysisOptions', True), ('PlotRawDataOptions', True)],
Note that the experiments in the Applications Library collect the acquired data in an instance of the new results class, RunExperimentResults
. To return an instance of the standard LabOne Q Results
, you can set options.return_legacy_results(True)
.
Here, we specify new values for some of our options. Note that below, we are changing the value of these options fields for all the tasks inside the Ramsey workflow. To change the options for only a subset of the tasks, see the Options tutortial in the LabOne Q core manual.
options.count(2048) # change the counts
options.use_cal_traces(False) # remove the calibration traces
options.update(True) # the experiment workflow updates the qubit frequency
# and T2_star time with the new values from the analysis
Inspect the current values of an options field:
options.count
--------------------------------------------------------------- Task/Workflow | Value --------------------------------------------------------------- create_experiment | 2048 analysis_workflow.calculate_qubit_population | 2048 analysis_workflow.fit_data | 2048 analysis_workflow.extract_qubit_parameters | 2048 analysis_workflow.plot_population | 2048 ---------------------------------------------------------------
Run the Workflow
with these options. Here, we also run the Ramsey experiment on all the 6 qubit in parallel.
ramsey_workflow_result_options = ramsey.experiment_workflow(
session=session,
qpu=qpu,
qubits=qubits,
delays=[np.linspace(0, 20e-6, 51) for q in qubits],
detunings=[0.67e6 for q in qubits],
options=options, # pass the options
).run()
[2024.12.19 17:10:38.532] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:10:38.533] INFO Workflow 'ramsey': execution started at 2024-12-19 17:10:38.532372Z
[2024.12.19 17:10:38.534] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:10:38.535] INFO Task 'temporary_modify': started at 2024-12-19 17:10:38.534815Z
[2024.12.19 17:10:38.535] INFO Task 'temporary_modify': ended at 2024-12-19 17:10:38.535673Z
[2024.12.19 17:10:38.536] INFO Task 'create_experiment': started at 2024-12-19 17:10:38.536511Z
[2024.12.19 17:10:38.540] INFO Task 'create_experiment': ended at 2024-12-19 17:10:38.539769Z
[2024.12.19 17:10:38.540] INFO Task 'compile_experiment': started at 2024-12-19 17:10:38.540568Z
[2024.12.19 17:10:38.551] INFO Resolved modulation type of oscillator 'q0_readout_acquire_osc' on signal '/logical_signal_groups/q0/acquire' to SOFTWARE
[2024.12.19 17:10:38.552] INFO Resolved modulation type of oscillator 'q0_drive_ge_osc' on signal '/logical_signal_groups/q0/drive' to HARDWARE
[2024.12.19 17:10:38.552] INFO Resolved modulation type of oscillator 'q0_drive_ef_osc' on signal '/logical_signal_groups/q0/drive_ef' to HARDWARE
[2024.12.19 17:10:38.553] INFO Resolved modulation type of oscillator 'q1_readout_acquire_osc' on signal '/logical_signal_groups/q1/acquire' to SOFTWARE
[2024.12.19 17:10:38.554] INFO Resolved modulation type of oscillator 'q1_drive_ge_osc' on signal '/logical_signal_groups/q1/drive' to HARDWARE
[2024.12.19 17:10:38.554] INFO Resolved modulation type of oscillator 'q1_drive_ef_osc' on signal '/logical_signal_groups/q1/drive_ef' to HARDWARE
[2024.12.19 17:10:38.554] INFO Resolved modulation type of oscillator 'q2_readout_acquire_osc' on signal '/logical_signal_groups/q2/acquire' to SOFTWARE
[2024.12.19 17:10:38.555] INFO Resolved modulation type of oscillator 'q2_drive_ge_osc' on signal '/logical_signal_groups/q2/drive' to HARDWARE
[2024.12.19 17:10:38.556] INFO Resolved modulation type of oscillator 'q2_drive_ef_osc' on signal '/logical_signal_groups/q2/drive_ef' to HARDWARE
[2024.12.19 17:10:38.556] INFO Resolved modulation type of oscillator 'q3_readout_acquire_osc' on signal '/logical_signal_groups/q3/acquire' to SOFTWARE
[2024.12.19 17:10:38.557] INFO Resolved modulation type of oscillator 'q3_drive_ge_osc' on signal '/logical_signal_groups/q3/drive' to HARDWARE
[2024.12.19 17:10:38.557] INFO Resolved modulation type of oscillator 'q3_drive_ef_osc' on signal '/logical_signal_groups/q3/drive_ef' to HARDWARE
[2024.12.19 17:10:38.558] INFO Resolved modulation type of oscillator 'q4_readout_acquire_osc' on signal '/logical_signal_groups/q4/acquire' to SOFTWARE
[2024.12.19 17:10:38.558] INFO Resolved modulation type of oscillator 'q4_drive_ge_osc' on signal '/logical_signal_groups/q4/drive' to HARDWARE
[2024.12.19 17:10:38.559] INFO Resolved modulation type of oscillator 'q4_drive_ef_osc' on signal '/logical_signal_groups/q4/drive_ef' to HARDWARE
[2024.12.19 17:10:38.559] INFO Resolved modulation type of oscillator 'q5_readout_acquire_osc' on signal '/logical_signal_groups/q5/acquire' to SOFTWARE
[2024.12.19 17:10:38.560] INFO Resolved modulation type of oscillator 'q5_drive_ge_osc' on signal '/logical_signal_groups/q5/drive' to HARDWARE
[2024.12.19 17:10:38.561] INFO Resolved modulation type of oscillator 'q5_drive_ef_osc' on signal '/logical_signal_groups/q5/drive_ef' to HARDWARE
[2024.12.19 17:10:38.561] INFO Starting LabOne Q Compiler run...
[2024.12.19 17:10:38.749] INFO Schedule completed. [0.183 s]
[2024.12.19 17:10:39.908] INFO Code generation completed for all AWGs. [1.158 s]
[2024.12.19 17:10:39.909] INFO Completed compilation step 1 of 1. [1.343 s]
[2024.12.19 17:10:39.918] INFO ─────────────────────────────────────────────────────────────────────
[2024.12.19 17:10:39.918] INFO Device AWG SeqC LOC CT entries Waveforms Samples
[2024.12.19 17:10:39.918] INFO ─────────────────────────────────────────────────────────────────────
[2024.12.19 17:10:39.919] INFO device_hdawg 0 4 1 0 0
[2024.12.19 17:10:39.919] INFO device_hdawg 1 4 1 0 0
[2024.12.19 17:10:39.920] INFO device_hdawg 2 4 1 0 0
[2024.12.19 17:10:39.920] INFO device_shfqc 0 158 0 6 48000
[2024.12.19 17:10:39.921] INFO device_shfqc_sg 0 364 53 52 11840
[2024.12.19 17:10:39.921] INFO device_shfqc_sg 1 364 53 52 11840
[2024.12.19 17:10:39.922] INFO device_shfqc_sg 2 364 53 52 11840
[2024.12.19 17:10:39.922] INFO device_shfqc_sg 3 364 53 52 11840
[2024.12.19 17:10:39.923] INFO device_shfqc_sg 4 364 53 52 11840
[2024.12.19 17:10:39.923] INFO device_shfqc_sg 5 364 53 52 11840
[2024.12.19 17:10:39.923] INFO ─────────────────────────────────────────────────────────────────────
[2024.12.19 17:10:39.924] INFO TOTAL 2354 321 119040
[2024.12.19 17:10:39.924] INFO ─────────────────────────────────────────────────────────────────────
[2024.12.19 17:10:39.929] INFO Finished LabOne Q Compiler run.
[2024.12.19 17:10:39.939] INFO Task 'compile_experiment': ended at 2024-12-19 17:10:39.939291Z
[2024.12.19 17:10:39.940] INFO Task 'run_experiment': started at 2024-12-19 17:10:39.939911Z
[2024.12.19 17:10:39.950] INFO Starting near-time execution...
[2024.12.19 17:10:40.001] INFO Finished near-time execution.
[2024.12.19 17:10:40.002] INFO Task 'run_experiment': ended at 2024-12-19 17:10:40.002236Z
[2024.12.19 17:10:40.003] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:10:40.003] INFO Workflow 'analysis_workflow': execution started at 2024-12-19
[2024.12.19 17:10:40.004] INFO 17:10:40.003088Z
[2024.12.19 17:10:40.004] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:10:40.004] INFO Task 'calculate_qubit_population': started at 2024-12-19 17:10:40.004682Z
[2024.12.19 17:10:40.006] INFO Task 'calculate_qubit_population': ended at 2024-12-19 17:10:40.006673Z
[2024.12.19 17:10:40.007] INFO Task 'fit_data': started at 2024-12-19 17:10:40.007230Z
[2024.12.19 17:10:40.038] INFO Task 'fit_data': ended at 2024-12-19 17:10:40.038098Z
[2024.12.19 17:10:40.038] INFO Task 'extract_qubit_parameters': started at 2024-12-19 17:10:40.038737Z
[2024.12.19 17:10:40.039] INFO Task 'extract_qubit_parameters': ended at 2024-12-19 17:10:40.039424Z
[2024.12.19 17:10:40.040] INFO Task 'plot_raw_complex_data_1d': started at 2024-12-19 17:10:40.039966Z
[2024.12.19 17:10:40.055] INFO Artifact: 'Raw_data_q0' of type 'Figure' logged at 2024-12-19 17:10:40.055649Z
[2024.12.19 17:10:40.069] INFO Artifact: 'Raw_data_q1' of type 'Figure' logged at 2024-12-19 17:10:40.069454Z
[2024.12.19 17:10:40.083] INFO Artifact: 'Raw_data_q2' of type 'Figure' logged at 2024-12-19 17:10:40.083220Z
[2024.12.19 17:10:40.098] INFO Artifact: 'Raw_data_q3' of type 'Figure' logged at 2024-12-19 17:10:40.097793Z
[2024.12.19 17:10:40.111] INFO Artifact: 'Raw_data_q4' of type 'Figure' logged at 2024-12-19 17:10:40.111402Z
[2024.12.19 17:10:40.125] INFO Artifact: 'Raw_data_q5' of type 'Figure' logged at 2024-12-19 17:10:40.125659Z
[2024.12.19 17:10:40.126] INFO Task 'plot_raw_complex_data_1d': ended at 2024-12-19 17:10:40.126526Z
[2024.12.19 17:10:40.127] INFO Task 'plot_population': started at 2024-12-19 17:10:40.127275Z
[2024.12.19 17:10:40.136] INFO Artifact: 'Ramsey_q0' of type 'Figure' logged at 2024-12-19 17:10:40.136024Z
[2024.12.19 17:10:40.144] INFO Artifact: 'Ramsey_q1' of type 'Figure' logged at 2024-12-19 17:10:40.144745Z
[2024.12.19 17:10:40.153] INFO Artifact: 'Ramsey_q2' of type 'Figure' logged at 2024-12-19 17:10:40.153421Z
[2024.12.19 17:10:40.162] INFO Artifact: 'Ramsey_q3' of type 'Figure' logged at 2024-12-19 17:10:40.162668Z
[2024.12.19 17:10:40.171] INFO Artifact: 'Ramsey_q4' of type 'Figure' logged at 2024-12-19 17:10:40.171177Z
[2024.12.19 17:10:40.179] INFO Artifact: 'Ramsey_q5' of type 'Figure' logged at 2024-12-19 17:10:40.179640Z
[2024.12.19 17:10:40.180] INFO Task 'plot_population': ended at 2024-12-19 17:10:40.180343Z
[2024.12.19 17:10:40.181] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:10:40.181] INFO Workflow 'analysis_workflow': execution ended at 2024-12-19 17:10:40.180891Z
[2024.12.19 17:10:40.181] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:10:40.182] INFO Task 'update_qubits': started at 2024-12-19 17:10:40.182322Z
[2024.12.19 17:10:40.183] INFO Task 'update_qubits': ended at 2024-12-19 17:10:40.182896Z
[2024.12.19 17:10:40.183] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:10:40.184] INFO Workflow 'ramsey': execution ended at 2024-12-19 17:10:40.183470Z
[2024.12.19 17:10:40.184] INFO ──────────────────────────────────────────────────────────────────────────────
If we inspect the simulated pulse sequence, we'll notice that the pulses are executed in parallel on all the qubits in the expeirment and that the calibration traces are no longer there.
from laboneq.contrib.example_helpers.plotting.plot_helpers import plot_simulation
plot_simulation(
ramsey_workflow_result_options.tasks["compile_experiment"].output,
signal_names_to_show=["drive"],
start_time=0,
length=50e-6,
)
Qubits with temporarily modified parameters¶
The qubit inside the qpu
contain the source of ground truth for an experiment and the best state of knowledge of the quantum system that is being operated. This means that the parameters of the qubits and any other parameters of the QPU define the configuration used by all the experiments in the Applications Library.
It is possible to run an experiment workflow using qubits with temporarily modified parameters. This is useful for testing or debugging purposes. To do this, we first clone the parameters of the qubits and then modify the parameters that we want. The cloned parameters as then passed to the experiment workflow.
Let's run the Ramsey experiment workflow with a set of temporary qubit parameters.
from copy import deepcopy
temporary_parameters = deepcopy(qubits[0].parameters)
temporary_parameters.ge_drive_length = 1000e-9 # 51ns in the original qubits
result_unmodified = ramsey.experiment_workflow(
session=session,
qpu=qpu,
qubits=qubits[0],
delays=np.linspace(0, 20e-6, 51),
detunings=0.67e6,
).run()
result_modified = ramsey.experiment_workflow(
session=session,
qpu=qpu,
qubits=qubits[0],
temporary_parameters={
qubits[0].uid: temporary_parameters
}, # pass temporary parameters
delays=np.linspace(0, 10e-6, 51),
detunings=1e6,
).run()
[2024.12.19 17:11:17.974] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:17.975] INFO Workflow 'ramsey': execution started at 2024-12-19 17:11:17.974060Z
[2024.12.19 17:11:17.976] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:17.976] INFO Task 'temporary_modify': started at 2024-12-19 17:11:17.976485Z
[2024.12.19 17:11:17.977] INFO Task 'temporary_modify': ended at 2024-12-19 17:11:17.977148Z
[2024.12.19 17:11:17.977] INFO Task 'create_experiment': started at 2024-12-19 17:11:17.977767Z
[2024.12.19 17:11:17.980] INFO Task 'create_experiment': ended at 2024-12-19 17:11:17.979918Z
[2024.12.19 17:11:17.981] INFO Task 'compile_experiment': started at 2024-12-19 17:11:17.981080Z
[2024.12.19 17:11:17.987] INFO Resolved modulation type of oscillator 'q0_readout_acquire_osc' on signal '/logical_signal_groups/q0/acquire' to SOFTWARE
[2024.12.19 17:11:17.988] INFO Resolved modulation type of oscillator 'q0_drive_ge_osc' on signal '/logical_signal_groups/q0/drive' to HARDWARE
[2024.12.19 17:11:17.988] INFO Resolved modulation type of oscillator 'q0_drive_ef_osc' on signal '/logical_signal_groups/q0/drive_ef' to HARDWARE
[2024.12.19 17:11:17.989] INFO Starting LabOne Q Compiler run...
[2024.12.19 17:11:18.589] INFO Schedule completed. [0.598 s]
[2024.12.19 17:11:18.686] INFO Code generation completed for all AWGs. [0.096 s]
[2024.12.19 17:11:18.688] INFO Completed compilation step 1 of 1. [0.697 s]
[2024.12.19 17:11:18.694] INFO ─────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:18.694] INFO Device AWG SeqC LOC CT entries Waveforms Samples
[2024.12.19 17:11:18.695] INFO ─────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:18.696] INFO device_hdawg 0 4 1 0 0
[2024.12.19 17:11:18.696] INFO device_shfqc 0 162 0 1 8000
[2024.12.19 17:11:18.697] INFO device_shfqc_sg 0 370 54 53 12064
[2024.12.19 17:11:18.699] INFO ─────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:18.701] INFO TOTAL 536 55 20064
[2024.12.19 17:11:18.702] INFO ─────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:18.707] INFO Finished LabOne Q Compiler run.
[2024.12.19 17:11:18.713] INFO Task 'compile_experiment': ended at 2024-12-19 17:11:18.713237Z
[2024.12.19 17:11:18.714] INFO Task 'run_experiment': started at 2024-12-19 17:11:18.713981Z
[2024.12.19 17:11:18.716] INFO Connected to Zurich Instruments LabOne Data Server version 24.10 at localhost:8004
[2024.12.19 17:11:18.717] INFO Configuring the device setup
[2024.12.19 17:11:18.720] INFO The device setup is configured
[2024.12.19 17:11:18.725] INFO Starting near-time execution...
[2024.12.19 17:11:18.748] INFO Finished near-time execution.
[2024.12.19 17:11:18.750] INFO Task 'run_experiment': ended at 2024-12-19 17:11:18.750029Z
[2024.12.19 17:11:18.751] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:18.752] INFO Workflow 'analysis_workflow': execution started at 2024-12-19
[2024.12.19 17:11:18.752] INFO 17:11:18.751106Z
[2024.12.19 17:11:18.753] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:18.753] INFO Task 'calculate_qubit_population': started at 2024-12-19 17:11:18.753677Z
[2024.12.19 17:11:18.755] INFO Task 'calculate_qubit_population': ended at 2024-12-19 17:11:18.755268Z
[2024.12.19 17:11:18.756] INFO Task 'fit_data': started at 2024-12-19 17:11:18.755993Z
[2024.12.19 17:11:19.046] INFO Task 'fit_data': ended at 2024-12-19 17:11:19.045847Z
[2024.12.19 17:11:19.046] INFO Task 'extract_qubit_parameters': started at 2024-12-19 17:11:19.046666Z
[2024.12.19 17:11:19.048] INFO Task 'extract_qubit_parameters': ended at 2024-12-19 17:11:19.047904Z
[2024.12.19 17:11:19.048] INFO Task 'plot_raw_complex_data_1d': started at 2024-12-19 17:11:19.048630Z
[2024.12.19 17:11:19.071] INFO Artifact: 'Raw_data_q0' of type 'Figure' logged at 2024-12-19 17:11:19.071387Z
[2024.12.19 17:11:19.072] INFO Task 'plot_raw_complex_data_1d': ended at 2024-12-19 17:11:19.072091Z
[2024.12.19 17:11:19.072] INFO Task 'plot_population': started at 2024-12-19 17:11:19.072716Z
[2024.12.19 17:11:19.084] INFO Artifact: 'Ramsey_q0' of type 'Figure' logged at 2024-12-19 17:11:19.083927Z
[2024.12.19 17:11:19.084] INFO Task 'plot_population': ended at 2024-12-19 17:11:19.084605Z
[2024.12.19 17:11:19.085] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:19.085] INFO Workflow 'analysis_workflow': execution ended at 2024-12-19 17:11:19.085205Z
[2024.12.19 17:11:19.086] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:19.086] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:19.087] INFO Workflow 'ramsey': execution ended at 2024-12-19 17:11:19.086531Z
[2024.12.19 17:11:19.087] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:19.089] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:19.089] INFO Workflow 'ramsey': execution started at 2024-12-19 17:11:19.089161Z
[2024.12.19 17:11:19.090] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:19.090] INFO Task 'temporary_modify': started at 2024-12-19 17:11:19.090488Z
[2024.12.19 17:11:19.091] INFO Task 'temporary_modify': ended at 2024-12-19 17:11:19.091223Z
[2024.12.19 17:11:19.092] INFO Task 'create_experiment': started at 2024-12-19 17:11:19.091812Z
[2024.12.19 17:11:19.093] INFO Task 'create_experiment': ended at 2024-12-19 17:11:19.093742Z
[2024.12.19 17:11:19.094] INFO Task 'compile_experiment': started at 2024-12-19 17:11:19.094325Z
[2024.12.19 17:11:19.100] INFO Resolved modulation type of oscillator 'q0_readout_acquire_osc' on signal '/logical_signal_groups/q0/acquire' to SOFTWARE
[2024.12.19 17:11:19.101] INFO Resolved modulation type of oscillator 'q0_drive_ge_osc' on signal '/logical_signal_groups/q0/drive' to HARDWARE
[2024.12.19 17:11:19.101] INFO Resolved modulation type of oscillator 'q0_drive_ef_osc' on signal '/logical_signal_groups/q0/drive_ef' to HARDWARE
[2024.12.19 17:11:19.101] INFO Starting LabOne Q Compiler run...
[2024.12.19 17:11:19.140] INFO Schedule completed. [0.037 s]
[2024.12.19 17:11:19.225] INFO Code generation completed for all AWGs. [0.085 s]
[2024.12.19 17:11:19.226] INFO Completed compilation step 1 of 1. [0.123 s]
[2024.12.19 17:11:19.230] INFO ─────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:19.230] INFO Device AWG SeqC LOC CT entries Waveforms Samples
[2024.12.19 17:11:19.231] INFO ─────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:19.231] INFO device_hdawg 0 4 1 0 0
[2024.12.19 17:11:19.231] INFO device_shfqc 0 162 0 1 8000
[2024.12.19 17:11:19.232] INFO device_shfqc_sg 0 227 7 5 20000
[2024.12.19 17:11:19.232] INFO ─────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:19.232] INFO TOTAL 393 8 28000
[2024.12.19 17:11:19.232] INFO ─────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:19.237] INFO Finished LabOne Q Compiler run.
[2024.12.19 17:11:19.239] INFO Task 'compile_experiment': ended at 2024-12-19 17:11:19.239165Z
[2024.12.19 17:11:19.239] INFO Task 'run_experiment': started at 2024-12-19 17:11:19.239758Z
[2024.12.19 17:11:19.246] INFO Starting near-time execution...
[2024.12.19 17:11:19.257] INFO Finished near-time execution.
[2024.12.19 17:11:19.258] INFO Task 'run_experiment': ended at 2024-12-19 17:11:19.258633Z
[2024.12.19 17:11:19.259] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:19.260] INFO Workflow 'analysis_workflow': execution started at 2024-12-19
[2024.12.19 17:11:19.260] INFO 17:11:19.259501Z
[2024.12.19 17:11:19.261] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:19.261] INFO Task 'calculate_qubit_population': started at 2024-12-19 17:11:19.261444Z
[2024.12.19 17:11:19.262] INFO Task 'calculate_qubit_population': ended at 2024-12-19 17:11:19.262676Z
[2024.12.19 17:11:19.263] INFO Task 'fit_data': started at 2024-12-19 17:11:19.263277Z
[2024.12.19 17:11:19.570] INFO Task 'fit_data': ended at 2024-12-19 17:11:19.570175Z
[2024.12.19 17:11:19.571] INFO Task 'extract_qubit_parameters': started at 2024-12-19 17:11:19.571092Z
[2024.12.19 17:11:19.572] INFO Task 'extract_qubit_parameters': ended at 2024-12-19 17:11:19.572389Z
[2024.12.19 17:11:19.573] INFO Task 'plot_raw_complex_data_1d': started at 2024-12-19 17:11:19.573084Z
[2024.12.19 17:11:19.594] INFO Artifact: 'Raw_data_q0' of type 'Figure' logged at 2024-12-19 17:11:19.594652Z
[2024.12.19 17:11:19.595] INFO Task 'plot_raw_complex_data_1d': ended at 2024-12-19 17:11:19.595365Z
[2024.12.19 17:11:19.596] INFO Task 'plot_population': started at 2024-12-19 17:11:19.596189Z
[2024.12.19 17:11:19.607] INFO Artifact: 'Ramsey_q0' of type 'Figure' logged at 2024-12-19 17:11:19.607533Z
[2024.12.19 17:11:19.608] INFO Task 'plot_population': ended at 2024-12-19 17:11:19.608163Z
[2024.12.19 17:11:19.609] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:19.609] INFO Workflow 'analysis_workflow': execution ended at 2024-12-19 17:11:19.608753Z
[2024.12.19 17:11:19.610] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:19.610] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:19.611] INFO Workflow 'ramsey': execution ended at 2024-12-19 17:11:19.610364Z
[2024.12.19 17:11:19.611] INFO ──────────────────────────────────────────────────────────────────────────────
# compare the two pulse sequences
from laboneq.contrib.example_helpers.plotting.plot_helpers import plot_simulation
plot_simulation(
result_unmodified.tasks["compile_experiment"].output,
signal_names_to_show=["drive", "measure"],
start_time=0,
length=5e-6,
)
Debugging experiment Workflows¶
Inspect after an error¶
If an error occurs during the execution of the experiment Workflow
, we can inspect the tasks that have run up to the task that produced the error using recover()
. This is particularly useful to inspect the experiment pulse sequence in case of a compilation or measurement error.
Let's introduce a run-time error by exceeding the waveform memory.
# here we catch the exception so that the notebook can keep executing
try:
ramsey_result_error = ramsey.experiment_workflow(
session=session,
qpu=qpu,
qubits=qubits[0],
delays=np.linspace(0, 50e-6, 1001),
detunings=0.67e6,
).run()
except LabOneQException as e:
print("ERROR: ", e)
[2024.12.19 17:11:27.072] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:27.073] INFO Workflow 'ramsey': execution started at 2024-12-19 17:11:27.072507Z
[2024.12.19 17:11:27.074] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:27.075] INFO Task 'temporary_modify': started at 2024-12-19 17:11:27.074990Z
[2024.12.19 17:11:27.075] INFO Task 'temporary_modify': ended at 2024-12-19 17:11:27.075633Z
[2024.12.19 17:11:27.076] INFO Task 'create_experiment': started at 2024-12-19 17:11:27.076209Z
[2024.12.19 17:11:27.079] INFO Task 'create_experiment': ended at 2024-12-19 17:11:27.079200Z
[2024.12.19 17:11:27.080] INFO Task 'compile_experiment': started at 2024-12-19 17:11:27.079835Z
[2024.12.19 17:11:27.086] INFO Resolved modulation type of oscillator 'q0_readout_acquire_osc' on signal '/logical_signal_groups/q0/acquire' to SOFTWARE
[2024.12.19 17:11:27.086] INFO Resolved modulation type of oscillator 'q0_drive_ge_osc' on signal '/logical_signal_groups/q0/drive' to HARDWARE
[2024.12.19 17:11:27.087] INFO Resolved modulation type of oscillator 'q0_drive_ef_osc' on signal '/logical_signal_groups/q0/drive_ef' to HARDWARE
[2024.12.19 17:11:27.087] INFO Starting LabOne Q Compiler run...
[2024.12.19 17:11:28.129] INFO Schedule completed. [1.039 s]
[2024.12.19 17:11:30.166] INFO Code generation completed for all AWGs. [2.037 s]
[2024.12.19 17:11:30.169] INFO Completed compilation step 1 of 1. [3.079 s]
[2024.12.19 17:11:30.174] INFO ─────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:30.175] INFO Device AWG SeqC LOC CT entries Waveforms Samples
[2024.12.19 17:11:30.175] INFO ─────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:30.176] INFO device_hdawg 0 4 1 0 0
[2024.12.19 17:11:30.176] INFO device_shfqc 0 3012 0 1 8000
[2024.12.19 17:11:30.176] INFO device_shfqc_sg 0 7029 1007 1006 225568
[2024.12.19 17:11:30.177] INFO ─────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:30.177] INFO TOTAL 10045 1008 233568
[2024.12.19 17:11:30.178] INFO ─────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:30.182] INFO Finished LabOne Q Compiler run.
[2024.12.19 17:11:30.246] INFO Task 'compile_experiment': ended at 2024-12-19 17:11:30.245651Z
[2024.12.19 17:11:30.246] INFO Task 'run_experiment': started at 2024-12-19 17:11:30.246647Z
[2024.12.19 17:11:30.251] INFO Connected to Zurich Instruments LabOne Data Server version 24.10 at localhost:8004
[2024.12.19 17:11:30.251] INFO Configuring the device setup
[2024.12.19 17:11:30.255] INFO The device setup is configured
[2024.12.19 17:11:30.260] INFO Starting near-time execution...
[2024.12.19 17:11:30.532] ERROR Task 'run_experiment': failed at 2024-12-19 17:11:30.531486Z with:
[2024.12.19 17:11:30.532] ERROR Task 'run_experiment': failed at 2024-12-19 17:11:30.531486Z with:
[2024.12.19 17:11:30.533] ERROR LabOneQException('seq_device_shfqc_sg_0_[].seqc: AWG compilation
[2024.12.19 17:11:30.533] ERROR LabOneQException('seq_device_shfqc_sg_0_[].seqc: AWG compilation
[2024.12.19 17:11:30.533] ERROR failed.\nCompilation failed: Compiler Error (line: 7028): waveforms are not
[2024.12.19 17:11:30.533] ERROR failed.\nCompilation failed: Compiler Error (line: 7028): waveforms are not
[2024.12.19 17:11:30.534] ERROR fitting into wave memory\n')
[2024.12.19 17:11:30.534] ERROR fitting into wave memory\n')
[2024.12.19 17:11:30.536] INFO Task 'run_experiment': ended at 2024-12-19 17:11:30.535911Z
[2024.12.19 17:11:30.537] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:30.537] INFO Workflow 'ramsey': execution ended at 2024-12-19 17:11:30.536634Z
[2024.12.19 17:11:30.537] INFO ──────────────────────────────────────────────────────────────────────────────
ERROR: seq_device_shfqc_sg_0_[].seqc: AWG compilation failed. Compilation failed: Compiler Error (line: 7028): waveforms are not fitting into wave memory
ramsey_result_error = ramsey.experiment_workflow.recover()
for t in ramsey_result_error.tasks:
print(t)
TaskResult(name=temporary_modify, index=()) TaskResult(name=create_experiment, index=()) TaskResult(name=compile_experiment, index=()) TaskResult(name=run_experiment, index=())
# inspect the experiment section tree
print(ramsey_result_error.tasks["create_experiment"].output)
Experiment( │ uid='create_experiment', │ name='unnamed', │ signals={ │ │ '/logical_signal_groups/q0/drive': ExperimentSignal( │ │ │ uid='/logical_signal_groups/q0/drive', │ │ │ calibration=SignalCalibration( │ │ │ │ oscillator=Oscillator( │ │ │ │ │ uid='q0_drive_ge_osc', │ │ │ │ │ frequency=100637661.00225449, │ │ │ │ │ modulation_type=ModulationType.AUTO, │ │ │ │ │ carrier_type=None │ │ │ │ ), │ │ │ │ local_oscillator=Oscillator( │ │ │ │ │ uid='q0_drive_local_osc', │ │ │ │ │ frequency=6400000000, │ │ │ │ │ modulation_type=ModulationType.AUTO, │ │ │ │ │ carrier_type=None │ │ │ │ ), │ │ │ │ mixer_calibration=None, │ │ │ │ precompensation=None, │ │ │ │ port_delay=None, │ │ │ │ port_mode=None, │ │ │ │ delay_signal=None, │ │ │ │ voltage_offset=None, │ │ │ │ range=10, │ │ │ │ threshold=None, │ │ │ │ amplitude=None, │ │ │ │ amplifier_pump=None, │ │ │ │ added_outputs=None, │ │ │ │ automute=False │ │ │ ), │ │ │ mapped_logical_signal_path='/logical_signal_groups/q0/drive' │ │ ), │ │ '/logical_signal_groups/q0/drive_ef': ExperimentSignal( │ │ │ uid='/logical_signal_groups/q0/drive_ef', │ │ │ calibration=SignalCalibration( │ │ │ │ oscillator=Oscillator( │ │ │ │ │ uid='q0_drive_ef_osc', │ │ │ │ │ frequency=-100000000.0, │ │ │ │ │ modulation_type=ModulationType.AUTO, │ │ │ │ │ carrier_type=None │ │ │ │ ), │ │ │ │ local_oscillator=Oscillator( │ │ │ │ │ uid='q0_drive_local_osc', │ │ │ │ │ frequency=6400000000, │ │ │ │ │ modulation_type=ModulationType.AUTO, │ │ │ │ │ carrier_type=None │ │ │ │ ), │ │ │ │ mixer_calibration=None, │ │ │ │ precompensation=None, │ │ │ │ port_delay=None, │ │ │ │ port_mode=None, │ │ │ │ delay_signal=None, │ │ │ │ voltage_offset=None, │ │ │ │ range=10, │ │ │ │ threshold=None, │ │ │ │ amplitude=None, │ │ │ │ amplifier_pump=None, │ │ │ │ added_outputs=None, │ │ │ │ automute=False │ │ │ ), │ │ │ mapped_logical_signal_path='/logical_signal_groups/q0/drive_ef' │ │ ), │ │ '/logical_signal_groups/q0/measure': ExperimentSignal( │ │ │ uid='/logical_signal_groups/q0/measure', │ │ │ calibration=SignalCalibration( │ │ │ │ oscillator=Oscillator( │ │ │ │ │ uid='q0_readout_acquire_osc', │ │ │ │ │ frequency=100000000.0, │ │ │ │ │ modulation_type=ModulationType.AUTO, │ │ │ │ │ carrier_type=None │ │ │ │ ), │ │ │ │ local_oscillator=Oscillator( │ │ │ │ │ uid='q0_readout_local_osc', │ │ │ │ │ frequency=7000000000.0, │ │ │ │ │ modulation_type=ModulationType.AUTO, │ │ │ │ │ carrier_type=None │ │ │ │ ), │ │ │ │ mixer_calibration=None, │ │ │ │ precompensation=None, │ │ │ │ port_delay=None, │ │ │ │ port_mode=None, │ │ │ │ delay_signal=None, │ │ │ │ voltage_offset=None, │ │ │ │ range=5, │ │ │ │ threshold=None, │ │ │ │ amplitude=None, │ │ │ │ amplifier_pump=None, │ │ │ │ added_outputs=None, │ │ │ │ automute=False │ │ │ ), │ │ │ mapped_logical_signal_path='/logical_signal_groups/q0/measure' │ │ ), │ │ '/logical_signal_groups/q0/acquire': ExperimentSignal( │ │ │ uid='/logical_signal_groups/q0/acquire', │ │ │ calibration=SignalCalibration( │ │ │ │ oscillator=Oscillator( │ │ │ │ │ uid='q0_readout_acquire_osc', │ │ │ │ │ frequency=100000000.0, │ │ │ │ │ modulation_type=ModulationType.AUTO, │ │ │ │ │ carrier_type=None │ │ │ │ ), │ │ │ │ local_oscillator=Oscillator( │ │ │ │ │ uid='q0_readout_local_osc', │ │ │ │ │ frequency=7000000000.0, │ │ │ │ │ modulation_type=ModulationType.AUTO, │ │ │ │ │ carrier_type=None │ │ │ │ ), │ │ │ │ mixer_calibration=None, │ │ │ │ precompensation=None, │ │ │ │ port_delay=2e-08, │ │ │ │ port_mode=None, │ │ │ │ delay_signal=None, │ │ │ │ voltage_offset=None, │ │ │ │ range=10, │ │ │ │ threshold=None, │ │ │ │ amplitude=None, │ │ │ │ amplifier_pump=None, │ │ │ │ added_outputs=None, │ │ │ │ automute=False │ │ │ ), │ │ │ mapped_logical_signal_path='/logical_signal_groups/q0/acquire' │ │ ), │ │ '/logical_signal_groups/q0/flux': ExperimentSignal( │ │ │ uid='/logical_signal_groups/q0/flux', │ │ │ calibration=SignalCalibration( │ │ │ │ oscillator=None, │ │ │ │ local_oscillator=None, │ │ │ │ mixer_calibration=None, │ │ │ │ precompensation=None, │ │ │ │ port_delay=None, │ │ │ │ port_mode=None, │ │ │ │ delay_signal=None, │ │ │ │ voltage_offset=0, │ │ │ │ range=None, │ │ │ │ threshold=None, │ │ │ │ amplitude=None, │ │ │ │ amplifier_pump=None, │ │ │ │ added_outputs=None, │ │ │ │ automute=False │ │ │ ), │ │ │ mapped_logical_signal_path='/logical_signal_groups/q0/flux' │ │ ) │ }, │ version=DSLVersion.V3_0_0, │ epsilon=0.0, │ sections=[ │ │ AcquireLoopRt( │ │ │ uid='unnamed_0', │ │ │ name='unnamed', │ │ │ alignment=SectionAlignment.LEFT, │ │ │ execution_type=ExecutionType.REAL_TIME, │ │ │ length=None, │ │ │ play_after=None, │ │ │ children=[ │ │ │ │ Sweep( │ │ │ │ │ uid='ramsey_sweep_0', │ │ │ │ │ name='ramsey_sweep', │ │ │ │ │ alignment=SectionAlignment.LEFT, │ │ │ │ │ execution_type=None, │ │ │ │ │ length=None, │ │ │ │ │ play_after=None, │ │ │ │ │ children=[ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ uid='main_0', │ │ │ │ │ │ │ name='main', │ │ │ │ │ │ │ alignment=SectionAlignment.RIGHT, │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ │ │ uid='main_drive_0', │ │ │ │ │ │ │ │ │ name='main_drive', │ │ │ │ │ │ │ │ │ alignment=SectionAlignment.RIGHT, │ │ │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ │ │ │ │ uid='ramsey_q0_0', │ │ │ │ │ │ │ │ │ │ │ name='ramsey_q0', │ │ │ │ │ │ │ │ │ │ │ alignment=SectionAlignment.RIGHT, │ │ │ │ │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ │ │ │ │ │ │ uid='x90_q0_0', │ │ │ │ │ │ │ │ │ │ │ │ │ name='x90_q0', │ │ │ │ │ │ │ │ │ │ │ │ │ alignment=SectionAlignment.RIGHT, │ │ │ │ │ │ │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive_ef' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/measure' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/acquire' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/flux' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ PlayPulse( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive', │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ pulse=PulseFunctional( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ function='drag', │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ uid='rx_pulse_0', │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ amplitude=1.0, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ length=1e-07, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ can_compress=False, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ pulse_parameters={ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ 'beta': 0.01, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ 'sigma': 0.21 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ } │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ amplitude=0.4, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ increment_oscillator_phase=None, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ phase=0.0, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ set_oscillator_phase=None, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ length=5.1e-08, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ precompensation_clear=None, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ marker=None │ │ │ │ │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ │ │ │ │ │ │ uid='delay_q0_0', │ │ │ │ │ │ │ │ │ │ │ │ │ name='delay_q0', │ │ │ │ │ │ │ │ │ │ │ │ │ alignment=SectionAlignment.LEFT, │ │ │ │ │ │ │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive_ef' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/measure' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/acquire' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/flux' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ Delay( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive', │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ time=SweepParameter( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ uid='wait_time_q0', │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ values=array([0.000e+00, 5.000e-08, 1.000e-07, ..., 4.990e-05, 4.995e-05, │ 5.000e-05]), │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ axis_name=None, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ driven_by=None │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ precompensation_clear=None │ │ │ │ │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ │ │ │ │ │ │ uid='x90_q0_1', │ │ │ │ │ │ │ │ │ │ │ │ │ name='x90_q0', │ │ │ │ │ │ │ │ │ │ │ │ │ alignment=SectionAlignment.RIGHT, │ │ │ │ │ │ │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive_ef' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/measure' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/acquire' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/flux' │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ PlayPulse( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive', │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ pulse=PulseFunctional( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ function='drag', │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ uid='rx_pulse_0', │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ amplitude=1.0, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ length=1e-07, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ can_compress=False, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ pulse_parameters={ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ 'beta': 0.01, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ 'sigma': 0.21 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ } │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ amplitude=0.4, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ increment_oscillator_phase=None, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ phase=SweepParameter( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ uid='x90_phases_q0', │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ values=array([0. , 0.21048671, 0.42097342, ..., 2.72061924, 2.93110595, │ 3.14159265]), │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ axis_name=None, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ driven_by=None │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ set_oscillator_phase=None, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ length=5.1e-08, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ precompensation_clear=None, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ marker=None │ │ │ │ │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ │ │ uid='main_measure_0', │ │ │ │ │ │ │ │ │ name='main_measure', │ │ │ │ │ │ │ │ │ alignment=SectionAlignment.LEFT, │ │ │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ │ │ │ │ uid='measure_q0_0', │ │ │ │ │ │ │ │ │ │ │ name='measure_q0', │ │ │ │ │ │ │ │ │ │ │ alignment=SectionAlignment.LEFT, │ │ │ │ │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ │ │ │ │ length=2e-06, │ │ │ │ │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive' │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive_ef' │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/measure' │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/acquire' │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/flux' │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ PlayPulse( │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/measure', │ │ │ │ │ │ │ │ │ │ │ │ │ pulse=PulseFunctional( │ │ │ │ │ │ │ │ │ │ │ │ │ │ function='const', │ │ │ │ │ │ │ │ │ │ │ │ │ │ uid='readout_pulse_0', │ │ │ │ │ │ │ │ │ │ │ │ │ │ amplitude=1.0, │ │ │ │ │ │ │ │ │ │ │ │ │ │ length=1e-07, │ │ │ │ │ │ │ │ │ │ │ │ │ │ can_compress=False, │ │ │ │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None │ │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ │ amplitude=1.0, │ │ │ │ │ │ │ │ │ │ │ │ │ increment_oscillator_phase=None, │ │ │ │ │ │ │ │ │ │ │ │ │ phase=None, │ │ │ │ │ │ │ │ │ │ │ │ │ set_oscillator_phase=None, │ │ │ │ │ │ │ │ │ │ │ │ │ length=2e-06, │ │ │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None, │ │ │ │ │ │ │ │ │ │ │ │ │ precompensation_clear=None, │ │ │ │ │ │ │ │ │ │ │ │ │ marker=None │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ Acquire( │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/acquire', │ │ │ │ │ │ │ │ │ │ │ │ │ handle='q0/result', │ │ │ │ │ │ │ │ │ │ │ │ │ kernel=[ │ │ │ │ │ │ │ │ │ │ │ │ │ │ PulseFunctional( │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ function='const', │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ uid='integration_kernel_q0_0', │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ amplitude=1.0, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ length=2e-06, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ can_compress=False, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None │ │ │ │ │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ │ │ │ │ length=2e-06, │ │ │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None │ │ │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ │ │ │ │ uid='passive_reset_q0_0', │ │ │ │ │ │ │ │ │ │ │ name='passive_reset_q0', │ │ │ │ │ │ │ │ │ │ │ alignment=SectionAlignment.LEFT, │ │ │ │ │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive' │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive_ef' │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/measure' │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/acquire' │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/flux' │ │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ │ Delay( │ │ │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive', │ │ │ │ │ │ │ │ │ │ │ │ │ time=1e-06, │ │ │ │ │ │ │ │ │ │ │ │ │ precompensation_clear=None │ │ │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ ) │ │ │ │ │ ], │ │ │ │ │ trigger={}, │ │ │ │ │ on_system_grid=False, │ │ │ │ │ parameters=[ │ │ │ │ │ │ SweepParameter( │ │ │ │ │ │ │ uid='wait_time_q0', │ │ │ │ │ │ │ values=array([0.000e+00, 5.000e-08, 1.000e-07, ..., 4.990e-05, 4.995e-05, │ 5.000e-05]), │ │ │ │ │ │ │ axis_name=None, │ │ │ │ │ │ │ driven_by=None │ │ │ │ │ │ ), │ │ │ │ │ │ SweepParameter( │ │ │ │ │ │ │ uid='x90_phases_q0', │ │ │ │ │ │ │ values=array([0. , 0.21048671, 0.42097342, ..., 2.72061924, 2.93110595, │ 3.14159265]), │ │ │ │ │ │ │ axis_name=None, │ │ │ │ │ │ │ driven_by=None │ │ │ │ │ │ ) │ │ │ │ │ ], │ │ │ │ │ reset_oscillator_phase=False, │ │ │ │ │ chunk_count=1 │ │ │ │ ), │ │ │ │ Section( │ │ │ │ │ uid='cal_g_0', │ │ │ │ │ name='cal_g', │ │ │ │ │ alignment=SectionAlignment.RIGHT, │ │ │ │ │ execution_type=None, │ │ │ │ │ length=None, │ │ │ │ │ play_after=None, │ │ │ │ │ children=[ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ uid='cal_prep_g_0', │ │ │ │ │ │ │ name='cal_prep_g', │ │ │ │ │ │ │ alignment=SectionAlignment.RIGHT, │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ children=[], │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ ), │ │ │ │ │ │ Section( │ │ │ │ │ │ │ uid='cal_measure_g_0', │ │ │ │ │ │ │ name='cal_measure_g', │ │ │ │ │ │ │ alignment=SectionAlignment.LEFT, │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ │ │ uid='measure_q0_1', │ │ │ │ │ │ │ │ │ name='measure_q0', │ │ │ │ │ │ │ │ │ alignment=SectionAlignment.LEFT, │ │ │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ │ │ length=2e-06, │ │ │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive_ef' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/measure' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/acquire' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/flux' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ PlayPulse( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/measure', │ │ │ │ │ │ │ │ │ │ │ pulse=PulseFunctional( │ │ │ │ │ │ │ │ │ │ │ │ function='const', │ │ │ │ │ │ │ │ │ │ │ │ uid='readout_pulse_0', │ │ │ │ │ │ │ │ │ │ │ │ amplitude=1.0, │ │ │ │ │ │ │ │ │ │ │ │ length=1e-07, │ │ │ │ │ │ │ │ │ │ │ │ can_compress=False, │ │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ amplitude=1.0, │ │ │ │ │ │ │ │ │ │ │ increment_oscillator_phase=None, │ │ │ │ │ │ │ │ │ │ │ phase=None, │ │ │ │ │ │ │ │ │ │ │ set_oscillator_phase=None, │ │ │ │ │ │ │ │ │ │ │ length=2e-06, │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None, │ │ │ │ │ │ │ │ │ │ │ precompensation_clear=None, │ │ │ │ │ │ │ │ │ │ │ marker=None │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Acquire( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/acquire', │ │ │ │ │ │ │ │ │ │ │ handle='q0/cal_trace/g', │ │ │ │ │ │ │ │ │ │ │ kernel=[ │ │ │ │ │ │ │ │ │ │ │ │ PulseFunctional( │ │ │ │ │ │ │ │ │ │ │ │ │ function='const', │ │ │ │ │ │ │ │ │ │ │ │ │ uid='integration_kernel_q0_0', │ │ │ │ │ │ │ │ │ │ │ │ │ amplitude=1.0, │ │ │ │ │ │ │ │ │ │ │ │ │ length=2e-06, │ │ │ │ │ │ │ │ │ │ │ │ │ can_compress=False, │ │ │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None │ │ │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ │ │ length=2e-06, │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ │ │ uid='passive_reset_q0_1', │ │ │ │ │ │ │ │ │ name='passive_reset_q0', │ │ │ │ │ │ │ │ │ alignment=SectionAlignment.LEFT, │ │ │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive_ef' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/measure' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/acquire' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/flux' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Delay( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive', │ │ │ │ │ │ │ │ │ │ │ time=1e-06, │ │ │ │ │ │ │ │ │ │ │ precompensation_clear=None │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ ) │ │ │ │ │ ], │ │ │ │ │ trigger={}, │ │ │ │ │ on_system_grid=False │ │ │ │ ), │ │ │ │ Section( │ │ │ │ │ uid='cal_e_0', │ │ │ │ │ name='cal_e', │ │ │ │ │ alignment=SectionAlignment.RIGHT, │ │ │ │ │ execution_type=None, │ │ │ │ │ length=None, │ │ │ │ │ play_after=None, │ │ │ │ │ children=[ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ uid='cal_prep_e_0', │ │ │ │ │ │ │ name='cal_prep_e', │ │ │ │ │ │ │ alignment=SectionAlignment.RIGHT, │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ │ │ uid='x180_q0_0', │ │ │ │ │ │ │ │ │ name='x180_q0', │ │ │ │ │ │ │ │ │ alignment=SectionAlignment.RIGHT, │ │ │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive_ef' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/measure' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/acquire' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/flux' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ PlayPulse( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive', │ │ │ │ │ │ │ │ │ │ │ pulse=PulseFunctional( │ │ │ │ │ │ │ │ │ │ │ │ function='drag', │ │ │ │ │ │ │ │ │ │ │ │ uid='rx_pulse_0', │ │ │ │ │ │ │ │ │ │ │ │ amplitude=1.0, │ │ │ │ │ │ │ │ │ │ │ │ length=1e-07, │ │ │ │ │ │ │ │ │ │ │ │ can_compress=False, │ │ │ │ │ │ │ │ │ │ │ │ pulse_parameters={ │ │ │ │ │ │ │ │ │ │ │ │ │ 'beta': 0.01, │ │ │ │ │ │ │ │ │ │ │ │ │ 'sigma': 0.21 │ │ │ │ │ │ │ │ │ │ │ │ } │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ amplitude=0.8, │ │ │ │ │ │ │ │ │ │ │ increment_oscillator_phase=None, │ │ │ │ │ │ │ │ │ │ │ phase=0.0, │ │ │ │ │ │ │ │ │ │ │ set_oscillator_phase=None, │ │ │ │ │ │ │ │ │ │ │ length=5.1e-08, │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None, │ │ │ │ │ │ │ │ │ │ │ precompensation_clear=None, │ │ │ │ │ │ │ │ │ │ │ marker=None │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ ), │ │ │ │ │ │ Section( │ │ │ │ │ │ │ uid='cal_measure_e_0', │ │ │ │ │ │ │ name='cal_measure_e', │ │ │ │ │ │ │ alignment=SectionAlignment.LEFT, │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ │ │ uid='measure_q0_2', │ │ │ │ │ │ │ │ │ name='measure_q0', │ │ │ │ │ │ │ │ │ alignment=SectionAlignment.LEFT, │ │ │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ │ │ length=2e-06, │ │ │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive_ef' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/measure' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/acquire' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/flux' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ PlayPulse( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/measure', │ │ │ │ │ │ │ │ │ │ │ pulse=PulseFunctional( │ │ │ │ │ │ │ │ │ │ │ │ function='const', │ │ │ │ │ │ │ │ │ │ │ │ uid='readout_pulse_0', │ │ │ │ │ │ │ │ │ │ │ │ amplitude=1.0, │ │ │ │ │ │ │ │ │ │ │ │ length=1e-07, │ │ │ │ │ │ │ │ │ │ │ │ can_compress=False, │ │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None │ │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ │ amplitude=1.0, │ │ │ │ │ │ │ │ │ │ │ increment_oscillator_phase=None, │ │ │ │ │ │ │ │ │ │ │ phase=None, │ │ │ │ │ │ │ │ │ │ │ set_oscillator_phase=None, │ │ │ │ │ │ │ │ │ │ │ length=2e-06, │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None, │ │ │ │ │ │ │ │ │ │ │ precompensation_clear=None, │ │ │ │ │ │ │ │ │ │ │ marker=None │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Acquire( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/acquire', │ │ │ │ │ │ │ │ │ │ │ handle='q0/cal_trace/e', │ │ │ │ │ │ │ │ │ │ │ kernel=[ │ │ │ │ │ │ │ │ │ │ │ │ PulseFunctional( │ │ │ │ │ │ │ │ │ │ │ │ │ function='const', │ │ │ │ │ │ │ │ │ │ │ │ │ uid='integration_kernel_q0_0', │ │ │ │ │ │ │ │ │ │ │ │ │ amplitude=1.0, │ │ │ │ │ │ │ │ │ │ │ │ │ length=2e-06, │ │ │ │ │ │ │ │ │ │ │ │ │ can_compress=False, │ │ │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None │ │ │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ │ │ length=2e-06, │ │ │ │ │ │ │ │ │ │ │ pulse_parameters=None │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ Section( │ │ │ │ │ │ │ │ │ uid='passive_reset_q0_2', │ │ │ │ │ │ │ │ │ name='passive_reset_q0', │ │ │ │ │ │ │ │ │ alignment=SectionAlignment.LEFT, │ │ │ │ │ │ │ │ │ execution_type=None, │ │ │ │ │ │ │ │ │ length=None, │ │ │ │ │ │ │ │ │ play_after=None, │ │ │ │ │ │ │ │ │ children=[ │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive_ef' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/measure' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/acquire' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Reserve( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/flux' │ │ │ │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ │ │ │ Delay( │ │ │ │ │ │ │ │ │ │ │ signal='/logical_signal_groups/q0/drive', │ │ │ │ │ │ │ │ │ │ │ time=1e-06, │ │ │ │ │ │ │ │ │ │ │ precompensation_clear=None │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ ], │ │ │ │ │ │ │ trigger={}, │ │ │ │ │ │ │ on_system_grid=False │ │ │ │ │ │ ) │ │ │ │ │ ], │ │ │ │ │ trigger={}, │ │ │ │ │ on_system_grid=False │ │ │ │ ) │ │ │ ], │ │ │ trigger={}, │ │ │ on_system_grid=False, │ │ │ acquisition_type=AcquisitionType.INTEGRATION, │ │ │ averaging_mode=AveragingMode.CYCLIC, │ │ │ count=1024, │ │ │ repetition_mode=RepetitionMode.FASTEST, │ │ │ repetition_time=None, │ │ │ reset_oscillator_phase=False │ │ ) │ ] )
Run until a task¶
ramsey_result_partial = ramsey.experiment_workflow(
session=session,
qpu=qpu,
qubits=qubits[0],
delays=np.linspace(0, 50e-6, 50),
detunings=0.67e6,
).run(until="compile_experiment")
[2024.12.19 17:11:30.686] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:30.687] INFO Workflow 'ramsey': execution started at 2024-12-19 17:11:30.686116Z
[2024.12.19 17:11:30.687] INFO ──────────────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:30.688] INFO Task 'temporary_modify': started at 2024-12-19 17:11:30.688253Z
[2024.12.19 17:11:30.689] INFO Task 'temporary_modify': ended at 2024-12-19 17:11:30.688885Z
[2024.12.19 17:11:30.689] INFO Task 'create_experiment': started at 2024-12-19 17:11:30.689529Z
[2024.12.19 17:11:30.691] INFO Task 'create_experiment': ended at 2024-12-19 17:11:30.691444Z
[2024.12.19 17:11:30.692] INFO Task 'compile_experiment': started at 2024-12-19 17:11:30.692677Z
[2024.12.19 17:11:30.699] INFO Resolved modulation type of oscillator 'q0_readout_acquire_osc' on signal '/logical_signal_groups/q0/acquire' to SOFTWARE
[2024.12.19 17:11:30.700] INFO Resolved modulation type of oscillator 'q0_drive_ge_osc' on signal '/logical_signal_groups/q0/drive' to HARDWARE
[2024.12.19 17:11:30.700] INFO Resolved modulation type of oscillator 'q0_drive_ef_osc' on signal '/logical_signal_groups/q0/drive_ef' to HARDWARE
[2024.12.19 17:11:30.700] INFO Starting LabOne Q Compiler run...
[2024.12.19 17:11:30.741] INFO Schedule completed. [0.038 s]
[2024.12.19 17:11:30.840] INFO Code generation completed for all AWGs. [0.098 s]
[2024.12.19 17:11:30.841] INFO Completed compilation step 1 of 1. [0.138 s]
[2024.12.19 17:11:30.845] INFO ─────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:30.845] INFO Device AWG SeqC LOC CT entries Waveforms Samples
[2024.12.19 17:11:30.846] INFO ─────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:30.846] INFO device_hdawg 0 4 1 0 0
[2024.12.19 17:11:30.847] INFO device_shfqc 0 159 0 1 8000
[2024.12.19 17:11:30.847] INFO device_shfqc_sg 0 405 68 66 15136
[2024.12.19 17:11:30.848] INFO ─────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:30.848] INFO TOTAL 568 69 23136
[2024.12.19 17:11:30.848] INFO ─────────────────────────────────────────────────────────────────────
[2024.12.19 17:11:30.853] INFO Finished LabOne Q Compiler run.
[2024.12.19 17:11:30.859] INFO Task 'compile_experiment': ended at 2024-12-19 17:11:30.859117Z
for task in ramsey_result_partial.tasks:
print(task)
TaskResult(name=temporary_modify, index=()) TaskResult(name=create_experiment, index=()) TaskResult(name=compile_experiment, index=())