tomwer 1.2.1__py3-none-any.whl → 1.3.12__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 (334) hide show
  1. orangecontrib/tomwer/tutorials/icat_publication.ows +58 -0
  2. orangecontrib/tomwer/widgets/__init__.py +11 -11
  3. orangecontrib/tomwer/widgets/control/DataDiscoveryOW.py +2 -2
  4. orangecontrib/tomwer/widgets/control/DataListOW.py +9 -7
  5. orangecontrib/tomwer/widgets/control/DataListenerOW.py +6 -6
  6. orangecontrib/tomwer/widgets/control/DataSelectorOW.py +21 -10
  7. orangecontrib/tomwer/widgets/control/DataValidatorOW.py +6 -6
  8. orangecontrib/tomwer/widgets/control/EDF2NXTomomillOW.py +24 -7
  9. orangecontrib/tomwer/widgets/control/EmailOW.py +4 -4
  10. orangecontrib/tomwer/widgets/control/NXTomomillMixIn.py +3 -3
  11. orangecontrib/tomwer/widgets/control/NXTomomillOW.py +64 -23
  12. orangecontrib/tomwer/widgets/control/NXtomoConcatenate.py +20 -8
  13. orangecontrib/tomwer/widgets/control/NotifierOW.py +1 -0
  14. orangecontrib/tomwer/widgets/control/SingleTomoObjOW.py +6 -6
  15. orangecontrib/tomwer/widgets/control/VolumeSelector.py +7 -4
  16. orangecontrib/tomwer/widgets/control/VolumeSymLinkOW.py +182 -182
  17. orangecontrib/tomwer/widgets/debugtools/DatasetGeneratorOW.py +5 -5
  18. orangecontrib/tomwer/widgets/edit/DarkFlatPatchOW.py +4 -4
  19. orangecontrib/tomwer/widgets/edit/ImageKeyEditorOW.py +3 -3
  20. orangecontrib/tomwer/widgets/edit/ImageKeyUpgraderOW.py +8 -1
  21. orangecontrib/tomwer/widgets/edit/NXtomoEditorOW.py +3 -3
  22. orangecontrib/tomwer/widgets/edit/test/test_nxtomo_editor.py +3 -3
  23. orangecontrib/tomwer/widgets/icat/PublishProcessedDataOW.py +115 -0
  24. orangecontrib/tomwer/widgets/icat/RawDataScreenshotCreatorOW.py +98 -0
  25. orangecontrib/tomwer/widgets/icat/SaveToGalleryAndPublishOW.py +129 -0
  26. orangecontrib/tomwer/widgets/icat/__init__.py +13 -0
  27. orangecontrib/tomwer/widgets/icat/icons/add_gallery.png +0 -0
  28. orangecontrib/tomwer/widgets/icat/icons/add_gallery.svg +82 -0
  29. orangecontrib/tomwer/widgets/icat/icons/publish_processed_data.png +0 -0
  30. orangecontrib/tomwer/widgets/icat/icons/publish_processed_data.svg +95 -0
  31. orangecontrib/tomwer/widgets/icat/icons/raw_screenshots.png +0 -0
  32. orangecontrib/tomwer/widgets/icat/icons/raw_screenshots.svg +143 -0
  33. orangecontrib/tomwer/widgets/icons/tomwer_data_portal.png +0 -0
  34. orangecontrib/tomwer/widgets/icons/tomwer_data_portal.svg +76 -0
  35. orangecontrib/tomwer/widgets/reconstruction/AxisOW.py +22 -20
  36. orangecontrib/tomwer/widgets/reconstruction/CastNabuVolumeOW.py +19 -3
  37. orangecontrib/tomwer/widgets/reconstruction/NabuHelicalPrepareWeightsDoubleOW.py +184 -169
  38. orangecontrib/tomwer/widgets/reconstruction/NabuOW.py +23 -0
  39. orangecontrib/tomwer/widgets/reconstruction/NabuVolumeOW.py +39 -5
  40. orangecontrib/tomwer/widgets/reconstruction/SAAxisOW.py +18 -22
  41. orangecontrib/tomwer/widgets/reconstruction/SADeltaBetaOW.py +18 -26
  42. orangecontrib/tomwer/widgets/reconstruction/SinoNormOW.py +15 -19
  43. orangecontrib/tomwer/widgets/visualization/DataViewerOW.py +9 -9
  44. orangecontrib/tomwer/widgets/visualization/DiffViewerOW.py +1 -1
  45. orangecontrib/tomwer/widgets/visualization/LivesliceOW.py +1 -1
  46. orangecontrib/tomwer/widgets/visualization/NXtomoMetadataViewerOW.py +3 -3
  47. orangecontrib/tomwer/widgets/visualization/SinogramViewerOW.py +0 -1
  48. orangecontrib/tomwer/widgets/visualization/VolumeViewerOW.py +3 -29
  49. tomwer/__main__.py +7 -64
  50. tomwer/app/axis.py +3 -3
  51. tomwer/app/canvas.py +8 -0
  52. tomwer/app/canvas_launcher/config.py +16 -14
  53. tomwer/app/canvas_launcher/environ.py +1 -0
  54. tomwer/app/canvas_launcher/mainwindow.py +4 -1
  55. tomwer/app/darkref.py +1 -1
  56. tomwer/app/darkrefpatch.py +1 -1
  57. tomwer/app/diffframe.py +3 -3
  58. tomwer/app/imagekeyeditor.py +5 -5
  59. tomwer/app/imagekeyupgrader.py +5 -5
  60. tomwer/app/intensitynormalization.py +14 -13
  61. tomwer/app/{saaxis.py → multicor.py} +3 -3
  62. tomwer/app/{sadeltabeta.py → multipag.py} +3 -3
  63. tomwer/app/nabuapp.py +0 -11
  64. tomwer/app/radiostack.py +6 -4
  65. tomwer/app/samplemoved.py +3 -2
  66. tomwer/app/scanviewer.py +4 -2
  67. tomwer/app/sinogramviewer.py +3 -2
  68. tomwer/app/slicestack.py +3 -2
  69. tomwer/app/zstitching.py +88 -6
  70. tomwer/core/cluster/cluster.py +26 -0
  71. tomwer/core/log/logger.py +7 -5
  72. tomwer/core/process/conditions/filters.py +1 -1
  73. tomwer/core/process/control/datalistener/datalistener.py +19 -14
  74. tomwer/core/process/control/datawatcher/edfdwprocess.py +0 -9
  75. tomwer/core/process/control/nxtomoconcatenate.py +13 -13
  76. tomwer/core/process/control/nxtomomill.py +92 -34
  77. tomwer/core/process/control/scantransfer.py +20 -43
  78. tomwer/core/process/control/scanvalidator.py +3 -2
  79. tomwer/core/process/control/test/test_concatenate_nxtomos.py +9 -9
  80. tomwer/core/process/control/test/test_email.py +4 -4
  81. tomwer/core/process/control/test/test_h52nx_process.py +59 -7
  82. tomwer/core/process/control/test/test_volume_link.py +64 -64
  83. tomwer/core/process/control/timer.py +1 -1
  84. tomwer/core/process/control/volumesymlink.py +200 -200
  85. tomwer/core/process/edit/darkflatpatch.py +14 -15
  86. tomwer/core/process/edit/imagekeyeditor.py +41 -39
  87. tomwer/core/process/icat/__init__.py +0 -0
  88. tomwer/core/process/icat/createscreenshots.py +100 -0
  89. tomwer/core/process/icat/gallery.py +377 -0
  90. tomwer/core/process/icat/icatbase.py +36 -0
  91. tomwer/core/process/icat/publish.py +228 -0
  92. tomwer/core/process/icat/screenshots.py +27 -0
  93. tomwer/core/process/output.py +52 -0
  94. tomwer/core/process/reconstruction/axis/axis.py +280 -69
  95. tomwer/core/process/reconstruction/axis/mode.py +163 -48
  96. tomwer/core/process/reconstruction/axis/params.py +29 -21
  97. tomwer/core/process/reconstruction/darkref/darkrefs.py +41 -127
  98. tomwer/core/process/reconstruction/darkref/darkrefscopy.py +4 -3
  99. tomwer/core/process/reconstruction/darkref/params.py +1 -1
  100. tomwer/core/process/reconstruction/nabu/castvolume.py +4 -4
  101. tomwer/core/process/reconstruction/nabu/helical.py +9 -5
  102. tomwer/core/process/reconstruction/nabu/nabucommon.py +71 -78
  103. tomwer/core/process/reconstruction/nabu/nabuscores.py +425 -53
  104. tomwer/core/process/reconstruction/nabu/nabuslices.py +114 -93
  105. tomwer/core/process/reconstruction/nabu/nabuvolume.py +54 -27
  106. tomwer/core/process/reconstruction/nabu/plane.py +9 -0
  107. tomwer/core/process/reconstruction/nabu/settings.py +2 -2
  108. tomwer/core/process/reconstruction/nabu/utils.py +164 -26
  109. tomwer/core/process/reconstruction/output.py +108 -0
  110. tomwer/core/process/reconstruction/saaxis/saaxis.py +238 -264
  111. tomwer/core/process/reconstruction/sadeltabeta/sadeltabeta.py +151 -87
  112. tomwer/core/process/reconstruction/scores/params.py +7 -4
  113. tomwer/core/process/reconstruction/scores/scores.py +13 -0
  114. tomwer/core/process/reconstruction/test/test_axis_params.py +2 -2
  115. tomwer/core/process/reconstruction/test/test_darkref.py +3 -3
  116. tomwer/core/process/reconstruction/test/test_darkref_copy.py +7 -7
  117. tomwer/core/process/reconstruction/test/test_saaxis.py +3 -4
  118. tomwer/core/process/reconstruction/test/test_sadeltabeta.py +2 -2
  119. tomwer/core/process/stitching/nabustitcher.py +13 -12
  120. tomwer/core/process/task.py +34 -26
  121. tomwer/core/process/test/test_axis.py +13 -12
  122. tomwer/core/process/test/test_dark_and_flat.py +10 -7
  123. tomwer/core/process/test/test_data_transfer.py +10 -8
  124. tomwer/core/process/test/test_nabu.py +14 -6
  125. tomwer/core/process/test/test_normalization.py +4 -4
  126. tomwer/core/scan/blissscan.py +3 -3
  127. tomwer/core/scan/edfscan.py +13 -10
  128. tomwer/core/scan/hdf5scan.py +19 -530
  129. tomwer/core/scan/nxtomoscan.py +534 -0
  130. tomwer/core/scan/scanbase.py +72 -44
  131. tomwer/core/scan/scanfactory.py +13 -13
  132. tomwer/core/scan/test/test_edf.py +2 -2
  133. tomwer/core/scan/test/test_future_scan.py +3 -3
  134. tomwer/core/scan/test/test_h5.py +18 -16
  135. tomwer/core/scan/test/test_process_registration.py +4 -40
  136. tomwer/core/scan/test/test_scan.py +5 -78
  137. tomwer/core/settings.py +22 -2
  138. tomwer/core/test/test_scanutils.py +8 -7
  139. tomwer/core/test/test_utils.py +35 -28
  140. tomwer/core/tomwer_object.py +1 -1
  141. tomwer/core/utils/__init__.py +0 -466
  142. tomwer/core/utils/deprecation.py +1 -1
  143. tomwer/core/utils/dictutils.py +14 -0
  144. tomwer/core/utils/lbsram.py +35 -0
  145. tomwer/core/utils/nxtomoutils.py +1 -1
  146. tomwer/core/utils/scanutils.py +6 -6
  147. tomwer/core/utils/spec.py +263 -0
  148. tomwer/core/volume/edfvolume.py +6 -6
  149. tomwer/core/volume/hdf5volume.py +6 -6
  150. tomwer/core/volume/jp2kvolume.py +6 -6
  151. tomwer/core/volume/rawvolume.py +6 -6
  152. tomwer/core/volume/tiffvolume.py +12 -12
  153. tomwer/core/volume/volumefactory.py +2 -2
  154. tomwer/gui/cluster/slurm.py +274 -65
  155. tomwer/gui/cluster/supervisor.py +12 -0
  156. tomwer/gui/cluster/test/test_cluster.py +14 -2
  157. tomwer/gui/cluster/test/test_supervisor.py +3 -3
  158. tomwer/gui/configuration/__init__.py +0 -0
  159. tomwer/gui/{reconstruction/nabu → configuration}/action.py +1 -32
  160. tomwer/gui/configuration/level.py +22 -0
  161. tomwer/gui/control/actions.py +54 -0
  162. tomwer/gui/control/datalist.py +83 -16
  163. tomwer/gui/control/datalistener.py +4 -16
  164. tomwer/gui/control/datawatcher/controlwidget.py +2 -4
  165. tomwer/gui/control/datawatcher/datawatcher.py +1 -24
  166. tomwer/gui/control/{email.py → emailnotifier.py} +9 -18
  167. tomwer/gui/control/history.py +2 -2
  168. tomwer/gui/control/observations.py +2 -2
  169. tomwer/gui/control/reducedarkflatselector.py +9 -9
  170. tomwer/gui/control/selectorwidgetbase.py +36 -9
  171. tomwer/gui/control/serie/seriecreator.py +5 -22
  172. tomwer/gui/control/test/test_email.py +1 -1
  173. tomwer/gui/control/test/test_scanvalidator.py +6 -5
  174. tomwer/gui/control/test/test_single_tomo_obj.py +3 -3
  175. tomwer/gui/control/tomoobjdisplaymode.py +8 -0
  176. tomwer/gui/debugtools/datasetgenerator.py +3 -3
  177. tomwer/gui/edit/dkrfpatch.py +20 -26
  178. tomwer/gui/edit/imagekeyeditor.py +11 -12
  179. tomwer/gui/edit/nxtomoeditor.py +111 -44
  180. tomwer/gui/edit/nxtomowarmer.py +7 -6
  181. tomwer/gui/edit/test/test_dkrf_patch.py +13 -13
  182. tomwer/gui/edit/test/test_image_key_editor.py +3 -3
  183. tomwer/gui/edit/test/test_nx_editor.py +40 -16
  184. tomwer/gui/icat/__init__.py +0 -0
  185. tomwer/gui/icat/createscreenshots.py +80 -0
  186. tomwer/gui/icat/gallery.py +214 -0
  187. tomwer/gui/icat/publish.py +187 -0
  188. tomwer/gui/imagefromfile.py +2 -2
  189. tomwer/gui/qfolderdialog.py +24 -1
  190. tomwer/gui/reconstruction/axis/CompareImages.py +88 -168
  191. tomwer/gui/reconstruction/axis/axis.py +171 -57
  192. tomwer/gui/reconstruction/axis/radioaxis.py +122 -257
  193. tomwer/gui/reconstruction/darkref/darkrefcopywidget.py +3 -2
  194. tomwer/gui/reconstruction/darkref/darkrefwidget.py +2 -1
  195. tomwer/gui/reconstruction/nabu/castvolume.py +14 -3
  196. tomwer/gui/reconstruction/nabu/check.py +9 -9
  197. tomwer/gui/reconstruction/nabu/helical.py +29 -12
  198. tomwer/gui/reconstruction/nabu/nabuconfig/base.py +2 -4
  199. tomwer/gui/reconstruction/nabu/nabuconfig/nabuconfig.py +2 -1
  200. tomwer/gui/reconstruction/nabu/nabuconfig/output.py +126 -35
  201. tomwer/gui/reconstruction/nabu/nabuconfig/phase.py +39 -32
  202. tomwer/gui/reconstruction/nabu/nabuconfig/preprocessing.py +222 -31
  203. tomwer/gui/reconstruction/nabu/nabuconfig/reconstruction.py +57 -27
  204. tomwer/gui/reconstruction/nabu/nabuflow.py +12 -20
  205. tomwer/gui/reconstruction/nabu/slices.py +10 -11
  206. tomwer/gui/reconstruction/nabu/volume.py +22 -10
  207. tomwer/gui/reconstruction/normalization/intensity.py +18 -48
  208. tomwer/gui/reconstruction/saaxis/corrangeselector.py +8 -24
  209. tomwer/gui/reconstruction/saaxis/dimensionwidget.py +1 -1
  210. tomwer/gui/reconstruction/saaxis/saaxis.py +9 -21
  211. tomwer/gui/reconstruction/sadeltabeta/saadeltabeta.py +45 -12
  212. tomwer/gui/reconstruction/scores/control.py +2 -9
  213. tomwer/gui/reconstruction/scores/scoreplot.py +13 -11
  214. tomwer/gui/reconstruction/test/test_axis.py +41 -16
  215. tomwer/gui/reconstruction/test/test_nabu.py +31 -9
  216. tomwer/gui/reconstruction/test/test_saaxis.py +3 -3
  217. tomwer/gui/reconstruction/test/test_sadeltabeta.py +12 -2
  218. tomwer/gui/settings.py +5 -28
  219. tomwer/gui/stackplot.py +2 -5
  220. tomwer/gui/stitching/action.py +49 -0
  221. tomwer/gui/stitching/config/axisparams.py +7 -24
  222. tomwer/gui/stitching/config/output.py +10 -8
  223. tomwer/gui/stitching/config/positionoveraxis.py +22 -23
  224. tomwer/gui/stitching/normalization.py +117 -0
  225. tomwer/gui/stitching/stitchandbackground.py +4 -6
  226. tomwer/gui/stitching/stitching.py +267 -45
  227. tomwer/gui/stitching/stitching_preview.py +62 -55
  228. tomwer/gui/stitching/stitching_raw.py +13 -12
  229. tomwer/gui/stitching/z_stitching/fineestimation.py +0 -60
  230. tomwer/gui/utils/buttons.py +112 -29
  231. tomwer/gui/utils/inputwidget.py +43 -25
  232. tomwer/gui/utils/lineselector/lineselector.py +1 -1
  233. tomwer/gui/utils/scandescription.py +4 -0
  234. tomwer/gui/utils/step.py +144 -0
  235. tomwer/gui/utils/unitsystem.py +2 -5
  236. tomwer/gui/utils/vignettes.py +176 -15
  237. tomwer/gui/visualization/dataviewer.py +48 -35
  238. tomwer/gui/visualization/diffviewer/diffviewer.py +7 -16
  239. tomwer/gui/visualization/diffviewer/shiftwidget.py +2 -5
  240. tomwer/gui/visualization/scanoverview.py +1 -1
  241. tomwer/gui/visualization/sinogramviewer.py +20 -36
  242. tomwer/gui/visualization/test/test_diffviewer.py +3 -3
  243. tomwer/gui/visualization/test/test_nx_tomo_metadata_viewer.py +4 -4
  244. tomwer/gui/visualization/test/test_sinogramviewer.py +2 -2
  245. tomwer/gui/visualization/test/test_stacks.py +3 -3
  246. tomwer/gui/visualization/test/test_volumeviewer.py +65 -67
  247. tomwer/gui/visualization/volumeviewer.py +114 -113
  248. tomwer/io/utils/h5pyutils.py +3 -3
  249. tomwer/io/utils/raw_and_processed_data.py +84 -0
  250. tomwer/io/utils/tomoobj.py +4 -6
  251. tomwer/io/utils/utils.py +7 -7
  252. tomwer/resources/gui/icons/parameters.svg +1 -1
  253. tomwer/resources/gui/icons/ruler.png +0 -0
  254. tomwer/resources/gui/icons/ruler.svg +273 -0
  255. tomwer/resources/gui/icons/short_description.png +0 -0
  256. tomwer/resources/gui/icons/short_description.svg +58 -0
  257. tomwer/resources/gui/icons/url.png +0 -0
  258. tomwer/resources/gui/icons/url.svg +58 -0
  259. tomwer/resources/gui/illustrations/no_rot.svg +1 -1
  260. tomwer/synctools/stacks/edit/darkflatpatch.py +19 -14
  261. tomwer/synctools/stacks/edit/imagekeyeditor.py +2 -2
  262. tomwer/synctools/stacks/reconstruction/axis.py +4 -4
  263. tomwer/synctools/stacks/reconstruction/castvolume.py +22 -7
  264. tomwer/synctools/stacks/reconstruction/dkrefcopy.py +25 -20
  265. tomwer/synctools/stacks/reconstruction/nabu.py +2 -2
  266. tomwer/synctools/stacks/reconstruction/normalization.py +2 -2
  267. tomwer/synctools/stacks/reconstruction/saaxis.py +2 -2
  268. tomwer/synctools/stacks/reconstruction/sadeltabeta.py +2 -2
  269. tomwer/synctools/test/test_darkRefs.py +7 -58
  270. tomwer/synctools/test/test_foldertransfer.py +6 -6
  271. tomwer/synctools/utils/scanstages.py +6 -6
  272. tomwer/tests/conftest.py +34 -0
  273. tomwer/tests/datasets.py +13 -0
  274. tomwer/tests/test_scripts.py +91 -41
  275. tomwer/tests/utils.py +5 -0
  276. tomwer/third_part/WaitingOverlay.py +110 -0
  277. tomwer/third_part/__init__.py +0 -0
  278. tomwer/version.py +2 -2
  279. tomwer-1.3.12-py3.11-nspkg.pth +1 -0
  280. {tomwer-1.2.1.dist-info → tomwer-1.3.12.dist-info}/METADATA +73 -58
  281. {tomwer-1.2.1.dist-info → tomwer-1.3.12.dist-info}/RECORD +287 -286
  282. {tomwer-1.2.1.dist-info → tomwer-1.3.12.dist-info}/WHEEL +1 -1
  283. orangecontrib/tomwer/widgets/reconstruction/TofuOW.py +0 -197
  284. orangecontrib/tomwer/widgets/reconstruction/icons/XY_lamino.svg +0 -168
  285. orangecontrib/tomwer/widgets/reconstruction/icons/XZ_lamino.svg +0 -275
  286. orangecontrib/tomwer/widgets/reconstruction/icons/YZ_lamino.svg +0 -182
  287. tomwer/app/lamino.py +0 -143
  288. tomwer/core/process/reconstruction/lamino/__init__.py +0 -1
  289. tomwer/core/process/reconstruction/lamino/tofu.py +0 -1000
  290. tomwer/core/process/test/test_lamino.py +0 -76
  291. tomwer/core/test/test_lamino.py +0 -92
  292. tomwer/gui/reconstruction/lamino/__init__.py +0 -31
  293. tomwer/gui/reconstruction/lamino/tofu/TofuOptionLoader.py +0 -107
  294. tomwer/gui/reconstruction/lamino/tofu/__init__.py +0 -1
  295. tomwer/gui/reconstruction/lamino/tofu/misc.py +0 -148
  296. tomwer/gui/reconstruction/lamino/tofu/projections.py +0 -896
  297. tomwer/gui/reconstruction/lamino/tofu/settings.py +0 -75
  298. tomwer/gui/reconstruction/lamino/tofu/tofu.py +0 -432
  299. tomwer/gui/reconstruction/lamino/tofu/tofuexpert.py +0 -567
  300. tomwer/gui/reconstruction/lamino/tofu/tofuoutput.py +0 -760
  301. tomwer/gui/reconstruction/test/test_lamino.py +0 -189
  302. tomwer/resources/gui/icons/esrf_1.svg +0 -307
  303. tomwer/resources/gui/icons/lamino_parameters.svg +0 -70
  304. tomwer/resources/gui/icons/triangle.svg +0 -80
  305. tomwer/resources/gui/illustrations/lamino_angle.png +0 -0
  306. tomwer/resources/gui/illustrations/lamino_angle.svg +0 -509
  307. tomwer/resources/gui/illustrations/lamino_beta_angle.png +0 -0
  308. tomwer/resources/gui/illustrations/lamino_beta_angle.svg +0 -97
  309. tomwer/resources/gui/illustrations/lamino_theta_angle.png +0 -0
  310. tomwer/resources/gui/illustrations/lamino_theta_angle.svg +0 -368
  311. tomwer/resources/gui/illustrations/manual_slice.png +0 -0
  312. tomwer/resources/gui/illustrations/manual_slice.svg +0 -221
  313. tomwer/resources/gui/illustrations/psi_angle.png +0 -0
  314. tomwer/resources/gui/illustrations/psi_angle.svg +0 -479
  315. tomwer/resources/gui/illustrations/rotation_center.png +0 -0
  316. tomwer/resources/gui/illustrations/rotation_center.svg +0 -276
  317. tomwer/resources/gui/illustrations/slice_stack.png +0 -0
  318. tomwer/resources/gui/illustrations/slice_stack.svg +0 -266
  319. tomwer/resources/gui/illustrations/xy_slice.png +0 -0
  320. tomwer/resources/gui/illustrations/xy_slice.svg +0 -269
  321. tomwer/resources/gui/illustrations/xz_slice.png +0 -0
  322. tomwer/resources/gui/illustrations/xz_slice.svg +0 -270
  323. tomwer/resources/gui/illustrations/yz_slice.png +0 -0
  324. tomwer/resources/gui/illustrations/yz_slice.svg +0 -270
  325. tomwer/synctools/stacks/reconstruction/lamino.py +0 -233
  326. tomwer/synctools/test/test_scanstages.py +0 -162
  327. tomwer/tests/utils/__init__.py +0 -247
  328. tomwer/tests/utils/utilstest.py +0 -220
  329. tomwer-1.2.1-py3.11-nspkg.pth +0 -1
  330. /tomwer/core/process/control/{email.py → emailnotifier.py} +0 -0
  331. {tomwer-1.2.1.dist-info → tomwer-1.3.12.dist-info}/LICENSE +0 -0
  332. {tomwer-1.2.1.dist-info → tomwer-1.3.12.dist-info}/entry_points.txt +0 -0
  333. {tomwer-1.2.1.dist-info → tomwer-1.3.12.dist-info}/namespace_packages.txt +0 -0
  334. {tomwer-1.2.1.dist-info → tomwer-1.3.12.dist-info}/top_level.txt +0 -0
@@ -41,9 +41,9 @@ from silx.gui import qt
41
41
  import tomwer.core.process.reconstruction.sadeltabeta.sadeltabeta
42
42
  from orangecontrib.tomwer.orange.managedprocess import SuperviseOW
43
43
  from orangecontrib.tomwer.orange.settings import CallbackSettingsHandler
44
- from tomwer.core import settings, utils
44
+ from tomwer.core import settings
45
+ from tomwer.core.utils.lbsram import is_low_on_memory
45
46
  from tomwer.core.cluster import SlurmClusterConfiguration
46
- from tomwer.core.futureobject import FutureTomwerObject
47
47
  from tomwer.core.process.reconstruction.sadeltabeta import SADeltaBetaTask
48
48
  from tomwer.core.scan.scanbase import TomwerScanBase, _TomwerBaseDock
49
49
  from tomwer.gui.reconstruction.sadeltabeta import (
@@ -198,16 +198,14 @@ class SADeltaBetaOW(SuperviseOW, WidgetLongProcessing):
198
198
  Details about :ref:`sadeltabeta score calculation`
199
199
  """
200
200
 
201
- name = "semi automatic delta/beta calculation"
201
+ name = "multi-pag (sa-delta/beta calculation)"
202
202
  id = "orange.widgets.tomwer.sa_delta_beta"
203
- description = (
204
- "compute several delta / beta value to get the optimal "
205
- "delta / beta value (before reconstructing a volume for "
206
- "example."
207
- )
203
+ description = "Reconstruct a slice with several delta / beta values."
208
204
  icon = "icons/delta_beta_range.png"
209
205
  priority = 22
210
206
  keywords = [
207
+ "multi",
208
+ "multi-pag",
211
209
  "tomography",
212
210
  "semi automatic",
213
211
  "half automatic",
@@ -257,12 +255,6 @@ class SADeltaBetaOW(SuperviseOW, WidgetLongProcessing):
257
255
  class Outputs:
258
256
  data = Output(name="data", type=TomwerScanBase)
259
257
 
260
- future_out = Output(
261
- name="future_tomo_obj",
262
- type=FutureTomwerObject,
263
- doc="data with some remote processing",
264
- )
265
-
266
258
  def __init__(self, parent=None):
267
259
  """
268
260
 
@@ -285,7 +277,6 @@ class SADeltaBetaOW(SuperviseOW, WidgetLongProcessing):
285
277
 
286
278
  # connect signal / slot
287
279
  self._widget.sigConfigurationChanged.connect(self._updateSettings)
288
- self.destroyed.connect(self._widget.stop)
289
280
  self._widget._processing_stack.sigComputationStarted.connect(
290
281
  self._startProcessing
291
282
  )
@@ -336,9 +327,7 @@ class SADeltaBetaOW(SuperviseOW, WidgetLongProcessing):
336
327
  scan.sa_delta_beta_params = QSADeltaBetaParams()
337
328
  self._skipCurrentScan(new_scan=scan)
338
329
 
339
- if settings.isOnLbsram(scan) and utils.isLowOnMemory(
340
- settings.get_lbsram_path()
341
- ):
330
+ if settings.isOnLbsram(scan) and is_low_on_memory(settings.get_lbsram_path()):
342
331
  self.notify_skip(
343
332
  scan=scan,
344
333
  details=f"sa-delta-beta has been skiped for {scan} because of low space in lbsram",
@@ -393,14 +382,6 @@ class SADeltaBetaOW(SuperviseOW, WidgetLongProcessing):
393
382
  "autofocus_lock": self._widget.isAutoFocusLock(),
394
383
  }
395
384
 
396
- def close(self):
397
- self.stop()
398
- self._widget = None
399
- super().close()
400
-
401
- def stop(self):
402
- self._widget.stop()
403
-
404
385
  def getConfiguration(self):
405
386
  return self._widget.getConfiguration()
406
387
 
@@ -418,3 +399,14 @@ class SADeltaBetaOW(SuperviseOW, WidgetLongProcessing):
418
399
  # if possible process next
419
400
  if self._widget._processing_stack.can_process_next():
420
401
  self._widget._processing_stack._process_next()
402
+
403
+ def getWaitingOverlay(self):
404
+ return self._widget._tabWidget._resultsViewer._plot.getWaiterOverlay()
405
+
406
+ def _startProcessing(self, *args, **kwargs):
407
+ self.getWaitingOverlay().show()
408
+ super()._startProcessing()
409
+
410
+ def _endProcessing(self, *args, **kwargs):
411
+ self.getWaitingOverlay().hide()
412
+ super()._endProcessing()
@@ -42,7 +42,8 @@ from tomoscan.normalization import Method as NormMethod
42
42
 
43
43
  from orangecontrib.tomwer.widgets.utils import WidgetLongProcessing
44
44
 
45
- from tomwer.core import settings, utils
45
+ from tomwer.core import settings
46
+ from tomwer.core.utils.lbsram import is_low_on_memory
46
47
  from tomwer.core.process.reconstruction.normalization import SinoNormalizationTask
47
48
  from tomwer.core.process.reconstruction.normalization.params import _ValueSource
48
49
  from tomwer.core.scan.scanbase import TomwerScanBase
@@ -163,7 +164,6 @@ class SinoNormOW(WidgetLongProcessing, SuperviseOW):
163
164
 
164
165
  # connect signal / slot
165
166
  self._window.sigConfigurationChanged.connect(self._updateSettings)
166
- self.destroyed.connect(self._window.stop)
167
167
  self._window._processing_stack.sigComputationStarted.connect(
168
168
  self._startProcessing
169
169
  )
@@ -197,9 +197,7 @@ class SinoNormOW(WidgetLongProcessing, SuperviseOW):
197
197
  return
198
198
 
199
199
  self._skipCurrentScan(new_scan=scan)
200
- if settings.isOnLbsram(scan) and utils.isLowOnMemory(
201
- settings.get_lbsram_path()
202
- ):
200
+ if settings.isOnLbsram(scan) and is_low_on_memory(settings.get_lbsram_path()):
203
201
  details = f"skip {scan} because low memory on lbsram"
204
202
  self.notify_skip(scan=scan, details=details)
205
203
  self.Outputs.data_out.send(scan)
@@ -219,17 +217,18 @@ class SinoNormOW(WidgetLongProcessing, SuperviseOW):
219
217
  tomwer_processing_res_code = extra_infos.pop(
220
218
  "tomwer_processing_res_code", "unprocessed"
221
219
  )
222
- SinoNormalizationTask._register_process(
223
- process_file=scan.process_file,
224
- process=SinoNormalizationTask,
225
- entry=scan.entry,
226
- configuration=self.getConfiguration(),
227
- results={
228
- "method": scan.intensity_normalization.method.value,
229
- "extra_infos": extra_infos,
230
- },
231
- process_index=scan.pop_process_index(),
232
- )
220
+ with scan.acquire_process_file_lock():
221
+ SinoNormalizationTask._register_process(
222
+ process_file=scan.process_file,
223
+ process=SinoNormalizationTask,
224
+ entry=scan.entry,
225
+ configuration=self.getConfiguration(),
226
+ results={
227
+ "method": scan.intensity_normalization.method.value,
228
+ "extra_infos": extra_infos,
229
+ },
230
+ process_index=scan.pop_process_index(),
231
+ )
233
232
  if tomwer_processing_res_code is True:
234
233
  # if defined by manual scalar we need to set the value
235
234
  if extra_infos.get("source", None) == _ValueSource.MANUAL_SCALAR.value:
@@ -293,9 +292,6 @@ class SinoNormOW(WidgetLongProcessing, SuperviseOW):
293
292
  def getConfiguration(self):
294
293
  return self._window.getConfiguration()
295
294
 
296
- def stop(self):
297
- self._window.stop()
298
-
299
295
  def _updateSettings(self):
300
296
  self._ewoks_default_inputs = self._window.getConfiguration()
301
297
  self._ewoks_default_inputs["__lock__"] = self.isLocked()
@@ -120,15 +120,15 @@ class DataViewerOW(widget.OWBaseWidget, openclass=True):
120
120
  return qt.QSize(400, 500)
121
121
 
122
122
  def _updateSettings(self):
123
- self._viewer_config[ # pylint: disable=E1137
124
- "mode"
125
- ] = self.viewer.getDisplayMode().value
126
- self._viewer_config[ # pylint: disable=E1137
127
- "slice_opt"
128
- ] = self.viewer.getSliceOption().value
129
- self._viewer_config[ # pylint: disable=E1137
130
- "radio_opt"
131
- ] = self.viewer.getRadioOption().value
123
+ self._viewer_config["mode"] = ( # pylint: disable=E1137
124
+ self.viewer.getDisplayMode().value
125
+ )
126
+ self._viewer_config["slice_opt"] = ( # pylint: disable=E1137
127
+ self.viewer.getSliceOption().value
128
+ )
129
+ self._viewer_config["radio_opt"] = ( # pylint: disable=E1137
130
+ self.viewer.getRadioOption().value
131
+ )
132
132
 
133
133
  def _setSettings(self, settings):
134
134
  old_state = self.viewer.blockSignals(True)
@@ -47,7 +47,7 @@ class DiffViewerOW(widget.OWBaseWidget, openclass=True):
47
47
  Allows to compare two random frame.
48
48
  """
49
49
 
50
- name = "diff viewer"
50
+ name = "diff frame viewer"
51
51
  id = "orangecontrib.tomwer.widgets.visualization.diffviewerow"
52
52
  description = "Allows comparison between two random frame from a scan"
53
53
  icon = "icons/diff.png"
@@ -32,7 +32,7 @@ from orangewidget.widget import Input
32
32
 
33
33
  import tomwer.core.process.visualization.liveslice
34
34
  from tomwer.core.scan.scanbase import TomwerScanBase
35
- from tomwer.core.utils import getFirstProjFile
35
+ from tomwer.core.utils.spec import getFirstProjFile
36
36
 
37
37
  try:
38
38
  from liveslice.gui.liveslice_gui import ReconstructionApp
@@ -2,7 +2,7 @@ from orangewidget import gui, widget
2
2
  from orangewidget.widget import Input, Output
3
3
  from silx.gui import qt
4
4
 
5
- from tomwer.core.scan.hdf5scan import HDF5TomoScan
5
+ from tomwer.core.scan.nxtomoscan import NXtomoScan
6
6
  from tomwer.core.scan.scanbase import TomwerScanBase
7
7
  from tomwer.gui.visualization.nxtomometadata import NXtomoMetadataViewer
8
8
 
@@ -56,9 +56,9 @@ class NXtomoMetadataViewerOW(widget.OWBaseWidget, openclass=True):
56
56
  def setScan(self, scan):
57
57
  if scan is None:
58
58
  pass
59
- elif not isinstance(scan, HDF5TomoScan):
59
+ elif not isinstance(scan, NXtomoScan):
60
60
  raise TypeError(
61
- f"expect to have an instance of {HDF5TomoScan}. {type(scan)} provided."
61
+ f"expect to have an instance of {NXtomoScan}. {type(scan)} provided."
62
62
  )
63
63
  else:
64
64
  self.widget.setScan(scan)
@@ -79,7 +79,6 @@ class SinogramViewerOW(WidgetLongProcessing, widget.OWBaseWidget, openclass=True
79
79
  # connect signal / slot
80
80
  self._viewer.sigSinoLoadStarted.connect(self._startProcessing)
81
81
  self._viewer.sigSinoLoadEnded.connect(self._endProcessing)
82
- self.destroyed.connect(self._viewer._stopAnimationThread)
83
82
 
84
83
  @Inputs.data
85
84
  def addLeafScan(self, scanID):
@@ -1,32 +1,3 @@
1
- # coding: utf-8
2
- # /*##########################################################################
3
- #
4
- # Copyright (c) 2016-2017 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
-
26
- __authors__ = ["H. Payno"]
27
- __license__ = "MIT"
28
- __date__ = "21/07/2020"
29
-
30
1
  import pytest
31
2
  from orangewidget import gui, widget
32
3
  from orangewidget.widget import Input
@@ -79,6 +50,9 @@ class VolumeViewerOW(widget.OWBaseWidget, openclass=True):
79
50
  self.viewer.setScan(scan)
80
51
 
81
52
  @Inputs.volume
53
+ def _volumeReceived(self, volume, *args, **kwargs):
54
+ self.addVolume(volume)
55
+
82
56
  def addVolume(self, volume):
83
57
  if volume is None:
84
58
  return
tomwer/__main__.py CHANGED
@@ -36,21 +36,16 @@ __date__ = "10/11/2020"
36
36
 
37
37
 
38
38
  import sys
39
- import logging
40
- import traceback
41
39
  from collections import namedtuple
42
40
  import tomwer.version
43
41
  from tomwer.utils import Launcher as _Launcher
44
-
42
+ from tomwer.core.utils.deprecation import deprecated_warning
45
43
 
46
44
  DeprecationWarning = namedtuple(
47
45
  "DeprecationWarning", ["since", "reason", "replacement"]
48
46
  )
49
47
 
50
48
 
51
- depreclog = logging.getLogger("nxtomomill.DEPRECATION")
52
-
53
-
54
49
  class Launcher(_Launcher):
55
50
  """
56
51
  Manage launch of module.
@@ -115,48 +110,6 @@ class Launcher(_Launcher):
115
110
  super().execute(argv=argv)
116
111
 
117
112
 
118
- def deprecated_warning(
119
- type_,
120
- name,
121
- reason=None,
122
- replacement=None,
123
- since_version=None,
124
- skip_backtrace_count=0,
125
- ):
126
- """
127
- Function to log a deprecation warning
128
-
129
- :param str type_: Nature of the object to be deprecated:
130
- "Module", "Function", "Class" ...
131
- :param name: Object name.
132
- :param str reason: Reason for deprecating this function
133
- (e.g. "feature no longer provided",
134
- :param str replacement: Name of replacement function (if the reason for
135
- deprecating was to rename the function)
136
- :param str since_version: First *silx* version for which the function was
137
- deprecated (e.g. "0.5.0").
138
- :param int skip_backtrace_count: Amount of last backtrace to ignore when
139
- logging the backtrace
140
- """
141
- if not depreclog.isEnabledFor(logging.WARNING):
142
- # Avoid computation when it is not logged
143
- return
144
-
145
- msg = "%s %s is deprecated"
146
- if since_version is not None:
147
- msg += " since silx version %s" % since_version
148
- msg += "."
149
- if reason is not None:
150
- msg += " Reason: %s." % reason
151
- if replacement is not None:
152
- msg += " Use '%s' instead." % replacement
153
- msg += "\n%s"
154
- limit = 2 + skip_backtrace_count
155
- backtrace = "".join(traceback.format_stack(limit=limit)[0])
156
- backtrace = backtrace.rstrip()
157
- depreclog.warning(msg, type_, name, backtrace)
158
-
159
-
160
113
  def main():
161
114
  """Main function of the launcher
162
115
 
@@ -216,14 +169,14 @@ def main():
216
169
  description="Tool to compute intensity normalization.",
217
170
  )
218
171
  launcher.add_command(
219
- "lamino",
220
- module_name="tomwer.app.lamino",
221
- description="Run laminography reconstruction using tofu",
172
+ "multi-cor",
173
+ module_name="tomwer.app.multicor",
174
+ description="Compute a slice with different values of cor",
222
175
  )
223
176
  launcher.add_command(
224
- "liveslice",
225
- module_name="tomwer.app.liveslice",
226
- description="Run liveslice application",
177
+ "multi-pag",
178
+ module_name="tomwer.app.multipag",
179
+ description="compute a slice with different values of delta / beta values",
227
180
  )
228
181
  launcher.add_command(
229
182
  "nabu",
@@ -273,16 +226,6 @@ def main():
273
226
  module_name="tomwer.app.sinogramviewer",
274
227
  description="Allows to compute on the fly sinogram " "and display them",
275
228
  )
276
- launcher.add_command(
277
- "sa-axis",
278
- module_name="tomwer.app.saaxis",
279
- description="Semi-automatic center of rotation research",
280
- )
281
- launcher.add_command(
282
- "sa-delta-beta",
283
- module_name="tomwer.app.sadeltabeta",
284
- description="Semi-automatic delta/beta Paganin parameter research",
285
- )
286
229
  launcher.add_command(
287
230
  "scan-viewer",
288
231
  module_name="tomwer.app.scanviewer",
tomwer/app/axis.py CHANGED
@@ -6,7 +6,7 @@ import functools
6
6
  import logging
7
7
  import signal
8
8
  import sys
9
-
9
+ import silx
10
10
  from silx.gui import qt
11
11
 
12
12
  from tomwer.core.process.reconstruction.axis.axis import (
@@ -124,9 +124,9 @@ def main(argv):
124
124
  logging.root.setLevel(logging.DEBUG)
125
125
 
126
126
  if options.use_opengl_plot:
127
- import silx
128
-
129
127
  silx.config.DEFAULT_PLOT_BACKEND = "gl"
128
+ else:
129
+ silx.config.DEFAULT_PLOT_BACKEND = "matplotlib"
130
130
 
131
131
  increase_max_number_file()
132
132
 
tomwer/app/canvas.py CHANGED
@@ -23,11 +23,19 @@ except ImportError:
23
23
  has_nabu = False
24
24
  else:
25
25
  has_nabu = True
26
+ try:
27
+ import nxtomo.version
28
+ except ImportError:
29
+ has_nxtomo = False
30
+ else:
31
+ has_nxtomo = True
26
32
 
27
33
 
28
34
  def print_versions():
29
35
  print(f"tomwer version is {tomwer.version.version}")
30
36
  print(f"tomoscan version is {tomoscan.version.version}")
37
+ if has_nxtomo:
38
+ print(f"nxtomo version is {nxtomo.version.version}")
31
39
  if has_nxtomomill:
32
40
  print(f"nxtomomill version is {nxtomomill.version.version}")
33
41
  if has_nabu:
@@ -112,9 +112,9 @@ class TomwerConfig(config.Config):
112
112
 
113
113
  all_eps = sorted(
114
114
  all_eps,
115
- key=lambda ep: 0
116
- if ep.dist.project_name.lower() in ("orange3", "tomwer")
117
- else 1,
115
+ key=lambda ep: (
116
+ 0 if ep.dist.project_name.lower() in ("orange3", "tomwer") else 1
117
+ ),
118
118
  )
119
119
  return iter(all_eps)
120
120
 
@@ -185,17 +185,19 @@ class TerminalTextDocument(_TerminalTextDocument):
185
185
  def writeWithFormat(self, string: str, charformat) -> None:
186
186
  assert qt.QThread.currentThread() is self.thread()
187
187
  # remove linux reset sequence
188
- string = string.replace("\033[0m", "")
189
- # remove linux reset sequence
190
- string = string.replace("\033[1;%dm", "")
191
- # remove linux reset sequence
192
- string = string.replace("\x1B[1m", "")
193
- string = string.replace("\x1B[1;30m", "")
194
- string = string.replace("\x1B[1;31m", "")
195
- string = string.replace("\x1B[1;32m", "")
196
- string = string.replace("\x1B[1;33m", "")
197
- string = string.replace("\x1B[1;34m", "")
198
- string = string.replace("\x1B[1;35m", "")
188
+ from tomwer.core.log import logger as tomwer_logger
189
+
190
+ for sequence in (
191
+ tomwer_logger._RESET_SEQ,
192
+ tomwer_logger._BOLD_SEQ,
193
+ tomwer_logger._BLACK,
194
+ tomwer_logger._RED,
195
+ tomwer_logger._GREEN,
196
+ tomwer_logger._YELLOW,
197
+ tomwer_logger._BLUE,
198
+ tomwer_logger._MAGENTA,
199
+ ):
200
+ string = string.replace(sequence, "")
199
201
 
200
202
  color = self.get_log_level(string) or qt.Qt.red
201
203
  charformat.setForeground(color)
@@ -40,6 +40,7 @@ orangerc.cfg
40
40
  canvas_settings_dir = %(prefix)s/config/%(name)s/canvas
41
41
 
42
42
  """
43
+
43
44
  import configparser
44
45
  import os
45
46
  import sys
@@ -4,6 +4,7 @@ import os
4
4
  import shutil
5
5
  import signal
6
6
  import sys
7
+ import silx
7
8
  from typing import List
8
9
  from contextlib import closing
9
10
  from logging.handlers import RotatingFileHandler
@@ -299,13 +300,15 @@ class _OMain(ocMain):
299
300
  # define an environment variable.
300
301
  # this way we should also be able to let the user define it
301
302
  # on it's own later...
303
+
302
304
  if self.options.use_opengl_plot:
303
- import silx
304
305
 
305
306
  # other standalones are not passing by the silx.config
306
307
  # but for the canvas this is way simpler to use it.
307
308
  # then all plot which have backend==None will pick the default plot backend
308
309
  silx.config.DEFAULT_PLOT_BACKEND = "gl"
310
+ else:
311
+ silx.config.DEFAULT_PLOT_BACKEND = "matplotlib"
309
312
 
310
313
  def setup_logging(self):
311
314
  super().setup_logging()
tomwer/app/darkref.py CHANGED
@@ -1,4 +1,4 @@
1
- from silx.utils.deprecation import deprecated_warning
1
+ from tomwer.core.utils.deprecation import deprecated_warning
2
2
 
3
3
  deprecated_warning(
4
4
  "module",
@@ -1,4 +1,4 @@
1
- from silx.utils.deprecation import deprecated_warning
1
+ from tomwer.core.utils.deprecation import deprecated_warning
2
2
 
3
3
  deprecated_warning(
4
4
  "module",
tomwer/app/diffframe.py CHANGED
@@ -5,7 +5,7 @@ import argparse
5
5
  import logging
6
6
  import signal
7
7
  import sys
8
-
8
+ import silx
9
9
  from silx.gui import qt
10
10
 
11
11
  from tomwer.core.scan.scanfactory import ScanFactory
@@ -82,9 +82,9 @@ def main(argv):
82
82
  scan_2 = None
83
83
 
84
84
  if options.use_opengl_plot:
85
- import silx
86
-
87
85
  silx.config.DEFAULT_PLOT_BACKEND = "gl"
86
+ else:
87
+ silx.config.DEFAULT_PLOT_BACKEND = "matplotlib"
88
88
 
89
89
  # handle gui
90
90
  widget = DiffFrameViewer(parent=None)
@@ -8,7 +8,7 @@ import sys
8
8
 
9
9
  from silx.gui import qt
10
10
 
11
- from tomwer.core.scan.hdf5scan import HDF5TomoScan
11
+ from tomwer.core.scan.nxtomoscan import NXtomoScan
12
12
  from tomwer.core.utils.resource import increase_max_number_file
13
13
  from tomwer.core.process.edit.imagekeyeditor import ImageKeyEditorTask
14
14
  from tomwer.gui import icons
@@ -25,8 +25,8 @@ class ImageKeyDialog(_ImageKeyDialog):
25
25
  self._scan = None
26
26
 
27
27
  def setScan(self, scan):
28
- if not isinstance(scan, HDF5TomoScan):
29
- raise TypeError("This only manage HDF5TomoScan")
28
+ if not isinstance(scan, NXtomoScan):
29
+ raise TypeError("This only manage NXtomoScan")
30
30
  self._scan = scan
31
31
  _ImageKeyDialog.setScan(self, scan)
32
32
 
@@ -65,8 +65,8 @@ def main(argv):
65
65
  parser.add_argument("entry", default=None, help="Entry to treat")
66
66
  options = parser.parse_args(argv[1:])
67
67
 
68
- # image key can only handle HDF5Tomoscan for now
69
- scan = HDF5TomoScan(scan=options.scan_path, entry=options.entry)
68
+ # image key can only handle NXtomoScan for now
69
+ scan = NXtomoScan(scan=options.scan_path, entry=options.entry)
70
70
  increase_max_number_file()
71
71
 
72
72
  app = qt.QApplication.instance() or qt.QApplication(["tomwer"])
@@ -9,7 +9,7 @@ import sys
9
9
  from silx.gui import qt
10
10
 
11
11
  from tomwer.core.process.edit.imagekeyeditor import ImageKeyUpgraderTask
12
- from tomwer.core.scan.hdf5scan import HDF5TomoScan
12
+ from tomwer.core.scan.nxtomoscan import NXtomoScan
13
13
  from tomwer.core.utils.resource import increase_max_number_file
14
14
  from tomwer.gui import icons
15
15
  from tomwer.gui.edit.imagekeyeditor import (
@@ -40,8 +40,8 @@ class ImageKeyUpgraderDialog(qt.QDialog):
40
40
  self._buttons.button(qt.QDialogButtonBox.Cancel).released.connect(self.close)
41
41
 
42
42
  def setScan(self, scan):
43
- if not isinstance(scan, HDF5TomoScan):
44
- raise TypeError("This only manage HDF5TomoScan")
43
+ if not isinstance(scan, NXtomoScan):
44
+ raise TypeError("This only manage NXtomoScan")
45
45
  self._scan = scan
46
46
 
47
47
  def validate(self):
@@ -74,8 +74,8 @@ def main(argv):
74
74
  parser.add_argument("entry", default=None, help="Entry to treat")
75
75
  options = parser.parse_args(argv[1:])
76
76
 
77
- # image key can only handle HDF5Tomoscan for now
78
- scan = HDF5TomoScan(scan=options.scan_path, entry=options.entry)
77
+ # image key can only handle NXtomoScan for now
78
+ scan = NXtomoScan(scan=options.scan_path, entry=options.entry)
79
79
  increase_max_number_file()
80
80
 
81
81
  app = qt.QApplication.instance() or qt.QApplication(["tomwer"])
@@ -10,7 +10,7 @@ import sys
10
10
  from silx.gui import qt
11
11
 
12
12
  from tomwer.core.process.reconstruction.normalization import SinoNormalizationTask
13
- from tomwer.core.scan.hdf5scan import HDF5TomoScan
13
+ from tomwer.core.scan.nxtomoscan import NXtomoScan
14
14
  from tomwer.core.scan.scanbase import TomwerScanBase
15
15
  from tomwer.core.scan.scanfactory import ScanFactory
16
16
  from tomwer.gui import icons
@@ -72,17 +72,18 @@ class NormIntensityWindow(_SinoNormWindow):
72
72
  def _validated(self):
73
73
  scan = self.getScan()
74
74
  if scan is not None:
75
- SinoNormalizationTask._register_process(
76
- process_file=scan.process_file,
77
- process=SinoNormalizationTask,
78
- entry=scan.entry,
79
- configuration=self.getConfiguration(),
80
- results={
81
- "method": scan.intensity_normalization.method.value,
82
- "extra_infos": scan.intensity_normalization.get_extra_infos(),
83
- },
84
- process_index=scan.pop_process_index(),
85
- )
75
+ with scan.acquire_process_file_lock():
76
+ SinoNormalizationTask._register_process(
77
+ process_file=scan.process_file,
78
+ process=SinoNormalizationTask,
79
+ entry=scan.entry,
80
+ configuration=self.getConfiguration(),
81
+ results={
82
+ "method": scan.intensity_normalization.method.value,
83
+ "extra_infos": scan.intensity_normalization.get_extra_infos(),
84
+ },
85
+ process_index=scan.pop_process_index(),
86
+ )
86
87
  self.close()
87
88
 
88
89
  def _launchProcessing(self):
@@ -175,7 +176,7 @@ def main(argv):
175
176
  )
176
177
  if options.entry is None:
177
178
  raise ValueError("entry in the master file should be specify")
178
- scan = HDF5TomoScan(scan=options.scan_path, entry=options.entry)
179
+ scan = NXtomoScan(scan=options.scan_path, entry=options.entry)
179
180
  else:
180
181
  scan = ScanFactory.mock_scan()
181
182
  # define the process_index is any tomwer_processes_existing