pymodaq 4.1.0__tar.gz → 4.1.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pymodaq might be problematic. Click here for more details.
- {pymodaq-4.1.0 → pymodaq-4.1.1}/PKG-INFO +1 -1
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/control_modules/daq_move.py +4 -4
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/extensions/daq_scan.py +26 -8
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/post_treatment/load_and_plot.py +44 -21
- pymodaq-4.1.1/src/pymodaq/resources/VERSION +1 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/data.py +7 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/h5modules/data_saving.py +54 -34
- pymodaq-4.1.1/src/pymodaq/utils/h5modules/h5logging.py +85 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/h5modules/module_saving.py +16 -17
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/h5modules/saving.py +7 -21
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/managers/modules_manager.py +2 -2
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/parameter/pymodaq_ptypes/itemselect.py +30 -26
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/plotting/data_viewers/viewerND.py +39 -24
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/scanner/scanners/_1d_scanners.py +2 -1
- pymodaq-4.1.0/src/pymodaq/resources/VERSION +0 -1
- pymodaq-4.1.0/src/pymodaq/utils/h5modules/h5logging.py +0 -128
- {pymodaq-4.1.0 → pymodaq-4.1.1}/.gitignore +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/LICENSE +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/README.rst +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/pyproject.toml +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/control_modules/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/control_modules/daq_move_ui.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/control_modules/daq_viewer.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/control_modules/daq_viewer_ui.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/control_modules/mocks.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/control_modules/move_utility_classes.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/control_modules/utils.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/control_modules/viewer_utility_classes.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/dashboard.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_Client.aliases +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_Client.lvlps +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_Client.lvproj +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_Client.vi +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_Server_1Dgaussian.vi +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_Server_2Dgaussian.vi +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_read_cmd.vi +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_read_float.vi +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_read_int.vi +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_send_data.vi +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_send_int.vi +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_send_scalar.vi +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_send_string.vi +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/examples/Labview_TCP_Client/client_state.ctl +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/examples/Labview_TCP_Client/cmd_types.ctl +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/examples/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/examples/custom_app.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/examples/custom_viewer.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/examples/function_plotter.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/examples/nonlinearscanner.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/examples/parameter_ex.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/examples/preset_MockCamera.xml +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/extensions/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/extensions/console.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/extensions/daq_logger.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/extensions/daq_scan_ui.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/extensions/h5browser.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/extensions/pid/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/extensions/pid/daq_move_PID.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/extensions/pid/pid_controller.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/extensions/pid/utils.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/extensions/utils.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/icon.ico +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/post_treatment/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/post_treatment/daq_analysis/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/post_treatment/daq_measurement/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/post_treatment/daq_measurement/daq_measurement_GUI.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/post_treatment/daq_measurement/daq_measurement_GUI.ui +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/post_treatment/daq_measurement/daq_measurement_main.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/post_treatment/daq_measurement/process_from_QtDesigner_DAQ_Measurement_GUI.bat +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/post_treatment/process_to_scalar.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/1d.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/2d.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/3d.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Add2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Add_Step.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Approve.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Approve_All.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Browse_Dir_Path.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Calculator.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnGroup.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnNum.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnText.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnTime.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnWave.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Close3.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/CollapseAll.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/CollapseAll_32.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ColorPicker.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Contract.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Create.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/DeleteLayer.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/EditOpen.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/EditRedo.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/EditUndo.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Ellipse.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/EllipseFilled.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Error.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ErrorMessage.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Error_16.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Exit.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Expand.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ExpandAll.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ExpandAll_32.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/FFT.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/HLM.ico +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Help.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Help_32.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Histogram.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/LUT_LookUpTable.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/MagnifyingGlass.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/MagnifyingGlass_24.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Marker.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Math.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/MeasurementStudio_32.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Move.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/MoveDown.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/MoveUp.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Multiply.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/NewFile.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/NewLayer.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/New_File.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/New_Folder.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_1D.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_2D.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_File.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_File_32.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_sim.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Options.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Oscilloscope.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Oscilloscope_16.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Pass.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/RGB.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Rectangle.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/RectangleFilled.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Redo.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Refresh.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Refresh2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Refresh_32.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Region.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Rendezvous.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/SELECT.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Save.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAll.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAll_32.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAs.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAs_32.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Save_24.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Save_32.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Search.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/SelectPolygon.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Select_24.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Settings.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snap&Save.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot2_16.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot2_32.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Spreadsheet.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Statistics.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Statistics2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Status.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Subtract.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Vision.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Volts.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Wait2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_1_1.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_in.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_out.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_to_Selection.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/abort.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/advanced2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/autoscale.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/b_icon.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/back.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/bg_icon.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/camera.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/camera_snap.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/cartesian.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/clear2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/clear_ROI.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/close2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/cluster2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/color.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/color2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/continuous.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/data.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/delay.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/download.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/download2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/error2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ethernet.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/exit2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/fan.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/filter2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/g_icon.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/gear2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/go_to.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/go_to_1.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/go_to_2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/grab.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/graph.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/greenLight2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/greenLight2_32.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/green_light.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/grey_icon.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/greyscale.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/help1.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/help1_32.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/home2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/information2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ini.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/integrator.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/joystick.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_green.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_green_16.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_red.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_red_16.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_yellow.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_yellow_16.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/limiter.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/load_ROI.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/meshPlot.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/meter.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/meter2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/meter_32.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/move_contour.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/move_straight_line.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/movie.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/multi_point.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/multiplexer.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/new.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/openArrow.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/openTree.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/oscilloscope2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/oscilloscope3.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/overlay.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/pass2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/pass2_16.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/pass_32.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/pause.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/permute.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/phase.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/play.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/polar.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/pole_zero.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/powerMeter.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/powerSwitch.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/powerSwitch_16.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/print2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/print2_32.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/properties.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/r_icon.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/radiocontrolbutton.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/read2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/red_light.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/remove.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/reset.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/rgb_icon.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/robot.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/rotation2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/run2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/run_all.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/saturation.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/saveTree.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/save_ROI.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/scale_horizontally.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/scale_vertically.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/search2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/select2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/select_all.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/select_all2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/select_none.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/sequence.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/sequence2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/snap.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/sort_ascend.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/spectrumAnalyzer.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/start.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/status_cancelled.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop3.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop_all.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/sum.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/surfacePlot.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/tree.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/updateTree.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/utility2.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/utility_small.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/vector.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/verify.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/video.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/wait.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/waterfallPlot.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/watershed.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/yellow_light.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/zip_file.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/zoomAuto.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/zoomReset.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/QtDesigner_ressources.bat +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/QtDesigner_ressources.qrc +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/QtDesigner_ressources_rc.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/QtDesigner_Ressources/icons.svg +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/config_scan_template.toml +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/config_template.toml +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/preset_default.xml +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/setup_plugin.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/resources/triangulation_data.npy +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/splash.png +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/abstract/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/abstract/logger.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/array_manipulation.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/calibration_camera.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/chrono_timer.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/config.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/conftests.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/daq_utils.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/db/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/db/db_logger/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/db/db_logger/db_logger.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/db/db_logger/db_logger_models.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/enums.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/exceptions.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/factory.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/gui_utils/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/gui_utils/custom_app.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/gui_utils/dock.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/gui_utils/file_io.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/gui_utils/layout.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/gui_utils/list_picker.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/gui_utils/utils.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/gui_utils/widgets/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/gui_utils/widgets/label.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/gui_utils/widgets/lcd.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/gui_utils/widgets/push.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/gui_utils/widgets/qled.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/gui_utils/widgets/spinbox.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/gui_utils/widgets/table.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/gui_utils/widgets/tree_layout.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/gui_utils/widgets/tree_toml.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/h5modules/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/h5modules/backends.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/h5modules/browsing.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/h5modules/exporter.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/h5modules/exporters/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/h5modules/exporters/base.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/h5modules/exporters/flimj.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/h5modules/exporters/hyperspy.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/h5modules/utils.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/logger.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/managers/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/managers/action_manager.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/managers/batchscan_manager.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/managers/overshoot_manager.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/managers/parameter_manager.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/managers/preset_manager.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/managers/preset_manager_utils.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/managers/remote_manager.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/managers/roi_manager.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/math_utils.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/messenger.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/parameter/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/parameter/ioxml.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/parameter/pymodaq_ptypes/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/parameter/pymodaq_ptypes/bool.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/parameter/pymodaq_ptypes/date.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/parameter/pymodaq_ptypes/filedir.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/parameter/pymodaq_ptypes/led.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/parameter/pymodaq_ptypes/list.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/parameter/pymodaq_ptypes/numeric.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/parameter/pymodaq_ptypes/pixmap.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/parameter/pymodaq_ptypes/slide.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/parameter/pymodaq_ptypes/table.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/parameter/pymodaq_ptypes/tableview.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/parameter/pymodaq_ptypes/text.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/parameter/utils.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/plotting/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/plotting/data_viewers/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/plotting/data_viewers/viewer.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/plotting/data_viewers/viewer0D.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/plotting/data_viewers/viewer1D.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/plotting/data_viewers/viewer1Dbasic.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/plotting/data_viewers/viewer2D.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/plotting/data_viewers/viewer2D_basic.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/plotting/gant_chart.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/plotting/image_viewer.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/plotting/items/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/plotting/items/axis_scaled.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/plotting/items/crosshair.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/plotting/items/image.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/plotting/navigator.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/plotting/scan_selector.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/plotting/utils/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/plotting/utils/axes_viewer.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/plotting/utils/filter.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/plotting/utils/lineout.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/plotting/utils/plot_utils.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/plotting/utils/signalND.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/plotting/widgets.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/qvariant.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/scanner/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/scanner/scan_config.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/scanner/scan_factory.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/scanner/scanner.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/scanner/scanners/_2d_scanners.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/scanner/scanners/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/scanner/scanners/sequential.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/scanner/scanners/tabular.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/scanner/utils.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/slicing.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/svg/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/svg/svg_renderer.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/svg/svg_view.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/svg/svg_viewer2D.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/tcp_ip/__init__.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/tcp_ip/mysocket.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/tcp_ip/serializer.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/tcp_ip/tcp_server_client.py +0 -0
- {pymodaq-4.1.0 → pymodaq-4.1.1}/src/pymodaq/utils/units.py +0 -0
|
@@ -172,7 +172,7 @@ class DAQ_Move(ParameterManager, ControlModule):
|
|
|
172
172
|
elif cmd.command == 'rel_value':
|
|
173
173
|
self._relative_value = cmd.attribute
|
|
174
174
|
|
|
175
|
-
def append_data(self,
|
|
175
|
+
def append_data(self, dte: DataToExport = None, where: Union[Node, str] = None):
|
|
176
176
|
"""Appends current DataToExport to an ActuatorEnlargeableSaver
|
|
177
177
|
|
|
178
178
|
Parameters
|
|
@@ -183,9 +183,9 @@ class DAQ_Move(ParameterManager, ControlModule):
|
|
|
183
183
|
--------
|
|
184
184
|
ActuatorEnlargeableSaver
|
|
185
185
|
"""
|
|
186
|
-
if
|
|
187
|
-
|
|
188
|
-
self._add_data_to_saver(
|
|
186
|
+
if dte is None:
|
|
187
|
+
dte = DataToExport(name=self.title, data=[self._current_value])
|
|
188
|
+
self._add_data_to_saver(dte, where=where)
|
|
189
189
|
# todo: test this for logging
|
|
190
190
|
|
|
191
191
|
def _add_data_to_saver(self, data: DataToExport, where=None, **kwargs):
|
|
@@ -70,7 +70,8 @@ class DAQScan(QObject, ParameterManager):
|
|
|
70
70
|
live_data_1D_signal = Signal(list)
|
|
71
71
|
|
|
72
72
|
params = [
|
|
73
|
-
{'title': 'Time Flow:', 'name': 'time_flow', 'type': 'group', 'expanded': False,
|
|
73
|
+
{'title': 'Time Flow:', 'name': 'time_flow', 'type': 'group', 'expanded': False,
|
|
74
|
+
'children': [
|
|
74
75
|
{'title': 'Wait time step (ms)', 'name': 'wait_time', 'type': 'int', 'value': 0,
|
|
75
76
|
'tip': 'Wait time in ms after each step of acquisition (move and grab)'},
|
|
76
77
|
{'title': 'Wait time between (ms)', 'name': 'wait_time_between', 'type': 'int',
|
|
@@ -85,11 +86,13 @@ class DAQScan(QObject, ParameterManager):
|
|
|
85
86
|
{'title': 'Plotting options', 'name': 'plot_options', 'type': 'group', 'children': [
|
|
86
87
|
{'title': 'Get data', 'name': 'plot_probe', 'type': 'bool_push'},
|
|
87
88
|
{'title': 'Group 0D data:', 'name': 'group0D', 'type': 'bool', 'value': True},
|
|
88
|
-
{'title': 'Plot 0Ds:', 'name': 'plot_0d', 'type': 'itemselect'},
|
|
89
|
-
{'title': 'Plot 1Ds:', 'name': 'plot_1d', 'type': 'itemselect'},
|
|
89
|
+
{'title': 'Plot 0Ds:', 'name': 'plot_0d', 'type': 'itemselect', 'checkbox': True},
|
|
90
|
+
{'title': 'Plot 1Ds:', 'name': 'plot_1d', 'type': 'itemselect', 'checkbox': True},
|
|
90
91
|
{'title': 'Prepare Viewers', 'name': 'prepare_viewers', 'type': 'bool_push'},
|
|
91
|
-
{'title': 'Plot at each step?', 'name': 'plot_at_each_step', 'type': 'bool',
|
|
92
|
-
|
|
92
|
+
{'title': 'Plot at each step?', 'name': 'plot_at_each_step', 'type': 'bool',
|
|
93
|
+
'value': True},
|
|
94
|
+
{'title': 'Refresh Plots (ms)', 'name': 'refresh_live', 'type': 'int',
|
|
95
|
+
'value': 1000, 'visible': False},
|
|
93
96
|
]},
|
|
94
97
|
]
|
|
95
98
|
|
|
@@ -679,6 +682,14 @@ class DAQScan(QObject, ParameterManager):
|
|
|
679
682
|
def save_temp_live_data(self, scan_data: ScanDataTemp):
|
|
680
683
|
if scan_data.scan_index == 0:
|
|
681
684
|
nav_axes = self.scanner.get_nav_axes()
|
|
685
|
+
Naverage = self.settings['scan_options', 'scan_average']
|
|
686
|
+
if Naverage > 1:
|
|
687
|
+
for nav_axis in nav_axes:
|
|
688
|
+
nav_axis.index += 1
|
|
689
|
+
nav_axes.append(data_mod.Axis('Average',
|
|
690
|
+
data=np.linspace(0, Naverage - 1, Naverage),
|
|
691
|
+
index=0))
|
|
692
|
+
|
|
682
693
|
self.extended_saver.add_nav_axes(self.h5temp.raw_group, nav_axes)
|
|
683
694
|
|
|
684
695
|
self.extended_saver.add_data(self.h5temp.raw_group, scan_data.data, scan_data.indexes,
|
|
@@ -694,8 +705,14 @@ class DAQScan(QObject, ParameterManager):
|
|
|
694
705
|
average_axis = None
|
|
695
706
|
try:
|
|
696
707
|
self.live_plotter.load_plot_data(group_0D=self.settings['plot_options', 'group0D'],
|
|
697
|
-
average_axis=average_axis,
|
|
698
|
-
|
|
708
|
+
average_axis=average_axis,
|
|
709
|
+
average_index=self.ind_average,
|
|
710
|
+
target_at=self.scanner.positions[self.ind_scan],
|
|
711
|
+
last_step=(self.ind_scan ==
|
|
712
|
+
self.scanner.positions.size - 1 and
|
|
713
|
+
self.ind_average ==
|
|
714
|
+
self.settings[
|
|
715
|
+
'scan_options', 'scan_average'] - 1))
|
|
699
716
|
except Exception as e:
|
|
700
717
|
logger.exception(str(e))
|
|
701
718
|
#################
|
|
@@ -1100,7 +1117,8 @@ class DAQScanAcquisition(QObject):
|
|
|
1100
1117
|
if self.Naverage > 1:
|
|
1101
1118
|
for nav_axis in nav_axes:
|
|
1102
1119
|
nav_axis.index += 1
|
|
1103
|
-
nav_axes.append(data_mod.Axis('Average', data=np.linspace(0, self.Naverage - 1,
|
|
1120
|
+
nav_axes.append(data_mod.Axis('Average', data=np.linspace(0, self.Naverage - 1,
|
|
1121
|
+
self.Naverage),
|
|
1104
1122
|
index=0))
|
|
1105
1123
|
self.module_and_data_saver.add_nav_axes(nav_axes)
|
|
1106
1124
|
|
|
@@ -59,9 +59,12 @@ class LoaderPlotter:
|
|
|
59
59
|
def data(self) -> DataToExport:
|
|
60
60
|
return self._data
|
|
61
61
|
|
|
62
|
-
def load_data(self, filter_dims: List[Union[DataDim, str]] = None,
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
def load_data(self, filter_dims: List[Union[DataDim, str]] = None,
|
|
63
|
+
filter_full_names: List[str] = None, remove_navigation: bool = True,
|
|
64
|
+
group_0D=False, average_axis: int=None, average_index: int = 0,
|
|
65
|
+
last_step=False):
|
|
66
|
+
"""Load Data from the h5 node of the dataloader and apply some filtering/manipulation before
|
|
67
|
+
plotting
|
|
65
68
|
|
|
66
69
|
Parameters
|
|
67
70
|
----------
|
|
@@ -70,14 +73,17 @@ class LoaderPlotter:
|
|
|
70
73
|
filter_full_names: List[str]
|
|
71
74
|
load only data matching these names
|
|
72
75
|
remove_navigation: bool
|
|
73
|
-
if True, make navigation axes as signal axes (means DataND could be plotted on Viewer1D
|
|
74
|
-
Viewer2D by concatenation)
|
|
76
|
+
if True, make navigation axes as signal axes (means DataND could be plotted on Viewer1D
|
|
77
|
+
or Viewer2D by concatenation)
|
|
75
78
|
group_0D: bool
|
|
76
79
|
if True, group all (initial) Data0D into one DataFromPlugins
|
|
77
80
|
average_axis: int or None
|
|
78
|
-
which axis in the data shapes should be interpereted as the average (in general it is 0
|
|
81
|
+
which axis in the data shapes should be interpereted as the average (in general it is 0
|
|
82
|
+
or None)
|
|
79
83
|
average_index: int
|
|
80
84
|
which step in the averaging process are we in.
|
|
85
|
+
last_step: bool
|
|
86
|
+
tells if this is the very last step of the (averaged) scan
|
|
81
87
|
|
|
82
88
|
Returns
|
|
83
89
|
-------
|
|
@@ -88,14 +94,15 @@ class LoaderPlotter:
|
|
|
88
94
|
self.dataloader.load_all('/', self._data)
|
|
89
95
|
|
|
90
96
|
if average_axis is not None:
|
|
91
|
-
self.average_axis(average_axis, average_index)
|
|
97
|
+
self.average_axis(average_axis, average_index, last_step=last_step)
|
|
92
98
|
|
|
93
99
|
if filter_dims is not None:
|
|
94
100
|
filter_dims[:] = [enum_checker(DataDim, dim) for dim in filter_dims]
|
|
95
101
|
self._data.data[:] = [data for data in self._data if data.dim in filter_dims]
|
|
96
102
|
|
|
97
103
|
if filter_full_names is not None:
|
|
98
|
-
self._data.data[:] = [data for data in self._data if data.get_full_name() in
|
|
104
|
+
self._data.data[:] = [data for data in self._data if data.get_full_name() in
|
|
105
|
+
filter_full_names]
|
|
99
106
|
|
|
100
107
|
if group_0D: # 0D initial data
|
|
101
108
|
self.group_0D_data()
|
|
@@ -105,31 +112,39 @@ class LoaderPlotter:
|
|
|
105
112
|
|
|
106
113
|
return self._data
|
|
107
114
|
|
|
108
|
-
def average_axis(self, average_axis, average_index) -> None:
|
|
115
|
+
def average_axis(self, average_axis, average_index, last_step=False) -> None:
|
|
109
116
|
""" Average the data along their average axis
|
|
110
117
|
|
|
111
118
|
Parameters
|
|
112
119
|
----------
|
|
113
120
|
average_axis: int or None
|
|
114
|
-
which axis in the data shapes should be
|
|
121
|
+
which axis in the data shapes should be interpreted as the average
|
|
122
|
+
(in general it is 0 or None)
|
|
115
123
|
average_index: int
|
|
116
124
|
which step in the averaging process are we in.
|
|
125
|
+
last_step: bool
|
|
126
|
+
tells if this is the very last step of the (averaged) scan
|
|
117
127
|
"""
|
|
118
128
|
for ind, data in enumerate(self._data):
|
|
119
129
|
current_data = data.inav[average_index, ...]
|
|
120
|
-
if average_index
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
130
|
+
if average_index > 0:
|
|
131
|
+
if last_step:
|
|
132
|
+
data_to_append = data.inav[0:, ...].mean(axis=average_axis)
|
|
133
|
+
else:
|
|
134
|
+
if average_index == 1:
|
|
135
|
+
data_to_append = data.inav[0, ...]
|
|
136
|
+
else:
|
|
137
|
+
data_to_append = data.inav[0:average_index, ...].mean(axis=average_axis)
|
|
138
|
+
|
|
139
|
+
data_to_append.labels = [f'{label}_averaged' for label in data_to_append.labels]
|
|
140
|
+
current_data.append(data_to_append)
|
|
126
141
|
self._data[ind] = current_data
|
|
127
142
|
|
|
128
143
|
def remove_navigation_axes(self):
|
|
129
144
|
"""Make the navigation axes as signal axes
|
|
130
145
|
|
|
131
|
-
transforms DataND into Data1D or Data2D or error... depending the exact shape of the data
|
|
132
|
-
navigation axes
|
|
146
|
+
transforms DataND into Data1D or Data2D or error... depending the exact shape of the data
|
|
147
|
+
and the number of navigation axes
|
|
133
148
|
"""
|
|
134
149
|
for data in self._data:
|
|
135
150
|
data.nav_indexes = ()
|
|
@@ -164,10 +179,17 @@ class LoaderPlotter:
|
|
|
164
179
|
-----
|
|
165
180
|
load_data
|
|
166
181
|
"""
|
|
167
|
-
|
|
168
|
-
|
|
182
|
+
|
|
183
|
+
target_at = kwargs.pop('target_at') if 'target_at' in kwargs else None
|
|
184
|
+
last_step = kwargs.pop('last_step') if 'last_step' in kwargs else False
|
|
185
|
+
|
|
169
186
|
self.load_data(**kwargs)
|
|
170
187
|
self.show_data(target_at=target_at)
|
|
188
|
+
if (last_step and 'average_index' in kwargs and kwargs['average_index']
|
|
189
|
+
is not None):
|
|
190
|
+
kwargs['last_step'] = last_step
|
|
191
|
+
self.load_data(**kwargs)
|
|
192
|
+
self.show_data(target_at=target_at)
|
|
171
193
|
|
|
172
194
|
def show_data(self, **kwargs):
|
|
173
195
|
"""Send data to their dedicated viewers
|
|
@@ -197,7 +219,8 @@ class LoaderPlotter:
|
|
|
197
219
|
self._viewers = dict(zip(viewers_name, self.dispatcher.viewers))
|
|
198
220
|
self._viewer_docks = dict(zip(viewers_name, self.dispatcher.viewer_docks))
|
|
199
221
|
|
|
200
|
-
def set_data_to_viewers(self, data: DataToExport, temp=False,
|
|
222
|
+
def set_data_to_viewers(self, data: DataToExport, temp=False,
|
|
223
|
+
target_at: Iterable[float] = None):
|
|
201
224
|
"""Process data dimensionality and send appropriate data to their data viewers
|
|
202
225
|
|
|
203
226
|
Parameters
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
version = '4.1.1'
|
|
@@ -1588,6 +1588,13 @@ class DataWithAxes(DataBase):
|
|
|
1588
1588
|
"""convenience property to set attribute from axis_manager"""
|
|
1589
1589
|
self.set_axes_manager(self.shape, axes=axes, nav_indexes=self.nav_indexes)
|
|
1590
1590
|
|
|
1591
|
+
def axes_limits(self, axes_indexes: List[int] = None) -> List[Tuple[float, float]]:
|
|
1592
|
+
"""Get the limits of specified axes (all if axes_indexes is None)"""
|
|
1593
|
+
if axes_indexes is None:
|
|
1594
|
+
return [(axis.min(), axis.max()) for axis in self.axes]
|
|
1595
|
+
else:
|
|
1596
|
+
return [(axis.min(), axis.max()) for axis in self.axes if axis.index in axes_indexes]
|
|
1597
|
+
|
|
1591
1598
|
@property
|
|
1592
1599
|
def sig_indexes(self):
|
|
1593
1600
|
"""convenience property to fetch attribute from axis_manager"""
|
|
@@ -5,7 +5,7 @@ Created the 21/11/2022
|
|
|
5
5
|
@author: Sebastien Weber
|
|
6
6
|
"""
|
|
7
7
|
from time import time
|
|
8
|
-
from typing import Union, List, Tuple
|
|
8
|
+
from typing import Union, List, Tuple, Iterable
|
|
9
9
|
|
|
10
10
|
import numpy as np
|
|
11
11
|
|
|
@@ -308,7 +308,8 @@ class DataSaverLoader(DataManagement):
|
|
|
308
308
|
bkg_nodes.append(node)
|
|
309
309
|
return bkg_nodes
|
|
310
310
|
|
|
311
|
-
def get_data_arrays(self, where: Union[Node, str], with_bkg=False,
|
|
311
|
+
def get_data_arrays(self, where: Union[Node, str], with_bkg=False,
|
|
312
|
+
load_all=False) -> List[np.ndarray]:
|
|
312
313
|
"""
|
|
313
314
|
|
|
314
315
|
Parameters
|
|
@@ -338,15 +339,17 @@ class DataSaverLoader(DataManagement):
|
|
|
338
339
|
getter = self._get_nodes
|
|
339
340
|
|
|
340
341
|
if with_bkg:
|
|
341
|
-
return [np.atleast_1d(np.squeeze(array.read()-bkg.read()))
|
|
342
|
+
return [np.atleast_1d(np.squeeze(array.read()-bkg.read()))
|
|
343
|
+
for array, bkg in zip(getter(where), bkg_nodes)]
|
|
342
344
|
else:
|
|
343
345
|
return [np.atleast_1d(np.squeeze(array.read())) for array in getter(where)]
|
|
344
346
|
|
|
345
347
|
def load_data(self, where, with_bkg=False, load_all=False) -> DataWithAxes:
|
|
346
|
-
"""Return a DataWithAxes object from the Data and Axis Nodes hanging from (or among) a
|
|
348
|
+
"""Return a DataWithAxes object from the Data and Axis Nodes hanging from (or among) a
|
|
349
|
+
given Node
|
|
347
350
|
|
|
348
|
-
Does not include navigation axes stored elsewhere in the h5file. The node path is stored in
|
|
349
|
-
using the attribute path
|
|
351
|
+
Does not include navigation axes stored elsewhere in the h5file. The node path is stored in
|
|
352
|
+
the DatWithAxis using the attribute path
|
|
350
353
|
|
|
351
354
|
Parameters
|
|
352
355
|
----------
|
|
@@ -383,18 +386,21 @@ class DataSaverLoader(DataManagement):
|
|
|
383
386
|
axes = self.get_axes(parent_node)
|
|
384
387
|
|
|
385
388
|
extra_attributes = data_node.attrs.to_dict()
|
|
386
|
-
for name in ['TITLE', 'CLASS', 'VERSION', 'backend', 'source', 'data_dimension',
|
|
387
|
-
'
|
|
389
|
+
for name in ['TITLE', 'CLASS', 'VERSION', 'backend', 'source', 'data_dimension',
|
|
390
|
+
'distribution', 'label', 'origin', 'nav_indexes', 'dtype', 'data_type',
|
|
391
|
+
'subdtype', 'shape', 'size', 'EXTDIM', 'path']:
|
|
388
392
|
extra_attributes.pop(name, None)
|
|
389
393
|
|
|
390
394
|
data = DataWithAxes(data_node.attrs['TITLE'],
|
|
391
|
-
source=data_node.attrs['source'] if 'source' in data_node.attrs
|
|
395
|
+
source=data_node.attrs['source'] if 'source' in data_node.attrs
|
|
396
|
+
else 'raw',
|
|
392
397
|
dim=data_node.attrs['data_dimension'],
|
|
393
398
|
distribution=data_node.attrs['distribution'],
|
|
394
399
|
data=ndarrays,
|
|
395
400
|
labels=[node.attrs['label'] for node in data_nodes],
|
|
396
401
|
origin=data_node.attrs['origin'] if 'origin' in data_node.attrs else '',
|
|
397
|
-
nav_indexes=data_node.attrs['nav_indexes'] if 'nav_indexes' in
|
|
402
|
+
nav_indexes=data_node.attrs['nav_indexes'] if 'nav_indexes' in
|
|
403
|
+
data_node.attrs else (),
|
|
398
404
|
axes=axes,
|
|
399
405
|
path=data_node.path,
|
|
400
406
|
**extra_attributes)
|
|
@@ -575,7 +581,7 @@ class DataExtendedSaver(DataSaverLoader):
|
|
|
575
581
|
where: Union[Node, str]
|
|
576
582
|
the path of a given node or the node itself
|
|
577
583
|
data: DataWithAxes
|
|
578
|
-
indexes:
|
|
584
|
+
indexes: Iterable[int]
|
|
579
585
|
indexes where to save data in the init h5array (should have the same length as extended_shape and with values
|
|
580
586
|
coherent with this shape
|
|
581
587
|
"""
|
|
@@ -591,7 +597,8 @@ class DataExtendedSaver(DataSaverLoader):
|
|
|
591
597
|
for ind_data in range(len(data)):
|
|
592
598
|
#todo check that getting with index is safe...
|
|
593
599
|
array: CARRAY = self.get_node_from_index(where, ind_data)
|
|
594
|
-
array[tuple(indexes)] = data[ind_data]
|
|
600
|
+
array[tuple(indexes)] = data[ind_data]
|
|
601
|
+
# maybe use array.__setitem__(indexes, data[ind_data]) if it's not working
|
|
595
602
|
|
|
596
603
|
|
|
597
604
|
class DataToExportSaver:
|
|
@@ -619,11 +626,12 @@ class DataToExportSaver:
|
|
|
619
626
|
|
|
620
627
|
@staticmethod
|
|
621
628
|
def channel_formatter(ind: int):
|
|
622
|
-
"""All DataWithAxes included in the DataToExport will be saved into a channel group indexed
|
|
623
|
-
formatted as below"""
|
|
629
|
+
"""All DataWithAxes included in the DataToExport will be saved into a channel group indexed
|
|
630
|
+
and formatted as below"""
|
|
624
631
|
return f'CH{ind:02d}'
|
|
625
632
|
|
|
626
|
-
def add_data(self, where: Union[Node, str], data: DataToExport, settings_as_xml='',
|
|
633
|
+
def add_data(self, where: Union[Node, str], data: DataToExport, settings_as_xml='',
|
|
634
|
+
metadata=None):
|
|
627
635
|
"""
|
|
628
636
|
|
|
629
637
|
Parameters
|
|
@@ -642,8 +650,10 @@ class DataToExportSaver:
|
|
|
642
650
|
dims = data.get_dim_presents()
|
|
643
651
|
for dim in dims:
|
|
644
652
|
dim_group = self._h5saver.get_set_group(where, dim)
|
|
645
|
-
for ind, dwa in enumerate(data.get_data_from_dim(dim)):
|
|
646
|
-
|
|
653
|
+
for ind, dwa in enumerate(data.get_data_from_dim(dim)):
|
|
654
|
+
# dwa: DataWithAxes filtered by dim
|
|
655
|
+
dwa_group = self._h5saver.get_set_group(dim_group, self.channel_formatter(ind),
|
|
656
|
+
dwa.name)
|
|
647
657
|
# dwa_group = self._h5saver.add_ch_group(dim_group, dwa.name)
|
|
648
658
|
self._data_saver.add_data(dwa_group, dwa)
|
|
649
659
|
|
|
@@ -651,8 +661,10 @@ class DataToExportSaver:
|
|
|
651
661
|
dims = data.get_dim_presents()
|
|
652
662
|
for dim in dims:
|
|
653
663
|
dim_group = self._h5saver.get_set_group(where, dim)
|
|
654
|
-
for ind, dwa in enumerate(data.get_data_from_dim(dim)):
|
|
655
|
-
|
|
664
|
+
for ind, dwa in enumerate(data.get_data_from_dim(dim)):
|
|
665
|
+
# dwa: DataWithAxes filtered by dim
|
|
666
|
+
dwa_group = self._h5saver.get_set_group(dim_group,
|
|
667
|
+
self.channel_formatter(ind), dwa.name)
|
|
656
668
|
# dwa_group = self._get_node_from_title(dim_group, dwa.name)
|
|
657
669
|
if dwa_group is not None:
|
|
658
670
|
self._bkg_saver.add_data(dwa_group, dwa, save_axes=False)
|
|
@@ -679,8 +691,8 @@ class DataToExportEnlargeableSaver(DataToExportSaver):
|
|
|
679
691
|
self._axis_name = axis_name
|
|
680
692
|
self._axis_units = axis_units
|
|
681
693
|
|
|
682
|
-
def add_data(self, where: Union[Node, str], data: DataToExport,
|
|
683
|
-
settings_as_xml='', metadata=None):
|
|
694
|
+
def add_data(self, where: Union[Node, str], data: DataToExport,
|
|
695
|
+
axis_value: Union[float, np.ndarray], settings_as_xml='', metadata=None):
|
|
684
696
|
"""
|
|
685
697
|
|
|
686
698
|
Parameters
|
|
@@ -712,7 +724,8 @@ class DataToExportEnlargeableSaver(DataToExportSaver):
|
|
|
712
724
|
class DataToExportTimedSaver(DataToExportEnlargeableSaver):
|
|
713
725
|
"""Specialized DataToExportEnlargeableSaver to save data as a function of a time axis
|
|
714
726
|
|
|
715
|
-
Only one element ca be added at a time, the time axis value are enlarged using the data to be
|
|
727
|
+
Only one element ca be added at a time, the time axis value are enlarged using the data to be
|
|
728
|
+
added timestamp
|
|
716
729
|
|
|
717
730
|
Notes
|
|
718
731
|
-----
|
|
@@ -721,8 +734,10 @@ class DataToExportTimedSaver(DataToExportEnlargeableSaver):
|
|
|
721
734
|
def __init__(self, h5saver: H5Saver):
|
|
722
735
|
super().__init__(h5saver, 'time', 's')
|
|
723
736
|
|
|
724
|
-
def add_data(self, where: Union[Node, str], data: DataToExport, settings_as_xml='',
|
|
725
|
-
|
|
737
|
+
def add_data(self, where: Union[Node, str], data: DataToExport, settings_as_xml='',
|
|
738
|
+
metadata=None):
|
|
739
|
+
super().add_data(where, data, axis_value=data.timestamp, settings_as_xml=settings_as_xml,
|
|
740
|
+
metadata=metadata)
|
|
726
741
|
|
|
727
742
|
|
|
728
743
|
class DataToExportExtendedSaver(DataToExportSaver):
|
|
@@ -755,7 +770,7 @@ class DataToExportExtendedSaver(DataToExportSaver):
|
|
|
755
770
|
for axis in axes:
|
|
756
771
|
self._nav_axis_saver.add_axis(nav_group, axis)
|
|
757
772
|
|
|
758
|
-
def add_data(self, where: Union[Node, str], data: DataToExport, indexes:
|
|
773
|
+
def add_data(self, where: Union[Node, str], data: DataToExport, indexes: Iterable[int],
|
|
759
774
|
distribution=DataDistribution['uniform'],
|
|
760
775
|
settings_as_xml='', metadata={}):
|
|
761
776
|
"""
|
|
@@ -766,8 +781,8 @@ class DataToExportExtendedSaver(DataToExportSaver):
|
|
|
766
781
|
the path of a given node or the node itself
|
|
767
782
|
data: DataToExport
|
|
768
783
|
indexes: List[int]
|
|
769
|
-
indexes where to save data in the init h5array (should have the same length as
|
|
770
|
-
coherent with this shape
|
|
784
|
+
indexes where to save data in the init h5array (should have the same length as
|
|
785
|
+
extended_shape and with values coherent with this shape
|
|
771
786
|
settings_as_xml: str
|
|
772
787
|
The settings parameter as an XML string
|
|
773
788
|
metadata: dict
|
|
@@ -777,9 +792,12 @@ class DataToExportExtendedSaver(DataToExportSaver):
|
|
|
777
792
|
dims = data.get_dim_presents()
|
|
778
793
|
for dim in dims:
|
|
779
794
|
dim_group = self._h5saver.get_set_group(where, dim)
|
|
780
|
-
for ind, dwa in enumerate(data.get_data_from_dim(dim)):
|
|
781
|
-
|
|
782
|
-
self.
|
|
795
|
+
for ind, dwa in enumerate(data.get_data_from_dim(dim)):
|
|
796
|
+
# dwa: DataWithAxes filtered by dim
|
|
797
|
+
dwa_group = self._h5saver.get_set_group(dim_group,
|
|
798
|
+
self.channel_formatter(ind), dwa.name)
|
|
799
|
+
self._data_saver.add_data(dwa_group, dwa, indexes=indexes,
|
|
800
|
+
distribution=distribution)
|
|
783
801
|
|
|
784
802
|
|
|
785
803
|
class DataLoader:
|
|
@@ -823,7 +841,8 @@ class DataLoader:
|
|
|
823
841
|
|
|
824
842
|
Returns
|
|
825
843
|
-------
|
|
826
|
-
GROUP: returns the group named SPECIAL_GROUP_NAMES['nav_axes'] holding all NavAxis for
|
|
844
|
+
GROUP: returns the group named SPECIAL_GROUP_NAMES['nav_axes'] holding all NavAxis for
|
|
845
|
+
those data
|
|
827
846
|
|
|
828
847
|
See Also
|
|
829
848
|
--------
|
|
@@ -874,10 +893,11 @@ class DataLoader:
|
|
|
874
893
|
for child in children_dict:
|
|
875
894
|
if isinstance(children_dict[child], GROUP):
|
|
876
895
|
self.load_all(children_dict[child], data, with_bkg=with_bkg)
|
|
877
|
-
elif 'data_type' in children_dict[child].attrs and 'data' in
|
|
896
|
+
elif ('data_type' in children_dict[child].attrs and 'data' in
|
|
897
|
+
children_dict[child].attrs['data_type']):
|
|
878
898
|
|
|
879
|
-
data_list.append(self.load_data(children_dict[child].path,
|
|
899
|
+
data_list.append(self.load_data(children_dict[child].path,
|
|
900
|
+
with_bkg=with_bkg, load_all=True))
|
|
880
901
|
break
|
|
881
902
|
data_tmp = DataToExport(name=where.name, data=data_list)
|
|
882
903
|
data.append(data_tmp)
|
|
883
|
-
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
Created the 15/11/2022
|
|
4
|
+
|
|
5
|
+
@author: Sebastien Weber
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import logging
|
|
9
|
+
import numpy as np
|
|
10
|
+
|
|
11
|
+
from pymodaq.utils.logger import set_logger, get_module_name
|
|
12
|
+
from pymodaq.utils.config import Config
|
|
13
|
+
from pymodaq.utils.managers.modules_manager import ModulesManager
|
|
14
|
+
from pymodaq.utils.h5modules import module_saving, data_saving
|
|
15
|
+
|
|
16
|
+
from pymodaq.utils.abstract.logger import AbstractLogger
|
|
17
|
+
from pymodaq.utils import daq_utils as utils
|
|
18
|
+
from .saving import H5Saver
|
|
19
|
+
from pymodaq.utils.data import DataToExport
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
config = Config()
|
|
23
|
+
|
|
24
|
+
logger = set_logger(get_module_name(__file__))
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class H5LogHandler(logging.StreamHandler):
|
|
28
|
+
def __init__(self, h5saver):
|
|
29
|
+
super().__init__()
|
|
30
|
+
self.h5saver = h5saver
|
|
31
|
+
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
|
32
|
+
self.setFormatter(formatter)
|
|
33
|
+
|
|
34
|
+
def emit(self, record):
|
|
35
|
+
msg = self.format(record)
|
|
36
|
+
self.h5saver.add_log(msg)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class H5Logger(AbstractLogger):
|
|
40
|
+
def __init__(self, modules_manager, *args, **kwargs):
|
|
41
|
+
|
|
42
|
+
self.title = self.__class__.__name__
|
|
43
|
+
|
|
44
|
+
self.modules_manager: ModulesManager = modules_manager
|
|
45
|
+
self.h5saver = H5Saver(*args, save_type='logger', **kwargs)
|
|
46
|
+
|
|
47
|
+
self.module_and_data_saver = module_saving.LoggerSaver(self)
|
|
48
|
+
for det in self.modules_manager.detectors_all:
|
|
49
|
+
det.module_and_data_saver = module_saving.DetectorEnlargeableSaver(det)
|
|
50
|
+
self.module_and_data_saver.h5saver = self.h5saver # will update its h5saver and all submodules's h5saver
|
|
51
|
+
|
|
52
|
+
def close(self):
|
|
53
|
+
self.h5saver.close_file()
|
|
54
|
+
|
|
55
|
+
@property
|
|
56
|
+
def settings_tree(self):
|
|
57
|
+
return self.h5saver.settings_tree
|
|
58
|
+
|
|
59
|
+
@property
|
|
60
|
+
def settings(self):
|
|
61
|
+
return self.h5saver.settings
|
|
62
|
+
|
|
63
|
+
def init_logger(self, settings):
|
|
64
|
+
self.h5saver.init_file(update_h5=True, metadata=dict(settings=settings))
|
|
65
|
+
self.h5saver.flush()
|
|
66
|
+
self.module_and_data_saver.h5saver = self.h5saver
|
|
67
|
+
logger_node = self.module_and_data_saver.get_set_node(new=True)
|
|
68
|
+
return True
|
|
69
|
+
|
|
70
|
+
def get_handler(self):
|
|
71
|
+
return H5LogHandler(self.h5saver)
|
|
72
|
+
|
|
73
|
+
def add_detector(self, name, settings):
|
|
74
|
+
pass
|
|
75
|
+
|
|
76
|
+
def add_actuator(self, name, settings):
|
|
77
|
+
pass
|
|
78
|
+
|
|
79
|
+
def add_data(self, dte: DataToExport):
|
|
80
|
+
self.module_and_data_saver.add_data(dte)
|
|
81
|
+
|
|
82
|
+
self.settings.child('N_saved').setValue(self.settings.child('N_saved').value() + 1)
|
|
83
|
+
|
|
84
|
+
def stop_logger(self):
|
|
85
|
+
self.h5saver.flush()
|
|
@@ -361,7 +361,8 @@ class ScanSaver(ModuleSaver):
|
|
|
361
361
|
for detector in self._module.modules_manager.detectors:
|
|
362
362
|
detector.module_and_data_saver.add_nav_axes(self._module_group, axes)
|
|
363
363
|
|
|
364
|
-
def add_data(self, indexes: Tuple[int] = None,
|
|
364
|
+
def add_data(self, dte: DataToExport = None, indexes: Tuple[int] = None,
|
|
365
|
+
distribution=DataDistribution['uniform']):
|
|
365
366
|
for detector in self._module.modules_manager.detectors:
|
|
366
367
|
try:
|
|
367
368
|
detector.insert_data(indexes, where=self._module_group, distribution=distribution)
|
|
@@ -381,20 +382,18 @@ class LoggerSaver(ScanSaver):
|
|
|
381
382
|
"""
|
|
382
383
|
group_type = GroupType['data_logger']
|
|
383
384
|
|
|
384
|
-
def
|
|
385
|
-
|
|
386
|
-
self._module: H5Logger = module
|
|
387
|
-
self._h5saver = None
|
|
388
|
-
|
|
389
|
-
def add_data(self):
|
|
390
|
-
for detector in self._module.modules_manager.detectors:
|
|
391
|
-
try:
|
|
392
|
-
detector.append_data(data=None, where=self._module_group)
|
|
393
|
-
except Exception as e:
|
|
394
|
-
pass
|
|
385
|
+
def add_data(self, dte: DataToExport):
|
|
386
|
+
"""Add data to it's corresponding control module
|
|
395
387
|
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
388
|
+
The name of the control module is the DataToExport name attribute
|
|
389
|
+
"""
|
|
390
|
+
if dte.name in self._module.modules_manager.detectors_name:
|
|
391
|
+
control_module = self._module.modules_manager.detectors[
|
|
392
|
+
self._module.modules_manager.detectors_name.index(dte.name)]
|
|
393
|
+
elif dte.name in self._module.modules_manager.actuators_name:
|
|
394
|
+
control_module = self._module.modules_manager.actuators[
|
|
395
|
+
self._module.modules_manager.actuators_name.index(dte.name)]
|
|
396
|
+
else:
|
|
397
|
+
return
|
|
398
|
+
|
|
399
|
+
control_module.append_data(dte=dte, where=self._module_group)
|