Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Standalone auto-generated reconstruction GUI (#487)
* pydantic-model initial commit - pydantic model UI widget creation based on CLI model - does no processing, creates yaml files * Updated prototype - partially working - refactored model to GUI implementation - added table to hold processing info, entries purge on completion - using click testing for now in prototyping - creates yaml to GUI - using napari notifications for msgs - testing on Windows * first working alpha version - Multi processing using pydantic models - Implemented a client/server approach for managing jobs queue - Updates each job status based on logs - Implemented Unique ID in CLI to associate Jobs with Process - Tested on Windows with locally modified submitit * possible fix for macOS - import OS specific pydantic imports for ModelMetaclass * use ver specific fix for pydantic instead of OS - pydantic possibly needs to be pinned at 1.10.19 @talonchandler - implemented ver specific import for now * set a timeout limit on job update thread - check for update on the job file, if not - notify user in process table and exit after a 2 min timeout * fixes & enhancements - fixes newly created yaml files to reside besides output zarrs - fixes Model numbers not correctly representing on Build & Run button - fixes "reconstruction algorithm" to show up as dropdown box - fixes "regularization strength" spinbox to accept 5 significant decimal place values - background path now accepts Path and str in model and shows up as directory selector button - each model container setting is now a collapsible item - fixes issues when widget is closed/hidden and then started again - all model(s) validation errors are not collected and presented in notification and highlighted on GUI in one go - each collapsible model entry also highlights if any validation errors are present - added confirm dialog for certain actions - added clear results button - job update thread will exit after a timeout limit and no update detected in job output file * Update setup.cfg - pinning pydantic lib ver to 1.10.19 * use PyQt6 for pyqtSignal use PyQt6 for pyqtSignal * standalone - fixes standalone widget * fixes for BG, etc - fixes BG selection and resetting if Path is invalid - fixes removal of row/stability - using Queued List to counter race conditions - added .zarr data validation check for Input, also used for BG - make uniqueID more unique - break thread update operations when user has cleared the results table - standalone GUI niceties * - fixes for user initiated row delete while processing another check if result row is deleted by user action while processing * major refactor to support positions in datasets - timeout of 5 min per Job - BF button error handling when not available - GUI initiates clearing logs on first run to avoid file exist errors - a single processing run now supports the CLI spawning multiple jobs * - fixes & enhancements - stand-alone GUI cmd - refactored UI based on suggestions - fixes cyclic import for stand-alone GUI - duplicates prev model settings when available - clears Model when changing Input datasets - load model looks for .yml files * checking for RuntimeWarning value * on-the-fly processing - checks if data is being acquired and utilizes polling (every 10s) to gather processing information and submits processing jobs once a minimum dim has been acquired - added a script to simulate acq of .zarr storage - added group-box for sections - added scrolling for tab so that it does not block horizontal resizing * Delete recOrder/tests/widget_tests/test_pydantic_model_widget.py * Delete recOrder/tests/widget_tests/test_simulate_acq.py * ditching v1.main from pydantic and reverting pydantic>=1.10.17 to test workflows * dont initialize server listening in main init of worker class - moved socket listening to sub method from init() and initialize when required for the first time (testing build & deploy) * incorporating discussed GUI changes - GUI changes to reflect sketch as discussed with @talonchandler @ieivanov - Output directory and validation - Open dataset after reconstruction based on user choice - pinning pydantic lib back to 1.10.19 * exit polling loop when closing app before finish * implemented a Stop method for On-The-Fly polling reconstructions implemented a Stop method for On-The-Fly polling reconstructions if required * GUI related - added info icon next to Input Store label when a dataset path is set which displays channel names for convenience, more metadata could be displayed that might be relevant for reconstruction - removed line widget at end of each model container to make scrollbar more apparent * create logs dir if it does not exist - we are only reading the location here but it needs to exist, the CLI is creating the logs based on the path * fixes output path not setting correctly * added pixel size meta to info icon * update output dir in defined models when changed * make on-the-fly entry scrollable and not block resizing * added script to simulate a "fake" recOrder acquisition - script to test on-the-fly reconstruction POC * fix for checking output path existing * fix for checking output path existing * logs folder to be created besides dataset - logs folder will reside next to the output dataset - fixed an issue with reconstructed data showing irrespective of selection * display SLURM related errors if Jobs output txt is empty * top scrollbar for model, container sizing now does not need second vert scrollbar * multi-pos bugfix + multiple enhancements fixes: - multi-pos dataset would be displayed after single pos processing enhancements: - CLI will print Job status when used as cmd line, not for GUI - use single socket connection when multi-pos is spawned by a request - added "rx" field to model-container - minor GUI tweaks * code formatting, minor refactoring, comments * with rx default as 1, catch and report OOM errors
- Loading branch information