microeye 2.3.4__tar.gz → 2.3.6__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.4/src/microeye.egg-info → microeye-2.3.6}/PKG-INFO +44 -30
- {microeye-2.3.4 → microeye-2.3.6}/README.md +42 -27
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/_version.py +1 -1
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/tools/roi_selectors.py +5 -5
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/camera_options.py +56 -11
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/camera_panel.py +154 -256
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/jobs.py +4 -2
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/shortcuts.py +90 -17
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/lasers/io_matchbox.py +140 -42
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/lasers/io_single_laser.py +129 -28
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/mieye/devices_manager.py +8 -3
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/mieye/miEye.py +3 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/pycromanager/devices.py +1 -1
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/piezo_concept.py +4 -4
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/stabilizer.py +3 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/stage.py +5 -3
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/widgets/controller.py +27 -4
- microeye-2.3.6/src/microEye/utils/display.py +484 -0
- {microeye-2.3.4 → microeye-2.3.6/src/microeye.egg-info}/PKG-INFO +44 -30
- {microeye-2.3.4 → microeye-2.3.6}/src/microeye.egg-info/requires.txt +1 -2
- microeye-2.3.4/src/microEye/utils/display.py +0 -278
- {microeye-2.3.4 → microeye-2.3.6}/LICENSE +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/MANIFEST.in +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/pyproject.toml +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/setup.cfg +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/setup.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/checklist_dialog.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/cmosMaps.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/filters/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/filters/base.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/filters/spatial.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/filters/temporal.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/fit.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/nena.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/phasor_fit.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/processing.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/psf/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/psf/extract.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/psf/rubost_mean.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/psf/spline.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/psf/stats/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/psf/stats/core.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/psf/stats/curve_fit.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/psf/stats/io.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/psf/stats/slope_fit.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/psf/temp.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/psf/test.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/pyfit3Dcspline/CPU/CPUfunctions.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/pyfit3Dcspline/CPU/CPUmleFit_LM.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/pyfit3Dcspline/CPU/CPUsplineLib.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/pyfit3Dcspline/CPU/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/pyfit3Dcspline/GPU/GPUfunctions.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/pyfit3Dcspline/GPU/GPUmleFit_LM_EMCCD.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/pyfit3Dcspline/GPU/GPUmleFit_LM_sCMOS.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/pyfit3Dcspline/GPU/GPUsplineLib.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/pyfit3Dcspline/GPU/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/pyfit3Dcspline/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/pyfit3Dcspline/constants.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/pyfit3Dcspline/mainfunctions.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/results.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/results_stats.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/tardis.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/multi_viewer.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/processing/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/processing/frc.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/rendering/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/rendering/base.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/rendering/cloud.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/rendering/core.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/rendering/volumetric.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/tools/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/tools/kymograms.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/utils/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/utils/coordinates.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/utils/images.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/utils/windows.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/viewer/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/viewer/image_options_widget.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/viewer/images.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/viewer/layers_widget.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/viewer/localizations.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/viewer/psf.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/viewer/volume.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/camera_calibration.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/camera_list.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/dummy/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/dummy/dummy_panel.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/line_profiler.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/linescan/IR_Cam.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/linescan/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/micam.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/pco/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/pco/enums.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/pco/pco_cam.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/pco/pco_panel.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/thorlabs/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/thorlabs/thorlabs.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/thorlabs/thorlabs_panel.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/ueye/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/ueye/ueye_camera.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/ueye/ueye_panel.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/vimba/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/vimba/vimba_cam.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/vimba/vimba_panel.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/device.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/lasers/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/lasers/io_params.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/lasers/laser_relay.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/mieye/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/mieye/acquisition_manager.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/misc/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/misc/acquisition_view.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/misc/reglo.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/misc/temp.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/port_config.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/protocols/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/protocols/actions.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/protocols/actions_items.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/protocols/designer.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/protocols/scene_manager.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/protocols/serialization.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/pycromanager/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/pycromanager/core.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/pycromanager/enums.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/pycromanager/headless.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/pycromanager/utils.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/pycromanager/widgets/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/pycromanager/widgets/bridges.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/pycromanager/widgets/headless_manager.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/pycromanager/widgets/headless_options.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/pycromanager/widgets/pycro_panel.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/elliptec/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/elliptec/baseDevice.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/elliptec/device.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/elliptec/deviceID.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/elliptec/devicePort.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/elliptec/deviceStatus.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/elliptec/devicesView.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/elliptec/ellDevices.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/elliptec/messageUpdater.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/elliptec/motorInfo.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/elliptec/stage.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/elliptec/test.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/kinesis/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/kinesis/kdc101/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/kinesis/kdc101/enums.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/kinesis/kdc101/factory.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/kinesis/kdc101/kdc101.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/kinesis/kinesis.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/widgets/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/widgets/devices.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/widgets/focusWidget.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/widgets/qlist_slider.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/widgets/scan_acquisition.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/icons/1024.png +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/icons/128.png +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/icons/16.png +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/icons/24.png +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/icons/256.png +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/icons/32.png +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/icons/48.png +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/icons/512.png +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/icons/64.png +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/icons/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/icons/close.svg +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/icons/mieye.png +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/icons/min.svg +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/icons/viewer.png +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/launcher.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/qt.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/tools/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/tools/microscopy.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/enum_encoder.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/expandable_groupbox.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/gui_helper.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/hid_utils/__init__.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/hid_utils/controller.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/hid_utils/device.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/hid_utils/enums.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/hid_utils/utils.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/labelled_slider.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/metadata.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/metadata_tree.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/micro_launcher.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/parameter_tree.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/pyscripting.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/retry_exec.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/start_gui.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/thread_worker.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/uImage.py +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microeye.egg-info/SOURCES.txt +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microeye.egg-info/dependency_links.txt +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/src/microeye.egg-info/entry_points.txt +0 -0
- {microeye-2.3.4 → microeye-2.3.6}/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.6
|
|
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
|
|
@@ -49,8 +49,7 @@ Requires-Dist: tables==3.9.1
|
|
|
49
49
|
Requires-Dist: tabulate==0.9.0
|
|
50
50
|
Requires-Dist: tqdm==4.66.4
|
|
51
51
|
Requires-Dist: tifffile==2024.8.10
|
|
52
|
-
Requires-Dist:
|
|
53
|
-
Requires-Dist: zarr==2.18.2
|
|
52
|
+
Requires-Dist: zarr>=2.18.2
|
|
54
53
|
Dynamic: author
|
|
55
54
|
Dynamic: author-email
|
|
56
55
|
Dynamic: classifier
|
|
@@ -96,10 +95,10 @@ This toolkit is compatible with the [hardware](#hardware) used in our microscope
|
|
|
96
95
|

|
|
97
96
|
|
|
98
97
|
```bash
|
|
99
|
-
__ ____ ____ ___ ____
|
|
100
|
-
/ |/ (_)__________ / __/_ _____ _ __|_ | |_
|
|
101
|
-
/ /|_/ / / __/ __/ _ \/ _// // / -_) | |/ / __/_ _/_
|
|
102
|
-
/_/ /_/_/\__/_/ \___/___/\_, /\__/ |___/____(_)____(_)
|
|
98
|
+
__ ____ ____ ___ ____ ____
|
|
99
|
+
/ |/ (_)__________ / __/_ _____ _ __|_ | |_ / / __/
|
|
100
|
+
/ /|_/ / / __/ __/ _ \/ _// // / -_) | |/ / __/_ _/_ <_/ _ \
|
|
101
|
+
/_/ /_/_/\__/_/ \___/___/\_, /\__/ |___/____(_)____(_)___/
|
|
103
102
|
/___/
|
|
104
103
|
```
|
|
105
104
|
|
|
@@ -122,6 +121,7 @@ This toolkit is compatible with the [hardware](#hardware) used in our microscope
|
|
|
122
121
|
- [Additional Hardware](#additional-hardware)
|
|
123
122
|
- [Pycro-Manager Integration](#pycro-manager-integration)
|
|
124
123
|
- [Features](#features)
|
|
124
|
+
- [Integrated Hardware](#integrated-hardware)
|
|
125
125
|
- [How to Use](#how-to-use)
|
|
126
126
|
- [Authors](#authors)
|
|
127
127
|
- [People Involved](#people-involved)
|
|
@@ -281,18 +281,21 @@ microEye --module viewer
|
|
|
281
281
|
|
|
282
282
|
The `microEye` uses the following Python packages:
|
|
283
283
|
|
|
284
|
-
| Data Analysis and Visualization | GUI and UI Development | Code Quality and Formatting | Image and Video Processing | File and Data Storage | Other Utilities |
|
|
285
|
-
|
|
|
286
|
-
|
|
|
287
|
-
|
|
|
288
|
-
|
|
|
289
|
-
|
|
|
290
|
-
|
|
|
291
|
-
|
|
|
292
|
-
|
|
|
293
|
-
|
|
|
294
|
-
|
|
|
295
|
-
|
|
|
284
|
+
| Data Analysis and Visualization | GUI and UI Development | Code Quality and Formatting | Image and Video Processing | File and Data Storage | Other Utilities | Microscopy |
|
|
285
|
+
| :-----------------------------: | :--------------------: | :-------------------------: | :------------------------: | :-------------------: | :-------------: | :----------: |
|
|
286
|
+
| dask | PySide6 | autopep8 | opencv-python | ome-types | hidapi | pycromanager |
|
|
287
|
+
| matplotlib | pyqtdarktheme | pyflakes | | tables | pyfiglet | |
|
|
288
|
+
| numba | pyqtgraph | | | zarr | pyserial | |
|
|
289
|
+
| numpy | QDarkStyle | | | | pyjokes | |
|
|
290
|
+
| pandas | QScintilla | | | | setuptools | |
|
|
291
|
+
| scikit-image | PyQt5 (optional) | | | | tabulate | |
|
|
292
|
+
| scikit_learn | PyQt6 (optional) | | | | pyueye | |
|
|
293
|
+
| scipy | | | | | tqdm | |
|
|
294
|
+
| tifffile | | | | | | |
|
|
295
|
+
| h5py | | | | | | |
|
|
296
|
+
| pco | | | | | | |
|
|
297
|
+
| | | | | | | |
|
|
298
|
+
| PyOpenGL | | | | | | |
|
|
296
299
|
|
|
297
300
|
Note: VimbaPython is included in Vimba SDK and needs to be installed manually.
|
|
298
301
|
|
|
@@ -315,25 +318,27 @@ Schematic overview of the miEye instrument:
|
|
|
315
318
|
|
|
316
319
|
### Supported Cameras
|
|
317
320
|
|
|
318
|
-
|
|
|
319
|
-
|
|
|
320
|
-
| IDS uEye UI-3060CP Rev. 2 | IDS industrial-grade CMOS cameras
|
|
321
|
-
|
|
|
322
|
-
| Allied Vision Alvium 1800 | Allied Vision industrial-grade CMOS cameras (U-158m, U-511m)
|
|
321
|
+
| Camera | Description | Link |
|
|
322
|
+
| :-----------------------: | ------------------------------------------------------------------------ | :-----------------------------------------------------------------------------------------------------------: |
|
|
323
|
+
| IDS uEye UI-3060CP Rev. 2 | IDS industrial-grade CMOS cameras | [Product Link](https://en.ids-imaging.com/store/products/cameras/ui-3060cp-rev-2.html) |
|
|
324
|
+
| Thorlabs DCC1545M | DCx camera using UC480 driver | [Product Link](https://www.thorlabs.com/thorProduct.cfm?partNumber=DCC1545M) |
|
|
325
|
+
| Allied Vision Alvium 1800 | Allied Vision industrial-grade CMOS cameras (U-158m, U-511m) | [Product Link](https://www.alliedvision.com/en/products/alvium-configurator/alvium-1800-u/158/#_configurator) |
|
|
326
|
+
| Excelitas PCO sCMOS | Excelitas pco.edge 4.2 LT USB sCMOS Camera | [Product Link](https://www.excelitas.com/product/pcoedge-42-lt-usb-scmos-camera) |
|
|
327
|
+
| Pycro-camera | Access to cameras via Micro-Manager drivers/adapters using Pycro-Manager | - |
|
|
323
328
|
|
|
324
329
|
### Additional Hardware
|
|
325
330
|
|
|
326
331
|
| Hardware | Description | Link |
|
|
327
332
|
| --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
328
|
-
| Integrated Optics MatchBox | Multi-wavelength Laser Combiner, Single Laser MatchBox | [Link](https://integratedoptics.com/products/wavelength-combiners)
|
|
329
|
-
| Piezo Concept FOC | Nanopositioner for microscope objectives | [
|
|
333
|
+
| Integrated Optics MatchBox | Multi-wavelength Laser Combiner, Single Laser MatchBox | [Products Link](https://integratedoptics.com/products/wavelength-combiners) |
|
|
334
|
+
| Piezo Concept FOC | Nanopositioner for microscope objectives | [Piezo Concept FOC](https://piezoconcept-store.squarespace.com/1-axis/p/foc) |
|
|
330
335
|
| Thorlabs Elliptec ELL6/ELL9/ELL12 | Dual/Four/Six-Position Slider | [ELL6](https://www.thorlabs.com/thorproduct.cfm?partnumber=ELL6), [ELL9](https://www.thorlabs.com/thorproduct.cfm?partnumber=ELL9), [ELL12](https://www.thorlabs.com/thorproduct.cfm?partnumber=ELL12) |
|
|
331
336
|
| Thorlabs Elliptec ELL14 | Rotation Mount: SM1 Threaded | [ELL14](https://www.thorlabs.com/thorproduct.cfm?partnumber=ELL14) |
|
|
332
337
|
| Thorlabs Elliptec ELL20 | Linear Stage: 60 mm Travel | [ELL20](https://www.thorlabs.com/thorproduct.cfm?partnumber=ELL20) |
|
|
333
|
-
| Thorlabs KDC101 | Kinesis Controller for Z825B/[Z925B](https://www.thorlabs.com/thorproduct.cfm?partnumber=Z925B) actuators (Activate USB VCP to access the COM port in device manager) | [
|
|
334
|
-
| Parallax TSL1401-DB (#28317) | Linescan Camera Module | [
|
|
338
|
+
| Thorlabs KDC101 | Kinesis Controller for Z825B/[Z925B](https://www.thorlabs.com/thorproduct.cfm?partnumber=Z925B) actuators (Activate USB VCP to access the COM port in device manager) | [KDC101](https://www.thorlabs.com/thorproduct.cfm?partnumber=KDC101) |
|
|
339
|
+
| Parallax TSL1401-DB (#28317) | Linescan Camera Module | [Parallax TSL1401-DB](https://eu.mouser.com/ProductDetail/Parallax/28317?qs=%2Fha2pyFaduiCRhuOAXMuCmQIeG1Q3R01m6Y1EH%252BmN80%3D) |
|
|
335
340
|
| RelayBox Arduino | For laser control using camera GPIO signals | [RelayBox](https://github.com/samhitech/RelayBox) |
|
|
336
|
-
| miEye OSF Project Parts List | Parts list of miEye OSF Project | [Link](https://osf.io/j2fqy/)
|
|
341
|
+
| miEye OSF Project Parts List | Parts list of miEye OSF Project | [Repo Link](https://osf.io/j2fqy/) |
|
|
337
342
|
|
|
338
343
|
## Pycro-Manager Integration
|
|
339
344
|
|
|
@@ -344,6 +349,15 @@ Integration with Pycro-Manager is now implemented, providing support for managin
|
|
|
344
349
|
- **Headless Manager**: Manage multiple headless Micro-Manager instances (JavaBackend), including starting, stopping, and saving configurations.
|
|
345
350
|
- **Core Instances Manager**: Handle multiple PycroCore instances for device communication and control.
|
|
346
351
|
|
|
352
|
+
### Integrated Hardware
|
|
353
|
+
|
|
354
|
+
The following table lists the hardware devices that are integrated and supported by the `miEye module`:
|
|
355
|
+
|
|
356
|
+
| Device | Description |
|
|
357
|
+
| :----: | ------------------------------------------------------------------------------------------- |
|
|
358
|
+
| Camera | Access Micro-Manager cameras (mainly done for focus stabilization). |
|
|
359
|
+
| ZStage | Access Micro-Manager Z-stage devices for focus stabilization and axial positioning control. |
|
|
360
|
+
|
|
347
361
|
### How to Use
|
|
348
362
|
|
|
349
363
|
1. **Headless Manager**:
|
|
@@ -408,7 +422,7 @@ Special thanks to the following projects and libraries that make this work possi
|
|
|
408
422
|
> Raw data to results: a hands-on introduction and overview of computational analysis for single-molecule localization microscopy", Martens et al., (2022), Frontiers in Bioinformatics. [Paper](https://www.frontiersin.org/articles/10.3389/fbinf.2021.817254)
|
|
409
423
|
|
|
410
424
|
- **TARDIS (Temporal Analysis of Relative Distances)**: We have developed a partial Python implementation of TARDIS without fitting for now. For more information, refer to the [TARDIS software releases](https://github.com/kjamartens/TARDIS-public). The underlying algorithms and scientific details of TARDIS are detailed in the manuscript:
|
|
411
|
-
> Martens et al., “Temporal analysis of relative distances (TARDIS) is a robust, parameter-free alternative to single-particle tracking”, Nature Methods (2024). [
|
|
425
|
+
> Martens et al., “Temporal analysis of relative distances (TARDIS) is a robust, parameter-free alternative to single-particle tracking”, Nature Methods (2024). [Article](https://rdcu.be/dv1sr)
|
|
412
426
|
|
|
413
427
|
**Note**: I'm committed to maintaining an accurate acknowledgment list for our project. However, if I inadvertently miss acknowledging your work, please don't hesitate to reach out to us. I appreciate your understanding, and I'm doing my best to manage all acknowledgments amidst my other responsibilities.
|
|
414
428
|
|
|
@@ -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
|
|
|
@@ -57,6 +57,7 @@ This toolkit is compatible with the [hardware](#hardware) used in our microscope
|
|
|
57
57
|
- [Additional Hardware](#additional-hardware)
|
|
58
58
|
- [Pycro-Manager Integration](#pycro-manager-integration)
|
|
59
59
|
- [Features](#features)
|
|
60
|
+
- [Integrated Hardware](#integrated-hardware)
|
|
60
61
|
- [How to Use](#how-to-use)
|
|
61
62
|
- [Authors](#authors)
|
|
62
63
|
- [People Involved](#people-involved)
|
|
@@ -216,18 +217,21 @@ microEye --module viewer
|
|
|
216
217
|
|
|
217
218
|
The `microEye` uses the following Python packages:
|
|
218
219
|
|
|
219
|
-
| Data Analysis and Visualization | GUI and UI Development | Code Quality and Formatting | Image and Video Processing | File and Data Storage | Other Utilities |
|
|
220
|
-
|
|
|
221
|
-
|
|
|
222
|
-
|
|
|
223
|
-
|
|
|
224
|
-
|
|
|
225
|
-
|
|
|
226
|
-
|
|
|
227
|
-
|
|
|
228
|
-
|
|
|
229
|
-
|
|
|
230
|
-
|
|
|
220
|
+
| Data Analysis and Visualization | GUI and UI Development | Code Quality and Formatting | Image and Video Processing | File and Data Storage | Other Utilities | Microscopy |
|
|
221
|
+
| :-----------------------------: | :--------------------: | :-------------------------: | :------------------------: | :-------------------: | :-------------: | :----------: |
|
|
222
|
+
| dask | PySide6 | autopep8 | opencv-python | ome-types | hidapi | pycromanager |
|
|
223
|
+
| matplotlib | pyqtdarktheme | pyflakes | | tables | pyfiglet | |
|
|
224
|
+
| numba | pyqtgraph | | | zarr | pyserial | |
|
|
225
|
+
| numpy | QDarkStyle | | | | pyjokes | |
|
|
226
|
+
| pandas | QScintilla | | | | setuptools | |
|
|
227
|
+
| scikit-image | PyQt5 (optional) | | | | tabulate | |
|
|
228
|
+
| scikit_learn | PyQt6 (optional) | | | | pyueye | |
|
|
229
|
+
| scipy | | | | | tqdm | |
|
|
230
|
+
| tifffile | | | | | | |
|
|
231
|
+
| h5py | | | | | | |
|
|
232
|
+
| pco | | | | | | |
|
|
233
|
+
| | | | | | | |
|
|
234
|
+
| PyOpenGL | | | | | | |
|
|
231
235
|
|
|
232
236
|
Note: VimbaPython is included in Vimba SDK and needs to be installed manually.
|
|
233
237
|
|
|
@@ -250,25 +254,27 @@ Schematic overview of the miEye instrument:
|
|
|
250
254
|
|
|
251
255
|
### Supported Cameras
|
|
252
256
|
|
|
253
|
-
|
|
|
254
|
-
|
|
|
255
|
-
| IDS uEye UI-3060CP Rev. 2 | IDS industrial-grade CMOS cameras
|
|
256
|
-
|
|
|
257
|
-
| Allied Vision Alvium 1800 | Allied Vision industrial-grade CMOS cameras (U-158m, U-511m)
|
|
257
|
+
| Camera | Description | Link |
|
|
258
|
+
| :-----------------------: | ------------------------------------------------------------------------ | :-----------------------------------------------------------------------------------------------------------: |
|
|
259
|
+
| IDS uEye UI-3060CP Rev. 2 | IDS industrial-grade CMOS cameras | [Product Link](https://en.ids-imaging.com/store/products/cameras/ui-3060cp-rev-2.html) |
|
|
260
|
+
| Thorlabs DCC1545M | DCx camera using UC480 driver | [Product Link](https://www.thorlabs.com/thorProduct.cfm?partNumber=DCC1545M) |
|
|
261
|
+
| Allied Vision Alvium 1800 | Allied Vision industrial-grade CMOS cameras (U-158m, U-511m) | [Product Link](https://www.alliedvision.com/en/products/alvium-configurator/alvium-1800-u/158/#_configurator) |
|
|
262
|
+
| Excelitas PCO sCMOS | Excelitas pco.edge 4.2 LT USB sCMOS Camera | [Product Link](https://www.excelitas.com/product/pcoedge-42-lt-usb-scmos-camera) |
|
|
263
|
+
| Pycro-camera | Access to cameras via Micro-Manager drivers/adapters using Pycro-Manager | - |
|
|
258
264
|
|
|
259
265
|
### Additional Hardware
|
|
260
266
|
|
|
261
267
|
| Hardware | Description | Link |
|
|
262
268
|
| --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
263
|
-
| Integrated Optics MatchBox | Multi-wavelength Laser Combiner, Single Laser MatchBox | [Link](https://integratedoptics.com/products/wavelength-combiners)
|
|
264
|
-
| Piezo Concept FOC | Nanopositioner for microscope objectives | [
|
|
269
|
+
| Integrated Optics MatchBox | Multi-wavelength Laser Combiner, Single Laser MatchBox | [Products Link](https://integratedoptics.com/products/wavelength-combiners) |
|
|
270
|
+
| Piezo Concept FOC | Nanopositioner for microscope objectives | [Piezo Concept FOC](https://piezoconcept-store.squarespace.com/1-axis/p/foc) |
|
|
265
271
|
| Thorlabs Elliptec ELL6/ELL9/ELL12 | Dual/Four/Six-Position Slider | [ELL6](https://www.thorlabs.com/thorproduct.cfm?partnumber=ELL6), [ELL9](https://www.thorlabs.com/thorproduct.cfm?partnumber=ELL9), [ELL12](https://www.thorlabs.com/thorproduct.cfm?partnumber=ELL12) |
|
|
266
272
|
| Thorlabs Elliptec ELL14 | Rotation Mount: SM1 Threaded | [ELL14](https://www.thorlabs.com/thorproduct.cfm?partnumber=ELL14) |
|
|
267
273
|
| Thorlabs Elliptec ELL20 | Linear Stage: 60 mm Travel | [ELL20](https://www.thorlabs.com/thorproduct.cfm?partnumber=ELL20) |
|
|
268
|
-
| Thorlabs KDC101 | Kinesis Controller for Z825B/[Z925B](https://www.thorlabs.com/thorproduct.cfm?partnumber=Z925B) actuators (Activate USB VCP to access the COM port in device manager) | [
|
|
269
|
-
| Parallax TSL1401-DB (#28317) | Linescan Camera Module | [
|
|
274
|
+
| Thorlabs KDC101 | Kinesis Controller for Z825B/[Z925B](https://www.thorlabs.com/thorproduct.cfm?partnumber=Z925B) actuators (Activate USB VCP to access the COM port in device manager) | [KDC101](https://www.thorlabs.com/thorproduct.cfm?partnumber=KDC101) |
|
|
275
|
+
| Parallax TSL1401-DB (#28317) | Linescan Camera Module | [Parallax TSL1401-DB](https://eu.mouser.com/ProductDetail/Parallax/28317?qs=%2Fha2pyFaduiCRhuOAXMuCmQIeG1Q3R01m6Y1EH%252BmN80%3D) |
|
|
270
276
|
| RelayBox Arduino | For laser control using camera GPIO signals | [RelayBox](https://github.com/samhitech/RelayBox) |
|
|
271
|
-
| miEye OSF Project Parts List | Parts list of miEye OSF Project | [Link](https://osf.io/j2fqy/)
|
|
277
|
+
| miEye OSF Project Parts List | Parts list of miEye OSF Project | [Repo Link](https://osf.io/j2fqy/) |
|
|
272
278
|
|
|
273
279
|
## Pycro-Manager Integration
|
|
274
280
|
|
|
@@ -279,6 +285,15 @@ Integration with Pycro-Manager is now implemented, providing support for managin
|
|
|
279
285
|
- **Headless Manager**: Manage multiple headless Micro-Manager instances (JavaBackend), including starting, stopping, and saving configurations.
|
|
280
286
|
- **Core Instances Manager**: Handle multiple PycroCore instances for device communication and control.
|
|
281
287
|
|
|
288
|
+
### Integrated Hardware
|
|
289
|
+
|
|
290
|
+
The following table lists the hardware devices that are integrated and supported by the `miEye module`:
|
|
291
|
+
|
|
292
|
+
| Device | Description |
|
|
293
|
+
| :----: | ------------------------------------------------------------------------------------------- |
|
|
294
|
+
| Camera | Access Micro-Manager cameras (mainly done for focus stabilization). |
|
|
295
|
+
| ZStage | Access Micro-Manager Z-stage devices for focus stabilization and axial positioning control. |
|
|
296
|
+
|
|
282
297
|
### How to Use
|
|
283
298
|
|
|
284
299
|
1. **Headless Manager**:
|
|
@@ -343,7 +358,7 @@ Special thanks to the following projects and libraries that make this work possi
|
|
|
343
358
|
> Raw data to results: a hands-on introduction and overview of computational analysis for single-molecule localization microscopy", Martens et al., (2022), Frontiers in Bioinformatics. [Paper](https://www.frontiersin.org/articles/10.3389/fbinf.2021.817254)
|
|
344
359
|
|
|
345
360
|
- **TARDIS (Temporal Analysis of Relative Distances)**: We have developed a partial Python implementation of TARDIS without fitting for now. For more information, refer to the [TARDIS software releases](https://github.com/kjamartens/TARDIS-public). The underlying algorithms and scientific details of TARDIS are detailed in the manuscript:
|
|
346
|
-
> Martens et al., “Temporal analysis of relative distances (TARDIS) is a robust, parameter-free alternative to single-particle tracking”, Nature Methods (2024). [
|
|
361
|
+
> Martens et al., “Temporal analysis of relative distances (TARDIS) is a robust, parameter-free alternative to single-particle tracking”, Nature Methods (2024). [Article](https://rdcu.be/dv1sr)
|
|
347
362
|
|
|
348
363
|
**Note**: I'm committed to maintaining an accurate acknowledgment list for our project. However, if I inadvertently miss acknowledging your work, please don't hesitate to reach out to us. I appreciate your understanding, and I'm doing my best to manage all acknowledgments amidst my other responsibilities.
|
|
349
364
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
version_info = (2, 3,
|
|
1
|
+
version_info = (2, 3, 6)
|
|
2
2
|
__version__ = '.'.join(map(str, version_info))
|
|
@@ -403,19 +403,19 @@ class MultiRectangularROISelector:
|
|
|
403
403
|
elif key == 3014656: # Delete
|
|
404
404
|
if self.active_roi_idx != -1:
|
|
405
405
|
self.delete_active()
|
|
406
|
-
elif key
|
|
406
|
+
elif key in [ord('a'), ord('A')]:
|
|
407
407
|
while self.current_mode != 'Add':
|
|
408
408
|
self.cycle_mode()
|
|
409
|
-
elif key
|
|
409
|
+
elif key in [ord('e'), ord('E')]:
|
|
410
410
|
while self.current_mode != 'Edit':
|
|
411
411
|
self.cycle_mode()
|
|
412
|
-
elif key
|
|
412
|
+
elif key in [ord('i'), ord('I')]:
|
|
413
413
|
while self.current_mode != 'Insert':
|
|
414
414
|
self.cycle_mode()
|
|
415
|
-
elif key
|
|
415
|
+
elif key in [ord('m'), ord('M')]:
|
|
416
416
|
while self.current_mode != 'Move':
|
|
417
417
|
self.cycle_mode()
|
|
418
|
-
elif key
|
|
418
|
+
elif key in [ord('r'), ord('R')]:
|
|
419
419
|
while self.current_mode != 'Remove':
|
|
420
420
|
self.cycle_mode()
|
|
421
421
|
|
|
@@ -50,11 +50,15 @@ class CamParams(Enum):
|
|
|
50
50
|
PREVIEW = 'Display.Preview'
|
|
51
51
|
DISPLAY_STATS_OPTION = 'Display.Display Stats'
|
|
52
52
|
AUTO_STRETCH = 'Display.Auto Stretch'
|
|
53
|
+
PLOT_TYPE = 'Display.Plot Type'
|
|
53
54
|
VIEW_OPTIONS = 'Display.View Options'
|
|
54
55
|
SINGLE_VIEW = 'Display.View Options.Single View'
|
|
55
|
-
|
|
56
|
-
DUAL_OVERLAID = 'Display.View Options.Dual Channel (
|
|
56
|
+
DUAL_VIEW = 'Display.View Options.Dual Channel'
|
|
57
|
+
DUAL_OVERLAID = 'Display.View Options.Dual Channel (Overlaid)'
|
|
57
58
|
ROIS_VIEW = 'Display.View Options.Export ROIs'
|
|
59
|
+
ROIS_VIEW_OVERLAID = 'Display.View Options.Export ROIs (Overlaid)'
|
|
60
|
+
# add colors for dual view RG, GB, GR, BR, BG, etc.
|
|
61
|
+
DUAL_VIEW_COLORS = 'Display.Dual View Colors'
|
|
58
62
|
LINE_PROFILER = 'Display.Line Profiler'
|
|
59
63
|
LUT = 'Display.LUT'
|
|
60
64
|
LUT_NUMPY = 'Display.LUT Numpy (12bit)'
|
|
@@ -208,20 +212,36 @@ class CameraOptions(Tree):
|
|
|
208
212
|
'value': True,
|
|
209
213
|
},
|
|
210
214
|
{
|
|
211
|
-
'name': str(CamParams.
|
|
215
|
+
'name': str(CamParams.PLOT_TYPE),
|
|
212
216
|
'type': 'list',
|
|
213
|
-
'limits': [
|
|
217
|
+
'limits': ['Histogram', 'Cumulative'],
|
|
214
218
|
},
|
|
215
219
|
{
|
|
216
220
|
'name': str(CamParams.VIEW_OPTIONS),
|
|
217
221
|
'type': 'list',
|
|
218
222
|
'limits': [
|
|
219
223
|
str(CamParams.SINGLE_VIEW),
|
|
220
|
-
str(CamParams.
|
|
224
|
+
str(CamParams.DUAL_VIEW),
|
|
221
225
|
str(CamParams.DUAL_OVERLAID),
|
|
222
226
|
str(CamParams.ROIS_VIEW),
|
|
227
|
+
str(CamParams.ROIS_VIEW_OVERLAID),
|
|
223
228
|
],
|
|
224
229
|
},
|
|
230
|
+
{
|
|
231
|
+
'name': str(CamParams.DUAL_VIEW_COLORS),
|
|
232
|
+
'type': 'list',
|
|
233
|
+
'limits': [
|
|
234
|
+
'RG',
|
|
235
|
+
'GB',
|
|
236
|
+
'GR',
|
|
237
|
+
'BR',
|
|
238
|
+
'BG',
|
|
239
|
+
'RB',
|
|
240
|
+
'GB',
|
|
241
|
+
'RG',
|
|
242
|
+
],
|
|
243
|
+
'value': 'GB',
|
|
244
|
+
},
|
|
225
245
|
{
|
|
226
246
|
'name': str(CamParams.LINE_PROFILER),
|
|
227
247
|
'type': 'bool',
|
|
@@ -501,8 +521,7 @@ class CameraOptions(Tree):
|
|
|
501
521
|
for p, _, data in changes:
|
|
502
522
|
path = self.param_tree.childPath(p)
|
|
503
523
|
|
|
504
|
-
self.paramsChanged.emit(
|
|
505
|
-
p, data)
|
|
524
|
+
self.paramsChanged.emit(p, data)
|
|
506
525
|
|
|
507
526
|
@property
|
|
508
527
|
def isTiff(self):
|
|
@@ -558,9 +577,17 @@ class CameraOptions(Tree):
|
|
|
558
577
|
True if the view option is set to export ROIs view, False otherwise.
|
|
559
578
|
'''
|
|
560
579
|
return self.get_param_value(CamParams.VIEW_OPTIONS) in [
|
|
561
|
-
str(CamParams.ROIS_VIEW)
|
|
580
|
+
str(CamParams.ROIS_VIEW),
|
|
581
|
+
str(CamParams.ROIS_VIEW_OVERLAID),
|
|
562
582
|
]
|
|
563
583
|
|
|
584
|
+
@property
|
|
585
|
+
def isFlippedROIsView(self) -> bool:
|
|
586
|
+
'''
|
|
587
|
+
Check if the view option is set to export ROIs view with flipped ROIs.
|
|
588
|
+
'''
|
|
589
|
+
return self.get_param_value(CamParams.EXPORT_ROIS_FLIPPED)
|
|
590
|
+
|
|
564
591
|
@property
|
|
565
592
|
def isOverlaidView(self):
|
|
566
593
|
'''
|
|
@@ -572,7 +599,8 @@ class CameraOptions(Tree):
|
|
|
572
599
|
True if the view option is set to overlaid view, False otherwise.
|
|
573
600
|
'''
|
|
574
601
|
return self.get_param_value(CamParams.VIEW_OPTIONS) in [
|
|
575
|
-
str(CamParams.DUAL_OVERLAID)
|
|
602
|
+
str(CamParams.DUAL_OVERLAID),
|
|
603
|
+
str(CamParams.ROIS_VIEW_OVERLAID),
|
|
576
604
|
]
|
|
577
605
|
|
|
578
606
|
@property
|
|
@@ -680,7 +708,7 @@ class CameraOptions(Tree):
|
|
|
680
708
|
return self.get_param_value(CamParams.LINE_PROFILER)
|
|
681
709
|
|
|
682
710
|
@property
|
|
683
|
-
def
|
|
711
|
+
def isHistogramPlot(self):
|
|
684
712
|
'''
|
|
685
713
|
Check if the LUT option is set to numpy lut.
|
|
686
714
|
|
|
@@ -689,7 +717,24 @@ class CameraOptions(Tree):
|
|
|
689
717
|
bool
|
|
690
718
|
True if the LUT option is set to numpy lut, False otherwise.
|
|
691
719
|
'''
|
|
692
|
-
return self.get_param_value(CamParams.
|
|
720
|
+
return self.get_param_value(CamParams.PLOT_TYPE) == 'Histogram'
|
|
721
|
+
|
|
722
|
+
@property
|
|
723
|
+
def dualViewColors(self):
|
|
724
|
+
'''
|
|
725
|
+
Get the dual view colors as channel indices.
|
|
726
|
+
|
|
727
|
+
Returns
|
|
728
|
+
-------
|
|
729
|
+
str
|
|
730
|
+
The selected dual view colors.
|
|
731
|
+
'''
|
|
732
|
+
# get the selected dual view colors from the parameter tree e.g. 'RG', 'GB', etc.
|
|
733
|
+
scheme = self.get_param_value(CamParams.DUAL_VIEW_COLORS)
|
|
734
|
+
|
|
735
|
+
indices = {'R': 0, 'G': 1, 'B': 2}
|
|
736
|
+
|
|
737
|
+
return [indices[c] for c in scheme]
|
|
693
738
|
|
|
694
739
|
|
|
695
740
|
if __name__ == '__main__':
|