tomwer 1.3.27__py3-none-any.whl → 1.4.0rc0__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 (632) 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 +48 -49
  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 +40 -85
  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 -7
  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 +7 -4
  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 +63 -111
  138. tomwer/core/process/reconstruction/axis/mode.py +5 -3
  139. tomwer/core/process/reconstruction/axis/params.py +5 -146
  140. tomwer/core/process/reconstruction/axis/projectiontype.py +0 -28
  141. tomwer/core/process/reconstruction/darkref/darkrefs.py +14 -39
  142. tomwer/core/process/reconstruction/darkref/darkrefscopy.py +7 -39
  143. tomwer/core/process/reconstruction/darkref/params.py +1 -28
  144. tomwer/core/process/reconstruction/nabu/castvolume.py +19 -34
  145. tomwer/core/process/reconstruction/nabu/nabucommon.py +18 -43
  146. tomwer/core/process/reconstruction/nabu/nabuscores.py +47 -48
  147. tomwer/core/process/reconstruction/nabu/nabuslices.py +59 -105
  148. tomwer/core/process/reconstruction/nabu/nabuvolume.py +44 -70
  149. tomwer/core/process/reconstruction/nabu/plane.py +10 -0
  150. tomwer/core/process/reconstruction/nabu/settings.py +1 -28
  151. tomwer/core/process/reconstruction/nabu/target.py +0 -28
  152. tomwer/core/process/reconstruction/nabu/test/test_castvolume.py +116 -0
  153. tomwer/core/process/reconstruction/nabu/test/test_nabu_utils.py +277 -0
  154. tomwer/core/process/reconstruction/nabu/test/test_nabunormalization.py +199 -0
  155. tomwer/core/process/reconstruction/nabu/utils.py +11 -60
  156. tomwer/core/process/reconstruction/normalization/normalization.py +2 -32
  157. tomwer/core/process/reconstruction/normalization/params.py +3 -35
  158. tomwer/core/process/reconstruction/output.py +14 -19
  159. tomwer/core/process/reconstruction/paramsbase.py +4 -33
  160. tomwer/core/process/reconstruction/saaxis/params.py +5 -33
  161. tomwer/core/process/reconstruction/saaxis/saaxis.py +18 -47
  162. tomwer/core/process/reconstruction/sadeltabeta/params.py +2 -31
  163. tomwer/core/process/reconstruction/sadeltabeta/sadeltabeta.py +16 -44
  164. tomwer/core/process/reconstruction/scores/params.py +9 -39
  165. tomwer/core/process/reconstruction/scores/scores.py +10 -42
  166. tomwer/core/process/reconstruction/tests/__init__.py +0 -0
  167. tomwer/core/process/reconstruction/tests/test_axis.py +46 -0
  168. tomwer/core/process/reconstruction/tests/test_darkref.py +33 -0
  169. tomwer/core/process/reconstruction/{test → tests}/test_saaxis.py +1 -27
  170. tomwer/core/process/reconstruction/tests/test_sadeltabeta.py +48 -0
  171. tomwer/core/process/script/python.py +1 -27
  172. tomwer/core/process/script/tests/test_script.py +41 -0
  173. tomwer/core/process/stitching/metadataholder.py +5 -4
  174. tomwer/core/process/stitching/nabustitcher.py +35 -5
  175. tomwer/core/process/stitching/tests/test_metadataholder.py +17 -0
  176. tomwer/core/process/task.py +20 -63
  177. tomwer/core/process/tests/__init__.py +0 -0
  178. tomwer/core/process/{test → tests}/test_axis.py +1 -79
  179. tomwer/core/process/{test → tests}/test_conditions.py +1 -28
  180. tomwer/core/process/{test → tests}/test_dark_and_flat.py +1 -27
  181. tomwer/core/process/{test → tests}/test_data_listener.py +1 -27
  182. tomwer/core/process/{test → tests}/test_data_transfer.py +2 -28
  183. tomwer/core/process/{test → tests}/test_data_watcher.py +1 -27
  184. tomwer/core/process/{test → tests}/test_nabu.py +4 -33
  185. tomwer/core/process/{test → tests}/test_normalization.py +1 -26
  186. tomwer/core/process/{test → tests}/test_timer.py +1 -27
  187. tomwer/core/process/utils.py +2 -31
  188. tomwer/core/process/visualization/dataviewer.py +1 -26
  189. tomwer/core/process/visualization/diffviewer.py +1 -26
  190. tomwer/core/process/visualization/imagestackviewer.py +0 -26
  191. tomwer/core/process/visualization/radiostack.py +0 -26
  192. tomwer/core/process/visualization/samplemoved.py +0 -28
  193. tomwer/core/process/visualization/sinogramviewer.py +0 -27
  194. tomwer/core/process/visualization/slicestack.py +0 -28
  195. tomwer/core/process/visualization/tests/test_data_viewer.py +12 -0
  196. tomwer/core/process/visualization/tests/test_diff_viewer.py +12 -0
  197. tomwer/core/process/visualization/tests/test_image_stack_viewer.py +14 -0
  198. tomwer/core/process/visualization/tests/test_radio_stack.py +12 -0
  199. tomwer/core/process/visualization/tests/test_sample_moved.py +14 -0
  200. tomwer/core/process/visualization/tests/test_sinogram_viewer.py +13 -0
  201. tomwer/core/process/visualization/tests/test_slice_stack.py +13 -0
  202. tomwer/core/process/visualization/tests/test_volume_viewer.py +12 -0
  203. tomwer/core/process/visualization/volumeviewer.py +0 -29
  204. tomwer/core/scan/__init__.py +3 -27
  205. tomwer/core/scan/blissscan.py +5 -34
  206. tomwer/core/scan/edfscan.py +19 -53
  207. tomwer/core/scan/hdf5scan.py +2 -2
  208. tomwer/core/scan/nxtomoscan.py +46 -54
  209. tomwer/core/scan/scanbase.py +104 -200
  210. tomwer/core/scan/scanfactory.py +11 -41
  211. tomwer/core/scan/tests/__init__.py +0 -0
  212. tomwer/core/scan/tests/test_edf.py +25 -0
  213. tomwer/core/scan/tests/test_future_scan.py +35 -0
  214. tomwer/core/scan/tests/test_nxtomoscan.py +143 -0
  215. tomwer/core/scan/{test → tests}/test_process_registration.py +1 -28
  216. tomwer/core/settings.py +18 -40
  217. tomwer/core/tests/__init__.py +0 -0
  218. tomwer/core/tests/test_scanutils.py +26 -0
  219. tomwer/core/{test → tests}/test_utils.py +1 -28
  220. tomwer/core/tomwer_object.py +4 -0
  221. tomwer/core/utils/__init__.py +2 -0
  222. tomwer/core/utils/char.py +0 -28
  223. tomwer/core/utils/deprecation.py +12 -38
  224. tomwer/core/utils/dictutils.py +1 -3
  225. tomwer/core/utils/ftseriesutils.py +1 -27
  226. tomwer/core/utils/gpu.py +0 -28
  227. tomwer/core/utils/image.py +8 -39
  228. tomwer/core/utils/locker.py +1 -28
  229. tomwer/core/utils/logconfig.py +0 -27
  230. tomwer/core/utils/normalization.py +4 -31
  231. tomwer/core/utils/nxtomoutils.py +8 -38
  232. tomwer/core/utils/resource.py +0 -26
  233. tomwer/core/utils/scanutils.py +23 -52
  234. tomwer/core/utils/slurm.py +7 -30
  235. tomwer/core/utils/spec.py +6 -6
  236. tomwer/core/utils/tests/__init__.py +0 -0
  237. tomwer/core/utils/tests/test_image.py +30 -0
  238. tomwer/core/utils/tests/test_nxtomo.py +38 -0
  239. tomwer/core/utils/tests/test_scan_utils.py +46 -0
  240. tomwer/core/utils/tests/test_time.py +6 -0
  241. tomwer/core/utils/threads.py +0 -26
  242. tomwer/core/utils/time.py +0 -27
  243. tomwer/core/volume/__init__.py +4 -0
  244. tomwer/core/volume/edfvolume.py +1 -28
  245. tomwer/core/volume/hdf5volume.py +1 -28
  246. tomwer/core/volume/jp2kvolume.py +1 -27
  247. tomwer/core/volume/rawvolume.py +1 -28
  248. tomwer/core/volume/tests/test_volumes.py +21 -0
  249. tomwer/core/volume/tiffvolume.py +1 -28
  250. tomwer/core/volume/volumebase.py +5 -0
  251. tomwer/core/volume/volumefactory.py +7 -33
  252. tomwer/gui/__init__.py +0 -28
  253. tomwer/gui/cluster/__init__.py +2 -0
  254. tomwer/gui/cluster/slurm.py +297 -95
  255. tomwer/gui/cluster/supervisor.py +1 -27
  256. tomwer/gui/cluster/tests/__init__.py +0 -0
  257. tomwer/gui/cluster/{test → tests}/test_cluster.py +21 -26
  258. tomwer/gui/cluster/{test → tests}/test_supervisor.py +1 -27
  259. tomwer/gui/conditions/__init__.py +2 -0
  260. tomwer/gui/conditions/filter.py +1 -26
  261. tomwer/gui/configuration/__init__.py +2 -0
  262. tomwer/gui/control/__init__.py +2 -0
  263. tomwer/gui/control/actions.py +2 -28
  264. tomwer/gui/control/datadiscovery.py +4 -3
  265. tomwer/gui/control/datalist.py +64 -69
  266. tomwer/gui/control/datalistener.py +1 -39
  267. tomwer/gui/control/datareacheractions.py +1 -28
  268. tomwer/gui/control/datatransfert.py +2 -29
  269. tomwer/gui/control/datavalidator.py +3 -37
  270. tomwer/gui/control/datawatcher/__init__.py +0 -28
  271. tomwer/gui/control/datawatcher/configuration.py +1 -28
  272. tomwer/gui/control/datawatcher/datawatcher.py +3 -32
  273. tomwer/gui/control/datawatcher/datawatcherobserver.py +2 -28
  274. tomwer/gui/control/history.py +5 -35
  275. tomwer/gui/control/nxtomomill.py +3 -30
  276. tomwer/gui/control/observations.py +61 -55
  277. tomwer/gui/control/reducedarkflatselector.py +24 -20
  278. tomwer/gui/control/scanselectorwidget.py +2 -28
  279. tomwer/gui/control/selectorwidgetbase.py +17 -17
  280. tomwer/gui/control/series/__init__.py +0 -0
  281. tomwer/gui/control/{serie/seriecreator.py → series/seriescreator.py} +214 -235
  282. tomwer/gui/control/series/serieswaiter.py +0 -0
  283. tomwer/gui/control/series/test/test_creator.py +424 -0
  284. tomwer/gui/control/series/test/test_nxtomo_concatenate.py +21 -0
  285. tomwer/gui/control/singletomoobj.py +1 -1
  286. tomwer/gui/control/tests/__init__.py +0 -0
  287. tomwer/gui/control/tests/test_datalist.py +47 -0
  288. tomwer/gui/control/{test → tests}/test_datalistener.py +1 -28
  289. tomwer/gui/control/tests/test_datavalidator.py +27 -0
  290. tomwer/gui/control/{test → tests}/test_inputwidget.py +1 -27
  291. tomwer/gui/control/tests/test_process_manager.py +38 -0
  292. tomwer/gui/control/tests/test_scan_observations.py +23 -0
  293. tomwer/gui/control/tests/test_scanselector.py +42 -0
  294. tomwer/gui/control/{test → tests}/test_scanvalidator.py +1 -27
  295. tomwer/gui/control/{test → tests}/test_volume_dialog.py +2 -30
  296. tomwer/gui/control/{test → tests}/test_volumeselector.py +1 -27
  297. tomwer/gui/control/volumeselectorwidget.py +2 -30
  298. tomwer/gui/dataportal/__init__.py +2 -0
  299. tomwer/gui/{icat → dataportal}/createscreenshots.py +3 -2
  300. tomwer/gui/dataportal/gallery.py +133 -0
  301. tomwer/gui/dataportal/outputformat.py +0 -0
  302. tomwer/gui/dataportal/publish.py +96 -0
  303. tomwer/gui/dataportal/tests/test_create_screenshots_gui.py +23 -0
  304. tomwer/gui/dataportal/tests/test_gallery_gui.py +21 -0
  305. tomwer/gui/debugtools/__init__.py +2 -0
  306. tomwer/gui/debugtools/datasetgenerator.py +1 -30
  307. tomwer/gui/debugtools/objectinspector.py +1 -29
  308. tomwer/gui/dialog/QDataDialog.py +89 -0
  309. tomwer/gui/{qfolderdialog.py → dialog/QVolumeDialog.py} +8 -107
  310. tomwer/gui/dialog/__init__.py +1 -0
  311. tomwer/gui/edit/__init__.py +2 -0
  312. tomwer/gui/edit/dkrfpatch.py +52 -87
  313. tomwer/gui/edit/imagekeyeditor.py +18 -54
  314. tomwer/gui/edit/nxtomoeditor.py +113 -300
  315. tomwer/gui/edit/nxtomowarmer.py +3 -2
  316. tomwer/gui/edit/tests/__init__.py +0 -0
  317. tomwer/gui/edit/{test → tests}/test_dkrf_patch.py +3 -29
  318. tomwer/gui/edit/{test → tests}/test_image_key_editor.py +1 -27
  319. tomwer/gui/edit/{test → tests}/test_nx_editor.py +45 -23
  320. tomwer/gui/icons.py +28 -66
  321. tomwer/gui/illustrations.py +4 -34
  322. tomwer/gui/imagefromfile.py +5 -30
  323. tomwer/gui/metadataloader.py +36 -0
  324. tomwer/gui/qconfigfile.py +3 -0
  325. tomwer/gui/qlefilesystem.py +3 -0
  326. tomwer/gui/reconstruction/__init__.py +2 -0
  327. tomwer/gui/reconstruction/axis/AxisMainWindow.py +264 -0
  328. tomwer/gui/reconstruction/axis/AxisOptionsWidget.py +153 -0
  329. tomwer/gui/reconstruction/axis/AxisSettingsWidget.py +776 -0
  330. tomwer/gui/reconstruction/axis/AxisWidget.py +526 -0
  331. tomwer/gui/reconstruction/axis/CalculationWidget.py +374 -0
  332. tomwer/gui/reconstruction/axis/CompareImages.py +11 -44
  333. tomwer/gui/reconstruction/axis/ControlWidget.py +277 -0
  334. tomwer/gui/reconstruction/axis/InputWidget.py +491 -0
  335. tomwer/gui/reconstruction/axis/ManualFramesSelection.py +168 -0
  336. tomwer/gui/reconstruction/axis/__init__.py +2 -2
  337. tomwer/gui/reconstruction/darkref/__init__.py +0 -27
  338. tomwer/gui/reconstruction/darkref/darkrefcopywidget.py +5 -34
  339. tomwer/gui/reconstruction/darkref/darkrefwidget.py +1 -27
  340. tomwer/gui/reconstruction/nabu/castvolume.py +40 -59
  341. tomwer/gui/reconstruction/nabu/check.py +7 -33
  342. tomwer/gui/reconstruction/nabu/nabuconfig/base.py +7 -34
  343. tomwer/gui/reconstruction/nabu/nabuconfig/ctf.py +6 -5
  344. tomwer/gui/reconstruction/nabu/nabuconfig/nabuconfig.py +10 -69
  345. tomwer/gui/reconstruction/nabu/nabuconfig/output.py +3 -47
  346. tomwer/gui/reconstruction/nabu/nabuconfig/phase.py +54 -36
  347. tomwer/gui/reconstruction/nabu/nabuconfig/preprocessing.py +103 -54
  348. tomwer/gui/reconstruction/nabu/nabuconfig/reconstruction.py +116 -65
  349. tomwer/gui/reconstruction/nabu/nabuflow.py +31 -61
  350. tomwer/gui/reconstruction/nabu/platform.py +94 -0
  351. tomwer/gui/reconstruction/nabu/slices.py +81 -45
  352. tomwer/gui/reconstruction/nabu/slurm.py +1 -27
  353. tomwer/gui/reconstruction/nabu/test/test_cast_volume.py +82 -0
  354. tomwer/gui/reconstruction/nabu/test/test_check.py +66 -0
  355. tomwer/gui/reconstruction/nabu/test/test_ctf.py +46 -0
  356. tomwer/gui/reconstruction/nabu/test/test_helical.py +21 -0
  357. tomwer/gui/reconstruction/nabu/test/test_nabu_preprocessing.py +81 -0
  358. tomwer/gui/reconstruction/nabu/volume.py +62 -90
  359. tomwer/gui/reconstruction/normalization/intensity.py +5 -32
  360. tomwer/gui/reconstruction/normalization/test/test_intensity.py +89 -0
  361. tomwer/gui/reconstruction/saaxis/corrangeselector.py +16 -49
  362. tomwer/gui/reconstruction/saaxis/dimensionwidget.py +56 -96
  363. tomwer/gui/reconstruction/saaxis/saaxis.py +17 -38
  364. tomwer/gui/reconstruction/saaxis/sliceselector.py +8 -39
  365. tomwer/gui/reconstruction/sadeltabeta/saadeltabeta.py +19 -37
  366. tomwer/gui/reconstruction/scores/control.py +2 -30
  367. tomwer/gui/reconstruction/scores/scoreplot.py +19 -48
  368. tomwer/gui/reconstruction/tests/__init__.py +0 -0
  369. tomwer/gui/reconstruction/{test → tests}/test_axis.py +23 -49
  370. tomwer/gui/reconstruction/{test → tests}/test_nabu.py +8 -31
  371. tomwer/gui/reconstruction/{test → tests}/test_saaxis.py +10 -37
  372. tomwer/gui/reconstruction/{test → tests}/test_sadeltabeta.py +1 -26
  373. tomwer/gui/samplemoved/__init__.py +2 -30
  374. tomwer/gui/samplemoved/selectiontable.py +3 -33
  375. tomwer/gui/settings.py +7 -0
  376. tomwer/gui/stackplot.py +33 -661
  377. tomwer/gui/stacks.py +261 -135
  378. tomwer/gui/stitching/SingleAxisStitchingWidget.py +326 -0
  379. tomwer/gui/stitching/StitchingOptionsWidget.py +438 -0
  380. tomwer/gui/stitching/StitchingWindow.py +586 -0
  381. tomwer/gui/stitching/__init__.py +2 -0
  382. tomwer/gui/stitching/alignment.py +90 -0
  383. tomwer/gui/stitching/axisorderedlist.py +44 -34
  384. tomwer/gui/stitching/config/axisparams.py +23 -11
  385. tomwer/gui/stitching/config/output.py +6 -5
  386. tomwer/gui/stitching/config/positionoveraxis.py +313 -51
  387. tomwer/gui/stitching/config/stitchingstrategies.py +22 -16
  388. tomwer/gui/stitching/config/tests/test_axisparams.py +25 -0
  389. tomwer/gui/stitching/config/tomoobjdetails.py +3 -5
  390. tomwer/gui/stitching/normalization.py +1 -0
  391. tomwer/gui/stitching/preview.py +59 -0
  392. tomwer/gui/stitching/singleaxis.py +57 -0
  393. tomwer/gui/stitching/stitchandbackground.py +3 -2
  394. tomwer/gui/stitching/stitching_preview.py +44 -36
  395. tomwer/gui/stitching/stitching_raw.py +5 -3
  396. tomwer/gui/stitching/tests/test_ZStitchingWindow.py +88 -0
  397. tomwer/gui/stitching/tests/test_axis_ordered_list.py +21 -0
  398. tomwer/gui/stitching/tests/test_normalization.py +27 -0
  399. tomwer/gui/stitching/tests/test_preview.py +68 -0
  400. tomwer/gui/stitching/tests/test_stitching_raw.py +110 -0
  401. tomwer/gui/stitching/tests/utils.py +92 -0
  402. tomwer/gui/stitching/utils.py +14 -0
  403. tomwer/gui/stitching/z_stitching/fineestimation.py +4 -32
  404. tomwer/gui/stitching/z_stitching/tests/test_fine_estimation.py +35 -0
  405. tomwer/gui/stitching/z_stitching/tests/test_raw_estimation.py +215 -0
  406. tomwer/gui/stitching/z_stitching/tests/test_stitching_window.py +51 -0
  407. tomwer/gui/tests/__init__.py +0 -0
  408. tomwer/gui/tests/test_axis_gui.py +27 -0
  409. tomwer/gui/{test → tests}/test_qfolder_dialog.py +1 -1
  410. tomwer/gui/utils/RangeWidget.py +44 -0
  411. tomwer/gui/utils/buttons.py +4 -3
  412. tomwer/gui/utils/completer.py +2 -33
  413. tomwer/gui/utils/flow.py +11 -40
  414. tomwer/gui/utils/gpu.py +60 -0
  415. tomwer/gui/utils/illustrations.py +1 -26
  416. tomwer/gui/utils/inputwidget.py +35 -73
  417. tomwer/gui/utils/lineselector/lineselector.py +9 -46
  418. tomwer/gui/utils/loadingmode.py +81 -0
  419. tomwer/gui/utils/qt_utils.py +9 -0
  420. tomwer/gui/utils/sandboxes.py +1 -26
  421. tomwer/gui/utils/scandescription.py +2 -31
  422. tomwer/gui/utils/scrollarea.py +6 -55
  423. tomwer/gui/utils/slider.py +4 -28
  424. tomwer/gui/utils/splashscreen.py +0 -28
  425. tomwer/gui/utils/step.py +14 -13
  426. tomwer/gui/utils/tests/test_completer.py +41 -0
  427. tomwer/gui/utils/tests/test_line_selector.py +21 -0
  428. tomwer/gui/utils/tests/test_splashscreen.py +8 -0
  429. tomwer/gui/utils/tests/test_vignettes.py +68 -0
  430. tomwer/gui/utils/unitsystem.py +15 -69
  431. tomwer/gui/utils/utils.py +4 -5
  432. tomwer/gui/utils/vignettes.py +10 -41
  433. tomwer/gui/utils/waiterthread.py +0 -26
  434. tomwer/gui/visualization/__init__.py +2 -0
  435. tomwer/gui/visualization/dataviewer.py +68 -421
  436. tomwer/gui/visualization/diffviewer/diffviewer.py +2 -30
  437. tomwer/gui/visualization/diffviewer/shiftwidget.py +4 -29
  438. tomwer/gui/visualization/fullscreenplot.py +5 -5
  439. tomwer/gui/visualization/imagestack.py +403 -0
  440. tomwer/gui/visualization/nxtomometadata.py +0 -4
  441. tomwer/gui/visualization/reconstructionparameters.py +14 -32
  442. tomwer/gui/visualization/scanoverview.py +33 -66
  443. tomwer/gui/visualization/sinogramviewer.py +2 -28
  444. tomwer/gui/visualization/test/__init__.py +0 -28
  445. tomwer/gui/visualization/test/test_dataviewer.py +1 -28
  446. tomwer/gui/visualization/test/test_diffviewer.py +1 -28
  447. tomwer/gui/visualization/test/test_nx_tomo_metadata_viewer.py +0 -5
  448. tomwer/gui/visualization/test/test_reconstruction_parameters.py +1 -27
  449. tomwer/gui/visualization/test/test_sinogramviewer.py +1 -28
  450. tomwer/gui/visualization/test/test_stacks.py +184 -115
  451. tomwer/gui/visualization/test/test_volumeviewer.py +3 -2
  452. tomwer/gui/visualization/tomoobjoverview.py +2 -2
  453. tomwer/gui/visualization/volumeoverview.py +3 -2
  454. tomwer/gui/visualization/volumeviewer.py +47 -43
  455. tomwer/io/__init__.py +2 -0
  456. tomwer/io/utils/h5pyutils.py +1 -27
  457. tomwer/io/utils/test/test_raw_and_processed_data.py +10 -0
  458. tomwer/io/utils/test/test_utils.py +67 -0
  459. tomwer/io/utils/utils.py +2 -31
  460. tomwer/resources/__init__.py +13 -33
  461. tomwer/resources/gui/icons/edit_downstream.svg +114 -0
  462. tomwer/resources/gui/icons/edit_upstream.svg +112 -0
  463. tomwer/resources/gui/icons/free_edition.svg +23 -0
  464. tomwer/resources/gui/icons/icat_gallery_opts.png +0 -0
  465. tomwer/resources/gui/icons/icat_gallery_opts.svg +80 -0
  466. tomwer/resources/gui/icons/search.png +0 -0
  467. tomwer/resources/gui/icons/search.svg +23 -0
  468. tomwer/resources/gui/icons/warning.png +0 -0
  469. tomwer/synctools/__init__.py +2 -0
  470. tomwer/synctools/axis.py +1 -27
  471. tomwer/synctools/darkref.py +1 -26
  472. tomwer/synctools/datalistener.py +1 -27
  473. tomwer/synctools/datatransfert.py +2 -27
  474. tomwer/synctools/imageloaderthread.py +1 -28
  475. tomwer/synctools/rsyncmanager.py +1 -25
  476. tomwer/synctools/saaxis.py +1 -26
  477. tomwer/synctools/sadeltabeta.py +1 -26
  478. tomwer/synctools/stacks/control/datalistener.py +1 -26
  479. tomwer/synctools/stacks/processingstack.py +4 -33
  480. tomwer/synctools/stacks/reconstruction/axis.py +2 -31
  481. tomwer/synctools/stacks/reconstruction/castvolume.py +12 -43
  482. tomwer/synctools/stacks/reconstruction/dkrefcopy.py +3 -26
  483. tomwer/synctools/stacks/reconstruction/nabu.py +1 -26
  484. tomwer/synctools/stacks/reconstruction/normalization.py +1 -26
  485. tomwer/synctools/stacks/reconstruction/saaxis.py +1 -26
  486. tomwer/synctools/stacks/reconstruction/sadeltabeta.py +1 -26
  487. tomwer/synctools/tests/__init__.py +0 -0
  488. tomwer/synctools/{test → tests}/test_darkRefs.py +16 -40
  489. tomwer/synctools/{test → tests}/test_foldertransfer.py +2 -33
  490. tomwer/synctools/utils/scanstages.py +2 -31
  491. tomwer/tests/__init__.py +1 -0
  492. tomwer/tests/app/test_stitching.py +95 -0
  493. tomwer/tests/datasets.py +1 -5
  494. tomwer/tests/orangecontrib/tomwer/widgets/cluster/tests/test_future_supervisorow.py +48 -0
  495. tomwer/tests/orangecontrib/tomwer/widgets/cluster/tests/test_slurm_clusterow.py +40 -0
  496. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_advancement.py +8 -0
  497. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_data_validator.py +55 -0
  498. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_datadiscovery.py +129 -0
  499. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_datalistener.py +111 -0
  500. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_dataselector.py +69 -0
  501. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_datawatcher.py +411 -0
  502. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_emailow.py +29 -0
  503. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_notifier.py +24 -0
  504. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_nxtomo_concatenate_ow.py +64 -0
  505. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_nxtomomill.py +133 -0
  506. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_reduce_dark_flat_selector.py +40 -0
  507. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_singletomoobj.py +40 -0
  508. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_timerow.py +25 -0
  509. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_tomoobj_series.py +96 -0
  510. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_volume_selector.py +69 -0
  511. orangecontrib/tomwer/widgets/edit/test/test_image_key_editor.py → tomwer/tests/orangecontrib/tomwer/widgets/debugtools/tests/test_dataset_generator.py +17 -16
  512. tomwer/tests/orangecontrib/tomwer/widgets/debugtools/tests/test_object_inspector.py +36 -0
  513. {orangecontrib/tomwer/widgets/edit/test → tomwer/tests/orangecontrib/tomwer/widgets/edit/tests}/test_dark_flat_patch.py +1 -27
  514. tomwer/tests/orangecontrib/tomwer/widgets/edit/tests/test_image_key_editor.py +30 -0
  515. tomwer/tests/orangecontrib/tomwer/widgets/edit/tests/test_nxtomo_editor.py +138 -0
  516. tomwer/tests/orangecontrib/tomwer/widgets/other/tests/test_pythonscript.py +31 -0
  517. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_axis.py +215 -0
  518. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_cast_volumeow.py +58 -0
  519. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_dark_refs_widget.py +136 -0
  520. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_delta_beta_selector.py +15 -0
  521. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_i_norm.py +200 -0
  522. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_nabu_helical_prepare_weights_double.py +20 -0
  523. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_nabu_volume.py +74 -0
  524. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_nabu_widget.py +107 -0
  525. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_sa_delta_beta.py +194 -0
  526. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_saaxis.py +194 -0
  527. tomwer/tests/orangecontrib/tomwer/widgets/stitching/tests/test_zstitching.py +313 -0
  528. tomwer/tests/orangecontrib/tomwer/widgets/tests/test_conditions.py +85 -0
  529. tomwer/tests/orangecontrib/tomwer/widgets/tests/test_darkref.py +225 -0
  530. tomwer/tests/orangecontrib/tomwer/widgets/tests/test_foldertransfert.py +105 -0
  531. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_dataviewerow.py +57 -0
  532. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_diffviewerow.py +39 -0
  533. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_nxtomo_metadata_viewer.py +29 -0
  534. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_radio_stackow.py +31 -0
  535. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_sample_movedow.py +46 -0
  536. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_sinogram_viewerow.py +31 -0
  537. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_slice_stackow.py +31 -0
  538. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_volume_viewerow.py +32 -0
  539. tomwer/tests/test_ewoks/test_conversion.py +104 -0
  540. tomwer/tests/test_ewoks/test_single_node_execution.py +87 -0
  541. tomwer/tests/test_ewoks/test_workflows.py +138 -0
  542. tomwer/utils.py +11 -39
  543. tomwer/version.py +3 -3
  544. {tomwer-1.3.27.dist-info → tomwer-1.4.0rc0.dist-info}/LICENSE +3 -3
  545. tomwer-1.4.0rc0.dist-info/METADATA +337 -0
  546. tomwer-1.4.0rc0.dist-info/RECORD +909 -0
  547. {tomwer-1.3.27.dist-info → tomwer-1.4.0rc0.dist-info}/WHEEL +1 -1
  548. {tomwer-1.3.27.dist-info → tomwer-1.4.0rc0.dist-info}/entry_points.txt +1 -0
  549. orangecontrib/tomwer/widgets/control/DataListOW.py +0 -129
  550. orangecontrib/tomwer/widgets/control/TomoObjSerieOW.py +0 -86
  551. orangecontrib/tomwer/widgets/control/VolumeSymLinkOW.py +0 -182
  552. orangecontrib/tomwer/widgets/edit/test/test_nxtomo_editor.py +0 -141
  553. orangecontrib/tomwer/widgets/icat/PublishProcessedDataOW.py +0 -115
  554. orangecontrib/tomwer/widgets/icat/RawDataScreenshotCreatorOW.py +0 -98
  555. orangecontrib/tomwer/widgets/icat/SaveToGalleryAndPublishOW.py +0 -129
  556. orangecontrib/tomwer/widgets/icat/icons/add_gallery.png +0 -0
  557. orangecontrib/tomwer/widgets/icat/icons/add_gallery.svg +0 -82
  558. orangecontrib/tomwer/widgets/icat/icons/raw_screenshots.png +0 -0
  559. orangecontrib/tomwer/widgets/icat/icons/raw_screenshots.svg +0 -143
  560. orangecontrib/tomwer/widgets/visualization/LivesliceOW.py +0 -87
  561. orangecontrib/tomwer/widgets/visualization/icons/liveslice.png +0 -0
  562. orangecontrib/tomwer/widgets/visualization/icons/liveslice.svg +0 -110
  563. tomwer/core/log/logger.py +0 -130
  564. tomwer/core/process/control/test/test_volume_link.py +0 -74
  565. tomwer/core/process/control/tomoobjserie.py +0 -12
  566. tomwer/core/process/control/volumesymlink.py +0 -200
  567. tomwer/core/process/icat/createscreenshots.py +0 -100
  568. tomwer/core/process/icat/gallery.py +0 -377
  569. tomwer/core/process/icat/icatbase.py +0 -36
  570. tomwer/core/process/icat/publish.py +0 -228
  571. tomwer/core/process/icat/screenshots.py +0 -27
  572. tomwer/core/process/reconstruction/test/test_darkref.py +0 -60
  573. tomwer/core/process/reconstruction/test/test_sadeltabeta.py +0 -74
  574. tomwer/core/process/visualization/liveslice.py +0 -6
  575. tomwer/core/progress.py +0 -100
  576. tomwer/core/scan/test/test_edf.py +0 -53
  577. tomwer/core/scan/test/test_future_scan.py +0 -61
  578. tomwer/core/scan/test/test_h5.py +0 -96
  579. tomwer/core/test/test_scanutils.py +0 -53
  580. tomwer/gui/control/emailnotifier.py +0 -174
  581. tomwer/gui/control/serie/seriewaiter.py +0 -28
  582. tomwer/gui/control/test/__init__.py +0 -28
  583. tomwer/gui/control/test/test_datalist.py +0 -96
  584. tomwer/gui/control/test/test_datavalidator.py +0 -54
  585. tomwer/gui/control/test/test_email.py +0 -35
  586. tomwer/gui/control/test/test_process_manager.py +0 -65
  587. tomwer/gui/control/test/test_scanselector.py +0 -67
  588. tomwer/gui/edit/test/__init__.py +0 -28
  589. tomwer/gui/icat/gallery.py +0 -214
  590. tomwer/gui/icat/publish.py +0 -187
  591. tomwer/gui/reconstruction/axis/axis.py +0 -733
  592. tomwer/gui/reconstruction/axis/radioaxis.py +0 -2467
  593. tomwer/gui/stitching/stitching.py +0 -1388
  594. tomwer/gui/test/__init__.py +0 -28
  595. tomwer/gui/test/test_axis_gui.py +0 -34
  596. tomwer/synctools/stacks/edit/darkflatpatch.py +0 -169
  597. tomwer/synctools/stacks/edit/imagekeyeditor.py +0 -135
  598. tomwer/third_part/WaitingOverlay.py +0 -110
  599. tomwer-1.3.27-py3.11-nspkg.pth +0 -1
  600. tomwer-1.3.27.dist-info/METADATA +0 -292
  601. tomwer-1.3.27.dist-info/RECORD +0 -785
  602. tomwer-1.3.27.dist-info/namespace_packages.txt +0 -1
  603. /orangecontrib/tomwer/{widgets/edit/test → tests}/__init__.py +0 -0
  604. {tomwer/core/process/control/test → orangecontrib/tomwer/tutorials/id16b}/__init__.py +0 -0
  605. {tomwer/core/process/icat → orangecontrib/tomwer/widgets/cluster/tests}/__init__.py +0 -0
  606. /orangecontrib/tomwer/widgets/control/icons/{tomoobjserie.png → tomoobjseries.png} +0 -0
  607. {tomwer/core/process/reconstruction/test → orangecontrib/tomwer/widgets/control/tests}/__init__.py +0 -0
  608. /orangecontrib/tomwer/widgets/{icat → dataportal}/icons/publish_processed_data.png +0 -0
  609. /orangecontrib/tomwer/widgets/{icat → dataportal}/icons/publish_processed_data.svg +0 -0
  610. {tomwer/core/process/test → orangecontrib/tomwer/widgets/debugtools/tests}/__init__.py +0 -0
  611. {tomwer/core/scan/test → orangecontrib/tomwer/widgets/edit/tests}/__init__.py +0 -0
  612. {tomwer/core/test → orangecontrib/tomwer/widgets/other/tests}/__init__.py +0 -0
  613. {tomwer/gui/cluster/test → orangecontrib/tomwer/widgets/reconstruction/tests}/__init__.py +0 -0
  614. {tomwer/gui/control/serie → orangecontrib/tomwer/widgets/stitching/tests}/__init__.py +0 -0
  615. {tomwer/gui/icat → orangecontrib/tomwer/widgets/tests}/__init__.py +0 -0
  616. {tomwer/gui/reconstruction/test → orangecontrib/tomwer/widgets/visualization/tests}/__init__.py +0 -0
  617. /tomwer/{synctools/stacks/edit → app/stitching}/__init__.py +0 -0
  618. /tomwer/{synctools/test → core/process/control/tests}/__init__.py +0 -0
  619. /tomwer/core/process/control/{test → tests}/test_email.py +0 -0
  620. /tomwer/core/process/control/{test → tests}/test_h52nx_process.py +0 -0
  621. /tomwer/{third_part → core/process/drac}/__init__.py +0 -0
  622. /tomwer/core/process/reconstruction/{test → tests}/test_axis_params.py +0 -0
  623. /tomwer/core/process/reconstruction/{test → tests}/test_darkref_copy.py +0 -0
  624. /tomwer/core/process/reconstruction/{test → tests}/test_paramsbase.py +0 -0
  625. /tomwer/core/process/reconstruction/{test → tests}/test_utils.py +0 -0
  626. /tomwer/core/scan/{test → tests}/test_scan.py +0 -0
  627. /tomwer/gui/control/{serie → series}/nxtomoconcatenate.py +0 -0
  628. /tomwer/gui/control/{test → tests}/test_datadiscovery.py +0 -0
  629. /tomwer/gui/control/{test → tests}/test_reducedarkflat_selector.py +0 -0
  630. /tomwer/gui/control/{test → tests}/test_single_tomo_obj.py +0 -0
  631. {orangecontrib/tomwer/widgets/edit/test → tomwer/tests/orangecontrib/tomwer/widgets/edit/tests}/test_image_key_upgrader.py +0 -0
  632. {tomwer-1.3.27.dist-info → tomwer-1.4.0rc0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,225 @@
1
+ # coding: utf-8
2
+ from __future__ import annotations
3
+
4
+ import gc
5
+ import logging
6
+ import os
7
+ import shutil
8
+ import tempfile
9
+ import time
10
+
11
+ import pytest
12
+ from silx.gui import qt
13
+ from silx.gui.utils.testutils import TestCaseQt
14
+
15
+ from orangecontrib.tomwer.widgets.reconstruction.DarkRefAndCopyOW import (
16
+ DarkRefAndCopyOW,
17
+ )
18
+ from tomwer.core.process.reconstruction.darkref.darkrefs import DarkRefsTask
19
+ from tomwer.core.process.reconstruction.darkref.params import ReduceMethod as DkrfMethod
20
+ from tomwer.core.process.reconstruction.darkref.settings import (
21
+ DARKHST_PREFIX,
22
+ REFHST_PREFIX,
23
+ )
24
+ from tomwer.core.scan.edfscan import EDFTomoScan
25
+ from tomwer.core.utils.scanutils import MockEDF, MockNXtomo
26
+ from tomwer.synctools.darkref import QDKRFRP
27
+
28
+ logging.disable(logging.INFO)
29
+
30
+
31
+ class TestEDFDarkRefWidget(TestCaseQt):
32
+ """class testing the DarkRefWidget"""
33
+
34
+ def setUp(self):
35
+ TestCaseQt.setUp(self)
36
+ self._recons_params = QDKRFRP()
37
+ self.widget = DarkRefAndCopyOW(parent=None, reconsparams=self._recons_params)
38
+
39
+ def tearDown(self):
40
+ self.widget.setAttribute(qt.Qt.WA_DeleteOnClose)
41
+ self.widget.close()
42
+ self.widget = None
43
+ self.qapp.processEvents()
44
+ gc.collect()
45
+
46
+ def testSyncRead(self):
47
+ """Make sure any modification on the self._reconsParams is
48
+ applied on the GUI"""
49
+ rp = self._recons_params
50
+ self.assertTrue(rp["REFSRMV"] is False)
51
+ self.assertFalse(
52
+ self.widget.widget.mainWidget.tabGeneral._rmOptionCB.isChecked()
53
+ )
54
+ rp["REFSRMV"] = True
55
+ self.assertTrue(
56
+ self.widget.widget.mainWidget.tabGeneral._rmOptionCB.isChecked()
57
+ )
58
+
59
+ pattern = self.widget.widget.mainWidget.tabExpert._refLE.text()
60
+ newText = "popo.*"
61
+ assert pattern != newText
62
+ rp["RFFILE"] = newText
63
+ self.assertTrue(
64
+ self.widget.widget.mainWidget.tabExpert._refLE.text() == newText
65
+ )
66
+
67
+ def testSyncWrite(self):
68
+ """Test that if we edit through the :class:`DarkRefWidget` then the
69
+ modification are fall back into the self._reconsParams"""
70
+ rp = self._recons_params
71
+
72
+ # test patterns
73
+ pattern = self.widget.widget.mainWidget.tabExpert._refLE.text()
74
+ newText = "popo.*"
75
+ assert pattern != newText
76
+ self.widget.widget.mainWidget.tabExpert._refLE.setText(newText)
77
+ self.widget.widget.mainWidget.tabExpert._refLE.editingFinished.emit()
78
+ qt.QApplication.instance().processEvents()
79
+ self.assertTrue(rp["RFFILE"] == newText)
80
+ self.widget.widget.mainWidget.tabExpert._darkLE.setText(newText)
81
+ self.widget.widget.mainWidget.tabExpert._darkLE.editingFinished.emit()
82
+ qt.QApplication.instance().processEvents()
83
+ self.assertTrue(rp["DKFILE"] == newText)
84
+
85
+ # test calc mode
86
+ self.widget.widget.mainWidget.tabGeneral._darkWCB.setMode(DkrfMethod.NONE)
87
+ self.widget.widget.mainWidget.tabGeneral._refWCB.setMode(DkrfMethod.MEDIAN)
88
+ self.assertTrue(rp["DARKCAL"] == DkrfMethod.NONE)
89
+ self.assertTrue(rp["REFSCAL"] == DkrfMethod.MEDIAN)
90
+
91
+ # test options
92
+ cuRm = self.widget.widget.mainWidget.tabGeneral._rmOptionCB.isChecked()
93
+ self.widget.widget.mainWidget.tabGeneral._rmOptionCB.setChecked(not cuRm)
94
+ self.assertTrue(rp["REFSRMV"] == (not cuRm))
95
+ self.assertTrue(rp["DARKRMV"] == (not cuRm))
96
+
97
+ cuSkip = self.widget.widget.mainWidget.tabGeneral._skipOptionCB.isChecked()
98
+ self.widget.widget.mainWidget.tabGeneral._skipOptionCB.setChecked(not cuSkip)
99
+ # warning : here value of skip and overwrite are of course inverse
100
+ self.assertTrue(rp["DARKOVE"] == cuSkip)
101
+ self.assertTrue(rp["REFSOVE"] == cuSkip)
102
+
103
+
104
+ @pytest.mark.skip("Fail on CI")
105
+ class TestDarkRefCopyWithEDFAndHDF5(TestCaseQt):
106
+ """Test the DarkRefCopy orange widget behaviour"""
107
+
108
+ def setUp(self) -> None:
109
+ TestCaseQt.setUp(self)
110
+ self._folder = tempfile.mkdtemp()
111
+
112
+ # define scans to be treated
113
+ hdf5_mock_with_refs = MockNXtomo(
114
+ scan_path=os.path.join(self._folder, "h5_with_refs"),
115
+ n_proj=10,
116
+ n_ini_proj=10,
117
+ dim=20,
118
+ create_ini_flat=True,
119
+ create_ini_dark=True,
120
+ create_final_flat=False,
121
+ )
122
+ self.hdf5_acquisition_with_refs = hdf5_mock_with_refs.scan
123
+
124
+ hdf5_mock_without_refs = MockNXtomo(
125
+ scan_path=os.path.join(self._folder, "h5_without_refs"),
126
+ n_proj=10,
127
+ n_ini_proj=10,
128
+ dim=20,
129
+ create_ini_flat=False,
130
+ create_ini_dark=False,
131
+ )
132
+ self.hdf5_acquisition_without_refs = hdf5_mock_without_refs.scan
133
+
134
+ hdf5_mock_without_refs_incoherent_dim = MockNXtomo(
135
+ scan_path=os.path.join(self._folder, "h5_without_refs_different_dim"),
136
+ n_proj=10,
137
+ n_ini_proj=10,
138
+ dim=21,
139
+ create_ini_flat=False,
140
+ create_ini_dark=False,
141
+ )
142
+ self.hdf5_acquisition_without_refs_incoherent_dim = (
143
+ hdf5_mock_without_refs_incoherent_dim.scan
144
+ )
145
+
146
+ edf_mock_without_ref = MockEDF(
147
+ scan_path=os.path.join(self._folder, "edf_without_refs"), dim=20, n_radio=20
148
+ )
149
+ self.edf_acquisition_without_ref = EDFTomoScan(
150
+ scan=edf_mock_without_ref.scan_path
151
+ )
152
+
153
+ # processes set up
154
+ self._recons_params = QDKRFRP()
155
+ self.widget = DarkRefAndCopyOW(parent=None, reconsparams=self._recons_params)
156
+ self.widget.setForceSync(True)
157
+ self.widget.show()
158
+
159
+ def tearDown(self) -> None:
160
+ time.sleep(0.5)
161
+ while self.qapp.hasPendingEvents():
162
+ self.qapp.processEvents()
163
+ self.widget.setAttribute(qt.Qt.WA_DeleteOnClose)
164
+ self.widget.close()
165
+ self.widget = None
166
+ shutil.rmtree(self._folder)
167
+ gc.collect()
168
+
169
+ def testCopyInactive(self):
170
+ self.widget.setCopyActive(False)
171
+
172
+ self.widget.process(self.hdf5_acquisition_with_refs)
173
+ self.assertTrue(os.path.exists(self.hdf5_acquisition_with_refs.process_file))
174
+
175
+ # make sure no dark or flats exists for the hdf5 without refs
176
+ for scan in (
177
+ self.hdf5_acquisition_without_refs_incoherent_dim,
178
+ self.hdf5_acquisition_without_refs,
179
+ ):
180
+ self.widget.process(scan)
181
+ self.assertFalse(os.path.exists(scan.process_file))
182
+
183
+ # make sure no dark or flats exists for the edf one
184
+ self.widget.process(self.edf_acquisition_without_ref)
185
+
186
+ def testCopyActive(self):
187
+ self.widget.setCopyActive(True)
188
+ self.widget.setModeAuto(True)
189
+
190
+ self.widget.process(self.hdf5_acquisition_with_refs)
191
+ self.assertTrue(os.path.exists(self.hdf5_acquisition_with_refs.process_file))
192
+ # 1. make sure dark has been processed for the one with ref
193
+ self.assertTrue(self.widget.hasDarkStored())
194
+ self.assertTrue(self.widget.hasFlatStored())
195
+
196
+ # 2. make sure copy has been processed for the the 'compatible hdf5'
197
+ self.widget.process(self.hdf5_acquisition_without_refs)
198
+ self.assertTrue(os.path.exists(self.hdf5_acquisition_without_refs.process_file))
199
+
200
+ # 3. make sure copy has been processed for the the 'compatible edf'
201
+ self.widget.process(self.edf_acquisition_without_ref)
202
+ self.assertEqual(
203
+ len(
204
+ DarkRefsTask.getRefHSTFiles(
205
+ self.edf_acquisition_without_ref.path, prefix=REFHST_PREFIX
206
+ )
207
+ ),
208
+ 2,
209
+ )
210
+ self.assertEqual(
211
+ len(
212
+ DarkRefsTask.getDarkHSTFiles(
213
+ self.edf_acquisition_without_ref.path, prefix=DARKHST_PREFIX
214
+ )
215
+ ),
216
+ 1,
217
+ )
218
+
219
+ # 4. make sure process but no copy made if incompatible size
220
+ self.widget.process(self.hdf5_acquisition_without_refs_incoherent_dim)
221
+ self.assertFalse(
222
+ os.path.exists(
223
+ self.hdf5_acquisition_without_refs_incoherent_dim.process_file
224
+ )
225
+ )
@@ -0,0 +1,105 @@
1
+ # coding: utf-8
2
+ from __future__ import annotations
3
+
4
+
5
+ import gc
6
+ import logging
7
+ import os
8
+ import shutil
9
+ import tempfile
10
+ import time
11
+ from glob import glob
12
+
13
+ from silx.gui import qt
14
+ from silx.gui.utils.testutils import TestCaseQt
15
+
16
+ from orangecontrib.tomwer.widgets.control.DataTransfertOW import DataTransfertOW
17
+ from tomwer.core.scan.scanfactory import ScanFactory
18
+ from tomwer.core.utils.scanutils import MockEDF
19
+
20
+ logging.disable(logging.INFO)
21
+
22
+
23
+ class TestEDFFolderTransfertWidget(TestCaseQt):
24
+ """class testing the DataTransfertOW within an EDF acquisition"""
25
+
26
+ def setUp(self):
27
+ TestCaseQt.setUp(self)
28
+ self.n_file = 10
29
+ self.sourcedir = tempfile.mkdtemp()
30
+ os.makedirs(self.sourcedir, exist_ok=True)
31
+ self.targettedir = tempfile.mkdtemp()
32
+ os.makedirs(self.targettedir, exist_ok=True)
33
+ MockEDF.fastMockAcquisition(self.sourcedir, n_radio=self.n_file)
34
+ self.scan = ScanFactory.create_scan_object(self.sourcedir)
35
+
36
+ self.folderTransWidget = DataTransfertOW()
37
+ self.folderTransWidget.turn_off_print = True
38
+ self.folderTransWidget.setDestDir(self.targettedir)
39
+ self.folderTransWidget._copying = False
40
+ self.folderTransWidget.setForceSync(True)
41
+
42
+ def tearDown(self):
43
+ self.folderTransWidget.settingsHandler.removeCallback(
44
+ self.folderTransWidget._updateSettingsVals
45
+ )
46
+ self.folderTransWidget.setAttribute(qt.Qt.WA_DeleteOnClose)
47
+ self.folderTransWidget.close()
48
+ self.folderTransWidget = None
49
+
50
+ if os.path.isdir(self.sourcedir):
51
+ shutil.rmtree(self.sourcedir)
52
+ if os.path.isdir(self.targettedir):
53
+ shutil.rmtree(self.targettedir)
54
+ gc.collect()
55
+
56
+ def testMoveFiles(self):
57
+ """
58
+ simple test that files are correctly moved
59
+ """
60
+ self.folderTransWidget._process(self.scan, move=True, noRsync=True)
61
+
62
+ outputdir = os.path.join(self.targettedir, os.path.basename(self.sourcedir))
63
+ timeout = 1
64
+ while (
65
+ (os.path.isdir(self.sourcedir))
66
+ and timeout > 0
67
+ or self.folderTransWidget.isCopying()
68
+ ):
69
+ timeout = timeout - 0.1
70
+ time.sleep(0.1)
71
+ self.qapp.processEvents()
72
+
73
+ self.assertTrue(os.path.isdir(outputdir))
74
+ self.assertTrue(self.checkDataCopied())
75
+
76
+ def testCopyFiles(self):
77
+ """
78
+ Simple test that file are copy and deleted
79
+ """
80
+ self.folderTransWidget._process(self.scan, move=False, noRsync=True)
81
+
82
+ timeout = 1
83
+ outputdir = os.path.join(self.targettedir, os.path.basename(self.sourcedir))
84
+ while (
85
+ os.path.isdir(self.sourcedir) and timeout > 0
86
+ ) or self.folderTransWidget.isCopying():
87
+ timeout = timeout - 0.1
88
+ time.sleep(0.1)
89
+ self.qapp.processEvents()
90
+
91
+ time.sleep(1)
92
+
93
+ self.assertTrue(os.path.isdir(outputdir))
94
+ self.assertTrue(self.checkDataCopied())
95
+
96
+ def checkDataCopied(self):
97
+ outputdir = os.path.join(self.targettedir, os.path.basename(self.sourcedir))
98
+ outputFiles = os.listdir(outputdir)
99
+ inputFile = glob(self.sourcedir)
100
+
101
+ return (
102
+ (len(inputFile) == 0)
103
+ and (len(outputFiles) == (self.n_file + 3))
104
+ and (not os.path.isdir(self.sourcedir))
105
+ )
@@ -0,0 +1,57 @@
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 orangecanvas.scheme.readwrite import literal_dumps
11
+ from silx.gui import qt
12
+ from silx.gui.utils.testutils import TestCaseQt
13
+
14
+ from orangecontrib.tomwer.widgets.visualization.DataViewerOW import DataViewerOW
15
+ from tomwer.core.utils.scanutils import MockNXtomo
16
+
17
+
18
+ class TestDataViewerOW(TestCaseQt):
19
+ def setUp(self):
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
+ self.widget = DataViewerOW()
28
+
29
+ def tearDown(self):
30
+ self.widget.setAttribute(qt.Qt.WA_DeleteOnClose)
31
+ self.widget.close()
32
+ self.widget = None
33
+ shutil.rmtree(self.tmp_dir)
34
+ self.qapp.processEvents()
35
+ gc.collect()
36
+
37
+ def test(self):
38
+ self.widget.addScan(self.scan)
39
+ for mode in (
40
+ "projections-radios",
41
+ "slices",
42
+ "raw darks",
43
+ "raw flats",
44
+ "reduced darks",
45
+ "reduced flats",
46
+ ):
47
+ self.widget.viewer.setDisplayMode(mode)
48
+ self.qapp.processEvents()
49
+
50
+ def test_literal_dumps(self):
51
+ """
52
+ test settings are correcly dump to literals (and load)
53
+ """
54
+ self.widget._updateSettings()
55
+ config = self.widget._viewer_config
56
+ literal_dumps(config)
57
+ self.widget._setSettings(config)
@@ -0,0 +1,39 @@
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.visualization.DiffViewerOW import DiffViewerOW
14
+ from tomwer.core.utils.scanutils import MockNXtomo
15
+
16
+
17
+ class TestDiffViewerOW(TestCaseQt):
18
+ def setUp(self):
19
+ super().setUp()
20
+ self.tmp_dir = tempfile.mkdtemp()
21
+ os.makedirs(self.tmp_dir, exist_ok=True)
22
+ self.scan = MockNXtomo(
23
+ scan_path=os.path.join(self.tmp_dir, "myscan"),
24
+ n_proj=20,
25
+ n_ini_proj=20,
26
+ dim=10,
27
+ ).scan
28
+ self.widget = DiffViewerOW()
29
+
30
+ def tearDown(self):
31
+ self.widget.setAttribute(qt.Qt.WA_DeleteOnClose)
32
+ self.widget.close()
33
+ self.widget = None
34
+ self.qapp.processEvents()
35
+ shutil.rmtree(self.tmp_dir)
36
+ gc.collect()
37
+
38
+ def test(self):
39
+ self.widget.addScan(self.scan)
@@ -0,0 +1,29 @@
1
+ import gc
2
+
3
+ import pytest
4
+ from silx.gui import qt
5
+ from silx.gui.utils.testutils import TestCaseQt
6
+
7
+ from orangecontrib.tomwer.widgets.visualization.NXtomoMetadataViewerOW import (
8
+ NXtomoMetadataViewerOW,
9
+ )
10
+ from tomwer.tests.utils import skip_gui_test
11
+
12
+
13
+ @pytest.mark.skipif(skip_gui_test(), reason="skip gui test")
14
+ class TestNXtomoMetadataViewerOW(TestCaseQt):
15
+ """Test that the NXtomoEditorOW widget work correctly. Processing test are done in the core module. gui test are done in the tomwer.gui.edit module"""
16
+
17
+ def setUp(self):
18
+ super().setUp()
19
+ self._window = NXtomoMetadataViewerOW()
20
+
21
+ def tearDown(self):
22
+ self._window.setAttribute(qt.Qt.WA_DeleteOnClose)
23
+ self._window.close()
24
+ self._window = None
25
+ gc.collect()
26
+
27
+ def test(self):
28
+ self._window.show()
29
+ self.qWaitForWindowExposed(self._window)
@@ -0,0 +1,31 @@
1
+ # coding: utf-8
2
+ from __future__ import annotations
3
+
4
+
5
+ import gc
6
+
7
+ import pytest
8
+ from silx.gui import qt
9
+ from silx.gui.utils.testutils import TestCaseQt
10
+
11
+ from orangecontrib.tomwer.widgets.visualization.RadioStackOW import RadioStackOW
12
+ from tomwer.tests.utils import skip_gui_test
13
+
14
+
15
+ @pytest.mark.skipif(skip_gui_test(), reason="skip gui test")
16
+ class TestRadioStack(TestCaseQt):
17
+ """Test that the axis widget work correctly"""
18
+
19
+ def setUp(self):
20
+ super().setUp()
21
+ self._window = RadioStackOW()
22
+
23
+ def tearDown(self):
24
+ self._window.setAttribute(qt.Qt.WA_DeleteOnClose)
25
+ self._window.close()
26
+ self._window = None
27
+ gc.collect()
28
+
29
+ def test(self):
30
+ self._window.show()
31
+ self.qWaitForWindowExposed(self._window)
@@ -0,0 +1,46 @@
1
+ # coding: utf-8
2
+ from __future__ import annotations
3
+
4
+ import gc
5
+ import tempfile
6
+
7
+ import pytest
8
+ from silx.gui import qt
9
+ from silx.gui.utils.testutils import TestCaseQt
10
+
11
+ from orangecontrib.tomwer.widgets.visualization.SampleMovedOW import SampleMovedOW
12
+ from tomwer.core.utils.scanutils import MockNXtomo
13
+ from tomwer.tests.utils import skip_gui_test
14
+
15
+
16
+ @pytest.mark.skipif(skip_gui_test(), reason="skip gui test")
17
+ class TestSampleMoved(TestCaseQt):
18
+ """Test that the axis widget work correctly"""
19
+
20
+ def setUp(self):
21
+ super().setUp()
22
+ self._window = SampleMovedOW()
23
+ self._tmp_path = tempfile.mkdtemp()
24
+
25
+ self._scan = MockNXtomo(
26
+ scan_path=self._tmp_path,
27
+ create_ini_dark=True,
28
+ create_ini_flat=True,
29
+ create_final_flat=False,
30
+ n_proj=10,
31
+ n_ini_proj=10,
32
+ dim=12,
33
+ ).scan
34
+
35
+ def tearDown(self):
36
+ self._window.setAttribute(qt.Qt.WA_DeleteOnClose)
37
+ self._window.close()
38
+ self._window = None
39
+ gc.collect()
40
+
41
+ def test(self):
42
+ self._window.show()
43
+ self.qWaitForWindowExposed(self._window)
44
+
45
+ self._window.updateScan(self._scan)
46
+ self.qapp.processEvents()
@@ -0,0 +1,31 @@
1
+ # coding: utf-8
2
+ from __future__ import annotations
3
+
4
+
5
+ import gc
6
+
7
+ import pytest
8
+ from silx.gui import qt
9
+ from silx.gui.utils.testutils import TestCaseQt
10
+
11
+ from orangecontrib.tomwer.widgets.visualization.SinogramViewerOW import SinogramViewerOW
12
+ from tomwer.tests.utils import skip_gui_test
13
+
14
+
15
+ @pytest.mark.skipif(skip_gui_test(), reason="skip gui test")
16
+ class TestSinogramViewerOW(TestCaseQt):
17
+ """Test that the axis widget work correctly"""
18
+
19
+ def setUp(self):
20
+ super().setUp()
21
+ self._window = SinogramViewerOW()
22
+
23
+ def tearDown(self):
24
+ self._window.setAttribute(qt.Qt.WA_DeleteOnClose)
25
+ self._window.close()
26
+ self._window = None
27
+ gc.collect()
28
+
29
+ def test(self):
30
+ self._window.show()
31
+ self.qWaitForWindowExposed(self._window)
@@ -0,0 +1,31 @@
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.visualization.SliceStackOW import SlicesStackOW
11
+ from tomwer.tests.utils import skip_gui_test
12
+
13
+
14
+ @pytest.mark.skip("Fail on CI")
15
+ @pytest.mark.skipif(skip_gui_test(), reason="skip gui test")
16
+ class TestSliceStackOW(TestCaseQt):
17
+ """Test that the axis widget work correctly"""
18
+
19
+ def setUp(self):
20
+ super().setUp()
21
+ self._window = SlicesStackOW()
22
+
23
+ def tearDown(self):
24
+ self._window.setAttribute(qt.Qt.WA_DeleteOnClose)
25
+ self._window.close()
26
+ self._window = None
27
+ gc.collect()
28
+
29
+ def test(self):
30
+ self._window.show()
31
+ self.qWaitForWindowExposed(self._window)
@@ -0,0 +1,32 @@
1
+ # coding: utf-8
2
+ from __future__ import annotations
3
+
4
+
5
+ import gc
6
+
7
+ import pytest
8
+ from silx.gui import qt
9
+ from silx.gui.utils.testutils import TestCaseQt
10
+
11
+ from orangecontrib.tomwer.widgets.visualization.VolumeViewerOW import VolumeViewerOW
12
+ from tomwer.tests.utils import skip_gui_test
13
+
14
+
15
+ @pytest.mark.skipif(skip_gui_test(), reason="skip gui test")
16
+ class TestVolumeViewerOW(TestCaseQt):
17
+ """Test that the axis widget work correctly"""
18
+
19
+ def setUp(self):
20
+ super().setUp()
21
+ self._window = VolumeViewerOW()
22
+
23
+ def tearDown(self):
24
+ self._window.setAttribute(qt.Qt.WA_DeleteOnClose)
25
+ self._window.close()
26
+ del self._window.viewer
27
+ self._window = None
28
+ gc.collect()
29
+
30
+ def test(self):
31
+ self._window.show()
32
+ self.qWaitForWindowExposed(self._window)