tomwer 1.3.26__py3-none-any.whl → 1.4.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 (638) hide show
  1. orangecontrib/tomwer/orange/managedprocess.py +1 -29
  2. orangecontrib/tomwer/orange/settings.py +2 -28
  3. orangecontrib/tomwer/tests/TestAcquisition.py +220 -0
  4. orangecontrib/tomwer/tutorials/append_raw_darks_and_flats_frames_to_NXtomos.ows +2 -2
  5. orangecontrib/tomwer/tutorials/copy_reduced_darks_and_flats_meth1.ows +1 -1
  6. orangecontrib/tomwer/tutorials/{icat_publication.ows → drac_publication.ows} +7 -21
  7. orangecontrib/tomwer/tutorials/id16b/ID16b_full_volume.ows +22 -0
  8. orangecontrib/tomwer/tutorials/id16b/ID16b_insitu.ows +302 -0
  9. orangecontrib/tomwer/tutorials/id16b/ID16b_normalization.ows +218 -0
  10. orangecontrib/tomwer/tutorials/simple_volume_to_slurm_reconstruction.ows +29 -24
  11. orangecontrib/tomwer/tutorials/test_cor.ows +19 -0
  12. orangecontrib/tomwer/tutorials/volume_casting_on_slurm.ows +54 -0
  13. orangecontrib/tomwer/widgets/__init__.py +3 -5
  14. orangecontrib/tomwer/widgets/cluster/FutureSupervisorOW.py +35 -54
  15. orangecontrib/tomwer/widgets/cluster/SlurmClusterOW.py +1 -31
  16. orangecontrib/tomwer/widgets/control/AdvancementOW.py +1 -29
  17. orangecontrib/tomwer/widgets/control/DataDiscoveryOW.py +5 -4
  18. orangecontrib/tomwer/widgets/control/DataListenerOW.py +1 -29
  19. orangecontrib/tomwer/widgets/control/DataSelectorOW.py +11 -30
  20. orangecontrib/tomwer/widgets/control/DataTransfertOW.py +2 -28
  21. orangecontrib/tomwer/widgets/control/DataValidatorOW.py +1 -28
  22. orangecontrib/tomwer/widgets/control/DataWatcherOW.py +1 -28
  23. orangecontrib/tomwer/widgets/control/EDF2NXTomomillOW.py +48 -51
  24. orangecontrib/tomwer/widgets/control/EmailOW.py +12 -2
  25. orangecontrib/tomwer/widgets/control/FilterOW.py +1 -28
  26. orangecontrib/tomwer/widgets/control/NXTomomillOW.py +37 -53
  27. orangecontrib/tomwer/widgets/control/NXtomoConcatenate.py +21 -20
  28. orangecontrib/tomwer/widgets/control/NotifierOW.py +9 -28
  29. orangecontrib/tomwer/widgets/control/ReduceDarkFlatSelectorOW.py +3 -2
  30. orangecontrib/tomwer/widgets/control/SingleTomoObjOW.py +1 -27
  31. orangecontrib/tomwer/widgets/control/TimerOW.py +9 -28
  32. orangecontrib/tomwer/widgets/control/TomoObjSeriesOW.py +58 -0
  33. orangecontrib/tomwer/widgets/control/VolumeSelector.py +8 -30
  34. orangecontrib/tomwer/widgets/control/icons/nxtomomill.svg +173 -119
  35. orangecontrib/tomwer/widgets/control/icons/reduced_darkflat_selector.png +0 -0
  36. orangecontrib/tomwer/widgets/control/icons/reduced_darkflat_selector.svg +55 -195
  37. orangecontrib/tomwer/widgets/control/icons/{tomoobjserie.svg → tomoobjseries.svg} +2 -2
  38. orangecontrib/tomwer/widgets/dataportal/PublishProcessedDataOW.py +172 -0
  39. orangecontrib/tomwer/widgets/{icat → dataportal}/__init__.py +2 -2
  40. orangecontrib/tomwer/widgets/debugtools/DatasetGeneratorOW.py +2 -29
  41. orangecontrib/tomwer/widgets/debugtools/ObjectInspectorOW.py +1 -29
  42. orangecontrib/tomwer/widgets/edit/DarkFlatPatchOW.py +48 -73
  43. orangecontrib/tomwer/widgets/edit/ImageKeyEditorOW.py +48 -75
  44. orangecontrib/tomwer/widgets/edit/ImageKeyUpgraderOW.py +5 -30
  45. orangecontrib/tomwer/widgets/edit/NXtomoEditorOW.py +51 -52
  46. orangecontrib/tomwer/widgets/other/PythonScriptOW.py +22 -10
  47. orangecontrib/tomwer/widgets/reconstruction/AxisOW.py +51 -60
  48. orangecontrib/tomwer/widgets/reconstruction/CastNabuVolumeOW.py +22 -68
  49. orangecontrib/tomwer/widgets/reconstruction/DarkRefAndCopyOW.py +3 -30
  50. orangecontrib/tomwer/widgets/reconstruction/NabuHelicalPrepareWeightsDoubleOW.py +21 -19
  51. orangecontrib/tomwer/widgets/reconstruction/NabuOW.py +7 -70
  52. orangecontrib/tomwer/widgets/reconstruction/NabuVolumeOW.py +41 -84
  53. orangecontrib/tomwer/widgets/reconstruction/SAAxisOW.py +15 -40
  54. orangecontrib/tomwer/widgets/reconstruction/SADeltaBetaOW.py +13 -35
  55. orangecontrib/tomwer/widgets/reconstruction/SinoNormOW.py +2 -30
  56. orangecontrib/tomwer/widgets/stitching/ZStitchingConfigOW.py +11 -11
  57. orangecontrib/tomwer/widgets/utils.py +2 -29
  58. orangecontrib/tomwer/widgets/visualization/DataViewerOW.py +1 -27
  59. orangecontrib/tomwer/widgets/visualization/DiffViewerOW.py +1 -27
  60. orangecontrib/tomwer/widgets/visualization/NXtomoMetadataViewerOW.py +1 -1
  61. orangecontrib/tomwer/widgets/visualization/RadioStackOW.py +2 -28
  62. orangecontrib/tomwer/widgets/visualization/SampleMovedOW.py +1 -27
  63. orangecontrib/tomwer/widgets/visualization/SinogramViewerOW.py +1 -27
  64. orangecontrib/tomwer/widgets/visualization/SliceStackOW.py +2 -28
  65. tomwer/__init__.py +3 -28
  66. tomwer/__main__.py +8 -4
  67. tomwer/app/__init__.py +2 -0
  68. tomwer/app/axis.py +8 -10
  69. tomwer/app/canvas.py +23 -29
  70. tomwer/app/canvas_launcher/config.py +14 -102
  71. tomwer/app/canvas_launcher/environ.py +5 -8
  72. tomwer/app/canvas_launcher/mainwindow.py +175 -69
  73. tomwer/app/canvas_launcher/splash.py +1 -3
  74. tomwer/app/canvas_launcher/utils.py +47 -0
  75. tomwer/app/canvas_launcher/widgetsscheme.py +3 -10
  76. tomwer/app/diffframe.py +2 -0
  77. tomwer/app/imagekeyeditor.py +2 -1
  78. tomwer/app/imagekeyupgrader.py +2 -0
  79. tomwer/app/multicor.py +5 -2
  80. tomwer/app/multipag.py +16 -5
  81. tomwer/app/nabuapp.py +2 -1
  82. tomwer/app/nxtomoeditor.py +17 -12
  83. tomwer/app/patchrawdarkflat.py +2 -0
  84. tomwer/app/radiostack.py +3 -2
  85. tomwer/app/reducedarkflat.py +3 -0
  86. tomwer/app/samplemoved.py +2 -0
  87. tomwer/app/scanviewer.py +2 -0
  88. tomwer/app/sinogramviewer.py +2 -0
  89. tomwer/app/slicestack.py +11 -13
  90. tomwer/app/stitching/common.py +431 -0
  91. tomwer/app/stopdatalistener.py +3 -0
  92. tomwer/app/ystitching.py +26 -0
  93. tomwer/app/zstitching.py +8 -363
  94. tomwer/core/__init__.py +2 -28
  95. tomwer/core/cluster/__init__.py +3 -0
  96. tomwer/core/cluster/cluster.py +10 -26
  97. tomwer/core/futureobject.py +17 -43
  98. tomwer/core/log/__init__.py +2 -0
  99. tomwer/core/log/processlog.py +0 -28
  100. tomwer/core/process/cluster/supervisor.py +52 -34
  101. tomwer/core/process/conditions/filters.py +3 -28
  102. tomwer/core/process/control/datalistener/datalistener.py +7 -75
  103. tomwer/core/process/control/datalistener/rpcserver.py +8 -38
  104. tomwer/core/process/control/datawatcher/datawatcher.py +11 -40
  105. tomwer/core/process/control/datawatcher/datawatcherobserver.py +30 -64
  106. tomwer/core/process/control/datawatcher/datawatcherprocess.py +11 -32
  107. tomwer/core/process/control/datawatcher/edfdwprocess.py +2 -27
  108. tomwer/core/process/control/datawatcher/hdf5dwprocess.py +1 -26
  109. tomwer/core/process/control/datawatcher/status.py +1 -26
  110. tomwer/core/process/control/emailnotifier.py +11 -23
  111. tomwer/core/process/control/nxtomoconcatenate.py +20 -18
  112. tomwer/core/process/control/nxtomomill.py +9 -44
  113. tomwer/core/process/control/scanlist.py +0 -27
  114. tomwer/core/process/control/scantransfer.py +15 -13
  115. tomwer/core/process/control/scanvalidator.py +4 -30
  116. tomwer/core/process/control/{test → tests}/test_concatenate_nxtomos.py +5 -5
  117. tomwer/core/process/control/timer.py +1 -27
  118. tomwer/core/process/control/tomoobjseries.py +12 -0
  119. tomwer/core/process/drac/binning.py +37 -0
  120. tomwer/core/process/drac/dracbase.py +170 -0
  121. tomwer/core/process/drac/gallery.py +109 -0
  122. tomwer/core/process/drac/output.py +12 -0
  123. tomwer/core/process/drac/processeddataset.py +147 -0
  124. tomwer/core/process/drac/publish.py +118 -0
  125. tomwer/core/process/drac/rawdataset.py +142 -0
  126. tomwer/core/process/drac/tests/test_gallery.py +71 -0
  127. tomwer/core/process/drac/tests/test_icat_processed_dataset.py +80 -0
  128. tomwer/core/process/drac/tests/test_icat_raw_dataset.py +90 -0
  129. tomwer/core/process/edit/darkflatpatch.py +1 -28
  130. tomwer/core/process/edit/imagekeyeditor.py +4 -32
  131. tomwer/core/process/edit/nxtomoeditor.py +307 -0
  132. tomwer/core/process/edit/tests/test_darkflatpatch.py +243 -0
  133. tomwer/core/process/edit/tests/test_imagekey_editor.py +99 -0
  134. tomwer/core/process/output.py +9 -2
  135. tomwer/core/process/reconstruction/__init__.py +0 -26
  136. tomwer/core/process/reconstruction/axis/anglemode.py +1 -29
  137. tomwer/core/process/reconstruction/axis/axis.py +47 -804
  138. tomwer/core/process/reconstruction/axis/mode.py +89 -25
  139. tomwer/core/process/reconstruction/axis/params.py +131 -283
  140. tomwer/core/process/reconstruction/axis/projectiontype.py +0 -28
  141. tomwer/core/process/reconstruction/axis/side.py +8 -0
  142. tomwer/core/process/reconstruction/darkref/darkrefs.py +14 -39
  143. tomwer/core/process/reconstruction/darkref/darkrefscopy.py +7 -39
  144. tomwer/core/process/reconstruction/darkref/params.py +1 -28
  145. tomwer/core/process/reconstruction/nabu/castvolume.py +19 -34
  146. tomwer/core/process/reconstruction/nabu/nabucommon.py +18 -43
  147. tomwer/core/process/reconstruction/nabu/nabuscores.py +64 -68
  148. tomwer/core/process/reconstruction/nabu/nabuslices.py +63 -105
  149. tomwer/core/process/reconstruction/nabu/nabuvolume.py +44 -70
  150. tomwer/core/process/reconstruction/nabu/plane.py +10 -0
  151. tomwer/core/process/reconstruction/nabu/settings.py +1 -28
  152. tomwer/core/process/reconstruction/nabu/target.py +0 -28
  153. tomwer/core/process/reconstruction/nabu/test/test_castvolume.py +116 -0
  154. tomwer/core/process/reconstruction/nabu/test/test_nabu_utils.py +277 -0
  155. tomwer/core/process/reconstruction/nabu/test/test_nabunormalization.py +199 -0
  156. tomwer/core/process/reconstruction/nabu/utils.py +11 -60
  157. tomwer/core/process/reconstruction/normalization/normalization.py +2 -32
  158. tomwer/core/process/reconstruction/normalization/params.py +3 -35
  159. tomwer/core/process/reconstruction/output.py +14 -19
  160. tomwer/core/process/reconstruction/paramsbase.py +4 -33
  161. tomwer/core/process/reconstruction/saaxis/params.py +5 -33
  162. tomwer/core/process/reconstruction/saaxis/saaxis.py +22 -51
  163. tomwer/core/process/reconstruction/sadeltabeta/params.py +2 -31
  164. tomwer/core/process/reconstruction/sadeltabeta/sadeltabeta.py +18 -46
  165. tomwer/core/process/reconstruction/scores/params.py +9 -39
  166. tomwer/core/process/reconstruction/scores/scores.py +10 -42
  167. tomwer/core/process/reconstruction/tests/__init__.py +0 -0
  168. tomwer/core/process/reconstruction/tests/test_axis.py +46 -0
  169. tomwer/core/process/reconstruction/tests/test_darkref.py +33 -0
  170. tomwer/core/process/reconstruction/{test → tests}/test_saaxis.py +1 -27
  171. tomwer/core/process/reconstruction/tests/test_sadeltabeta.py +48 -0
  172. tomwer/core/process/reconstruction/{test → tests}/test_utils.py +4 -4
  173. tomwer/core/process/reconstruction/utils/cor.py +8 -4
  174. tomwer/core/process/script/python.py +1 -27
  175. tomwer/core/process/script/tests/test_script.py +41 -0
  176. tomwer/core/process/stitching/metadataholder.py +5 -4
  177. tomwer/core/process/stitching/nabustitcher.py +35 -5
  178. tomwer/core/process/stitching/tests/test_metadataholder.py +17 -0
  179. tomwer/core/process/task.py +20 -63
  180. tomwer/core/process/tests/__init__.py +0 -0
  181. tomwer/core/process/{test → tests}/test_conditions.py +1 -28
  182. tomwer/core/process/{test → tests}/test_dark_and_flat.py +1 -27
  183. tomwer/core/process/{test → tests}/test_data_listener.py +1 -27
  184. tomwer/core/process/{test → tests}/test_data_transfer.py +2 -28
  185. tomwer/core/process/{test → tests}/test_data_watcher.py +1 -27
  186. tomwer/core/process/{test → tests}/test_nabu.py +2 -33
  187. tomwer/core/process/{test → tests}/test_normalization.py +1 -26
  188. tomwer/core/process/{test → tests}/test_timer.py +1 -27
  189. tomwer/core/process/utils.py +2 -31
  190. tomwer/core/process/visualization/dataviewer.py +1 -26
  191. tomwer/core/process/visualization/diffviewer.py +1 -26
  192. tomwer/core/process/visualization/imagestackviewer.py +0 -26
  193. tomwer/core/process/visualization/radiostack.py +0 -26
  194. tomwer/core/process/visualization/samplemoved.py +0 -28
  195. tomwer/core/process/visualization/sinogramviewer.py +0 -27
  196. tomwer/core/process/visualization/slicestack.py +0 -28
  197. tomwer/core/process/visualization/tests/test_data_viewer.py +12 -0
  198. tomwer/core/process/visualization/tests/test_diff_viewer.py +12 -0
  199. tomwer/core/process/visualization/tests/test_image_stack_viewer.py +14 -0
  200. tomwer/core/process/visualization/tests/test_radio_stack.py +12 -0
  201. tomwer/core/process/visualization/tests/test_sample_moved.py +14 -0
  202. tomwer/core/process/visualization/tests/test_sinogram_viewer.py +13 -0
  203. tomwer/core/process/visualization/tests/test_slice_stack.py +13 -0
  204. tomwer/core/process/visualization/tests/test_volume_viewer.py +12 -0
  205. tomwer/core/process/visualization/volumeviewer.py +0 -29
  206. tomwer/core/scan/__init__.py +3 -27
  207. tomwer/core/scan/blissscan.py +5 -34
  208. tomwer/core/scan/edfscan.py +19 -53
  209. tomwer/core/scan/hdf5scan.py +2 -2
  210. tomwer/core/scan/nxtomoscan.py +48 -54
  211. tomwer/core/scan/scanbase.py +107 -203
  212. tomwer/core/scan/scanfactory.py +11 -41
  213. tomwer/core/scan/tests/__init__.py +0 -0
  214. tomwer/core/scan/tests/test_edf.py +25 -0
  215. tomwer/core/scan/tests/test_future_scan.py +35 -0
  216. tomwer/core/scan/tests/test_nxtomoscan.py +143 -0
  217. tomwer/core/scan/tests/test_process_registration.py +64 -0
  218. tomwer/core/settings.py +18 -40
  219. tomwer/core/tests/__init__.py +0 -0
  220. tomwer/core/tests/test_scanutils.py +26 -0
  221. tomwer/core/{test → tests}/test_utils.py +1 -28
  222. tomwer/core/tomwer_object.py +4 -0
  223. tomwer/core/utils/__init__.py +2 -0
  224. tomwer/core/utils/char.py +0 -28
  225. tomwer/core/utils/deprecation.py +12 -38
  226. tomwer/core/utils/dictutils.py +1 -3
  227. tomwer/core/utils/ftseriesutils.py +1 -27
  228. tomwer/core/utils/gpu.py +0 -28
  229. tomwer/core/utils/image.py +8 -39
  230. tomwer/core/utils/locker.py +1 -28
  231. tomwer/core/utils/logconfig.py +0 -27
  232. tomwer/core/utils/normalization.py +4 -31
  233. tomwer/core/utils/nxtomoutils.py +8 -38
  234. tomwer/core/utils/resource.py +0 -26
  235. tomwer/core/utils/scanutils.py +23 -52
  236. tomwer/core/utils/slurm.py +7 -30
  237. tomwer/core/utils/spec.py +6 -6
  238. tomwer/core/utils/tests/__init__.py +0 -0
  239. tomwer/core/utils/tests/test_image.py +30 -0
  240. tomwer/core/utils/tests/test_nxtomo.py +38 -0
  241. tomwer/core/utils/tests/test_scan_utils.py +46 -0
  242. tomwer/core/utils/tests/test_time.py +6 -0
  243. tomwer/core/utils/threads.py +0 -26
  244. tomwer/core/utils/time.py +0 -27
  245. tomwer/core/volume/__init__.py +4 -0
  246. tomwer/core/volume/edfvolume.py +1 -28
  247. tomwer/core/volume/hdf5volume.py +1 -28
  248. tomwer/core/volume/jp2kvolume.py +1 -27
  249. tomwer/core/volume/rawvolume.py +1 -28
  250. tomwer/core/volume/tests/test_volumes.py +21 -0
  251. tomwer/core/volume/tiffvolume.py +1 -28
  252. tomwer/core/volume/volumebase.py +5 -0
  253. tomwer/core/volume/volumefactory.py +7 -33
  254. tomwer/gui/__init__.py +0 -28
  255. tomwer/gui/cluster/__init__.py +2 -0
  256. tomwer/gui/cluster/slurm.py +297 -95
  257. tomwer/gui/cluster/supervisor.py +1 -27
  258. tomwer/gui/cluster/tests/__init__.py +0 -0
  259. tomwer/gui/cluster/{test → tests}/test_cluster.py +21 -26
  260. tomwer/gui/cluster/{test → tests}/test_supervisor.py +1 -27
  261. tomwer/gui/conditions/__init__.py +2 -0
  262. tomwer/gui/conditions/filter.py +1 -26
  263. tomwer/gui/configuration/__init__.py +2 -0
  264. tomwer/gui/control/__init__.py +2 -0
  265. tomwer/gui/control/actions.py +2 -28
  266. tomwer/gui/control/datadiscovery.py +4 -3
  267. tomwer/gui/control/datalist.py +64 -69
  268. tomwer/gui/control/datalistener.py +1 -39
  269. tomwer/gui/control/datareacheractions.py +1 -28
  270. tomwer/gui/control/datatransfert.py +2 -29
  271. tomwer/gui/control/datavalidator.py +3 -37
  272. tomwer/gui/control/datawatcher/__init__.py +0 -28
  273. tomwer/gui/control/datawatcher/configuration.py +1 -28
  274. tomwer/gui/control/datawatcher/datawatcher.py +3 -32
  275. tomwer/gui/control/datawatcher/datawatcherobserver.py +2 -28
  276. tomwer/gui/control/history.py +5 -35
  277. tomwer/gui/control/nxtomomill.py +3 -30
  278. tomwer/gui/control/observations.py +61 -55
  279. tomwer/gui/control/reducedarkflatselector.py +24 -20
  280. tomwer/gui/control/scanselectorwidget.py +2 -28
  281. tomwer/gui/control/selectorwidgetbase.py +17 -17
  282. tomwer/gui/control/series/__init__.py +0 -0
  283. tomwer/gui/control/{serie/seriecreator.py → series/seriescreator.py} +214 -235
  284. tomwer/gui/control/series/serieswaiter.py +0 -0
  285. tomwer/gui/control/series/test/test_creator.py +424 -0
  286. tomwer/gui/control/series/test/test_nxtomo_concatenate.py +21 -0
  287. tomwer/gui/control/singletomoobj.py +1 -1
  288. tomwer/gui/control/tests/__init__.py +0 -0
  289. tomwer/gui/control/tests/test_datalist.py +47 -0
  290. tomwer/gui/control/{test → tests}/test_datalistener.py +1 -28
  291. tomwer/gui/control/tests/test_datavalidator.py +27 -0
  292. tomwer/gui/control/{test → tests}/test_inputwidget.py +1 -27
  293. tomwer/gui/control/tests/test_process_manager.py +38 -0
  294. tomwer/gui/control/tests/test_scan_observations.py +23 -0
  295. tomwer/gui/control/tests/test_scanselector.py +42 -0
  296. tomwer/gui/control/{test → tests}/test_scanvalidator.py +1 -27
  297. tomwer/gui/control/{test → tests}/test_volume_dialog.py +2 -30
  298. tomwer/gui/control/{test → tests}/test_volumeselector.py +1 -27
  299. tomwer/gui/control/volumeselectorwidget.py +2 -30
  300. tomwer/gui/dataportal/__init__.py +2 -0
  301. tomwer/gui/{icat → dataportal}/createscreenshots.py +3 -2
  302. tomwer/gui/dataportal/gallery.py +133 -0
  303. tomwer/gui/dataportal/outputformat.py +0 -0
  304. tomwer/gui/dataportal/publish.py +96 -0
  305. tomwer/gui/dataportal/tests/test_create_screenshots_gui.py +23 -0
  306. tomwer/gui/dataportal/tests/test_gallery_gui.py +21 -0
  307. tomwer/gui/debugtools/__init__.py +2 -0
  308. tomwer/gui/debugtools/datasetgenerator.py +1 -30
  309. tomwer/gui/debugtools/objectinspector.py +1 -29
  310. tomwer/gui/dialog/QDataDialog.py +89 -0
  311. tomwer/gui/{qfolderdialog.py → dialog/QVolumeDialog.py} +8 -107
  312. tomwer/gui/dialog/__init__.py +1 -0
  313. tomwer/gui/edit/__init__.py +2 -0
  314. tomwer/gui/edit/dkrfpatch.py +52 -87
  315. tomwer/gui/edit/imagekeyeditor.py +18 -54
  316. tomwer/gui/edit/nxtomoeditor.py +113 -300
  317. tomwer/gui/edit/nxtomowarmer.py +3 -2
  318. tomwer/gui/edit/tests/__init__.py +0 -0
  319. tomwer/gui/edit/{test → tests}/test_dkrf_patch.py +3 -29
  320. tomwer/gui/edit/{test → tests}/test_image_key_editor.py +1 -27
  321. tomwer/gui/edit/{test → tests}/test_nx_editor.py +45 -23
  322. tomwer/gui/fonts.py +5 -0
  323. tomwer/gui/icons.py +28 -66
  324. tomwer/gui/illustrations.py +4 -34
  325. tomwer/gui/imagefromfile.py +5 -30
  326. tomwer/gui/metadataloader.py +36 -0
  327. tomwer/gui/qconfigfile.py +3 -0
  328. tomwer/gui/qlefilesystem.py +3 -0
  329. tomwer/gui/reconstruction/__init__.py +2 -0
  330. tomwer/gui/reconstruction/axis/AxisMainWindow.py +275 -0
  331. tomwer/gui/reconstruction/axis/AxisOptionsWidget.py +313 -0
  332. tomwer/gui/reconstruction/axis/AxisSettingsWidget.py +797 -0
  333. tomwer/gui/reconstruction/axis/AxisWidget.py +534 -0
  334. tomwer/gui/reconstruction/axis/CalculationWidget.py +218 -0
  335. tomwer/gui/reconstruction/axis/CompareImages.py +11 -44
  336. tomwer/gui/reconstruction/axis/ControlWidget.py +285 -0
  337. tomwer/gui/reconstruction/axis/EstimatedCORWidget.py +394 -0
  338. tomwer/gui/reconstruction/axis/EstimatedCorComboBox.py +118 -0
  339. tomwer/gui/reconstruction/axis/InputWidget.py +347 -0
  340. tomwer/gui/reconstruction/axis/ManualFramesSelection.py +168 -0
  341. tomwer/gui/reconstruction/axis/__init__.py +2 -2
  342. tomwer/gui/reconstruction/darkref/__init__.py +0 -27
  343. tomwer/gui/reconstruction/darkref/darkrefcopywidget.py +5 -34
  344. tomwer/gui/reconstruction/darkref/darkrefwidget.py +1 -27
  345. tomwer/gui/reconstruction/nabu/castvolume.py +40 -59
  346. tomwer/gui/reconstruction/nabu/check.py +7 -33
  347. tomwer/gui/reconstruction/nabu/nabuconfig/base.py +7 -34
  348. tomwer/gui/reconstruction/nabu/nabuconfig/ctf.py +6 -5
  349. tomwer/gui/reconstruction/nabu/nabuconfig/nabuconfig.py +10 -69
  350. tomwer/gui/reconstruction/nabu/nabuconfig/output.py +3 -47
  351. tomwer/gui/reconstruction/nabu/nabuconfig/phase.py +54 -36
  352. tomwer/gui/reconstruction/nabu/nabuconfig/preprocessing.py +103 -54
  353. tomwer/gui/reconstruction/nabu/nabuconfig/reconstruction.py +116 -65
  354. tomwer/gui/reconstruction/nabu/nabuflow.py +31 -61
  355. tomwer/gui/reconstruction/nabu/platform.py +94 -0
  356. tomwer/gui/reconstruction/nabu/slices.py +81 -45
  357. tomwer/gui/reconstruction/nabu/slurm.py +1 -27
  358. tomwer/gui/reconstruction/nabu/test/test_cast_volume.py +82 -0
  359. tomwer/gui/reconstruction/nabu/test/test_check.py +66 -0
  360. tomwer/gui/reconstruction/nabu/test/test_ctf.py +46 -0
  361. tomwer/gui/reconstruction/nabu/test/test_helical.py +21 -0
  362. tomwer/gui/reconstruction/nabu/test/test_nabu_preprocessing.py +81 -0
  363. tomwer/gui/reconstruction/nabu/volume.py +62 -90
  364. tomwer/gui/reconstruction/normalization/intensity.py +5 -32
  365. tomwer/gui/reconstruction/normalization/test/test_intensity.py +89 -0
  366. tomwer/gui/reconstruction/saaxis/corrangeselector.py +32 -56
  367. tomwer/gui/reconstruction/saaxis/dimensionwidget.py +56 -96
  368. tomwer/gui/reconstruction/saaxis/saaxis.py +17 -38
  369. tomwer/gui/reconstruction/saaxis/sliceselector.py +8 -39
  370. tomwer/gui/reconstruction/sadeltabeta/saadeltabeta.py +19 -37
  371. tomwer/gui/reconstruction/scores/control.py +2 -30
  372. tomwer/gui/reconstruction/scores/scoreplot.py +23 -49
  373. tomwer/gui/reconstruction/tests/__init__.py +0 -0
  374. tomwer/gui/reconstruction/{test → tests}/test_axis.py +23 -49
  375. tomwer/gui/reconstruction/{test → tests}/test_nabu.py +16 -31
  376. tomwer/gui/reconstruction/{test → tests}/test_saaxis.py +10 -37
  377. tomwer/gui/reconstruction/{test → tests}/test_sadeltabeta.py +1 -26
  378. tomwer/gui/samplemoved/__init__.py +2 -30
  379. tomwer/gui/samplemoved/selectiontable.py +3 -33
  380. tomwer/gui/settings.py +7 -0
  381. tomwer/gui/stackplot.py +33 -661
  382. tomwer/gui/stacks.py +261 -135
  383. tomwer/gui/stitching/SingleAxisStitchingWidget.py +326 -0
  384. tomwer/gui/stitching/StitchingOptionsWidget.py +438 -0
  385. tomwer/gui/stitching/StitchingWindow.py +586 -0
  386. tomwer/gui/stitching/__init__.py +2 -0
  387. tomwer/gui/stitching/alignment.py +90 -0
  388. tomwer/gui/stitching/axisorderedlist.py +44 -34
  389. tomwer/gui/stitching/config/axisparams.py +25 -11
  390. tomwer/gui/stitching/config/output.py +6 -5
  391. tomwer/gui/stitching/config/positionoveraxis.py +313 -51
  392. tomwer/gui/stitching/config/stitchingstrategies.py +22 -16
  393. tomwer/gui/stitching/config/tests/test_axisparams.py +25 -0
  394. tomwer/gui/stitching/config/tomoobjdetails.py +3 -5
  395. tomwer/gui/stitching/normalization.py +1 -0
  396. tomwer/gui/stitching/preview.py +59 -0
  397. tomwer/gui/stitching/singleaxis.py +57 -0
  398. tomwer/gui/stitching/stitchandbackground.py +3 -2
  399. tomwer/gui/stitching/stitching_preview.py +44 -36
  400. tomwer/gui/stitching/stitching_raw.py +5 -3
  401. tomwer/gui/stitching/tests/test_ZStitchingWindow.py +88 -0
  402. tomwer/gui/stitching/tests/test_axis_ordered_list.py +21 -0
  403. tomwer/gui/stitching/tests/test_normalization.py +27 -0
  404. tomwer/gui/stitching/tests/test_preview.py +68 -0
  405. tomwer/gui/stitching/tests/test_stitching_raw.py +110 -0
  406. tomwer/gui/stitching/tests/utils.py +92 -0
  407. tomwer/gui/stitching/utils.py +14 -0
  408. tomwer/gui/stitching/z_stitching/fineestimation.py +5 -33
  409. tomwer/gui/stitching/z_stitching/tests/test_fine_estimation.py +35 -0
  410. tomwer/gui/stitching/z_stitching/tests/test_raw_estimation.py +215 -0
  411. tomwer/gui/stitching/z_stitching/tests/test_stitching_window.py +51 -0
  412. tomwer/gui/tests/__init__.py +0 -0
  413. tomwer/gui/tests/test_axis_gui.py +43 -0
  414. tomwer/gui/{test → tests}/test_qfolder_dialog.py +1 -1
  415. tomwer/gui/utils/RangeWidget.py +44 -0
  416. tomwer/gui/utils/buttons.py +4 -3
  417. tomwer/gui/utils/completer.py +2 -33
  418. tomwer/gui/utils/flow.py +11 -40
  419. tomwer/gui/utils/gpu.py +60 -0
  420. tomwer/gui/utils/illustrations.py +1 -26
  421. tomwer/gui/utils/inputwidget.py +35 -73
  422. tomwer/gui/utils/lineselector/lineselector.py +9 -46
  423. tomwer/gui/utils/loadingmode.py +81 -0
  424. tomwer/gui/utils/qt_utils.py +9 -0
  425. tomwer/gui/utils/sandboxes.py +1 -26
  426. tomwer/gui/utils/scandescription.py +2 -31
  427. tomwer/gui/utils/scrollarea.py +6 -55
  428. tomwer/gui/utils/slider.py +4 -28
  429. tomwer/gui/utils/splashscreen.py +0 -28
  430. tomwer/gui/utils/step.py +14 -13
  431. tomwer/gui/utils/tests/test_completer.py +41 -0
  432. tomwer/gui/utils/tests/test_line_selector.py +21 -0
  433. tomwer/gui/utils/tests/test_splashscreen.py +8 -0
  434. tomwer/gui/utils/tests/test_vignettes.py +68 -0
  435. tomwer/gui/utils/unitsystem.py +15 -69
  436. tomwer/gui/utils/utils.py +4 -5
  437. tomwer/gui/utils/vignettes.py +10 -41
  438. tomwer/gui/utils/waiterthread.py +0 -26
  439. tomwer/gui/visualization/__init__.py +2 -0
  440. tomwer/gui/visualization/dataviewer.py +68 -421
  441. tomwer/gui/visualization/diffviewer/diffviewer.py +2 -30
  442. tomwer/gui/visualization/diffviewer/shiftwidget.py +4 -29
  443. tomwer/gui/visualization/fullscreenplot.py +5 -5
  444. tomwer/gui/visualization/imagestack.py +403 -0
  445. tomwer/gui/visualization/nxtomometadata.py +0 -4
  446. tomwer/gui/visualization/reconstructionparameters.py +14 -32
  447. tomwer/gui/visualization/scanoverview.py +33 -66
  448. tomwer/gui/visualization/sinogramviewer.py +2 -28
  449. tomwer/gui/visualization/test/__init__.py +0 -28
  450. tomwer/gui/visualization/test/test_dataviewer.py +1 -28
  451. tomwer/gui/visualization/test/test_diffviewer.py +1 -28
  452. tomwer/gui/visualization/test/test_nx_tomo_metadata_viewer.py +0 -5
  453. tomwer/gui/visualization/test/test_reconstruction_parameters.py +1 -27
  454. tomwer/gui/visualization/test/test_sinogramviewer.py +1 -28
  455. tomwer/gui/visualization/test/test_stacks.py +184 -115
  456. tomwer/gui/visualization/test/test_volumeviewer.py +3 -2
  457. tomwer/gui/visualization/tomoobjoverview.py +2 -2
  458. tomwer/gui/visualization/volumeoverview.py +3 -2
  459. tomwer/gui/visualization/volumeviewer.py +47 -43
  460. tomwer/io/__init__.py +2 -0
  461. tomwer/io/utils/h5pyutils.py +1 -27
  462. tomwer/io/utils/test/test_raw_and_processed_data.py +10 -0
  463. tomwer/io/utils/test/test_utils.py +67 -0
  464. tomwer/io/utils/utils.py +2 -31
  465. tomwer/resources/__init__.py +13 -33
  466. tomwer/resources/gui/icons/edit_downstream.svg +114 -0
  467. tomwer/resources/gui/icons/edit_upstream.svg +112 -0
  468. tomwer/resources/gui/icons/free_edition.svg +23 -0
  469. tomwer/resources/gui/icons/icat_gallery_opts.png +0 -0
  470. tomwer/resources/gui/icons/icat_gallery_opts.svg +80 -0
  471. tomwer/resources/gui/icons/search.png +0 -0
  472. tomwer/resources/gui/icons/search.svg +23 -0
  473. tomwer/resources/gui/icons/warning.png +0 -0
  474. tomwer/synctools/__init__.py +2 -0
  475. tomwer/synctools/axis.py +1 -27
  476. tomwer/synctools/darkref.py +1 -26
  477. tomwer/synctools/datalistener.py +1 -27
  478. tomwer/synctools/datatransfert.py +2 -27
  479. tomwer/synctools/imageloaderthread.py +1 -28
  480. tomwer/synctools/rsyncmanager.py +1 -25
  481. tomwer/synctools/saaxis.py +1 -26
  482. tomwer/synctools/sadeltabeta.py +1 -26
  483. tomwer/synctools/stacks/control/datalistener.py +1 -26
  484. tomwer/synctools/stacks/processingstack.py +4 -33
  485. tomwer/synctools/stacks/reconstruction/axis.py +6 -53
  486. tomwer/synctools/stacks/reconstruction/castvolume.py +12 -43
  487. tomwer/synctools/stacks/reconstruction/dkrefcopy.py +4 -27
  488. tomwer/synctools/stacks/reconstruction/nabu.py +3 -28
  489. tomwer/synctools/stacks/reconstruction/normalization.py +2 -27
  490. tomwer/synctools/stacks/reconstruction/saaxis.py +2 -27
  491. tomwer/synctools/stacks/reconstruction/sadeltabeta.py +2 -27
  492. tomwer/synctools/tests/__init__.py +0 -0
  493. tomwer/synctools/{test → tests}/test_darkRefs.py +16 -40
  494. tomwer/synctools/{test → tests}/test_foldertransfer.py +2 -33
  495. tomwer/synctools/utils/scanstages.py +2 -31
  496. tomwer/tests/__init__.py +1 -0
  497. tomwer/tests/app/test_stitching.py +95 -0
  498. tomwer/tests/datasets.py +1 -5
  499. tomwer/tests/orangecontrib/tomwer/widgets/cluster/tests/test_future_supervisorow.py +48 -0
  500. tomwer/tests/orangecontrib/tomwer/widgets/cluster/tests/test_slurm_clusterow.py +40 -0
  501. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_advancement.py +8 -0
  502. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_data_validator.py +55 -0
  503. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_datadiscovery.py +129 -0
  504. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_datalistener.py +111 -0
  505. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_dataselector.py +69 -0
  506. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_datawatcher.py +411 -0
  507. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_emailow.py +29 -0
  508. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_notifier.py +24 -0
  509. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_nxtomo_concatenate_ow.py +64 -0
  510. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_nxtomomill.py +133 -0
  511. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_reduce_dark_flat_selector.py +40 -0
  512. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_singletomoobj.py +40 -0
  513. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_timerow.py +25 -0
  514. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_tomoobj_series.py +96 -0
  515. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_volume_selector.py +69 -0
  516. orangecontrib/tomwer/widgets/edit/test/test_image_key_editor.py → tomwer/tests/orangecontrib/tomwer/widgets/debugtools/tests/test_dataset_generator.py +17 -16
  517. tomwer/tests/orangecontrib/tomwer/widgets/debugtools/tests/test_object_inspector.py +36 -0
  518. {orangecontrib/tomwer/widgets/edit/test → tomwer/tests/orangecontrib/tomwer/widgets/edit/tests}/test_dark_flat_patch.py +1 -27
  519. tomwer/tests/orangecontrib/tomwer/widgets/edit/tests/test_image_key_editor.py +30 -0
  520. tomwer/tests/orangecontrib/tomwer/widgets/edit/tests/test_nxtomo_editor.py +138 -0
  521. tomwer/tests/orangecontrib/tomwer/widgets/other/tests/test_pythonscript.py +31 -0
  522. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_axis.py +199 -0
  523. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_cast_volumeow.py +58 -0
  524. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_dark_refs_widget.py +136 -0
  525. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_delta_beta_selector.py +15 -0
  526. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_i_norm.py +200 -0
  527. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_nabu_helical_prepare_weights_double.py +20 -0
  528. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_nabu_volume.py +74 -0
  529. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_nabu_widget.py +107 -0
  530. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_sa_delta_beta.py +194 -0
  531. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_saaxis.py +194 -0
  532. tomwer/tests/orangecontrib/tomwer/widgets/stitching/tests/test_zstitching.py +313 -0
  533. tomwer/tests/orangecontrib/tomwer/widgets/tests/test_conditions.py +85 -0
  534. tomwer/tests/orangecontrib/tomwer/widgets/tests/test_darkref.py +225 -0
  535. tomwer/tests/orangecontrib/tomwer/widgets/tests/test_foldertransfert.py +105 -0
  536. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_dataviewerow.py +57 -0
  537. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_diffviewerow.py +39 -0
  538. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_nxtomo_metadata_viewer.py +29 -0
  539. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_radio_stackow.py +31 -0
  540. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_sample_movedow.py +46 -0
  541. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_sinogram_viewerow.py +31 -0
  542. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_slice_stackow.py +31 -0
  543. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_volume_viewerow.py +32 -0
  544. tomwer/tests/test_ewoks/test_conversion.py +104 -0
  545. tomwer/tests/test_ewoks/test_single_node_execution.py +87 -0
  546. tomwer/tests/test_ewoks/test_workflows.py +138 -0
  547. tomwer/utils.py +11 -39
  548. tomwer/version.py +2 -2
  549. {tomwer-1.3.26.dist-info → tomwer-1.4.0.dist-info}/LICENSE +3 -3
  550. tomwer-1.4.0.dist-info/METADATA +337 -0
  551. tomwer-1.4.0.dist-info/RECORD +912 -0
  552. {tomwer-1.3.26.dist-info → tomwer-1.4.0.dist-info}/WHEEL +1 -1
  553. {tomwer-1.3.26.dist-info → tomwer-1.4.0.dist-info}/entry_points.txt +1 -0
  554. orangecontrib/tomwer/widgets/control/DataListOW.py +0 -129
  555. orangecontrib/tomwer/widgets/control/TomoObjSerieOW.py +0 -86
  556. orangecontrib/tomwer/widgets/control/VolumeSymLinkOW.py +0 -182
  557. orangecontrib/tomwer/widgets/edit/test/test_nxtomo_editor.py +0 -141
  558. orangecontrib/tomwer/widgets/icat/PublishProcessedDataOW.py +0 -115
  559. orangecontrib/tomwer/widgets/icat/RawDataScreenshotCreatorOW.py +0 -98
  560. orangecontrib/tomwer/widgets/icat/SaveToGalleryAndPublishOW.py +0 -129
  561. orangecontrib/tomwer/widgets/icat/icons/add_gallery.png +0 -0
  562. orangecontrib/tomwer/widgets/icat/icons/add_gallery.svg +0 -82
  563. orangecontrib/tomwer/widgets/icat/icons/raw_screenshots.png +0 -0
  564. orangecontrib/tomwer/widgets/icat/icons/raw_screenshots.svg +0 -143
  565. orangecontrib/tomwer/widgets/visualization/LivesliceOW.py +0 -87
  566. orangecontrib/tomwer/widgets/visualization/icons/liveslice.png +0 -0
  567. orangecontrib/tomwer/widgets/visualization/icons/liveslice.svg +0 -110
  568. tomwer/core/log/logger.py +0 -130
  569. tomwer/core/process/control/test/test_volume_link.py +0 -74
  570. tomwer/core/process/control/tomoobjserie.py +0 -12
  571. tomwer/core/process/control/volumesymlink.py +0 -200
  572. tomwer/core/process/icat/createscreenshots.py +0 -100
  573. tomwer/core/process/icat/gallery.py +0 -377
  574. tomwer/core/process/icat/icatbase.py +0 -36
  575. tomwer/core/process/icat/publish.py +0 -228
  576. tomwer/core/process/icat/screenshots.py +0 -27
  577. tomwer/core/process/reconstruction/test/test_darkref.py +0 -60
  578. tomwer/core/process/reconstruction/test/test_sadeltabeta.py +0 -74
  579. tomwer/core/process/test/test_axis.py +0 -309
  580. tomwer/core/process/visualization/liveslice.py +0 -6
  581. tomwer/core/progress.py +0 -100
  582. tomwer/core/scan/test/test_edf.py +0 -53
  583. tomwer/core/scan/test/test_future_scan.py +0 -61
  584. tomwer/core/scan/test/test_h5.py +0 -96
  585. tomwer/core/scan/test/test_process_registration.py +0 -109
  586. tomwer/core/test/test_scanutils.py +0 -53
  587. tomwer/gui/control/emailnotifier.py +0 -174
  588. tomwer/gui/control/serie/seriewaiter.py +0 -28
  589. tomwer/gui/control/test/__init__.py +0 -28
  590. tomwer/gui/control/test/test_datalist.py +0 -96
  591. tomwer/gui/control/test/test_datavalidator.py +0 -54
  592. tomwer/gui/control/test/test_email.py +0 -35
  593. tomwer/gui/control/test/test_process_manager.py +0 -65
  594. tomwer/gui/control/test/test_scanselector.py +0 -67
  595. tomwer/gui/edit/test/__init__.py +0 -28
  596. tomwer/gui/icat/gallery.py +0 -214
  597. tomwer/gui/icat/publish.py +0 -187
  598. tomwer/gui/reconstruction/axis/axis.py +0 -733
  599. tomwer/gui/reconstruction/axis/radioaxis.py +0 -2467
  600. tomwer/gui/stitching/stitching.py +0 -1392
  601. tomwer/gui/test/__init__.py +0 -28
  602. tomwer/gui/test/test_axis_gui.py +0 -34
  603. tomwer/synctools/stacks/edit/darkflatpatch.py +0 -169
  604. tomwer/synctools/stacks/edit/imagekeyeditor.py +0 -135
  605. tomwer/third_part/WaitingOverlay.py +0 -110
  606. tomwer-1.3.26-py3.11-nspkg.pth +0 -1
  607. tomwer-1.3.26.dist-info/METADATA +0 -292
  608. tomwer-1.3.26.dist-info/RECORD +0 -785
  609. tomwer-1.3.26.dist-info/namespace_packages.txt +0 -1
  610. /orangecontrib/tomwer/{widgets/edit/test → tests}/__init__.py +0 -0
  611. {tomwer/core/process/control/test → orangecontrib/tomwer/tutorials/id16b}/__init__.py +0 -0
  612. {tomwer/core/process/icat → orangecontrib/tomwer/widgets/cluster/tests}/__init__.py +0 -0
  613. /orangecontrib/tomwer/widgets/control/icons/{tomoobjserie.png → tomoobjseries.png} +0 -0
  614. {tomwer/core/process/reconstruction/test → orangecontrib/tomwer/widgets/control/tests}/__init__.py +0 -0
  615. /orangecontrib/tomwer/widgets/{icat → dataportal}/icons/publish_processed_data.png +0 -0
  616. /orangecontrib/tomwer/widgets/{icat → dataportal}/icons/publish_processed_data.svg +0 -0
  617. {tomwer/core/process/test → orangecontrib/tomwer/widgets/debugtools/tests}/__init__.py +0 -0
  618. {tomwer/core/scan/test → orangecontrib/tomwer/widgets/edit/tests}/__init__.py +0 -0
  619. {tomwer/core/test → orangecontrib/tomwer/widgets/other/tests}/__init__.py +0 -0
  620. {tomwer/gui/cluster/test → orangecontrib/tomwer/widgets/reconstruction/tests}/__init__.py +0 -0
  621. {tomwer/gui/control/serie → orangecontrib/tomwer/widgets/stitching/tests}/__init__.py +0 -0
  622. {tomwer/gui/icat → orangecontrib/tomwer/widgets/tests}/__init__.py +0 -0
  623. {tomwer/gui/reconstruction/test → orangecontrib/tomwer/widgets/visualization/tests}/__init__.py +0 -0
  624. /tomwer/{synctools/stacks/edit → app/stitching}/__init__.py +0 -0
  625. /tomwer/{synctools/test → core/process/control/tests}/__init__.py +0 -0
  626. /tomwer/core/process/control/{test → tests}/test_email.py +0 -0
  627. /tomwer/core/process/control/{test → tests}/test_h52nx_process.py +0 -0
  628. /tomwer/{third_part → core/process/drac}/__init__.py +0 -0
  629. /tomwer/core/process/reconstruction/{test → tests}/test_axis_params.py +0 -0
  630. /tomwer/core/process/reconstruction/{test → tests}/test_darkref_copy.py +0 -0
  631. /tomwer/core/process/reconstruction/{test → tests}/test_paramsbase.py +0 -0
  632. /tomwer/core/scan/{test → tests}/test_scan.py +0 -0
  633. /tomwer/gui/control/{serie → series}/nxtomoconcatenate.py +0 -0
  634. /tomwer/gui/control/{test → tests}/test_datadiscovery.py +0 -0
  635. /tomwer/gui/control/{test → tests}/test_reducedarkflat_selector.py +0 -0
  636. /tomwer/gui/control/{test → tests}/test_single_tomo_obj.py +0 -0
  637. {orangecontrib/tomwer/widgets/edit/test → tomwer/tests/orangecontrib/tomwer/widgets/edit/tests}/test_image_key_upgrader.py +0 -0
  638. {tomwer-1.3.26.dist-info → tomwer-1.4.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,40 @@
1
+ import gc
2
+ import os
3
+ import pickle
4
+ import shutil
5
+ import tempfile
6
+
7
+ import numpy
8
+ from orangecanvas.scheme.readwrite import literal_dumps
9
+ from silx.gui import qt
10
+ from silx.gui.utils.testutils import TestCaseQt
11
+
12
+ from orangecontrib.tomwer.widgets.control.SingleTomoObjOW import SingleTomoObjOW
13
+ from tomwer.core.volume.hdf5volume import HDF5Volume
14
+
15
+
16
+ class TestSingleTomoObjOW(TestCaseQt):
17
+ def setUp(self):
18
+ super().setUp()
19
+ self.window = SingleTomoObjOW()
20
+ self.folder = tempfile.mkdtemp()
21
+ self.volume_1 = HDF5Volume(
22
+ file_path=os.path.join(self.folder, "vol_file.hdf5"),
23
+ data_path="entry0000",
24
+ data=numpy.linspace(0, 10, 100 * 100 * 3).reshape(3, 100, 100),
25
+ )
26
+ self.volume_1.save()
27
+
28
+ def tearDown(self):
29
+ self.window.setAttribute(qt.Qt.WA_DeleteOnClose)
30
+ self.window.close()
31
+ self.window = None
32
+ shutil.rmtree(self.folder)
33
+ gc.collect()
34
+
35
+ def test(self):
36
+ self.window.show()
37
+ self.window.widget.setTomoObject(self.volume_1)
38
+ # test serialization
39
+ pickle.dumps(self.window._tomo_obj_setting)
40
+ literal_dumps(self.window._tomo_obj_setting)
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ from __future__ import annotations
3
+
4
+
5
+ import gc
6
+
7
+ from silx.gui import qt
8
+ from silx.gui.utils.testutils import TestCaseQt
9
+
10
+ from orangecontrib.tomwer.widgets.control.TimerOW import TimerOW
11
+
12
+
13
+ class TestTimerOW(TestCaseQt):
14
+ def setUp(self):
15
+ super().setUp()
16
+ self.widget = TimerOW()
17
+
18
+ def tearDown(self):
19
+ self.widget.setAttribute(qt.Qt.WA_DeleteOnClose)
20
+ self.widget.close()
21
+ self.widget = None
22
+ gc.collect()
23
+
24
+ def test(self):
25
+ self.widget.show()
@@ -0,0 +1,96 @@
1
+ import gc
2
+ import os
3
+ import shutil
4
+ import tempfile
5
+
6
+ import numpy
7
+ from silx.gui import qt
8
+ from silx.gui.utils.testutils import SignalListener, TestCaseQt
9
+
10
+ from orangecontrib.tomwer.widgets.control.TomoObjSeriesOW import TomoObjSeriesOW
11
+ from tomwer.core.utils.scanutils import HDF5MockContext
12
+ from tomwer.core.volume.hdf5volume import HDF5Volume
13
+
14
+
15
+ class TestTomoObjSeriesOW(TestCaseQt):
16
+ """
17
+ Test the TomoObjSeriesOW orange widget
18
+ """
19
+
20
+ def setUp(self):
21
+ super().setUp()
22
+ self.window = TomoObjSeriesOW()
23
+ self.folder = tempfile.mkdtemp()
24
+
25
+ # connect to the series created signal
26
+ self._listener = SignalListener()
27
+ self.window._widget.sigSeriesSelected.connect(self._listener)
28
+
29
+ def tearDown(self):
30
+ self.window.setAttribute(qt.Qt.WA_DeleteOnClose)
31
+ self.window.close()
32
+ self.window = None
33
+ self._listener = None
34
+ shutil.rmtree(self.folder)
35
+ gc.collect()
36
+
37
+ def test_with_volumes(self):
38
+ """test the TomoObjSeriesOW with volumes"""
39
+ volume_1 = HDF5Volume(
40
+ file_path=os.path.join(self.folder, "vol_file.hdf5"),
41
+ data_path="entry0000",
42
+ data=numpy.linspace(0, 10, 100 * 100 * 3).reshape(3, 100, 100),
43
+ )
44
+ volume_1.save()
45
+ volume_2 = HDF5Volume(
46
+ file_path=os.path.join(self.folder, "vol_file2.hdf5"),
47
+ data_path="entry0001",
48
+ data=numpy.linspace(60, 120, 100 * 100 * 5).reshape(5, 100, 100),
49
+ )
50
+ volume_2.save()
51
+
52
+ assert self._listener.callCount() == 0
53
+ assert len(self.window._widget._widget.getSelectedSeries()) == 0
54
+ # add the volume to the possible objects to be added
55
+ self.window.addTomoObj(volume_1)
56
+ self.window.addTomoObj(volume_2)
57
+ assert len(self.window._widget._widget.getSelectedSeries()) == 0
58
+
59
+ # add volume to the series defined
60
+ newSerieWidget = (
61
+ self.window._widget._widget._seriesDefinitionWidget._manualDefWidget._newSeriesWidget
62
+ )
63
+ newSerieWidget.addTomoObjToCurrentSeries(volume_1)
64
+ assert len(self.window._widget._widget.getSelectedSeries()) == 1
65
+ newSerieWidget.addTomoObjToCurrentSeries(
66
+ volume_1
67
+ ) # try adding twice the same object
68
+ assert len(self.window._widget._widget.getSelectedSeries()) == 1
69
+ newSerieWidget.addTomoObjToCurrentSeries(volume_2)
70
+ assert len(self.window._widget._widget.getSelectedSeries()) == 2
71
+ assert self._listener.callCount() == 0
72
+ self.window._widget._selectButton.released.emit()
73
+ self.qapp.processEvents()
74
+ assert self._listener.callCount() == 1
75
+
76
+ def test_with_scans(self):
77
+ """test the TomoObjSeriesOW with scans"""
78
+ with HDF5MockContext(
79
+ scan_path=os.path.join(self.folder, "test", "scan"), n_proj=100
80
+ ) as scan:
81
+ assert self._listener.callCount() == 0
82
+
83
+ # add the scan to possible objects to be added
84
+ self.window.addTomoObj(scan)
85
+ assert len(self.window._widget._widget.getSelectedSeries()) == 0
86
+
87
+ # add scan to the series defined
88
+ newSerieWidget = (
89
+ self.window._widget._widget._seriesDefinitionWidget._manualDefWidget._newSeriesWidget
90
+ )
91
+ newSerieWidget.addTomoObjToCurrentSeries(scan)
92
+
93
+ assert len(self.window._widget._widget.getSelectedSeries()) == 1
94
+ self.window._widget._selectButton.released.emit()
95
+ self.qapp.processEvents()
96
+ assert self._listener.callCount() == 1
@@ -0,0 +1,69 @@
1
+ import gc
2
+ import os
3
+ import pickle
4
+ import shutil
5
+ import tempfile
6
+
7
+ import numpy
8
+ from orangecanvas.scheme.readwrite import literal_dumps
9
+ from silx.gui import qt
10
+ from silx.gui.utils.testutils import TestCaseQt
11
+
12
+ from orangecontrib.tomwer.widgets.control.VolumeSelector import VolumeSelectorOW
13
+ from tomwer.core.volume.hdf5volume import HDF5Volume
14
+
15
+
16
+ class TestVolumeSelectorOW(TestCaseQt):
17
+ def setUp(self):
18
+ super().setUp()
19
+ self.window = VolumeSelectorOW()
20
+ self.folder = tempfile.mkdtemp()
21
+ self.volume_1 = HDF5Volume(
22
+ file_path=os.path.join(self.folder, "vol_file.hdf5"),
23
+ data_path="entry0000",
24
+ data=numpy.linspace(0, 10, 100 * 100 * 3).reshape(3, 100, 100),
25
+ )
26
+ self.volume_1.save()
27
+ self.volume_2 = HDF5Volume(
28
+ file_path=os.path.join(self.folder, "vol_file2.hdf5"),
29
+ data_path="entry0001",
30
+ data=numpy.linspace(60, 120, 100 * 100 * 5).reshape(5, 100, 100),
31
+ )
32
+ self.volume_2.save()
33
+
34
+ def tearDown(self):
35
+ self.window.setAttribute(qt.Qt.WA_DeleteOnClose)
36
+ self.window.close()
37
+ self.window = None
38
+ shutil.rmtree(self.folder)
39
+ gc.collect()
40
+
41
+ def test(self):
42
+ self.window.show()
43
+ # check adding one volume
44
+ self.window.addVolume(self.volume_1)
45
+ assert self.window.widget.dataList.n_data() == 1
46
+ # check behavior adding the same volume
47
+ self.window.addVolume(self.volume_1)
48
+ assert self.window.widget.dataList.n_data() == 1
49
+ # check adding another volume
50
+ self.window.addVolume(self.volume_2)
51
+ assert self.window.widget.dataList.n_data() == 2
52
+ # check removing volume(s)
53
+ self.window.removeVolume(self.volume_1)
54
+ assert self.window.widget.dataList.n_data() == 1
55
+ self.window.removeVolume(self.volume_1)
56
+ assert self.window.widget.dataList.n_data() == 1
57
+ self.window.removeVolume(self.volume_2)
58
+ assert self.window.widget.dataList.n_data() == 0
59
+
60
+ # and adding them back
61
+ self.window.addVolume(self.volume_1)
62
+ self.window.addVolume(self.volume_2)
63
+ assert self.window.widget.dataList.n_data() == 2
64
+
65
+ # test serialization
66
+ self.window._updateSettings()
67
+ assert len(self.window._scanIDs) == 2
68
+ pickle.dumps(self.window._scanIDs)
69
+ literal_dumps(self.window._scanIDs)
@@ -1,7 +1,7 @@
1
1
  # coding: utf-8
2
2
  # /*##########################################################################
3
3
  #
4
- # Copyright (c) 2017-2019 European Synchrotron Radiation Facility
4
+ # Copyright (c) 2017-2021 European Synchrotron Radiation Facility
5
5
  #
6
6
  # Permission is hereby granted, free of charge, to any person obtaining a copy
7
7
  # of this software and associated documentation files (the "Software"), to deal
@@ -22,35 +22,36 @@
22
22
  # THE SOFTWARE.
23
23
  #
24
24
  # ###########################################################################*/
25
+
25
26
  __authors__ = ["H. Payno"]
26
27
  __license__ = "MIT"
27
- __date__ = "10/12/2021"
28
+ __date__ = "21/06/2021"
28
29
 
29
30
 
30
31
  import gc
32
+ import shutil
33
+ import tempfile
31
34
 
32
- import pytest
33
35
  from silx.gui import qt
34
36
  from silx.gui.utils.testutils import TestCaseQt
35
37
 
36
- from orangecontrib.tomwer.widgets.edit.ImageKeyEditorOW import ImageKeyEditorOW
37
- from tomwer.tests.utils import skip_gui_test
38
-
38
+ from orangecontrib.tomwer.widgets.debugtools.DatasetGeneratorOW import (
39
+ DatasetGeneratorOW,
40
+ )
39
41
 
40
- @pytest.mark.skipif(skip_gui_test(), reason="skip gui test")
41
- class TestImageKeyEditor(TestCaseQt):
42
- """Test that the ImageKeyEditorOW widget work correctly (at least launched)"""
43
42
 
43
+ class TestDatasetGeneratorOW(TestCaseQt):
44
44
  def setUp(self):
45
- super().setUp()
46
- self._window = ImageKeyEditorOW()
45
+ self.tmp_dir = tempfile.mkdtemp()
46
+ self.widget = DatasetGeneratorOW()
47
+ self.widget.generatorGUI.mainWidget.setRootDir(self.tmp_dir)
47
48
 
48
49
  def tearDown(self):
49
- self._window.setAttribute(qt.Qt.WA_DeleteOnClose)
50
- self._window.close()
51
- self._window = None
50
+ shutil.rmtree(self.tmp_dir)
51
+ self.widget.setAttribute(qt.Qt.WA_DeleteOnClose)
52
+ self.widget.close()
53
+ self.widget = None
52
54
  gc.collect()
53
55
 
54
56
  def test(self):
55
- self._window.show()
56
- self.qWaitForWindowExposed(self._window)
57
+ self.widget._generate().join()
@@ -0,0 +1,36 @@
1
+ # coding: utf-8
2
+ from __future__ import annotations
3
+
4
+
5
+ import gc
6
+ import os
7
+ import shutil
8
+ import tempfile
9
+
10
+ from silx.gui import qt
11
+ from silx.gui.utils.testutils import TestCaseQt
12
+
13
+ from orangecontrib.tomwer.widgets.debugtools.ObjectInspectorOW import ObjectInspectorOW
14
+ from tomwer.core.utils.scanutils import MockNXtomo
15
+
16
+
17
+ class TestObjectInspectorOW(TestCaseQt):
18
+ def setUp(self):
19
+ super().setUp()
20
+ self.tmp_dir = tempfile.mkdtemp()
21
+ self.scan = MockNXtomo(
22
+ scan_path=os.path.join(self.tmp_dir, "myscan"),
23
+ n_proj=20,
24
+ n_ini_proj=20,
25
+ dim=10,
26
+ ).scan
27
+
28
+ def tearDown(self):
29
+ shutil.rmtree(self.tmp_dir)
30
+ gc.collect()
31
+
32
+ def test(self):
33
+ widget = ObjectInspectorOW()
34
+ widget.setObject(self.scan)
35
+ widget.setAttribute(qt.Qt.WA_DeleteOnClose)
36
+ widget.close()
@@ -1,31 +1,5 @@
1
1
  # coding: utf-8
2
- # /*##########################################################################
3
- #
4
- # Copyright (c) 2017-2019 European Synchrotron Radiation Facility
5
- #
6
- # Permission is hereby granted, free of charge, to any person obtaining a copy
7
- # of this software and associated documentation files (the "Software"), to deal
8
- # in the Software without restriction, including without limitation the rights
9
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
- # copies of the Software, and to permit persons to whom the Software is
11
- # furnished to do so, subject to the following conditions:
12
- #
13
- # The above copyright notice and this permission notice shall be included in
14
- # all copies or substantial portions of the Software.
15
- #
16
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
- # THE SOFTWARE.
23
- #
24
- # ###########################################################################*/
25
- __authors__ = ["H. Payno"]
26
- __license__ = "MIT"
27
- __date__ = "10/12/2021"
28
-
2
+ from __future__ import annotations
29
3
 
30
4
  import gc
31
5
  import os
@@ -0,0 +1,30 @@
1
+ # coding: utf-8
2
+ from __future__ import annotations
3
+
4
+ import gc
5
+
6
+ import pytest
7
+ from silx.gui import qt
8
+ from silx.gui.utils.testutils import TestCaseQt
9
+
10
+ from orangecontrib.tomwer.widgets.edit.ImageKeyEditorOW import ImageKeyEditorOW
11
+ from tomwer.tests.utils import skip_gui_test
12
+
13
+
14
+ @pytest.mark.skipif(skip_gui_test(), reason="skip gui test")
15
+ class TestImageKeyEditor(TestCaseQt):
16
+ """Test that the ImageKeyEditorOW widget work correctly (at least launched)"""
17
+
18
+ def setUp(self):
19
+ super().setUp()
20
+ self._window = ImageKeyEditorOW()
21
+
22
+ def tearDown(self):
23
+ self._window.setAttribute(qt.Qt.WA_DeleteOnClose)
24
+ self._window.close()
25
+ self._window = None
26
+ gc.collect()
27
+
28
+ def test(self):
29
+ self._window.show()
30
+ self.qWaitForWindowExposed(self._window)
@@ -0,0 +1,138 @@
1
+ import os
2
+ import pickle
3
+
4
+ import numpy
5
+ import pytest
6
+ from nxtomomill.nexus.nxtomo import NXtomo
7
+ from orangecanvas.scheme.readwrite import literal_dumps
8
+ from silx.gui.utils.testutils import SignalListener
9
+ from nxtomo.nxobject.nxdetector import ImageKey
10
+
11
+ from orangecontrib.tomwer.widgets.edit.NXtomoEditorOW import NXtomoEditorOW
12
+ from tomwer.core.process.edit.nxtomoeditor import NXtomoEditorKeys
13
+ from tomwer.core.scan.nxtomoscan import NXtomoScan
14
+ from tomwer.tests.utils import skip_gui_test
15
+ from tomwer.gui.utils.qt_utils import QSignalSpy
16
+ from tomwer.tests.conftest import qtapp # noqa F401
17
+
18
+
19
+ def getDefaultConfig() -> dict:
20
+ """return the configuration of the NXtomo editor. First value is the value of the field, second is: is the associated lock button locked or not"""
21
+ return {
22
+ NXtomoEditorKeys.ENERGY: (5.9, False),
23
+ NXtomoEditorKeys.SAMPLE_DETECTOR_DISTANCE: (2.4, True),
24
+ NXtomoEditorKeys.FIELD_OF_VIEW: ("Full", False),
25
+ NXtomoEditorKeys.X_PIXEL_SIZE: (0.023, True),
26
+ NXtomoEditorKeys.Y_PIXEL_SIZE: (0.025, True),
27
+ NXtomoEditorKeys.X_FLIPPED: (True, True),
28
+ NXtomoEditorKeys.Y_FLIPPED: (False, False),
29
+ NXtomoEditorKeys.X_TRANSLATION: (0.0,),
30
+ NXtomoEditorKeys.Z_TRANSLATION: (0.0,),
31
+ }
32
+
33
+
34
+ @pytest.mark.skipif(skip_gui_test(), reason="skip gui test")
35
+ def test_NXtomoEditorOW(
36
+ qtapp, # noqa F811
37
+ tmp_path,
38
+ ):
39
+ window = NXtomoEditorOW()
40
+ # test serialization
41
+ window.setConfiguration(getDefaultConfig())
42
+ assert window.getConfiguration() == getDefaultConfig()
43
+ pickle.dumps(window.getConfiguration())
44
+
45
+ # test literal dumps
46
+ literal_dumps(window.getConfiguration())
47
+
48
+ # test widget automation
49
+ signal_listener = SignalListener()
50
+ window.sigScanReady.connect(signal_listener)
51
+ # set up the widget to define and lock distance, energy and x pixel size
52
+ distance_widget = window.widget.mainWidget._distanceMetricEntry
53
+ distance_widget.setValue(0.6)
54
+ distance_widget.setUnit("mm")
55
+ distance_locker = window.widget.mainWidget._distanceLB
56
+ distance_locker.setLock(True)
57
+ energy_widget = window.widget.mainWidget._energyEntry
58
+ energy_widget.setValue(88.058)
59
+ energy_locker = window.widget.mainWidget._energyLockerLB
60
+ energy_locker.setLock(True)
61
+ x_pixel_widget = window.widget.mainWidget._xPixelSizeMetricEntry
62
+ x_pixel_widget.setValue(45)
63
+ x_pixel_widget.setUnit("nm")
64
+ x_pixel_locker = window.widget.mainWidget._xPixelSizeLB
65
+ x_pixel_locker.setLock(True)
66
+
67
+ # 1.0 create nx tomos with raw data
68
+ nx_tomo = NXtomo()
69
+ nx_tomo.instrument.detector.x_pixel_size = (
70
+ 0.023 # should be overwrite by the configuration / lock buttons
71
+ )
72
+ nx_tomo.instrument.detector.y_pixel_size = (
73
+ 0.025 # should be overwrite by the configuration / lock buttons
74
+ )
75
+ nx_tomo.instrument.detector.field_of_view = "full"
76
+ nx_tomo.instrument.detector.distance = (
77
+ 2.4 # should be overwrite by the configuration / lock buttons
78
+ )
79
+ nx_tomo.instrument.detector.x_flipped = (
80
+ False # should be overwrite by the configuration / lock buttons
81
+ )
82
+ nx_tomo.instrument.detector.y_flipped = True
83
+ nx_tomo.energy = 5.9
84
+ nx_tomo.instrument.detector.image_key_control = [ImageKey.PROJECTION.value] * 12
85
+ nx_tomo.instrument.detector.data = numpy.empty(shape=(12, 10, 10))
86
+ nx_tomo.sample.rotation_angle = numpy.linspace(0, 20, num=12)
87
+
88
+ file_path = os.path.join(tmp_path, "nxtomo.nx")
89
+ entry = "entry0000"
90
+ nx_tomo.save(
91
+ file_path=file_path,
92
+ data_path=entry,
93
+ )
94
+ # 2.0 set scan to the nxtomo-editor
95
+ scan = NXtomoScan(file_path, entry)
96
+ waiter = QSignalSpy(window.sigScanReady)
97
+ window.setScan(scan=scan)
98
+ # warning: avoid executing the ewoks task as this will be done
99
+ # automatically (has some field lock). This would create concurrency task
100
+ # and could bring some HDF5 concurrency error
101
+ waiter.wait(5000)
102
+ # 3.0 check results are as expected
103
+ # make sure the scan has been re-emitted
104
+ assert signal_listener.callCount() == 1
105
+ # make sure the edition of the parameters have been done and only those
106
+ overwrite_nx_tomo = NXtomo().load(
107
+ file_path=file_path,
108
+ data_path=entry,
109
+ detector_data_as="as_numpy_array",
110
+ )
111
+ numpy.testing.assert_almost_equal(
112
+ overwrite_nx_tomo.instrument.detector.x_pixel_size.si_value, 45e-9
113
+ )
114
+ assert (
115
+ overwrite_nx_tomo.instrument.detector.y_pixel_size.si_value
116
+ == nx_tomo.instrument.detector.y_pixel_size.si_value
117
+ )
118
+ assert (
119
+ overwrite_nx_tomo.instrument.detector.field_of_view
120
+ == nx_tomo.instrument.detector.field_of_view
121
+ )
122
+ numpy.testing.assert_almost_equal(
123
+ overwrite_nx_tomo.instrument.detector.distance.value, 6.0e-4
124
+ )
125
+ assert (
126
+ overwrite_nx_tomo.instrument.detector.x_flipped
127
+ == True # is lock to True so should load the value and overwrite it
128
+ )
129
+
130
+ assert (
131
+ overwrite_nx_tomo.instrument.detector.y_flipped
132
+ == True # is not locked and is initially set to False (should load it and ignore overwriting)
133
+ )
134
+ numpy.testing.assert_almost_equal(overwrite_nx_tomo.energy.value, 88.058)
135
+ numpy.testing.assert_array_almost_equal(
136
+ overwrite_nx_tomo.instrument.detector.data,
137
+ nx_tomo.instrument.detector.data,
138
+ )
@@ -0,0 +1,31 @@
1
+ import gc
2
+ import logging
3
+
4
+ from silx.gui import qt
5
+ from silx.gui.utils.testutils import TestCaseQt
6
+
7
+ from orangecontrib.tomwer.widgets.other.PythonScriptOW import OWPythonScript
8
+ from tomwer.core.scan.nxtomoscan import NXtomoScan
9
+ from tomwer.core.volume.hdf5volume import HDF5Volume
10
+
11
+ logging.disable(logging.INFO)
12
+
13
+
14
+ class TestEDFDarkRefWidget(TestCaseQt):
15
+ def setUp(self):
16
+ TestCaseQt.setUp(self)
17
+ self.widget = OWPythonScript()
18
+ self._scan = NXtomoScan("my_file.hdf5", entry="entry0000")
19
+ self._volume = HDF5Volume(file_path="my_volume.hdf5", data_path="volume")
20
+
21
+ def tearDown(self):
22
+ self.widget.setAttribute(qt.Qt.WA_DeleteOnClose)
23
+ self.widget.close()
24
+ self.widget = None
25
+ gc.collect()
26
+
27
+ def test_handle_data(self):
28
+ self.widget.handle_input(self._scan, (1,), "data")
29
+
30
+ def test_handle_volume(self):
31
+ self.widget.handle_input(self._volume, (1,), "volume")