{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Instantiating Pulses: Obtaining Pulse Instances From Pulse Templates\n", "\n", "In the previous examples, we have modelled pulses using the basic members of qupulse's `PulseTemplate` class hierarchy. However, these are only templates (or classes) of pulses and may contain parameters so that they cannot be run directly on hardware (this is also the reason why we always have to provide some parameters during plotting). First, we have to instantiate a concrete pulse in a process we call *instantiating*. We achieve this by making use of the `create_program()` method and will need to provide concrete parameter values.\n", "\n", "The example should be mostly self-contained and easy to follow, however, if you started here and don't know what pulse templates are and how to create them, maybe it's best to have a look at [Modelling a Simple TablePulseTemplate](00SimpleTablePulse.ipynb) first.\n", "\n", "To start, let us first create a pulse template with a few parameters and two channels.\n", "## Instantiating a TablePulse" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "from qupulse.pulses.plotting import plot\n", "from qupulse.pulses import TablePT\n", "template = TablePT(entries={'A': [(0, 0),\n", " ('ta', 'va', 'hold'),\n", " ('tb', 'vb', 'linear'),\n", " ('tend', 0, 'jump')],\n", " 'B': [(0, 0),\n", " ('ta', '-va', 'hold'),\n", " ('tb', '-vb', 'linear'),\n", " ('tend', 0, 'jump')]}, measurements=[('m', 0, 'ta'),\n", " ('n', 'tb', 'tend-tb')])\n", "\n", "parameters = {'ta': 2,\n", " 'va': 2,\n", " 'tb': 4,\n", " 'vb': 3,\n", " 'tc': 5,\n", " 'td': 11,\n", " 'tend': 6}\n", "_ = plot(template, parameters, sample_rate=100, show=False, plot_measurements={'m', 'n'})\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `HardwareSetup` class represents the actual hardware and interfaces to the devices in qupulse. It is thus responsible for uploading to and executing pulses on the hardware. To do so it currently expects an instantiated pulse which is represented by `Loop` objects. These can be obtained by plugging the desired parameters into the `create_program` method of your `PulseTemplate` object." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "LOOP 1 times:\n", " ->EXEC 1 times\n", "Defined on {'B', 'A'}\n", "{'m': (array([0.]), array([2.])), 'n': (array([4.]), array([2.]))}\n" ] } ], "source": [ "program = template.create_program(parameters=parameters,\n", " channel_mapping={'A': 'A', 'B': 'B'})\n", "\n", "print(program)\n", "print('Defined on', program[0].waveform.defined_channels)\n", "print(program.get_measurement_windows())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The output shows us that a simple `Loop` object was created which just executes a single waveform without repetitions, just as our `PulseTemplate` specifies. In the `Loop` object all parameter references from the template have been resolved and replaced by the values provided in the `parameters` dictionary, so this is our pulse ready to be executed on the hardware.\n", "\n", "### Mapping Channels and Measurements During Instantiation\n", "\n", "The `channel_mapping` keyword argument allows us to rename channels or to drop them by mapping them to `None`. We can do the same to measurements using the `measurement_mapping` keyword argument." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "LOOP 1 times:\n", " ->EXEC 1 times\n", "Defined on {'Y'}\n", "{'foo': (array([0.]), array([2.]))}\n" ] } ], "source": [ "program = template.create_program(parameters=parameters,\n", " channel_mapping={'A': None, 'B': 'Y'},\n", " measurement_mapping={'m': 'foo', 'n': None})\n", "print(program)\n", "print('Defined on', program[0].waveform.defined_channels)\n", "print(program.get_measurement_windows())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Instantiating Composed Pulses\n", "\n", "Let's have a brief look at a slightly more complex pulse. Say we want to repeat our previous pulse a few times and follow it up with a brief sine wave on each channel." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "LOOP 1 times:\n", " ->LOOP 4 times:\n", " ->EXEC 1 times\n", " ->EXEC 1 times\n", "{'m': (array([ 0., 6., 12., 18.]), array([2., 2., 2., 2.])), 'n': (array([ 4., 10., 16., 22.]), array([2., 2., 2., 2.]))}\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from qupulse.pulses import FunctionPT, SequencePT, RepetitionPT, AtomicMultiChannelPT\n", "\n", "repeated_template = RepetitionPT(template, 'n_rep')\n", "sine_template = FunctionPT('sin_a*sin(t)', '2*3.1415')\n", "two_channel_sine_template = AtomicMultiChannelPT(\n", " (sine_template, {'default': 'A'}), \n", " (sine_template, {'default': 'B'}, {'sin_a': 'sin_b'})\n", ")\n", "sequence_template = SequencePT(repeated_template, two_channel_sine_template)\n", "\n", "sequence_parameters = dict(parameters) # we just copy our parameter dict from before\n", "sequence_parameters['n_rep'] = 4 # and add a few new values for the new params from the sine wave\n", "sequence_parameters['sin_a'] = 1\n", "sequence_parameters['sin_b'] = 2\n", "\n", "_ = plot(sequence_template, parameters=sequence_parameters, sample_rate=100, show=False)\n", "sequence_program = sequence_template.create_program(parameters=sequence_parameters, \n", " channel_mapping={'A': 'A', 'B': 'B'})\n", "print(sequence_program)\n", "print(sequence_program.get_measurement_windows())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we can see, our `Loop` now contains an inner `Loop` object which repeats a waveform four times and additionally executes another waveform. This reflects the structure of our pulse template. Note also that the single measurement window defined by our pulse template `template` is repeated four times as well in the `Loop` object, according to the number of repetitions of the corresponding pulse.\n", "\n", "Don't worry too much about the inner workings of the `Loop` objects, though. We were just taking a short look at them here. In practice it will be sufficient to just obtain them using the `create_program` method of `PulseTemplate` and pass them on to `HardwareSetup` when required." ] } ], "metadata": { "kernelspec": { "display_name": "Python [default]", "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.7.0" } }, "nbformat": 4, "nbformat_minor": 2 }