tomwer 1.3.26__py3-none-any.whl → 1.4.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (638) hide show
  1. orangecontrib/tomwer/orange/managedprocess.py +1 -29
  2. orangecontrib/tomwer/orange/settings.py +2 -28
  3. orangecontrib/tomwer/tests/TestAcquisition.py +220 -0
  4. orangecontrib/tomwer/tutorials/append_raw_darks_and_flats_frames_to_NXtomos.ows +2 -2
  5. orangecontrib/tomwer/tutorials/copy_reduced_darks_and_flats_meth1.ows +1 -1
  6. orangecontrib/tomwer/tutorials/{icat_publication.ows → drac_publication.ows} +7 -21
  7. orangecontrib/tomwer/tutorials/id16b/ID16b_full_volume.ows +22 -0
  8. orangecontrib/tomwer/tutorials/id16b/ID16b_insitu.ows +302 -0
  9. orangecontrib/tomwer/tutorials/id16b/ID16b_normalization.ows +218 -0
  10. orangecontrib/tomwer/tutorials/simple_volume_to_slurm_reconstruction.ows +29 -24
  11. orangecontrib/tomwer/tutorials/test_cor.ows +19 -0
  12. orangecontrib/tomwer/tutorials/volume_casting_on_slurm.ows +54 -0
  13. orangecontrib/tomwer/widgets/__init__.py +3 -5
  14. orangecontrib/tomwer/widgets/cluster/FutureSupervisorOW.py +35 -54
  15. orangecontrib/tomwer/widgets/cluster/SlurmClusterOW.py +1 -31
  16. orangecontrib/tomwer/widgets/control/AdvancementOW.py +1 -29
  17. orangecontrib/tomwer/widgets/control/DataDiscoveryOW.py +5 -4
  18. orangecontrib/tomwer/widgets/control/DataListenerOW.py +1 -29
  19. orangecontrib/tomwer/widgets/control/DataSelectorOW.py +11 -30
  20. orangecontrib/tomwer/widgets/control/DataTransfertOW.py +2 -28
  21. orangecontrib/tomwer/widgets/control/DataValidatorOW.py +1 -28
  22. orangecontrib/tomwer/widgets/control/DataWatcherOW.py +1 -28
  23. orangecontrib/tomwer/widgets/control/EDF2NXTomomillOW.py +48 -51
  24. orangecontrib/tomwer/widgets/control/EmailOW.py +12 -2
  25. orangecontrib/tomwer/widgets/control/FilterOW.py +1 -28
  26. orangecontrib/tomwer/widgets/control/NXTomomillOW.py +37 -53
  27. orangecontrib/tomwer/widgets/control/NXtomoConcatenate.py +21 -20
  28. orangecontrib/tomwer/widgets/control/NotifierOW.py +9 -28
  29. orangecontrib/tomwer/widgets/control/ReduceDarkFlatSelectorOW.py +3 -2
  30. orangecontrib/tomwer/widgets/control/SingleTomoObjOW.py +1 -27
  31. orangecontrib/tomwer/widgets/control/TimerOW.py +9 -28
  32. orangecontrib/tomwer/widgets/control/TomoObjSeriesOW.py +58 -0
  33. orangecontrib/tomwer/widgets/control/VolumeSelector.py +8 -30
  34. orangecontrib/tomwer/widgets/control/icons/nxtomomill.svg +173 -119
  35. orangecontrib/tomwer/widgets/control/icons/reduced_darkflat_selector.png +0 -0
  36. orangecontrib/tomwer/widgets/control/icons/reduced_darkflat_selector.svg +55 -195
  37. orangecontrib/tomwer/widgets/control/icons/{tomoobjserie.svg → tomoobjseries.svg} +2 -2
  38. orangecontrib/tomwer/widgets/dataportal/PublishProcessedDataOW.py +172 -0
  39. orangecontrib/tomwer/widgets/{icat → dataportal}/__init__.py +2 -2
  40. orangecontrib/tomwer/widgets/debugtools/DatasetGeneratorOW.py +2 -29
  41. orangecontrib/tomwer/widgets/debugtools/ObjectInspectorOW.py +1 -29
  42. orangecontrib/tomwer/widgets/edit/DarkFlatPatchOW.py +48 -73
  43. orangecontrib/tomwer/widgets/edit/ImageKeyEditorOW.py +48 -75
  44. orangecontrib/tomwer/widgets/edit/ImageKeyUpgraderOW.py +5 -30
  45. orangecontrib/tomwer/widgets/edit/NXtomoEditorOW.py +51 -52
  46. orangecontrib/tomwer/widgets/other/PythonScriptOW.py +22 -10
  47. orangecontrib/tomwer/widgets/reconstruction/AxisOW.py +51 -60
  48. orangecontrib/tomwer/widgets/reconstruction/CastNabuVolumeOW.py +22 -68
  49. orangecontrib/tomwer/widgets/reconstruction/DarkRefAndCopyOW.py +3 -30
  50. orangecontrib/tomwer/widgets/reconstruction/NabuHelicalPrepareWeightsDoubleOW.py +21 -19
  51. orangecontrib/tomwer/widgets/reconstruction/NabuOW.py +7 -70
  52. orangecontrib/tomwer/widgets/reconstruction/NabuVolumeOW.py +41 -84
  53. orangecontrib/tomwer/widgets/reconstruction/SAAxisOW.py +15 -40
  54. orangecontrib/tomwer/widgets/reconstruction/SADeltaBetaOW.py +13 -35
  55. orangecontrib/tomwer/widgets/reconstruction/SinoNormOW.py +2 -30
  56. orangecontrib/tomwer/widgets/stitching/ZStitchingConfigOW.py +11 -11
  57. orangecontrib/tomwer/widgets/utils.py +2 -29
  58. orangecontrib/tomwer/widgets/visualization/DataViewerOW.py +1 -27
  59. orangecontrib/tomwer/widgets/visualization/DiffViewerOW.py +1 -27
  60. orangecontrib/tomwer/widgets/visualization/NXtomoMetadataViewerOW.py +1 -1
  61. orangecontrib/tomwer/widgets/visualization/RadioStackOW.py +2 -28
  62. orangecontrib/tomwer/widgets/visualization/SampleMovedOW.py +1 -27
  63. orangecontrib/tomwer/widgets/visualization/SinogramViewerOW.py +1 -27
  64. orangecontrib/tomwer/widgets/visualization/SliceStackOW.py +2 -28
  65. tomwer/__init__.py +3 -28
  66. tomwer/__main__.py +8 -4
  67. tomwer/app/__init__.py +2 -0
  68. tomwer/app/axis.py +8 -10
  69. tomwer/app/canvas.py +23 -29
  70. tomwer/app/canvas_launcher/config.py +14 -102
  71. tomwer/app/canvas_launcher/environ.py +5 -8
  72. tomwer/app/canvas_launcher/mainwindow.py +175 -69
  73. tomwer/app/canvas_launcher/splash.py +1 -3
  74. tomwer/app/canvas_launcher/utils.py +47 -0
  75. tomwer/app/canvas_launcher/widgetsscheme.py +3 -10
  76. tomwer/app/diffframe.py +2 -0
  77. tomwer/app/imagekeyeditor.py +2 -1
  78. tomwer/app/imagekeyupgrader.py +2 -0
  79. tomwer/app/multicor.py +5 -2
  80. tomwer/app/multipag.py +16 -5
  81. tomwer/app/nabuapp.py +2 -1
  82. tomwer/app/nxtomoeditor.py +17 -12
  83. tomwer/app/patchrawdarkflat.py +2 -0
  84. tomwer/app/radiostack.py +3 -2
  85. tomwer/app/reducedarkflat.py +3 -0
  86. tomwer/app/samplemoved.py +2 -0
  87. tomwer/app/scanviewer.py +2 -0
  88. tomwer/app/sinogramviewer.py +2 -0
  89. tomwer/app/slicestack.py +11 -13
  90. tomwer/app/stitching/common.py +431 -0
  91. tomwer/app/stopdatalistener.py +3 -0
  92. tomwer/app/ystitching.py +26 -0
  93. tomwer/app/zstitching.py +8 -363
  94. tomwer/core/__init__.py +2 -28
  95. tomwer/core/cluster/__init__.py +3 -0
  96. tomwer/core/cluster/cluster.py +10 -26
  97. tomwer/core/futureobject.py +17 -43
  98. tomwer/core/log/__init__.py +2 -0
  99. tomwer/core/log/processlog.py +0 -28
  100. tomwer/core/process/cluster/supervisor.py +52 -34
  101. tomwer/core/process/conditions/filters.py +3 -28
  102. tomwer/core/process/control/datalistener/datalistener.py +7 -75
  103. tomwer/core/process/control/datalistener/rpcserver.py +8 -38
  104. tomwer/core/process/control/datawatcher/datawatcher.py +11 -40
  105. tomwer/core/process/control/datawatcher/datawatcherobserver.py +30 -64
  106. tomwer/core/process/control/datawatcher/datawatcherprocess.py +11 -32
  107. tomwer/core/process/control/datawatcher/edfdwprocess.py +2 -27
  108. tomwer/core/process/control/datawatcher/hdf5dwprocess.py +1 -26
  109. tomwer/core/process/control/datawatcher/status.py +1 -26
  110. tomwer/core/process/control/emailnotifier.py +11 -23
  111. tomwer/core/process/control/nxtomoconcatenate.py +20 -18
  112. tomwer/core/process/control/nxtomomill.py +9 -44
  113. tomwer/core/process/control/scanlist.py +0 -27
  114. tomwer/core/process/control/scantransfer.py +15 -13
  115. tomwer/core/process/control/scanvalidator.py +4 -30
  116. tomwer/core/process/control/{test → tests}/test_concatenate_nxtomos.py +5 -5
  117. tomwer/core/process/control/timer.py +1 -27
  118. tomwer/core/process/control/tomoobjseries.py +12 -0
  119. tomwer/core/process/drac/binning.py +37 -0
  120. tomwer/core/process/drac/dracbase.py +170 -0
  121. tomwer/core/process/drac/gallery.py +109 -0
  122. tomwer/core/process/drac/output.py +12 -0
  123. tomwer/core/process/drac/processeddataset.py +147 -0
  124. tomwer/core/process/drac/publish.py +118 -0
  125. tomwer/core/process/drac/rawdataset.py +142 -0
  126. tomwer/core/process/drac/tests/test_gallery.py +71 -0
  127. tomwer/core/process/drac/tests/test_icat_processed_dataset.py +80 -0
  128. tomwer/core/process/drac/tests/test_icat_raw_dataset.py +90 -0
  129. tomwer/core/process/edit/darkflatpatch.py +1 -28
  130. tomwer/core/process/edit/imagekeyeditor.py +4 -32
  131. tomwer/core/process/edit/nxtomoeditor.py +307 -0
  132. tomwer/core/process/edit/tests/test_darkflatpatch.py +243 -0
  133. tomwer/core/process/edit/tests/test_imagekey_editor.py +99 -0
  134. tomwer/core/process/output.py +9 -2
  135. tomwer/core/process/reconstruction/__init__.py +0 -26
  136. tomwer/core/process/reconstruction/axis/anglemode.py +1 -29
  137. tomwer/core/process/reconstruction/axis/axis.py +47 -804
  138. tomwer/core/process/reconstruction/axis/mode.py +89 -25
  139. tomwer/core/process/reconstruction/axis/params.py +131 -283
  140. tomwer/core/process/reconstruction/axis/projectiontype.py +0 -28
  141. tomwer/core/process/reconstruction/axis/side.py +8 -0
  142. tomwer/core/process/reconstruction/darkref/darkrefs.py +14 -39
  143. tomwer/core/process/reconstruction/darkref/darkrefscopy.py +7 -39
  144. tomwer/core/process/reconstruction/darkref/params.py +1 -28
  145. tomwer/core/process/reconstruction/nabu/castvolume.py +19 -34
  146. tomwer/core/process/reconstruction/nabu/nabucommon.py +18 -43
  147. tomwer/core/process/reconstruction/nabu/nabuscores.py +64 -68
  148. tomwer/core/process/reconstruction/nabu/nabuslices.py +63 -105
  149. tomwer/core/process/reconstruction/nabu/nabuvolume.py +44 -70
  150. tomwer/core/process/reconstruction/nabu/plane.py +10 -0
  151. tomwer/core/process/reconstruction/nabu/settings.py +1 -28
  152. tomwer/core/process/reconstruction/nabu/target.py +0 -28
  153. tomwer/core/process/reconstruction/nabu/test/test_castvolume.py +116 -0
  154. tomwer/core/process/reconstruction/nabu/test/test_nabu_utils.py +277 -0
  155. tomwer/core/process/reconstruction/nabu/test/test_nabunormalization.py +199 -0
  156. tomwer/core/process/reconstruction/nabu/utils.py +11 -60
  157. tomwer/core/process/reconstruction/normalization/normalization.py +2 -32
  158. tomwer/core/process/reconstruction/normalization/params.py +3 -35
  159. tomwer/core/process/reconstruction/output.py +14 -19
  160. tomwer/core/process/reconstruction/paramsbase.py +4 -33
  161. tomwer/core/process/reconstruction/saaxis/params.py +5 -33
  162. tomwer/core/process/reconstruction/saaxis/saaxis.py +22 -51
  163. tomwer/core/process/reconstruction/sadeltabeta/params.py +2 -31
  164. tomwer/core/process/reconstruction/sadeltabeta/sadeltabeta.py +18 -46
  165. tomwer/core/process/reconstruction/scores/params.py +9 -39
  166. tomwer/core/process/reconstruction/scores/scores.py +10 -42
  167. tomwer/core/process/reconstruction/tests/__init__.py +0 -0
  168. tomwer/core/process/reconstruction/tests/test_axis.py +46 -0
  169. tomwer/core/process/reconstruction/tests/test_darkref.py +33 -0
  170. tomwer/core/process/reconstruction/{test → tests}/test_saaxis.py +1 -27
  171. tomwer/core/process/reconstruction/tests/test_sadeltabeta.py +48 -0
  172. tomwer/core/process/reconstruction/{test → tests}/test_utils.py +4 -4
  173. tomwer/core/process/reconstruction/utils/cor.py +8 -4
  174. tomwer/core/process/script/python.py +1 -27
  175. tomwer/core/process/script/tests/test_script.py +41 -0
  176. tomwer/core/process/stitching/metadataholder.py +5 -4
  177. tomwer/core/process/stitching/nabustitcher.py +35 -5
  178. tomwer/core/process/stitching/tests/test_metadataholder.py +17 -0
  179. tomwer/core/process/task.py +20 -63
  180. tomwer/core/process/tests/__init__.py +0 -0
  181. tomwer/core/process/{test → tests}/test_conditions.py +1 -28
  182. tomwer/core/process/{test → tests}/test_dark_and_flat.py +1 -27
  183. tomwer/core/process/{test → tests}/test_data_listener.py +1 -27
  184. tomwer/core/process/{test → tests}/test_data_transfer.py +2 -28
  185. tomwer/core/process/{test → tests}/test_data_watcher.py +1 -27
  186. tomwer/core/process/{test → tests}/test_nabu.py +2 -33
  187. tomwer/core/process/{test → tests}/test_normalization.py +1 -26
  188. tomwer/core/process/{test → tests}/test_timer.py +1 -27
  189. tomwer/core/process/utils.py +2 -31
  190. tomwer/core/process/visualization/dataviewer.py +1 -26
  191. tomwer/core/process/visualization/diffviewer.py +1 -26
  192. tomwer/core/process/visualization/imagestackviewer.py +0 -26
  193. tomwer/core/process/visualization/radiostack.py +0 -26
  194. tomwer/core/process/visualization/samplemoved.py +0 -28
  195. tomwer/core/process/visualization/sinogramviewer.py +0 -27
  196. tomwer/core/process/visualization/slicestack.py +0 -28
  197. tomwer/core/process/visualization/tests/test_data_viewer.py +12 -0
  198. tomwer/core/process/visualization/tests/test_diff_viewer.py +12 -0
  199. tomwer/core/process/visualization/tests/test_image_stack_viewer.py +14 -0
  200. tomwer/core/process/visualization/tests/test_radio_stack.py +12 -0
  201. tomwer/core/process/visualization/tests/test_sample_moved.py +14 -0
  202. tomwer/core/process/visualization/tests/test_sinogram_viewer.py +13 -0
  203. tomwer/core/process/visualization/tests/test_slice_stack.py +13 -0
  204. tomwer/core/process/visualization/tests/test_volume_viewer.py +12 -0
  205. tomwer/core/process/visualization/volumeviewer.py +0 -29
  206. tomwer/core/scan/__init__.py +3 -27
  207. tomwer/core/scan/blissscan.py +5 -34
  208. tomwer/core/scan/edfscan.py +19 -53
  209. tomwer/core/scan/hdf5scan.py +2 -2
  210. tomwer/core/scan/nxtomoscan.py +48 -54
  211. tomwer/core/scan/scanbase.py +107 -203
  212. tomwer/core/scan/scanfactory.py +11 -41
  213. tomwer/core/scan/tests/__init__.py +0 -0
  214. tomwer/core/scan/tests/test_edf.py +25 -0
  215. tomwer/core/scan/tests/test_future_scan.py +35 -0
  216. tomwer/core/scan/tests/test_nxtomoscan.py +143 -0
  217. tomwer/core/scan/tests/test_process_registration.py +64 -0
  218. tomwer/core/settings.py +18 -40
  219. tomwer/core/tests/__init__.py +0 -0
  220. tomwer/core/tests/test_scanutils.py +26 -0
  221. tomwer/core/{test → tests}/test_utils.py +1 -28
  222. tomwer/core/tomwer_object.py +4 -0
  223. tomwer/core/utils/__init__.py +2 -0
  224. tomwer/core/utils/char.py +0 -28
  225. tomwer/core/utils/deprecation.py +12 -38
  226. tomwer/core/utils/dictutils.py +1 -3
  227. tomwer/core/utils/ftseriesutils.py +1 -27
  228. tomwer/core/utils/gpu.py +0 -28
  229. tomwer/core/utils/image.py +8 -39
  230. tomwer/core/utils/locker.py +1 -28
  231. tomwer/core/utils/logconfig.py +0 -27
  232. tomwer/core/utils/normalization.py +4 -31
  233. tomwer/core/utils/nxtomoutils.py +8 -38
  234. tomwer/core/utils/resource.py +0 -26
  235. tomwer/core/utils/scanutils.py +23 -52
  236. tomwer/core/utils/slurm.py +7 -30
  237. tomwer/core/utils/spec.py +6 -6
  238. tomwer/core/utils/tests/__init__.py +0 -0
  239. tomwer/core/utils/tests/test_image.py +30 -0
  240. tomwer/core/utils/tests/test_nxtomo.py +38 -0
  241. tomwer/core/utils/tests/test_scan_utils.py +46 -0
  242. tomwer/core/utils/tests/test_time.py +6 -0
  243. tomwer/core/utils/threads.py +0 -26
  244. tomwer/core/utils/time.py +0 -27
  245. tomwer/core/volume/__init__.py +4 -0
  246. tomwer/core/volume/edfvolume.py +1 -28
  247. tomwer/core/volume/hdf5volume.py +1 -28
  248. tomwer/core/volume/jp2kvolume.py +1 -27
  249. tomwer/core/volume/rawvolume.py +1 -28
  250. tomwer/core/volume/tests/test_volumes.py +21 -0
  251. tomwer/core/volume/tiffvolume.py +1 -28
  252. tomwer/core/volume/volumebase.py +5 -0
  253. tomwer/core/volume/volumefactory.py +7 -33
  254. tomwer/gui/__init__.py +0 -28
  255. tomwer/gui/cluster/__init__.py +2 -0
  256. tomwer/gui/cluster/slurm.py +297 -95
  257. tomwer/gui/cluster/supervisor.py +1 -27
  258. tomwer/gui/cluster/tests/__init__.py +0 -0
  259. tomwer/gui/cluster/{test → tests}/test_cluster.py +21 -26
  260. tomwer/gui/cluster/{test → tests}/test_supervisor.py +1 -27
  261. tomwer/gui/conditions/__init__.py +2 -0
  262. tomwer/gui/conditions/filter.py +1 -26
  263. tomwer/gui/configuration/__init__.py +2 -0
  264. tomwer/gui/control/__init__.py +2 -0
  265. tomwer/gui/control/actions.py +2 -28
  266. tomwer/gui/control/datadiscovery.py +4 -3
  267. tomwer/gui/control/datalist.py +64 -69
  268. tomwer/gui/control/datalistener.py +1 -39
  269. tomwer/gui/control/datareacheractions.py +1 -28
  270. tomwer/gui/control/datatransfert.py +2 -29
  271. tomwer/gui/control/datavalidator.py +3 -37
  272. tomwer/gui/control/datawatcher/__init__.py +0 -28
  273. tomwer/gui/control/datawatcher/configuration.py +1 -28
  274. tomwer/gui/control/datawatcher/datawatcher.py +3 -32
  275. tomwer/gui/control/datawatcher/datawatcherobserver.py +2 -28
  276. tomwer/gui/control/history.py +5 -35
  277. tomwer/gui/control/nxtomomill.py +3 -30
  278. tomwer/gui/control/observations.py +61 -55
  279. tomwer/gui/control/reducedarkflatselector.py +24 -20
  280. tomwer/gui/control/scanselectorwidget.py +2 -28
  281. tomwer/gui/control/selectorwidgetbase.py +17 -17
  282. tomwer/gui/control/series/__init__.py +0 -0
  283. tomwer/gui/control/{serie/seriecreator.py → series/seriescreator.py} +214 -235
  284. tomwer/gui/control/series/serieswaiter.py +0 -0
  285. tomwer/gui/control/series/test/test_creator.py +424 -0
  286. tomwer/gui/control/series/test/test_nxtomo_concatenate.py +21 -0
  287. tomwer/gui/control/singletomoobj.py +1 -1
  288. tomwer/gui/control/tests/__init__.py +0 -0
  289. tomwer/gui/control/tests/test_datalist.py +47 -0
  290. tomwer/gui/control/{test → tests}/test_datalistener.py +1 -28
  291. tomwer/gui/control/tests/test_datavalidator.py +27 -0
  292. tomwer/gui/control/{test → tests}/test_inputwidget.py +1 -27
  293. tomwer/gui/control/tests/test_process_manager.py +38 -0
  294. tomwer/gui/control/tests/test_scan_observations.py +23 -0
  295. tomwer/gui/control/tests/test_scanselector.py +42 -0
  296. tomwer/gui/control/{test → tests}/test_scanvalidator.py +1 -27
  297. tomwer/gui/control/{test → tests}/test_volume_dialog.py +2 -30
  298. tomwer/gui/control/{test → tests}/test_volumeselector.py +1 -27
  299. tomwer/gui/control/volumeselectorwidget.py +2 -30
  300. tomwer/gui/dataportal/__init__.py +2 -0
  301. tomwer/gui/{icat → dataportal}/createscreenshots.py +3 -2
  302. tomwer/gui/dataportal/gallery.py +133 -0
  303. tomwer/gui/dataportal/outputformat.py +0 -0
  304. tomwer/gui/dataportal/publish.py +96 -0
  305. tomwer/gui/dataportal/tests/test_create_screenshots_gui.py +23 -0
  306. tomwer/gui/dataportal/tests/test_gallery_gui.py +21 -0
  307. tomwer/gui/debugtools/__init__.py +2 -0
  308. tomwer/gui/debugtools/datasetgenerator.py +1 -30
  309. tomwer/gui/debugtools/objectinspector.py +1 -29
  310. tomwer/gui/dialog/QDataDialog.py +89 -0
  311. tomwer/gui/{qfolderdialog.py → dialog/QVolumeDialog.py} +8 -107
  312. tomwer/gui/dialog/__init__.py +1 -0
  313. tomwer/gui/edit/__init__.py +2 -0
  314. tomwer/gui/edit/dkrfpatch.py +52 -87
  315. tomwer/gui/edit/imagekeyeditor.py +18 -54
  316. tomwer/gui/edit/nxtomoeditor.py +113 -300
  317. tomwer/gui/edit/nxtomowarmer.py +3 -2
  318. tomwer/gui/edit/tests/__init__.py +0 -0
  319. tomwer/gui/edit/{test → tests}/test_dkrf_patch.py +3 -29
  320. tomwer/gui/edit/{test → tests}/test_image_key_editor.py +1 -27
  321. tomwer/gui/edit/{test → tests}/test_nx_editor.py +45 -23
  322. tomwer/gui/fonts.py +5 -0
  323. tomwer/gui/icons.py +28 -66
  324. tomwer/gui/illustrations.py +4 -34
  325. tomwer/gui/imagefromfile.py +5 -30
  326. tomwer/gui/metadataloader.py +36 -0
  327. tomwer/gui/qconfigfile.py +3 -0
  328. tomwer/gui/qlefilesystem.py +3 -0
  329. tomwer/gui/reconstruction/__init__.py +2 -0
  330. tomwer/gui/reconstruction/axis/AxisMainWindow.py +275 -0
  331. tomwer/gui/reconstruction/axis/AxisOptionsWidget.py +313 -0
  332. tomwer/gui/reconstruction/axis/AxisSettingsWidget.py +797 -0
  333. tomwer/gui/reconstruction/axis/AxisWidget.py +534 -0
  334. tomwer/gui/reconstruction/axis/CalculationWidget.py +218 -0
  335. tomwer/gui/reconstruction/axis/CompareImages.py +11 -44
  336. tomwer/gui/reconstruction/axis/ControlWidget.py +285 -0
  337. tomwer/gui/reconstruction/axis/EstimatedCORWidget.py +394 -0
  338. tomwer/gui/reconstruction/axis/EstimatedCorComboBox.py +118 -0
  339. tomwer/gui/reconstruction/axis/InputWidget.py +347 -0
  340. tomwer/gui/reconstruction/axis/ManualFramesSelection.py +168 -0
  341. tomwer/gui/reconstruction/axis/__init__.py +2 -2
  342. tomwer/gui/reconstruction/darkref/__init__.py +0 -27
  343. tomwer/gui/reconstruction/darkref/darkrefcopywidget.py +5 -34
  344. tomwer/gui/reconstruction/darkref/darkrefwidget.py +1 -27
  345. tomwer/gui/reconstruction/nabu/castvolume.py +40 -59
  346. tomwer/gui/reconstruction/nabu/check.py +7 -33
  347. tomwer/gui/reconstruction/nabu/nabuconfig/base.py +7 -34
  348. tomwer/gui/reconstruction/nabu/nabuconfig/ctf.py +6 -5
  349. tomwer/gui/reconstruction/nabu/nabuconfig/nabuconfig.py +10 -69
  350. tomwer/gui/reconstruction/nabu/nabuconfig/output.py +3 -47
  351. tomwer/gui/reconstruction/nabu/nabuconfig/phase.py +54 -36
  352. tomwer/gui/reconstruction/nabu/nabuconfig/preprocessing.py +103 -54
  353. tomwer/gui/reconstruction/nabu/nabuconfig/reconstruction.py +116 -65
  354. tomwer/gui/reconstruction/nabu/nabuflow.py +31 -61
  355. tomwer/gui/reconstruction/nabu/platform.py +94 -0
  356. tomwer/gui/reconstruction/nabu/slices.py +81 -45
  357. tomwer/gui/reconstruction/nabu/slurm.py +1 -27
  358. tomwer/gui/reconstruction/nabu/test/test_cast_volume.py +82 -0
  359. tomwer/gui/reconstruction/nabu/test/test_check.py +66 -0
  360. tomwer/gui/reconstruction/nabu/test/test_ctf.py +46 -0
  361. tomwer/gui/reconstruction/nabu/test/test_helical.py +21 -0
  362. tomwer/gui/reconstruction/nabu/test/test_nabu_preprocessing.py +81 -0
  363. tomwer/gui/reconstruction/nabu/volume.py +62 -90
  364. tomwer/gui/reconstruction/normalization/intensity.py +5 -32
  365. tomwer/gui/reconstruction/normalization/test/test_intensity.py +89 -0
  366. tomwer/gui/reconstruction/saaxis/corrangeselector.py +32 -56
  367. tomwer/gui/reconstruction/saaxis/dimensionwidget.py +56 -96
  368. tomwer/gui/reconstruction/saaxis/saaxis.py +17 -38
  369. tomwer/gui/reconstruction/saaxis/sliceselector.py +8 -39
  370. tomwer/gui/reconstruction/sadeltabeta/saadeltabeta.py +19 -37
  371. tomwer/gui/reconstruction/scores/control.py +2 -30
  372. tomwer/gui/reconstruction/scores/scoreplot.py +23 -49
  373. tomwer/gui/reconstruction/tests/__init__.py +0 -0
  374. tomwer/gui/reconstruction/{test → tests}/test_axis.py +23 -49
  375. tomwer/gui/reconstruction/{test → tests}/test_nabu.py +16 -31
  376. tomwer/gui/reconstruction/{test → tests}/test_saaxis.py +10 -37
  377. tomwer/gui/reconstruction/{test → tests}/test_sadeltabeta.py +1 -26
  378. tomwer/gui/samplemoved/__init__.py +2 -30
  379. tomwer/gui/samplemoved/selectiontable.py +3 -33
  380. tomwer/gui/settings.py +7 -0
  381. tomwer/gui/stackplot.py +33 -661
  382. tomwer/gui/stacks.py +261 -135
  383. tomwer/gui/stitching/SingleAxisStitchingWidget.py +326 -0
  384. tomwer/gui/stitching/StitchingOptionsWidget.py +438 -0
  385. tomwer/gui/stitching/StitchingWindow.py +586 -0
  386. tomwer/gui/stitching/__init__.py +2 -0
  387. tomwer/gui/stitching/alignment.py +90 -0
  388. tomwer/gui/stitching/axisorderedlist.py +44 -34
  389. tomwer/gui/stitching/config/axisparams.py +25 -11
  390. tomwer/gui/stitching/config/output.py +6 -5
  391. tomwer/gui/stitching/config/positionoveraxis.py +313 -51
  392. tomwer/gui/stitching/config/stitchingstrategies.py +22 -16
  393. tomwer/gui/stitching/config/tests/test_axisparams.py +25 -0
  394. tomwer/gui/stitching/config/tomoobjdetails.py +3 -5
  395. tomwer/gui/stitching/normalization.py +1 -0
  396. tomwer/gui/stitching/preview.py +59 -0
  397. tomwer/gui/stitching/singleaxis.py +57 -0
  398. tomwer/gui/stitching/stitchandbackground.py +3 -2
  399. tomwer/gui/stitching/stitching_preview.py +44 -36
  400. tomwer/gui/stitching/stitching_raw.py +5 -3
  401. tomwer/gui/stitching/tests/test_ZStitchingWindow.py +88 -0
  402. tomwer/gui/stitching/tests/test_axis_ordered_list.py +21 -0
  403. tomwer/gui/stitching/tests/test_normalization.py +27 -0
  404. tomwer/gui/stitching/tests/test_preview.py +68 -0
  405. tomwer/gui/stitching/tests/test_stitching_raw.py +110 -0
  406. tomwer/gui/stitching/tests/utils.py +92 -0
  407. tomwer/gui/stitching/utils.py +14 -0
  408. tomwer/gui/stitching/z_stitching/fineestimation.py +5 -33
  409. tomwer/gui/stitching/z_stitching/tests/test_fine_estimation.py +35 -0
  410. tomwer/gui/stitching/z_stitching/tests/test_raw_estimation.py +215 -0
  411. tomwer/gui/stitching/z_stitching/tests/test_stitching_window.py +51 -0
  412. tomwer/gui/tests/__init__.py +0 -0
  413. tomwer/gui/tests/test_axis_gui.py +43 -0
  414. tomwer/gui/{test → tests}/test_qfolder_dialog.py +1 -1
  415. tomwer/gui/utils/RangeWidget.py +44 -0
  416. tomwer/gui/utils/buttons.py +4 -3
  417. tomwer/gui/utils/completer.py +2 -33
  418. tomwer/gui/utils/flow.py +11 -40
  419. tomwer/gui/utils/gpu.py +60 -0
  420. tomwer/gui/utils/illustrations.py +1 -26
  421. tomwer/gui/utils/inputwidget.py +35 -73
  422. tomwer/gui/utils/lineselector/lineselector.py +9 -46
  423. tomwer/gui/utils/loadingmode.py +81 -0
  424. tomwer/gui/utils/qt_utils.py +9 -0
  425. tomwer/gui/utils/sandboxes.py +1 -26
  426. tomwer/gui/utils/scandescription.py +2 -31
  427. tomwer/gui/utils/scrollarea.py +6 -55
  428. tomwer/gui/utils/slider.py +4 -28
  429. tomwer/gui/utils/splashscreen.py +0 -28
  430. tomwer/gui/utils/step.py +14 -13
  431. tomwer/gui/utils/tests/test_completer.py +41 -0
  432. tomwer/gui/utils/tests/test_line_selector.py +21 -0
  433. tomwer/gui/utils/tests/test_splashscreen.py +8 -0
  434. tomwer/gui/utils/tests/test_vignettes.py +68 -0
  435. tomwer/gui/utils/unitsystem.py +15 -69
  436. tomwer/gui/utils/utils.py +4 -5
  437. tomwer/gui/utils/vignettes.py +10 -41
  438. tomwer/gui/utils/waiterthread.py +0 -26
  439. tomwer/gui/visualization/__init__.py +2 -0
  440. tomwer/gui/visualization/dataviewer.py +68 -421
  441. tomwer/gui/visualization/diffviewer/diffviewer.py +2 -30
  442. tomwer/gui/visualization/diffviewer/shiftwidget.py +4 -29
  443. tomwer/gui/visualization/fullscreenplot.py +5 -5
  444. tomwer/gui/visualization/imagestack.py +403 -0
  445. tomwer/gui/visualization/nxtomometadata.py +0 -4
  446. tomwer/gui/visualization/reconstructionparameters.py +14 -32
  447. tomwer/gui/visualization/scanoverview.py +33 -66
  448. tomwer/gui/visualization/sinogramviewer.py +2 -28
  449. tomwer/gui/visualization/test/__init__.py +0 -28
  450. tomwer/gui/visualization/test/test_dataviewer.py +1 -28
  451. tomwer/gui/visualization/test/test_diffviewer.py +1 -28
  452. tomwer/gui/visualization/test/test_nx_tomo_metadata_viewer.py +0 -5
  453. tomwer/gui/visualization/test/test_reconstruction_parameters.py +1 -27
  454. tomwer/gui/visualization/test/test_sinogramviewer.py +1 -28
  455. tomwer/gui/visualization/test/test_stacks.py +184 -115
  456. tomwer/gui/visualization/test/test_volumeviewer.py +3 -2
  457. tomwer/gui/visualization/tomoobjoverview.py +2 -2
  458. tomwer/gui/visualization/volumeoverview.py +3 -2
  459. tomwer/gui/visualization/volumeviewer.py +47 -43
  460. tomwer/io/__init__.py +2 -0
  461. tomwer/io/utils/h5pyutils.py +1 -27
  462. tomwer/io/utils/test/test_raw_and_processed_data.py +10 -0
  463. tomwer/io/utils/test/test_utils.py +67 -0
  464. tomwer/io/utils/utils.py +2 -31
  465. tomwer/resources/__init__.py +13 -33
  466. tomwer/resources/gui/icons/edit_downstream.svg +114 -0
  467. tomwer/resources/gui/icons/edit_upstream.svg +112 -0
  468. tomwer/resources/gui/icons/free_edition.svg +23 -0
  469. tomwer/resources/gui/icons/icat_gallery_opts.png +0 -0
  470. tomwer/resources/gui/icons/icat_gallery_opts.svg +80 -0
  471. tomwer/resources/gui/icons/search.png +0 -0
  472. tomwer/resources/gui/icons/search.svg +23 -0
  473. tomwer/resources/gui/icons/warning.png +0 -0
  474. tomwer/synctools/__init__.py +2 -0
  475. tomwer/synctools/axis.py +1 -27
  476. tomwer/synctools/darkref.py +1 -26
  477. tomwer/synctools/datalistener.py +1 -27
  478. tomwer/synctools/datatransfert.py +2 -27
  479. tomwer/synctools/imageloaderthread.py +1 -28
  480. tomwer/synctools/rsyncmanager.py +1 -25
  481. tomwer/synctools/saaxis.py +1 -26
  482. tomwer/synctools/sadeltabeta.py +1 -26
  483. tomwer/synctools/stacks/control/datalistener.py +1 -26
  484. tomwer/synctools/stacks/processingstack.py +4 -33
  485. tomwer/synctools/stacks/reconstruction/axis.py +6 -53
  486. tomwer/synctools/stacks/reconstruction/castvolume.py +12 -43
  487. tomwer/synctools/stacks/reconstruction/dkrefcopy.py +4 -27
  488. tomwer/synctools/stacks/reconstruction/nabu.py +3 -28
  489. tomwer/synctools/stacks/reconstruction/normalization.py +2 -27
  490. tomwer/synctools/stacks/reconstruction/saaxis.py +2 -27
  491. tomwer/synctools/stacks/reconstruction/sadeltabeta.py +2 -27
  492. tomwer/synctools/tests/__init__.py +0 -0
  493. tomwer/synctools/{test → tests}/test_darkRefs.py +16 -40
  494. tomwer/synctools/{test → tests}/test_foldertransfer.py +2 -33
  495. tomwer/synctools/utils/scanstages.py +2 -31
  496. tomwer/tests/__init__.py +1 -0
  497. tomwer/tests/app/test_stitching.py +95 -0
  498. tomwer/tests/datasets.py +1 -5
  499. tomwer/tests/orangecontrib/tomwer/widgets/cluster/tests/test_future_supervisorow.py +48 -0
  500. tomwer/tests/orangecontrib/tomwer/widgets/cluster/tests/test_slurm_clusterow.py +40 -0
  501. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_advancement.py +8 -0
  502. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_data_validator.py +55 -0
  503. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_datadiscovery.py +129 -0
  504. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_datalistener.py +111 -0
  505. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_dataselector.py +69 -0
  506. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_datawatcher.py +411 -0
  507. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_emailow.py +29 -0
  508. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_notifier.py +24 -0
  509. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_nxtomo_concatenate_ow.py +64 -0
  510. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_nxtomomill.py +133 -0
  511. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_reduce_dark_flat_selector.py +40 -0
  512. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_singletomoobj.py +40 -0
  513. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_timerow.py +25 -0
  514. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_tomoobj_series.py +96 -0
  515. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_volume_selector.py +69 -0
  516. orangecontrib/tomwer/widgets/edit/test/test_image_key_editor.py → tomwer/tests/orangecontrib/tomwer/widgets/debugtools/tests/test_dataset_generator.py +17 -16
  517. tomwer/tests/orangecontrib/tomwer/widgets/debugtools/tests/test_object_inspector.py +36 -0
  518. {orangecontrib/tomwer/widgets/edit/test → tomwer/tests/orangecontrib/tomwer/widgets/edit/tests}/test_dark_flat_patch.py +1 -27
  519. tomwer/tests/orangecontrib/tomwer/widgets/edit/tests/test_image_key_editor.py +30 -0
  520. tomwer/tests/orangecontrib/tomwer/widgets/edit/tests/test_nxtomo_editor.py +138 -0
  521. tomwer/tests/orangecontrib/tomwer/widgets/other/tests/test_pythonscript.py +31 -0
  522. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_axis.py +199 -0
  523. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_cast_volumeow.py +58 -0
  524. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_dark_refs_widget.py +136 -0
  525. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_delta_beta_selector.py +15 -0
  526. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_i_norm.py +200 -0
  527. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_nabu_helical_prepare_weights_double.py +20 -0
  528. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_nabu_volume.py +74 -0
  529. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_nabu_widget.py +107 -0
  530. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_sa_delta_beta.py +194 -0
  531. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_saaxis.py +194 -0
  532. tomwer/tests/orangecontrib/tomwer/widgets/stitching/tests/test_zstitching.py +313 -0
  533. tomwer/tests/orangecontrib/tomwer/widgets/tests/test_conditions.py +85 -0
  534. tomwer/tests/orangecontrib/tomwer/widgets/tests/test_darkref.py +225 -0
  535. tomwer/tests/orangecontrib/tomwer/widgets/tests/test_foldertransfert.py +105 -0
  536. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_dataviewerow.py +57 -0
  537. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_diffviewerow.py +39 -0
  538. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_nxtomo_metadata_viewer.py +29 -0
  539. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_radio_stackow.py +31 -0
  540. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_sample_movedow.py +46 -0
  541. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_sinogram_viewerow.py +31 -0
  542. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_slice_stackow.py +31 -0
  543. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_volume_viewerow.py +32 -0
  544. tomwer/tests/test_ewoks/test_conversion.py +104 -0
  545. tomwer/tests/test_ewoks/test_single_node_execution.py +87 -0
  546. tomwer/tests/test_ewoks/test_workflows.py +138 -0
  547. tomwer/utils.py +11 -39
  548. tomwer/version.py +2 -2
  549. {tomwer-1.3.26.dist-info → tomwer-1.4.0.dist-info}/LICENSE +3 -3
  550. tomwer-1.4.0.dist-info/METADATA +337 -0
  551. tomwer-1.4.0.dist-info/RECORD +912 -0
  552. {tomwer-1.3.26.dist-info → tomwer-1.4.0.dist-info}/WHEEL +1 -1
  553. {tomwer-1.3.26.dist-info → tomwer-1.4.0.dist-info}/entry_points.txt +1 -0
  554. orangecontrib/tomwer/widgets/control/DataListOW.py +0 -129
  555. orangecontrib/tomwer/widgets/control/TomoObjSerieOW.py +0 -86
  556. orangecontrib/tomwer/widgets/control/VolumeSymLinkOW.py +0 -182
  557. orangecontrib/tomwer/widgets/edit/test/test_nxtomo_editor.py +0 -141
  558. orangecontrib/tomwer/widgets/icat/PublishProcessedDataOW.py +0 -115
  559. orangecontrib/tomwer/widgets/icat/RawDataScreenshotCreatorOW.py +0 -98
  560. orangecontrib/tomwer/widgets/icat/SaveToGalleryAndPublishOW.py +0 -129
  561. orangecontrib/tomwer/widgets/icat/icons/add_gallery.png +0 -0
  562. orangecontrib/tomwer/widgets/icat/icons/add_gallery.svg +0 -82
  563. orangecontrib/tomwer/widgets/icat/icons/raw_screenshots.png +0 -0
  564. orangecontrib/tomwer/widgets/icat/icons/raw_screenshots.svg +0 -143
  565. orangecontrib/tomwer/widgets/visualization/LivesliceOW.py +0 -87
  566. orangecontrib/tomwer/widgets/visualization/icons/liveslice.png +0 -0
  567. orangecontrib/tomwer/widgets/visualization/icons/liveslice.svg +0 -110
  568. tomwer/core/log/logger.py +0 -130
  569. tomwer/core/process/control/test/test_volume_link.py +0 -74
  570. tomwer/core/process/control/tomoobjserie.py +0 -12
  571. tomwer/core/process/control/volumesymlink.py +0 -200
  572. tomwer/core/process/icat/createscreenshots.py +0 -100
  573. tomwer/core/process/icat/gallery.py +0 -377
  574. tomwer/core/process/icat/icatbase.py +0 -36
  575. tomwer/core/process/icat/publish.py +0 -228
  576. tomwer/core/process/icat/screenshots.py +0 -27
  577. tomwer/core/process/reconstruction/test/test_darkref.py +0 -60
  578. tomwer/core/process/reconstruction/test/test_sadeltabeta.py +0 -74
  579. tomwer/core/process/test/test_axis.py +0 -309
  580. tomwer/core/process/visualization/liveslice.py +0 -6
  581. tomwer/core/progress.py +0 -100
  582. tomwer/core/scan/test/test_edf.py +0 -53
  583. tomwer/core/scan/test/test_future_scan.py +0 -61
  584. tomwer/core/scan/test/test_h5.py +0 -96
  585. tomwer/core/scan/test/test_process_registration.py +0 -109
  586. tomwer/core/test/test_scanutils.py +0 -53
  587. tomwer/gui/control/emailnotifier.py +0 -174
  588. tomwer/gui/control/serie/seriewaiter.py +0 -28
  589. tomwer/gui/control/test/__init__.py +0 -28
  590. tomwer/gui/control/test/test_datalist.py +0 -96
  591. tomwer/gui/control/test/test_datavalidator.py +0 -54
  592. tomwer/gui/control/test/test_email.py +0 -35
  593. tomwer/gui/control/test/test_process_manager.py +0 -65
  594. tomwer/gui/control/test/test_scanselector.py +0 -67
  595. tomwer/gui/edit/test/__init__.py +0 -28
  596. tomwer/gui/icat/gallery.py +0 -214
  597. tomwer/gui/icat/publish.py +0 -187
  598. tomwer/gui/reconstruction/axis/axis.py +0 -733
  599. tomwer/gui/reconstruction/axis/radioaxis.py +0 -2467
  600. tomwer/gui/stitching/stitching.py +0 -1392
  601. tomwer/gui/test/__init__.py +0 -28
  602. tomwer/gui/test/test_axis_gui.py +0 -34
  603. tomwer/synctools/stacks/edit/darkflatpatch.py +0 -169
  604. tomwer/synctools/stacks/edit/imagekeyeditor.py +0 -135
  605. tomwer/third_part/WaitingOverlay.py +0 -110
  606. tomwer-1.3.26-py3.11-nspkg.pth +0 -1
  607. tomwer-1.3.26.dist-info/METADATA +0 -292
  608. tomwer-1.3.26.dist-info/RECORD +0 -785
  609. tomwer-1.3.26.dist-info/namespace_packages.txt +0 -1
  610. /orangecontrib/tomwer/{widgets/edit/test → tests}/__init__.py +0 -0
  611. {tomwer/core/process/control/test → orangecontrib/tomwer/tutorials/id16b}/__init__.py +0 -0
  612. {tomwer/core/process/icat → orangecontrib/tomwer/widgets/cluster/tests}/__init__.py +0 -0
  613. /orangecontrib/tomwer/widgets/control/icons/{tomoobjserie.png → tomoobjseries.png} +0 -0
  614. {tomwer/core/process/reconstruction/test → orangecontrib/tomwer/widgets/control/tests}/__init__.py +0 -0
  615. /orangecontrib/tomwer/widgets/{icat → dataportal}/icons/publish_processed_data.png +0 -0
  616. /orangecontrib/tomwer/widgets/{icat → dataportal}/icons/publish_processed_data.svg +0 -0
  617. {tomwer/core/process/test → orangecontrib/tomwer/widgets/debugtools/tests}/__init__.py +0 -0
  618. {tomwer/core/scan/test → orangecontrib/tomwer/widgets/edit/tests}/__init__.py +0 -0
  619. {tomwer/core/test → orangecontrib/tomwer/widgets/other/tests}/__init__.py +0 -0
  620. {tomwer/gui/cluster/test → orangecontrib/tomwer/widgets/reconstruction/tests}/__init__.py +0 -0
  621. {tomwer/gui/control/serie → orangecontrib/tomwer/widgets/stitching/tests}/__init__.py +0 -0
  622. {tomwer/gui/icat → orangecontrib/tomwer/widgets/tests}/__init__.py +0 -0
  623. {tomwer/gui/reconstruction/test → orangecontrib/tomwer/widgets/visualization/tests}/__init__.py +0 -0
  624. /tomwer/{synctools/stacks/edit → app/stitching}/__init__.py +0 -0
  625. /tomwer/{synctools/test → core/process/control/tests}/__init__.py +0 -0
  626. /tomwer/core/process/control/{test → tests}/test_email.py +0 -0
  627. /tomwer/core/process/control/{test → tests}/test_h52nx_process.py +0 -0
  628. /tomwer/{third_part → core/process/drac}/__init__.py +0 -0
  629. /tomwer/core/process/reconstruction/{test → tests}/test_axis_params.py +0 -0
  630. /tomwer/core/process/reconstruction/{test → tests}/test_darkref_copy.py +0 -0
  631. /tomwer/core/process/reconstruction/{test → tests}/test_paramsbase.py +0 -0
  632. /tomwer/core/scan/{test → tests}/test_scan.py +0 -0
  633. /tomwer/gui/control/{serie → series}/nxtomoconcatenate.py +0 -0
  634. /tomwer/gui/control/{test → tests}/test_datadiscovery.py +0 -0
  635. /tomwer/gui/control/{test → tests}/test_reducedarkflat_selector.py +0 -0
  636. /tomwer/gui/control/{test → tests}/test_single_tomo_obj.py +0 -0
  637. {orangecontrib/tomwer/widgets/edit/test → tomwer/tests/orangecontrib/tomwer/widgets/edit/tests}/test_image_key_upgrader.py +0 -0
  638. {tomwer-1.3.26.dist-info → tomwer-1.4.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,138 @@
1
+ # coding: utf-8
2
+ from __future__ import annotations
3
+
4
+
5
+ import os
6
+ import tempfile
7
+ from glob import glob
8
+
9
+ from ewoks import execute_graph
10
+ from ewokscore.graph import analysis, load_graph
11
+ from ewokscore.graph.validate import validate_graph
12
+
13
+ from tomwer.core.utils.scanutils import HDF5MockContext
14
+ from tomwer.core.process.reconstruction.output import (
15
+ PROCESS_FOLDER_RECONSTRUCTED_VOLUMES,
16
+ )
17
+
18
+ try:
19
+ from nabu.pipeline.fullfield.reconstruction import ( # noqa F401
20
+ FullFieldReconstructor,
21
+ )
22
+ except ImportError:
23
+ try:
24
+ from nabu.pipeline.fullfield.local_reconstruction import ( # noqa F401
25
+ ChunkedReconstructor,
26
+ )
27
+ except ImportError:
28
+ has_nabu = False
29
+ else:
30
+ has_nabu = True
31
+ else:
32
+ has_nabu = True
33
+
34
+
35
+ def test_simple_workflow_nabu():
36
+ """Test the workflow: darkref -> axis -> nabu slices -> nabu volume"""
37
+
38
+ with HDF5MockContext(
39
+ scan_path=os.path.join(tempfile.mkdtemp(), "scan_test"), n_proj=100
40
+ ) as scan:
41
+ # insure no cfg yet
42
+ assert len(glob(os.path.join(scan.path, "*.cfg"))) == 0
43
+ assert not os.path.exists(
44
+ scan.process_file
45
+ ), "check tomwer should not have been processed yet"
46
+
47
+ graph = load_graph(
48
+ source={
49
+ "nodes": [
50
+ {
51
+ "id": "darkref",
52
+ "task_type": "class",
53
+ "task_identifier": "tomwer.core.process.reconstruction.darkref.darkrefs.DarkRefs",
54
+ },
55
+ {
56
+ "id": "axis",
57
+ "task_type": "class",
58
+ "task_identifier": "tomwer.core.process.reconstruction.axis.axis.AxisTask",
59
+ "default_inputs": [
60
+ {
61
+ "name": "axis_params",
62
+ "value": {
63
+ "MODE": "manual",
64
+ "POSITION_VALUE": 0.2,
65
+ },
66
+ },
67
+ ],
68
+ },
69
+ {
70
+ "id": "nabu slices",
71
+ "task_type": "class",
72
+ "task_identifier": "tomwer.core.process.reconstruction.nabu.nabuslices.NabuSlices",
73
+ "dry_run": True, # as this is a mock dataset avoid to reconstruct it and only check for the .cfg file created
74
+ "default_inputs": [
75
+ {
76
+ "name": "nabu_params",
77
+ "value": {"tomwer_slices": 2},
78
+ }
79
+ ],
80
+ },
81
+ {
82
+ "id": "nabu volume",
83
+ "task_type": "class",
84
+ "task_identifier": "tomwer.core.process.reconstruction.nabu.nabuvolume.NabuVolume",
85
+ "dry_run": True,
86
+ "default_inputs": [
87
+ {
88
+ "name": "dry_run",
89
+ "value": True,
90
+ }
91
+ ],
92
+ },
93
+ ],
94
+ "links": [
95
+ {
96
+ "source": "darkref",
97
+ "target": "axis",
98
+ "map_all_data": True,
99
+ },
100
+ {
101
+ "source": "axis",
102
+ "target": "nabu slices",
103
+ "data_mapping": [ # same as all arguments but just here to test both
104
+ {
105
+ "source_output": "data",
106
+ "target_input": "data",
107
+ },
108
+ ],
109
+ },
110
+ {
111
+ "source": "nabu slices",
112
+ "target": "nabu volume",
113
+ "map_all_data": True,
114
+ },
115
+ ],
116
+ }
117
+ )
118
+ assert graph.is_cyclic is False, "graph is expected to be acyclic"
119
+ assert analysis.start_nodes(graph=graph.graph) == {
120
+ "darkref"
121
+ }, "start node should be a single task `darkref`"
122
+ validate_graph(graph.graph)
123
+ result = execute_graph(
124
+ graph,
125
+ inputs=[
126
+ {"id": "darkref", "name": "data", "value": scan},
127
+ ],
128
+ )
129
+ assert analysis.end_nodes(graph=graph.graph) == {
130
+ "nabu volume"
131
+ }, "should only have one result nodes"
132
+ assert "data" in result, f"cannot find `nabu volume` in {result}"
133
+ assert os.path.exists(scan.process_file), "check tomwer has been processed"
134
+ assert os.path.exists(
135
+ os.path.join(
136
+ scan.path, PROCESS_FOLDER_RECONSTRUCTED_VOLUMES, "nabu_cfg_files"
137
+ )
138
+ ), "nabu has not been executed (even in dry mode)"
tomwer/utils.py CHANGED
@@ -1,35 +1,9 @@
1
1
  # coding: utf-8
2
- # /*##########################################################################
3
- #
4
- # Copyright (c) 2016 European Synchrotron Radiation Facility
5
- #
6
- # Permission is hereby granted, free of charge, to any person obtaining a copy
7
- # of this software and associated documentation files (the "Software"), to deal
8
- # in the Software without restriction, including without limitation the rights
9
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
- # copies of the Software, and to permit persons to whom the Software is
11
- # furnished to do so, subject to the following conditions:
12
- #
13
- # The above copyright notice and this permission notice shall be included in
14
- # all copies or substantial portions of the Software.
15
- #
16
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
- # THE SOFTWARE.
23
- #
24
- # ###########################################################################*/
25
2
  """
26
3
  some project general utils functions
27
4
  """
28
5
 
29
- __authors__ = ["H. Payno", "T. Vincent"]
30
- __license__ = "MIT"
31
- __date__ = "04/01/2018"
32
-
6
+ from __future__ import annotations
33
7
 
34
8
  import argparse
35
9
  import functools
@@ -103,14 +77,14 @@ class Launcher(_Launcher):
103
77
  self, prog=None, usage=None, description=None, epilog=None, version=None
104
78
  ):
105
79
  """
106
- :param str prog: Name of the program. If it is not defined it uses the
80
+ :param prog: Name of the program. If it is not defined it uses the
107
81
  first argument of `sys.argv`
108
- :param str usage: Custom the string explaining the usage. Else it is
82
+ :param usage: Custom the string explaining the usage. Else it is
109
83
  autogenerated.
110
- :param str description: Description of the application displayed after the
84
+ :param description: Description of the application displayed after the
111
85
  usage.
112
- :param str epilog: Custom the string displayed at the end of the help.
113
- :param str version: Define the version of the application.
86
+ :param epilog: Custom the string displayed at the end of the help.
87
+ :param version: Define the version of the application.
114
88
  """
115
89
  if prog is None:
116
90
  prog = sys.argv[0]
@@ -134,9 +108,9 @@ class Launcher(_Launcher):
134
108
 
135
109
  See also `LauncherCommand`.
136
110
 
137
- :param str name: Name of the command
138
- :param str module_name: Module to execute
139
- :param str description: Description of the command
111
+ :param name: Name of the command
112
+ :param module_name: Module to execute
113
+ :param description: Description of the command
140
114
  :param LauncherCommand command: A `LauncherCommand`
141
115
  """
142
116
  if command is not None:
@@ -173,9 +147,8 @@ class Launcher(_Launcher):
173
147
  def execute_help(self, argv):
174
148
  """Execute the help command.
175
149
 
176
- :param list[str] argv: The list of arguments (the first one is the
150
+ :param argv: The list of arguments (the first one is the
177
151
  name of the application with the help command)
178
- :rtype: int
179
152
  :returns: The execution status
180
153
  """
181
154
  description = "Display help information about %s" % self.prog
@@ -210,9 +183,8 @@ class Launcher(_Launcher):
210
183
  def execute(self, argv=None):
211
184
  """Execute the launcher.
212
185
 
213
- :param list[str] argv: The list of arguments (the first one is the
186
+ :param argv: The list of arguments (the first one is the
214
187
  name of the application)
215
- :rtype: int
216
188
  :returns: The execution status
217
189
  """
218
190
  if argv is None:
tomwer/version.py CHANGED
@@ -76,8 +76,8 @@ RELEASE_LEVEL_VALUE = {
76
76
  }
77
77
 
78
78
  MAJOR = 1
79
- MINOR = 3
80
- MICRO = 26
79
+ MINOR = 4
80
+ MICRO = 0
81
81
  RELEV = "final" # <16
82
82
  SERIAL = 0 # <16
83
83
 
@@ -1,9 +1,9 @@
1
1
 
2
- The tomwer library goal is to provide some usefull process for acquisition/reconstruction automation.
2
+ The Tomwer library goal is to provide some useful process for acquisition/reconstruction automation.
3
3
 
4
- tomwer is distributed under the MIT license.
4
+ Tomwer is distributed under the MIT license.
5
5
 
6
- tomwer is using the Qt library. A word of caution is to be provided. If users develop and distribute software using modules accessing Qt by means of Riverbank Computing Qt bindings PyQt4 or PyQt5, those users will be conditioned by the license of their PyQt4/5 software (GPL or commercial). If the end user does not own a commercial license of PyQt4 or PyQt5 and wishes to be free of any distribution condition, (s)he should be able to use PySide because it uses the LGPL license.
6
+ Tomwer is using the Qt library. A word of caution is to be provided. If users develop and distribute software using modules accessing Qt by means of Riverbank Computing Qt bindings PyQt4 or PyQt5, those users will be conditioned by the license of their PyQt4/5 software (GPL or commercial). If the end user does not own a commercial license of PyQt4 or PyQt5 and wishes to be free of any distribution condition, (s)he should be able to use PySide because it uses the LGPL license.
7
7
 
8
8
  It can also be used as an Orange3 add-on. If you wan't to distribute Orange you must stick to there license (GNU [GPL-3.0]+ license)
9
9
 
@@ -0,0 +1,337 @@
1
+ Metadata-Version: 2.1
2
+ Name: tomwer
3
+ Version: 1.4.0
4
+ Summary: "tomography workflow tools"
5
+ Home-page: https://gitlab.esrf.fr/tomotools/tomwer
6
+ Author: Henri Payno, Pierre Paleo, Pierre-Olivier Autran, Jérôme Lesaint, Alessandro Mirone
7
+ Author-email: henri.payno@esrf.fr, pierre.paleo@esrf.fr, pierre-olivier.autran@esrf.fr, jerome.lesaint@esrf.fr, mirone@esrf.fr
8
+ License: MIT
9
+ Project-URL: Bug Tracker, https://gitlab.esrf.fr/tomotools/tomwer/-/issues
10
+ Keywords: orange3 add-on,ewoks
11
+ Classifier: Intended Audience :: Education
12
+ Classifier: Intended Audience :: Science/Research
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Environment :: Console
16
+ Classifier: Environment :: X11 Applications :: Qt
17
+ Classifier: Operating System :: POSIX
18
+ Classifier: Natural Language :: English
19
+ Classifier: Topic :: Scientific/Engineering :: Physics
20
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
21
+ Requires-Python: >=3.6
22
+ Description-Content-Type: text/x-rst
23
+ License-File: LICENSE
24
+ Requires-Dist: numpy
25
+ Requires-Dist: setuptools
26
+ Requires-Dist: psutil
27
+ Requires-Dist: silx[full]>=2.0
28
+ Requires-Dist: tomoscan>=2.1.0a18
29
+ Requires-Dist: nxtomo>=1.3.0dev4
30
+ Requires-Dist: nxtomomill>=1.1.0a0
31
+ Requires-Dist: processview>=1.4.3
32
+ Requires-Dist: ewoks>=0.1.1
33
+ Requires-Dist: sluurp>=0.4.1
34
+ Requires-Dist: packaging
35
+ Requires-Dist: flufl-lock
36
+ Requires-Dist: pyunitsystem>=2.0.0a
37
+ Requires-Dist: tqdm
38
+ Provides-Extra: full-base
39
+ Requires-Dist: orange-canvas-core; extra == "full-base"
40
+ Requires-Dist: orange-widget-base; extra == "full-base"
41
+ Requires-Dist: ewoks[orange]>=0.1.1; extra == "full-base"
42
+ Requires-Dist: ewoksorange>=0.7.0rc0; extra == "full-base"
43
+ Requires-Dist: rsyncmanager; extra == "full-base"
44
+ Requires-Dist: fabio; extra == "full-base"
45
+ Requires-Dist: h5py>=3; extra == "full-base"
46
+ Requires-Dist: lxml; extra == "full-base"
47
+ Requires-Dist: werkzeug; extra == "full-base"
48
+ Requires-Dist: json-rpc; extra == "full-base"
49
+ Requires-Dist: scipy; extra == "full-base"
50
+ Requires-Dist: Pillow; extra == "full-base"
51
+ Requires-Dist: glymur; extra == "full-base"
52
+ Requires-Dist: resource; extra == "full-base"
53
+ Requires-Dist: tifffile; extra == "full-base"
54
+ Requires-Dist: hdf5plugin; extra == "full-base"
55
+ Requires-Dist: pyicat_plus; extra == "full-base"
56
+ Requires-Dist: ewoksnotify[full]; extra == "full-base"
57
+ Requires-Dist: pyicat_plus; extra == "full-base"
58
+ Provides-Extra: full-no-nabu
59
+ Requires-Dist: orange-canvas-core; extra == "full-no-nabu"
60
+ Requires-Dist: orange-widget-base; extra == "full-no-nabu"
61
+ Requires-Dist: ewoks[orange]>=0.1.1; extra == "full-no-nabu"
62
+ Requires-Dist: ewoksorange>=0.7.0rc0; extra == "full-no-nabu"
63
+ Requires-Dist: rsyncmanager; extra == "full-no-nabu"
64
+ Requires-Dist: fabio; extra == "full-no-nabu"
65
+ Requires-Dist: h5py>=3; extra == "full-no-nabu"
66
+ Requires-Dist: lxml; extra == "full-no-nabu"
67
+ Requires-Dist: werkzeug; extra == "full-no-nabu"
68
+ Requires-Dist: json-rpc; extra == "full-no-nabu"
69
+ Requires-Dist: scipy; extra == "full-no-nabu"
70
+ Requires-Dist: Pillow; extra == "full-no-nabu"
71
+ Requires-Dist: glymur; extra == "full-no-nabu"
72
+ Requires-Dist: resource; extra == "full-no-nabu"
73
+ Requires-Dist: tifffile; extra == "full-no-nabu"
74
+ Requires-Dist: hdf5plugin; extra == "full-no-nabu"
75
+ Requires-Dist: pyicat_plus; extra == "full-no-nabu"
76
+ Requires-Dist: ewoksnotify[full]; extra == "full-no-nabu"
77
+ Requires-Dist: pyicat_plus; extra == "full-no-nabu"
78
+ Provides-Extra: full-no-cuda
79
+ Requires-Dist: orange-canvas-core; extra == "full-no-cuda"
80
+ Requires-Dist: orange-widget-base; extra == "full-no-cuda"
81
+ Requires-Dist: ewoks[orange]>=0.1.1; extra == "full-no-cuda"
82
+ Requires-Dist: ewoksorange>=0.7.0rc0; extra == "full-no-cuda"
83
+ Requires-Dist: rsyncmanager; extra == "full-no-cuda"
84
+ Requires-Dist: fabio; extra == "full-no-cuda"
85
+ Requires-Dist: h5py>=3; extra == "full-no-cuda"
86
+ Requires-Dist: lxml; extra == "full-no-cuda"
87
+ Requires-Dist: werkzeug; extra == "full-no-cuda"
88
+ Requires-Dist: json-rpc; extra == "full-no-cuda"
89
+ Requires-Dist: scipy; extra == "full-no-cuda"
90
+ Requires-Dist: Pillow; extra == "full-no-cuda"
91
+ Requires-Dist: glymur; extra == "full-no-cuda"
92
+ Requires-Dist: resource; extra == "full-no-cuda"
93
+ Requires-Dist: tifffile; extra == "full-no-cuda"
94
+ Requires-Dist: hdf5plugin; extra == "full-no-cuda"
95
+ Requires-Dist: pyicat_plus; extra == "full-no-cuda"
96
+ Requires-Dist: ewoksnotify[full]; extra == "full-no-cuda"
97
+ Requires-Dist: pyicat_plus; extra == "full-no-cuda"
98
+ Requires-Dist: nabu>=2023.3.1dev; extra == "full-no-cuda"
99
+ Provides-Extra: full
100
+ Requires-Dist: orange-canvas-core; extra == "full"
101
+ Requires-Dist: orange-widget-base; extra == "full"
102
+ Requires-Dist: ewoks[orange]>=0.1.1; extra == "full"
103
+ Requires-Dist: ewoksorange>=0.7.0rc0; extra == "full"
104
+ Requires-Dist: rsyncmanager; extra == "full"
105
+ Requires-Dist: fabio; extra == "full"
106
+ Requires-Dist: h5py>=3; extra == "full"
107
+ Requires-Dist: lxml; extra == "full"
108
+ Requires-Dist: werkzeug; extra == "full"
109
+ Requires-Dist: json-rpc; extra == "full"
110
+ Requires-Dist: scipy; extra == "full"
111
+ Requires-Dist: Pillow; extra == "full"
112
+ Requires-Dist: glymur; extra == "full"
113
+ Requires-Dist: resource; extra == "full"
114
+ Requires-Dist: tifffile; extra == "full"
115
+ Requires-Dist: hdf5plugin; extra == "full"
116
+ Requires-Dist: pyicat_plus; extra == "full"
117
+ Requires-Dist: ewoksnotify[full]; extra == "full"
118
+ Requires-Dist: pyicat_plus; extra == "full"
119
+ Requires-Dist: nabu[full]>=2023.3.1dev; extra == "full"
120
+ Requires-Dist: pycuda<2024.1.1; extra == "full"
121
+ Requires-Dist: scikit-cuda; extra == "full"
122
+ Provides-Extra: doc
123
+ Requires-Dist: orange-canvas-core; extra == "doc"
124
+ Requires-Dist: orange-widget-base; extra == "doc"
125
+ Requires-Dist: ewoks[orange]>=0.1.1; extra == "doc"
126
+ Requires-Dist: ewoksorange>=0.7.0rc0; extra == "doc"
127
+ Requires-Dist: rsyncmanager; extra == "doc"
128
+ Requires-Dist: fabio; extra == "doc"
129
+ Requires-Dist: h5py>=3; extra == "doc"
130
+ Requires-Dist: lxml; extra == "doc"
131
+ Requires-Dist: werkzeug; extra == "doc"
132
+ Requires-Dist: json-rpc; extra == "doc"
133
+ Requires-Dist: scipy; extra == "doc"
134
+ Requires-Dist: Pillow; extra == "doc"
135
+ Requires-Dist: glymur; extra == "doc"
136
+ Requires-Dist: resource; extra == "doc"
137
+ Requires-Dist: tifffile; extra == "doc"
138
+ Requires-Dist: hdf5plugin; extra == "doc"
139
+ Requires-Dist: pyicat_plus; extra == "doc"
140
+ Requires-Dist: ewoksnotify[full]; extra == "doc"
141
+ Requires-Dist: pyicat_plus; extra == "doc"
142
+ Requires-Dist: nabu>=2023.3.1dev; extra == "doc"
143
+ Requires-Dist: Sphinx>=4.0.0; extra == "doc"
144
+ Requires-Dist: nbsphinx; extra == "doc"
145
+ Requires-Dist: pandoc; extra == "doc"
146
+ Requires-Dist: jupyterlab; extra == "doc"
147
+ Requires-Dist: pydata_sphinx_theme; extra == "doc"
148
+ Requires-Dist: sphinx-design; extra == "doc"
149
+ Requires-Dist: sphinx-autodoc-typehints; extra == "doc"
150
+ Requires-Dist: sphinxcontrib-youtube; extra == "doc"
151
+ Provides-Extra: dev-spec
152
+ Requires-Dist: black; extra == "dev-spec"
153
+ Requires-Dist: flake8; extra == "dev-spec"
154
+ Requires-Dist: timeout-decorator; extra == "dev-spec"
155
+ Requires-Dist: pyopencl; extra == "dev-spec"
156
+ Provides-Extra: dev
157
+ Requires-Dist: orange-canvas-core; extra == "dev"
158
+ Requires-Dist: orange-widget-base; extra == "dev"
159
+ Requires-Dist: ewoks[orange]>=0.1.1; extra == "dev"
160
+ Requires-Dist: ewoksorange>=0.7.0rc0; extra == "dev"
161
+ Requires-Dist: rsyncmanager; extra == "dev"
162
+ Requires-Dist: fabio; extra == "dev"
163
+ Requires-Dist: h5py>=3; extra == "dev"
164
+ Requires-Dist: lxml; extra == "dev"
165
+ Requires-Dist: werkzeug; extra == "dev"
166
+ Requires-Dist: json-rpc; extra == "dev"
167
+ Requires-Dist: scipy; extra == "dev"
168
+ Requires-Dist: Pillow; extra == "dev"
169
+ Requires-Dist: glymur; extra == "dev"
170
+ Requires-Dist: resource; extra == "dev"
171
+ Requires-Dist: tifffile; extra == "dev"
172
+ Requires-Dist: hdf5plugin; extra == "dev"
173
+ Requires-Dist: pyicat_plus; extra == "dev"
174
+ Requires-Dist: ewoksnotify[full]; extra == "dev"
175
+ Requires-Dist: pyicat_plus; extra == "dev"
176
+ Requires-Dist: nabu[full]>=2023.3.1dev; extra == "dev"
177
+ Requires-Dist: pycuda<2024.1.1; extra == "dev"
178
+ Requires-Dist: scikit-cuda; extra == "dev"
179
+ Requires-Dist: black; extra == "dev"
180
+ Requires-Dist: flake8; extra == "dev"
181
+ Requires-Dist: timeout-decorator; extra == "dev"
182
+ Requires-Dist: pyopencl; extra == "dev"
183
+ Provides-Extra: dev-no-cuda
184
+ Requires-Dist: orange-canvas-core; extra == "dev-no-cuda"
185
+ Requires-Dist: orange-widget-base; extra == "dev-no-cuda"
186
+ Requires-Dist: ewoks[orange]>=0.1.1; extra == "dev-no-cuda"
187
+ Requires-Dist: ewoksorange>=0.7.0rc0; extra == "dev-no-cuda"
188
+ Requires-Dist: rsyncmanager; extra == "dev-no-cuda"
189
+ Requires-Dist: fabio; extra == "dev-no-cuda"
190
+ Requires-Dist: h5py>=3; extra == "dev-no-cuda"
191
+ Requires-Dist: lxml; extra == "dev-no-cuda"
192
+ Requires-Dist: werkzeug; extra == "dev-no-cuda"
193
+ Requires-Dist: json-rpc; extra == "dev-no-cuda"
194
+ Requires-Dist: scipy; extra == "dev-no-cuda"
195
+ Requires-Dist: Pillow; extra == "dev-no-cuda"
196
+ Requires-Dist: glymur; extra == "dev-no-cuda"
197
+ Requires-Dist: resource; extra == "dev-no-cuda"
198
+ Requires-Dist: tifffile; extra == "dev-no-cuda"
199
+ Requires-Dist: hdf5plugin; extra == "dev-no-cuda"
200
+ Requires-Dist: pyicat_plus; extra == "dev-no-cuda"
201
+ Requires-Dist: ewoksnotify[full]; extra == "dev-no-cuda"
202
+ Requires-Dist: pyicat_plus; extra == "dev-no-cuda"
203
+ Requires-Dist: nabu>=2023.3.1dev; extra == "dev-no-cuda"
204
+ Requires-Dist: black; extra == "dev-no-cuda"
205
+ Requires-Dist: flake8; extra == "dev-no-cuda"
206
+ Requires-Dist: timeout-decorator; extra == "dev-no-cuda"
207
+ Requires-Dist: pyopencl; extra == "dev-no-cuda"
208
+ Provides-Extra: test
209
+ Requires-Dist: orange-canvas-core; extra == "test"
210
+ Requires-Dist: orange-widget-base; extra == "test"
211
+ Requires-Dist: ewoks[orange]>=0.1.1; extra == "test"
212
+ Requires-Dist: ewoksorange>=0.7.0rc0; extra == "test"
213
+ Requires-Dist: rsyncmanager; extra == "test"
214
+ Requires-Dist: fabio; extra == "test"
215
+ Requires-Dist: h5py>=3; extra == "test"
216
+ Requires-Dist: lxml; extra == "test"
217
+ Requires-Dist: werkzeug; extra == "test"
218
+ Requires-Dist: json-rpc; extra == "test"
219
+ Requires-Dist: scipy; extra == "test"
220
+ Requires-Dist: Pillow; extra == "test"
221
+ Requires-Dist: glymur; extra == "test"
222
+ Requires-Dist: resource; extra == "test"
223
+ Requires-Dist: tifffile; extra == "test"
224
+ Requires-Dist: hdf5plugin; extra == "test"
225
+ Requires-Dist: pyicat_plus; extra == "test"
226
+ Requires-Dist: ewoksnotify[full]; extra == "test"
227
+ Requires-Dist: pyicat_plus; extra == "test"
228
+ Requires-Dist: nabu>=2023.3.1dev; extra == "test"
229
+ Requires-Dist: pytest-asyncio; extra == "test"
230
+ Requires-Dist: tomoscan[test]>=2.1.0a18; extra == "test"
231
+ Provides-Extra: setup-requires
232
+ Requires-Dist: setuptools; extra == "setup-requires"
233
+ Requires-Dist: numpy>=1.12; extra == "setup-requires"
234
+
235
+ .. image:: doc/img/tomwer.png
236
+ :alt: Tomwer Logo
237
+ :align: left
238
+ :width: 400px
239
+
240
+ Introduction
241
+ ------------
242
+
243
+ **Tomwer** provides tools to automate acquisition and reconstruction processes for tomography. The package includes:
244
+
245
+ - A library to individually access each acquisition process.
246
+ - Graphical User Interface (GUI) applications to control key processes such as reconstruction and data transfer, which can be executed as standalone applications.
247
+ - An Orange add-on to help users define custom workflows (`Orange3 <http://orange.biolab.si>`_).
248
+
249
+ Tomwer relies on `Nabu <https://gitlab.esrf.fr/tomotools/nabu>`_ for tomographic reconstruction.
250
+
251
+ **Note**: Currently, the software is only compatible with Linux.
252
+
253
+ Documentation
254
+ -------------
255
+
256
+ The latest version of the documentation is available `here <https://tomotools.gitlab-pages.esrf.fr/tomwer/>`_.
257
+
258
+ Installation
259
+ ------------
260
+
261
+ Step 1: Installing Tomwer
262
+ '''''''''''''''''''''''''
263
+
264
+ To install Tomwer with all features:
265
+
266
+ .. code-block:: bash
267
+
268
+ pip install tomwer[full]
269
+
270
+ Alternatively, you can install the latest development branch from the repository:
271
+
272
+ .. code-block:: bash
273
+
274
+ pip install git+https://gitlab.esrf.fr/tomotools/tomwer/#egg=tomwer[full]
275
+
276
+
277
+ Step 2: (Optional) Update Orange-CANVAS-CORE and Orange-WIDGET-BASE
278
+ ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
279
+
280
+ If you need access to additional 'processing' wheels and 'reprocess action,' you may want to update these Orange forks. This is optional, as the project works with the native Orange libraries.
281
+
282
+ .. code-block:: bash
283
+
284
+ pip install git+https://github.com/payno/orange-canvas-core --no-deps --upgrade
285
+ pip install git+https://github.com/payno/orange-widget-base --no-deps --upgrade
286
+
287
+
288
+ Launching Applications
289
+ -----------------------
290
+
291
+ After installation, Tomwer includes several applications. You can launch an application by running:
292
+
293
+ .. code-block:: bash
294
+
295
+ tomwer <appName> [options]
296
+
297
+ - If you run `tomwer` without arguments, a manual page will be displayed.
298
+ - For application-specific help, run:
299
+
300
+ .. code-block:: bash
301
+
302
+ tomwer <appName> --help
303
+
304
+
305
+ Tomwer Canvas - Orange Canvas
306
+ -----------------------------
307
+
308
+ You can launch the Orange canvas to create workflows using the available building blocks:
309
+
310
+ .. code-block:: bash
311
+
312
+ tomwer canvas
313
+
314
+ - Alternatively, you can use `orange-canvas`.
315
+ - If you're using a virtual environment, remember to activate it:
316
+
317
+ .. code-block:: bash
318
+
319
+ source myvirtualenv/bin/activate
320
+
321
+
322
+ Building Documentation
323
+ -----------------------
324
+
325
+ To build the documentation:
326
+
327
+ .. code-block:: bash
328
+
329
+ sphinx-build doc build/html
330
+
331
+ The documentation will be generated in `doc/build/html`, and the entry point is `index.html`. To view the documentation in a browser:
332
+
333
+ .. code-block:: bash
334
+
335
+ firefox build/html/index.html
336
+
337
+ **Note**: Building the documentation requires `sphinx` to be installed, which is not a hard dependency of Tomwer. If needed, install it separately.