microeye 2.3.5__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.
Files changed (205) hide show
  1. {microeye-2.3.5/src/microeye.egg-info → microeye-2.3.7}/PKG-INFO +29 -17
  2. {microeye-2.3.5 → microeye-2.3.7}/README.md +28 -16
  3. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/__init__.py +0 -5
  4. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/_version.py +1 -1
  5. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/cams/camera_options.py +2 -3
  6. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/cams/camera_panel.py +37 -21
  7. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/cams/line_profiler.py +1 -2
  8. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/cams/shortcuts.py +2 -4
  9. microeye-2.3.7/src/microEye/hardware/cams/vimba/__init__.py +1 -0
  10. microeye-2.3.7/src/microEye/hardware/lasers/__init__.py +1 -0
  11. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/lasers/io_matchbox.py +222 -87
  12. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/lasers/io_single_laser.py +189 -52
  13. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/lasers/laser_relay.py +6 -8
  14. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/mieye/acquisition_manager.py +13 -4
  15. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/mieye/devices_manager.py +22 -7
  16. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/mieye/miEye.py +20 -14
  17. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/misc/reglo.py +1 -1
  18. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/misc/temp.py +1 -1
  19. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/protocols/actions.py +4 -5
  20. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/protocols/actions_items.py +1 -1
  21. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/protocols/designer.py +0 -1
  22. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/protocols/scene_manager.py +0 -1
  23. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/protocols/serialization.py +2 -4
  24. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/pycromanager/core.py +7 -1
  25. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/pycromanager/devices.py +0 -8
  26. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/pycromanager/headless.py +0 -1
  27. microeye-2.3.7/src/microEye/hardware/stages/__init__.py +0 -0
  28. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/stages/elliptec/devicePort.py +1 -2
  29. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/stages/elliptec/devicesView.py +1 -1
  30. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/stages/kinesis/kdc101/enums.py +1 -1
  31. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/stages/kinesis/kdc101/factory.py +2 -0
  32. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/stages/kinesis/kdc101/kdc101.py +1 -2
  33. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/stages/kinesis/kinesis.py +3 -8
  34. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/stages/piezo_concept.py +1 -7
  35. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/stages/stabilizer.py +200 -194
  36. microeye-2.3.7/src/microEye/icons/__init__.py +0 -0
  37. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/launcher.py +1 -4
  38. microeye-2.3.7/src/microEye/tools/__init__.py +0 -0
  39. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/utils/display.py +23 -26
  40. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/utils/metadata.py +6 -1
  41. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/utils/metadata_tree.py +393 -220
  42. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/utils/thread_worker.py +0 -2
  43. {microeye-2.3.5 → microeye-2.3.7/src/microeye.egg-info}/PKG-INFO +29 -17
  44. microeye-2.3.5/src/microEye/analysis/__init__.py +0 -1
  45. microeye-2.3.5/src/microEye/hardware/__init__.py +0 -3
  46. microeye-2.3.5/src/microEye/hardware/lasers/__init__.py +0 -13
  47. microeye-2.3.5/src/microEye/hardware/protocols/__init__.py +0 -2
  48. microeye-2.3.5/src/microEye/hardware/stages/__init__.py +0 -13
  49. {microeye-2.3.5 → microeye-2.3.7}/LICENSE +0 -0
  50. {microeye-2.3.5 → microeye-2.3.7}/MANIFEST.in +0 -0
  51. {microeye-2.3.5 → microeye-2.3.7}/pyproject.toml +0 -0
  52. {microeye-2.3.5 → microeye-2.3.7}/setup.cfg +0 -0
  53. {microeye-2.3.5 → microeye-2.3.7}/setup.py +0 -0
  54. {microeye-2.3.5/src/microEye/analysis/fitting → microeye-2.3.7/src/microEye/analysis}/__init__.py +0 -0
  55. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/checklist_dialog.py +0 -0
  56. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/cmosMaps.py +0 -0
  57. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/filters/__init__.py +0 -0
  58. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/filters/base.py +0 -0
  59. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/filters/spatial.py +0 -0
  60. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/filters/temporal.py +0 -0
  61. {microeye-2.3.5/src/microEye/analysis/tools → microeye-2.3.7/src/microEye/analysis/fitting}/__init__.py +0 -0
  62. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/fit.py +0 -0
  63. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/nena.py +0 -0
  64. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/phasor_fit.py +0 -0
  65. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/processing.py +0 -0
  66. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/psf/__init__.py +0 -0
  67. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/psf/extract.py +0 -0
  68. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/psf/rubost_mean.py +0 -0
  69. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/psf/spline.py +0 -0
  70. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/psf/stats/__init__.py +0 -0
  71. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/psf/stats/core.py +0 -0
  72. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/psf/stats/curve_fit.py +0 -0
  73. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/psf/stats/io.py +0 -0
  74. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/psf/stats/slope_fit.py +0 -0
  75. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/psf/temp.py +0 -0
  76. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/psf/test.py +0 -0
  77. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/pyfit3Dcspline/CPU/CPUfunctions.py +0 -0
  78. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/pyfit3Dcspline/CPU/CPUmleFit_LM.py +0 -0
  79. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/pyfit3Dcspline/CPU/CPUsplineLib.py +0 -0
  80. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/pyfit3Dcspline/CPU/__init__.py +0 -0
  81. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/pyfit3Dcspline/GPU/GPUfunctions.py +0 -0
  82. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/pyfit3Dcspline/GPU/GPUmleFit_LM_EMCCD.py +0 -0
  83. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/pyfit3Dcspline/GPU/GPUmleFit_LM_sCMOS.py +0 -0
  84. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/pyfit3Dcspline/GPU/GPUsplineLib.py +0 -0
  85. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/pyfit3Dcspline/GPU/__init__.py +0 -0
  86. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/pyfit3Dcspline/__init__.py +0 -0
  87. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/pyfit3Dcspline/constants.py +0 -0
  88. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/pyfit3Dcspline/mainfunctions.py +0 -0
  89. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/results.py +0 -0
  90. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/results_stats.py +0 -0
  91. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/fitting/tardis.py +0 -0
  92. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/multi_viewer.py +0 -0
  93. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/processing/__init__.py +0 -0
  94. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/processing/frc.py +0 -0
  95. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/rendering/__init__.py +0 -0
  96. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/rendering/base.py +0 -0
  97. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/rendering/cloud.py +0 -0
  98. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/rendering/core.py +0 -0
  99. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/rendering/volumetric.py +0 -0
  100. {microeye-2.3.5/src/microEye/hardware/misc → microeye-2.3.7/src/microEye/analysis/tools}/__init__.py +0 -0
  101. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/tools/kymograms.py +0 -0
  102. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/tools/roi_selectors.py +0 -0
  103. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/utils/__init__.py +0 -0
  104. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/utils/coordinates.py +0 -0
  105. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/utils/images.py +0 -0
  106. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/utils/windows.py +0 -0
  107. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/viewer/__init__.py +0 -0
  108. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/viewer/image_options_widget.py +0 -0
  109. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/viewer/images.py +0 -0
  110. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/viewer/layers_widget.py +0 -0
  111. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/viewer/localizations.py +0 -0
  112. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/viewer/psf.py +0 -0
  113. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/analysis/viewer/volume.py +0 -0
  114. {microeye-2.3.5/src/microEye/hardware/cams/dummy → microeye-2.3.7/src/microEye/hardware}/__init__.py +0 -0
  115. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/cams/__init__.py +0 -0
  116. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/cams/camera_calibration.py +0 -0
  117. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/cams/camera_list.py +0 -0
  118. {microeye-2.3.5/src/microEye/hardware/cams/linescan → microeye-2.3.7/src/microEye/hardware/cams/dummy}/__init__.py +0 -0
  119. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/cams/dummy/dummy_panel.py +0 -0
  120. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/cams/jobs.py +0 -0
  121. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/cams/linescan/IR_Cam.py +0 -0
  122. {microeye-2.3.5/src/microEye/hardware/cams/thorlabs → microeye-2.3.7/src/microEye/hardware/cams/linescan}/__init__.py +0 -0
  123. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/cams/micam.py +0 -0
  124. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/cams/pco/__init__.py +0 -0
  125. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/cams/pco/enums.py +0 -0
  126. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/cams/pco/pco_cam.py +0 -0
  127. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/cams/pco/pco_panel.py +0 -0
  128. {microeye-2.3.5/src/microEye/hardware/cams/ueye → microeye-2.3.7/src/microEye/hardware/cams/thorlabs}/__init__.py +0 -0
  129. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/cams/thorlabs/thorlabs.py +0 -0
  130. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/cams/thorlabs/thorlabs_panel.py +0 -0
  131. {microeye-2.3.5/src/microEye/hardware/cams/vimba → microeye-2.3.7/src/microEye/hardware/cams/ueye}/__init__.py +0 -0
  132. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/cams/ueye/ueye_camera.py +0 -0
  133. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/cams/ueye/ueye_panel.py +0 -0
  134. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/cams/vimba/vimba_cam.py +0 -0
  135. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/cams/vimba/vimba_panel.py +0 -0
  136. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/device.py +0 -0
  137. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/lasers/io_params.py +0 -0
  138. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/mieye/__init__.py +0 -0
  139. {microeye-2.3.5/src/microEye/icons → microeye-2.3.7/src/microEye/hardware/misc}/__init__.py +0 -0
  140. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/misc/acquisition_view.py +0 -0
  141. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/port_config.py +0 -0
  142. {microeye-2.3.5/src/microEye/tools → microeye-2.3.7/src/microEye/hardware/protocols}/__init__.py +0 -0
  143. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/pycromanager/__init__.py +0 -0
  144. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/pycromanager/enums.py +0 -0
  145. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/pycromanager/utils.py +0 -0
  146. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/pycromanager/widgets/__init__.py +0 -0
  147. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/pycromanager/widgets/bridges.py +0 -0
  148. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/pycromanager/widgets/headless_manager.py +0 -0
  149. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/pycromanager/widgets/headless_options.py +0 -0
  150. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/pycromanager/widgets/pycro_panel.py +0 -0
  151. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/stages/elliptec/__init__.py +0 -0
  152. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/stages/elliptec/baseDevice.py +0 -0
  153. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/stages/elliptec/device.py +0 -0
  154. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/stages/elliptec/deviceID.py +0 -0
  155. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/stages/elliptec/deviceStatus.py +0 -0
  156. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/stages/elliptec/ellDevices.py +0 -0
  157. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/stages/elliptec/messageUpdater.py +0 -0
  158. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/stages/elliptec/motorInfo.py +0 -0
  159. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/stages/elliptec/stage.py +0 -0
  160. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/stages/elliptec/test.py +0 -0
  161. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/stages/kinesis/__init__.py +0 -0
  162. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/stages/kinesis/kdc101/__init__.py +0 -0
  163. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/stages/stage.py +0 -0
  164. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/widgets/__init__.py +0 -0
  165. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/widgets/controller.py +0 -0
  166. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/widgets/devices.py +0 -0
  167. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/widgets/focusWidget.py +0 -0
  168. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/widgets/qlist_slider.py +0 -0
  169. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/hardware/widgets/scan_acquisition.py +0 -0
  170. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/icons/1024.png +0 -0
  171. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/icons/128.png +0 -0
  172. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/icons/16.png +0 -0
  173. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/icons/24.png +0 -0
  174. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/icons/256.png +0 -0
  175. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/icons/32.png +0 -0
  176. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/icons/48.png +0 -0
  177. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/icons/512.png +0 -0
  178. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/icons/64.png +0 -0
  179. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/icons/close.svg +0 -0
  180. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/icons/mieye.png +0 -0
  181. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/icons/min.svg +0 -0
  182. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/icons/viewer.png +0 -0
  183. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/qt.py +0 -0
  184. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/tools/microscopy.py +0 -0
  185. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/utils/__init__.py +0 -0
  186. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/utils/enum_encoder.py +0 -0
  187. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/utils/expandable_groupbox.py +0 -0
  188. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/utils/gui_helper.py +0 -0
  189. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/utils/hid_utils/__init__.py +0 -0
  190. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/utils/hid_utils/controller.py +0 -0
  191. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/utils/hid_utils/device.py +0 -0
  192. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/utils/hid_utils/enums.py +0 -0
  193. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/utils/hid_utils/utils.py +0 -0
  194. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/utils/labelled_slider.py +0 -0
  195. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/utils/micro_launcher.py +0 -0
  196. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/utils/parameter_tree.py +0 -0
  197. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/utils/pyscripting.py +0 -0
  198. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/utils/retry_exec.py +0 -0
  199. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/utils/start_gui.py +0 -0
  200. {microeye-2.3.5 → microeye-2.3.7}/src/microEye/utils/uImage.py +0 -0
  201. {microeye-2.3.5 → microeye-2.3.7}/src/microeye.egg-info/SOURCES.txt +0 -0
  202. {microeye-2.3.5 → microeye-2.3.7}/src/microeye.egg-info/dependency_links.txt +0 -0
  203. {microeye-2.3.5 → microeye-2.3.7}/src/microeye.egg-info/entry_points.txt +0 -0
  204. {microeye-2.3.5 → microeye-2.3.7}/src/microeye.egg-info/requires.txt +0 -0
  205. {microeye-2.3.5 → 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.5
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,11 +95,11 @@ This toolkit is compatible with the [hardware](#hardware) used in our microscope
95
95
  ![GitHub Stars](https://img.shields.io/github/stars/samhitech/microEye.svg)
96
96
 
97
97
  ```bash
98
- __ __ _ ___ ___ ____ ___
99
- | \/ (_)__ _ _ ___| __| _ ___ __ _|_ ) |__ / | __|
100
- | |\/| | / _| '_/ _ \ _| || / -_) \ V // / _ |_ \_|__ \
101
- |_| |_|_\__|_| \___/___\_, \___| \_//___(_)___(_)___/
102
- |__/
98
+ __ ____ ____ ___ ____ ____
99
+ / |/ (_)__________ / __/_ _____ _ __|_ | |_ //_ /
100
+ / /|_/ / / __/ __/ _ \/ _// // / -_) | |/ / __/_ _/_ <_ / /
101
+ /_/ /_/_/\__/_/ \___/___/\_, /\__/ |___/____(_)____(_)_/
102
+ /___/
103
103
  ```
104
104
 
105
105
  ## Table of Contents
@@ -121,6 +121,7 @@ This toolkit is compatible with the [hardware](#hardware) used in our microscope
121
121
  - [Additional Hardware](#additional-hardware)
122
122
  - [Pycro-Manager Integration](#pycro-manager-integration)
123
123
  - [Features](#features)
124
+ - [Integrated Hardware](#integrated-hardware)
124
125
  - [How to Use](#how-to-use)
125
126
  - [Authors](#authors)
126
127
  - [People Involved](#people-involved)
@@ -317,25 +318,27 @@ Schematic overview of the miEye instrument:
317
318
 
318
319
  ### Supported Cameras
319
320
 
320
- | Camera | Description | Link |
321
- | ------------------------- | ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------- |
322
- | 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) |
323
- | Thorlabs DCC1545M | DCx camera using UC480 driver | [Link](https://www.thorlabs.com/thorProduct.cfm?partNumber=DCC1545M) |
324
- | 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 | - |
325
328
 
326
329
  ### Additional Hardware
327
330
 
328
331
  | Hardware | Description | Link |
329
332
  | --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
330
- | Integrated Optics MatchBox | Multi-wavelength Laser Combiner, Single Laser MatchBox | [Link](https://integratedoptics.com/products/wavelength-combiners) |
331
- | 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) |
332
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) |
333
336
  | Thorlabs Elliptec ELL14 | Rotation Mount: SM1 Threaded | [ELL14](https://www.thorlabs.com/thorproduct.cfm?partnumber=ELL14) |
334
337
  | Thorlabs Elliptec ELL20 | Linear Stage: 60 mm Travel | [ELL20](https://www.thorlabs.com/thorproduct.cfm?partnumber=ELL20) |
335
- | 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) |
336
- | 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) |
337
340
  | RelayBox Arduino | For laser control using camera GPIO signals | [RelayBox](https://github.com/samhitech/RelayBox) |
338
- | 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/) |
339
342
 
340
343
  ## Pycro-Manager Integration
341
344
 
@@ -346,6 +349,15 @@ Integration with Pycro-Manager is now implemented, providing support for managin
346
349
  - **Headless Manager**: Manage multiple headless Micro-Manager instances (JavaBackend), including starting, stopping, and saving configurations.
347
350
  - **Core Instances Manager**: Handle multiple PycroCore instances for device communication and control.
348
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
+
349
361
  ### How to Use
350
362
 
351
363
  1. **Headless Manager**:
@@ -410,7 +422,7 @@ Special thanks to the following projects and libraries that make this work possi
410
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)
411
423
 
412
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:
413
- > 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)
414
426
 
415
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.
416
428
 
@@ -31,11 +31,11 @@ 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
- | |\/| | / _| '_/ _ \ _| || / -_) \ V // / _ |_ \_|__ \
37
- |_| |_|_\__|_| \___/___\_, \___| \_//___(_)___(_)___/
38
- |__/
34
+ __ ____ ____ ___ ____ ____
35
+ / |/ (_)__________ / __/_ _____ _ __|_ | |_ //_ /
36
+ / /|_/ / / __/ __/ _ \/ _// // / -_) | |/ / __/_ _/_ <_ / /
37
+ /_/ /_/_/\__/_/ \___/___/\_, /\__/ |___/____(_)____(_)_/
38
+ /___/
39
39
  ```
40
40
 
41
41
  ## Table of Contents
@@ -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)
@@ -253,25 +254,27 @@ Schematic overview of the miEye instrument:
253
254
 
254
255
  ### Supported Cameras
255
256
 
256
- | Camera | Description | Link |
257
- | ------------------------- | ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------- |
258
- | 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) |
259
- | Thorlabs DCC1545M | DCx camera using UC480 driver | [Link](https://www.thorlabs.com/thorProduct.cfm?partNumber=DCC1545M) |
260
- | 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 | - |
261
264
 
262
265
  ### Additional Hardware
263
266
 
264
267
  | Hardware | Description | Link |
265
268
  | --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
266
- | Integrated Optics MatchBox | Multi-wavelength Laser Combiner, Single Laser MatchBox | [Link](https://integratedoptics.com/products/wavelength-combiners) |
267
- | 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) |
268
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) |
269
272
  | Thorlabs Elliptec ELL14 | Rotation Mount: SM1 Threaded | [ELL14](https://www.thorlabs.com/thorproduct.cfm?partnumber=ELL14) |
270
273
  | Thorlabs Elliptec ELL20 | Linear Stage: 60 mm Travel | [ELL20](https://www.thorlabs.com/thorproduct.cfm?partnumber=ELL20) |
271
- | 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) |
272
- | 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) |
273
276
  | RelayBox Arduino | For laser control using camera GPIO signals | [RelayBox](https://github.com/samhitech/RelayBox) |
274
- | 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/) |
275
278
 
276
279
  ## Pycro-Manager Integration
277
280
 
@@ -282,6 +285,15 @@ Integration with Pycro-Manager is now implemented, providing support for managin
282
285
  - **Headless Manager**: Manage multiple headless Micro-Manager instances (JavaBackend), including starting, stopping, and saving configurations.
283
286
  - **Core Instances Manager**: Handle multiple PycroCore instances for device communication and control.
284
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
+
285
297
  ### How to Use
286
298
 
287
299
  1. **Headless Manager**:
@@ -346,7 +358,7 @@ Special thanks to the following projects and libraries that make this work possi
346
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)
347
359
 
348
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:
349
- > 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)
350
362
 
351
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.
352
364
 
@@ -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, 5)
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 Any, Optional
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 Optional, Union
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,
@@ -25,8 +20,7 @@ from microEye.hardware.cams.shortcuts import (
25
20
  CameraShortcutsWidget,
26
21
  )
27
22
  from microEye.qt import QDateTime, Qt, QtCore, QtWidgets, Signal, Slot
28
- from microEye.utils.display import DisplayManager
29
- from microEye.utils.expandable_groupbox import ExpandableGroupBox
23
+ from microEye.utils.display import DisplayManager, fast_autolevels_opencv
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
  {
@@ -848,6 +859,10 @@ def display_frame(
848
859
  if isinstance(frame, uImage):
849
860
  frame = frame._image
850
861
 
862
+ thresholds, hist, cdf = fast_autolevels_opencv(
863
+ frame, levels=camp.camera_options.isAutostretch
864
+ )
865
+
851
866
  # cv2.imshow(name, frame)
852
867
  DisplayManager.instance().image_update_signal.emit(
853
868
  name,
@@ -862,6 +877,8 @@ def display_frame(
862
877
  'isROIsView': camp.camera_options.isROIsView,
863
878
  'isOverlaidView': camp.camera_options.isOverlaidView,
864
879
  'plot_type': camp.camera_options.isHistogramPlot,
880
+ 'threshold': thresholds,
881
+ 'plot': hist if camp.camera_options.isHistogramPlot else cdf,
865
882
  },
866
883
  )
867
884
 
@@ -890,7 +907,6 @@ def update_histogram_and_display(params: AcquisitionJob, camp: Camera_Panel):
890
907
  display_frame(camp, params.name, params.frame)
891
908
 
892
909
  elif camp.camera_options.isROIsView:
893
-
894
910
  overlaid = len(params.rois) == 2 and camp.camera_options.isOverlaidView
895
911
  flipped = camp.camera_options.isFlippedROIsView
896
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, Slot
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 QDateTime, Qt, QtCore, QtGui, QtWidgets, Signal, Slot
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):