Server and GUI for operating the MIST-1 emittance scanners
-
Data output
- Might want to save voltage regulator std. dev of samples.
- User-adjustable number of voltage regulator and pico sampling
-
Error handling
- (Done: User cannot enter values exceeding stepper limits and vreg limits are now user-adjustable)
Code could get stuck if user tries to set a value that the device can't output - No defined action if user exits/stops communication during calibration
- (Done: User cannot enter values exceeding stepper limits and vreg limits are now user-adjustable)
-
Bugs
- Slow communication can cause messages to pile up (e.g. 'vset 10000poll') which will stop communication. This is hard to reproduce and only happens rarely.
- (Done)
Voltage regulator calibration not implemented (multi-point calibration preferred) - 1px offset in bottom row of scan histograms... No discernable negative effects other than it is annoying
-
User experience
- (Done)
Need to pick a way to save files when doing multiple scansCould add file endings (e.g. file_v.csv, file_h.csv)(Winner)Could append results of horizontal scan to vertical scan fileCould add another column in the data to specify 'v' or 'h' with each data point
- (Done)
Save session propertiesWindow: size, position, splitter dimensionsDevices: calibration distancesScans: All fields could be saved
- (Done)
Fill in missing error message blocks - (Done)
Fill in scan status labels & estimate time remaining - Automatically repeat calibration at user-specified intervals
- (Done)
Save previous scans to the review tab - (Done)
Save an image of the scan when the scan completes - (Done)
User-editable metadata fields - More options for output. Save image size, color scale.
- (Done)
-
Code
- I would like to refactor portions of the code to make the above todo list items easier to implement.
- (Done)
Scans as their own object so multiple scans can be saved and accessed within the GUI. - The calibrator and daq objects follow the same design principle: Make a QObject, move it to a thread, run the object's method to completion, then safely delete the object and thread before allowing the user to create another instance. This could be encapsulated somehow.
- (Done)
A bit hard to add features to the 2D histogram, like axis ticks and labels. Ideally refactor this code to its own class.
- (Done)
- Devices are currently dictionaries. They all only use the global calibrate function, and this works well. However, they may need their own functions at some point, so maybe it would be wise to refactor the device dictionaries into classes.
- (Done)
Review page calculate what the scan settings were. Ideally these would just be saved with the scan object to avoid any problems.
- I would like to refactor portions of the code to make the above todo list items easier to implement.