{ "cells": [ { "cell_type": "markdown", "id": "plain-primary", "metadata": {}, "source": [ "# Qcodes example with DelegateInstrument driver\n", "\n", "This notebooks explains how to use the `DelegateInstrument` driver.\n", "\n", "## About\n", "The goal of the `DelegateInstrument` driver is to make it easier to combine different parameters together into a new \"virtual\" instrument. Each parameter on a `DelegateInstrument` can point to one or more parameters on other instruments in the station.\n", "\n", "## Usage\n", "The way it's used is mainly by specifying an entry in the station YAML. For instance, let's say you want to use a magnetic field coil. The driver has a method set_field(value, block), that by default is set to block=True, which means the field is ramped in a way that blocks further execution until the desired value is reached. However, let's say you are creating a measurement in which you want the parameter to be set, and while the value is ramping, you want to measure other parameters. This can be done by using `DelegateInstrument` and specifying a custom `setter` for the parameter that gets and sets the magnetic field.\n", "\n", "By default, each parameter is represented by a `DelegateParameter`. The `DelegateInstrument` also supports passing multiple source parameters to a given parameter. In order to do this, simply specify multiple parameters in the dictionary values under the `parameters` key.\n", "\n", "It can also add instrument channels, specified under a separate key `channels`, shown in the second half of the notebook." ] }, { "cell_type": "code", "execution_count": 1, "id": "sapphire-quebec", "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Overwriting example.yaml\n" ] } ], "source": [ "%%writefile example.yaml\n", "\n", "instruments:\n", " field_X:\n", " type: qcodes.tests.instrument_mocks.MockField\n", "\n", " field:\n", " type: qcodes.instrument.delegate.DelegateInstrument\n", " init:\n", " parameters:\n", " X:\n", " - field_X.field\n", " ramp_rate:\n", " - field_X.ramp_rate\n", " combined:\n", " - field_X.field\n", " - field_X.ramp_rate\n", " set_initial_values_on_load: true\n", " initial_values:\n", " ramp_rate: 1.0\n", " setters:\n", " X:\n", " method: field_X.set_field\n", " block: false" ] }, { "cell_type": "code", "execution_count": 2, "id": "younger-newspaper", "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Logging hadn't been started.\n", "Activating auto-logging. Current session state plus future input saved.\n", "Filename : /Users/jana/.qcodes/logs/command_history.log\n", "Mode : append\n", "Output logging : True\n", "Raw input log : False\n", "Timestamping : True\n", "State : active\n", "Qcodes Logfile : /Users/jana/.qcodes/logs/210608-30748-qcodes.log\n" ] } ], "source": [ "import qcodes as qc" ] }, { "cell_type": "code", "execution_count": 3, "id": "muslim-briefs", "metadata": {}, "outputs": [], "source": [ "station = qc.Station(config_file=\"example.yaml\")" ] }, { "cell_type": "code", "execution_count": 4, "id": "greatest-antenna", "metadata": {}, "outputs": [], "source": [ "field_X = station.load_field_X()\n", "field = station.load_field(station=station)" ] }, { "cell_type": "code", "execution_count": 5, "id": "every-playing", "metadata": {}, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0.0" ] }, "metadata": {}, "execution_count": 5 } ], "source": [ "field.X()" ] }, { "cell_type": "code", "execution_count": 6, "id": "undefined-worst", "metadata": {}, "outputs": [], "source": [ "field.X(1.)" ] }, { "cell_type": "code", "execution_count": 7, "id": "recreational-suggestion", "metadata": {}, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0.0003410458564758301" ] }, "metadata": {}, "execution_count": 7 } ], "source": [ "field.X()" ] }, { "cell_type": "code", "execution_count": 8, "id": "adopted-exchange", "metadata": {}, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0.0016547958056131998" ] }, "metadata": {}, "execution_count": 8 } ], "source": [ "field.X()" ] }, { "cell_type": "code", "execution_count": 9, "id": "bound-broadcasting", "metadata": {}, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0.002154115835825602" ] }, "metadata": {}, "execution_count": 9 } ], "source": [ "field.X()" ] }, { "cell_type": "code", "execution_count": 10, "id": "casual-ghost", "metadata": {}, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0.002488549550374349" ] }, "metadata": {}, "execution_count": 10 } ], "source": [ "field.X()" ] }, { "cell_type": "markdown", "id": "alike-process", "metadata": {}, "source": [ "As you can see, the field is now ramped in the background with the specified ramp rate. Now, let's try to create a measurement that uses this ability, and ramps the field in the background while measuring:" ] }, { "cell_type": "code", "execution_count": 11, "id": "sustained-tiger", "metadata": {}, "outputs": [], "source": [ "field.ramp_rate(10.)\n", "field_X.field(0.0)" ] }, { "cell_type": "code", "execution_count": 12, "id": "pharmaceutical-partition", "metadata": {}, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0.0" ] }, "metadata": {}, "execution_count": 12 } ], "source": [ "field.X()" ] }, { "cell_type": "code", "execution_count": 13, "id": "happy-ordinance", "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Starting experimental run with id: 1. \n" ] } ], "source": [ "import time\n", "meas = qc.Measurement(station=station)\n", "meas.register_parameter(field.X)\n", "\n", "with meas.run() as datasaver:\n", " for B in [0.1, 0.0]:\n", " field.X(B)\n", " while field.X() != B:\n", " datasaver.add_result((field.X, field.X()))\n", " time.sleep(0.01)\n", " datasaver.flush_data_to_database()" ] }, { "cell_type": "code", "execution_count": 14, "id": "short-medium", "metadata": {}, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": {}, "execution_count": 14 }, { "output_type": "display_data", "data": { "text/plain": "
", "image/svg+xml": "\n\n\n \n \n \n \n 2021-06-08T16:38:13.056411\n image/svg+xml\n \n \n Matplotlib v3.4.2, https://matplotlib.org/\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "datasaver.dataset.to_pandas_dataframe().plot()" ] }, { "cell_type": "markdown", "id": "incomplete-vietnamese", "metadata": {}, "source": [ "When specifying multiple source parameters on a given parameter, the grouped parameter will automatically return a `namedtuple` that returns both values." ] }, { "cell_type": "code", "execution_count": 15, "id": "dangerous-finder", "metadata": {}, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "combined(field=0.0, ramp_rate=10.0)" ] }, "metadata": {}, "execution_count": 15 } ], "source": [ "field.combined()" ] }, { "cell_type": "markdown", "id": "consolidated-cooper", "metadata": {}, "source": [ "We can now also create a custom parameter that does a simple calculation based on the current parameters." ] }, { "cell_type": "code", "execution_count": 16, "id": "designed-bloom", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "def calculate_ramp_time(X, ramp_rate):\n", " \"\"\"Calculate ramp time in seconds\"\"\"\n", " dfield = np.abs(field.target_field - X)\n", " return 60. * dfield/ramp_rate" ] }, { "cell_type": "code", "execution_count": 17, "id": "disabled-logic", "metadata": { "scrolled": true }, "outputs": [], "source": [ "field._create_and_add_parameter(\n", " group_name=\"ramp_time\",\n", " station=station,\n", " paths=[\"field_X.field\", \"field_X.ramp_rate\"],\n", " formatter=calculate_ramp_time\n", ")" ] }, { "cell_type": "code", "execution_count": 18, "id": "adverse-february", "metadata": {}, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "6.0" ] }, "metadata": {}, "execution_count": 18 } ], "source": [ "field.ramp_rate(1.0)\n", "field.target_field = 0.1\n", "field.ramp_time()" ] }, { "cell_type": "code", "execution_count": 19, "id": "statutory-xerox", "metadata": {}, "outputs": [], "source": [ "field.X(0.1)" ] }, { "cell_type": "code", "execution_count": 20, "id": "varying-auditor", "metadata": {}, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "5.959567070007324" ] }, "metadata": {}, "execution_count": 20 } ], "source": [ "field.ramp_time()" ] }, { "cell_type": "code", "execution_count": 21, "id": "chubby-nickel", "metadata": {}, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "4.916700124740601" ] }, "metadata": {}, "execution_count": 21 } ], "source": [ "import time\n", "time.sleep(1.)\n", "field.ramp_time()" ] }, { "cell_type": "code", "execution_count": 22, "id": "italian-liberty", "metadata": {}, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "3.889832019805908" ] }, "metadata": {}, "execution_count": 22 } ], "source": [ "import time\n", "time.sleep(1.)\n", "field.ramp_time()" ] }, { "source": [ "# Devices with channels" ], "cell_type": "markdown", "metadata": {} }, { "source": [ "The YAML file below specifies the instruments with the channels/parameters we wish to group into a new instrument, here called \"device\". The first example simply adds the channel 'as is' using self.add_submodule, while the readout parameter is added as a DelegateParameter." ], "cell_type": "markdown", "metadata": {} }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Overwriting example.yaml\n" ] } ], "source": [ "%%writefile example.yaml\n", "\n", "instruments:\n", " lockin:\n", " type: qcodes.tests.instrument_mocks.MockLockin\n", "\n", " dac:\n", " type: qcodes.tests.instrument_mocks.MockDAC \n", "\n", " device:\n", " type: qcodes.instrument.delegate.DelegateInstrument\n", " init:\n", " parameters:\n", " readout: lockin.X\n", " channels:\n", " gate_1: dac.ch01\n", " set_initial_values_on_load: true\n", " initial_values:\n", " readout: 1e-5\n", " gate_1.voltage.post_delay: 0.01" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "station = qc.Station(config_file=\"example.yaml\")" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "lockin = station.load_lockin()\n", "dac = station.load_dac()\n", "device = station.load_device(station=station)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\n0.01\n" ] } ], "source": [ "print(device.gate_1)\n", "print(device.gate_1.voltage.post_delay)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "0.0\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "-0.6" ] }, "metadata": {}, "execution_count": 27 } ], "source": [ "print(device.gate_1.voltage())\n", "device.gate_1.voltage(-0.6)\n", "device.gate_1.voltage()" ] }, { "source": [ "The second example adds a channel using a custom channel class, which takes the initial channel and its name as input and has a parameter current_valid_ranges." ], "cell_type": "markdown", "metadata": {} }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Overwriting example.yaml\n" ] } ], "source": [ "%%writefile example.yaml\n", "\n", "instruments:\n", " lockin:\n", " type: qcodes.tests.instrument_mocks.MockLockin\n", "\n", " dac:\n", " type: qcodes.tests.instrument_mocks.MockDAC \n", "\n", " device:\n", " type: qcodes.instrument.delegate.DelegateInstrument\n", " init:\n", " parameters:\n", " readout: lockin.X\n", " channels:\n", " type: qcodes.tests.instrument_mocks.MockCustomChannel\n", " gate_1: \n", " channel: dac.ch01\n", " current_valid_range: [-0.5, 0]\n", " set_initial_values_on_load: true\n", " initial_values:\n", " readout: 1e-5" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "lockin.close()\n", "dac.close()" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "station = qc.Station(config_file=\"example.yaml\")\n", "lockin = station.load_lockin()\n", "dac = station.load_dac()" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "device = station.load_device(station=station)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": {}, "execution_count": 32 } ], "source": [ "device.gate_1" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [], "source": [ "device.gate_1.voltage(-0.3)" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "-0.3" ] }, "metadata": {}, "execution_count": 34 } ], "source": [ "device.gate_1.voltage()" ] }, { "source": [ "The MockCustomChannel has a parameter `current_valid_range`." ], "cell_type": "markdown", "metadata": {} }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "[-0.5, 0]" ] }, "metadata": {}, "execution_count": 35 } ], "source": [ "device.gate_1.current_valid_range()" ] } ], "metadata": { "kernelspec": { "name": "python379jvsc74a57bd02b540bc2d5f6bd8c1d4c354bd6559a26f5871610d8f84463e1d37eff37c7ba44", "display_name": "Python 3.7.9 64-bit ('qcodes_fork': conda)" }, "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.9" } }, "nbformat": 4, "nbformat_minor": 5 }