Justin's Universal Measurement Program
This page explains JUMP in eight levels. Level 1 is simple. Each level after it gives more detail. Stop when you have sufficient information.
JUMP is a computer program for laboratory measurements. It controls laboratory instruments and records the data that they measure.
The first use of JUMP is dielectric spectroscopy. This procedure measures the electrical properties of a material sample at different frequencies and temperatures.
JUMP decreases the sample temperature from 300 K to 250 K. At each 3 K step, it measures the sample at 30 frequencies between 1 Hz and 10 MHz. At the end, JUMP writes one data file for each temperature.
JUMP operates in a text console. It asks the operator questions. The operator types the answers.
JUMP replaces an older QBasic program. The group of Experimental Physics V at the University of Augsburg uses it.
JUMP divides all values into two types: controllables and measurables.
Some physical quantities have the two types. You set the temperature setpoint. Then you measure the real sample temperature.
The code uses the spelling "controlable".
Select the type of each value. These values are from real instrument classes in JUMP.
A measurement in JUMP is a list of tasks. The tasks make a tree. Each task can have sub-tasks.
JUMP has three task types:
Each task has an identifier, for example [0,0,1]. The number of digits shows the depth of the task in the tree.
This is a short version of a real task list. Push "Next step" to see each action. Push "Start" to see all actions automatically.
During the frequency sweep, JUMP keeps the setpoint constant. After the sweep, it moves the setpoint to the planned value. Because of this, the mean rate stays at 0.5 K/min.
Each session with JUMP has three phases. The operator can do phase 3 at a different time and on a different computer.
The operator types a name, a working directory and a comment. Then the operator selects the measurement setup and the instruments. Last, the operator makes the task list.
JUMP starts each task as a separate thread. The tasks operate in the sequence of the tree. Every 5 minutes, JUMP saves the database in one of two autosave files. At the end, it saves the full database as a .JUMP file.
The operator opens the .JUMP file. JUMP calculates more quantities and connects the data of the tasks. Then it writes text files.
The template S001 gives fixed answers for the task list and for the processing. With a template, the operator types fewer answers.
JUMP records the data of each task in a separate list. The lists do not have a link to each other.
For example, list [0,0,0,0] contains 16 impedance values. But these values do not show their temperature. In phase 3, the operator connects the lists with these operations:
[0] and [0,0]. The two lists must have the same length. The relation is 1 to 1.[0,0] and [0,1]. Use it when two sensors record data at the same time.Do the operations in this sequence. Each operation uses the data that the operation before it made.
The ALPHA analyzer gives three values for each point: the resistance R, the reactance X and the frequency f.
JUMP calculates more quantities from these values. If you give the sample thickness d and the electrode area A, JUMP also calculates the permittivity and the conductivity.
JUMP uses millimetres for d and A. Because of this, it uses ε0 = 8.854 × 10−15 F/mm. The conductivity is in S/cm.
| Quantity | Equation | Value | Key in file |
|---|
JUMP has six Python files. Each file is one layer of the program.
All commands to an instrument go through the measurement setup. The setup knows the limits of the physical equipment. For example, a cryostat must not go above 500 K.
*IDN? to each instrument. The timeout is 50 ms.END ALWAYS and ID?. The Agilent 3458A needs these commands.Device_Serials.The repository contains only Device_Serials/DUMMY.py. Each laboratory adds the files for its own instruments.
| Class | Instrument | Measurables | Controllables |
|---|---|---|---|
| ALPHA | Novocontrol ALPHA analyzer | RX | expected_freq |
| Temp_336 | LakeShore 336 temperature controller | Sensor A to D (K) | Setpoint, PID, HeaterOutput, HeaterRange |
| Quatro | Novocontrol Quatro cryosystem | Sample temperature | Setpoint, PowerOffNow |
| Agilent4980A | Agilent 4980A LCR meter | 19 functions, CpD to YTr | expected_freq |
| Agilent3458A | Agilent 3458A multimeter | 4-wire resistance | resistance_range |
| Keysight_MSO_X_3014T | Keysight oscilloscope | Vmax on channels 1 and 2 | None |
| NIMaxScreenshots | Screen of NI MAX, read with OCR | 8 channels in mV | None |
DUMMY in MeasurementHardware.py.measure_measurable and set_controlable for the instrument.*IDN? answer of the instrument in a new file in Device_Serials.MeasurementDeviceChooser..JUMP file uses the Python format "pickle". Only Python with the JUMP classes can open it. Do not open .JUMP files from unknown sources.import visa. Current PyVISA versions do not have this module. Use an older PyVISA version or change the import.