datalab-platform 0.0.1.dev0__py3-none-any.whl → 1.0.0__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 (496) hide show
  1. datalab/__init__.py +35 -2
  2. datalab/adapters_metadata/__init__.py +31 -0
  3. datalab/adapters_metadata/base_adapter.py +316 -0
  4. datalab/adapters_metadata/common.py +422 -0
  5. datalab/adapters_metadata/geometry_adapter.py +98 -0
  6. datalab/adapters_metadata/table_adapter.py +84 -0
  7. datalab/adapters_plotpy/__init__.py +54 -0
  8. datalab/adapters_plotpy/annotations.py +124 -0
  9. datalab/adapters_plotpy/base.py +110 -0
  10. datalab/adapters_plotpy/converters.py +86 -0
  11. datalab/adapters_plotpy/factories.py +80 -0
  12. datalab/adapters_plotpy/objects/__init__.py +0 -0
  13. datalab/adapters_plotpy/objects/base.py +197 -0
  14. datalab/adapters_plotpy/objects/image.py +157 -0
  15. datalab/adapters_plotpy/objects/scalar.py +565 -0
  16. datalab/adapters_plotpy/objects/signal.py +264 -0
  17. datalab/adapters_plotpy/roi/__init__.py +0 -0
  18. datalab/adapters_plotpy/roi/base.py +146 -0
  19. datalab/adapters_plotpy/roi/factory.py +93 -0
  20. datalab/adapters_plotpy/roi/image.py +207 -0
  21. datalab/adapters_plotpy/roi/signal.py +72 -0
  22. datalab/app.py +98 -0
  23. datalab/config.py +817 -0
  24. datalab/control/__init__.py +0 -0
  25. datalab/control/baseproxy.py +776 -0
  26. datalab/control/proxy.py +343 -0
  27. datalab/control/remote.py +1005 -0
  28. datalab/data/doc/DataLab_en.pdf +0 -0
  29. datalab/data/doc/DataLab_fr.pdf +0 -0
  30. datalab/data/icons/analysis/delete_results.svg +109 -0
  31. datalab/data/icons/analysis/fw1e2.svg +156 -0
  32. datalab/data/icons/analysis/fwhm.svg +156 -0
  33. datalab/data/icons/analysis/histogram.svg +49 -0
  34. datalab/data/icons/analysis/peak_detect.svg +160 -0
  35. datalab/data/icons/analysis/plot_results.svg +151 -0
  36. datalab/data/icons/analysis/show_results.svg +83 -0
  37. datalab/data/icons/analysis/stats.svg +49 -0
  38. datalab/data/icons/analysis.svg +120 -0
  39. datalab/data/icons/apply.svg +3 -0
  40. datalab/data/icons/check_all.svg +15 -0
  41. datalab/data/icons/collapse.svg +44 -0
  42. datalab/data/icons/collapse_selection.svg +63 -0
  43. datalab/data/icons/console.svg +101 -0
  44. datalab/data/icons/create/1d-normal.svg +8 -0
  45. datalab/data/icons/create/1d-poisson.svg +9 -0
  46. datalab/data/icons/create/1d-uniform.svg +8 -0
  47. datalab/data/icons/create/1d-zero.svg +57 -0
  48. datalab/data/icons/create/2d-gaussian.svg +56 -0
  49. datalab/data/icons/create/2d-normal.svg +38 -0
  50. datalab/data/icons/create/2d-poisson.svg +38 -0
  51. datalab/data/icons/create/2d-ramp.svg +90 -0
  52. datalab/data/icons/create/2d-sinc.svg +62 -0
  53. datalab/data/icons/create/2d-uniform.svg +38 -0
  54. datalab/data/icons/create/2d-zero.svg +13 -0
  55. datalab/data/icons/create/checkerboard.svg +39 -0
  56. datalab/data/icons/create/cosine.svg +12 -0
  57. datalab/data/icons/create/exponential.svg +55 -0
  58. datalab/data/icons/create/gaussian.svg +12 -0
  59. datalab/data/icons/create/grating.svg +29 -0
  60. datalab/data/icons/create/linear_chirp.svg +7 -0
  61. datalab/data/icons/create/logistic.svg +7 -0
  62. datalab/data/icons/create/lorentzian.svg +12 -0
  63. datalab/data/icons/create/planck.svg +12 -0
  64. datalab/data/icons/create/polynomial.svg +7 -0
  65. datalab/data/icons/create/pulse.svg +12 -0
  66. datalab/data/icons/create/ring.svg +18 -0
  67. datalab/data/icons/create/sawtooth.svg +7 -0
  68. datalab/data/icons/create/siemens.svg +35 -0
  69. datalab/data/icons/create/sinc.svg +12 -0
  70. datalab/data/icons/create/sine.svg +7 -0
  71. datalab/data/icons/create/square.svg +7 -0
  72. datalab/data/icons/create/square_pulse.svg +7 -0
  73. datalab/data/icons/create/step.svg +7 -0
  74. datalab/data/icons/create/step_pulse.svg +12 -0
  75. datalab/data/icons/create/triangle.svg +7 -0
  76. datalab/data/icons/create/voigt.svg +12 -0
  77. datalab/data/icons/edit/annotations.svg +72 -0
  78. datalab/data/icons/edit/annotations_copy.svg +114 -0
  79. datalab/data/icons/edit/annotations_delete.svg +83 -0
  80. datalab/data/icons/edit/annotations_edit.svg +98 -0
  81. datalab/data/icons/edit/annotations_export.svg +85 -0
  82. datalab/data/icons/edit/annotations_import.svg +85 -0
  83. datalab/data/icons/edit/annotations_paste.svg +100 -0
  84. datalab/data/icons/edit/copy_titles.svg +109 -0
  85. datalab/data/icons/edit/delete.svg +84 -0
  86. datalab/data/icons/edit/delete_all.svg +214 -0
  87. datalab/data/icons/edit/duplicate.svg +64 -0
  88. datalab/data/icons/edit/goto_source.svg +60 -0
  89. datalab/data/icons/edit/metadata.svg +60 -0
  90. datalab/data/icons/edit/metadata_add.svg +80 -0
  91. datalab/data/icons/edit/metadata_copy.svg +96 -0
  92. datalab/data/icons/edit/metadata_delete.svg +62 -0
  93. datalab/data/icons/edit/metadata_export.svg +68 -0
  94. datalab/data/icons/edit/metadata_import.svg +68 -0
  95. datalab/data/icons/edit/metadata_paste.svg +79 -0
  96. datalab/data/icons/edit/move_down.svg +55 -0
  97. datalab/data/icons/edit/move_up.svg +54 -0
  98. datalab/data/icons/edit/new_group.svg +76 -0
  99. datalab/data/icons/edit/recompute.svg +60 -0
  100. datalab/data/icons/edit/rename.svg +49 -0
  101. datalab/data/icons/edit.svg +16 -0
  102. datalab/data/icons/expand.svg +44 -0
  103. datalab/data/icons/expand_selection.svg +63 -0
  104. datalab/data/icons/fit/cdf_fit.svg +56 -0
  105. datalab/data/icons/fit/exponential_fit.svg +55 -0
  106. datalab/data/icons/fit/gaussian_fit.svg +62 -0
  107. datalab/data/icons/fit/interactive_fit.svg +101 -0
  108. datalab/data/icons/fit/linear_fit.svg +57 -0
  109. datalab/data/icons/fit/lorentzian_fit.svg +209 -0
  110. datalab/data/icons/fit/multigaussian_fit.svg +85 -0
  111. datalab/data/icons/fit/multilorentzian_fit.svg +85 -0
  112. datalab/data/icons/fit/piecewiseexponential_fit.svg +209 -0
  113. datalab/data/icons/fit/planckian_fit.svg +62 -0
  114. datalab/data/icons/fit/polynomial_fit.svg +59 -0
  115. datalab/data/icons/fit/sigmoid_fit.svg +56 -0
  116. datalab/data/icons/fit/sinusoidal_fit.svg +72 -0
  117. datalab/data/icons/fit/twohalfgaussian_fit.svg +63 -0
  118. datalab/data/icons/fit/voigt_fit.svg +57 -0
  119. datalab/data/icons/group.svg +56 -0
  120. datalab/data/icons/h5/h5array.svg +59 -0
  121. datalab/data/icons/h5/h5attrs.svg +75 -0
  122. datalab/data/icons/h5/h5browser.svg +133 -0
  123. datalab/data/icons/h5/h5file.svg +69 -0
  124. datalab/data/icons/h5/h5group.svg +49 -0
  125. datalab/data/icons/h5/h5scalar.svg +1 -0
  126. datalab/data/icons/help_pdf.svg +46 -0
  127. datalab/data/icons/history.svg +7 -0
  128. datalab/data/icons/image.svg +135 -0
  129. datalab/data/icons/io/fileopen_directory.svg +60 -0
  130. datalab/data/icons/io/fileopen_h5.svg +84 -0
  131. datalab/data/icons/io/fileopen_ima.svg +187 -0
  132. datalab/data/icons/io/fileopen_py.svg +123 -0
  133. datalab/data/icons/io/fileopen_sig.svg +138 -0
  134. datalab/data/icons/io/filesave_h5.svg +97 -0
  135. datalab/data/icons/io/filesave_ima.svg +200 -0
  136. datalab/data/icons/io/filesave_py.svg +136 -0
  137. datalab/data/icons/io/filesave_sig.svg +151 -0
  138. datalab/data/icons/io/import_text.svg +144 -0
  139. datalab/data/icons/io/save_to_directory.svg +134 -0
  140. datalab/data/icons/io.svg +84 -0
  141. datalab/data/icons/libre-camera-flash-off.svg +1 -0
  142. datalab/data/icons/libre-camera-flash-on.svg +1 -0
  143. datalab/data/icons/libre-gui-about.svg +1 -0
  144. datalab/data/icons/libre-gui-action-delete.svg +1 -0
  145. datalab/data/icons/libre-gui-add.svg +1 -0
  146. datalab/data/icons/libre-gui-arrow-down.svg +1 -0
  147. datalab/data/icons/libre-gui-arrow-left.svg +1 -0
  148. datalab/data/icons/libre-gui-arrow-right.svg +1 -0
  149. datalab/data/icons/libre-gui-arrow-up.svg +1 -0
  150. datalab/data/icons/libre-gui-close.svg +40 -0
  151. datalab/data/icons/libre-gui-cogs.svg +1 -0
  152. datalab/data/icons/libre-gui-globe.svg +1 -0
  153. datalab/data/icons/libre-gui-help.svg +1 -0
  154. datalab/data/icons/libre-gui-link.svg +1 -0
  155. datalab/data/icons/libre-gui-menu.svg +1 -0
  156. datalab/data/icons/libre-gui-pencil.svg +1 -0
  157. datalab/data/icons/libre-gui-plugin.svg +1 -0
  158. datalab/data/icons/libre-gui-questions.svg +1 -0
  159. datalab/data/icons/libre-gui-settings.svg +1 -0
  160. datalab/data/icons/libre-gui-unlink.svg +1 -0
  161. datalab/data/icons/libre-tech-ram.svg +1 -0
  162. datalab/data/icons/libre-toolbox.svg +1 -0
  163. datalab/data/icons/logs.svg +1 -0
  164. datalab/data/icons/markers.svg +74 -0
  165. datalab/data/icons/menu.svg +13 -0
  166. datalab/data/icons/new_ima.svg +148 -0
  167. datalab/data/icons/new_sig.svg +123 -0
  168. datalab/data/icons/operations/abs.svg +116 -0
  169. datalab/data/icons/operations/arithmetic.svg +123 -0
  170. datalab/data/icons/operations/average.svg +124 -0
  171. datalab/data/icons/operations/complex_from_magnitude_phase.svg +116 -0
  172. datalab/data/icons/operations/complex_from_real_imag.svg +124 -0
  173. datalab/data/icons/operations/constant.svg +116 -0
  174. datalab/data/icons/operations/constant_add.svg +109 -0
  175. datalab/data/icons/operations/constant_divide.svg +109 -0
  176. datalab/data/icons/operations/constant_multiply.svg +109 -0
  177. datalab/data/icons/operations/constant_subtract.svg +109 -0
  178. datalab/data/icons/operations/convert_dtype.svg +117 -0
  179. datalab/data/icons/operations/convolution.svg +46 -0
  180. datalab/data/icons/operations/deconvolution.svg +57 -0
  181. datalab/data/icons/operations/derivative.svg +127 -0
  182. datalab/data/icons/operations/difference.svg +52 -0
  183. datalab/data/icons/operations/division.svg +139 -0
  184. datalab/data/icons/operations/exp.svg +116 -0
  185. datalab/data/icons/operations/flip_horizontally.svg +69 -0
  186. datalab/data/icons/operations/flip_vertically.svg +74 -0
  187. datalab/data/icons/operations/im.svg +124 -0
  188. datalab/data/icons/operations/integral.svg +50 -0
  189. datalab/data/icons/operations/inverse.svg +143 -0
  190. datalab/data/icons/operations/log10.svg +109 -0
  191. datalab/data/icons/operations/phase.svg +116 -0
  192. datalab/data/icons/operations/power.svg +118 -0
  193. datalab/data/icons/operations/product.svg +124 -0
  194. datalab/data/icons/operations/profile.svg +379 -0
  195. datalab/data/icons/operations/profile_average.svg +399 -0
  196. datalab/data/icons/operations/profile_radial.svg +261 -0
  197. datalab/data/icons/operations/profile_segment.svg +262 -0
  198. datalab/data/icons/operations/quadratic_difference.svg +84 -0
  199. datalab/data/icons/operations/re.svg +124 -0
  200. datalab/data/icons/operations/rotate_left.svg +72 -0
  201. datalab/data/icons/operations/rotate_right.svg +72 -0
  202. datalab/data/icons/operations/signals_to_image.svg +314 -0
  203. datalab/data/icons/operations/sqrt.svg +110 -0
  204. datalab/data/icons/operations/std.svg +124 -0
  205. datalab/data/icons/operations/sum.svg +102 -0
  206. datalab/data/icons/play_demo.svg +9 -0
  207. datalab/data/icons/processing/axis_transform.svg +62 -0
  208. datalab/data/icons/processing/bandpass.svg +79 -0
  209. datalab/data/icons/processing/bandstop.svg +71 -0
  210. datalab/data/icons/processing/binning.svg +126 -0
  211. datalab/data/icons/processing/clip.svg +119 -0
  212. datalab/data/icons/processing/detrending.svg +173 -0
  213. datalab/data/icons/processing/distribute_on_grid.svg +769 -0
  214. datalab/data/icons/processing/edge_detection.svg +46 -0
  215. datalab/data/icons/processing/erase.svg +1 -0
  216. datalab/data/icons/processing/exposure.svg +143 -0
  217. datalab/data/icons/processing/fourier.svg +104 -0
  218. datalab/data/icons/processing/highpass.svg +59 -0
  219. datalab/data/icons/processing/interpolation.svg +71 -0
  220. datalab/data/icons/processing/level_adjustment.svg +70 -0
  221. datalab/data/icons/processing/lowpass.svg +60 -0
  222. datalab/data/icons/processing/morphology.svg +49 -0
  223. datalab/data/icons/processing/noise_addition.svg +114 -0
  224. datalab/data/icons/processing/noise_reduction.svg +38 -0
  225. datalab/data/icons/processing/normalize.svg +84 -0
  226. datalab/data/icons/processing/offset_correction.svg +131 -0
  227. datalab/data/icons/processing/resampling1d.svg +101 -0
  228. datalab/data/icons/processing/resampling2d.svg +240 -0
  229. datalab/data/icons/processing/reset_positions.svg +185 -0
  230. datalab/data/icons/processing/resize.svg +9 -0
  231. datalab/data/icons/processing/reverse_signal_x.svg +171 -0
  232. datalab/data/icons/processing/stability.svg +11 -0
  233. datalab/data/icons/processing/swap_x_y.svg +65 -0
  234. datalab/data/icons/processing/thresholding.svg +63 -0
  235. datalab/data/icons/processing/windowing.svg +45 -0
  236. datalab/data/icons/properties.svg +26 -0
  237. datalab/data/icons/reset.svg +9 -0
  238. datalab/data/icons/restore.svg +40 -0
  239. datalab/data/icons/roi/roi.svg +76 -0
  240. datalab/data/icons/roi/roi_coordinate.svg +78 -0
  241. datalab/data/icons/roi/roi_copy.svg +112 -0
  242. datalab/data/icons/roi/roi_delete.svg +81 -0
  243. datalab/data/icons/roi/roi_export.svg +87 -0
  244. datalab/data/icons/roi/roi_graphical.svg +78 -0
  245. datalab/data/icons/roi/roi_grid.svg +67 -0
  246. datalab/data/icons/roi/roi_ima.svg +188 -0
  247. datalab/data/icons/roi/roi_import.svg +87 -0
  248. datalab/data/icons/roi/roi_new.svg +81 -0
  249. datalab/data/icons/roi/roi_new_circle.svg +95 -0
  250. datalab/data/icons/roi/roi_new_polygon.svg +110 -0
  251. datalab/data/icons/roi/roi_new_rectangle.svg +70 -0
  252. datalab/data/icons/roi/roi_paste.svg +98 -0
  253. datalab/data/icons/roi/roi_sig.svg +124 -0
  254. datalab/data/icons/shapes.svg +134 -0
  255. datalab/data/icons/signal.svg +103 -0
  256. datalab/data/icons/table.svg +85 -0
  257. datalab/data/icons/table_unavailable.svg +102 -0
  258. datalab/data/icons/to_signal.svg +124 -0
  259. datalab/data/icons/tour/next.svg +44 -0
  260. datalab/data/icons/tour/previous.svg +44 -0
  261. datalab/data/icons/tour/rewind.svg +51 -0
  262. datalab/data/icons/tour/stop.svg +47 -0
  263. datalab/data/icons/tour/tour.svg +16 -0
  264. datalab/data/icons/uncheck_all.svg +78 -0
  265. datalab/data/icons/view/curve_antialiasing.svg +50 -0
  266. datalab/data/icons/view/new_window.svg +98 -0
  267. datalab/data/icons/view/refresh-auto.svg +57 -0
  268. datalab/data/icons/view/refresh-manual.svg +51 -0
  269. datalab/data/icons/view/reset_curve_styles.svg +96 -0
  270. datalab/data/icons/view/show_first.svg +55 -0
  271. datalab/data/icons/view/show_titles.svg +46 -0
  272. datalab/data/icons/visualization.svg +51 -0
  273. datalab/data/logo/DataLab-Banner-150.png +0 -0
  274. datalab/data/logo/DataLab-Banner-200.png +0 -0
  275. datalab/data/logo/DataLab-Banner2-100.png +0 -0
  276. datalab/data/logo/DataLab-Splash.png +0 -0
  277. datalab/data/logo/DataLab-watermark.png +0 -0
  278. datalab/data/logo/DataLab.svg +83 -0
  279. datalab/data/tests/reordering_test.h5 +0 -0
  280. datalab/data/tutorials/fabry_perot/fabry-perot1.jpg +0 -0
  281. datalab/data/tutorials/fabry_perot/fabry-perot2.jpg +0 -0
  282. datalab/data/tutorials/laser_beam/TEM00_z_13.jpg +0 -0
  283. datalab/data/tutorials/laser_beam/TEM00_z_18.jpg +0 -0
  284. datalab/data/tutorials/laser_beam/TEM00_z_23.jpg +0 -0
  285. datalab/data/tutorials/laser_beam/TEM00_z_30.jpg +0 -0
  286. datalab/data/tutorials/laser_beam/TEM00_z_35.jpg +0 -0
  287. datalab/data/tutorials/laser_beam/TEM00_z_40.jpg +0 -0
  288. datalab/data/tutorials/laser_beam/TEM00_z_45.jpg +0 -0
  289. datalab/data/tutorials/laser_beam/TEM00_z_50.jpg +0 -0
  290. datalab/data/tutorials/laser_beam/TEM00_z_55.jpg +0 -0
  291. datalab/data/tutorials/laser_beam/TEM00_z_60.jpg +0 -0
  292. datalab/data/tutorials/laser_beam/TEM00_z_65.jpg +0 -0
  293. datalab/data/tutorials/laser_beam/TEM00_z_70.jpg +0 -0
  294. datalab/data/tutorials/laser_beam/TEM00_z_75.jpg +0 -0
  295. datalab/data/tutorials/laser_beam/TEM00_z_80.jpg +0 -0
  296. datalab/env.py +542 -0
  297. datalab/gui/__init__.py +89 -0
  298. datalab/gui/actionhandler.py +1701 -0
  299. datalab/gui/docks.py +473 -0
  300. datalab/gui/h5io.py +150 -0
  301. datalab/gui/macroeditor.py +310 -0
  302. datalab/gui/main.py +2081 -0
  303. datalab/gui/newobject.py +217 -0
  304. datalab/gui/objectview.py +766 -0
  305. datalab/gui/panel/__init__.py +48 -0
  306. datalab/gui/panel/base.py +3254 -0
  307. datalab/gui/panel/image.py +157 -0
  308. datalab/gui/panel/macro.py +607 -0
  309. datalab/gui/panel/signal.py +164 -0
  310. datalab/gui/plothandler.py +800 -0
  311. datalab/gui/processor/__init__.py +84 -0
  312. datalab/gui/processor/base.py +2456 -0
  313. datalab/gui/processor/catcher.py +75 -0
  314. datalab/gui/processor/image.py +1214 -0
  315. datalab/gui/processor/signal.py +755 -0
  316. datalab/gui/profiledialog.py +333 -0
  317. datalab/gui/roieditor.py +633 -0
  318. datalab/gui/roigrideditor.py +208 -0
  319. datalab/gui/settings.py +612 -0
  320. datalab/gui/tour.py +908 -0
  321. datalab/h5/__init__.py +12 -0
  322. datalab/h5/common.py +314 -0
  323. datalab/h5/generic.py +580 -0
  324. datalab/h5/native.py +39 -0
  325. datalab/h5/utils.py +95 -0
  326. datalab/objectmodel.py +640 -0
  327. datalab/plugins/_readme_.txt +9 -0
  328. datalab/plugins/datalab_imageformats.py +175 -0
  329. datalab/plugins/datalab_testdata.py +190 -0
  330. datalab/plugins.py +355 -0
  331. datalab/tests/__init__.py +199 -0
  332. datalab/tests/backbone/__init__.py +1 -0
  333. datalab/tests/backbone/config_unit_test.py +170 -0
  334. datalab/tests/backbone/config_versioning_unit_test.py +34 -0
  335. datalab/tests/backbone/dictlistserial_app_test.py +38 -0
  336. datalab/tests/backbone/errorcatcher_unit_test.py +69 -0
  337. datalab/tests/backbone/errormsgbox_unit_test.py +50 -0
  338. datalab/tests/backbone/execenv_unit.py +262 -0
  339. datalab/tests/backbone/loadtest_gdi.py +147 -0
  340. datalab/tests/backbone/long_callback.py +96 -0
  341. datalab/tests/backbone/main_app_test.py +137 -0
  342. datalab/tests/backbone/memory_leak.py +43 -0
  343. datalab/tests/backbone/procisolation1_unit.py +128 -0
  344. datalab/tests/backbone/procisolation2_unit.py +171 -0
  345. datalab/tests/backbone/procisolation_unit_test.py +22 -0
  346. datalab/tests/backbone/profiling_app.py +27 -0
  347. datalab/tests/backbone/strings_unit_test.py +65 -0
  348. datalab/tests/backbone/title_formatting_unit_test.py +82 -0
  349. datalab/tests/conftest.py +131 -0
  350. datalab/tests/features/__init__.py +1 -0
  351. datalab/tests/features/applauncher/__init__.py +1 -0
  352. datalab/tests/features/applauncher/launcher1_app_test.py +28 -0
  353. datalab/tests/features/applauncher/launcher2_app_test.py +30 -0
  354. datalab/tests/features/common/__init__.py +1 -0
  355. datalab/tests/features/common/add_metadata_app_test.py +134 -0
  356. datalab/tests/features/common/add_metadata_unit_test.py +267 -0
  357. datalab/tests/features/common/annotations_management_unit_test.py +152 -0
  358. datalab/tests/features/common/auto_analysis_recompute_unit_test.py +240 -0
  359. datalab/tests/features/common/createobject_unit_test.py +50 -0
  360. datalab/tests/features/common/geometry_results_app_test.py +135 -0
  361. datalab/tests/features/common/interactive_processing_test.py +1109 -0
  362. datalab/tests/features/common/io_app_test.py +75 -0
  363. datalab/tests/features/common/large_results_app_test.py +187 -0
  364. datalab/tests/features/common/metadata_all_patterns_test.py +103 -0
  365. datalab/tests/features/common/metadata_app_test.py +139 -0
  366. datalab/tests/features/common/metadata_io_unit_test.py +60 -0
  367. datalab/tests/features/common/misc_app_test.py +236 -0
  368. datalab/tests/features/common/multiple_geometry_results_unit_test.py +122 -0
  369. datalab/tests/features/common/multiple_table_results_unit_test.py +64 -0
  370. datalab/tests/features/common/operation_modes_app_test.py +392 -0
  371. datalab/tests/features/common/plot_results_app_test.py +278 -0
  372. datalab/tests/features/common/reorder_app_test.py +75 -0
  373. datalab/tests/features/common/result_deletion_unit_test.py +96 -0
  374. datalab/tests/features/common/result_merged_label_unit_test.py +154 -0
  375. datalab/tests/features/common/result_shape_settings_unit_test.py +223 -0
  376. datalab/tests/features/common/roi_plotitem_unit_test.py +64 -0
  377. datalab/tests/features/common/roieditor_unit_test.py +102 -0
  378. datalab/tests/features/common/save_to_dir_app_test.py +163 -0
  379. datalab/tests/features/common/save_to_dir_unit_test.py +474 -0
  380. datalab/tests/features/common/stat_app_test.py +40 -0
  381. datalab/tests/features/common/stats_tools_unit_test.py +77 -0
  382. datalab/tests/features/common/table_results_app_test.py +52 -0
  383. datalab/tests/features/common/textimport_unit_test.py +131 -0
  384. datalab/tests/features/common/uuid_preservation_test.py +281 -0
  385. datalab/tests/features/common/worker_unit_test.py +402 -0
  386. datalab/tests/features/control/__init__.py +1 -0
  387. datalab/tests/features/control/connect_dialog.py +28 -0
  388. datalab/tests/features/control/embedded1_unit_test.py +304 -0
  389. datalab/tests/features/control/embedded2_unit_test.py +52 -0
  390. datalab/tests/features/control/remoteclient_app_test.py +219 -0
  391. datalab/tests/features/control/remoteclient_unit.py +75 -0
  392. datalab/tests/features/control/simpleclient_unit_test.py +321 -0
  393. datalab/tests/features/hdf5/__init__.py +1 -0
  394. datalab/tests/features/hdf5/h5browser1_unit_test.py +31 -0
  395. datalab/tests/features/hdf5/h5browser2_unit.py +55 -0
  396. datalab/tests/features/hdf5/h5browser_app_test.py +77 -0
  397. datalab/tests/features/hdf5/h5import_app_test.py +25 -0
  398. datalab/tests/features/hdf5/h5importer_app_test.py +34 -0
  399. datalab/tests/features/image/__init__.py +1 -0
  400. datalab/tests/features/image/annotations_app_test.py +28 -0
  401. datalab/tests/features/image/annotations_unit_test.py +80 -0
  402. datalab/tests/features/image/average_app_test.py +46 -0
  403. datalab/tests/features/image/background_dialog_test.py +70 -0
  404. datalab/tests/features/image/blobs_app_test.py +50 -0
  405. datalab/tests/features/image/contour_app_test.py +42 -0
  406. datalab/tests/features/image/contour_fabryperot_app_test.py +51 -0
  407. datalab/tests/features/image/denoise_app_test.py +31 -0
  408. datalab/tests/features/image/distribute_on_grid_app_test.py +95 -0
  409. datalab/tests/features/image/edges_app_test.py +31 -0
  410. datalab/tests/features/image/erase_app_test.py +21 -0
  411. datalab/tests/features/image/fft2d_app_test.py +27 -0
  412. datalab/tests/features/image/flatfield_app_test.py +40 -0
  413. datalab/tests/features/image/geometry_transform_unit_test.py +396 -0
  414. datalab/tests/features/image/imagetools_app_test.py +51 -0
  415. datalab/tests/features/image/imagetools_unit_test.py +27 -0
  416. datalab/tests/features/image/load_app_test.py +73 -0
  417. datalab/tests/features/image/morph_app_test.py +32 -0
  418. datalab/tests/features/image/offsetcorrection_app_test.py +30 -0
  419. datalab/tests/features/image/peak2d_app_test.py +53 -0
  420. datalab/tests/features/image/profile_app_test.py +73 -0
  421. datalab/tests/features/image/profile_dialog_test.py +56 -0
  422. datalab/tests/features/image/roi_app_test.py +98 -0
  423. datalab/tests/features/image/roi_circ_app_test.py +62 -0
  424. datalab/tests/features/image/roi_manipulation_app_test.py +268 -0
  425. datalab/tests/features/image/roigrid_unit_test.py +60 -0
  426. datalab/tests/features/image/side_by_side_app_test.py +52 -0
  427. datalab/tests/features/macro/__init__.py +1 -0
  428. datalab/tests/features/macro/macro_app_test.py +28 -0
  429. datalab/tests/features/macro/macroeditor_unit_test.py +102 -0
  430. datalab/tests/features/signal/__init__.py +1 -0
  431. datalab/tests/features/signal/baseline_dialog_test.py +53 -0
  432. datalab/tests/features/signal/deltax_dialog_unit_test.py +34 -0
  433. datalab/tests/features/signal/fft1d_app_test.py +26 -0
  434. datalab/tests/features/signal/filter_app_test.py +44 -0
  435. datalab/tests/features/signal/fitdialog_unit_test.py +50 -0
  436. datalab/tests/features/signal/interpolation_app_test.py +110 -0
  437. datalab/tests/features/signal/loadbigsignal_app_test.py +80 -0
  438. datalab/tests/features/signal/multiple_rois_unit_test.py +132 -0
  439. datalab/tests/features/signal/pulse_features_app_test.py +118 -0
  440. datalab/tests/features/signal/pulse_features_roi_app_test.py +55 -0
  441. datalab/tests/features/signal/roi_app_test.py +78 -0
  442. datalab/tests/features/signal/roi_manipulation_app_test.py +261 -0
  443. datalab/tests/features/signal/select_xy_cursor_unit_test.py +46 -0
  444. datalab/tests/features/signal/signalpeakdetection_dialog_test.py +33 -0
  445. datalab/tests/features/signal/signals_to_image_app_test.py +98 -0
  446. datalab/tests/features/signal/xarray_compat_app_test.py +128 -0
  447. datalab/tests/features/tour_unit_test.py +22 -0
  448. datalab/tests/features/utilities/__init__.py +1 -0
  449. datalab/tests/features/utilities/installconf_unit_test.py +21 -0
  450. datalab/tests/features/utilities/logview_app_test.py +21 -0
  451. datalab/tests/features/utilities/logview_error.py +24 -0
  452. datalab/tests/features/utilities/logview_unit_test.py +21 -0
  453. datalab/tests/features/utilities/memstatus_app_test.py +42 -0
  454. datalab/tests/features/utilities/settings_unit_test.py +88 -0
  455. datalab/tests/scenarios/__init__.py +1 -0
  456. datalab/tests/scenarios/beautiful_app.py +121 -0
  457. datalab/tests/scenarios/common.py +463 -0
  458. datalab/tests/scenarios/demo.py +212 -0
  459. datalab/tests/scenarios/example_app_test.py +47 -0
  460. datalab/tests/scenarios/scenario_h5_app_test.py +75 -0
  461. datalab/tests/scenarios/scenario_ima1_app_test.py +34 -0
  462. datalab/tests/scenarios/scenario_ima2_app_test.py +34 -0
  463. datalab/tests/scenarios/scenario_mac_app_test.py +58 -0
  464. datalab/tests/scenarios/scenario_sig1_app_test.py +36 -0
  465. datalab/tests/scenarios/scenario_sig2_app_test.py +35 -0
  466. datalab/utils/__init__.py +1 -0
  467. datalab/utils/conf.py +304 -0
  468. datalab/utils/dephash.py +105 -0
  469. datalab/utils/qthelpers.py +633 -0
  470. datalab/utils/strings.py +34 -0
  471. datalab/utils/tests.py +0 -0
  472. datalab/widgets/__init__.py +1 -0
  473. datalab/widgets/connection.py +138 -0
  474. datalab/widgets/filedialog.py +91 -0
  475. datalab/widgets/fileviewer.py +84 -0
  476. datalab/widgets/fitdialog.py +788 -0
  477. datalab/widgets/h5browser.py +1048 -0
  478. datalab/widgets/imagebackground.py +111 -0
  479. datalab/widgets/instconfviewer.py +175 -0
  480. datalab/widgets/logviewer.py +80 -0
  481. datalab/widgets/signalbaseline.py +90 -0
  482. datalab/widgets/signalcursor.py +208 -0
  483. datalab/widgets/signaldeltax.py +151 -0
  484. datalab/widgets/signalpeak.py +199 -0
  485. datalab/widgets/status.py +249 -0
  486. datalab/widgets/textimport.py +786 -0
  487. datalab/widgets/warningerror.py +223 -0
  488. datalab/widgets/wizard.py +286 -0
  489. datalab_platform-1.0.0.dist-info/METADATA +121 -0
  490. datalab_platform-1.0.0.dist-info/RECORD +494 -0
  491. datalab_platform-0.0.1.dev0.dist-info/METADATA +0 -67
  492. datalab_platform-0.0.1.dev0.dist-info/RECORD +0 -7
  493. {datalab_platform-0.0.1.dev0.dist-info → datalab_platform-1.0.0.dist-info}/WHEEL +0 -0
  494. {datalab_platform-0.0.1.dev0.dist-info → datalab_platform-1.0.0.dist-info}/entry_points.txt +0 -0
  495. {datalab_platform-0.0.1.dev0.dist-info → datalab_platform-1.0.0.dist-info}/licenses/LICENSE +0 -0
  496. {datalab_platform-0.0.1.dev0.dist-info → datalab_platform-1.0.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,46 @@
1
+ # Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
2
+
3
+ """
4
+ Average application test
5
+ ========================
6
+
7
+ The purpose of this test is to check that we can average a set of images without
8
+ overflowing the data type.
9
+
10
+ This test was written following a regression where the average of 10 images of
11
+ size 256x256 with a Gaussian distribution of values was overflowing the data type
12
+ uint8.
13
+ """
14
+
15
+ # pylint: disable=invalid-name # Allows short reference names like x, y, ...
16
+ # pylint: disable=duplicate-code
17
+ # guitest: show
18
+
19
+ import numpy as np
20
+ import sigima.objects
21
+ import sigima.tests.data as ctd
22
+
23
+ from datalab.tests import datalab_test_app_context, helpers
24
+
25
+
26
+ def test_image_average() -> None:
27
+ """Average application test."""
28
+ with datalab_test_app_context() as win:
29
+ panel = win.imagepanel
30
+ N, size = 10, 256
31
+ dtype = sigima.objects.ImageDatatypes.UINT8
32
+ p = sigima.objects.NewImageParam.create(height=size, width=size, dtype=dtype)
33
+ data = ctd.create_2d_gaussian(size, dtype.to_numpy_dtype())
34
+ for _idx in range(N):
35
+ obj = sigima.objects.create_image_from_param(p)
36
+ obj.data = data
37
+ panel.add_object(obj)
38
+ panel.objview.select_groups([0])
39
+ panel.processor.run_feature("average")
40
+ res_data = panel.objview.get_sel_objects(include_groups=True)[0].data
41
+ exp_data = np.array(data, dtype=float)
42
+ helpers.check_array_result("Average", res_data, exp_data)
43
+
44
+
45
+ if __name__ == "__main__":
46
+ test_image_average()
@@ -0,0 +1,70 @@
1
+ # Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
2
+
3
+ """
4
+ Image background dialog unit test.
5
+ """
6
+
7
+ # pylint: disable=invalid-name # Allows short reference names like x, y, ...
8
+ # pylint: disable=duplicate-code
9
+ # guitest: show
10
+
11
+ from __future__ import annotations
12
+
13
+ import numpy as np
14
+ import sigima.objects
15
+ import sigima.params
16
+ import sigima.proc.image as sipi
17
+ from guidata.qthelpers import exec_dialog, qt_app_context
18
+ from sigima.tests import vistools
19
+ from sigima.tests.data import create_noisy_gaussian_image
20
+
21
+ from datalab.env import execenv
22
+ from datalab.widgets.imagebackground import ImageBackgroundDialog
23
+
24
+
25
+ def test_image_background_selection() -> None:
26
+ """Image background selection test."""
27
+ with qt_app_context():
28
+ img = create_noisy_gaussian_image()
29
+ # Switch to non-uniform coordinates to test the background dialog handling:
30
+ xcoords = np.linspace(0, 10, img.data.shape[1])
31
+ img.set_coords(xcoords, 0.02 * xcoords**3)
32
+ dlg = ImageBackgroundDialog(img)
33
+ dlg.resize(640, 480)
34
+ dlg.setObjectName(dlg.objectName() + "_00") # to avoid timestamp suffix
35
+ exec_dialog(dlg)
36
+ if execenv.unattended:
37
+ dlg.test_compute_background()
38
+ execenv.print(f"background: {dlg.get_background()}")
39
+ execenv.print(f"rect coords: {dlg.get_rect_coords()}")
40
+ # Check background value:
41
+ x0, y0, x1, y1 = dlg.get_rect_coords()
42
+ ix0, iy0, ix1, iy1 = dlg.imageitem.get_closest_index_rect(x0, y0, x1, y1)
43
+ assert np.isclose(img.data[iy0:iy1, ix0:ix1].mean(), dlg.get_background())
44
+
45
+
46
+ def test_image_offset_correction_with_background_dialog() -> None:
47
+ """Image offset correction interactive test using the background dialog."""
48
+ with qt_app_context():
49
+ i1 = create_noisy_gaussian_image()
50
+ dlg = ImageBackgroundDialog(i1)
51
+ ok = exec_dialog(dlg)
52
+ if ok:
53
+ if execenv.unattended:
54
+ dlg.test_compute_background()
55
+ param = sigima.objects.ROI2DParam()
56
+ # pylint: disable=unbalanced-tuple-unpacking
57
+ ix0, iy0, ix1, iy1 = i1.physical_to_indices(dlg.get_rect_coords())
58
+ param.x0, param.y0, param.dx, param.dy = ix0, iy0, ix1 - ix0, iy1 - iy0
59
+ i2 = sipi.offset_correction(i1, param)
60
+ i3 = sipi.clip(i2, sigima.params.ClipParam.create(lower=0))
61
+ vistools.view_images_side_by_side(
62
+ [i1, i3],
63
+ titles=["Original image", "Corrected image"],
64
+ title="Image offset correction and thresholding",
65
+ )
66
+
67
+
68
+ if __name__ == "__main__":
69
+ test_image_background_selection()
70
+ test_image_offset_correction_with_background_dialog()
@@ -0,0 +1,50 @@
1
+ # Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
2
+
3
+ """
4
+ Blob detection application test
5
+ """
6
+
7
+ # pylint: disable=invalid-name # Allows short reference names like x, y, ...
8
+ # guitest: show
9
+
10
+ import sigima.params
11
+ from sigima.objects import create_image
12
+ from sigima.tests.data import get_test_image
13
+
14
+ from datalab.adapters_plotpy import create_adapter_from_object
15
+ from datalab.tests import datalab_test_app_context, skip_if_opencv_missing
16
+
17
+
18
+ def test_blobs():
19
+ """Run blob detection application test scenario"""
20
+ with datalab_test_app_context() as win:
21
+ panel = win.imagepanel
22
+ proc = panel.processor
23
+ data = get_test_image("flower.npy").data
24
+
25
+ # Testing blob detection
26
+ # ======================
27
+ for paramclass, compute_method, name in (
28
+ (sigima.params.BlobDOGParam, "blob_dog", "BlobDOG"),
29
+ (sigima.params.BlobDOHParam, "blob_doh", "BlobDOH"),
30
+ (sigima.params.BlobLOGParam, "blob_log", "BlobLOG"),
31
+ (sigima.params.BlobOpenCVParam, "blob_opencv", "BlobOpenCV"),
32
+ ):
33
+ param = paramclass()
34
+ param.min_sigma = 10.0
35
+ param.max_sigma = 30.0
36
+ image = create_image(name, data)
37
+ create_adapter_from_object(image).add_label_with_title()
38
+ panel.add_object(image)
39
+ with skip_if_opencv_missing():
40
+ proc.run_feature(compute_method, param)
41
+
42
+ # Testing distribute_on_grid and reset_positions
43
+ # ==============================================
44
+ panel.objview.selectAll()
45
+ param = sigima.params.GridParam.create(cols=2, colspac=10, rowspac=10)
46
+ proc.distribute_on_grid(param)
47
+
48
+
49
+ if __name__ == "__main__":
50
+ test_blobs()
@@ -0,0 +1,42 @@
1
+ # Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
2
+
3
+ """
4
+ Contour finding application test
5
+ """
6
+
7
+ # pylint: disable=invalid-name # Allows short reference names like x, y, ...
8
+ # guitest: show
9
+
10
+ import sigima.enums
11
+ import sigima.params
12
+ from sigima.objects import NewImageParam
13
+ from sigima.tests.data import create_multigaussian_image
14
+
15
+ from datalab.env import execenv
16
+ from datalab.tests import datalab_test_app_context, take_plotwidget_screenshot
17
+ from datalab.tests.features.image.roi_app_test import create_test_image_with_roi
18
+
19
+
20
+ def test_contour_app():
21
+ """Run contour finding application test scenario"""
22
+ newparam = NewImageParam.create(height=200, width=200)
23
+ with datalab_test_app_context() as win:
24
+ panel = win.imagepanel
25
+ for shape in sigima.enums.ContourShape:
26
+ ima1 = create_multigaussian_image(newparam)
27
+ ima1.set_metadata_option("colormap", "gray")
28
+ panel.add_object(ima1)
29
+ param = sigima.params.ContourShapeParam.create(shape=shape)
30
+ panel.processor.run_feature("contour_shape", param)
31
+ take_plotwidget_screenshot(panel, "contour_test")
32
+ ima2 = create_test_image_with_roi(newparam)
33
+ ima2.set_metadata_option("colormap", "gray")
34
+ panel.add_object(ima2)
35
+ panel.processor.edit_roi_graphically()
36
+ panel.processor.run_feature("contour_shape", param)
37
+ if not execenv.unattended:
38
+ break
39
+
40
+
41
+ if __name__ == "__main__":
42
+ test_contour_app()
@@ -0,0 +1,51 @@
1
+ # Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
2
+
3
+ """
4
+ Contour finding application test with Fabry-Perot images
5
+ """
6
+
7
+ # pylint: disable=invalid-name # Allows short reference names like x, y, ...
8
+ # guitest: show
9
+
10
+ import sigima.enums
11
+ import sigima.objects
12
+ import sigima.params
13
+ from sigima.tests.data import get_test_image
14
+
15
+ from datalab.tests import datalab_test_app_context, take_plotwidget_screenshot
16
+
17
+
18
+ def test_contour_app() -> None:
19
+ """Run contour finding application test scenario"""
20
+ with datalab_test_app_context() as win:
21
+ panel = win.imagepanel
22
+
23
+ shape = sigima.enums.ContourShape.CIRCLE
24
+
25
+ ima1 = get_test_image("fabry-perot1.jpg")
26
+ ima1.set_metadata_option("colormap", "gray")
27
+ xc, yc, r = 601.0, 556.0, 457.0
28
+ roi = sigima.objects.create_image_roi("circle", [xc, yc, r])
29
+ ima1.roi = roi
30
+ panel.add_object(ima1)
31
+ param = sigima.params.ContourShapeParam.create(shape=shape)
32
+ panel.processor.run_feature("contour_shape", param)
33
+ take_plotwidget_screenshot(panel, "contour_fabryperot_test")
34
+
35
+ ima2 = get_test_image("fabry-perot2.jpg")
36
+ ima2.set_metadata_option("colormap", "gray")
37
+ ima2.roi = roi
38
+ panel.add_object(ima2)
39
+ panel.processor.run_feature("contour_shape", param)
40
+
41
+ param = sigima.params.LineProfileParam.create(direction="horizontal", row=554)
42
+ panel.processor.run_feature("line_profile", param)
43
+
44
+ param = sigima.params.AverageProfileParam.create(
45
+ direction="horizontal", row1=550, row2=560
46
+ )
47
+ panel.processor.run_feature("average_profile", param)
48
+
49
+
50
+ if __name__ == "__main__":
51
+ test_contour_app()
@@ -0,0 +1,31 @@
1
+ # Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
2
+
3
+ """
4
+ Denoise processing application test
5
+ """
6
+
7
+ # pylint: disable=invalid-name # Allows short reference names like x, y, ...
8
+ # guitest: show
9
+
10
+ import sigima.params
11
+ from sigima.tests.data import get_test_image
12
+
13
+ from datalab.tests import datalab_test_app_context
14
+
15
+
16
+ def test_denoise():
17
+ """Run denoise application test scenario"""
18
+ with datalab_test_app_context() as win:
19
+ win.showMaximized()
20
+ panel = win.imagepanel
21
+ panel.add_object(get_test_image("flower.npy"))
22
+ proc = panel.processor
23
+ proc.compute_all_denoise()
24
+ panel.objview.select_groups()
25
+ param = sigima.params.GridParam.create(cols=3)
26
+ proc.distribute_on_grid(param)
27
+ panel.add_label_with_title()
28
+
29
+
30
+ if __name__ == "__main__":
31
+ test_denoise()
@@ -0,0 +1,95 @@
1
+ # Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
2
+
3
+ """
4
+ Distribute on grid application test
5
+ """
6
+
7
+ # pylint: disable=invalid-name # Allows short reference names like x, y, ...
8
+ # guitest: show
9
+
10
+ import numpy as np
11
+ import sigima.params
12
+ from sigima.tests.data import get_test_image
13
+
14
+ from datalab.env import execenv
15
+ from datalab.tests import datalab_test_app_context
16
+
17
+
18
+ def get_image_origin(obj):
19
+ """Get image origin (x0, y0) handling both uniform and non-uniform coordinates.
20
+
21
+ Args:
22
+ obj: Image object
23
+
24
+ Returns:
25
+ Tuple (x0, y0)
26
+ """
27
+ if obj.is_uniform_coords:
28
+ return obj.x0, obj.y0
29
+ return obj.xcoords[0], obj.ycoords[0]
30
+
31
+
32
+ def test_distribute_on_grid():
33
+ """Run distribute on grid application test scenario"""
34
+ with execenv.context(unattended=True):
35
+ with datalab_test_app_context(console=False) as win:
36
+ panel = win.imagepanel
37
+ proc = panel.processor
38
+ panel.add_object(get_test_image("flower.npy"))
39
+ proc.compute_all_morphology(sigima.params.MorphologyParam.create(radius=10))
40
+ panel.objview.select_groups()
41
+
42
+ # Distribute on grid
43
+ params = [
44
+ sigima.params.GridParam.create(cols=4),
45
+ sigima.params.GridParam.create(
46
+ rows=3, colspac=20, rowspac=20, direction="row"
47
+ ),
48
+ sigima.params.GridParam.create(cols=2, colspac=10, rowspac=10),
49
+ ]
50
+ origins = []
51
+ for param in params:
52
+ proc.distribute_on_grid(param)
53
+ objs = panel.objview.get_sel_objects(include_groups=True)
54
+ origins.append([get_image_origin(obj) for obj in objs])
55
+
56
+ # Reset positions
57
+ proc.reset_positions()
58
+ objs = panel.objview.get_sel_objects(include_groups=True)
59
+ origins.append([get_image_origin(obj) for obj in objs])
60
+
61
+ # Verify results with tolerance for floating point comparisons
62
+ tol = 1e-10
63
+
64
+ # First distribution (cols=4)
65
+ assert np.allclose(origins[0][0], (0.0, 0.0), atol=tol)
66
+ assert np.allclose(origins[0][1], (512.0, 0.0), atol=tol)
67
+ assert np.allclose(origins[0][2], (1024.0, 0.0), atol=tol)
68
+ assert np.allclose(origins[0][3], (1536.0, 0.0), atol=tol)
69
+ assert np.allclose(origins[0][4], (0.0, 512.0), atol=tol)
70
+ assert np.allclose(origins[0][5], (512.0, 512.0), atol=tol)
71
+ assert np.allclose(origins[0][6], (1024.0, 512.0), atol=tol)
72
+
73
+ # Second distribution (rows=3, colspac=20, rowspac=20, direction="row")
74
+ assert np.allclose(origins[1][0], (0.0, 0.0), atol=tol)
75
+ assert np.allclose(origins[1][1], (0.0, 532.0), atol=tol)
76
+ assert np.allclose(origins[1][2], (0.0, 1064.0), atol=tol)
77
+ assert np.allclose(origins[1][3], (532.0, 0.0), atol=tol)
78
+ assert np.allclose(origins[1][4], (532.0, 532.0), atol=tol)
79
+ assert np.allclose(origins[1][5], (532.0, 1064.0), atol=tol)
80
+
81
+ # Third distribution (cols=2, colspac=10, rowspac=10)
82
+ assert np.allclose(origins[2][0], (0.0, 0.0), atol=tol)
83
+ assert np.allclose(origins[2][1], (522.0, 0.0), atol=tol)
84
+ assert np.allclose(origins[2][2], (0.0, 522.0), atol=tol)
85
+ assert np.allclose(origins[2][3], (522.0, 522.0), atol=tol)
86
+ assert np.allclose(origins[2][4], (0.0, 1044.0), atol=tol)
87
+ assert np.allclose(origins[2][5], (522.0, 1044.0), atol=tol)
88
+
89
+ # After reset, all should be at origin
90
+ for x0, y0 in origins[3]:
91
+ assert np.allclose([x0, y0], [0.0, 0.0], atol=tol)
92
+
93
+
94
+ if __name__ == "__main__":
95
+ test_distribute_on_grid()
@@ -0,0 +1,31 @@
1
+ # Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
2
+
3
+ """
4
+ Edges processing application test
5
+ """
6
+
7
+ # pylint: disable=invalid-name # Allows short reference names like x, y, ...
8
+ # guitest: show
9
+
10
+ import sigima.params
11
+ from sigima.tests.data import get_test_image
12
+
13
+ from datalab.tests import datalab_test_app_context
14
+
15
+
16
+ def test_edges():
17
+ """Run edges processing application test scenario"""
18
+ with datalab_test_app_context() as win:
19
+ win.showMaximized()
20
+ panel = win.imagepanel
21
+ panel.add_object(get_test_image("flower.npy"))
22
+ proc = panel.processor
23
+ proc.compute_all_edges()
24
+ panel.objview.select_groups()
25
+ param = sigima.params.GridParam.create(cols=4)
26
+ proc.distribute_on_grid(param)
27
+ panel.add_label_with_title()
28
+
29
+
30
+ if __name__ == "__main__":
31
+ test_edges()
@@ -0,0 +1,21 @@
1
+ # Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
2
+
3
+ """Image erase application test"""
4
+
5
+ # pylint: disable=invalid-name # Allows short reference names like x, y, ...
6
+ # guitest: show
7
+
8
+ from sigima.tests.data import get_test_image
9
+
10
+ from datalab.tests import datalab_test_app_context
11
+
12
+
13
+ def test_erase():
14
+ """Run erase application test scenario"""
15
+ with datalab_test_app_context() as win:
16
+ win.imagepanel.add_object(get_test_image("flower.npy"))
17
+ win.imagepanel.processor.compute_erase()
18
+
19
+
20
+ if __name__ == "__main__":
21
+ test_erase()
@@ -0,0 +1,27 @@
1
+ # Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
2
+
3
+ """
4
+ Image FFT application test.
5
+ """
6
+
7
+ # pylint: disable=invalid-name # Allows short reference names like x, y, ...
8
+ # guitest: show
9
+
10
+ import sigima.objects
11
+
12
+ from datalab.tests import datalab_test_app_context
13
+
14
+
15
+ def test_fft2d_app() -> None:
16
+ """FFT application test."""
17
+ with datalab_test_app_context() as win:
18
+ panel = win.imagepanel
19
+ param = sigima.objects.Gauss2DParam.create(width=100, height=100)
20
+ i1 = sigima.objects.create_image_from_param(param)
21
+ panel.add_object(i1)
22
+ panel.processor.run_feature("fft")
23
+ panel.processor.run_feature("ifft")
24
+
25
+
26
+ if __name__ == "__main__":
27
+ test_fft2d_app()
@@ -0,0 +1,40 @@
1
+ # Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
2
+
3
+ """
4
+ Flat field test
5
+
6
+ Testing the following:
7
+ - Create a gaussian image (raw data)
8
+ - Create a random noised image (flat data)
9
+ - Compute the flat field image
10
+ """
11
+
12
+ # guitest: show
13
+
14
+ from sigima.objects import Gauss2DParam, UniformDistribution2DParam
15
+ from sigima.proc.image import FlatFieldParam
16
+
17
+ from datalab.config import _
18
+ from datalab.tests import datalab_test_app_context
19
+
20
+
21
+ def test_flatfield():
22
+ """Run flat field test scenario"""
23
+ with datalab_test_app_context() as win:
24
+ panel = win.imagepanel
25
+
26
+ param0 = Gauss2DParam.create(title=_("Raw data (2D-Gaussian)"))
27
+ ima0 = panel.new_object(param0, edit=False)
28
+ param1 = UniformDistribution2DParam.create(
29
+ title=_("Flat data (Uniform random)"), vmax=5
30
+ )
31
+ ima1 = panel.new_object(param1, edit=False)
32
+
33
+ panel.objview.select_objects([ima0])
34
+ ffp = FlatFieldParam()
35
+ ffp.threshold = 80
36
+ panel.processor.run_feature("flatfield", ima1, ffp)
37
+
38
+
39
+ if __name__ == "__main__":
40
+ test_flatfield()