{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "3ce46a7e", "metadata": { "execution": { "iopub.execute_input": "2024-10-11T06:17:13.789091Z", "iopub.status.busy": "2024-10-11T06:17:13.788744Z", "iopub.status.idle": "2024-10-11T06:17:13.794597Z", "shell.execute_reply": "2024-10-11T06:17:13.793756Z" }, "nbsphinx": "hidden" }, "outputs": [], "source": [ "# Copyright 2024 Keysight Technologies Inc." ] }, { "cell_type": "raw", "id": "21617989", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "Real-time decision logic\n", "========================\n", "\n", "Using the basic program structure as outlined in :doc:`program_basics`\\, we now show\n", "how to add branching logic to a :py:class:`~keysight.qcs.programs.Program` using\n", "a :py:class:`~keysight.qcs.programs.ConditionalOperation`\\.\n", "\n", "There are two ways decision logic can be implemented:\n", "\n", " #. Specifying a measurement in a program with ``reset=True``, e.g.\n", " ``program.add_measurement(qubits, reset=True)``.\n", "\n", " #. Implementing an :py:class:`~keysight.qcs.channels.Acquisition` that uses a\n", " :py:class:`~keysight.qcs.channels.Classifier` with a\n", " :py:class:`~keysight.qcs.channels.Register` to which the results are written,\n", " followed by a :py:class:`~keysight.qcs.programs.ConditionalOperation` that uses\n", " the outcome of the register to determine which operation to execute.\n", "\n", "We begin by demonstrating the basic use case of qubit reset and then show how\n", "the reset operations can be customized.\n", "\n", "Qubit reset\n", "-----------\n", "\n", "For quantum systems with long T1 times and no direct ground state initialization\n", "method, it is common practice to reset the qubit state to zero after a\n", "single execution of an experiment when it is not in that state. This\n", "requires a measurement and an optional subsequent\n", "reset operation.\n", "\n", "In its simplest form, this can be done with an argument to the\n", ":py:meth:`~keysight.qcs.programs.Program.add_measurement` method:" ] }, { "cell_type": "code", "execution_count": 2, "id": "ab58d635", "metadata": { "execution": { "iopub.execute_input": "2024-10-11T06:17:13.798054Z", "iopub.status.busy": "2024-10-11T06:17:13.797718Z", "iopub.status.idle": "2024-10-11T06:17:17.227837Z", "shell.execute_reply": "2024-10-11T06:17:17.226805Z" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", " \n", "\tkeysight-logo-svg\n", "\t\n", "\t\n", "\t\t\n", "\t\n", "\n", "\n", " \n", "
\n", " Program\n", "
\n", " \n", "\n", "\n", "\n", "
\n", " Program\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Durationundefined
Layers5
Targets2
Repetitions\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", "
\n", " Layer #0\n", "
\n", " \n", "\n", "\n", "\n", "
\n", " Layer #0 \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Durationundefined
\n", "
\n", "\n", "
\n", "
\n", "
\n", "
\n", " Layer #1\n", "
\n", " \n", "\n", "\n", "\n", "
\n", " Layer #1 \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Durationundefined
\n", "
\n", "\n", "
\n", "
\n", "
\n", "
\n", " Layer #2\n", "
\n", " \n", "\n", "\n", "\n", "
\n", " Layer #2 \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Durationundefined
\n", "
\n", "\n", "
\n", "
\n", "
\n", "
\n", " Layer #3\n", "
\n", " \n", "\n", "\n", "\n", "
\n", " Layer #3 (Data Transactions)\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Duration0 s
Transaction Source\n", " Measure on\n", " ('qudits', 0)\n", "
Transaction Destinations\n", " ('qudits', 0)\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", "
\n", " Layer #4\n", "
\n", " \n", "\n", "\n", "\n", "
\n", " Layer #4 \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Durationundefined
\n", "
\n", "\n", "
\n", "
\n", "
\n", " qudits\n", " \n", " 0\n", " \n", " \n", "
\n", " H\n", "
\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Gate H on ('qudits', 0)\n", "
\n", "
\n", "
\n", " Matrix:\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0.710.71
0.71-0.71
\n", "\n", "
\n", "
\n", "\n", "\n", "
\n", "
\n", "
\n", " \n", "
\n", " CX\n", "
\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Gate CX on (('qudits', 0), ('qudits', 1))\n", "
\n", "
\n", "
\n", " Matrix:\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
1000
0100
0001
0010
\n", "\n", "
\n", "
\n", "\n", "\n", "
\n", "
\n", "
\n", " \n", "
\n", " \n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Measure on ('qudits', 0)\n", "
\n", "
\n", " Parameters\n", "
\n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Dim2
RegisterRegister(name=qudits_results, num_bits=2, dim=2)
\n", "
\n", "\n", "\n", "
\n", "
\n", "
\n", " \n", "
\n", " \n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " ConditionalOperation on ('qudits', 0)\n", "
\n", "
\n", " Operations\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Outcome 0\n", "\n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Gate ID \n", "
\n", "
\n", "
\n", " Matrix:\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
10
01
\n", "\n", "
\n", "
\n", "\n", "\n", "
Outcome 1\n", "\n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Gate X \n", "
\n", "
\n", "
\n", " Matrix:\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
01
10
\n", "\n", "
\n", "
\n", "\n", "\n", "
\n", "\n", "
\n", " Register\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Namequdits_results
Num Bits2
Dim2
\n", "
\n", "\n", "\n", "
\n", "
\n", "
\n", " 1\n", " \n", " \n", "
\n", " CX\n", "
\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Gate CX on (('qudits', 1), ('qudits', 0))\n", "
\n", "
\n", "
\n", " Matrix:\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
1000
0100
0001
0010
\n", "\n", "
\n", "
\n", "\n", "\n", "
\n", "
\n", "
\n", " \n", "
\n", " \n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Measure on ('qudits', 1)\n", "
\n", "
\n", " Parameters\n", "
\n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Dim2
RegisterRegister(name=qudits_results, num_bits=2, dim=2)
\n", "
\n", "\n", "\n", "
\n", "
\n", "
\n", " \n", "
\n", " \n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " ConditionalOperation on ('qudits', 1)\n", "
\n", "
\n", " Operations\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Outcome 0\n", "\n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Gate ID \n", "
\n", "
\n", "
\n", " Matrix:\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
10
01
\n", "\n", "
\n", "
\n", "\n", "\n", "
Outcome 1\n", "\n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Gate X \n", "
\n", "
\n", "
\n", " Matrix:\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
01
10
\n", "\n", "
\n", "
\n", "\n", "\n", "
\n", "\n", "
\n", " Register\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Namequdits_results
Num Bits2
Dim2
\n", "
\n", "\n", "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", "\n", "\n", "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "metadata": { "text/html": { "isolated": true } }, "output_type": "display_data" } ], "source": [ "import keysight.qcs as qcs\n", "\n", "# generate a simple quantum circuit on two qubits\n", "qubits = qcs.Qudits(range(2))\n", "\n", "circuit = qcs.Program()\n", "circuit.add_gate(qcs.GATES.h, qubits[0])\n", "circuit.add_gate(qcs.GATES.cx, (qubits[0], qubits[1]))\n", "\n", "# add a measurement on both qubits with reset\n", "circuit.add_measurement(qubits, reset=True)\n", "\n", "circuit.draw()" ] }, { "cell_type": "raw", "id": "2d64c127", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "When setting ``reset=True``, a new empty layer (the data transaction\n", "layer) gets inserted after the measurement layer, followed by another layer with the\n", "conditional operation. The data transaction layer contains a list of\n", ":py:class:`~keysight.qcs.channels.DataTransaction` objects that map\n", "measurements to operations, as can be seen in the tooltip when hovering over the\n", "layer column header.\n", "If we hover over the conditional operations in the last layer, we can inspect which\n", "operations are played depending on the outcome of the measurement.\n", "Let's take a closer look at those:" ] }, { "cell_type": "code", "execution_count": 3, "id": "c0259c8e", "metadata": { "execution": { "iopub.execute_input": "2024-10-11T06:17:17.232014Z", "iopub.status.busy": "2024-10-11T06:17:17.231248Z", "iopub.status.idle": "2024-10-11T06:17:17.239594Z", "shell.execute_reply": "2024-10-11T06:17:17.238789Z" }, "lines_to_next_cell": 2 }, "outputs": [ { "data": { "text/plain": [ "{Qudits(labels=[0, 1], name=qudits, dim=2): [ConditionalOperation(operations=[Gate(matrix=[[(1+0j), 0j], [0j, (1+0j)]], name=ID), Gate(matrix=[[0j, (1+0j)], [(1+0j), 0j]], name=X)], register=Register(name=qudits_results, num_bits=2, dim=2))]}" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# print the program layer that contains the conditional operation:\n", "circuit[-1].operations" ] }, { "cell_type": "raw", "id": "3b1a1937", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "This conditional operation will execute the first operation, the identity gate, if the\n", "outcome of the measurement is ``0``, and the second operation, an X gate, if the\n", "outcome is ``1``, thereby resetting the qubit state to zero after each\n", "execution of the program. It is also possible to pass a list of operations to the\n", "``reset`` argument whose length should match the dimension of the measurement:" ] }, { "cell_type": "code", "execution_count": 4, "id": "8c9a8133", "metadata": { "execution": { "iopub.execute_input": "2024-10-11T06:17:17.245389Z", "iopub.status.busy": "2024-10-11T06:17:17.244420Z", "iopub.status.idle": "2024-10-11T06:17:17.270863Z", "shell.execute_reply": "2024-10-11T06:17:17.269840Z" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", " \n", "\tkeysight-logo-svg\n", "\t\n", "\t\n", "\t\t\n", "\t\n", "\n", "\n", " \n", "
\n", " Program\n", "
\n", " \n", "\n", "\n", "\n", "
\n", " Program\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Durationundefined
Layers5
Targets2
Repetitions\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", "
\n", " Layer #0\n", "
\n", " \n", "\n", "\n", "\n", "
\n", " Layer #0 \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Durationundefined
\n", "
\n", "\n", "
\n", "
\n", "
\n", "
\n", " Layer #1\n", "
\n", " \n", "\n", "\n", "\n", "
\n", " Layer #1 \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Durationundefined
\n", "
\n", "\n", "
\n", "
\n", "
\n", "
\n", " Layer #2\n", "
\n", " \n", "\n", "\n", "\n", "
\n", " Layer #2 \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Durationundefined
\n", "
\n", "\n", "
\n", "
\n", "
\n", "
\n", " Layer #3\n", "
\n", " \n", "\n", "\n", "\n", "
\n", " Layer #3 (Data Transactions)\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Duration0 s
Transaction Source\n", " Measure on\n", " ('qudits', 0)\n", "
Transaction Destinations\n", " ('qudits', 0)\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", "
\n", " Layer #4\n", "
\n", " \n", "\n", "\n", "\n", "
\n", " Layer #4 \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Durationundefined
\n", "
\n", "\n", "
\n", "
\n", "
\n", " qudits\n", " \n", " 0\n", " \n", " \n", "
\n", " H\n", "
\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Gate H on ('qudits', 0)\n", "
\n", "
\n", "
\n", " Matrix:\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0.710.71
0.71-0.71
\n", "\n", "
\n", "
\n", "\n", "\n", "
\n", "
\n", "
\n", " \n", "
\n", " CX\n", "
\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Gate CX on (('qudits', 0), ('qudits', 1))\n", "
\n", "
\n", "
\n", " Matrix:\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
1000
0100
0001
0010
\n", "\n", "
\n", "
\n", "\n", "\n", "
\n", "
\n", "
\n", " \n", "
\n", " \n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Measure on ('qudits', 0)\n", "
\n", "
\n", " Parameters\n", "
\n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Dim2
RegisterRegister(name=qudits_results, num_bits=2, dim=2)
\n", "
\n", "\n", "\n", "
\n", "
\n", "
\n", " \n", "
\n", " \n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " ConditionalOperation on ('qudits', 0)\n", "
\n", "
\n", " Operations\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Outcome 0\n", "\n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Gate ID \n", "
\n", "
\n", "
\n", " Matrix:\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
10
01
\n", "\n", "
\n", "
\n", "\n", "\n", "
Outcome 1\n", "\n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Gate Y \n", "
\n", "
\n", "
\n", " Matrix:\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0-1j
1j0
\n", "\n", "
\n", "
\n", "\n", "\n", "
\n", "\n", "
\n", " Register\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Namequdits_results
Num Bits2
Dim2
\n", "
\n", "\n", "\n", "
\n", "
\n", "
\n", " 1\n", " \n", " \n", "
\n", " CX\n", "
\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Gate CX on (('qudits', 1), ('qudits', 0))\n", "
\n", "
\n", "
\n", " Matrix:\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
1000
0100
0001
0010
\n", "\n", "
\n", "
\n", "\n", "\n", "
\n", "
\n", "
\n", " \n", "
\n", " \n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Measure on ('qudits', 1)\n", "
\n", "
\n", " Parameters\n", "
\n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Dim2
RegisterRegister(name=qudits_results, num_bits=2, dim=2)
\n", "
\n", "\n", "\n", "
\n", "
\n", "
\n", " \n", "
\n", " \n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " ConditionalOperation on ('qudits', 1)\n", "
\n", "
\n", " Operations\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Outcome 0\n", "\n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Gate ID \n", "
\n", "
\n", "
\n", " Matrix:\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
10
01
\n", "\n", "
\n", "
\n", "\n", "\n", "
Outcome 1\n", "\n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Gate Y \n", "
\n", "
\n", "
\n", " Matrix:\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0-1j
1j0
\n", "\n", "
\n", "
\n", "\n", "\n", "
\n", "\n", "
\n", " Register\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Namequdits_results
Num Bits2
Dim2
\n", "
\n", "\n", "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", "\n", "\n", "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "metadata": { "text/html": { "isolated": true } }, "output_type": "display_data" } ], "source": [ "circuit = qcs.Program()\n", "circuit.add_gate(qcs.GATES.h, qubits[0])\n", "circuit.add_gate(qcs.GATES.cx, (qubits[0], qubits[1]))\n", "\n", "# add a measurement on both qubits with a reset operation\n", "# if the state is 0, play the identity\n", "# if the state is 1, play a Y gate\n", "circuit.add_measurement(qubits, reset=[qcs.GATES.id, qcs.GATES.y])\n", "\n", "circuit.draw()" ] }, { "cell_type": "raw", "id": "07867dd5", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "We can repeat reset instruction multiple times by setting ``repeat_reset``:" ] }, { "cell_type": "code", "execution_count": 5, "id": "3ac5fd18", "metadata": { "execution": { "iopub.execute_input": "2024-10-11T06:17:17.274715Z", "iopub.status.busy": "2024-10-11T06:17:17.274113Z", "iopub.status.idle": "2024-10-11T06:17:17.301413Z", "shell.execute_reply": "2024-10-11T06:17:17.300677Z" }, "lines_to_next_cell": 2 }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", " \n", "\tkeysight-logo-svg\n", "\t\n", "\t\n", "\t\t\n", "\t\n", "\n", "\n", " \n", "
\n", " Program\n", "
\n", " \n", "\n", "\n", "\n", "
\n", " Program\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Durationundefined
Layers7
Targets1
Repetitions\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", "
\n", " Layer #0\n", "
\n", " \n", "\n", "\n", "\n", "
\n", " Layer #0 \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Durationundefined
\n", "
\n", "\n", "
\n", "
\n", "
\n", "
\n", " Layer #1\n", "
\n", " \n", "\n", "\n", "\n", "
\n", " Layer #1 (Data Transactions)\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Duration0 s
Transaction Source\n", " Measure on\n", " ('qudits', 0)\n", "
Transaction Destinations\n", " ('qudits', 0)\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", "
\n", " Layer #2\n", "
\n", " \n", "\n", "\n", "\n", "
\n", " Layer #2 \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Durationundefined
\n", "
\n", "\n", "
\n", "
\n", "
\n", "
\n", " Layer #3\n", "
\n", " \n", "\n", "\n", "\n", "
\n", " Layer #3 (Data Transactions)\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Duration0 s
Transaction Source\n", " Measure on\n", " ('qudits', 0)\n", "
Transaction Destinations\n", " ('qudits', 0)\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", "
\n", " Layer #4\n", "
\n", " \n", "\n", "\n", "\n", "
\n", " Layer #4 \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Durationundefined
\n", "
\n", "\n", "
\n", "
\n", "
\n", "
\n", " Layer #5\n", "
\n", " \n", "\n", "\n", "\n", "
\n", " Layer #5 (Data Transactions)\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Duration0 s
Transaction Source\n", " Measure on\n", " ('qudits', 0)\n", "
Transaction Destinations\n", " ('qudits', 0)\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", "
\n", " Layer #6\n", "
\n", " \n", "\n", "\n", "\n", "
\n", " Layer #6 \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Durationundefined
\n", "
\n", "\n", "
\n", "
\n", "
\n", " qudits\n", " \n", " 0\n", " \n", " \n", "
\n", " \n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Measure on ('qudits', 0)\n", "
\n", "
\n", " Parameters\n", "
\n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Dim2
RegisterRegister(name=qudits_results, num_bits=1, dim=2)
\n", "
\n", "\n", "\n", "
\n", "
\n", "
\n", " \n", "
\n", " \n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " ConditionalOperation on ('qudits', 0)\n", "
\n", "
\n", " Operations\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Outcome 0\n", "\n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Gate ID \n", "
\n", "
\n", "
\n", " Matrix:\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
10
01
\n", "\n", "
\n", "
\n", "\n", "\n", "
Outcome 1\n", "\n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Gate X \n", "
\n", "
\n", "
\n", " Matrix:\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
01
10
\n", "\n", "
\n", "
\n", "\n", "\n", "
\n", "\n", "
\n", " Register\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Namequdits_results
Num Bits1
Dim2
\n", "
\n", "\n", "\n", "
\n", "
\n", "
\n", " \n", "
\n", " \n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Measure on ('qudits', 0)\n", "
\n", "
\n", " Parameters\n", "
\n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Dim2
RegisterRegister(name=qudits_results, num_bits=1, dim=2)
\n", "
\n", "\n", "\n", "
\n", "
\n", "
\n", " \n", "
\n", " \n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " ConditionalOperation on ('qudits', 0)\n", "
\n", "
\n", " Operations\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Outcome 0\n", "\n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Gate ID \n", "
\n", "
\n", "
\n", " Matrix:\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
10
01
\n", "\n", "
\n", "
\n", "\n", "\n", "
Outcome 1\n", "\n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Gate X \n", "
\n", "
\n", "
\n", " Matrix:\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
01
10
\n", "\n", "
\n", "
\n", "\n", "\n", "
\n", "\n", "
\n", " Register\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Namequdits_results
Num Bits1
Dim2
\n", "
\n", "\n", "\n", "
\n", "
\n", "
\n", " \n", "
\n", " \n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Measure on ('qudits', 0)\n", "
\n", "
\n", " Parameters\n", "
\n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Dim2
RegisterRegister(name=qudits_results, num_bits=1, dim=2)
\n", "
\n", "\n", "\n", "
\n", "
\n", "
\n", " \n", "
\n", " \n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " ConditionalOperation on ('qudits', 0)\n", "
\n", "
\n", " Operations\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Outcome 0\n", "\n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Gate ID \n", "
\n", "
\n", "
\n", " Matrix:\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
10
01
\n", "\n", "
\n", "
\n", "\n", "\n", "
Outcome 1\n", "\n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Gate X \n", "
\n", "
\n", "
\n", " Matrix:\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
01
10
\n", "\n", "
\n", "
\n", "\n", "\n", "
\n", "\n", "
\n", " Register\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Namequdits_results
Num Bits1
Dim2
\n", "
\n", "\n", "\n", "
\n", "
\n", "
\n", "\n", "\n", "\n", "\n", "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "metadata": { "text/html": { "isolated": true } }, "output_type": "display_data" } ], "source": [ "circuit = qcs.Program()\n", "\n", "# add a reset operation at the start of the program and repeat it three times\n", "circuit.add_measurement(qubits[0], reset=True, repeat_reset=3)\n", "circuit.draw()" ] }, { "cell_type": "raw", "id": "f987eee1", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "Defining conditional operations directly\n", "----------------------------------------\n", "Conditional operations are executed conditioned on an outcome stored in a\n", ":py:class:`~keysight.qcs.channels.Register`\\.\n", "This register is written to by a :py:class:`~keysight.qcs.channels.Classifier`\\\n", "specified on an :py:class:`~keysight.qcs.channels.Acquisition`\\.\n", "\n", "Consider the following example program on a single channel:" ] }, { "cell_type": "code", "execution_count": 6, "id": "b5946e9c", "metadata": { "execution": { "iopub.execute_input": "2024-10-11T06:17:17.305040Z", "iopub.status.busy": "2024-10-11T06:17:17.304671Z", "iopub.status.idle": "2024-10-11T06:17:17.381530Z", "shell.execute_reply": "2024-10-11T06:17:17.380695Z" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", " \n", "\tkeysight-logo-svg\n", "\t\n", "\t\n", "\t\t\n", "\t\n", "\n", "\n", " \n", "
\n", " Program\n", "
\n", " \n", "\n", "\n", "\n", "
\n", " Program\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Duration30 ns
Layers1
Targets2
Repetitions\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", "
\n", " Layer #0\n", "
\n", " \n", "\n", "\n", "\n", "
\n", " Layer #0 \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Duration30 ns
\n", "
\n", "\n", "
\n", "
\n", "
\n", " awg\n", " \n", " 0\n", " \n", " \n", "
\n", " \n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " RFWaveform on ('awg', 0)\n", "
\n", "
\n", " Parameters\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Duration30 ns
Amplitude1
Frequency5 GHz
EnvelopeGaussianEnvelope(2.0)
Instantaneous Phase0 rad
Post-phase0 rad
\n", "
\n", "\n", "\n", "
\n", "
\n", "
\n", " dig\n", " \n", " 0\n", " \n", " \n", "
\n", " \n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Acquisition on ('dig', 0)\n", "
\n", "
\n", " Parameters\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Duration30 ns
Integration Filter\n", " \n", " \n", "\n", "\n", "\n", "
\n", " RFWaveform \n", "
\n", "
\n", " Parameters\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Duration30 ns
Amplitude1
Frequency0 Hz
EnvelopeConstantEnvelope()
Instantaneous Phase0 rad
Post-phase0 rad
\n", "
\n", "\n", "
ClassifierClassifier(Array(name=_implicit, shape=(2,), dtype=complex, unit=none))
\n", "
\n", "\n", "\n", "
\n", "
\n", "
\n", "\n", "\n", "\n", "\n", "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "metadata": { "text/html": { "isolated": true } }, "output_type": "display_data" } ], "source": [ "# define a classifier with a register\n", "register = qcs.Register(name=\"results\", num_outcomes=1)\n", "classifier = qcs.Classifier([0, 0.1], register)\n", "\n", "# define two channels for the readout waveform and acquisiton\n", "awg = qcs.Channels(0, \"awg\")\n", "dig = qcs.Channels(0, \"dig\")\n", "\n", "# define the readout pulse and the integration filter\n", "frequency = 5e9\n", "readout_pulse = qcs.RFWaveform(30e-9, qcs.GaussianEnvelope(), 1, frequency)\n", "integration_filter = qcs.RFWaveform(30e-9, qcs.ConstantEnvelope(), 1, 0)\n", "\n", "program = qcs.Program()\n", "\n", "program.add_waveform(readout_pulse, awg)\n", "program.add_acquisition(integration_filter, dig, classifier)\n", "program.draw()" ] }, { "cell_type": "raw", "id": "f3940a09", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "This program now contains a single RF waveform played on the AWG channel and a\n", "simultaneous acquisition on a digitizer channel. We can now add the conditional\n", "operation based on the register that is connected to this acquisition:" ] }, { "cell_type": "code", "execution_count": 7, "id": "ca1d3921", "metadata": { "execution": { "iopub.execute_input": "2024-10-11T06:17:17.385238Z", "iopub.status.busy": "2024-10-11T06:17:17.384890Z", "iopub.status.idle": "2024-10-11T06:17:17.405995Z", "shell.execute_reply": "2024-10-11T06:17:17.405189Z" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", " \n", "\tkeysight-logo-svg\n", "\t\n", "\t\n", "\t\t\n", "\t\n", "\n", "\n", " \n", "
\n", " Program\n", "
\n", " \n", "\n", "\n", "\n", "
\n", " Program\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Duration60 ns
Layers3
Targets2
Repetitions\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", "
\n", " Layer #0\n", "
\n", " \n", "\n", "\n", "\n", "
\n", " Layer #0 \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Duration30 ns
\n", "
\n", "\n", "
\n", "
\n", "
\n", "
\n", " Layer #1\n", "
\n", " \n", "\n", "\n", "\n", "
\n", " Layer #1 (Data Transactions)\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Duration0 s
Transaction Source\n", " Acquisition on\n", " ('dig', 0)\n", "
Transaction Destinations\n", " ('awg', 0)\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", "
\n", " Layer #2\n", "
\n", " \n", "\n", "\n", "\n", "
\n", " Layer #2 \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Duration30 ns
\n", "
\n", "\n", "
\n", "
\n", "
\n", " awg\n", " \n", " 0\n", " \n", " \n", "
\n", " \n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " RFWaveform on ('awg', 0)\n", "
\n", "
\n", " Parameters\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Duration30 ns
Amplitude1
Frequency5 GHz
EnvelopeGaussianEnvelope(2.0)
Instantaneous Phase0 rad
Post-phase0 rad
\n", "
\n", "\n", "\n", "
\n", "
\n", "
\n", " \n", "
\n", " \n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " ConditionalOperation on ('awg', 0)\n", "
\n", "
\n", " Operations\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Outcome 0\n", "\n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " RFWaveform \n", "
\n", "
\n", " Parameters\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Duration30 ns
Amplitude1
Frequency5 GHz
EnvelopeGaussianEnvelope(2.0)
Instantaneous Phase0 rad
Post-phase0 rad
\n", "
\n", "\n", "\n", "
Outcome 1\n", "\n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " RFWaveform \n", "
\n", "
\n", " Parameters\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Duration30 ns
Amplitude0.5
Frequency5 GHz
EnvelopeGaussianEnvelope(2.0)
Instantaneous Phase0 rad
Post-phase0 rad
\n", "
\n", "\n", "\n", "
\n", "\n", "
\n", " Register\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Nameresults
Num Bits1
Dim2
\n", "
\n", "\n", "\n", "
\n", "
\n", "
\n", " dig\n", " \n", " 0\n", " \n", " \n", "
\n", " \n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " Acquisition on ('dig', 0)\n", "
\n", "
\n", " Parameters\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Duration30 ns
Integration Filter\n", " \n", " \n", "\n", "\n", "\n", "
\n", " RFWaveform \n", "
\n", "
\n", " Parameters\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Duration30 ns
Amplitude1
Frequency0 Hz
EnvelopeConstantEnvelope()
Instantaneous Phase0 rad
Post-phase0 rad
\n", "
\n", "\n", "
ClassifierClassifier(Array(name=_implicit, shape=(2,), dtype=complex, unit=none))
\n", "
\n", "\n", "\n", "
\n", "
\n", "
\n", "\n", "\n", "\n", "\n", "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "metadata": { "text/html": { "isolated": true } }, "output_type": "display_data" } ], "source": [ "# first, define two waveforms to be played for either outcome (0 or 1)\n", "waveform_0 = qcs.RFWaveform(30e-9, qcs.GaussianEnvelope(), 1, frequency)\n", "waveform_1 = qcs.RFWaveform(30e-9, qcs.GaussianEnvelope(), 0.5, frequency)\n", "\n", "# add the conditional operation using those waveforms and targeting the awg\n", "# channel\n", "program.add_conditional_operation(\n", " operations=[waveform_0, waveform_1], target=awg, register=classifier.register\n", ")\n", "\n", "program.draw()" ] }, { "cell_type": "raw", "id": "845cdeb9", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "This program contains a conditional operation with two waveforms that will be\n", "played depending on the outcome stored in the register. If the outcome is ``0``, the\n", "waveform at index `0` of the ``operations`` list will be played, and if it is\n", "``1``, the waveform at the index `1` will be played." ] } ], "metadata": { "jupytext": { "cell_metadata_filter": "nbsphinx,raw_mimetype,-all", "main_language": "python", "notebook_metadata_filter": "-all", "text_representation": { "extension": ".py", "format_name": "percent" } }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.6" } }, "nbformat": 4, "nbformat_minor": 5 }