supported scans for Scan GUI
What Scans Are Suitable for GUI?
Currently, there are approximately 26 scans loaded into the scans GUI using the following code:
msg = self.client.producer.get(MessageEndpoints.available_scans())
self.available_scans = msgpack.loads(msg)
The question is which scans are appropriate for GUI rendering. Based on an examination of the configurations for most scans, the easiest to render and use are those with the 'ScanBase' base class, such as 'line_scan' or 'grid_scan'.
However, if a filter based on 'ScanBase' is implemented, there are still some scans, such as 'round_scan_fly' or 'lamina_fermat_scan', that lack a complete signature, and their GUI generation fails.
For 'FlyScanBase' types like 'oft_scan', the kwargs are also undefined in the signature.
All scan classes and scan base classes
scan_base_classes = ['RequestBase', 'FlyScanBase', 'ScanComponent', 'ScanBase']
scan_class = ['OTFScan', 'DeviceRPC', 'LamNIMoveToScanCenter', 'OwisGrid', 'MonitorScan', 'TimeScan', 'CloseInteractiveScan', 'Acquire', 'OpenInteractiveScan', 'CloseScanGroup', 'ContLineScan', 'RoundROIScan', 'SgalilGrid', 'LamNIFermatScan', 'AddInteractiveScanPoint', 'UpdatedMove', 'Move', 'RoundScan', 'HystScan', 'ListScan', 'FermatSpiralScan', 'LineScan', 'Scan', 'CloseScanDef', 'RoundScanFlySim', 'OpenScanDef']
Discussion
- Which scan bases should be included in the GUI?
- Are there incomplete signatures for some scans, or am I simply missing something?
- Do all scans need to have a robust and well-defined signature similar to the simple scans like 'line_scan' and 'grid_scan' or I should make more robust logic in the GUI generator?
Current plan
A class argument will be introduced for a list of allowed scans to restrict the scan selection until the scan filtering logic is finalized.