microeye 2.3.6__tar.gz → 2.3.7__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.
- {microeye-2.3.6/src/microeye.egg-info → microeye-2.3.7}/PKG-INFO +5 -5
- {microeye-2.3.6 → microeye-2.3.7}/README.md +4 -4
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/__init__.py +0 -5
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/_version.py +1 -1
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/cams/camera_options.py +2 -3
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/cams/camera_panel.py +32 -21
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/cams/line_profiler.py +1 -2
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/cams/shortcuts.py +2 -4
- microeye-2.3.7/src/microEye/hardware/cams/vimba/__init__.py +1 -0
- microeye-2.3.7/src/microEye/hardware/lasers/__init__.py +1 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/lasers/io_matchbox.py +112 -75
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/lasers/io_single_laser.py +84 -48
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/lasers/laser_relay.py +6 -8
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/mieye/acquisition_manager.py +13 -4
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/mieye/devices_manager.py +22 -7
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/mieye/miEye.py +20 -14
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/misc/reglo.py +1 -1
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/misc/temp.py +1 -1
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/protocols/actions.py +4 -5
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/protocols/actions_items.py +1 -1
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/protocols/designer.py +0 -1
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/protocols/scene_manager.py +0 -1
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/protocols/serialization.py +2 -4
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/pycromanager/core.py +7 -1
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/pycromanager/devices.py +0 -8
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/pycromanager/headless.py +0 -1
- microeye-2.3.7/src/microEye/hardware/stages/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/stages/elliptec/devicePort.py +1 -2
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/stages/elliptec/devicesView.py +1 -1
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/stages/kinesis/kdc101/enums.py +1 -1
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/stages/kinesis/kdc101/factory.py +2 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/stages/kinesis/kdc101/kdc101.py +1 -2
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/stages/kinesis/kinesis.py +3 -8
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/stages/piezo_concept.py +1 -7
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/stages/stabilizer.py +200 -194
- microeye-2.3.7/src/microEye/icons/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/launcher.py +1 -4
- microeye-2.3.7/src/microEye/tools/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/utils/metadata.py +6 -1
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/utils/metadata_tree.py +393 -220
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/utils/thread_worker.py +0 -2
- {microeye-2.3.6 → microeye-2.3.7/src/microeye.egg-info}/PKG-INFO +5 -5
- microeye-2.3.6/src/microEye/analysis/__init__.py +0 -1
- microeye-2.3.6/src/microEye/hardware/__init__.py +0 -3
- microeye-2.3.6/src/microEye/hardware/lasers/__init__.py +0 -13
- microeye-2.3.6/src/microEye/hardware/protocols/__init__.py +0 -2
- microeye-2.3.6/src/microEye/hardware/stages/__init__.py +0 -13
- {microeye-2.3.6 → microeye-2.3.7}/LICENSE +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/MANIFEST.in +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/pyproject.toml +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/setup.cfg +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/setup.py +0 -0
- {microeye-2.3.6/src/microEye/analysis/fitting → microeye-2.3.7/src/microEye/analysis}/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/checklist_dialog.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/cmosMaps.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/filters/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/filters/base.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/filters/spatial.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/filters/temporal.py +0 -0
- {microeye-2.3.6/src/microEye/analysis/tools → microeye-2.3.7/src/microEye/analysis/fitting}/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/fit.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/nena.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/phasor_fit.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/processing.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/psf/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/psf/extract.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/psf/rubost_mean.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/psf/spline.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/psf/stats/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/psf/stats/core.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/psf/stats/curve_fit.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/psf/stats/io.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/psf/stats/slope_fit.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/psf/temp.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/psf/test.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/pyfit3Dcspline/CPU/CPUfunctions.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/pyfit3Dcspline/CPU/CPUmleFit_LM.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/pyfit3Dcspline/CPU/CPUsplineLib.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/pyfit3Dcspline/CPU/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/pyfit3Dcspline/GPU/GPUfunctions.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/pyfit3Dcspline/GPU/GPUmleFit_LM_EMCCD.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/pyfit3Dcspline/GPU/GPUmleFit_LM_sCMOS.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/pyfit3Dcspline/GPU/GPUsplineLib.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/pyfit3Dcspline/GPU/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/pyfit3Dcspline/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/pyfit3Dcspline/constants.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/pyfit3Dcspline/mainfunctions.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/results.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/results_stats.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/fitting/tardis.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/multi_viewer.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/processing/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/processing/frc.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/rendering/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/rendering/base.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/rendering/cloud.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/rendering/core.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/rendering/volumetric.py +0 -0
- {microeye-2.3.6/src/microEye/hardware/misc → microeye-2.3.7/src/microEye/analysis/tools}/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/tools/kymograms.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/tools/roi_selectors.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/utils/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/utils/coordinates.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/utils/images.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/utils/windows.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/viewer/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/viewer/image_options_widget.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/viewer/images.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/viewer/layers_widget.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/viewer/localizations.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/viewer/psf.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/analysis/viewer/volume.py +0 -0
- {microeye-2.3.6/src/microEye/hardware/cams/dummy → microeye-2.3.7/src/microEye/hardware}/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/cams/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/cams/camera_calibration.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/cams/camera_list.py +0 -0
- {microeye-2.3.6/src/microEye/hardware/cams/linescan → microeye-2.3.7/src/microEye/hardware/cams/dummy}/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/cams/dummy/dummy_panel.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/cams/jobs.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/cams/linescan/IR_Cam.py +0 -0
- {microeye-2.3.6/src/microEye/hardware/cams/thorlabs → microeye-2.3.7/src/microEye/hardware/cams/linescan}/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/cams/micam.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/cams/pco/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/cams/pco/enums.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/cams/pco/pco_cam.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/cams/pco/pco_panel.py +0 -0
- {microeye-2.3.6/src/microEye/hardware/cams/ueye → microeye-2.3.7/src/microEye/hardware/cams/thorlabs}/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/cams/thorlabs/thorlabs.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/cams/thorlabs/thorlabs_panel.py +0 -0
- {microeye-2.3.6/src/microEye/hardware/cams/vimba → microeye-2.3.7/src/microEye/hardware/cams/ueye}/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/cams/ueye/ueye_camera.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/cams/ueye/ueye_panel.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/cams/vimba/vimba_cam.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/cams/vimba/vimba_panel.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/device.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/lasers/io_params.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/mieye/__init__.py +0 -0
- {microeye-2.3.6/src/microEye/icons → microeye-2.3.7/src/microEye/hardware/misc}/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/misc/acquisition_view.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/port_config.py +0 -0
- {microeye-2.3.6/src/microEye/tools → microeye-2.3.7/src/microEye/hardware/protocols}/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/pycromanager/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/pycromanager/enums.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/pycromanager/utils.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/pycromanager/widgets/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/pycromanager/widgets/bridges.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/pycromanager/widgets/headless_manager.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/pycromanager/widgets/headless_options.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/pycromanager/widgets/pycro_panel.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/stages/elliptec/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/stages/elliptec/baseDevice.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/stages/elliptec/device.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/stages/elliptec/deviceID.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/stages/elliptec/deviceStatus.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/stages/elliptec/ellDevices.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/stages/elliptec/messageUpdater.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/stages/elliptec/motorInfo.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/stages/elliptec/stage.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/stages/elliptec/test.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/stages/kinesis/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/stages/kinesis/kdc101/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/stages/stage.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/widgets/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/widgets/controller.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/widgets/devices.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/widgets/focusWidget.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/widgets/qlist_slider.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/hardware/widgets/scan_acquisition.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/icons/1024.png +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/icons/128.png +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/icons/16.png +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/icons/24.png +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/icons/256.png +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/icons/32.png +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/icons/48.png +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/icons/512.png +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/icons/64.png +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/icons/close.svg +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/icons/mieye.png +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/icons/min.svg +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/icons/viewer.png +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/qt.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/tools/microscopy.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/utils/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/utils/display.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/utils/enum_encoder.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/utils/expandable_groupbox.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/utils/gui_helper.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/utils/hid_utils/__init__.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/utils/hid_utils/controller.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/utils/hid_utils/device.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/utils/hid_utils/enums.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/utils/hid_utils/utils.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/utils/labelled_slider.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/utils/micro_launcher.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/utils/parameter_tree.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/utils/pyscripting.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/utils/retry_exec.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/utils/start_gui.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microEye/utils/uImage.py +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microeye.egg-info/SOURCES.txt +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microeye.egg-info/dependency_links.txt +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microeye.egg-info/entry_points.txt +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microeye.egg-info/requires.txt +0 -0
- {microeye-2.3.6 → microeye-2.3.7}/src/microeye.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: microeye
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.7
|
|
4
4
|
Summary: A python toolkit for fluorescence microscopy that features hardware control, data analysis and vizualization for super-resolution single-molecule localization microscopy and single-partical tracking.
|
|
5
5
|
Home-page: https://github.com/samhitech/microEye
|
|
6
6
|
Author: Mohammad Nour Alsamsam
|
|
@@ -95,10 +95,10 @@ This toolkit is compatible with the [hardware](#hardware) used in our microscope
|
|
|
95
95
|

|
|
96
96
|
|
|
97
97
|
```bash
|
|
98
|
-
__ ____ ____ ___ ____
|
|
99
|
-
/ |/ (_)__________ / __/_ _____ _ __|_ | |_ /
|
|
100
|
-
/ /|_/ / / __/ __/ _ \/ _// // / -_) | |/ / __/_ _/_ <_/
|
|
101
|
-
/_/ /_/_/\__/_/ \___/___/\_, /\__/ |___/____(_)____(_)
|
|
98
|
+
__ ____ ____ ___ ____ ____
|
|
99
|
+
/ |/ (_)__________ / __/_ _____ _ __|_ | |_ //_ /
|
|
100
|
+
/ /|_/ / / __/ __/ _ \/ _// // / -_) | |/ / __/_ _/_ <_ / /
|
|
101
|
+
/_/ /_/_/\__/_/ \___/___/\_, /\__/ |___/____(_)____(_)_/
|
|
102
102
|
/___/
|
|
103
103
|
```
|
|
104
104
|
|
|
@@ -31,10 +31,10 @@ This toolkit is compatible with the [hardware](#hardware) used in our microscope
|
|
|
31
31
|

|
|
32
32
|
|
|
33
33
|
```bash
|
|
34
|
-
__ ____ ____ ___ ____
|
|
35
|
-
/ |/ (_)__________ / __/_ _____ _ __|_ | |_ /
|
|
36
|
-
/ /|_/ / / __/ __/ _ \/ _// // / -_) | |/ / __/_ _/_ <_/
|
|
37
|
-
/_/ /_/_/\__/_/ \___/___/\_, /\__/ |___/____(_)____(_)
|
|
34
|
+
__ ____ ____ ___ ____ ____
|
|
35
|
+
/ |/ (_)__________ / __/_ _____ _ __|_ | |_ //_ /
|
|
36
|
+
/ /|_/ / / __/ __/ _ \/ _// // / -_) | |/ / __/_ _/_ <_ / /
|
|
37
|
+
/_/ /_/_/\__/_/ \___/___/\_, /\__/ |___/____(_)____(_)_/
|
|
38
38
|
/___/
|
|
39
39
|
```
|
|
40
40
|
|
|
@@ -40,8 +40,3 @@ def getArgs():
|
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
ARGS = getArgs()
|
|
43
|
-
|
|
44
|
-
import microEye.analysis.fitting.pyfit3Dcspline as pyfit3Dcspline # noqa: E402
|
|
45
|
-
from microEye.analysis import multi_viewer # noqa: E402
|
|
46
|
-
from microEye.hardware import miEye_module # noqa: E402
|
|
47
|
-
from microEye.qt import * # noqa: I001, E402
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
version_info = (2, 3,
|
|
1
|
+
version_info = (2, 3, 7)
|
|
2
2
|
__version__ = '.'.join(map(str, version_info))
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import os
|
|
2
2
|
import sys
|
|
3
3
|
from enum import Enum
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Optional
|
|
5
5
|
|
|
6
6
|
from pyqtgraph.parametertree import Parameter
|
|
7
|
-
from pyqtgraph.parametertree.parameterTypes import GroupParameter
|
|
8
7
|
|
|
9
8
|
from microEye.qt import QApplication, QtWidgets, Signal
|
|
10
9
|
from microEye.utils.parameter_tree import Tree
|
|
@@ -729,7 +728,7 @@ class CameraOptions(Tree):
|
|
|
729
728
|
str
|
|
730
729
|
The selected dual view colors.
|
|
731
730
|
'''
|
|
732
|
-
# get the selected dual view colors from the parameter tree e.g. 'RG', 'GB', etc
|
|
731
|
+
# get the selected dual view colors from the parameter tree e.g. 'RG', 'GB', etc
|
|
733
732
|
scheme = self.get_param_value(CamParams.DUAL_VIEW_COLORS)
|
|
734
733
|
|
|
735
734
|
indices = {'R': 0, 'G': 1, 'B': 2}
|
|
@@ -1,16 +1,11 @@
|
|
|
1
|
-
import math
|
|
2
1
|
import os
|
|
3
2
|
import re
|
|
4
3
|
import threading
|
|
5
|
-
import time
|
|
6
4
|
import traceback
|
|
7
|
-
from functools import lru_cache
|
|
8
5
|
from queue import Queue
|
|
9
|
-
from typing import
|
|
6
|
+
from typing import Union
|
|
10
7
|
|
|
11
|
-
import cv2
|
|
12
8
|
import numpy as np
|
|
13
|
-
import pyqtgraph as pg
|
|
14
9
|
|
|
15
10
|
from microEye.analysis.tools.roi_selectors import (
|
|
16
11
|
MultiRectangularROISelector,
|
|
@@ -26,7 +21,6 @@ from microEye.hardware.cams.shortcuts import (
|
|
|
26
21
|
)
|
|
27
22
|
from microEye.qt import QDateTime, Qt, QtCore, QtWidgets, Signal, Slot
|
|
28
23
|
from microEye.utils.display import DisplayManager, fast_autolevels_opencv
|
|
29
|
-
from microEye.utils.expandable_groupbox import ExpandableGroupBox
|
|
30
24
|
from microEye.utils.gui_helper import get_scaling_factor
|
|
31
25
|
from microEye.utils.metadata_tree import MetadataEditorTree, MetaParams
|
|
32
26
|
from microEye.utils.thread_worker import QThreadWorker
|
|
@@ -524,6 +518,21 @@ class Camera_Panel(QtWidgets.QGroupBox):
|
|
|
524
518
|
except Exception:
|
|
525
519
|
traceback.print_exc()
|
|
526
520
|
|
|
521
|
+
def get_ROI(self) -> tuple[int, int, int, int]:
|
|
522
|
+
'''Gets the ROI for the selected camera.
|
|
523
|
+
|
|
524
|
+
Returns
|
|
525
|
+
-------
|
|
526
|
+
tuple[int, int, int, int]
|
|
527
|
+
The ROI as (x, y, width, height).
|
|
528
|
+
'''
|
|
529
|
+
x = self.camera_options.get_param_value(CamParams.ROI_X)
|
|
530
|
+
y = self.camera_options.get_param_value(CamParams.ROI_Y)
|
|
531
|
+
w = self.camera_options.get_param_value(CamParams.ROI_WIDTH)
|
|
532
|
+
h = self.camera_options.get_param_value(CamParams.ROI_HEIGHT)
|
|
533
|
+
|
|
534
|
+
return x, y, w, h
|
|
535
|
+
|
|
527
536
|
def roi_shortcuts(self, fov: float, single: bool, software: bool):
|
|
528
537
|
'''
|
|
529
538
|
Sets the ROI for the camera using the selected FOV and mode.
|
|
@@ -560,6 +569,19 @@ class Camera_Panel(QtWidgets.QGroupBox):
|
|
|
560
569
|
y = int((height - fov // pixel_size) / 2)
|
|
561
570
|
h = int(fov // pixel_size)
|
|
562
571
|
|
|
572
|
+
if not software:
|
|
573
|
+
self.reset_ROI()
|
|
574
|
+
QtCore.QThread.msleep(250) # wait for the camera to update the ROI
|
|
575
|
+
|
|
576
|
+
self.camera_options.set_param_value(CamParams.ROI_X, x)
|
|
577
|
+
self.camera_options.set_param_value(CamParams.ROI_Y, y)
|
|
578
|
+
self.camera_options.set_param_value(CamParams.ROI_WIDTH, w)
|
|
579
|
+
self.camera_options.set_param_value(CamParams.ROI_HEIGHT, h)
|
|
580
|
+
|
|
581
|
+
self.set_ROI()
|
|
582
|
+
|
|
583
|
+
x, y, w, h = self.get_ROI()
|
|
584
|
+
|
|
563
585
|
rois = [
|
|
564
586
|
(x if software else 0, y if software else 0, h, h),
|
|
565
587
|
(h + 3 * x if software else h + 2 * x, y if software else 0, h, h),
|
|
@@ -576,18 +598,7 @@ class Camera_Panel(QtWidgets.QGroupBox):
|
|
|
576
598
|
'value': f'{roi[0]}, {roi[1]}, {roi[2]}, {roi[3]}',
|
|
577
599
|
},
|
|
578
600
|
)
|
|
579
|
-
|
|
580
|
-
if not software:
|
|
581
|
-
self.reset_ROI()
|
|
582
|
-
QtCore.QThread.msleep(250) # wait for the camera to update the ROI
|
|
583
|
-
|
|
584
|
-
self.camera_options.set_param_value(CamParams.ROI_X, x)
|
|
585
|
-
self.camera_options.set_param_value(CamParams.ROI_Y, y)
|
|
586
|
-
self.camera_options.set_param_value(CamParams.ROI_WIDTH, w)
|
|
587
|
-
self.camera_options.set_param_value(CamParams.ROI_HEIGHT, h)
|
|
588
|
-
|
|
589
|
-
self.set_ROI()
|
|
590
|
-
elif single:
|
|
601
|
+
elif single and software:
|
|
591
602
|
self.camera_options.add_param_child(
|
|
592
603
|
CamParams.EXPORTED_ROIS,
|
|
593
604
|
{
|
|
@@ -849,7 +860,8 @@ def display_frame(
|
|
|
849
860
|
frame = frame._image
|
|
850
861
|
|
|
851
862
|
thresholds, hist, cdf = fast_autolevels_opencv(
|
|
852
|
-
frame, levels=camp.camera_options.isAutostretch
|
|
863
|
+
frame, levels=camp.camera_options.isAutostretch
|
|
864
|
+
)
|
|
853
865
|
|
|
854
866
|
# cv2.imshow(name, frame)
|
|
855
867
|
DisplayManager.instance().image_update_signal.emit(
|
|
@@ -895,7 +907,6 @@ def update_histogram_and_display(params: AcquisitionJob, camp: Camera_Panel):
|
|
|
895
907
|
display_frame(camp, params.name, params.frame)
|
|
896
908
|
|
|
897
909
|
elif camp.camera_options.isROIsView:
|
|
898
|
-
|
|
899
910
|
overlaid = len(params.rois) == 2 and camp.camera_options.isOverlaidView
|
|
900
911
|
flipped = camp.camera_options.isFlippedROIsView
|
|
901
912
|
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import numpy as np
|
|
2
2
|
import pyqtgraph as pg
|
|
3
3
|
import qdarkstyle
|
|
4
|
-
from pyqtgraph.multiprocess import proxy
|
|
5
4
|
|
|
6
5
|
from microEye.analysis.tools.kymograms import get_kymogram_row
|
|
7
|
-
from microEye.qt import QApplication, QtWidgets, Signal
|
|
6
|
+
from microEye.qt import QApplication, QtWidgets, Signal
|
|
8
7
|
|
|
9
8
|
|
|
10
9
|
class LineProfiler(QtWidgets.QWidget):
|
|
@@ -2,7 +2,7 @@ from typing import Union
|
|
|
2
2
|
|
|
3
3
|
from microEye.hardware.cams.camera_options import CamParams
|
|
4
4
|
from microEye.hardware.cams.micam import miCamera
|
|
5
|
-
from microEye.qt import
|
|
5
|
+
from microEye.qt import Qt, QtCore, QtGui, QtWidgets, Signal
|
|
6
6
|
from microEye.utils.gui_helper import debounceSlot
|
|
7
7
|
|
|
8
8
|
DEFAULT_EXPOSURE_SHORTCUTS = [
|
|
@@ -399,9 +399,7 @@ class CameraShortcutsWidget(QtWidgets.QWidget):
|
|
|
399
399
|
# Close all windows
|
|
400
400
|
self.close_windows_button = QtWidgets.QPushButton('Close All Windows')
|
|
401
401
|
self.close_windows_button.setToolTip('Close all windows')
|
|
402
|
-
self.close_windows_button.clicked.connect(
|
|
403
|
-
lambda: self.closeAllWindows.emit()
|
|
404
|
-
)
|
|
402
|
+
self.close_windows_button.clicked.connect(lambda: self.closeAllWindows.emit())
|
|
405
403
|
self.display_windows_btns.addWidget(self.close_windows_button)
|
|
406
404
|
|
|
407
405
|
def _display_mode_changed(self, index):
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import threading
|
|
1
2
|
import time
|
|
2
3
|
from typing import Optional
|
|
3
4
|
|
|
@@ -6,7 +7,9 @@ from pyqtgraph.parametertree import Parameter
|
|
|
6
7
|
|
|
7
8
|
from microEye.hardware.lasers.io_params import LaserState, MB_Params
|
|
8
9
|
from microEye.qt import QtCore, QtSerialPort, QtWidgets, Signal
|
|
9
|
-
from microEye.utils import
|
|
10
|
+
from microEye.utils.parameter_tree import Tree
|
|
11
|
+
from microEye.utils.start_gui import StartGUI
|
|
12
|
+
from microEye.utils.thread_worker import QThreadWorker
|
|
10
13
|
|
|
11
14
|
|
|
12
15
|
class io_combiner(QtCore.QObject):
|
|
@@ -136,6 +139,8 @@ class io_combiner(QtCore.QObject):
|
|
|
136
139
|
open=False, # Start with the port closed
|
|
137
140
|
)
|
|
138
141
|
|
|
142
|
+
self._lock = threading.Lock() # Add this line
|
|
143
|
+
|
|
139
144
|
def isOpen(self) -> bool:
|
|
140
145
|
'''
|
|
141
146
|
Checks if the serial port is open.
|
|
@@ -204,38 +209,42 @@ class io_combiner(QtCore.QObject):
|
|
|
204
209
|
command to be sent, please check the constants
|
|
205
210
|
implemented in the MatchBox class.
|
|
206
211
|
'''
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
.
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
212
|
+
with self._lock:
|
|
213
|
+
if self.isOpen():
|
|
214
|
+
try:
|
|
215
|
+
self.ser.reset_input_buffer()
|
|
216
|
+
|
|
217
|
+
start_time = time.time()
|
|
218
|
+
self.ser.write(command)
|
|
219
|
+
|
|
220
|
+
response = []
|
|
221
|
+
for _ in range(5 if command == io_combiner.INFO else 1):
|
|
222
|
+
response.append(
|
|
223
|
+
self.ser.read_until(b'\r\n')
|
|
224
|
+
.replace(b'\xff', b'')
|
|
225
|
+
.decode(errors='replace')
|
|
226
|
+
.strip()
|
|
227
|
+
)
|
|
228
|
+
elapsed_time = (
|
|
229
|
+
time.time() - start_time
|
|
230
|
+
) * 1000 # Convert to milliseconds
|
|
231
|
+
if log_print:
|
|
232
|
+
rx = response[0] if len(response) == 1 else '...'
|
|
233
|
+
print(
|
|
234
|
+
f'Command: {command} | '
|
|
235
|
+
f'Response: {rx} | '
|
|
236
|
+
f'Time: {elapsed_time:.1f} ms'
|
|
237
|
+
)
|
|
238
|
+
|
|
239
|
+
self.DataReady.emit(response, command)
|
|
240
|
+
|
|
241
|
+
return response[0] if len(response) == 1 else response
|
|
242
|
+
except serial.SerialException as e:
|
|
243
|
+
print(f'Serial communication error: {e}')
|
|
244
|
+
return '<ERR>'
|
|
245
|
+
except Exception as e:
|
|
246
|
+
print(f'Unexpected error: {e}')
|
|
247
|
+
return '<ERR>'
|
|
239
248
|
|
|
240
249
|
def OpenCOM(self):
|
|
241
250
|
'''Opens the serial port and initializes the combiner.'''
|
|
@@ -406,7 +415,7 @@ class io_combiner(QtCore.QObject):
|
|
|
406
415
|
res = self.SendCommand(io_combiner.INFO, delay=50)
|
|
407
416
|
|
|
408
417
|
if not ('<ERR>' in res or '<ACK>' in res):
|
|
409
|
-
info = res
|
|
418
|
+
info = res
|
|
410
419
|
|
|
411
420
|
self.Firmware = info[0]
|
|
412
421
|
self.Serial = info[1].split(':')[1]
|
|
@@ -495,6 +504,7 @@ class CombinerLaserWidget(Tree):
|
|
|
495
504
|
|
|
496
505
|
# Statues Bar Timer
|
|
497
506
|
self.timer = QtCore.QTimer()
|
|
507
|
+
self.timer.setSingleShot(True)
|
|
498
508
|
self.timer.setInterval(500)
|
|
499
509
|
self.timer.timeout.connect(self.update_stats)
|
|
500
510
|
self.timer.start()
|
|
@@ -535,8 +545,7 @@ class CombinerLaserWidget(Tree):
|
|
|
535
545
|
'value': 115200,
|
|
536
546
|
'limits': [
|
|
537
547
|
baudrate
|
|
538
|
-
for baudrate in
|
|
539
|
-
QtSerialPort.QSerialPortInfo.standardBaudRates()
|
|
548
|
+
for baudrate in QtSerialPort.QSerialPortInfo.standardBaudRates() # noqa: E501
|
|
540
549
|
],
|
|
541
550
|
},
|
|
542
551
|
{'name': str(MB_Params.SET_PORT), 'type': 'action'},
|
|
@@ -756,7 +765,7 @@ class CombinerLaserWidget(Tree):
|
|
|
756
765
|
switch.SetCurrent(value)
|
|
757
766
|
|
|
758
767
|
def update_stats(self):
|
|
759
|
-
|
|
768
|
+
'''
|
|
760
769
|
Updates the statistics displayed in the MatchBox GUI.
|
|
761
770
|
|
|
762
771
|
This method retrieves the current readings and settings from the device, and
|
|
@@ -764,42 +773,70 @@ class CombinerLaserWidget(Tree):
|
|
|
764
773
|
sets the limits of the power parameter based on the maximum power that can be
|
|
765
774
|
set for the laser diode.
|
|
766
775
|
|
|
767
|
-
If the laser is not connected, the method sets the
|
|
768
|
-
|
|
769
|
-
|
|
776
|
+
If the laser is not connected, the method sets the "Port State" parameter to
|
|
777
|
+
"closed".
|
|
778
|
+
'''
|
|
770
779
|
if self.Laser.isOpen():
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
self.
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
780
|
+
|
|
781
|
+
def fetch_stats():
|
|
782
|
+
'''
|
|
783
|
+
Fetches the current readings and settings from the laser device.
|
|
784
|
+
'''
|
|
785
|
+
try:
|
|
786
|
+
if self.Laser.isOpen():
|
|
787
|
+
readings = self.Laser.GetReadings(False)
|
|
788
|
+
settings = self.Laser.GetSettings(False)
|
|
789
|
+
self.Laser.GetCurrent()
|
|
790
|
+
return readings, settings
|
|
791
|
+
except Exception as e:
|
|
792
|
+
print(f'Error fetching stats: {e}')
|
|
793
|
+
|
|
794
|
+
return {}, {}
|
|
795
|
+
|
|
796
|
+
def done(readings: dict, settings: dict):
|
|
797
|
+
'''
|
|
798
|
+
Updates the parameter tree with the fetched readings and settings.
|
|
799
|
+
'''
|
|
800
|
+
if readings:
|
|
801
|
+
for key, value in readings.items():
|
|
802
|
+
if isinstance(value, (int, float)):
|
|
803
|
+
self.set_param_value(key, f'{value:.2f}')
|
|
804
|
+
elif isinstance(value, str):
|
|
805
|
+
self.set_param_value(key, value)
|
|
806
|
+
|
|
807
|
+
if settings:
|
|
808
|
+
for key, value in settings.items():
|
|
809
|
+
if isinstance(value, (int, float)):
|
|
810
|
+
self.set_param_value(key, f'{value:.2f}')
|
|
811
|
+
elif isinstance(value, str):
|
|
812
|
+
self.set_param_value(key, value)
|
|
813
|
+
|
|
814
|
+
self.set_param_value(
|
|
815
|
+
MB_Params.LD_CURRENT,
|
|
816
|
+
'{:.2f} mA, {:.2f} mA, {:.2f} mA, {:.2f} mA'.format(
|
|
817
|
+
*self.Laser.Current
|
|
818
|
+
),
|
|
819
|
+
)
|
|
820
|
+
self.set_param_value(
|
|
821
|
+
MB_Params.LD_CURRENT_MAX,
|
|
822
|
+
'{:.2f} mA, {:.2f} mA, {:.2f} mA, {:.2f} mA'.format(
|
|
823
|
+
*self.Laser.Max
|
|
824
|
+
),
|
|
825
|
+
)
|
|
826
|
+
self.set_param_value(
|
|
827
|
+
MB_Params.LD_CURRENT_SET,
|
|
828
|
+
'{:.2f} mA, {:.2f} mA, {:.2f} mA, {:.2f} mA'.format(
|
|
829
|
+
*self.Laser.Setting
|
|
830
|
+
),
|
|
831
|
+
)
|
|
832
|
+
|
|
833
|
+
worker = QThreadWorker(fetch_stats)
|
|
834
|
+
worker.signals.result.connect(done)
|
|
835
|
+
worker.signals.finished.connect(
|
|
836
|
+
self.timer.start
|
|
837
|
+
) # Restart the timer after fetching stats
|
|
838
|
+
|
|
839
|
+
QtCore.QThreadPool.globalInstance().start(worker)
|
|
803
840
|
|
|
804
841
|
self.set_param_value(MB_Params.OPERATION_TIME, self.Laser.Operation_Time)
|
|
805
842
|
self.set_param_value(MB_Params.ON_TIMES, self.Laser.ON_Times)
|
|
@@ -811,13 +848,13 @@ class CombinerLaserWidget(Tree):
|
|
|
811
848
|
self.RefreshPorts()
|
|
812
849
|
|
|
813
850
|
def RefreshPorts(self):
|
|
814
|
-
|
|
851
|
+
'''
|
|
815
852
|
Refreshes the available serial ports list in the GUI.
|
|
816
853
|
|
|
817
854
|
This method updates the list of available serial ports in the GUI by fetching
|
|
818
855
|
the current list of available ports and setting it as the options for the
|
|
819
|
-
|
|
820
|
-
|
|
856
|
+
`Serial Port` parameter in the parameter tree.
|
|
857
|
+
'''
|
|
821
858
|
if not self.Laser.isOpen():
|
|
822
859
|
self.get_param(MB_Params.PORT).setLimits(
|
|
823
860
|
[
|