microeye 2.3.2__py3-none-any.whl

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 (190) hide show
  1. microEye/__init__.py +47 -0
  2. microEye/_version.py +2 -0
  3. microEye/analysis/__init__.py +1 -0
  4. microEye/analysis/checklist_dialog.py +143 -0
  5. microEye/analysis/cmosMaps.py +228 -0
  6. microEye/analysis/filters/__init__.py +9 -0
  7. microEye/analysis/filters/base.py +21 -0
  8. microEye/analysis/filters/spatial.py +338 -0
  9. microEye/analysis/filters/temporal.py +76 -0
  10. microEye/analysis/fitting/__init__.py +0 -0
  11. microEye/analysis/fitting/fit.py +680 -0
  12. microEye/analysis/fitting/nena.py +375 -0
  13. microEye/analysis/fitting/phasor_fit.py +90 -0
  14. microEye/analysis/fitting/processing.py +317 -0
  15. microEye/analysis/fitting/psf/__init__.py +6 -0
  16. microEye/analysis/fitting/psf/extract.py +1129 -0
  17. microEye/analysis/fitting/psf/rubost_mean.py +150 -0
  18. microEye/analysis/fitting/psf/spline.py +167 -0
  19. microEye/analysis/fitting/psf/stats/__init__.py +12 -0
  20. microEye/analysis/fitting/psf/stats/core.py +295 -0
  21. microEye/analysis/fitting/psf/stats/curve_fit.py +708 -0
  22. microEye/analysis/fitting/psf/stats/io.py +104 -0
  23. microEye/analysis/fitting/psf/stats/slope_fit.py +171 -0
  24. microEye/analysis/fitting/psf/temp.py +147 -0
  25. microEye/analysis/fitting/psf/test.py +47 -0
  26. microEye/analysis/fitting/pyfit3Dcspline/CPU/CPUfunctions.py +657 -0
  27. microEye/analysis/fitting/pyfit3Dcspline/CPU/CPUmleFit_LM.py +1336 -0
  28. microEye/analysis/fitting/pyfit3Dcspline/CPU/CPUsplineLib.py +270 -0
  29. microEye/analysis/fitting/pyfit3Dcspline/CPU/__init__.py +1 -0
  30. microEye/analysis/fitting/pyfit3Dcspline/GPU/GPUfunctions.py +609 -0
  31. microEye/analysis/fitting/pyfit3Dcspline/GPU/GPUmleFit_LM_EMCCD.py +1396 -0
  32. microEye/analysis/fitting/pyfit3Dcspline/GPU/GPUmleFit_LM_sCMOS.py +1426 -0
  33. microEye/analysis/fitting/pyfit3Dcspline/GPU/GPUsplineLib.py +231 -0
  34. microEye/analysis/fitting/pyfit3Dcspline/GPU/__init__.py +2 -0
  35. microEye/analysis/fitting/pyfit3Dcspline/__init__.py +10 -0
  36. microEye/analysis/fitting/pyfit3Dcspline/constants.py +27 -0
  37. microEye/analysis/fitting/pyfit3Dcspline/mainfunctions.py +903 -0
  38. microEye/analysis/fitting/results.py +917 -0
  39. microEye/analysis/fitting/results_stats.py +251 -0
  40. microEye/analysis/fitting/tardis.py +209 -0
  41. microEye/analysis/multi_viewer.py +568 -0
  42. microEye/analysis/processing/__init__.py +1 -0
  43. microEye/analysis/processing/frc.py +120 -0
  44. microEye/analysis/rendering/__init__.py +3 -0
  45. microEye/analysis/rendering/base.py +452 -0
  46. microEye/analysis/rendering/cloud.py +215 -0
  47. microEye/analysis/rendering/core.py +47 -0
  48. microEye/analysis/rendering/volumetric.py +198 -0
  49. microEye/analysis/tools/__init__.py +0 -0
  50. microEye/analysis/tools/kymograms.py +1079 -0
  51. microEye/analysis/tools/roi_selectors.py +556 -0
  52. microEye/analysis/utils/__init__.py +3 -0
  53. microEye/analysis/utils/coordinates.py +18 -0
  54. microEye/analysis/utils/images.py +68 -0
  55. microEye/analysis/utils/windows.py +19 -0
  56. microEye/analysis/viewer/__init__.py +3 -0
  57. microEye/analysis/viewer/image_options_widget.py +615 -0
  58. microEye/analysis/viewer/images.py +1225 -0
  59. microEye/analysis/viewer/layers_widget.py +415 -0
  60. microEye/analysis/viewer/localizations.py +1304 -0
  61. microEye/analysis/viewer/psf.py +1003 -0
  62. microEye/analysis/viewer/volume.py +456 -0
  63. microEye/hardware/__init__.py +3 -0
  64. microEye/hardware/cams/__init__.py +29 -0
  65. microEye/hardware/cams/camera_calibration.py +99 -0
  66. microEye/hardware/cams/camera_list.py +528 -0
  67. microEye/hardware/cams/camera_options.py +694 -0
  68. microEye/hardware/cams/camera_panel.py +941 -0
  69. microEye/hardware/cams/dummy/__init__.py +1 -0
  70. microEye/hardware/cams/dummy/dummy_panel.py +759 -0
  71. microEye/hardware/cams/jobs.py +497 -0
  72. microEye/hardware/cams/line_profiler.py +99 -0
  73. microEye/hardware/cams/linescan/IR_Cam.py +474 -0
  74. microEye/hardware/cams/linescan/__init__.py +1 -0
  75. microEye/hardware/cams/micam.py +524 -0
  76. microEye/hardware/cams/pco/__init__.py +58 -0
  77. microEye/hardware/cams/pco/enums.py +382 -0
  78. microEye/hardware/cams/pco/pco_cam.py +761 -0
  79. microEye/hardware/cams/pco/pco_panel.py +477 -0
  80. microEye/hardware/cams/shortcuts.py +312 -0
  81. microEye/hardware/cams/thorlabs/__init__.py +1 -0
  82. microEye/hardware/cams/thorlabs/thorlabs.py +1508 -0
  83. microEye/hardware/cams/thorlabs/thorlabs_panel.py +850 -0
  84. microEye/hardware/cams/ueye/__init__.py +1 -0
  85. microEye/hardware/cams/ueye/ueye_camera.py +1023 -0
  86. microEye/hardware/cams/ueye/ueye_panel.py +861 -0
  87. microEye/hardware/cams/vimba/__init__.py +1 -0
  88. microEye/hardware/cams/vimba/vimba_cam.py +1000 -0
  89. microEye/hardware/cams/vimba/vimba_panel.py +813 -0
  90. microEye/hardware/device.py +60 -0
  91. microEye/hardware/lasers/__init__.py +13 -0
  92. microEye/hardware/lasers/io_matchbox.py +791 -0
  93. microEye/hardware/lasers/io_params.py +85 -0
  94. microEye/hardware/lasers/io_single_laser.py +742 -0
  95. microEye/hardware/lasers/laser_relay.py +594 -0
  96. microEye/hardware/mieye/__init__.py +1 -0
  97. microEye/hardware/mieye/acquisition_manager.py +467 -0
  98. microEye/hardware/mieye/devices_manager.py +533 -0
  99. microEye/hardware/mieye/miEye.py +659 -0
  100. microEye/hardware/misc/__init__.py +0 -0
  101. microEye/hardware/misc/acquisition_view.py +71 -0
  102. microEye/hardware/misc/reglo.py +761 -0
  103. microEye/hardware/misc/temp.py +188 -0
  104. microEye/hardware/port_config.py +59 -0
  105. microEye/hardware/protocols/__init__.py +2 -0
  106. microEye/hardware/protocols/actions.py +402 -0
  107. microEye/hardware/protocols/actions_items.py +703 -0
  108. microEye/hardware/protocols/designer.py +244 -0
  109. microEye/hardware/protocols/scene_manager.py +191 -0
  110. microEye/hardware/protocols/serialization.py +97 -0
  111. microEye/hardware/pycromanager/__init__.py +16 -0
  112. microEye/hardware/pycromanager/core.py +1433 -0
  113. microEye/hardware/pycromanager/devices.py +461 -0
  114. microEye/hardware/pycromanager/enums.py +107 -0
  115. microEye/hardware/pycromanager/headless.py +153 -0
  116. microEye/hardware/pycromanager/utils.py +34 -0
  117. microEye/hardware/pycromanager/widgets/__init__.py +5 -0
  118. microEye/hardware/pycromanager/widgets/bridges.py +407 -0
  119. microEye/hardware/pycromanager/widgets/headless_manager.py +258 -0
  120. microEye/hardware/pycromanager/widgets/headless_options.py +224 -0
  121. microEye/hardware/pycromanager/widgets/pycro_panel.py +455 -0
  122. microEye/hardware/stages/__init__.py +18 -0
  123. microEye/hardware/stages/elliptec/__init__.py +5 -0
  124. microEye/hardware/stages/elliptec/baseDevice.py +314 -0
  125. microEye/hardware/stages/elliptec/device.py +384 -0
  126. microEye/hardware/stages/elliptec/deviceID.py +212 -0
  127. microEye/hardware/stages/elliptec/devicePort.py +379 -0
  128. microEye/hardware/stages/elliptec/deviceStatus.py +65 -0
  129. microEye/hardware/stages/elliptec/devicesView.py +706 -0
  130. microEye/hardware/stages/elliptec/ellDevices.py +134 -0
  131. microEye/hardware/stages/elliptec/messageUpdater.py +34 -0
  132. microEye/hardware/stages/elliptec/motorInfo.py +153 -0
  133. microEye/hardware/stages/elliptec/stage.py +62 -0
  134. microEye/hardware/stages/elliptec/test.py +139 -0
  135. microEye/hardware/stages/kinesis/__init__.py +1 -0
  136. microEye/hardware/stages/kinesis/kdc101/__init__.py +1 -0
  137. microEye/hardware/stages/kinesis/kdc101/enums.py +1002 -0
  138. microEye/hardware/stages/kinesis/kdc101/factory.py +171 -0
  139. microEye/hardware/stages/kinesis/kdc101/kdc101.py +718 -0
  140. microEye/hardware/stages/kinesis/kinesis.py +776 -0
  141. microEye/hardware/stages/piezo_concept.py +607 -0
  142. microEye/hardware/stages/stabilizer.py +785 -0
  143. microEye/hardware/stages/stage.py +89 -0
  144. microEye/hardware/widgets/__init__.py +10 -0
  145. microEye/hardware/widgets/controller.py +246 -0
  146. microEye/hardware/widgets/devices.py +133 -0
  147. microEye/hardware/widgets/focusWidget.py +264 -0
  148. microEye/hardware/widgets/qlist_slider.py +113 -0
  149. microEye/hardware/widgets/scan_acquisition.py +424 -0
  150. microEye/icons/1024.png +0 -0
  151. microEye/icons/128.png +0 -0
  152. microEye/icons/16.png +0 -0
  153. microEye/icons/24.png +0 -0
  154. microEye/icons/256.png +0 -0
  155. microEye/icons/32.png +0 -0
  156. microEye/icons/48.png +0 -0
  157. microEye/icons/512.png +0 -0
  158. microEye/icons/64.png +0 -0
  159. microEye/icons/__init__.py +0 -0
  160. microEye/icons/close.svg +88 -0
  161. microEye/icons/mieye.png +0 -0
  162. microEye/icons/min.svg +83 -0
  163. microEye/icons/viewer.png +0 -0
  164. microEye/launcher.py +42 -0
  165. microEye/qt.py +181 -0
  166. microEye/utils/__init__.py +2 -0
  167. microEye/utils/enum_encoder.py +10 -0
  168. microEye/utils/expandable_groupbox.py +93 -0
  169. microEye/utils/gui_helper.py +457 -0
  170. microEye/utils/hid/__init__.py +8 -0
  171. microEye/utils/hid/controller.py +153 -0
  172. microEye/utils/hid/device.py +63 -0
  173. microEye/utils/hid/enums.py +140 -0
  174. microEye/utils/hid/utils.py +58 -0
  175. microEye/utils/labelled_slider.py +134 -0
  176. microEye/utils/metadata.py +599 -0
  177. microEye/utils/metadata_tree.py +718 -0
  178. microEye/utils/micro_launcher.py +245 -0
  179. microEye/utils/parameter_tree.py +325 -0
  180. microEye/utils/pyscripting.py +444 -0
  181. microEye/utils/retry_exec.py +35 -0
  182. microEye/utils/start_gui.py +112 -0
  183. microEye/utils/thread_worker.py +115 -0
  184. microEye/utils/uImage.py +1512 -0
  185. microeye-2.3.2.dist-info/METADATA +401 -0
  186. microeye-2.3.2.dist-info/RECORD +190 -0
  187. microeye-2.3.2.dist-info/WHEEL +5 -0
  188. microeye-2.3.2.dist-info/entry_points.txt +2 -0
  189. microeye-2.3.2.dist-info/licenses/LICENSE +674 -0
  190. microeye-2.3.2.dist-info/top_level.txt +1 -0
@@ -0,0 +1,231 @@
1
+
2
+ import math
3
+
4
+ import numba as nb
5
+ from numba import cuda
6
+
7
+ from microEye.analysis.fitting.pyfit3Dcspline.constants import NV_PSP
8
+ from microEye.analysis.fitting.pyfit3Dcspline.GPU.GPUfunctions import *
9
+
10
+
11
+ @cuda.jit(device=True)
12
+ def kernel_computeDelta3D(
13
+ x_delta, y_delta, z_delta, delta_f, delta_dxf, delta_dyf, delta_dzf):
14
+ '''
15
+ This function for calculation of the commonterm for
16
+ Cspline is adpopted from:
17
+ "Analyzing Single Molecule Localization Microscopy
18
+ Data Using Cubic Splines", Hazen Babcok, Xiaowei Zhuang,
19
+ Scientific Report, 1, 552 , 2017.
20
+
21
+ Parameters
22
+ ----------
23
+ x_delta : float
24
+ _description_
25
+ y_delta : float
26
+ _description_
27
+ z_delta : float
28
+ _description_
29
+ delta_f : float
30
+ _description_
31
+ delta_dxf : float[]
32
+ _description_
33
+ delta_dyf : float[]
34
+ _description_
35
+ delta_dzf : float[]
36
+ _description_
37
+
38
+ Returns
39
+ -------
40
+ tuple[...]
41
+ delta_dxf, delta_dyf, delta_dzf
42
+ '''
43
+
44
+ # int i,j,k;
45
+ # float cx,cy,cz;
46
+
47
+ cz = 1.0
48
+ for i in range(4):
49
+ cy = 1.0
50
+ for j in range(4):
51
+ cx = 1.0
52
+ for k in range(4):
53
+ delta_f[i*16 + j*4 + k] = cz * cy * cx
54
+ if(k < 3):
55
+ delta_dxf[i*16+j*4+k+1] = (float(k)+1) * cz * cy * cx
56
+
57
+ if(j < 3):
58
+ delta_dyf[i*16+(j+1)*4+k] = (float(j)+1) * cz * cy * cx
59
+
60
+ if(i < 3):
61
+ delta_dzf[(i+1)*16+j*4+k] = (float(i)+1) * cz * cy * cx
62
+
63
+ cx = cx * x_delta
64
+ cy = cy * y_delta
65
+ cz = cz * z_delta
66
+
67
+ return delta_f, delta_dxf, delta_dyf, delta_dzf
68
+
69
+
70
+ @cuda.jit(device=True)
71
+ def kernel_cholesky(A, n, L, U) -> int:
72
+ '''
73
+ Parameters
74
+ ----------
75
+ A : float[]
76
+ _description_
77
+ n : int
78
+ _description_
79
+ L : float[]
80
+ _description_
81
+ U : float[]
82
+ _description_
83
+
84
+ Returns
85
+ -------
86
+ int
87
+ _description_
88
+ '''
89
+ info = 0
90
+ for i in range(n):
91
+ for j in range(i+1):
92
+ s = 0.0
93
+ for k in range(j):
94
+ s += U[i * n + k] * U[j * n + k]
95
+
96
+ if (i == j):
97
+ if (A[i*n+i]-s >= 0):
98
+ U[i * n + j] = math.sqrt(A[i * n + i] - s)
99
+ L[j*n+i] = U[i * n + j]
100
+ else:
101
+ info = 1
102
+ return info
103
+ else:
104
+ U[i * n + j] = (1.0 / U[j * n + j] * (A[i * n + j] - s))
105
+ L[j*n+i] = U[i * n + j]
106
+ return info
107
+
108
+
109
+ @cuda.jit(device=True)
110
+ def kernel_luEvaluate(L, U, b, n, x):
111
+ '''_summary_
112
+
113
+ Parameters
114
+ ----------
115
+ L : float
116
+ _description_
117
+ U : float
118
+ _description_
119
+ b : float
120
+ _description_
121
+ n : int
122
+ _description_
123
+ x : float
124
+ _description_
125
+
126
+ Returns
127
+ -------
128
+ float[...]
129
+ x
130
+ '''
131
+ # Ax = b -> LUx = b. Then y is defined to be Ux
132
+ # for sigmaxy, we have 6 parameters
133
+ y = cuda.local.array(6, nb.float32)
134
+
135
+ # Forward solve Ly = b
136
+ for i in range(n):
137
+ y[i] = b[i]
138
+ for j in range(i):
139
+ y[i] -= L[j*n+i] * y[j]
140
+ y[i] /= L[i*n+i]
141
+
142
+ # Backward solve Ux = y
143
+ for i in range(n-1, -1, -1):
144
+ x[i] = y[i]
145
+ for j in range(i+1, n, 1):
146
+ x[i] -= U[j*n+i] * x[j]
147
+ x[i] /= U[i*n + i]
148
+
149
+ return x
150
+
151
+
152
+ @cuda.jit(
153
+ nb.types.Tuple((nb.float32[:], nb.float32))(
154
+ nb.int32, nb.int32, nb.int32,
155
+ nb.int32, nb.int32, nb.int32,
156
+ nb.float32[:], nb.float32[:], nb.float32[:],
157
+ nb.float32[:], nb.float32[:], nb.float32[:], nb.float32[:]),
158
+ device=True)
159
+ def kernel_DerivativeSpline(
160
+ xc, yc, zc, xsize, ysize, zsize,
161
+ delta_f, delta_dxf, delta_dyf, delta_dzf, coeff, theta, dudt):
162
+ '''
163
+ Parameters
164
+ ----------
165
+ xc : int
166
+ _description_
167
+ yc : int
168
+ _description_
169
+ zc : int
170
+ _description_
171
+ xsize : int
172
+ _description_
173
+ ysize : int
174
+ _description_
175
+ zsize : int
176
+ _description_
177
+ delta_f : float
178
+ _description_
179
+ delta_dxf : float
180
+ _description_
181
+ delta_dyf : float
182
+ _description_
183
+ delta_dzf : float
184
+ _description_
185
+ coeff : float
186
+ _description_
187
+ theta : float
188
+ _description_
189
+ dudt : float
190
+ _description_
191
+
192
+ Returns
193
+ -------
194
+ tuple[...]
195
+ dudt, model
196
+ '''
197
+ temp = 0
198
+ # float dudt_temp[NV_PSP] = {0};//,temp;
199
+
200
+ xc = max(xc, 0)
201
+ xc = min(xc, xsize - 1)
202
+
203
+ yc = max(yc, 0)
204
+ yc = min(yc, ysize - 1)
205
+
206
+ zc = max(zc, 0)
207
+ zc = min(zc, zsize - 1)
208
+
209
+ for i in range(64):
210
+ temp += (
211
+ delta_f[i] *
212
+ coeff[i*(xsize*ysize*zsize)+zc*(xsize*ysize)+yc*xsize+xc])
213
+ dudt[0] += (
214
+ delta_dxf[i] *
215
+ coeff[i*(xsize*ysize*zsize)+zc*(xsize*ysize)+yc*xsize+xc])
216
+ dudt[1] += (
217
+ delta_dyf[i] *
218
+ coeff[i*(xsize*ysize*zsize)+zc*(xsize*ysize)+yc*xsize+xc])
219
+ dudt[4] += (
220
+ delta_dzf[i] *
221
+ coeff[i*(xsize*ysize*zsize)+zc*(xsize*ysize)+yc*xsize+xc])
222
+
223
+ dudt[0] *= -1.0*theta[2]
224
+ dudt[1] *= -1.0*theta[2]
225
+ dudt[4] *= theta[2]
226
+ dudt[2] = temp
227
+ dudt[3] = 1.0
228
+
229
+ model = theta[3] + theta[2] * max(1e-9, temp)
230
+
231
+ return dudt, model
@@ -0,0 +1,2 @@
1
+ from microEye.analysis.fitting.pyfit3Dcspline.GPU.GPUmleFit_LM_EMCCD import *
2
+ from microEye.analysis.fitting.pyfit3Dcspline.GPU.GPUmleFit_LM_sCMOS import *
@@ -0,0 +1,10 @@
1
+ from numba import cuda
2
+
3
+ from microEye.analysis.fitting.pyfit3Dcspline.mainfunctions import (
4
+ CPUmleFit_LM,
5
+ get_roi_list,
6
+ get_roi_list_CMOS,
7
+ )
8
+
9
+ if cuda.is_available():
10
+ from microEye.analysis.fitting.pyfit3Dcspline.mainfunctions import GPUmleFit_LM
@@ -0,0 +1,27 @@
1
+ import numpy as np
2
+
3
+ BSZ = 128 # number of threads per block
4
+ MEM = 3872 # 3872 11616# !< shared
5
+ IMSZBIG = 51 # !< maximum fitting window size
6
+ NK = 128 # !< number of blocks to run in each kernel
7
+ pi = np.pi # !< ensure a consistent value for pi
8
+ NV_P = 4 # !< number of fitting parameters for MLEfit (x,y,bg,I)
9
+ NV_PS = 5 # !< number of fitting parameters for MLEFit_sigma (x,y,bg,I,Sigma)
10
+ NV_PZ = 5 # !< not used (x,y,bg,I,z)
11
+ NV_PS2 = 6 # !< number of parameters for MLEFit_sigmaxy (x,y,bg,I,Sx,Sy)
12
+ NV_PSP = 5
13
+
14
+ NV_P_squared = NV_P**2
15
+ NV_PS_squared = NV_PS**2
16
+ NV_PZ_squared = NV_PZ**2
17
+ NV_PS2_squared = NV_PS2**2
18
+ NV_PSP_squared = NV_PSP**2
19
+
20
+ TOLERANCE = 1e-6
21
+ INIT_ERR = 1e13
22
+ INIT_LAMBDA = 0.1
23
+ SCALE_UP = 10
24
+ SCALE_DOWN = 0.1
25
+ ACCEPTANCE = 1.5
26
+
27
+ BLOCK_MAX_SIZE = 512