{ "cells": [ { "cell_type": "markdown", "id": "7ce24a16", "metadata": {}, "source": [ "# Tutorial 4) Generic Tuning Interface" ] }, { "cell_type": "markdown", "id": "40f72389-5530-47b4-897f-af83d2bc3093", "metadata": {}, "source": [ "## Motivation\n", "\n", "So far, the tutorials have focused on parameter sweeps along predefined dimensions. While these sweeps do not need to be linear, all parameter values must still be known in advance before compiling the QUA program.\n", "\n", "However, many practical optimization problems require **adaptive and non-linear exploration** of parameter space, where future values depend on previous measurement results.\n", "\n", "Quantum Machines hardware provides a solution via *input streams*, which allow parameters to be updated dynamically during program execution. (See the [official documentation](https://docs.quantum-machines.co/latest/docs/Guides/features/#input-streams) for more details.)\n", "\n", "The `GenericTuningInterface` in Arbok builds on this feature to enable adaptive tuning workflows with minimal changes to existing measurement definitions.\n", "\n", "In this tutorial, we demonstrate a real-world example: optimizing the initialization and readout of two different spin parity states. The underlying physics is not essential hereāthe focus is on how the interface enables flexible and scalable optimization." ] }, { "cell_type": "markdown", "id": "8c3bec4d-a16a-4790-a91a-aeea668b3315", "metadata": {}, "source": [ "## The `GenericTuningInterface`" ] }, { "cell_type": "markdown", "id": "04cc8382-e34a-4b0a-b1e9-8250639e52d5", "metadata": {}, "source": [ "### Creating the driver and a measurement\n", "\n", "As in previous tutorials, we begin by creating a `Device` and initializing the corresponding driver. The device configuration defines the hardware setup, while the driver provides the interface to the Quantum Machines backend." ] }, { "cell_type": "code", "execution_count": 1, "id": "b2a00b7f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2026-04-06 05:21:50,115 - qm - INFO - Starting session: fbee7913-cacc-49d9-94b1-bbdb933f55fc\n" ] } ], "source": [ "import numpy as np\n", "from rich import print as rprint\n", "from arbok_driver import ArbokDriver, Device, Measurement\n", "from arbok_driver.examples.configurations.hardware import opx1000_config\n", "from arbok_driver.examples.configurations.sequence import (\n", " device_config, parity_init_conf, parity_read_conf\n", ")\n", "\n", "mock_device = Device(\n", " name = 'mock_device',\n", " opx_config = opx1000_config,\n", " divider_config = {},\n", " master_config = device_config\n", ")\n", "\n", "qm_driver = ArbokDriver('qm_driver', mock_device)" ] }, { "cell_type": "markdown", "id": "b4587919-b614-4436-a860-5f0fa8b5a108", "metadata": {}, "source": [ "Next, we construct a measurement consisting of four subsequences:\n", "- initialization (even parity)\n", "- readout (even parity)\n", "- initialization (odd parity)\n", "- readout (odd parity)\n", "\n", "At this stage, the even and odd branches are identical apart from their naming. The goal of the optimization will be to maximize the distinguishability between these two cases." ] }, { "cell_type": "code", "execution_count": 2, "id": "c51c3e31-ff52-46ba-b263-6c4e00925c51", "metadata": {}, "outputs": [], "source": [ "mock_measurement = Measurement(qm_driver, 'mock_measurement')\n", "\n", "mock_measurement.add_subsequences_from_dict({\n", " 'parity_init_even': {'config': parity_init_conf},\n", " 'parity_read_even': {'config': parity_read_conf},\n", " 'parity_init_odd': {'config': parity_init_conf},\n", " 'parity_read_odd': {'config': parity_read_conf}\n", "})" ] }, { "cell_type": "code", "execution_count": 3, "id": "94adb0a0-c799-4718-bd49-ed26fb4af00b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Declared 1-dimensional parameter sweep of size 100 [100]\n" ] } ], "source": [ "mock_measurement.set_sweeps(\n", " {mock_measurement.iteration: np.arange(100)}\n", ")" ] }, { "cell_type": "code", "execution_count": 4, "id": "f6cee50d-9e5f-46d7-b7ed-9c77182dc80e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Registered 16 gettables for measurement\n" ] } ], "source": [ "mock_measurement.register_gettables()" ] }, { "cell_type": "markdown", "id": "cd1dc7e3", "metadata": {}, "source": [ "### Initializing the interface\n", "\n", "To construct the tuning interface, only the parameter configuration needs to be defined at initialization.\n", "\n", "**Parameter configuration** \n", " A dictionary describing which parameters should be tuned. Each entry maps a high-level tuning parameter to one or more underlying QUA variables, along with scaling factors and bounds." ] }, { "cell_type": "code", "execution_count": 5, "id": "bbe97e48", "metadata": {}, "outputs": [], "source": [ "#[g.full_name for g in mock_measurement.available_gettables]" ] }, { "cell_type": "markdown", "id": "fe0ff41b", "metadata": {}, "source": [ "The parameter dictionary defines how high-level tuning parameters map to underlying QUA variables.\n", "\n", "Each entry consists of:\n", "- `qua_vars`: a mapping from QUA parameters to scaling factors \n", "- `bounds`: the allowed range for the parameter during optimization \n", "\n", "This allows multiple physical parameters to be controlled simultaneously through a single tuning variable. For example, the `read_detuning` parameter modifies both readout branches in a coordinated way, including sign inversion where required.\n", "\n", "To inspect available parameters, use:" ] }, { "cell_type": "code", "execution_count": 6, "id": "ba27f969", "metadata": { "scrolled": true }, "outputs": [], "source": [ "#mock_measurement.print_readable_snapshot()" ] }, { "cell_type": "code", "execution_count": 7, "id": "6b7ce496", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Adding input stream for t_ramp_over_crossing (t_ramp_init)\n", "\n" ], "text/plain": [ "Adding input stream for t_ramp_over_crossing \u001b[1m(\u001b[0mt_ramp_init\u001b[1m)\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
Adding input stream for v_read_P1 (read_detuning)\n", "\n" ], "text/plain": [ "Adding input stream for v_read_P1 \u001b[1m(\u001b[0mread_detuning\u001b[1m)\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
Adding v_read_P2 to v_read_P1 input stream (factor: -1) (read_detuning)\n", "\n" ], "text/plain": [ " Adding v_read_P2 to v_read_P1 input stream \u001b[1m(\u001b[0mfactor: \u001b[1;36m-1\u001b[0m\u001b[1m)\u001b[0m \u001b[1m(\u001b[0mread_detuning\u001b[1m)\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
Adding v_read_P1 to v_read_P1 input stream (factor: 1) (read_detuning)\n", "\n" ], "text/plain": [ " Adding v_read_P1 to v_read_P1 input stream \u001b[1m(\u001b[0mfactor: \u001b[1;36m1\u001b[0m\u001b[1m)\u001b[0m \u001b[1m(\u001b[0mread_detuning\u001b[1m)\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
Adding v_read_P2 to v_read_P1 input stream (factor: -1) (read_detuning)\n", "\n" ], "text/plain": [ " Adding v_read_P2 to v_read_P1 input stream \u001b[1m(\u001b[0mfactor: \u001b[1;36m-1\u001b[0m\u001b[1m)\u001b[0m \u001b[1m(\u001b[0mread_detuning\u001b[1m)\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "tuning_interface = mock_measurement.initialize_tuning_interface(\n", " parameter_dicts = {\n", " 't_ramp_init': {\n", " 'qua_vars': {mock_measurement.parity_init_odd.arbok_params.t_ramp_over_crossing: 1},\n", " 'bounds': (25, 1e4)\n", " },\n", " 'read_detuning': {\n", " 'qua_vars': {\n", " mock_measurement.parity_read_even.arbok_params.v_read['P1']: 1,\n", " mock_measurement.parity_read_even.arbok_params.v_read['P2']: -1,\n", " mock_measurement.parity_read_odd.arbok_params.v_read['P1']: 1,\n", " mock_measurement.parity_read_odd.arbok_params.v_read['P2']: -1,\n", " },\n", " 'bounds': (-0.01, 0.01)\n", " },\n", " },\n", " verbose = True\n", ")" ] }, { "cell_type": "markdown", "id": "fc581c5e-8cae-4552-b62e-edff01f3fd1b", "metadata": {}, "source": [ "The resulting QUA program differs from a standard measurement in that selected parameters are replaced by variables connected to input streams. This enables values to be updated dynamically at runtime without recompilation." ] }, { "cell_type": "code", "execution_count": 8, "id": "e90fdca7", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n",
"# Single QUA script generated at 2026-04-06 05:21:53.054700\n",
"# QUA library version: 1.2.5\n",
"\n",
"\n",
"from qm import CompilerOptionArguments\n",
"from qm.qua import *\n",
"\n",
"with program() as prog:\n",
" v1 = declare(int, )\n",
" v2 = declare(int, value=0)\n",
" v3 = declare(int, )\n",
" input_stream_mock_measurement_int_input_stream = declare_input_stream(int, 'mock_measurement_int_input_stream',\n",
"size=1)\n",
" v4 = declare(fixed, )\n",
" input_stream_mock_measurement_fixed_input_stream = declare_input_stream(fixed, \n",
"'mock_measurement_fixed_input_stream', size=1)\n",
" v5 = declare(fixed, )\n",
" v6 = declare(fixed, )\n",
" v7 = declare(fixed, )\n",
" v8 = declare(fixed, )\n",
" v9 = declare(fixed, )\n",
" v10 = declare(fixed, )\n",
" v11 = declare(bool, )\n",
" v12 = declare(bool, )\n",
" v13 = declare(fixed, )\n",
" v14 = declare(fixed, )\n",
" v15 = declare(fixed, )\n",
" v16 = declare(fixed, )\n",
" v17 = declare(fixed, )\n",
" v18 = declare(fixed, )\n",
" v19 = declare(bool, )\n",
" v20 = declare(bool, )\n",
" v21 = declare(int, )\n",
" with infinite_loop_():\n",
" pause()\n",
" assign(v2, 0)\n",
" advance_input_stream(input_stream_mock_measurement_int_input_stream)\n",
" assign(v3, input_stream_mock_measurement_int_input_stream[0])\n",
" advance_input_stream(input_stream_mock_measurement_fixed_input_stream)\n",
" assign(v4, input_stream_mock_measurement_fixed_input_stream[0])\n",
" assign(v21, 0)\n",
" with while_((v21<100)):\n",
" assign(v1, (0+(1*v21)))\n",
" align()\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" play(\"unit_ramp\"*amp(0.06), \"P1\", duration=250)\n",
" play(\"unit_ramp\"*amp(-0.085), \"J1\", duration=250)\n",
" play(\"unit_ramp\"*amp(-0.06), \"P2\", duration=250)\n",
" play(\"unit_ramp\"*amp(-0.07), \"P7\", duration=250)\n",
" play(\"unit_ramp\"*amp(-0.05), \"J7\", duration=250)\n",
" play(\"unit_ramp\"*amp(0.07), \"P8\", duration=250)\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" wait(50000, \"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" play(\"unit_ramp\"*amp(-0.0165), \"P1\", duration=250)\n",
" play(\"unit_ramp\"*amp(0.035), \"J1\", duration=250)\n",
" play(\"unit_ramp\"*amp(0.0165), \"P2\", duration=250)\n",
" play(\"unit_ramp\"*amp(0.099), \"P7\", duration=250)\n",
" play(\"unit_ramp\"*amp(0.117), \"J7\", duration=250)\n",
" play(\"unit_ramp\"*amp(-0.099), \"P8\", duration=250)\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" wait(9571, \"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" play(\"unit_ramp\"*amp(-0.03), \"P1\", duration=141)\n",
" play(\"unit_ramp\"*amp(0.03), \"P2\", duration=141)\n",
" play(\"unit_ramp\"*amp(-0.02), \"P7\", duration=141)\n",
" play(\"unit_ramp\"*amp(0.02), \"P8\", duration=141)\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" wait(250, \"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" ramp_to_zero(\"P1\")\n",
" ramp_to_zero(\"J1\")\n",
" ramp_to_zero(\"P2\")\n",
" ramp_to_zero(\"P7\")\n",
" ramp_to_zero(\"J7\")\n",
" ramp_to_zero(\"P8\")\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" align()\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\", \"SET1\", \"SET2\")\n",
" wait(25000, \"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\", \"SET1\", \"SET2\")\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" play(\"unit_ramp\"*amp(0.023), \"P1\", duration=6250)\n",
" play(\"unit_ramp\"*amp(-0.02), \"J1\", duration=6250)\n",
" play(\"unit_ramp\"*amp(-0.023), \"P2\", duration=6250)\n",
" play(\"unit_ramp\"*amp(-0.0325), \"P7\", duration=6250)\n",
" play(\"unit_ramp\"*amp(0.005), \"J7\", duration=6250)\n",
" play(\"unit_ramp\"*amp(0.0325), \"P8\", duration=6250)\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" wait(25000, \"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\", \"SET1\", \"SET2\")\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\", \"SET1\", \"SET2\")\n",
" measure(\"measure\", \"SET1\", integration.full(\"x_const\", v5, \"\"))\n",
" measure(\"measure\", \"SET2\", integration.full(\"x_const\", v6, \"\"))\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\", \"SET1\", \"SET2\")\n",
" wait(5000, \"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\", \"SET1\", \"SET2\")\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" play(\"unit_ramp\"*amp((v4-0.023)), \"P1\", duration=250)\n",
" play(\"unit_ramp\"*amp(((v4*-1)--0.023)), \"P2\", duration=250)\n",
" play(\"unit_ramp\"*amp(-0.0025000000000000022), \"P7\", duration=250)\n",
" play(\"unit_ramp\"*amp(0.0025000000000000022), \"P8\", duration=250)\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" wait(25000, \"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\", \"SET1\", \"SET2\")\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\", \"SET1\", \"SET2\")\n",
" measure(\"measure\", \"SET1\", integration.full(\"x_const\", v7, \"\"))\n",
" measure(\"measure\", \"SET2\", integration.full(\"x_const\", v8, \"\"))\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\", \"SET1\", \"SET2\")\n",
" align()\n",
" assign(v9, (v5-v7))\n",
" assign(v10, (v6-v8))\n",
" assign(v11, (v9>0.001))\n",
" assign(v12, (v10>-0.001))\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\", \"SET1\", \"SET2\")\n",
" wait(5000, \"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\", \"SET1\", \"SET2\")\n",
" ramp_to_zero(\"P1\")\n",
" ramp_to_zero(\"J1\")\n",
" ramp_to_zero(\"P2\")\n",
" ramp_to_zero(\"P7\")\n",
" ramp_to_zero(\"J7\")\n",
" ramp_to_zero(\"P8\")\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" wait(1000, \"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\", \"SET1\", \"SET2\")\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\", \"SET1\", \"SET2\")\n",
" align()\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" play(\"unit_ramp\"*amp(0.06), \"P1\", duration=250)\n",
" play(\"unit_ramp\"*amp(-0.085), \"J1\", duration=250)\n",
" play(\"unit_ramp\"*amp(-0.06), \"P2\", duration=250)\n",
" play(\"unit_ramp\"*amp(-0.07), \"P7\", duration=250)\n",
" play(\"unit_ramp\"*amp(-0.05), \"J7\", duration=250)\n",
" play(\"unit_ramp\"*amp(0.07), \"P8\", duration=250)\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" wait(50000, \"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" play(\"unit_ramp\"*amp(-0.0165), \"P1\", duration=250)\n",
" play(\"unit_ramp\"*amp(0.035), \"J1\", duration=250)\n",
" play(\"unit_ramp\"*amp(0.0165), \"P2\", duration=250)\n",
" play(\"unit_ramp\"*amp(0.099), \"P7\", duration=250)\n",
" play(\"unit_ramp\"*amp(0.117), \"J7\", duration=250)\n",
" play(\"unit_ramp\"*amp(-0.099), \"P8\", duration=250)\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" wait(9571, \"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" play(\"unit_ramp\"*amp(-0.03), \"P1\", duration=v3)\n",
" play(\"unit_ramp\"*amp(0.03), \"P2\", duration=v3)\n",
" play(\"unit_ramp\"*amp(-0.02), \"P7\", duration=v3)\n",
" play(\"unit_ramp\"*amp(0.02), \"P8\", duration=v3)\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" wait(250, \"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" ramp_to_zero(\"P1\")\n",
" ramp_to_zero(\"J1\")\n",
" ramp_to_zero(\"P2\")\n",
" ramp_to_zero(\"P7\")\n",
" ramp_to_zero(\"J7\")\n",
" ramp_to_zero(\"P8\")\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" align()\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\", \"SET1\", \"SET2\")\n",
" wait(25000, \"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\", \"SET1\", \"SET2\")\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" play(\"unit_ramp\"*amp(0.023), \"P1\", duration=6250)\n",
" play(\"unit_ramp\"*amp(-0.02), \"J1\", duration=6250)\n",
" play(\"unit_ramp\"*amp(-0.023), \"P2\", duration=6250)\n",
" play(\"unit_ramp\"*amp(-0.0325), \"P7\", duration=6250)\n",
" play(\"unit_ramp\"*amp(0.005), \"J7\", duration=6250)\n",
" play(\"unit_ramp\"*amp(0.0325), \"P8\", duration=6250)\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" wait(25000, \"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\", \"SET1\", \"SET2\")\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\", \"SET1\", \"SET2\")\n",
" measure(\"measure\", \"SET1\", integration.full(\"x_const\", v13, \"\"))\n",
" measure(\"measure\", \"SET2\", integration.full(\"x_const\", v14, \"\"))\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\", \"SET1\", \"SET2\")\n",
" wait(5000, \"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\", \"SET1\", \"SET2\")\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" play(\"unit_ramp\"*amp((v4-0.023)), \"P1\", duration=250)\n",
" play(\"unit_ramp\"*amp(((v4*-1)--0.023)), \"P2\", duration=250)\n",
" play(\"unit_ramp\"*amp(-0.0025000000000000022), \"P7\", duration=250)\n",
" play(\"unit_ramp\"*amp(0.0025000000000000022), \"P8\", duration=250)\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" wait(25000, \"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\", \"SET1\", \"SET2\")\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\", \"SET1\", \"SET2\")\n",
" measure(\"measure\", \"SET1\", integration.full(\"x_const\", v15, \"\"))\n",
" measure(\"measure\", \"SET2\", integration.full(\"x_const\", v16, \"\"))\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\", \"SET1\", \"SET2\")\n",
" align()\n",
" assign(v17, (v13-v15))\n",
" assign(v18, (v14-v16))\n",
" assign(v19, (v17>0.001))\n",
" assign(v20, (v18>-0.001))\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\", \"SET1\", \"SET2\")\n",
" wait(5000, \"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\", \"SET1\", \"SET2\")\n",
" ramp_to_zero(\"P1\")\n",
" ramp_to_zero(\"J1\")\n",
" ramp_to_zero(\"P2\")\n",
" ramp_to_zero(\"P7\")\n",
" ramp_to_zero(\"J7\")\n",
" ramp_to_zero(\"P8\")\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\")\n",
" wait(1000, \"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\", \"SET1\", \"SET2\")\n",
" align(\"P1\", \"J1\", \"P2\", \"P7\", \"J7\", \"P8\", \"SET1\", \"SET2\")\n",
" align()\n",
" r2 = declare_stream()\n",
" save(v5, r2)\n",
" r3 = declare_stream()\n",
" save(v6, r3)\n",
" r4 = declare_stream()\n",
" save(v7, r4)\n",
" r5 = declare_stream()\n",
" save(v8, r5)\n",
" r6 = declare_stream()\n",
" save(v9, r6)\n",
" r7 = declare_stream()\n",
" save(v10, r7)\n",
" r8 = declare_stream()\n",
" save(v11, r8)\n",
" r9 = declare_stream()\n",
" save(v12, r9)\n",
" r10 = declare_stream()\n",
" save(v13, r10)\n",
" r11 = declare_stream()\n",
" save(v14, r11)\n",
" r12 = declare_stream()\n",
" save(v15, r12)\n",
" r13 = declare_stream()\n",
" save(v16, r13)\n",
" r14 = declare_stream()\n",
" save(v17, r14)\n",
" r15 = declare_stream()\n",
" save(v18, r15)\n",
" r16 = declare_stream()\n",
" save(v19, r16)\n",
" r17 = declare_stream()\n",
" save(v20, r17)\n",
" align()\n",
" assign(v2, (v2+1))\n",
" r1 = declare_stream()\n",
" save(v2, r1)\n",
" align()\n",
" assign(v21, (v21+1))\n",
" with stream_processing():\n",
" r1.buffer(1).save(\"qm_driver_mock_measurement_shots\")\n",
" r2.buffer(100).save(\"qm_driver_mock_measurement_parity_read_even_ref__p1p2\")\n",
" r3.buffer(100).save(\"qm_driver_mock_measurement_parity_read_even_ref__p7p8\")\n",
" r4.buffer(100).save(\"qm_driver_mock_measurement_parity_read_even_read__p1p2\")\n",
" r5.buffer(100).save(\"qm_driver_mock_measurement_parity_read_even_read__p7p8\")\n",
" r6.buffer(100).save(\"qm_driver_mock_measurement_parity_read_even_diff__p1p2\")\n",
" r7.buffer(100).save(\"qm_driver_mock_measurement_parity_read_even_diff__p7p8\")\n",
" r8.buffer(100).save(\"qm_driver_mock_measurement_parity_read_even_state__p1p2\")\n",
" r9.buffer(100).save(\"qm_driver_mock_measurement_parity_read_even_state__p7p8\")\n",
" r10.buffer(100).save(\"qm_driver_mock_measurement_parity_read_odd_ref__p1p2\")\n",
" r11.buffer(100).save(\"qm_driver_mock_measurement_parity_read_odd_ref__p7p8\")\n",
" r12.buffer(100).save(\"qm_driver_mock_measurement_parity_read_odd_read__p1p2\")\n",
" r13.buffer(100).save(\"qm_driver_mock_measurement_parity_read_odd_read__p7p8\")\n",
" r14.buffer(100).save(\"qm_driver_mock_measurement_parity_read_odd_diff__p1p2\")\n",
" r15.buffer(100).save(\"qm_driver_mock_measurement_parity_read_odd_diff__p7p8\")\n",
" r16.buffer(100).save(\"qm_driver_mock_measurement_parity_read_odd_state__p1p2\")\n",
" r17.buffer(100).save(\"qm_driver_mock_measurement_parity_read_odd_state__p7p8\")\n",
"\n",
"config = None\n",
"\n",
"loaded_config = None\n",
"\n",
"\n",
"\n"
],
"text/plain": [
"\n",
"# Single QUA script generated at \u001b[1;36m2026\u001b[0m-\u001b[1;36m04\u001b[0m-\u001b[1;36m06\u001b[0m \u001b[1;92m05:21:53\u001b[0m.\u001b[1;36m054700\u001b[0m\n",
"# QUA library version: \u001b[1;36m1.2\u001b[0m.\u001b[1;36m5\u001b[0m\n",
"\n",
"\n",
"from qm import CompilerOptionArguments\n",
"from qm.qua import *\n",
"\n",
"with \u001b[1;35mprogram\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m as prog:\n",
" v1 = \u001b[1;35mdeclare\u001b[0m\u001b[1m(\u001b[0mint, \u001b[1m)\u001b[0m\n",
" v2 = \u001b[1;35mdeclare\u001b[0m\u001b[1m(\u001b[0mint, \u001b[33mvalue\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1m)\u001b[0m\n",
" v3 = \u001b[1;35mdeclare\u001b[0m\u001b[1m(\u001b[0mint, \u001b[1m)\u001b[0m\n",
" input_stream_mock_measurement_int_input_stream = \u001b[1;35mdeclare_input_stream\u001b[0m\u001b[1m(\u001b[0mint, \u001b[32m'mock_measurement_int_input_stream'\u001b[0m,\n",
"\u001b[33msize\u001b[0m=\u001b[1;36m1\u001b[0m\u001b[1m)\u001b[0m\n",
" v4 = \u001b[1;35mdeclare\u001b[0m\u001b[1m(\u001b[0mfixed, \u001b[1m)\u001b[0m\n",
" input_stream_mock_measurement_fixed_input_stream = \u001b[1;35mdeclare_input_stream\u001b[0m\u001b[1m(\u001b[0mfixed, \n",
"\u001b[32m'mock_measurement_fixed_input_stream'\u001b[0m, \u001b[33msize\u001b[0m=\u001b[1;36m1\u001b[0m\u001b[1m)\u001b[0m\n",
" v5 = \u001b[1;35mdeclare\u001b[0m\u001b[1m(\u001b[0mfixed, \u001b[1m)\u001b[0m\n",
" v6 = \u001b[1;35mdeclare\u001b[0m\u001b[1m(\u001b[0mfixed, \u001b[1m)\u001b[0m\n",
" v7 = \u001b[1;35mdeclare\u001b[0m\u001b[1m(\u001b[0mfixed, \u001b[1m)\u001b[0m\n",
" v8 = \u001b[1;35mdeclare\u001b[0m\u001b[1m(\u001b[0mfixed, \u001b[1m)\u001b[0m\n",
" v9 = \u001b[1;35mdeclare\u001b[0m\u001b[1m(\u001b[0mfixed, \u001b[1m)\u001b[0m\n",
" v10 = \u001b[1;35mdeclare\u001b[0m\u001b[1m(\u001b[0mfixed, \u001b[1m)\u001b[0m\n",
" v11 = \u001b[1;35mdeclare\u001b[0m\u001b[1m(\u001b[0mbool, \u001b[1m)\u001b[0m\n",
" v12 = \u001b[1;35mdeclare\u001b[0m\u001b[1m(\u001b[0mbool, \u001b[1m)\u001b[0m\n",
" v13 = \u001b[1;35mdeclare\u001b[0m\u001b[1m(\u001b[0mfixed, \u001b[1m)\u001b[0m\n",
" v14 = \u001b[1;35mdeclare\u001b[0m\u001b[1m(\u001b[0mfixed, \u001b[1m)\u001b[0m\n",
" v15 = \u001b[1;35mdeclare\u001b[0m\u001b[1m(\u001b[0mfixed, \u001b[1m)\u001b[0m\n",
" v16 = \u001b[1;35mdeclare\u001b[0m\u001b[1m(\u001b[0mfixed, \u001b[1m)\u001b[0m\n",
" v17 = \u001b[1;35mdeclare\u001b[0m\u001b[1m(\u001b[0mfixed, \u001b[1m)\u001b[0m\n",
" v18 = \u001b[1;35mdeclare\u001b[0m\u001b[1m(\u001b[0mfixed, \u001b[1m)\u001b[0m\n",
" v19 = \u001b[1;35mdeclare\u001b[0m\u001b[1m(\u001b[0mbool, \u001b[1m)\u001b[0m\n",
" v20 = \u001b[1;35mdeclare\u001b[0m\u001b[1m(\u001b[0mbool, \u001b[1m)\u001b[0m\n",
" v21 = \u001b[1;35mdeclare\u001b[0m\u001b[1m(\u001b[0mint, \u001b[1m)\u001b[0m\n",
" with \u001b[1;35minfinite_loop_\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m:\n",
" \u001b[1;35mpause\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35massign\u001b[0m\u001b[1m(\u001b[0mv2, \u001b[1;36m0\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35madvance_input_stream\u001b[0m\u001b[1m(\u001b[0minput_stream_mock_measurement_int_input_stream\u001b[1m)\u001b[0m\n",
" \u001b[1;35massign\u001b[0m\u001b[1m(\u001b[0mv3, input_stream_mock_measurement_int_input_stream\u001b[1m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m]\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35madvance_input_stream\u001b[0m\u001b[1m(\u001b[0minput_stream_mock_measurement_fixed_input_stream\u001b[1m)\u001b[0m\n",
" \u001b[1;35massign\u001b[0m\u001b[1m(\u001b[0mv4, input_stream_mock_measurement_fixed_input_stream\u001b[1m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m]\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35massign\u001b[0m\u001b[1m(\u001b[0mv21, \u001b[1;36m0\u001b[0m\u001b[1m)\u001b[0m\n",
" with \u001b[1;35mwhile_\u001b[0m\u001b[1m(\u001b[0m\u001b[1m(\u001b[0mv21\u001b[1m<\u001b[0m\u001b[1;36m100\u001b[0m\u001b[1;39m)\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m:\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35massign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mv1, \u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[39m+\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m*v21\u001b[0m\u001b[1;39m)\u001b[0m\u001b[1;39m)\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m0.06\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m-0.085\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m-0.06\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m-0.07\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m-0.05\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m0.07\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mwait\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m50000\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m-0.0165\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m0.035\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m0.0165\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m0.099\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m0.117\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m-0.099\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mwait\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m9571\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m-0.03\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m141\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m0.03\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m141\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m-0.02\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m141\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m0.02\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m141\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mwait\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m250\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mramp_to_zero\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mramp_to_zero\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mramp_to_zero\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mramp_to_zero\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mramp_to_zero\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mramp_to_zero\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET2\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mwait\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m25000\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET2\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m0.023\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m6250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m-0.02\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m6250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m-0.023\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m6250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m-0.0325\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m6250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m0.005\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m6250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m0.0325\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m6250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mwait\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m25000\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET2\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET2\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mmeasure\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"measure\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[1;35mintegration.full\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"x_const\"\u001b[0m\u001b[39m, v5, \u001b[0m\u001b[32m\"\"\u001b[0m\u001b[1;39m)\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mmeasure\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"measure\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[1;35mintegration.full\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"x_const\"\u001b[0m\u001b[39m, v6, \u001b[0m\u001b[32m\"\"\u001b[0m\u001b[1;39m)\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET2\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mwait\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m5000\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET2\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mv4-\u001b[0m\u001b[1;36m0.023\u001b[0m\u001b[1;39m)\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mv4*\u001b[0m\u001b[1;36m-1\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m-\u001b[0m\u001b[1;36m-0.023\u001b[0m\u001b[1;39m)\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m-0.0025000000000000022\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m0.0025000000000000022\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mwait\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m25000\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET2\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET2\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mmeasure\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"measure\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[1;35mintegration.full\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"x_const\"\u001b[0m\u001b[39m, v7, \u001b[0m\u001b[32m\"\"\u001b[0m\u001b[1;39m)\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mmeasure\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"measure\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[1;35mintegration.full\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"x_const\"\u001b[0m\u001b[39m, v8, \u001b[0m\u001b[32m\"\"\u001b[0m\u001b[1;39m)\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET2\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35massign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mv9, \u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mv5-v7\u001b[0m\u001b[1;39m)\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35massign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mv10, \u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mv6-v8\u001b[0m\u001b[1;39m)\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35massign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mv11, \u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mv9>\u001b[0m\u001b[1;36m0.001\u001b[0m\u001b[1;39m)\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35massign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mv12, \u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mv10>\u001b[0m\u001b[1;36m-0.001\u001b[0m\u001b[1;39m)\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET2\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mwait\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m5000\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET2\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mramp_to_zero\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mramp_to_zero\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mramp_to_zero\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mramp_to_zero\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mramp_to_zero\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mramp_to_zero\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mwait\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m1000\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET2\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET2\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m0.06\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m-0.085\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m-0.06\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m-0.07\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m-0.05\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m0.07\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mwait\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m50000\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m-0.0165\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m0.035\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m0.0165\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m0.099\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m0.117\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m-0.099\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mwait\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m9571\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m-0.03\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[35mv3\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m0.03\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[35mv3\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m-0.02\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[35mv3\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m0.02\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[35mv3\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mwait\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m250\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mramp_to_zero\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mramp_to_zero\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mramp_to_zero\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mramp_to_zero\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mramp_to_zero\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mramp_to_zero\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET2\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mwait\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m25000\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET2\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m0.023\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m6250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m-0.02\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m6250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m-0.023\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m6250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m-0.0325\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m6250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m0.005\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m6250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m0.0325\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m6250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mwait\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m25000\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET2\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET2\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mmeasure\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"measure\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[1;35mintegration.full\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"x_const\"\u001b[0m\u001b[39m, v13, \u001b[0m\u001b[32m\"\"\u001b[0m\u001b[1;39m)\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mmeasure\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"measure\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[1;35mintegration.full\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"x_const\"\u001b[0m\u001b[39m, v14, \u001b[0m\u001b[32m\"\"\u001b[0m\u001b[1;39m)\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET2\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mwait\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m5000\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET2\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mv4-\u001b[0m\u001b[1;36m0.023\u001b[0m\u001b[1;39m)\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mv4*\u001b[0m\u001b[1;36m-1\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m-\u001b[0m\u001b[1;36m-0.023\u001b[0m\u001b[1;39m)\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m-0.0025000000000000022\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mplay\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"unit_ramp\"\u001b[0m\u001b[39m*\u001b[0m\u001b[1;35mamp\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m0.0025000000000000022\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[33mduration\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mwait\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;36m25000\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET2\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET2\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mmeasure\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"measure\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[1;35mintegration.full\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"x_const\"\u001b[0m\u001b[39m, v15, \u001b[0m\u001b[32m\"\"\u001b[0m\u001b[1;39m)\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35mmeasure\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"measure\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[1;35mintegration.full\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"x_const\"\u001b[0m\u001b[39m, v16, \u001b[0m\u001b[32m\"\"\u001b[0m\u001b[1;39m)\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET1\"\u001b[0m\u001b[39m, \u001b[0m\u001b[32m\"SET2\"\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35malign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35massign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mv17, \u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mv13-v15\u001b[0m\u001b[1;39m)\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35massign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mv18, \u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mv14-v16\u001b[0m\u001b[1;39m)\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35massign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mv19, \u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mv17>\u001b[0m\u001b[1;36m0.001\u001b[0m\u001b[1;39m)\u001b[0m\u001b[1;39m)\u001b[0m\n",
"\u001b[39m \u001b[0m\u001b[1;35massign\u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mv20, \u001b[0m\u001b[1;39m(\u001b[0m\u001b[39mv18\u001b[0m\u001b[1m>\u001b[0m\u001b[1;36m-0.001\u001b[0m\u001b[1m)\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35malign\u001b[0m\u001b[1m(\u001b[0m\u001b[32m\"P1\"\u001b[0m, \u001b[32m\"J1\"\u001b[0m, \u001b[32m\"P2\"\u001b[0m, \u001b[32m\"P7\"\u001b[0m, \u001b[32m\"J7\"\u001b[0m, \u001b[32m\"P8\"\u001b[0m, \u001b[32m\"SET1\"\u001b[0m, \u001b[32m\"SET2\"\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35mwait\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m5000\u001b[0m, \u001b[32m\"P1\"\u001b[0m, \u001b[32m\"J1\"\u001b[0m, \u001b[32m\"P2\"\u001b[0m, \u001b[32m\"P7\"\u001b[0m, \u001b[32m\"J7\"\u001b[0m, \u001b[32m\"P8\"\u001b[0m, \u001b[32m\"SET1\"\u001b[0m, \u001b[32m\"SET2\"\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35mramp_to_zero\u001b[0m\u001b[1m(\u001b[0m\u001b[32m\"P1\"\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35mramp_to_zero\u001b[0m\u001b[1m(\u001b[0m\u001b[32m\"J1\"\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35mramp_to_zero\u001b[0m\u001b[1m(\u001b[0m\u001b[32m\"P2\"\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35mramp_to_zero\u001b[0m\u001b[1m(\u001b[0m\u001b[32m\"P7\"\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35mramp_to_zero\u001b[0m\u001b[1m(\u001b[0m\u001b[32m\"J7\"\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35mramp_to_zero\u001b[0m\u001b[1m(\u001b[0m\u001b[32m\"P8\"\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35malign\u001b[0m\u001b[1m(\u001b[0m\u001b[32m\"P1\"\u001b[0m, \u001b[32m\"J1\"\u001b[0m, \u001b[32m\"P2\"\u001b[0m, \u001b[32m\"P7\"\u001b[0m, \u001b[32m\"J7\"\u001b[0m, \u001b[32m\"P8\"\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35mwait\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m1000\u001b[0m, \u001b[32m\"P1\"\u001b[0m, \u001b[32m\"J1\"\u001b[0m, \u001b[32m\"P2\"\u001b[0m, \u001b[32m\"P7\"\u001b[0m, \u001b[32m\"J7\"\u001b[0m, \u001b[32m\"P8\"\u001b[0m, \u001b[32m\"SET1\"\u001b[0m, \u001b[32m\"SET2\"\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35malign\u001b[0m\u001b[1m(\u001b[0m\u001b[32m\"P1\"\u001b[0m, \u001b[32m\"J1\"\u001b[0m, \u001b[32m\"P2\"\u001b[0m, \u001b[32m\"P7\"\u001b[0m, \u001b[32m\"J7\"\u001b[0m, \u001b[32m\"P8\"\u001b[0m, \u001b[32m\"SET1\"\u001b[0m, \u001b[32m\"SET2\"\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35malign\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m\n",
" r2 = \u001b[1;35mdeclare_stream\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35msave\u001b[0m\u001b[1m(\u001b[0mv5, r2\u001b[1m)\u001b[0m\n",
" r3 = \u001b[1;35mdeclare_stream\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35msave\u001b[0m\u001b[1m(\u001b[0mv6, r3\u001b[1m)\u001b[0m\n",
" r4 = \u001b[1;35mdeclare_stream\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35msave\u001b[0m\u001b[1m(\u001b[0mv7, r4\u001b[1m)\u001b[0m\n",
" r5 = \u001b[1;35mdeclare_stream\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35msave\u001b[0m\u001b[1m(\u001b[0mv8, r5\u001b[1m)\u001b[0m\n",
" r6 = \u001b[1;35mdeclare_stream\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35msave\u001b[0m\u001b[1m(\u001b[0mv9, r6\u001b[1m)\u001b[0m\n",
" r7 = \u001b[1;35mdeclare_stream\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35msave\u001b[0m\u001b[1m(\u001b[0mv10, r7\u001b[1m)\u001b[0m\n",
" r8 = \u001b[1;35mdeclare_stream\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35msave\u001b[0m\u001b[1m(\u001b[0mv11, r8\u001b[1m)\u001b[0m\n",
" r9 = \u001b[1;35mdeclare_stream\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35msave\u001b[0m\u001b[1m(\u001b[0mv12, r9\u001b[1m)\u001b[0m\n",
" r10 = \u001b[1;35mdeclare_stream\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35msave\u001b[0m\u001b[1m(\u001b[0mv13, r10\u001b[1m)\u001b[0m\n",
" r11 = \u001b[1;35mdeclare_stream\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35msave\u001b[0m\u001b[1m(\u001b[0mv14, r11\u001b[1m)\u001b[0m\n",
" r12 = \u001b[1;35mdeclare_stream\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35msave\u001b[0m\u001b[1m(\u001b[0mv15, r12\u001b[1m)\u001b[0m\n",
" r13 = \u001b[1;35mdeclare_stream\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35msave\u001b[0m\u001b[1m(\u001b[0mv16, r13\u001b[1m)\u001b[0m\n",
" r14 = \u001b[1;35mdeclare_stream\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35msave\u001b[0m\u001b[1m(\u001b[0mv17, r14\u001b[1m)\u001b[0m\n",
" r15 = \u001b[1;35mdeclare_stream\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35msave\u001b[0m\u001b[1m(\u001b[0mv18, r15\u001b[1m)\u001b[0m\n",
" r16 = \u001b[1;35mdeclare_stream\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35msave\u001b[0m\u001b[1m(\u001b[0mv19, r16\u001b[1m)\u001b[0m\n",
" r17 = \u001b[1;35mdeclare_stream\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35msave\u001b[0m\u001b[1m(\u001b[0mv20, r17\u001b[1m)\u001b[0m\n",
" \u001b[1;35malign\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35massign\u001b[0m\u001b[1m(\u001b[0mv2, \u001b[1m(\u001b[0mv2+\u001b[1;36m1\u001b[0m\u001b[1m)\u001b[0m\u001b[1m)\u001b[0m\n",
" r1 = \u001b[1;35mdeclare_stream\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35msave\u001b[0m\u001b[1m(\u001b[0mv2, r1\u001b[1m)\u001b[0m\n",
" \u001b[1;35malign\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35massign\u001b[0m\u001b[1m(\u001b[0mv21, \u001b[1m(\u001b[0mv21+\u001b[1;36m1\u001b[0m\u001b[1m)\u001b[0m\u001b[1m)\u001b[0m\n",
" with \u001b[1;35mstream_processing\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m:\n",
" \u001b[1;35mr1.buffer\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1m)\u001b[0m\u001b[1;35m.save\u001b[0m\u001b[1m(\u001b[0m\u001b[32m\"qm_driver_mock_measurement_shots\"\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35mr2.buffer\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m100\u001b[0m\u001b[1m)\u001b[0m\u001b[1;35m.save\u001b[0m\u001b[1m(\u001b[0m\u001b[32m\"qm_driver_mock_measurement_parity_read_even_ref__p1p2\"\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35mr3.buffer\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m100\u001b[0m\u001b[1m)\u001b[0m\u001b[1;35m.save\u001b[0m\u001b[1m(\u001b[0m\u001b[32m\"qm_driver_mock_measurement_parity_read_even_ref__p7p8\"\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35mr4.buffer\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m100\u001b[0m\u001b[1m)\u001b[0m\u001b[1;35m.save\u001b[0m\u001b[1m(\u001b[0m\u001b[32m\"qm_driver_mock_measurement_parity_read_even_read__p1p2\"\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35mr5.buffer\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m100\u001b[0m\u001b[1m)\u001b[0m\u001b[1;35m.save\u001b[0m\u001b[1m(\u001b[0m\u001b[32m\"qm_driver_mock_measurement_parity_read_even_read__p7p8\"\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35mr6.buffer\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m100\u001b[0m\u001b[1m)\u001b[0m\u001b[1;35m.save\u001b[0m\u001b[1m(\u001b[0m\u001b[32m\"qm_driver_mock_measurement_parity_read_even_diff__p1p2\"\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35mr7.buffer\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m100\u001b[0m\u001b[1m)\u001b[0m\u001b[1;35m.save\u001b[0m\u001b[1m(\u001b[0m\u001b[32m\"qm_driver_mock_measurement_parity_read_even_diff__p7p8\"\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35mr8.buffer\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m100\u001b[0m\u001b[1m)\u001b[0m\u001b[1;35m.save\u001b[0m\u001b[1m(\u001b[0m\u001b[32m\"qm_driver_mock_measurement_parity_read_even_state__p1p2\"\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35mr9.buffer\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m100\u001b[0m\u001b[1m)\u001b[0m\u001b[1;35m.save\u001b[0m\u001b[1m(\u001b[0m\u001b[32m\"qm_driver_mock_measurement_parity_read_even_state__p7p8\"\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35mr10.buffer\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m100\u001b[0m\u001b[1m)\u001b[0m\u001b[1;35m.save\u001b[0m\u001b[1m(\u001b[0m\u001b[32m\"qm_driver_mock_measurement_parity_read_odd_ref__p1p2\"\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35mr11.buffer\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m100\u001b[0m\u001b[1m)\u001b[0m\u001b[1;35m.save\u001b[0m\u001b[1m(\u001b[0m\u001b[32m\"qm_driver_mock_measurement_parity_read_odd_ref__p7p8\"\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35mr12.buffer\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m100\u001b[0m\u001b[1m)\u001b[0m\u001b[1;35m.save\u001b[0m\u001b[1m(\u001b[0m\u001b[32m\"qm_driver_mock_measurement_parity_read_odd_read__p1p2\"\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35mr13.buffer\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m100\u001b[0m\u001b[1m)\u001b[0m\u001b[1;35m.save\u001b[0m\u001b[1m(\u001b[0m\u001b[32m\"qm_driver_mock_measurement_parity_read_odd_read__p7p8\"\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35mr14.buffer\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m100\u001b[0m\u001b[1m)\u001b[0m\u001b[1;35m.save\u001b[0m\u001b[1m(\u001b[0m\u001b[32m\"qm_driver_mock_measurement_parity_read_odd_diff__p1p2\"\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35mr15.buffer\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m100\u001b[0m\u001b[1m)\u001b[0m\u001b[1;35m.save\u001b[0m\u001b[1m(\u001b[0m\u001b[32m\"qm_driver_mock_measurement_parity_read_odd_diff__p7p8\"\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35mr16.buffer\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m100\u001b[0m\u001b[1m)\u001b[0m\u001b[1;35m.save\u001b[0m\u001b[1m(\u001b[0m\u001b[32m\"qm_driver_mock_measurement_parity_read_odd_state__p1p2\"\u001b[0m\u001b[1m)\u001b[0m\n",
" \u001b[1;35mr17.buffer\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m100\u001b[0m\u001b[1m)\u001b[0m\u001b[1;35m.save\u001b[0m\u001b[1m(\u001b[0m\u001b[32m\"qm_driver_mock_measurement_parity_read_odd_state__p7p8\"\u001b[0m\u001b[1m)\u001b[0m\n",
"\n",
"config = \u001b[3;35mNone\u001b[0m\n",
"\n",
"loaded_config = \u001b[3;35mNone\u001b[0m\n",
"\n",
"\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"rprint(mock_measurement.get_qua_program_as_str())"
]
},
{
"cell_type": "markdown",
"id": "71b28fcc-cd86-4f1f-b47e-0e11c31717d9",
"metadata": {},
"source": [
"The interface is now ready for execution. In this tutorial, we operate in mock mode, but the same workflow applies to real hardware.\n",
"\n",
"Parameter sets can be evaluated using `run_parameter_set`, which:\n",
"- streams the provided values into the program\n",
"- executes the measurement\n",
"- returns the recorded data and the used parameters"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "2c802ebe-6c7d-4431-932a-99b675c3e5b3",
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"qm_driver.is_mock = True\n",
"mock_measurement.mock_steps = 0\n",
"# mock_measurement.tuning_interface.compile_connect_and_run( host_ip = 'xxx.xxx.xxx.xxx')"
]
},
{
"cell_type": "markdown",
"id": "ce9d89dd-adfb-44ff-b52e-02b233d05de7",
"metadata": {},
"source": [
"### The first steps"
]
},
{
"cell_type": "markdown",
"id": "1ffb86c7-f686-4a91-84ba-0728135e483b",
"metadata": {},
"source": [
"The tuning interface is now ready to be used. Values to be measured can now be inserted the following way via `run_parameter_set`:"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "d641b2d6-d299-475f-b280-57f9c08fe4a1",
"metadata": {},
"outputs": [],
"source": [
"step_dict = {\n",
" mock_measurement.parity_init_odd.arbok_params.t_ramp_over_crossing: 100,\n",
" mock_measurement.parity_read_even.arbok_params.v_read['P1']: 0.1\n",
" }\n",
"gettable_results, saved_params = tuning_interface.run_parameter_set(step_dict)"
]
},
{
"cell_type": "markdown",
"id": "987d4161-3a32-4a33-8e13-52af4f81c64a",
"metadata": {},
"source": [
"## Cross-entropy sampling\n",
"\n",
"Exploring high-dimensional parameter spaces manually is often impractical. To address this, the interface includes a cross-entropy sampling algorithm for automated optimization.\n",
"\n",
"A key feature of the updated API is that the **cost function is provided as a simple callable**, allowing users to define optimization objectives in a lightweight and flexible way.\n",
"\n",
"The method operates iteratively:\n",
"1. Generate a population of random parameter sets within the defined bounds.\n",
"2. Evaluate their performance using the user-defined cost function.\n",
"3. Select the top-performing fraction (`select_frac`).\n",
"4. Shrink the parameter bounds based on these elite samples.\n",
"5. Repeat for subsequent populations.\n",
"\n",
"This approach efficiently concentrates the search around promising regions of parameter space while maintaining robustness against local minima."
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "f214dd77",
"metadata": {},
"outputs": [],
"source": [
"def cost_strategy(gettables: dict) -> float:\n",
" cost = np.mean(\n",
" gettables[mock_measurement.parity_read_even.p1p2.diff__p1p2])\n",
" cost -= np.mean(\n",
" gettables[mock_measurement.parity_read_odd.p1p2.diff__p1p2])\n",
" return cost"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ef50322a-f74f-4f8f-bca2-26786dc6e44b",
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"dataset = tuning_interface.run_cross_entropy_sampler(\n",
" populations = [20, 10, 10],\n",
" cost_strategy = cost_strategy,\n",
" select_frac = 0.25,\n",
" plot_histograms = True,\n",
" sampling_params_to_plot = [('t_ramp_init', 'read_detuning')]\n",
")\n",
"dataset"
]
},
{
"cell_type": "markdown",
"id": "71e7c314-bd5b-4dbc-a55b-93c60d4692bd",
"metadata": {},
"source": [
"## Summary\n",
"\n",
"In this tutorial, we introduced the `GenericTuningInterface`, a flexible framework for adaptive parameter optimization in quantum experiments.\n",
"\n",
"By leveraging input streams, the interface enables dynamic parameter updates during execution, removing the need for predefined sweeps. This allows efficient exploration of high-dimensional and non-linear parameter spaces.\n",
"\n",
"We demonstrated how to:\n",
"- define a custom cost function via `CostStrategy`,\n",
"- map high-level tuning parameters to underlying QUA variables,\n",
"- execute parameter updates in real time,\n",
"- and perform automated optimization using cross-entropy sampling.\n",
"\n",
"The interface provides a scalable and extensible approach to experiment tuning, combining hardware-efficient execution with flexible software abstractions. It is particularly well suited for complex experiments where performance depends on many interdependent parameters."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.13.5"
}
},
"nbformat": 4,
"nbformat_minor": 5
}