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
@@ -1,3 +1,5 @@
1
+ from __future__ import annotations
2
+
1
3
  import argparse
2
4
  import logging
3
5
  import os
@@ -5,10 +7,8 @@ import shutil
5
7
  import signal
6
8
  import sys
7
9
  import silx
8
- from typing import List
9
10
  from contextlib import closing
10
11
  from logging.handlers import RotatingFileHandler
11
- from urllib.request import urlopen
12
12
  from xml.sax.saxutils import escape
13
13
 
14
14
  import pyqtgraph
@@ -28,14 +28,23 @@ from processview.gui.processmanager import ProcessManagerWindow
28
28
  from silx.gui import qt
29
29
 
30
30
  import tomwer.version
31
- from tomwer.core.log.logger import TomwerLogger
32
31
  from orangecanvas.preview import previewdialog, previewmodel
33
32
  from orangecanvas.application import examples as orange_examples
34
- import ewoks
33
+ import ewokscore
34
+ import ewoksorange
35
35
  import tomoscan.version
36
36
 
37
37
  from .config import TomwerConfig, TomwerSplashScreen
38
38
 
39
+ from tomwer.core.log.processlog import (
40
+ PROCESS_ENDED_NAME,
41
+ PROCESS_FAILED_NAME,
42
+ PROCESS_INFORM_NAME,
43
+ PROCESS_SKIPPED_NAME,
44
+ PROCESS_STARTED_NAME,
45
+ PROCESS_SUCCEED_NAME,
46
+ )
47
+
39
48
  try:
40
49
  import nabu
41
50
  except ImportError:
@@ -71,9 +80,38 @@ LOG_FILE_NAME = "tomwer.log"
71
80
  LOG_FOLDER = "/var/log/tomwer"
72
81
 
73
82
 
83
+ # These are the sequences need to get colored ouput
84
+ _RESET_SEQ = "\033[0m"
85
+
86
+ _BLACK = "\033[30m"
87
+ _RED = "\033[31m"
88
+ _GREEN = "\033[32m"
89
+ _YELLOW = "\033[33m"
90
+ _BLUE = "\033[34m"
91
+ _MAGENTA = "\033[35m"
92
+
93
+
94
+ LOG_COLORS = {
95
+ "WARNING": _MAGENTA,
96
+ "INFO": _BLACK,
97
+ "DEBUG": _BLUE,
98
+ "CRITICAL": _YELLOW,
99
+ "ERROR": _RED,
100
+ PROCESS_SKIPPED_NAME: _MAGENTA,
101
+ PROCESS_ENDED_NAME: _BLACK,
102
+ PROCESS_INFORM_NAME: _BLACK,
103
+ PROCESS_STARTED_NAME: _BLACK,
104
+ PROCESS_FAILED_NAME: _RED,
105
+ PROCESS_SUCCEED_NAME: _GREEN,
106
+ }
107
+
108
+
74
109
  class MainWindow(_MainWindow):
75
110
  HELPDESK_URL = "https://requests.esrf.fr/plugins/servlet/desk/portal/41"
76
111
 
112
+ FORCE_OBJECT_SUPERVISOR_DISPLAY = True
113
+ """If true will always display the processed supervisor at start up. Restore state will be ignored."""
114
+
77
115
  def __init__(self, *args, **kwargs):
78
116
  super().__init__(*args, **kwargs)
79
117
  self.process_supervisor_dock = DockWidget(
@@ -90,6 +128,15 @@ class MainWindow(_MainWindow):
90
128
  )
91
129
  self.addDockWidget(qt.Qt.BottomDockWidgetArea, self.process_supervisor_dock)
92
130
 
131
+ def restoreState(self, state, version=0):
132
+ # for now we always want to display the process supervisor
133
+ restored = super().restoreState(state=state, version=version)
134
+ if self.FORCE_OBJECT_SUPERVISOR_DISPLAY:
135
+ self.show_processes_manager_action.setChecked(True)
136
+ self.process_supervisor_dock.setVisible(True)
137
+
138
+ return restored
139
+
93
140
  def setup_actions(self):
94
141
  super().setup_actions()
95
142
  # create the action to connect with it
@@ -146,6 +193,14 @@ class MainWindow(_MainWindow):
146
193
  triggered=self.open_python_script_example,
147
194
  menuRole=qt.QAction.AboutRole,
148
195
  )
196
+ self.python_script_example_action = qt.QAction(
197
+ self.tr("ID16b examples"),
198
+ self,
199
+ objectName="id16b-example",
200
+ toolTip=self.tr("ID16b use case."),
201
+ triggered=self.open_id16b_example,
202
+ menuRole=qt.QAction.AboutRole,
203
+ )
149
204
  # Predefined workflows menu.
150
205
  self.predefined_workflows_menu = qt.QMenu(
151
206
  self.tr("&Examples"),
@@ -243,6 +298,11 @@ class MainWindow(_MainWindow):
243
298
  orange_examples.workflows(), filter_names=("_script",)
244
299
  )
245
300
 
301
+ def open_id16b_example(self):
302
+ return self.__open_examples(
303
+ orange_examples.workflows(), filter_names=("ID16b",)
304
+ )
305
+
246
306
  def open_cor_search_example(self):
247
307
  return self.__open_examples(
248
308
  orange_examples.workflows(), filter_names=("find_cor", "cor_search")
@@ -293,7 +353,7 @@ class _OMain(ocMain):
293
353
  )
294
354
  return parser
295
355
 
296
- def parse_arguments(self, argv: List[str]):
356
+ def parse_arguments(self, argv: list[str]):
297
357
  super().parse_arguments(argv)
298
358
  # define silx plot backend. For now the si;pler is to
299
359
  # define an environment variable.
@@ -310,7 +370,40 @@ class _OMain(ocMain):
310
370
  silx.config.DEFAULT_PLOT_BACKEND = "matplotlib"
311
371
 
312
372
  def setup_logging(self):
313
- super().setup_logging()
373
+ level = self.options.log_level
374
+ logformat = "%(asctime)s:%(levelname)s:%(name)s: %(message)s"
375
+
376
+ # File handler should always be at least INFO level so we need
377
+ # the application root level to be at least at INFO.
378
+ root_level = min(level, logging.INFO)
379
+ rootlogger = logging.getLogger()
380
+ rootlogger.setLevel(root_level)
381
+
382
+ # Standard output stream handler at the requested level
383
+ if sys.platform in ("linux", "linux2", "darwin"):
384
+ stream_hander = make_linux_stream_colored_handler(
385
+ level, fileobj=self.__stderr__
386
+ )
387
+ else:
388
+ stream_hander = make_stream_handler(
389
+ level, fileobj=self.__stderr__, fmt=logformat
390
+ )
391
+ rootlogger.addHandler(stream_hander)
392
+ # Setup log capture for MainWindow/Log
393
+ log_stream = TextStream(objectName="-log-stream")
394
+ self.output.connectStream(log_stream)
395
+ self.stack.push(closing(log_stream)) # close on exit
396
+ log_handler = make_stream_handler(level, fileobj=log_stream, fmt=logformat)
397
+ rootlogger.addHandler(log_handler)
398
+
399
+ # Also log to file
400
+ file_handler = make_file_handler(
401
+ root_level,
402
+ os.path.join(config.log_dir(), "canvas.log"),
403
+ mode="w",
404
+ )
405
+ rootlogger.addHandler(file_handler)
406
+
314
407
  make_sql_logger(self.options.log_level)
315
408
 
316
409
  def setup_application(self):
@@ -381,11 +474,12 @@ ABOUT_TEMPLATE = """\
381
474
  <h4>{name}</h4>
382
475
  <p>tomwer version: {tomwer_version}</p>
383
476
  <p>nabu version: {nabu_version}</p>
384
- <p>nxtomomill version: {nxtomomill_version}</p>
385
477
  <p>nxtomo version: {nxtomo_version}</p>
478
+ <p>nxtomomill version: {nxtomomill_version}</p>
386
479
  <p>tomoscan version: {tomoscan_version}</p>
480
+ <p>ewokscore version: {ewokscore_version}</p>
481
+ <p>ewoksorange version: {ewoksorange_version}</p>
387
482
  <p>sluurp version: {sluurp_version}</p>
388
- <p>ewoks version: {ewoks_version}</p>
389
483
  """
390
484
 
391
485
 
@@ -416,8 +510,13 @@ class AboutDialog(qt.QDialog):
416
510
  sluurp_version=escape(
417
511
  sluurp.__version__ if has_sluurp else "not installed"
418
512
  ),
419
- ewoks_version=escape(
420
- ewoks.__version__ if hasattr(ewoks, "__version__") else "???"
513
+ ewokscore_version=escape(
514
+ ewokscore.__version__ if hasattr(ewokscore, "__version__") else "???"
515
+ ),
516
+ ewoksorange_version=escape(
517
+ ewoksorange.__version__
518
+ if hasattr(ewoksorange, "__version__")
519
+ else "???"
421
520
  ),
422
521
  )
423
522
  text_label = qt.QLabel(text)
@@ -446,45 +545,45 @@ class OMain(_OMain):
446
545
 
447
546
  def setup_logging(self):
448
547
  super().setup_logging()
449
- rootlogger = logging.getLogger()
450
- rootlogger = TomwerLogger(rootlogger)
451
- logging.setLoggerClass(TomwerLogger)
548
+ # rootlogger = logging.getLogger()
549
+ # rootlogger = TomwerLogger(rootlogger)
550
+ # logging.setLoggerClass(TomwerLogger)
452
551
 
453
552
  def setup_sys_redirections(self):
454
- self._tomwLogger = TomwerLogger("tomwer")
455
- try:
456
- self.output = doc = TerminalTextDocument()
553
+ self.output = doc = TerminalTextDocument()
457
554
 
458
- stdout = TextStream(objectName="-stdout")
459
- stderr = TextStream(objectName="-stderr")
460
- doc.connectStream(stdout)
461
- doc.connectStream(stderr, color=qt.Qt.red)
555
+ stdout = TextStream(objectName="-stdout")
556
+ stderr = TextStream(objectName="-stderr")
557
+ doc.connectStream(stdout)
558
+ doc.connectStream(stderr, color=qt.Qt.red)
462
559
 
463
- if sys.stdout is not None:
464
- stdout.stream.connect(sys.stdout.write, qt.Qt.DirectConnection)
560
+ if sys.stdout is not None:
561
+ stdout.stream.connect(sys.stdout.write, qt.Qt.DirectConnection)
465
562
 
466
- self.__stdout__ = sys.stdout
467
- sys.stdout = stdout
563
+ self.__stdout__ = sys.stdout
564
+ sys.stdout = stdout
468
565
 
469
- if sys.stderr is not None:
470
- stderr.stream.connect(sys.stderr.write, qt.Qt.DirectConnection)
566
+ if sys.stderr is not None:
567
+ stderr.stream.connect(sys.stderr.write, qt.Qt.DirectConnection)
471
568
 
472
- self.__stderr__ = sys.stderr
473
- sys.stderr = stderr
474
- self.__excepthook__ = sys.excepthook
475
- sys.excepthook = ExceptHook(stream=stderr)
569
+ self.__stderr__ = sys.stderr
570
+ sys.stderr = stderr
571
+ self.__excepthook__ = sys.excepthook
572
+ sys.excepthook = ExceptHook(stream=stderr)
476
573
 
477
- self.stack.push(closing(stdout))
478
- self.stack.push(closing(stderr))
479
- except Exception:
480
- super().setup_sys_redirections()
574
+ self.stack.push(closing(stdout))
575
+ self.stack.push(closing(stderr))
481
576
 
482
577
  def argument_parser(self) -> argparse.ArgumentParser:
483
578
  parser = super().argument_parser()
484
579
  for action in parser._actions:
580
+ # avoid clearing settings because this make people confused
485
581
  if action.dest == "clear_widget_settings":
486
582
  parser._remove_action(action)
487
583
  break
584
+ # by default log are only displaying errors. But we want to get warning as well (for deprecation for example).
585
+ if action.dest == "log_level":
586
+ action.default = logging.WARNING
488
587
 
489
588
  parser.add_argument(
490
589
  "--no-color-stdout-logs",
@@ -534,38 +633,45 @@ def dealWithLogFile():
534
633
  )
535
634
 
536
635
 
537
- def check_is_latest_release() -> bool:
538
- """Check if the current version is the latest release."""
539
- url = "https://gitlab.esrf.fr/tomotools/tomwer/-/raw/master/tomwer/version.py"
540
- current_version = tomwer.version.version
541
- try:
542
- version_file_html = urlopen(url, data=None, timeout=10)
543
- except Exception as e:
544
- _logger.warning(f"Fail to load version of the latest release. Reason is {e}")
545
- return True
546
- else:
547
- latest_release_version = None
548
- for line in version_file_html.readlines():
549
- t_line = line.decode("utf-8")
550
- t_line = t_line.replace(" ", "")
551
- if t_line.startswith("latest_release_version_info="):
552
- latest_release_version = t_line.replace(
553
- "latest_release_version_info=", ""
554
- )
555
- break
556
- if latest_release_version is None:
557
- _logger.warning("Unable to find the version of the latest " "release.")
558
-
559
- elif current_version < latest_release_version:
560
- msg = qt.QMessageBox()
561
- msg.setIcon(qt.QMessageBox.Question)
562
- types = qt.QMessageBox.Ok | qt.QMessageBox.Cancel
563
- message = (
564
- "The version you want to use ({}) is not the latest "
565
- "version ({}). Do you want to continue ?"
566
- )
567
- msg.setStandardButtons(types)
568
- msg.setWindowTitle("No the latest version")
569
- msg.setText(message)
570
- return msg.exec_() == qt.QMessageBox.Ok
571
- return True
636
+ class _ColoredFormatter(logging.Formatter):
637
+ """Dedicated colors to highlight level name by coloring logs (only for linux terminals)"""
638
+
639
+ @staticmethod
640
+ def color_formatting(message: str, levelname: str, ascii_time):
641
+ """colors message using ascii"""
642
+ return (
643
+ f"{ascii_time} {LOG_COLORS[levelname]}[{levelname}]{_RESET_SEQ} {message}"
644
+ )
645
+
646
+ def format(self, record):
647
+ record.asctime = self.formatTime(record, "%Y-%m-%d %H:%M:%S")
648
+ record.message = record.getMessage()
649
+ return self.color_formatting(
650
+ message=record.message,
651
+ levelname=record.levelname,
652
+ ascii_time=record.asctime,
653
+ )
654
+
655
+
656
+ def make_linux_stream_colored_handler(level, fileobj=None):
657
+ handler = logging.StreamHandler(fileobj)
658
+ handler.setLevel(level)
659
+ formatter = _ColoredFormatter()
660
+ handler.setFormatter(formatter)
661
+ return handler
662
+
663
+
664
+ def make_stream_handler(level, fileobj=None, fmt=None):
665
+ handler = logging.StreamHandler(fileobj)
666
+ handler.setLevel(level)
667
+ if fmt:
668
+ handler.setFormatter(logging.Formatter(fmt))
669
+ return handler
670
+
671
+
672
+ def make_file_handler(level, filename, mode="w", fmt=None):
673
+ handler = logging.FileHandler(filename, mode=mode, encoding="utf-8")
674
+ handler.setLevel(level)
675
+ if fmt:
676
+ handler.setFormatter(logging.Formatter(fmt))
677
+ return handler
@@ -7,9 +7,8 @@ def splash_screen():
7
7
  """
8
8
 
9
9
  :return: splash screen for orange-canvas
10
- :rtype: tuple(QPixmap, QRect),
11
10
 
12
- note: QRect is used by orange to define a mask to display the message.
11
+ :note: QRect is used by orange to define a mask to display the message.
13
12
  In our case we overwrite the QSplashScreen so we don't need this.
14
13
  """
15
14
  pixmap = icons.getQPixmap("tomwer")
@@ -20,7 +19,6 @@ def getIcon():
20
19
  """
21
20
 
22
21
  :return: application icon
23
- :rtype: QIcon
24
22
  """
25
23
  pixmap = icons.getQPixmap("tomwer")
26
24
  return qt.QIcon(pixmap)
@@ -0,0 +1,47 @@
1
+ from __future__ import annotations
2
+
3
+ import tomoscan.version
4
+
5
+ import ewokscore
6
+ import ewoksorange
7
+ import tomwer.version
8
+ import sluurp
9
+
10
+ try:
11
+ import nxtomomill.version
12
+ except ImportError:
13
+ has_nxtomomill = False
14
+ else:
15
+ has_nxtomomill = True
16
+ try:
17
+ import nabu
18
+ except ImportError:
19
+ has_nabu = False
20
+ else:
21
+ has_nabu = True
22
+ try:
23
+ import nxtomo.version
24
+ except ImportError:
25
+ has_nxtomo = False
26
+ else:
27
+ has_nxtomo = True
28
+
29
+
30
+ def get_tomotools_stack_versions() -> dict[str, str]:
31
+ """Return the version of the main libraries used by tomwer"""
32
+ stack = {
33
+ "tomwer": tomwer.version.version,
34
+ }
35
+
36
+ if has_nabu:
37
+ stack["nabu"] = nabu.version
38
+ if has_nxtomo:
39
+ stack["nxtomo"] = nxtomo.version.version
40
+ if has_nxtomomill:
41
+ stack["nxtomomill"] = nxtomomill.version.version
42
+ stack["tomoscan"] = tomoscan.version.version
43
+ stack["ewokscore"] = ewokscore.__version__
44
+ stack["ewoksorange"] = ewoksorange.__version__
45
+ stack["sluurp"] = sluurp.__version__
46
+
47
+ return stack
@@ -52,13 +52,10 @@ class WidgetsScheme(Scheme):
52
52
  def show_report_view(self):
53
53
  return
54
54
 
55
- def has_report(self):
55
+ def has_report(self) -> bool:
56
56
  """
57
57
  Does this workflow have an associated report
58
58
 
59
- Returns
60
- -------
61
- has_report: bool
62
59
  """
63
60
  return self.__report_view is not None
64
61
 
@@ -66,9 +63,7 @@ class WidgetsScheme(Scheme):
66
63
  """
67
64
  Return a OWReport instance used by the workflow.
68
65
 
69
- Returns
70
- -------
71
- report : OWReport
66
+ :return: report
72
67
  """
73
68
  return None
74
69
 
@@ -76,9 +71,7 @@ class WidgetsScheme(Scheme):
76
71
  """
77
72
  Set the designated OWReport view for this workflow.
78
73
 
79
- Parameters
80
- ----------
81
- view :
74
+ :param view:
82
75
  """
83
76
  self.__report_view = None
84
77
 
tomwer/app/diffframe.py CHANGED
@@ -1,5 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding: utf-8 -*-
3
+ """Application to display the difference between two frames.
4
+ """
3
5
 
4
6
  import argparse
5
7
  import logging
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding: utf-8 -*-
3
-
3
+ """Application to edit (key by key) the 'imagekey' value of a NXtomo ('imagekey' defines if a frame is a 'dark', 'flat' or a 'projection')
4
+ """
4
5
  import argparse
5
6
  import logging
6
7
  import signal
@@ -1,5 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding: utf-8 -*-
3
+ """Application to edit (group by group) the 'imagekey' value of a NXtomo ('imagekey' defines if a frame is a 'dark', 'flat' or a 'projection')
4
+ """
3
5
 
4
6
  import argparse
5
7
  import logging
tomwer/app/multicor.py CHANGED
@@ -1,12 +1,15 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding: utf-8 -*-
3
+ """Application to reconstruct a slice for a set of center of rotation value. Interface to nabu multicor
4
+ """
5
+
6
+ from __future__ import annotations
3
7
 
4
8
  import argparse
5
9
  import logging
6
10
  import signal
7
11
  import sys
8
12
  import time
9
- from typing import Union
10
13
 
11
14
  import silx
12
15
  from silx.gui import qt
@@ -122,7 +125,7 @@ class SAAxisWindow(_SAAxisWindow):
122
125
  def stop(self):
123
126
  self._stopProcessingThread()
124
127
 
125
- def _computeEstimatedCor(self) -> Union[float, None]:
128
+ def _computeEstimatedCor(self) -> float | None:
126
129
  scan = self.getScan()
127
130
  if scan is None:
128
131
  return
tomwer/app/multipag.py CHANGED
@@ -1,12 +1,15 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding: utf-8 -*-
3
+ """Application to reconstruct a slice with Paganin for a set of delta/beta values.
4
+ """
5
+
6
+ from __future__ import annotations
3
7
 
4
8
  import argparse
5
9
  import logging
6
10
  import signal
7
11
  import sys
8
12
  import time
9
- from typing import Union
10
13
 
11
14
  import silx
12
15
  from silx.gui import qt
@@ -133,13 +136,13 @@ class SADeltaBetaWindow(_SADeltaBetaWindow):
133
136
 
134
137
  def _relativeValueEdited(self):
135
138
  old = self._absoluteCORValueQLE.blockSignals(True)
136
- value = self._relativeCORValueQLE.value() + self._imageWidth / 2.0
139
+ value = self._relativeCORValueQLE.value() + (self._imageWidth - 1) / 2.0
137
140
  self._absoluteCORValueQLE.setValue(value)
138
141
  self._absoluteCORValueQLE.blockSignals(old)
139
142
 
140
143
  def _absolueValueEdited(self):
141
144
  old = self._relativeCORValueQLE.blockSignals(True)
142
- value = self._absoluteCORValueQLE.value() - self._imageWidth / 2.0
145
+ value = self._absoluteCORValueQLE.value() - (self._imageWidth - 1) / 2.0
143
146
  self._relativeCORValueQLE.setValue(value)
144
147
  self._relativeCORValueQLE.blockSignals(old)
145
148
 
@@ -200,7 +203,7 @@ class SADeltaBetaWindow(_SADeltaBetaWindow):
200
203
  def stop(self):
201
204
  self._stopProcessingThread()
202
205
 
203
- def _computeEstimatedCor(self) -> Union[float, None]:
206
+ def _computeEstimatedCor(self) -> float | None:
204
207
  scan = self.getScan()
205
208
  if scan is None:
206
209
  return
tomwer/app/nabuapp.py CHANGED
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding: utf-8 -*-
3
-
3
+ """Application to reconstruct a slice with nabu
4
+ """
4
5
  import argparse
5
6
  import logging
6
7
  import signal
@@ -1,5 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding: utf-8 -*-
3
+ """Application to edit several entries of a NXtomo
4
+ """
3
5
 
4
6
  import argparse
5
7
  import logging
@@ -9,6 +11,7 @@ import sys
9
11
  from silx.gui import qt
10
12
 
11
13
  from tomwer.core.scan.scanfactory import ScanFactory
14
+ from tomwer.core.process.edit.nxtomoeditor import NXtomoEditorTask
12
15
  from tomwer.gui.edit.nxtomoeditor import NXtomoEditorDialog as _NXtomoEditorDialog
13
16
  from tomwer.gui.utils.splashscreen import getMainSplashScreen
14
17
 
@@ -21,18 +24,20 @@ class NXtomoEditorDialog(_NXtomoEditorDialog):
21
24
  super().__init__()
22
25
 
23
26
  # connect signal / slot
24
- self._buttons.button(qt.QDialogButtonBox.Ok).released.connect(
25
- self._overwriteNXtomo
26
- )
27
+ self._buttons.button(qt.QDialogButtonBox.Ok).released.connect(self._triggerTask)
28
+
29
+ def getScan(self):
30
+ return self.mainWidget.getScan()
27
31
 
28
- def _overwriteNXtomo(self, *args, **kwargs):
29
- print("start overwrite")
30
- try:
31
- self.overwriteNXtomo()
32
- except Exception as e:
33
- print(f"write failed with error {e}")
34
- else:
35
- print("overwrite succeded")
32
+ def _triggerTask(self, *args, **kwargs):
33
+ task = NXtomoEditorTask(
34
+ inputs={
35
+ "data": self.getScan(),
36
+ "configuration": self.getConfigurationForTask(),
37
+ }
38
+ )
39
+ task.run()
40
+ print("edition finished")
36
41
 
37
42
 
38
43
  def main(argv):
@@ -78,7 +83,7 @@ def main(argv):
78
83
  )
79
84
  except Exception as e:
80
85
  _logger.error(
81
- f"Fail to find an NXtomo from {options.scan_path} at {options.entry}. Error is {e}"
86
+ f"Fail to find a NXtomo from {options.scan_path} at {options.entry}. Error is {e}"
82
87
  )
83
88
  return
84
89
 
@@ -1,5 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding: utf-8 -*-
3
+ """Application to append dark of flat frames to an existing NXtomo
4
+ """
3
5
 
4
6
  import argparse
5
7
  import logging
tomwer/app/radiostack.py CHANGED
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding: utf-8 -*-
3
-
3
+ """Application to display scan radios as a stack
4
+ """
4
5
  import argparse
5
6
  import logging
6
7
  import os
@@ -21,7 +22,7 @@ _logger = logging.getLogger(__name__)
21
22
 
22
23
 
23
24
  def getinputinfo():
24
- return "tomwer radiostack [scanDir]"
25
+ return "tomwer radio-stack [scanName]"
25
26
 
26
27
 
27
28
  def addFolderAndSubFolder(stack, path):
@@ -1,5 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding: utf-8 -*-
3
+ """Application to compute reduced darks and flats for a given scan
4
+ """
3
5
 
4
6
  import argparse
5
7
  import logging
@@ -60,6 +62,7 @@ def _exec_with_interaction(scan, dark_method, flat_method, overwrite):
60
62
 
61
63
  class _DarkRefWidgetRunnable(DarkRefWidget):
62
64
  sigScanReady = qt.Signal(str)
65
+ """emit when scan ready"""
63
66
 
64
67
  def __init__(self, scan, parent=None):
65
68
  self.__scan = scan
tomwer/app/samplemoved.py CHANGED
@@ -1,5 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding: utf-8 -*-
3
+ """Application to display a couple of projections at 180 degree and estimate (by eye) if a sample has moved
4
+ """
3
5
 
4
6
  import argparse
5
7
  import logging