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.
Files changed (201) hide show
  1. {microeye-2.3.4/src/microeye.egg-info → microeye-2.3.6}/PKG-INFO +44 -30
  2. {microeye-2.3.4 → microeye-2.3.6}/README.md +42 -27
  3. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/_version.py +1 -1
  4. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/tools/roi_selectors.py +5 -5
  5. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/camera_options.py +56 -11
  6. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/camera_panel.py +154 -256
  7. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/jobs.py +4 -2
  8. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/shortcuts.py +90 -17
  9. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/lasers/io_matchbox.py +140 -42
  10. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/lasers/io_single_laser.py +129 -28
  11. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/mieye/devices_manager.py +8 -3
  12. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/mieye/miEye.py +3 -0
  13. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/pycromanager/devices.py +1 -1
  14. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/piezo_concept.py +4 -4
  15. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/stabilizer.py +3 -0
  16. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/stage.py +5 -3
  17. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/widgets/controller.py +27 -4
  18. microeye-2.3.6/src/microEye/utils/display.py +484 -0
  19. {microeye-2.3.4 → microeye-2.3.6/src/microeye.egg-info}/PKG-INFO +44 -30
  20. {microeye-2.3.4 → microeye-2.3.6}/src/microeye.egg-info/requires.txt +1 -2
  21. microeye-2.3.4/src/microEye/utils/display.py +0 -278
  22. {microeye-2.3.4 → microeye-2.3.6}/LICENSE +0 -0
  23. {microeye-2.3.4 → microeye-2.3.6}/MANIFEST.in +0 -0
  24. {microeye-2.3.4 → microeye-2.3.6}/pyproject.toml +0 -0
  25. {microeye-2.3.4 → microeye-2.3.6}/setup.cfg +0 -0
  26. {microeye-2.3.4 → microeye-2.3.6}/setup.py +0 -0
  27. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/__init__.py +0 -0
  28. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/__init__.py +0 -0
  29. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/checklist_dialog.py +0 -0
  30. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/cmosMaps.py +0 -0
  31. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/filters/__init__.py +0 -0
  32. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/filters/base.py +0 -0
  33. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/filters/spatial.py +0 -0
  34. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/filters/temporal.py +0 -0
  35. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/__init__.py +0 -0
  36. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/fit.py +0 -0
  37. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/nena.py +0 -0
  38. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/phasor_fit.py +0 -0
  39. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/processing.py +0 -0
  40. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/psf/__init__.py +0 -0
  41. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/psf/extract.py +0 -0
  42. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/psf/rubost_mean.py +0 -0
  43. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/psf/spline.py +0 -0
  44. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/psf/stats/__init__.py +0 -0
  45. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/psf/stats/core.py +0 -0
  46. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/psf/stats/curve_fit.py +0 -0
  47. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/psf/stats/io.py +0 -0
  48. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/psf/stats/slope_fit.py +0 -0
  49. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/psf/temp.py +0 -0
  50. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/psf/test.py +0 -0
  51. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/pyfit3Dcspline/CPU/CPUfunctions.py +0 -0
  52. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/pyfit3Dcspline/CPU/CPUmleFit_LM.py +0 -0
  53. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/pyfit3Dcspline/CPU/CPUsplineLib.py +0 -0
  54. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/pyfit3Dcspline/CPU/__init__.py +0 -0
  55. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/pyfit3Dcspline/GPU/GPUfunctions.py +0 -0
  56. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/pyfit3Dcspline/GPU/GPUmleFit_LM_EMCCD.py +0 -0
  57. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/pyfit3Dcspline/GPU/GPUmleFit_LM_sCMOS.py +0 -0
  58. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/pyfit3Dcspline/GPU/GPUsplineLib.py +0 -0
  59. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/pyfit3Dcspline/GPU/__init__.py +0 -0
  60. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/pyfit3Dcspline/__init__.py +0 -0
  61. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/pyfit3Dcspline/constants.py +0 -0
  62. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/pyfit3Dcspline/mainfunctions.py +0 -0
  63. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/results.py +0 -0
  64. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/results_stats.py +0 -0
  65. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/fitting/tardis.py +0 -0
  66. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/multi_viewer.py +0 -0
  67. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/processing/__init__.py +0 -0
  68. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/processing/frc.py +0 -0
  69. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/rendering/__init__.py +0 -0
  70. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/rendering/base.py +0 -0
  71. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/rendering/cloud.py +0 -0
  72. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/rendering/core.py +0 -0
  73. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/rendering/volumetric.py +0 -0
  74. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/tools/__init__.py +0 -0
  75. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/tools/kymograms.py +0 -0
  76. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/utils/__init__.py +0 -0
  77. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/utils/coordinates.py +0 -0
  78. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/utils/images.py +0 -0
  79. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/utils/windows.py +0 -0
  80. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/viewer/__init__.py +0 -0
  81. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/viewer/image_options_widget.py +0 -0
  82. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/viewer/images.py +0 -0
  83. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/viewer/layers_widget.py +0 -0
  84. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/viewer/localizations.py +0 -0
  85. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/viewer/psf.py +0 -0
  86. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/analysis/viewer/volume.py +0 -0
  87. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/__init__.py +0 -0
  88. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/__init__.py +0 -0
  89. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/camera_calibration.py +0 -0
  90. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/camera_list.py +0 -0
  91. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/dummy/__init__.py +0 -0
  92. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/dummy/dummy_panel.py +0 -0
  93. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/line_profiler.py +0 -0
  94. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/linescan/IR_Cam.py +0 -0
  95. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/linescan/__init__.py +0 -0
  96. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/micam.py +0 -0
  97. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/pco/__init__.py +0 -0
  98. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/pco/enums.py +0 -0
  99. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/pco/pco_cam.py +0 -0
  100. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/pco/pco_panel.py +0 -0
  101. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/thorlabs/__init__.py +0 -0
  102. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/thorlabs/thorlabs.py +0 -0
  103. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/thorlabs/thorlabs_panel.py +0 -0
  104. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/ueye/__init__.py +0 -0
  105. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/ueye/ueye_camera.py +0 -0
  106. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/ueye/ueye_panel.py +0 -0
  107. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/vimba/__init__.py +0 -0
  108. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/vimba/vimba_cam.py +0 -0
  109. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/cams/vimba/vimba_panel.py +0 -0
  110. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/device.py +0 -0
  111. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/lasers/__init__.py +0 -0
  112. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/lasers/io_params.py +0 -0
  113. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/lasers/laser_relay.py +0 -0
  114. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/mieye/__init__.py +0 -0
  115. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/mieye/acquisition_manager.py +0 -0
  116. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/misc/__init__.py +0 -0
  117. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/misc/acquisition_view.py +0 -0
  118. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/misc/reglo.py +0 -0
  119. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/misc/temp.py +0 -0
  120. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/port_config.py +0 -0
  121. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/protocols/__init__.py +0 -0
  122. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/protocols/actions.py +0 -0
  123. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/protocols/actions_items.py +0 -0
  124. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/protocols/designer.py +0 -0
  125. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/protocols/scene_manager.py +0 -0
  126. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/protocols/serialization.py +0 -0
  127. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/pycromanager/__init__.py +0 -0
  128. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/pycromanager/core.py +0 -0
  129. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/pycromanager/enums.py +0 -0
  130. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/pycromanager/headless.py +0 -0
  131. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/pycromanager/utils.py +0 -0
  132. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/pycromanager/widgets/__init__.py +0 -0
  133. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/pycromanager/widgets/bridges.py +0 -0
  134. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/pycromanager/widgets/headless_manager.py +0 -0
  135. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/pycromanager/widgets/headless_options.py +0 -0
  136. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/pycromanager/widgets/pycro_panel.py +0 -0
  137. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/__init__.py +0 -0
  138. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/elliptec/__init__.py +0 -0
  139. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/elliptec/baseDevice.py +0 -0
  140. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/elliptec/device.py +0 -0
  141. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/elliptec/deviceID.py +0 -0
  142. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/elliptec/devicePort.py +0 -0
  143. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/elliptec/deviceStatus.py +0 -0
  144. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/elliptec/devicesView.py +0 -0
  145. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/elliptec/ellDevices.py +0 -0
  146. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/elliptec/messageUpdater.py +0 -0
  147. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/elliptec/motorInfo.py +0 -0
  148. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/elliptec/stage.py +0 -0
  149. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/elliptec/test.py +0 -0
  150. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/kinesis/__init__.py +0 -0
  151. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/kinesis/kdc101/__init__.py +0 -0
  152. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/kinesis/kdc101/enums.py +0 -0
  153. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/kinesis/kdc101/factory.py +0 -0
  154. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/kinesis/kdc101/kdc101.py +0 -0
  155. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/stages/kinesis/kinesis.py +0 -0
  156. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/widgets/__init__.py +0 -0
  157. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/widgets/devices.py +0 -0
  158. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/widgets/focusWidget.py +0 -0
  159. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/widgets/qlist_slider.py +0 -0
  160. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/hardware/widgets/scan_acquisition.py +0 -0
  161. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/icons/1024.png +0 -0
  162. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/icons/128.png +0 -0
  163. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/icons/16.png +0 -0
  164. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/icons/24.png +0 -0
  165. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/icons/256.png +0 -0
  166. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/icons/32.png +0 -0
  167. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/icons/48.png +0 -0
  168. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/icons/512.png +0 -0
  169. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/icons/64.png +0 -0
  170. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/icons/__init__.py +0 -0
  171. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/icons/close.svg +0 -0
  172. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/icons/mieye.png +0 -0
  173. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/icons/min.svg +0 -0
  174. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/icons/viewer.png +0 -0
  175. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/launcher.py +0 -0
  176. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/qt.py +0 -0
  177. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/tools/__init__.py +0 -0
  178. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/tools/microscopy.py +0 -0
  179. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/__init__.py +0 -0
  180. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/enum_encoder.py +0 -0
  181. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/expandable_groupbox.py +0 -0
  182. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/gui_helper.py +0 -0
  183. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/hid_utils/__init__.py +0 -0
  184. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/hid_utils/controller.py +0 -0
  185. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/hid_utils/device.py +0 -0
  186. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/hid_utils/enums.py +0 -0
  187. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/hid_utils/utils.py +0 -0
  188. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/labelled_slider.py +0 -0
  189. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/metadata.py +0 -0
  190. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/metadata_tree.py +0 -0
  191. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/micro_launcher.py +0 -0
  192. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/parameter_tree.py +0 -0
  193. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/pyscripting.py +0 -0
  194. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/retry_exec.py +0 -0
  195. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/start_gui.py +0 -0
  196. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/thread_worker.py +0 -0
  197. {microeye-2.3.4 → microeye-2.3.6}/src/microEye/utils/uImage.py +0 -0
  198. {microeye-2.3.4 → microeye-2.3.6}/src/microeye.egg-info/SOURCES.txt +0 -0
  199. {microeye-2.3.4 → microeye-2.3.6}/src/microeye.egg-info/dependency_links.txt +0 -0
  200. {microeye-2.3.4 → microeye-2.3.6}/src/microeye.egg-info/entry_points.txt +0 -0
  201. {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.4
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: vispy==0.14.2
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
  ![GitHub Stars](https://img.shields.io/github/stars/samhitech/microEye.svg)
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
- | dask | PySide6 | autopep8 | opencv-python | ome-types | hidapi |
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 | | | | | |
294
- | tifffile | | | | | |
295
- | vispy | | | | | |
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
- | Camera | Description | Link |
319
- | ------------------------- | ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------- |
320
- | IDS uEye UI-3060CP Rev. 2 | IDS industrial-grade CMOS cameras | [Link](https://en.ids-imaging.com/store/products/cameras/ui-3060cp-rev-2.html) |
321
- | Thorlabs DCC1545M | DCx camera using UC480 driver | [Link](https://www.thorlabs.com/thorProduct.cfm?partNumber=DCC1545M) |
322
- | Allied Vision Alvium 1800 | Allied Vision industrial-grade CMOS cameras (U-158m, U-511m) | [Link](https://www.alliedvision.com/en/products/alvium-configurator/alvium-1800-u/158/#_configurator) |
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 | [Link](https://piezoconcept-store.squarespace.com/1-axis/p/foc) |
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) | [Link](https://www.thorlabs.com/thorproduct.cfm?partnumber=KDC101) |
334
- | Parallax TSL1401-DB (#28317) | Linescan Camera Module | [Link](https://eu.mouser.com/ProductDetail/Parallax/28317?qs=%2Fha2pyFaduiCRhuOAXMuCmQIeG1Q3R01m6Y1EH%252BmN80%3D) |
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). [Link](https://rdcu.be/dv1sr)
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
  ![GitHub Stars](https://img.shields.io/github/stars/samhitech/microEye.svg)
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
- | dask | PySide6 | autopep8 | opencv-python | ome-types | hidapi |
222
- | matplotlib | pyqtdarktheme | pyflakes | | tables | pyfiglet |
223
- | numba | pyqtgraph | | | zarr | pyserial |
224
- | numpy | QDarkStyle | | | | pyjokes |
225
- | pandas | QScintilla | | | | setuptools |
226
- | scikit-image | PyQt5 (optional) | | | | tabulate |
227
- | scikit_learn | PyQt6 (optional) | | | | pyueye |
228
- | scipy | | | | | |
229
- | tifffile | | | | | |
230
- | vispy | | | | | |
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
- | Camera | Description | Link |
254
- | ------------------------- | ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------- |
255
- | IDS uEye UI-3060CP Rev. 2 | IDS industrial-grade CMOS cameras | [Link](https://en.ids-imaging.com/store/products/cameras/ui-3060cp-rev-2.html) |
256
- | Thorlabs DCC1545M | DCx camera using UC480 driver | [Link](https://www.thorlabs.com/thorProduct.cfm?partNumber=DCC1545M) |
257
- | Allied Vision Alvium 1800 | Allied Vision industrial-grade CMOS cameras (U-158m, U-511m) | [Link](https://www.alliedvision.com/en/products/alvium-configurator/alvium-1800-u/158/#_configurator) |
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 | [Link](https://piezoconcept-store.squarespace.com/1-axis/p/foc) |
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) | [Link](https://www.thorlabs.com/thorproduct.cfm?partnumber=KDC101) |
269
- | Parallax TSL1401-DB (#28317) | Linescan Camera Module | [Link](https://eu.mouser.com/ProductDetail/Parallax/28317?qs=%2Fha2pyFaduiCRhuOAXMuCmQIeG1Q3R01m6Y1EH%252BmN80%3D) |
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). [Link](https://rdcu.be/dv1sr)
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, 4)
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 == ord('a'):
406
+ elif key in [ord('a'), ord('A')]:
407
407
  while self.current_mode != 'Add':
408
408
  self.cycle_mode()
409
- elif key == ord('e'):
409
+ elif key in [ord('e'), ord('E')]:
410
410
  while self.current_mode != 'Edit':
411
411
  self.cycle_mode()
412
- elif key == ord('i'):
412
+ elif key in [ord('i'), ord('I')]:
413
413
  while self.current_mode != 'Insert':
414
414
  self.cycle_mode()
415
- elif key == ord('m'):
415
+ elif key in [ord('m'), ord('M')]:
416
416
  while self.current_mode != 'Move':
417
417
  self.cycle_mode()
418
- elif key == ord('r'):
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
- DUAL_SIDE = 'Display.View Options.Dual Channel (Side by Side)'
56
- DUAL_OVERLAID = 'Display.View Options.Dual Channel (Overlapped)'
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.LUT),
215
+ 'name': str(CamParams.PLOT_TYPE),
212
216
  'type': 'list',
213
- 'limits': [str(CamParams.LUT_NUMPY), str(CamParams.LUT_OPENCV)],
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.DUAL_SIDE),
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 isNumpyLUT(self):
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.LUT) in [str(CamParams.LUT_NUMPY)]
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__':