This chapter describes how to write scripts to perform sequence of experiments. Scripting is useful for running multiple experiments after each other, or for defining sequences where some properties of a measurement is updated depending on the result of a previous measurement.
In a typical scripting setup, the user would first create a number of Measurement configurations using the standard Measurement configuration dialog, and then save those configurations files to a folder on disk. The script would then be programmed to execute those configurations, either as they are or by first updating one or multiple parameters of the Measurement configurations.
The most basic way of implementing scripting is to call the Measurement program with command-line arguments, as described in Section console below. The advantage of this method is that one can use any programming language that supports calling an external program for writing the script, the disadvantage is that the function calls can become rather long and difficult to read. If you plan to script experiments using the programming language Python, there are a number of helper functions that will simplify the procedure. These helper functions are described in Section scriptPython.
9.1. Console options¶
In addition to the user-interface based Measurement configuration
dialog, it is also possible to start experiment from the command line.
The program is called
Measurement-Console.exe, and is located in the
main program folder (see Section Installation for the folder
structure). The command-line arguments are:
Measurement-Console.exe [-h] -i INPUT_PATH [-u CHANNEL VALUE TYPE] [-m CHANNEL] [-o OUTPUT_PATH] [-e EXPORT_PATH] [-r CHANNEL]
- Show a help message and exit
- Path to the measurement configuration file to execute or rearrange.
-u CHANNEL VALUE TYPE:
- Update the step item
CHANNELwith a new value. The
TYPE-argument defines what property of the step item to update, and must be one of
SINGLE, START, STOP, CENTER, SPAN, STEP, N_PTS. Note that scripted measurements do not raise an error if updating an inactive step item. Instead, the step item is automatically switched to the new step type. For example, if the original step type is
SINGLE, and the user updates the
STARTvalue, the step type is changed to
START-STOP. Note that it is up to the user to ensure that all other relevant quantities are updated as well (in the example, the
STOPvalue and the
- Specifies the master channel name. Values of all other updated channels will be defined by look-up tables relative to the master channel values.
- Specifies the path of the output log file. If not given, the data will be be saved to the input measurement configuration file.
- After completed measurement, export the last trace to the specified text file. Any previous contents in that file will be overwritten. This is useful for creating scripts where future measurements depend on the results of previous measurements.
- Re-arrange a log with N 1-dimensional entries of length M to a
2-dimensional log with dimensions (N, M). The
CHANNELdetermines which data to use when defining the second dimension. It is also possible to rearrange into a multi-dimensional log by specifying multiple channels, but if so lists of step values for each dimension need to be specified as well. For example, to rearrange a log with 6 entries into a multi-dimensional log with 3*2 entries, use
-r Channel 1 1.0, 2.0, 3.0 Channel 2 1.0, 2.0. Note that the internal order of the new dimensions is defined by the order in which they appear in the step list of the original Measurement configuration file, not by the order they are listed after the
-rcommand. Also, note that no measurement will be performed when running the program with this option.
If no arguments are given, the program will open the standard user interface window for configuring the experiment.
9.2. Scripting using Python¶
The Python scripting helper functions are part of the Labber API, located in the Script folder of the main program directory (see Section Folders for an overview of folder locations). To provide easy access to the Labber API, it’s recommended to add the Script folder to your Python path. For more information on the Python API, see Section PythonAPI.
The helper functions in the ScriptTools module are designed for repeatedly performing a number of Measurements that each contain one-dimensional sweeps, and where one or multiple parameters of the Measurement configurations are updated between each measurement. The functions are best explained by an example, which we’ll take from the domain of superconducting qubits. For the purpose of this example, we can view the qubit as a slightly anharmonic oscillators whose frequency tunes with applied magnetic flux. The qubit is read out by coupling it to microwave resonators, and the coupling is arranged in a way that changing the qubit frequency will cause a slight shift of the resonator frequency.
Now, say that we want to probe the qubit frequency as a function of applied flux. The difficulty is that the changing the flux will affect both the qubit and the resonator frequencies, which means that we can not use a fixed-frequency read-out tone. Instead, we need to implement the following procedure:
- Set new magnetic flux value
- Measure resonator
- Find resonance frequency of resonator
- Measure qubit, while keeping the resonator at
- Repeat for all values of magnetic flux
The file ExampleScript.py in the Script folder contain an example script for performing the sequence described above. The script assumes that the user has created two Measurement configurations, one for measuring the resonator, and one for measuring the qubit, and that both Measurement configurations have a single-valued step item called ’Flux bias’ that control the magnetic flux.