pymodaq 4.4.7__tar.gz → 4.4.11__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.4.11/AUTHORS.md +46 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/PKG-INFO +6 -3
- {pymodaq-4.4.7 → pymodaq-4.4.11}/pyproject.toml +2 -1
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/control_modules/daq_move.py +6 -3
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/control_modules/daq_move_ui.py +12 -5
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/control_modules/move_utility_classes.py +9 -5
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/control_modules/utils.py +0 -1
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/extensions/daq_scan.py +26 -4
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/extensions/daq_scan_ui.py +1 -1
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/extensions/pid/daq_move_PID.py +1 -1
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/post_treatment/load_and_plot.py +43 -10
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/QtDesigner_ressources_rc.py +1 -1
- pymodaq-4.4.11/src/pymodaq/resources/VERSION +2 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/config_template.toml +1 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/data.py +58 -11
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/gui_utils/widgets/__init__.py +1 -1
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/gui_utils/widgets/spinbox.py +15 -2
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/h5modules/data_saving.py +23 -5
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/h5modules/module_saving.py +9 -4
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/managers/modules_manager.py +2 -2
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/parameter/pymodaq_ptypes/slide.py +1 -1
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/data_viewers/viewer2D.py +5 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/slicing.py +3 -3
- pymodaq-4.4.7/src/pymodaq/resources/VERSION +0 -2
- {pymodaq-4.4.7 → pymodaq-4.4.11}/.gitignore +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/LICENSE +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/README.rst +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/control_modules/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/control_modules/daq_viewer.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/control_modules/daq_viewer_ui.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/control_modules/mocks.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/control_modules/viewer_utility_classes.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/dashboard.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_Client.aliases +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_Client.lvlps +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_Client.lvproj +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_Client.vi +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_Server_1Dgaussian.vi +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_Server_2Dgaussian.vi +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_read_cmd.vi +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_read_float.vi +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_read_int.vi +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_send_data.vi +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_send_int.vi +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_send_scalar.vi +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_send_string.vi +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/examples/Labview_TCP_Client/client_state.ctl +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/examples/Labview_TCP_Client/cmd_types.ctl +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/examples/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/examples/custom_app.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/examples/custom_viewer.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/examples/function_plotter.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/examples/nonlinearscanner.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/examples/parameter_ex.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/examples/preset_MockCamera.xml +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/examples/qt_less_standalone_module.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/examples/tcp_client.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/extensions/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/extensions/bayesian/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/extensions/bayesian/bayesian_optimisation.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/extensions/bayesian/utils.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/extensions/console.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/extensions/daq_logger.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/extensions/h5browser.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/extensions/pid/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/extensions/pid/actuator_controller.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/extensions/pid/pid_controller.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/extensions/pid/utils.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/extensions/utils.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/icon.ico +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/post_treatment/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/post_treatment/daq_analysis/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/post_treatment/daq_measurement/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/post_treatment/daq_measurement/daq_measurement_GUI.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/post_treatment/daq_measurement/daq_measurement_GUI.ui +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/post_treatment/daq_measurement/daq_measurement_main.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/post_treatment/daq_measurement/process_from_QtDesigner_DAQ_Measurement_GUI.bat +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/post_treatment/process_to_scalar.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/1d.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/2d.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/3d.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Add2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Add_Step.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Approve.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Approve_All.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Browse_Dir_Path.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Calculator.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnGroup.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnNum.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnText.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnTime.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnWave.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Close3.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/CollapseAll.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/CollapseAll_32.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ColorPicker.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Contract.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Create.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/DeleteLayer.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/EditOpen.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/EditRedo.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/EditUndo.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Ellipse.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/EllipseFilled.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Error.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ErrorMessage.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Error_16.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Exit.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Expand.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ExpandAll.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ExpandAll_32.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/FFT.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/HLM.ico +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Help.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Help_32.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Histogram.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/LUT_LookUpTable.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/MagnifyingGlass.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/MagnifyingGlass_24.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Marker.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Math.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/MeasurementStudio_32.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Move.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/MoveDown.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/MoveUp.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Multiply.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/NewFile.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/NewLayer.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/New_File.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/New_Folder.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_1D.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_2D.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_File.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_File_32.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_sim.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Options.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Oscilloscope.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Oscilloscope_16.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Pass.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/RGB.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Rectangle.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/RectangleFilled.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Redo.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Refresh.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Refresh2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Refresh_32.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Region.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Rendezvous.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/SELECT.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Save.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAll.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAll_32.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAs.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAs_32.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Save_24.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Save_32.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Search.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/SelectPolygon.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Select_24.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Settings.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snap&Save.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot2_16.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot2_32.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Spreadsheet.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Statistics.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Statistics2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Status.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Subtract.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Vision.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Volts.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Wait2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_1_1.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_in.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_out.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_to_Selection.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/abort.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/advanced2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/algo.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/autoscale.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/b_icon.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/back.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/bg_icon.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/camera.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/camera_snap.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/cartesian.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/clear2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/clear_ROI.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/close2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/cluster2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/color.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/color2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/continuous.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/data.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/delay.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/download.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/download2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/error2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ethernet.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/exit2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/fan.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/filter2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/g_icon.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/gear2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/go_to.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/go_to_1.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/go_to_2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/grab.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/graph.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/greenLight2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/greenLight2_32.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/green_light.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/grey_icon.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/greyscale.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/help1.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/help1_32.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/home2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/information2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ini.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/input.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/integrator.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/joystick.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_green.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_green_16.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_red.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_red_16.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_yellow.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_yellow_16.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/limiter.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/load_ROI.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/meshPlot.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/meter.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/meter2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/meter_32.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/move_contour.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/move_straight_line.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/movie.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/multi_point.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/multiplexer.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/new.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/openArrow.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/openTree.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/oscilloscope2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/oscilloscope3.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/overlay.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/pass2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/pass2_16.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/pass_32.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/pause.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/permute.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/phase.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/play.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/polar.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/pole_zero.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/powerMeter.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/powerSwitch.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/powerSwitch_16.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/print2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/print2_32.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/properties.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/r_icon.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/radiocontrolbutton.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/random.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/read2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/red_light.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/remove.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/reset.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/rgb_icon.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/robot.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/rotation2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/run2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/run_all.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/saturation.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/saveTree.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/save_ROI.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/scale_horizontally.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/scale_vertically.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/search2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/select2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/select_all.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/select_all2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/select_none.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/sequence.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/sequence2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/snap.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/sort_ascend.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/spectrumAnalyzer.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/start.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/status_cancelled.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop3.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop_all.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/sum.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/surfacePlot.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/target.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/tree.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/updateTree.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/utility2.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/utility_small.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/vector.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/verify.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/video.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/wait.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/waterfallPlot.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/watershed.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/yellow_light.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/zip_file.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/zoomAuto.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/zoomReset.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/QtDesigner_ressources.bat +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/QtDesigner_ressources.qrc +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/credit.rst +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/QtDesigner_Ressources/icons.svg +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/preset_default.xml +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/setup_plugin.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/resources/triangulation_data.npy +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/splash.png +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/abstract/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/abstract/logger.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/array_manipulation.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/calibration_camera.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/chrono_timer.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/config.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/conftests.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/daq_utils.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/db/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/db/db_logger/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/db/db_logger/db_logger.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/db/db_logger/db_logger_models.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/enums.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/exceptions.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/factory.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/gui_utils/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/gui_utils/custom_app.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/gui_utils/dock.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/gui_utils/file_io.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/gui_utils/layout.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/gui_utils/list_picker.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/gui_utils/loader_utils.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/gui_utils/utils.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/gui_utils/widgets/label.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/gui_utils/widgets/lcd.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/gui_utils/widgets/push.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/gui_utils/widgets/qled.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/gui_utils/widgets/table.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/gui_utils/widgets/tree_layout.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/gui_utils/widgets/tree_toml.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/h5modules/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/h5modules/backends.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/h5modules/browsing.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/h5modules/exporter.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/h5modules/exporters/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/h5modules/exporters/base.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/h5modules/exporters/flimj.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/h5modules/exporters/hyperspy.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/h5modules/h5logging.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/h5modules/saving.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/h5modules/utils.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/leco/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/leco/daq_move_LECODirector.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/leco/daq_xDviewer_LECODirector.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/leco/desktop.ini +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/leco/director_utils.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/leco/leco_director.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/leco/pymodaq_listener.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/leco/utils.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/logger.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/managers/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/managers/action_manager.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/managers/batchscan_manager.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/managers/overshoot_manager.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/managers/parameter_manager.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/managers/preset_manager.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/managers/preset_manager_utils.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/managers/remote_manager.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/managers/roi_manager.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/math_utils.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/messenger.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/parameter/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/parameter/ioxml.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/parameter/pymodaq_ptypes/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/parameter/pymodaq_ptypes/bool.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/parameter/pymodaq_ptypes/date.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/parameter/pymodaq_ptypes/filedir.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/parameter/pymodaq_ptypes/itemselect.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/parameter/pymodaq_ptypes/led.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/parameter/pymodaq_ptypes/list.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/parameter/pymodaq_ptypes/numeric.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/parameter/pymodaq_ptypes/pixmap.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/parameter/pymodaq_ptypes/table.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/parameter/pymodaq_ptypes/tableview.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/parameter/pymodaq_ptypes/text.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/parameter/utils.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/data_viewers/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/data_viewers/base.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/data_viewers/viewer.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/data_viewers/viewer0D.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/data_viewers/viewer1D.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/data_viewers/viewer1Dbasic.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/data_viewers/viewer2D_basic.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/data_viewers/viewerND.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/gant_chart.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/image_viewer.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/items/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/items/axis_scaled.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/items/crosshair.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/items/image.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/navigator.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/plotter/plotter.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/plotter/plotters/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/plotter/plotters/matplotlib_plotters.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/plotter/plotters/qt_plotters.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/scan_selector.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/utils/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/utils/axes_viewer.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/utils/filter.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/utils/lineout.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/utils/plot_utils.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/utils/signalND.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/plotting/widgets.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/qvariant.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/scanner/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/scanner/scan_config.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/scanner/scan_factory.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/scanner/scanner.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/scanner/scanners/_1d_scanners.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/scanner/scanners/_2d_scanners.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/scanner/scanners/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/scanner/scanners/sequential.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/scanner/scanners/tabular.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/scanner/utils.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/svg/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/svg/svg_renderer.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/svg/svg_view.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/svg/svg_viewer2D.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/tcp_ip/__init__.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/tcp_ip/mysocket.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/tcp_ip/serializer.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/tcp_ip/tcp_server_client.py +0 -0
- {pymodaq-4.4.7 → pymodaq-4.4.11}/src/pymodaq/utils/units.py +0 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
Here is a list of the main contributors:
|
|
2
|
+
|
|
3
|
+
## Main modules
|
|
4
|
+
***************
|
|
5
|
+
|
|
6
|
+
Functionalities
|
|
7
|
+
---------------
|
|
8
|
+
|
|
9
|
+
* Sébastien Weber, Research Engineer at CEMES/CNRS
|
|
10
|
+
* David Bresteau, Research Engineer at Attolab facility, CEA Saclay
|
|
11
|
+
* Nicolas Tappy, Engineer at Attolight (https://attolight.com/)
|
|
12
|
+
|
|
13
|
+
Cleaning
|
|
14
|
+
--------
|
|
15
|
+
|
|
16
|
+
* Sébastien Weber, Research Engineer at CEMES/CNRS
|
|
17
|
+
* David Trémouilles, Researcher at LAAS/CNRS
|
|
18
|
+
* Loïc GUILMARD, Engineer at CETHIL/CNRS
|
|
19
|
+
|
|
20
|
+
## Plugins
|
|
21
|
+
**********
|
|
22
|
+
|
|
23
|
+
* Sébastien Weber, Research Engineer at CEMES/CNRS
|
|
24
|
+
* Sophie Meuret, Researcher at CEMES/CNRS
|
|
25
|
+
* David Bresteau, Research Engineer at Attolab facility, CEA Saclay
|
|
26
|
+
* and many others...
|
|
27
|
+
|
|
28
|
+
## Extensions
|
|
29
|
+
*************
|
|
30
|
+
|
|
31
|
+
* Sébastien Weber, Research Engineer at CEMES/CNRS
|
|
32
|
+
* Romain Geneaux, Researcher at CEA Saclay contributed to the PyMoDAQ-Femto extension
|
|
33
|
+
|
|
34
|
+
## Documentation
|
|
35
|
+
****************
|
|
36
|
+
|
|
37
|
+
* Sébastien Weber, Research Engineer at CEMES/CNRS
|
|
38
|
+
* Matthieu Cabos helped with this documentation
|
|
39
|
+
* David Bresteau wrote the documentation of the PID extension and the tutorial: :ref:`plugin_development`
|
|
40
|
+
* Loïc GUILMARD, Engineer at CETHIL/CNRS
|
|
41
|
+
|
|
42
|
+
## Testing
|
|
43
|
+
**********
|
|
44
|
+
|
|
45
|
+
* Sébastien Weber, Research Engineer at CEMES/CNRS
|
|
46
|
+
* Pierre Jannot wrote tests with a total of 5000 lines of code tested during his internship at CEMES in 2021
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: pymodaq
|
|
3
|
-
Version: 4.4.
|
|
3
|
+
Version: 4.4.11
|
|
4
4
|
Summary: Modular Data Acquisition with Python
|
|
5
5
|
Project-URL: Homepage, http://pymodaq.cnrs.fr
|
|
6
6
|
Project-URL: Source, https://github.com/PyMoDAQ/PyMoDAQ
|
|
@@ -27,6 +27,8 @@ License: The MIT License (MIT)
|
|
|
27
27
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
28
28
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
29
29
|
THE SOFTWARE.
|
|
30
|
+
License-File: AUTHORS.md
|
|
31
|
+
License-File: LICENSE
|
|
30
32
|
Classifier: Development Status :: 5 - Production/Stable
|
|
31
33
|
Classifier: Environment :: Other Environment
|
|
32
34
|
Classifier: Intended Audience :: Science/Research
|
|
@@ -61,7 +63,8 @@ Requires-Dist: qtpy
|
|
|
61
63
|
Requires-Dist: scipy
|
|
62
64
|
Requires-Dist: setuptools>=60
|
|
63
65
|
Requires-Dist: simple-pid
|
|
64
|
-
Requires-Dist: tables<3.9
|
|
66
|
+
Requires-Dist: tables<3.9; python_version < '3.10'
|
|
67
|
+
Requires-Dist: tables>=3.10; python_version >= '3.10'
|
|
65
68
|
Requires-Dist: toml
|
|
66
69
|
Description-Content-Type: text/x-rst
|
|
67
70
|
|
|
@@ -50,7 +50,8 @@ dependencies = [
|
|
|
50
50
|
"simple_pid",
|
|
51
51
|
"toml",
|
|
52
52
|
"qtconsole",
|
|
53
|
-
"tables
|
|
53
|
+
"tables>=3.10; python_version>=\"3.10\"", # issue with some version of required package blosc2>=2.2.8
|
|
54
|
+
"tables<3.9; python_version<\"3.10\"", # issue with some version of required package blosc2>=2.2.8
|
|
54
55
|
"pyleco>0.3; python_version>=\"3.8\"",
|
|
55
56
|
"bayesian-optimization<2.0.0",
|
|
56
57
|
]
|
|
@@ -616,10 +616,12 @@ class DAQ_Move(ParameterControlModule):
|
|
|
616
616
|
if ('°' in unit or 'degree' in unit) and not '°C' in unit:
|
|
617
617
|
# special cas as pint base unit for angles are radians
|
|
618
618
|
return '°'
|
|
619
|
-
elif 'W' in unit or 'watt' in unit:
|
|
619
|
+
elif 'W' in unit or 'watt' in unit.lower():
|
|
620
620
|
return 'W'
|
|
621
621
|
elif '°C' in unit or 'Celsius' in unit:
|
|
622
622
|
return '°C'
|
|
623
|
+
elif 'V' in unit or 'volt' in unit.lower():
|
|
624
|
+
return 'V'
|
|
623
625
|
else:
|
|
624
626
|
return str(Q_(1, unit).to_base_units().units)
|
|
625
627
|
|
|
@@ -711,7 +713,8 @@ class DAQ_Move_Hardware(QObject):
|
|
|
711
713
|
Uninitialize the stage closing the hardware.
|
|
712
714
|
|
|
713
715
|
"""
|
|
714
|
-
self.hardware
|
|
716
|
+
if self.hardware is not None:
|
|
717
|
+
self.hardware.close()
|
|
715
718
|
|
|
716
719
|
return "Stage uninitialized"
|
|
717
720
|
|
|
@@ -786,7 +789,7 @@ class DAQ_Move_Hardware(QObject):
|
|
|
786
789
|
self.hardware.move_is_done = False
|
|
787
790
|
self.hardware.ispolling = polling
|
|
788
791
|
if self.hardware.data_actuator_type.name == 'float':
|
|
789
|
-
self.hardware.move_abs(position.value())
|
|
792
|
+
self.hardware.move_abs(position.units_as(self.hardware.axis_unit).value()) # convert to plugin controller current axis units
|
|
790
793
|
else:
|
|
791
794
|
position.units = self.hardware.axis_unit # convert to plugin controller current axis units
|
|
792
795
|
self.hardware.move_abs(position)
|
|
@@ -15,7 +15,7 @@ from qtpy.QtWidgets import QHBoxLayout, QVBoxLayout, QGridLayout, QWidget, QTool
|
|
|
15
15
|
|
|
16
16
|
from pymodaq.utils.daq_utils import ThreadCommand
|
|
17
17
|
from pymodaq.utils.gui_utils.custom_app import CustomApp
|
|
18
|
-
from pymodaq.utils.gui_utils.widgets import PushButtonIcon, LabelWithFont, SpinBox, QSpinBox_ro, QLED
|
|
18
|
+
from pymodaq.utils.gui_utils.widgets import PushButtonIcon, LabelWithFont, SpinBox, QSpinBox_ro, QLED, QSpinBoxWithShortcut
|
|
19
19
|
from pymodaq.control_modules.utils import ControlModuleUI
|
|
20
20
|
from pymodaq.utils.gui_utils import DockArea
|
|
21
21
|
from pymodaq.utils.plotting.data_viewers.viewer import ViewerDispatcher
|
|
@@ -199,9 +199,9 @@ class DAQ_Move_UI(ControlModuleUI):
|
|
|
199
199
|
self.main_ui.layout().addWidget(self.toolbar, 0, 0, 1, 2)
|
|
200
200
|
self.main_ui.layout().addWidget(self.move_toolbar, 1, 0, 1, 2)
|
|
201
201
|
|
|
202
|
-
self.abs_value_sb =
|
|
202
|
+
self.abs_value_sb = QSpinBoxWithShortcut(step=0.1, dec=True, siPrefix=config('actuator', 'siprefix'))
|
|
203
203
|
self.abs_value_sb.setStyleSheet("background-color : lightgreen; color: black")
|
|
204
|
-
self.abs_value_sb_2 =
|
|
204
|
+
self.abs_value_sb_2 = QSpinBoxWithShortcut(step=0.1, dec=True, siPrefix=config('actuator', 'siprefix'))
|
|
205
205
|
self.abs_value_sb_2.setStyleSheet("background-color : lightcoral; color: black")
|
|
206
206
|
self.move_toolbar.addWidget(self.abs_value_sb)
|
|
207
207
|
self.move_toolbar.addWidget(self.abs_value_sb_2)
|
|
@@ -227,7 +227,7 @@ class DAQ_Move_UI(ControlModuleUI):
|
|
|
227
227
|
self.control_ui.layout().addWidget(LabelWithFont('Abs. Value'), 0, 0)
|
|
228
228
|
self.find_home_pb = PushButtonIcon('home2', 'Find Home')
|
|
229
229
|
self.control_ui.layout().addWidget(self.find_home_pb, 0, 1)
|
|
230
|
-
self.abs_value_sb_bis =
|
|
230
|
+
self.abs_value_sb_bis = QSpinBoxWithShortcut(step=0.1, dec=True, siPrefix=config('actuator', 'siprefix'))
|
|
231
231
|
self.control_ui.layout().addWidget(self.abs_value_sb_bis, 1, 0)
|
|
232
232
|
self.move_abs_pb = PushButtonIcon('Move', 'Set Abs.',
|
|
233
233
|
tip='Set the value of the actuator to the set absolute value')
|
|
@@ -236,7 +236,7 @@ class DAQ_Move_UI(ControlModuleUI):
|
|
|
236
236
|
self.move_rel_plus_pb = PushButtonIcon('MoveUp', 'Set Rel. (+)')
|
|
237
237
|
self.control_ui.layout().addWidget(self.move_rel_plus_pb, 2, 1)
|
|
238
238
|
|
|
239
|
-
self.rel_value_sb =
|
|
239
|
+
self.rel_value_sb = QSpinBoxWithShortcut(step=0.1, dec=True, siPrefix=config('actuator', 'siprefix'), key_sequences=("Ctrl+Enter","Ctrl+Shift+Enter"),)
|
|
240
240
|
self.control_ui.layout().addWidget(self.rel_value_sb, 3, 0)
|
|
241
241
|
self.move_rel_minus_pb = PushButtonIcon('MoveDown', 'Set Rel. (-)')
|
|
242
242
|
self.control_ui.layout().addWidget(self.move_rel_minus_pb, 3, 1)
|
|
@@ -302,9 +302,16 @@ class DAQ_Move_UI(ControlModuleUI):
|
|
|
302
302
|
self.connect_action('show_config', lambda: self.command_sig.emit(ThreadCommand('show_config', )))
|
|
303
303
|
|
|
304
304
|
self.move_abs_pb.clicked.connect(lambda: self.emit_move_abs(self.abs_value_sb_bis))
|
|
305
|
+
self.abs_value_sb.shortcut["Ctrl+Enter"].activated.connect(lambda: self.emit_move_abs(self.abs_value_sb))
|
|
306
|
+
self.abs_value_sb_2.shortcut["Ctrl+Enter"].activated.connect(lambda: self.emit_move_abs(self.abs_value_sb_2))
|
|
307
|
+
self.abs_value_sb_bis.shortcut["Ctrl+Enter"].activated.connect(lambda: self.emit_move_abs(self.abs_value_sb_bis))
|
|
305
308
|
|
|
306
309
|
self.rel_value_sb.valueChanged.connect(lambda: self.command_sig.emit(
|
|
307
310
|
ThreadCommand('rel_value', self.rel_value_sb.value())))
|
|
311
|
+
|
|
312
|
+
self.rel_value_sb.shortcut["Ctrl+Enter"].activated.connect(lambda: self.emit_move_rel('+'))
|
|
313
|
+
self.rel_value_sb.shortcut["Ctrl+Shift+Enter"].activated.connect(lambda: self.emit_move_rel('-'))
|
|
314
|
+
|
|
308
315
|
self.move_rel_plus_pb.clicked.connect(lambda: self.emit_move_rel('+'))
|
|
309
316
|
self.move_rel_minus_pb.clicked.connect(lambda: self.emit_move_rel('-'))
|
|
310
317
|
|
|
@@ -67,11 +67,11 @@ class DataActuatorType(BaseEnum):
|
|
|
67
67
|
def comon_parameters(epsilon=config('actuator', 'epsilon_default'),
|
|
68
68
|
epsilons=None):
|
|
69
69
|
if epsilons is not None:
|
|
70
|
-
epsilon=epsilons
|
|
70
|
+
epsilon = epsilons
|
|
71
71
|
if isinstance(epsilon, list):
|
|
72
|
-
epsilon=epsilon[0]
|
|
72
|
+
epsilon = epsilon[0]
|
|
73
73
|
elif isinstance(epsilon, dict):
|
|
74
|
-
epsilon=epsilon[list[epsilon.keys()][0]]
|
|
74
|
+
epsilon = epsilon[list[epsilon.keys()][0]]
|
|
75
75
|
|
|
76
76
|
return [{'title': 'Units:', 'name': 'units', 'type': 'str', 'value': '', 'readonly': True},
|
|
77
77
|
{'title': 'Epsilon:', 'name': 'epsilon', 'type': 'float',
|
|
@@ -124,7 +124,7 @@ def comon_parameters_fun(is_multiaxes=False, axes_names=None,
|
|
|
124
124
|
|
|
125
125
|
Parameters
|
|
126
126
|
----------
|
|
127
|
-
is_multiaxes: bool
|
|
127
|
+
is_multiaxes: bool
|
|
128
128
|
If True, display the particular settings to define which axis the controller is driving
|
|
129
129
|
axes_names: deprecated, use axis_names
|
|
130
130
|
axis_names: list of str or dictionnary of string as key and integer as value
|
|
@@ -140,7 +140,7 @@ def comon_parameters_fun(is_multiaxes=False, axes_names=None,
|
|
|
140
140
|
axes_names = ['']
|
|
141
141
|
axis_names = axes_names
|
|
142
142
|
|
|
143
|
-
is_multiaxes = len(axis_names) > 1
|
|
143
|
+
is_multiaxes = len(axis_names) > 1 or is_multiaxes
|
|
144
144
|
if isinstance(axis_names, list):
|
|
145
145
|
if len(axis_names) > 0:
|
|
146
146
|
axis_name = axis_names[0]
|
|
@@ -617,6 +617,10 @@ class DAQ_Move_base(QObject):
|
|
|
617
617
|
else:
|
|
618
618
|
raise NotImplementedError
|
|
619
619
|
|
|
620
|
+
|
|
621
|
+
def close(self):
|
|
622
|
+
raise NotImplementedError
|
|
623
|
+
|
|
620
624
|
def move_abs(self, value: Union[float, DataActuator]):
|
|
621
625
|
if hasattr(self, 'move_Abs'):
|
|
622
626
|
deprecation_msg('move_Abs method in plugins is deprecated, use move_abs', 3)
|
|
@@ -358,7 +358,6 @@ class ParameterControlModule(ParameterManager, ControlModule):
|
|
|
358
358
|
listener_class: Type[ActorListener] = ActorListener
|
|
359
359
|
|
|
360
360
|
def __init__(self, **kwargs):
|
|
361
|
-
QObject.__init__(self)
|
|
362
361
|
ParameterManager.__init__(self, action_list=('save', 'update'))
|
|
363
362
|
ControlModule.__init__(self)
|
|
364
363
|
|
|
@@ -82,7 +82,12 @@ class DAQScan(QObject, ParameterManager):
|
|
|
82
82
|
{'title': 'Timeout (ms)', 'name': 'timeout', 'type': 'int', 'value': 10000},
|
|
83
83
|
]},
|
|
84
84
|
{'title': 'Scan options', 'name': 'scan_options', 'type': 'group', 'children': [
|
|
85
|
-
{'title': 'Naverage:', 'name': 'scan_average', 'type': 'int',
|
|
85
|
+
{'title': 'Naverage:', 'name': 'scan_average', 'type': 'int',
|
|
86
|
+
'value': config('scan', 'Naverage'), 'min': 1},
|
|
87
|
+
{'title': 'Plot on top:', 'name': 'average_on_top', 'type': 'bool',
|
|
88
|
+
'value': config('scan', 'average_on_top'),
|
|
89
|
+
'tip': 'At the second iteration will plot the averaged scan on top (True) of the current one'
|
|
90
|
+
'or in a second panel (False)'},
|
|
86
91
|
]},
|
|
87
92
|
|
|
88
93
|
{'title': 'Plotting options', 'name': 'plot_options', 'type': 'group', 'children': [
|
|
@@ -629,6 +634,10 @@ class DAQScan(QObject, ParameterManager):
|
|
|
629
634
|
viewers_enum.extend([ViewersEnum('Data1D').increase_dim(self.scanner.n_axes)
|
|
630
635
|
for _ in range(len(self.settings['plot_options', 'plot_1d']['selected']))])
|
|
631
636
|
data_names.extend(self.settings['plot_options', 'plot_1d']['selected'][:])
|
|
637
|
+
if not self.settings['scan_options', 'average_on_top']:
|
|
638
|
+
|
|
639
|
+
viewers_enum = viewers_enum + viewers_enum
|
|
640
|
+
data_names = data_names + [f'{data_name}_averaged' for data_name in data_names]
|
|
632
641
|
self.live_plotter.prepare_viewers(viewers_enum, viewers_name=data_names)
|
|
633
642
|
|
|
634
643
|
def update_status(self, txt: str, wait_time=0):
|
|
@@ -668,6 +677,7 @@ class DAQScan(QObject, ParameterManager):
|
|
|
668
677
|
self.ui.set_scan_step_average(status.attribute[1] + 1)
|
|
669
678
|
|
|
670
679
|
elif status.command == "Scan_done":
|
|
680
|
+
|
|
671
681
|
self.modules_manager.reset_signals()
|
|
672
682
|
self.live_timer.stop()
|
|
673
683
|
self.ui.set_scan_done()
|
|
@@ -732,6 +742,7 @@ class DAQScan(QObject, ParameterManager):
|
|
|
732
742
|
self.live_plotter.load_plot_data(group_0D=self.settings['plot_options', 'group0D'],
|
|
733
743
|
average_axis=average_axis,
|
|
734
744
|
average_index=self.ind_average,
|
|
745
|
+
separate_average= not self.settings['scan_options', 'average_on_top'],
|
|
735
746
|
target_at=self.scanner.positions[self.ind_scan],
|
|
736
747
|
last_step=(self.ind_scan ==
|
|
737
748
|
self.scanner.positions.size - 1 and
|
|
@@ -765,6 +776,8 @@ class DAQScan(QObject, ParameterManager):
|
|
|
765
776
|
messagebox(text="There are not enough or too much selected move modules for this scan")
|
|
766
777
|
return False
|
|
767
778
|
|
|
779
|
+
## TODO the stuff about adaptive scans have to be moved into a dedicated extension. M
|
|
780
|
+
## Most similat to the Bayesian one!
|
|
768
781
|
if self.scanner.scan_sub_type == 'Adaptive':
|
|
769
782
|
#todo include this in scanners objects for the adaptive scanners
|
|
770
783
|
if len(self.modules_manager.get_selected_probed_data('0D')) == 0:
|
|
@@ -852,9 +865,15 @@ class DAQScan(QObject, ParameterManager):
|
|
|
852
865
|
self.save_metadata(scan_node, 'scan_info')
|
|
853
866
|
|
|
854
867
|
self._init_live()
|
|
868
|
+
Naverage = self.settings['scan_options', 'scan_average']
|
|
869
|
+
if Naverage > 1:
|
|
870
|
+
scan_shape = [Naverage]
|
|
871
|
+
scan_shape.extend(self.scanner.get_scan_shape())
|
|
872
|
+
else:
|
|
873
|
+
scan_shape = self.scanner.get_scan_shape()
|
|
855
874
|
for det in self.modules_manager.detectors:
|
|
856
875
|
det.module_and_data_saver = (
|
|
857
|
-
module_saving.DetectorExtendedSaver(det,
|
|
876
|
+
module_saving.DetectorExtendedSaver(det, scan_shape))
|
|
858
877
|
self.module_and_data_saver.h5saver = self.h5saver # force the update as the h5saver ill also be set on each detectors
|
|
859
878
|
|
|
860
879
|
# mandatory to deal with multithreads
|
|
@@ -1034,7 +1053,7 @@ class DAQScanAcquisition(QObject):
|
|
|
1034
1053
|
|
|
1035
1054
|
def start_acquisition(self):
|
|
1036
1055
|
try:
|
|
1037
|
-
#todo hoaw to apply newlayout to adaptive mode?
|
|
1056
|
+
#todo hoaw to apply newlayout to adaptive mode? => cannot has to be a new extension
|
|
1038
1057
|
|
|
1039
1058
|
self.modules_manager.connect_actuators()
|
|
1040
1059
|
self.modules_manager.connect_detectors()
|
|
@@ -1106,6 +1125,7 @@ class DAQScanAcquisition(QObject):
|
|
|
1106
1125
|
# daq_scan wait time
|
|
1107
1126
|
QThread.msleep(self.scan_settings.child('time_flow', 'wait_time').value())
|
|
1108
1127
|
|
|
1128
|
+
self.modules_manager.timeout_signal.disconnect()
|
|
1109
1129
|
self.modules_manager.connect_actuators(False)
|
|
1110
1130
|
self.modules_manager.connect_detectors(False)
|
|
1111
1131
|
|
|
@@ -1113,6 +1133,7 @@ class DAQScanAcquisition(QObject):
|
|
|
1113
1133
|
attribute="Acquisition has finished"))
|
|
1114
1134
|
self.status_sig.emit(utils.ThreadCommand("Scan_done"))
|
|
1115
1135
|
|
|
1136
|
+
|
|
1116
1137
|
except Exception as e:
|
|
1117
1138
|
logger.exception(str(e))
|
|
1118
1139
|
|
|
@@ -1148,7 +1169,8 @@ class DAQScanAcquisition(QObject):
|
|
|
1148
1169
|
full_names: list = self.scan_settings['plot_options', 'plot_0d']['selected'][:]
|
|
1149
1170
|
full_names.extend(self.scan_settings['plot_options', 'plot_1d']['selected'][:])
|
|
1150
1171
|
data_temp = det_done_datas.get_data_from_full_names(full_names, deepcopy=False)
|
|
1151
|
-
|
|
1172
|
+
n_nav_axis_selection = 2-len(indexes) + 1 if self.Naverage > 1 else 2-len(indexes)
|
|
1173
|
+
data_temp = data_temp.get_data_with_naxes_lower_than(n_nav_axis_selection) # maximum Data2D included nav indexes
|
|
1152
1174
|
|
|
1153
1175
|
self.scan_data_tmp.emit(ScanDataTemp(self.ind_scan, indexes, data_temp))
|
|
1154
1176
|
|
|
@@ -114,7 +114,7 @@ class DAQScanUI(CustomApp, ViewerDispatcher):
|
|
|
114
114
|
|
|
115
115
|
settings_widget = QtWidgets.QWidget()
|
|
116
116
|
settings_widget.setLayout(QtWidgets.QVBoxLayout())
|
|
117
|
-
settings_widget.setMinimumWidth(220)
|
|
117
|
+
#settings_widget.setMinimumWidth(220)
|
|
118
118
|
|
|
119
119
|
splitter_v_widget.addWidget(self.module_widget)
|
|
120
120
|
splitter_v_widget.addWidget(self.plotting_widget)
|
|
@@ -67,7 +67,7 @@ class LoaderPlotter:
|
|
|
67
67
|
def load_data(self, filter_dims: List[Union[DataDim, str]] = None,
|
|
68
68
|
filter_full_names: List[str] = None, remove_navigation: bool = True,
|
|
69
69
|
group_0D=False, average_axis: int=None, average_index: int = 0,
|
|
70
|
-
last_step=False):
|
|
70
|
+
last_step=False, separate_average=False):
|
|
71
71
|
"""Load Data from the h5 node of the dataloader and apply some filtering/manipulation before
|
|
72
72
|
plotting
|
|
73
73
|
|
|
@@ -89,6 +89,8 @@ class LoaderPlotter:
|
|
|
89
89
|
which step in the averaging process are we in.
|
|
90
90
|
last_step: bool
|
|
91
91
|
tells if this is the very last step of the (averaged) scan
|
|
92
|
+
separate_average: bool
|
|
93
|
+
Tells if the averaged data are to be plotted on the same data viewer panel or another one
|
|
92
94
|
|
|
93
95
|
Returns
|
|
94
96
|
-------
|
|
@@ -99,7 +101,8 @@ class LoaderPlotter:
|
|
|
99
101
|
self.dataloader.load_all('/', self._data)
|
|
100
102
|
|
|
101
103
|
if average_axis is not None:
|
|
102
|
-
self.average_axis(average_axis, average_index, last_step=last_step
|
|
104
|
+
self.average_axis(average_axis, average_index, last_step=last_step,
|
|
105
|
+
separate_average=separate_average)
|
|
103
106
|
|
|
104
107
|
if filter_dims is not None:
|
|
105
108
|
filter_dims[:] = [enum_checker(DataDim, dim) for dim in filter_dims]
|
|
@@ -110,14 +113,15 @@ class LoaderPlotter:
|
|
|
110
113
|
filter_full_names]
|
|
111
114
|
|
|
112
115
|
if group_0D: # 0D initial data
|
|
113
|
-
self.group_0D_data()
|
|
116
|
+
self.group_0D_data(separate_average=separate_average)
|
|
114
117
|
|
|
115
118
|
if remove_navigation:
|
|
116
119
|
self.remove_navigation_axes()
|
|
117
120
|
|
|
118
121
|
return self._data
|
|
119
122
|
|
|
120
|
-
def average_axis(self, average_axis, average_index, last_step=False
|
|
123
|
+
def average_axis(self, average_axis, average_index, last_step=False,
|
|
124
|
+
separate_average=False) -> None:
|
|
121
125
|
""" Average the data along their average axis
|
|
122
126
|
|
|
123
127
|
Parameters
|
|
@@ -129,7 +133,12 @@ class LoaderPlotter:
|
|
|
129
133
|
which step in the averaging process are we in.
|
|
130
134
|
last_step: bool
|
|
131
135
|
tells if this is the very last step of the (averaged) scan
|
|
136
|
+
separate_average: bool
|
|
137
|
+
Tells if the averaged data are to be plotted on the same data viewer panel or another one
|
|
138
|
+
|
|
132
139
|
"""
|
|
140
|
+
if separate_average and average_index > 0:
|
|
141
|
+
averaged_data = DataToExport('Averaged')
|
|
133
142
|
for ind, data in enumerate(self._data):
|
|
134
143
|
current_data = data.inav[average_index, ...]
|
|
135
144
|
if average_index > 0:
|
|
@@ -140,10 +149,16 @@ class LoaderPlotter:
|
|
|
140
149
|
data_to_append = data.inav[0, ...]
|
|
141
150
|
else:
|
|
142
151
|
data_to_append = data.inav[0:average_index, ...].mean(axis=average_axis)
|
|
143
|
-
|
|
152
|
+
data_to_append.name = f'{data_to_append.name}_averaged'
|
|
144
153
|
data_to_append.labels = [f'{label}_averaged' for label in data_to_append.labels]
|
|
145
|
-
|
|
154
|
+
if not (separate_average and average_index > 0):
|
|
155
|
+
current_data.append(data_to_append)
|
|
156
|
+
else:
|
|
157
|
+
averaged_data.append(data_to_append)
|
|
146
158
|
self._data[ind] = current_data
|
|
159
|
+
if separate_average and average_index > 0:
|
|
160
|
+
self._data.append(averaged_data.data)
|
|
161
|
+
|
|
147
162
|
|
|
148
163
|
def remove_navigation_axes(self):
|
|
149
164
|
"""Make the navigation axes as signal axes
|
|
@@ -156,18 +171,27 @@ class LoaderPlotter:
|
|
|
156
171
|
data.transpose() # because usual ND data should be plotted here as 2D with the nav axes as the minor
|
|
157
172
|
# (horizontal)
|
|
158
173
|
|
|
159
|
-
def group_0D_data(self):
|
|
174
|
+
def group_0D_data(self, separate_average=False):
|
|
160
175
|
"""Group in a single DataFromPlugins all data that are initialy Data0D
|
|
161
176
|
|
|
162
177
|
"""
|
|
163
178
|
data = self._data.get_data_from_sig_axes(0)
|
|
164
179
|
if len(data) > 0:
|
|
165
180
|
data0D_arrays = []
|
|
181
|
+
data0D_arrays_averaged = []
|
|
166
182
|
labels = []
|
|
183
|
+
labels_averaged = []
|
|
167
184
|
for dwa in data:
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
185
|
+
if 'averaged' in dwa.name and separate_average:
|
|
186
|
+
data0D_arrays_averaged.extend(dwa.data)
|
|
187
|
+
labels_averaged.extend([f'{dwa.get_full_name()}/{label}' for label in dwa.labels])
|
|
188
|
+
self._data.remove(dwa)
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
else:
|
|
192
|
+
data0D_arrays.extend(dwa.data)
|
|
193
|
+
labels.extend([f'{dwa.get_full_name()}/{label}' for label in dwa.labels])
|
|
194
|
+
self._data.remove(dwa)
|
|
171
195
|
|
|
172
196
|
data0D = DataFromPlugins(self.grouped_data0D_fullname.split('/')[1],
|
|
173
197
|
data=data0D_arrays, labels=labels,
|
|
@@ -176,6 +200,15 @@ class LoaderPlotter:
|
|
|
176
200
|
axes=dwa.axes, nav_indexes=dwa.nav_indexes,
|
|
177
201
|
)
|
|
178
202
|
self._data.append(data0D)
|
|
203
|
+
if 'averaged' in dwa.name and separate_average:
|
|
204
|
+
data0D_averaged = DataFromPlugins(
|
|
205
|
+
f"{self.grouped_data0D_fullname.split('/')[1]}_averaged",
|
|
206
|
+
data=data0D_arrays_averaged, labels=labels_averaged,
|
|
207
|
+
dim='DataND',
|
|
208
|
+
origin=self.grouped_data0D_fullname.split('/')[0],
|
|
209
|
+
axes=dwa.axes, nav_indexes=dwa.nav_indexes,
|
|
210
|
+
)
|
|
211
|
+
self._data.append(data0D_averaged)
|
|
179
212
|
|
|
180
213
|
def load_plot_data(self, **kwargs):
|
|
181
214
|
"""Load and plot all data from the current H5Saver
|
|
@@ -20,7 +20,6 @@ from time import time
|
|
|
20
20
|
import copy
|
|
21
21
|
import pint
|
|
22
22
|
from multipledispatch import dispatch
|
|
23
|
-
import pymodaq
|
|
24
23
|
from pymodaq.utils.enums import BaseEnum, enum_checker
|
|
25
24
|
from pymodaq.utils.messenger import deprecation_msg
|
|
26
25
|
from pymodaq.utils.daq_utils import find_objects_in_list_from_attr_name_val
|
|
@@ -157,6 +156,24 @@ class DataDistribution(BaseEnum):
|
|
|
157
156
|
spread = 1
|
|
158
157
|
|
|
159
158
|
|
|
159
|
+
def _compute_slices_from_axis(axis: Axis, _slice, *ignored, is_index=True, **ignored_also):
|
|
160
|
+
if not is_index:
|
|
161
|
+
if isinstance(_slice, numbers.Number):
|
|
162
|
+
if not is_index:
|
|
163
|
+
_slice = axis.find_index(_slice)
|
|
164
|
+
elif _slice is Ellipsis:
|
|
165
|
+
return _slice
|
|
166
|
+
elif isinstance(_slice, slice):
|
|
167
|
+
if not (_slice.start is None and
|
|
168
|
+
_slice.stop is None and _slice.step is None):
|
|
169
|
+
start = axis.find_index(
|
|
170
|
+
_slice.start if _slice.start is not None else axis.get_data()[0])
|
|
171
|
+
stop = axis.find_index(
|
|
172
|
+
_slice.stop if _slice.stop is not None else axis.get_data()[-1])
|
|
173
|
+
_slice = slice(start, stop)
|
|
174
|
+
return _slice
|
|
175
|
+
|
|
176
|
+
|
|
160
177
|
class Axis:
|
|
161
178
|
"""Object holding info and data about physical axis of some data
|
|
162
179
|
|
|
@@ -367,8 +384,9 @@ class Axis:
|
|
|
367
384
|
def __len__(self):
|
|
368
385
|
return self.size
|
|
369
386
|
|
|
370
|
-
def _compute_slices(self,
|
|
371
|
-
|
|
387
|
+
def _compute_slices(self, _slice, *ignored, is_index=True, **ignored_also):
|
|
388
|
+
_slice = _compute_slices_from_axis(self, _slice, is_index=is_index)
|
|
389
|
+
return _slice, _slice
|
|
372
390
|
|
|
373
391
|
def _slicer(self, _slice, *ignored, **ignored_also):
|
|
374
392
|
ax: Axis = copy.deepcopy(self)
|
|
@@ -2188,11 +2206,22 @@ class DataWithAxes(DataBase):
|
|
|
2188
2206
|
axes.append(ax)
|
|
2189
2207
|
self.axes = axes
|
|
2190
2208
|
|
|
2191
|
-
def _compute_slices(self, slices, is_navigation=True):
|
|
2209
|
+
def _compute_slices(self, slices, is_navigation=True, is_index=True):
|
|
2192
2210
|
"""Compute the total slice to apply to the data
|
|
2193
2211
|
|
|
2194
2212
|
Filling in Ellipsis when no slicing should be done
|
|
2213
|
+
Parameters
|
|
2214
|
+
----------
|
|
2215
|
+
slices: List of slice
|
|
2216
|
+
is_navigation: bool
|
|
2217
|
+
is_index: bool
|
|
2218
|
+
if False, the slice are on the values of the underlying axes
|
|
2219
|
+
Returns
|
|
2220
|
+
-------
|
|
2221
|
+
list(slice): the computed slices as index (eventually for all axes)
|
|
2222
|
+
list(slice): a version as index of the input argument
|
|
2195
2223
|
"""
|
|
2224
|
+
_slices_as_index = []
|
|
2196
2225
|
if isinstance(slices, numbers.Number) or isinstance(slices, slice):
|
|
2197
2226
|
slices = [slices]
|
|
2198
2227
|
if is_navigation:
|
|
@@ -2203,13 +2232,29 @@ class DataWithAxes(DataBase):
|
|
|
2203
2232
|
slices = list(slices)
|
|
2204
2233
|
for ind in range(len(self.shape)):
|
|
2205
2234
|
if ind in indexes:
|
|
2206
|
-
|
|
2235
|
+
_slice = slices.pop(0)
|
|
2236
|
+
if not is_index:
|
|
2237
|
+
axis = self.get_axis_from_index(ind)[0]
|
|
2238
|
+
_slice = _compute_slices_from_axis(axis, _slice, is_index=is_index)
|
|
2239
|
+
_slices_as_index.append(_slice)
|
|
2240
|
+
total_slices.append(_slice)
|
|
2207
2241
|
elif len(total_slices) == 0:
|
|
2208
2242
|
total_slices.append(Ellipsis)
|
|
2209
2243
|
elif not (Ellipsis in total_slices and total_slices[-1] is Ellipsis):
|
|
2210
2244
|
total_slices.append(slice(None))
|
|
2245
|
+
if len(slices) == 0 and self.distribution == DataDistribution.uniform and is_navigation:
|
|
2246
|
+
if total_slices[-1] is Ellipsis:
|
|
2247
|
+
for ind in range(len(total_slices), len(indexes)):
|
|
2248
|
+
_slices_as_index.append(slice(None))
|
|
2249
|
+
else:
|
|
2250
|
+
for ind in range(len(total_slices), len(indexes)):
|
|
2251
|
+
_slices_as_index.insert(0, Ellipsis)
|
|
2252
|
+
for ind in range(len(indexes), len(self.shape)):
|
|
2253
|
+
total_slices.append(slice(None))
|
|
2254
|
+
|
|
2255
|
+
break
|
|
2211
2256
|
total_slices = tuple(total_slices)
|
|
2212
|
-
return total_slices
|
|
2257
|
+
return total_slices, _slices_as_index
|
|
2213
2258
|
|
|
2214
2259
|
def check_squeeze(self, total_slices: List[slice], is_navigation: bool):
|
|
2215
2260
|
|
|
@@ -2221,7 +2266,7 @@ class DataWithAxes(DataBase):
|
|
|
2221
2266
|
do_squeeze = False
|
|
2222
2267
|
return do_squeeze
|
|
2223
2268
|
|
|
2224
|
-
def _slicer(self, slices, is_navigation=True):
|
|
2269
|
+
def _slicer(self, slices, is_navigation=True, is_index=True):
|
|
2225
2270
|
"""Apply a given slice to the data either navigation or signal dimension
|
|
2226
2271
|
|
|
2227
2272
|
Parameters
|
|
@@ -2230,6 +2275,8 @@ class DataWithAxes(DataBase):
|
|
|
2230
2275
|
the slices to apply to the data
|
|
2231
2276
|
is_navigation: bool
|
|
2232
2277
|
if True apply the slices to the navigation dimension else to the signal ones
|
|
2278
|
+
is_index: bool
|
|
2279
|
+
if True the slices are indexes otherwise the slices are axes values to be indexed first
|
|
2233
2280
|
|
|
2234
2281
|
Returns
|
|
2235
2282
|
-------
|
|
@@ -2237,10 +2284,10 @@ class DataWithAxes(DataBase):
|
|
|
2237
2284
|
Object of the same type as the initial data, derived from DataWithAxes. But with lower
|
|
2238
2285
|
data size due to the slicing and with eventually less axes.
|
|
2239
2286
|
"""
|
|
2240
|
-
|
|
2241
2287
|
if isinstance(slices, numbers.Number) or isinstance(slices, slice):
|
|
2242
2288
|
slices = [slices]
|
|
2243
|
-
|
|
2289
|
+
|
|
2290
|
+
total_slices, slices = self._compute_slices(slices, is_navigation, is_index=is_index)
|
|
2244
2291
|
|
|
2245
2292
|
do_squeeze = self.check_squeeze(total_slices, is_navigation)
|
|
2246
2293
|
new_arrays_data = [squeeze(dat[total_slices], do_squeeze) for dat in self.data]
|
|
@@ -2290,11 +2337,11 @@ class DataWithAxes(DataBase):
|
|
|
2290
2337
|
if len(nav_indexes) != 0:
|
|
2291
2338
|
distribution = self.distribution
|
|
2292
2339
|
else:
|
|
2293
|
-
distribution = DataDistribution
|
|
2340
|
+
distribution = DataDistribution.uniform
|
|
2294
2341
|
|
|
2295
2342
|
data = DataWithAxes(self.name, data=new_arrays_data, nav_indexes=tuple(nav_indexes),
|
|
2296
2343
|
axes=axes,
|
|
2297
|
-
source=
|
|
2344
|
+
source=DataSource.calculated, origin=self.origin,
|
|
2298
2345
|
labels=self.labels[:],
|
|
2299
2346
|
distribution=distribution)
|
|
2300
2347
|
return data
|