tomwer 1.2.9__py3-none-any.whl → 1.3.0a0__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 (253) hide show
  1. orangecontrib/tomwer/tutorials/icat_publication.ows +58 -0
  2. orangecontrib/tomwer/widgets/__init__.py +1 -0
  3. orangecontrib/tomwer/widgets/control/DataDiscoveryOW.py +2 -2
  4. orangecontrib/tomwer/widgets/control/DataListOW.py +9 -7
  5. orangecontrib/tomwer/widgets/control/DataSelectorOW.py +21 -10
  6. orangecontrib/tomwer/widgets/control/EDF2NXTomomillOW.py +11 -5
  7. orangecontrib/tomwer/widgets/control/EmailOW.py +4 -4
  8. orangecontrib/tomwer/widgets/control/NXTomomillOW.py +31 -18
  9. orangecontrib/tomwer/widgets/control/NXtomoConcatenate.py +14 -7
  10. orangecontrib/tomwer/widgets/control/NotifierOW.py +1 -0
  11. orangecontrib/tomwer/widgets/control/VolumeSelector.py +7 -4
  12. orangecontrib/tomwer/widgets/control/VolumeSymLinkOW.py +182 -182
  13. orangecontrib/tomwer/widgets/debugtools/DatasetGeneratorOW.py +4 -4
  14. orangecontrib/tomwer/widgets/edit/DarkFlatPatchOW.py +4 -4
  15. orangecontrib/tomwer/widgets/edit/ImageKeyEditorOW.py +3 -3
  16. orangecontrib/tomwer/widgets/edit/ImageKeyUpgraderOW.py +2 -0
  17. orangecontrib/tomwer/widgets/edit/NXtomoEditorOW.py +3 -3
  18. orangecontrib/tomwer/widgets/edit/test/test_nxtomo_editor.py +3 -3
  19. orangecontrib/tomwer/widgets/icat/PublishProcessedDataOW.py +115 -0
  20. orangecontrib/tomwer/widgets/icat/RawDataScreenshotCreatorOW.py +98 -0
  21. orangecontrib/tomwer/widgets/icat/SaveToGalleryAndPublishOW.py +129 -0
  22. orangecontrib/tomwer/widgets/icat/__init__.py +13 -0
  23. orangecontrib/tomwer/widgets/icat/icons/add_gallery.png +0 -0
  24. orangecontrib/tomwer/widgets/icat/icons/add_gallery.svg +82 -0
  25. orangecontrib/tomwer/widgets/icat/icons/publish_processed_data.png +0 -0
  26. orangecontrib/tomwer/widgets/icat/icons/publish_processed_data.svg +95 -0
  27. orangecontrib/tomwer/widgets/icat/icons/raw_screenshots.png +0 -0
  28. orangecontrib/tomwer/widgets/icat/icons/raw_screenshots.svg +143 -0
  29. orangecontrib/tomwer/widgets/icons/tomwer_data_portal.png +0 -0
  30. orangecontrib/tomwer/widgets/icons/tomwer_data_portal.svg +76 -0
  31. orangecontrib/tomwer/widgets/reconstruction/AxisOW.py +9 -8
  32. orangecontrib/tomwer/widgets/reconstruction/CastNabuVolumeOW.py +3 -3
  33. orangecontrib/tomwer/widgets/reconstruction/NabuHelicalPrepareWeightsDoubleOW.py +179 -169
  34. orangecontrib/tomwer/widgets/reconstruction/NabuOW.py +23 -0
  35. orangecontrib/tomwer/widgets/reconstruction/NabuVolumeOW.py +39 -5
  36. orangecontrib/tomwer/widgets/reconstruction/SAAxisOW.py +7 -13
  37. orangecontrib/tomwer/widgets/reconstruction/SADeltaBetaOW.py +7 -17
  38. orangecontrib/tomwer/widgets/reconstruction/SinoNormOW.py +3 -4
  39. orangecontrib/tomwer/widgets/visualization/LivesliceOW.py +1 -1
  40. orangecontrib/tomwer/widgets/visualization/NXtomoMetadataViewerOW.py +3 -3
  41. orangecontrib/tomwer/widgets/visualization/VolumeViewerOW.py +3 -29
  42. tomwer/__main__.py +11 -58
  43. tomwer/app/canvas.py +8 -0
  44. tomwer/app/canvas_launcher/config.py +13 -11
  45. tomwer/app/darkref.py +1 -1
  46. tomwer/app/darkrefpatch.py +1 -1
  47. tomwer/app/imagekeyeditor.py +5 -5
  48. tomwer/app/imagekeyupgrader.py +5 -5
  49. tomwer/app/intensitynormalization.py +2 -2
  50. tomwer/app/radiostack.py +2 -2
  51. tomwer/app/zstitching.py +74 -3
  52. tomwer/core/cluster/cluster.py +26 -0
  53. tomwer/core/log/logger.py +7 -5
  54. tomwer/core/process/conditions/filters.py +1 -1
  55. tomwer/core/process/control/datalistener/datalistener.py +3 -3
  56. tomwer/core/process/control/nxtomoconcatenate.py +13 -13
  57. tomwer/core/process/control/nxtomomill.py +83 -25
  58. tomwer/core/process/control/scantransfer.py +11 -10
  59. tomwer/core/process/control/scanvalidator.py +3 -2
  60. tomwer/core/process/control/test/test_concatenate_nxtomos.py +9 -9
  61. tomwer/core/process/control/test/test_email.py +4 -4
  62. tomwer/core/process/control/test/test_h52nx_process.py +59 -7
  63. tomwer/core/process/control/test/test_volume_link.py +64 -64
  64. tomwer/core/process/control/timer.py +1 -1
  65. tomwer/core/process/control/volumesymlink.py +200 -200
  66. tomwer/core/process/edit/darkflatpatch.py +6 -6
  67. tomwer/core/process/edit/imagekeyeditor.py +17 -18
  68. tomwer/core/process/icat/__init__.py +0 -0
  69. tomwer/core/process/icat/createscreenshots.py +100 -0
  70. tomwer/core/process/icat/gallery.py +377 -0
  71. tomwer/core/process/icat/icatbase.py +36 -0
  72. tomwer/core/process/icat/publish.py +228 -0
  73. tomwer/core/process/icat/screenshots.py +26 -0
  74. tomwer/core/process/output.py +52 -0
  75. tomwer/core/process/reconstruction/axis/axis.py +17 -10
  76. tomwer/core/process/reconstruction/axis/mode.py +4 -0
  77. tomwer/core/process/reconstruction/axis/params.py +9 -4
  78. tomwer/core/process/reconstruction/darkref/darkrefs.py +8 -6
  79. tomwer/core/process/reconstruction/darkref/darkrefscopy.py +1 -1
  80. tomwer/core/process/reconstruction/darkref/params.py +1 -1
  81. tomwer/core/process/reconstruction/lamino/tofu.py +4 -4
  82. tomwer/core/process/reconstruction/nabu/castvolume.py +1 -1
  83. tomwer/core/process/reconstruction/nabu/helical.py +9 -5
  84. tomwer/core/process/reconstruction/nabu/nabucommon.py +32 -62
  85. tomwer/core/process/reconstruction/nabu/nabuscores.py +387 -61
  86. tomwer/core/process/reconstruction/nabu/nabuslices.py +33 -21
  87. tomwer/core/process/reconstruction/nabu/nabuvolume.py +37 -14
  88. tomwer/core/process/reconstruction/nabu/settings.py +2 -2
  89. tomwer/core/process/reconstruction/nabu/utils.py +129 -24
  90. tomwer/core/process/reconstruction/output.py +108 -0
  91. tomwer/core/process/reconstruction/saaxis/saaxis.py +233 -263
  92. tomwer/core/process/reconstruction/sadeltabeta/sadeltabeta.py +140 -86
  93. tomwer/core/process/reconstruction/scores/params.py +4 -1
  94. tomwer/core/process/reconstruction/scores/scores.py +13 -0
  95. tomwer/core/process/reconstruction/test/test_axis_params.py +2 -2
  96. tomwer/core/process/reconstruction/test/test_darkref.py +3 -3
  97. tomwer/core/process/reconstruction/test/test_darkref_copy.py +3 -3
  98. tomwer/core/process/reconstruction/test/test_saaxis.py +3 -4
  99. tomwer/core/process/reconstruction/test/test_sadeltabeta.py +2 -2
  100. tomwer/core/process/stitching/nabustitcher.py +2 -2
  101. tomwer/core/process/test/test_axis.py +6 -6
  102. tomwer/core/process/test/test_dark_and_flat.py +10 -7
  103. tomwer/core/process/test/test_data_transfer.py +7 -6
  104. tomwer/core/process/test/test_nabu.py +4 -4
  105. tomwer/core/process/test/test_normalization.py +2 -2
  106. tomwer/core/scan/edfscan.py +4 -1
  107. tomwer/core/scan/hdf5scan.py +19 -500
  108. tomwer/core/scan/nxtomoscan.py +532 -0
  109. tomwer/core/scan/scanbase.py +42 -20
  110. tomwer/core/scan/scanfactory.py +13 -13
  111. tomwer/core/scan/test/test_future_scan.py +2 -2
  112. tomwer/core/scan/test/test_h5.py +12 -10
  113. tomwer/core/scan/test/test_process_registration.py +2 -2
  114. tomwer/core/scan/test/test_scan.py +4 -3
  115. tomwer/core/settings.py +20 -0
  116. tomwer/core/test/test_scanutils.py +8 -7
  117. tomwer/core/test/test_utils.py +33 -26
  118. tomwer/core/utils/__init__.py +0 -466
  119. tomwer/core/utils/deprecation.py +1 -1
  120. tomwer/core/utils/dictutils.py +14 -0
  121. tomwer/core/utils/lbsram.py +35 -0
  122. tomwer/core/utils/nxtomoutils.py +1 -1
  123. tomwer/core/utils/scanutils.py +6 -6
  124. tomwer/core/utils/spec.py +263 -0
  125. tomwer/core/volume/volumefactory.py +2 -2
  126. tomwer/gui/cluster/slurm.py +260 -60
  127. tomwer/gui/cluster/test/test_cluster.py +13 -0
  128. tomwer/gui/cluster/test/test_supervisor.py +2 -2
  129. tomwer/gui/configuration/__init__.py +0 -0
  130. tomwer/gui/{reconstruction/nabu → configuration}/action.py +1 -32
  131. tomwer/gui/configuration/level.py +22 -0
  132. tomwer/gui/control/actions.py +54 -0
  133. tomwer/gui/control/datalist.py +78 -16
  134. tomwer/gui/control/datalistener.py +4 -16
  135. tomwer/gui/control/{email.py → emailnotifier.py} +9 -18
  136. tomwer/gui/control/history.py +2 -2
  137. tomwer/gui/control/observations.py +2 -2
  138. tomwer/gui/control/reducedarkflatselector.py +1 -1
  139. tomwer/gui/control/selectorwidgetbase.py +36 -9
  140. tomwer/gui/control/serie/seriecreator.py +5 -22
  141. tomwer/gui/control/test/test_email.py +1 -1
  142. tomwer/gui/control/test/test_scanvalidator.py +6 -5
  143. tomwer/gui/control/test/test_single_tomo_obj.py +2 -2
  144. tomwer/gui/control/tomoobjdisplaymode.py +8 -0
  145. tomwer/gui/debugtools/datasetgenerator.py +3 -3
  146. tomwer/gui/edit/dkrfpatch.py +16 -22
  147. tomwer/gui/edit/imagekeyeditor.py +8 -11
  148. tomwer/gui/edit/nxtomoeditor.py +111 -44
  149. tomwer/gui/edit/nxtomowarmer.py +4 -4
  150. tomwer/gui/edit/test/test_dkrf_patch.py +7 -7
  151. tomwer/gui/edit/test/test_image_key_editor.py +3 -3
  152. tomwer/gui/edit/test/test_nx_editor.py +40 -16
  153. tomwer/gui/icat/__init__.py +0 -0
  154. tomwer/gui/icat/createscreenshots.py +80 -0
  155. tomwer/gui/icat/gallery.py +214 -0
  156. tomwer/gui/icat/publish.py +187 -0
  157. tomwer/gui/reconstruction/axis/axis.py +171 -57
  158. tomwer/gui/reconstruction/axis/radioaxis.py +80 -95
  159. tomwer/gui/reconstruction/darkref/darkrefcopywidget.py +3 -2
  160. tomwer/gui/reconstruction/lamino/tofu/projections.py +1 -1
  161. tomwer/gui/reconstruction/lamino/tofu/tofuoutput.py +3 -6
  162. tomwer/gui/reconstruction/nabu/castvolume.py +1 -1
  163. tomwer/gui/reconstruction/nabu/check.py +9 -9
  164. tomwer/gui/reconstruction/nabu/helical.py +29 -12
  165. tomwer/gui/reconstruction/nabu/nabuconfig/base.py +2 -4
  166. tomwer/gui/reconstruction/nabu/nabuconfig/output.py +110 -33
  167. tomwer/gui/reconstruction/nabu/nabuconfig/phase.py +9 -12
  168. tomwer/gui/reconstruction/nabu/nabuconfig/preprocessing.py +219 -29
  169. tomwer/gui/reconstruction/nabu/nabuconfig/reconstruction.py +3 -6
  170. tomwer/gui/reconstruction/nabu/nabuflow.py +12 -20
  171. tomwer/gui/reconstruction/nabu/slices.py +6 -7
  172. tomwer/gui/reconstruction/nabu/volume.py +22 -10
  173. tomwer/gui/reconstruction/normalization/intensity.py +15 -23
  174. tomwer/gui/reconstruction/saaxis/corrangeselector.py +7 -23
  175. tomwer/gui/reconstruction/saaxis/dimensionwidget.py +1 -1
  176. tomwer/gui/reconstruction/saaxis/saaxis.py +7 -9
  177. tomwer/gui/reconstruction/sadeltabeta/saadeltabeta.py +2 -1
  178. tomwer/gui/reconstruction/scores/control.py +2 -9
  179. tomwer/gui/reconstruction/scores/scoreplot.py +11 -5
  180. tomwer/gui/reconstruction/test/test_axis.py +23 -12
  181. tomwer/gui/reconstruction/test/test_lamino.py +8 -3
  182. tomwer/gui/reconstruction/test/test_nabu.py +28 -9
  183. tomwer/gui/reconstruction/test/test_saaxis.py +3 -3
  184. tomwer/gui/reconstruction/test/test_sadeltabeta.py +2 -2
  185. tomwer/gui/settings.py +5 -28
  186. tomwer/gui/stackplot.py +2 -5
  187. tomwer/gui/stitching/action.py +49 -0
  188. tomwer/gui/stitching/config/axisparams.py +7 -24
  189. tomwer/gui/stitching/config/output.py +10 -8
  190. tomwer/gui/stitching/config/positionoveraxis.py +22 -23
  191. tomwer/gui/stitching/normalization.py +117 -0
  192. tomwer/gui/stitching/stitchandbackground.py +4 -6
  193. tomwer/gui/stitching/stitching.py +265 -43
  194. tomwer/gui/stitching/stitching_preview.py +62 -5
  195. tomwer/gui/stitching/stitching_raw.py +2 -5
  196. tomwer/gui/stitching/z_stitching/fineestimation.py +0 -60
  197. tomwer/gui/utils/buttons.py +112 -29
  198. tomwer/gui/utils/inputwidget.py +33 -25
  199. tomwer/gui/utils/scandescription.py +4 -0
  200. tomwer/gui/utils/step.py +144 -0
  201. tomwer/gui/utils/unitsystem.py +2 -5
  202. tomwer/gui/utils/vignettes.py +176 -15
  203. tomwer/gui/visualization/dataviewer.py +1 -4
  204. tomwer/gui/visualization/diffviewer/diffviewer.py +7 -16
  205. tomwer/gui/visualization/diffviewer/shiftwidget.py +2 -5
  206. tomwer/gui/visualization/scanoverview.py +1 -1
  207. tomwer/gui/visualization/sinogramviewer.py +1 -10
  208. tomwer/gui/visualization/test/test_diffviewer.py +3 -3
  209. tomwer/gui/visualization/test/test_nx_tomo_metadata_viewer.py +4 -4
  210. tomwer/gui/visualization/test/test_sinogramviewer.py +2 -2
  211. tomwer/gui/visualization/test/test_stacks.py +3 -3
  212. tomwer/gui/visualization/test/test_volumeviewer.py +2 -2
  213. tomwer/io/utils/raw_and_processed_data.py +84 -0
  214. tomwer/io/utils/tomoobj.py +4 -6
  215. tomwer/resources/gui/icons/ruler.png +0 -0
  216. tomwer/resources/gui/icons/ruler.svg +273 -0
  217. tomwer/resources/gui/icons/short_description.png +0 -0
  218. tomwer/resources/gui/icons/short_description.svg +58 -0
  219. tomwer/resources/gui/icons/url.png +0 -0
  220. tomwer/resources/gui/icons/url.svg +58 -0
  221. tomwer/synctools/stacks/edit/darkflatpatch.py +2 -2
  222. tomwer/synctools/stacks/edit/imagekeyeditor.py +2 -2
  223. tomwer/synctools/stacks/reconstruction/axis.py +4 -4
  224. tomwer/synctools/stacks/reconstruction/castvolume.py +2 -2
  225. tomwer/synctools/stacks/reconstruction/dkrefcopy.py +4 -10
  226. tomwer/synctools/stacks/reconstruction/nabu.py +2 -2
  227. tomwer/synctools/stacks/reconstruction/normalization.py +2 -2
  228. tomwer/synctools/stacks/reconstruction/saaxis.py +2 -2
  229. tomwer/synctools/stacks/reconstruction/sadeltabeta.py +2 -2
  230. tomwer/synctools/test/test_darkRefs.py +7 -58
  231. tomwer/synctools/test/test_foldertransfer.py +6 -6
  232. tomwer/synctools/utils/scanstages.py +6 -6
  233. tomwer/tests/conftest.py +34 -0
  234. tomwer/tests/datasets.py +13 -0
  235. tomwer/tests/test_scripts.py +92 -39
  236. tomwer/tests/utils.py +5 -0
  237. tomwer/version.py +3 -3
  238. {tomwer-1.2.9.dist-info → tomwer-1.3.0a0.dist-info}/METADATA +39 -39
  239. {tomwer-1.2.9.dist-info → tomwer-1.3.0a0.dist-info}/RECORD +248 -209
  240. tomwer/resources/gui/icons/esrf_1.svg +0 -307
  241. tomwer/resources/gui/icons/triangle.svg +0 -80
  242. tomwer/synctools/test/test_scanstages.py +0 -162
  243. tomwer/tests/utils/__init__.py +0 -247
  244. tomwer/tests/utils/utilstest.py +0 -220
  245. /tomwer/app/{saaxis.py → multicor.py} +0 -0
  246. /tomwer/app/{sadeltabeta.py → multipag.py} +0 -0
  247. /tomwer/core/process/control/{email.py → emailnotifier.py} +0 -0
  248. /tomwer-1.2.9-py3.11-nspkg.pth → /tomwer-1.3.0a0-py3.11-nspkg.pth +0 -0
  249. {tomwer-1.2.9.dist-info → tomwer-1.3.0a0.dist-info}/LICENSE +0 -0
  250. {tomwer-1.2.9.dist-info → tomwer-1.3.0a0.dist-info}/WHEEL +0 -0
  251. {tomwer-1.2.9.dist-info → tomwer-1.3.0a0.dist-info}/entry_points.txt +0 -0
  252. {tomwer-1.2.9.dist-info → tomwer-1.3.0a0.dist-info}/namespace_packages.txt +0 -0
  253. {tomwer-1.2.9.dist-info → tomwer-1.3.0a0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,58 @@
1
+ <?xml version='1.0' encoding='utf-8'?>
2
+ <scheme version="2.0" title="Reconstruction of a volume and publication to icat" description="">
3
+ <nodes>
4
+ <node id="0" name="scan selector" qualified_name="orangecontrib.tomwer.widgets.control.DataSelectorOW.DataSelectorOW" project_name="tomwer" version="" title="scan selector" position="(150, 150)" />
5
+ <node id="1" name="reduced darks and flats" qualified_name="orangecontrib.tomwer.widgets.reconstruction.DarkRefAndCopyOW.DarkRefAndCopyOW" project_name="tomwer" version="" title="reduced darks and flats" position="(324.0, 183.0)" />
6
+ <node id="2" name="default center of rotation" qualified_name="orangecontrib.tomwer.widgets.reconstruction.AxisOW.AxisOW" project_name="tomwer" version="" title="default center of rotation" position="(490.0, 218.0)" />
7
+ <node id="3" name="nabu slice reconstruction" qualified_name="orangecontrib.tomwer.widgets.reconstruction.NabuOW.NabuOW" project_name="tomwer" version="" title="nabu slice reconstruction" position="(649.0, 261.0)" />
8
+ <node id="4" name="data viewer" qualified_name="orangecontrib.tomwer.widgets.visualization.DataViewerOW.DataViewerOW" project_name="tomwer" version="" title="data viewer" position="(818.0, 248.0)" />
9
+ <node id="5" name="nabu volume reconstruction" qualified_name="orangecontrib.tomwer.widgets.reconstruction.NabuVolumeOW.NabuVolumeOW" project_name="tomwer" version="" title="nabu volume reconstruction" position="(812.0, 391.0)" />
10
+ <node id="6" name="volume viewer" qualified_name="orangecontrib.tomwer.widgets.visualization.VolumeViewerOW.VolumeViewerOW" project_name="tomwer" version="" title="volume viewer" position="(986.75, 383.25)" />
11
+ <node id="7" name="create raw data screenshots" qualified_name="orangecontrib.tomwer.widgets.icat.RawDataScreenshotCreatorOW.RawDataScreenshotCreatorOW" project_name="tomwer" version="" title="create raw data screenshots" position="(321.0, 509.0)" />
12
+ <node id="8" name="save to gallery and publish" qualified_name="orangecontrib.tomwer.widgets.icat.SaveToGalleryAndPublishOW.SaveToGalleryAndPublishOW" project_name="tomwer" version="" title="save to gallery and publish" position="(506.0, 510.0)" />
13
+ <node id="9" name="save to gallery and publish" qualified_name="orangecontrib.tomwer.widgets.icat.SaveToGalleryAndPublishOW.SaveToGalleryAndPublishOW" project_name="tomwer" version="" title="save to gallery and publish (1)" position="(731.0, 514.0)" />
14
+ <node id="10" name="Publish processed data to icat" qualified_name="orangecontrib.tomwer.widgets.icat.PublishProcessedDataOW.PublishProcessedDataOW" project_name="tomwer" version="" title="Publish processed data to icat" position="(990.0, 514.0)" />
15
+ </nodes>
16
+ <links>
17
+ <link id="0" source_node_id="0" sink_node_id="1" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
18
+ <link id="1" source_node_id="1" sink_node_id="2" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
19
+ <link id="2" source_node_id="2" sink_node_id="3" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
20
+ <link id="3" source_node_id="3" sink_node_id="4" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
21
+ <link id="4" source_node_id="3" sink_node_id="5" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
22
+ <link id="5" source_node_id="5" sink_node_id="6" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
23
+ <link id="6" source_node_id="0" sink_node_id="7" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
24
+ <link id="7" source_node_id="7" sink_node_id="8" source_channel="screenshots" sink_channel="screenshots" enabled="true" source_channel_id="screenshots" sink_channel_id="screenshots" />
25
+ <link id="8" source_node_id="3" sink_node_id="9" source_channel="screenshots" sink_channel="screenshots" enabled="true" source_channel_id="screenshots" sink_channel_id="screenshots" />
26
+ <link id="9" source_node_id="5" sink_node_id="10" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
27
+ </links>
28
+ <annotations>
29
+ <arrow id="0" start="(267.0, 56.0)" end="(194.0, 105.0)" fill="#C1272D" />
30
+ <text id="1" type="text/plain" rect="(276.25, 17.75, 150.0, 31.0)" font-family="Ubuntu" font-size="16">provide dataset</text>
31
+ <text id="2" type="text/plain" rect="(146.0, 597.0, 168.0, 89.0)" font-family="Cantarell" font-size="16">create screenshot for raw projection, raw falt and raw dark</text>
32
+ <text id="3" type="text/plain" rect="(413.0, 612.0, 215.0, 62.0)" font-family="Cantarell" font-size="16">save screenshot to the gallry and publish to icat</text>
33
+ <arrow id="4" start="(630.0, 605.0)" end="(674.0, 573.0)" fill="#C1272D" />
34
+ <arrow id="5" start="(475.99999999999994, 612.0)" end="(477.99999999999994, 568.0)" fill="#C1272D" />
35
+ <arrow id="6" start="(607.0, 387.0)" end="(671.0, 395.0)" fill="#C1272D" />
36
+ <text id="7" type="text/plain" rect="(449.0, 350.0, 150.0, 51.0)" font-family="Cantarell" font-size="16">screenshot of the reconstructed slice</text>
37
+ <arrow id="8" start="(235.0, 592.0)" end="(281.0, 521.0)" fill="#C1272D" />
38
+ <text id="9" type="text/plain" rect="(901.0, 618.0, 179.0, 70.0)" font-family="Cantarell" font-size="16">publish reconstructed volume to icat</text>
39
+ <arrow id="10" start="(980.0, 621.0)" end="(981.0, 579.0)" fill="#C1272D" />
40
+ </annotations>
41
+ <thumbnail />
42
+ <node_properties>
43
+ <properties node_id="0" format="literal">{'_scanIDs': [], 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
44
+ <properties node_id="1" format="literal">{'_ewoks_default_inputs': {'data': None, 'dark_ref_params': None}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
45
+ <properties node_id="2" format="literal">{'_ewoks_default_inputs': {'data': None, 'axis_params': {'MODE': 'manual', 'POSITION_VALUE': None, 'CALC_INPUT_TYPE': 'transmission_nopag', 'ANGLE_MODE': '0-180', 'USE_SINOGRAM': False, 'SINOGRAM_LINE': '', 'SINOGRAM_SUBSAMPLING': 10, 'AXIS_URL_1': '', 'AXIS_URL_2': '', 'LOOK_AT_STDMAX': False, 'NEAR_WX': 5, 'FINE_STEP_X': 0.1, 'SCALE_IMG2_TO_IMG1': False, 'NEAR_POSITION': 0.0, 'PADDING_MODE': 'edge', 'FLIP_LR': True, 'COMPOSITE_OPTS': {'theta': 10, 'n_subsampling_y': 10, 'oversampling': 4, 'take_log': True, 'near_pos': 0, 'near_width': 20}, 'SIDE': 'all', 'COR_OPTIONS': ''}, 'gui': {'mode_is_lock': False, 'value_is_lock': False, 'auto_update_estimated_cor': True}}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
46
+ <properties node_id="3" format="literal">{'_ewoks_default_inputs': {'data': None, 'nabu_params': None}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
47
+ <properties node_id="4" format="literal">{'_viewer_config': {}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
48
+ <properties node_id="5" format="literal">{'_ewoks_default_inputs': {'data': None, 'nabu_volume_params': None, 'nabu_params': None}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
49
+ <properties node_id="6" format="literal">{'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
50
+ <properties node_id="7" format="literal">{'_ewoks_default_inputs': {}, '_ewoks_execinfo': {}, '_ewoks_varinfo': {}, 'controlAreaVisible': True, 'default_inputs': {}, 'savedWidgetGeometry': None, '__version__': 1}</properties>
51
+ <properties node_id="8" format="literal">{'_ewoks_default_inputs': {}, '_ewoks_execinfo': {}, '_ewoks_varinfo': {}, 'controlAreaVisible': True, 'default_inputs': {}, 'savedWidgetGeometry': None, '__version__': 1}</properties>
52
+ <properties node_id="9" format="literal">{'_ewoks_default_inputs': {}, '_ewoks_execinfo': {}, '_ewoks_varinfo': {}, 'controlAreaVisible': True, 'default_inputs': {}, 'savedWidgetGeometry': None, '__version__': 1}</properties>
53
+ <properties node_id="10" format="literal">{'_ewoks_default_inputs': {}, '_ewoks_execinfo': {}, '_ewoks_varinfo': {}, 'controlAreaVisible': True, 'default_inputs': {}, 'savedWidgetGeometry': None, '__version__': 1}</properties>
54
+ </node_properties>
55
+ <session_state>
56
+ <window_groups />
57
+ </session_state>
58
+ </scheme>
@@ -39,6 +39,7 @@ def widget_discovery(discovery):
39
39
  "orangecontrib.tomwer.widgets.control",
40
40
  "orangecontrib.tomwer.widgets.debugtools",
41
41
  "orangecontrib.tomwer.widgets.edit",
42
+ "orangecontrib.tomwer.widgets.icat",
42
43
  "orangecontrib.tomwer.widgets.reconstruction",
43
44
  # "orangecontrib.tomwer.widgets.stitching",
44
45
  "orangecontrib.tomwer.widgets.visualization",
@@ -13,7 +13,7 @@ import tomwer.core.process.control.datadiscovery
13
13
  from orangecontrib.tomwer.widgets.utils import WidgetLongProcessing
14
14
  from tomwer.core.scan.blissscan import BlissScan
15
15
  from tomwer.core.scan.edfscan import EDFTomoScan
16
- from tomwer.core.scan.hdf5scan import HDF5TomoScan
16
+ from tomwer.core.scan.nxtomoscan import NXtomoScan
17
17
  from tomwer.core.scan.scanbase import TomwerScanBase
18
18
  from tomwer.core.scan.scanfactory import ScanFactory
19
19
  from tomwer.core.scan.scantype import ScanType
@@ -217,7 +217,7 @@ class _DiscoverThread(qt.QThread):
217
217
  ):
218
218
  self.sigDataFound.emit(scan)
219
219
  elif (
220
- isinstance(scan, HDF5TomoScan)
220
+ isinstance(scan, NXtomoScan)
221
221
  and self._research_type is ScanType.NX_TOMO
222
222
  ):
223
223
  self.sigDataFound.emit(scan)
@@ -35,9 +35,9 @@ from orangewidget.widget import Input, Output, OWBaseWidget
35
35
  from silx.gui import qt
36
36
 
37
37
  import tomwer.core.process.control.scanlist
38
- from tomwer.core.scan.hdf5scan import HDF5TomoScan
38
+ from tomwer.core.scan.nxtomoscan import NXtomoScan
39
39
  from tomwer.core.scan.scanbase import TomwerScanBase
40
- from tomwer.gui.control.datalist import GenericScanListDialog
40
+ from tomwer.gui.control.datalist import GenericScanListWindow
41
41
 
42
42
  logger = logging.getLogger(__name__)
43
43
 
@@ -73,19 +73,21 @@ class DataListOW(OWBaseWidget, openclass=True):
73
73
  :param parent: the parent widget
74
74
  """
75
75
  super().__init__(parent)
76
- self.widget = GenericScanListDialog(parent=self)
76
+
77
+ self.widget = GenericScanListWindow(parent=self)
78
+ self.widget.setWindowFlags(qt.Qt.Widget)
77
79
  self.widget.sigUpdated.connect(self._updateSettings)
78
80
  self._loadSettings()
79
81
  layout = gui.vBox(self.mainArea, self.name).layout()
80
82
  layout.addWidget(self.widget)
81
- self.widget._sendButton.clicked.connect(self._sendList)
83
+ self.widget._widget._sendButton.clicked.connect(self._sendList)
82
84
 
83
85
  # expose API
84
86
  self.n_scan = self.widget.n_scan
85
87
 
86
88
  # alias used for the 'simple workflow' for now
87
89
  self.start = self._sendList
88
- self.clear = self.widget.clear
90
+ self.clear = self.widget._widget.clear
89
91
 
90
92
  def _sendList(self):
91
93
  """Send a signal for each list to the next widget"""
@@ -107,8 +109,8 @@ class DataListOW(OWBaseWidget, openclass=True):
107
109
  # kept for backward compatibility since 0.11. To be removed on the future version.
108
110
  if "@" in scan:
109
111
  entry, file_path = scan.split("@")
110
- hdf5_tomo_scan = HDF5TomoScan(entry=entry, scan=file_path)
111
- self.add(hdf5_tomo_scan)
112
+ nxtomo_scan = NXtomoScan(entry=entry, scan=file_path)
113
+ self.add(nxtomo_scan)
112
114
  else:
113
115
  self.add(scan)
114
116
 
@@ -35,7 +35,7 @@ from orangewidget.widget import Input, Output, OWBaseWidget
35
35
  from silx.gui import qt
36
36
 
37
37
  import tomwer.core.process.control.scanselector
38
- from tomwer.core.scan.hdf5scan import HDF5TomoScan
38
+ from tomwer.core.scan.nxtomoscan import NXtomoScan
39
39
  from tomwer.core.scan.scanbase import TomwerScanBase
40
40
  from tomwer.gui.control.scanselectorwidget import ScanSelectorWidget
41
41
 
@@ -72,22 +72,21 @@ class DataSelectorOW(OWBaseWidget, openclass=True):
72
72
  super().__init__(parent)
73
73
 
74
74
  self.widget = ScanSelectorWidget(parent=self)
75
+ self.widget.setWindowFlags(qt.Qt.Widget)
75
76
  self._loadSettings()
76
77
 
77
78
  self.widget.sigUpdated.connect(self._updateSettings)
78
79
  self.widget.sigSelectionChanged.connect(self.changeSelection)
79
80
  layout = gui.vBox(self.mainArea, self.name).layout()
80
81
  layout.addWidget(self.widget)
81
- # expose API
82
- self.setActiveScan = self.widget.setActiveData
83
- self.selectAll = self.widget.selectAll
84
- self.n_scan = self.widget.n_scan
85
- self.add = self.widget.add
86
82
 
87
83
  @Inputs.data
88
84
  def addScan(self, scan, *args, **kwargs):
85
+ self.add(scan)
86
+
87
+ def add(self, scan):
89
88
  if scan is not None:
90
- self.widget.add(scan)
89
+ self.widget.add(scan=scan)
91
90
 
92
91
  def changeSelection(self, list_objs):
93
92
  if list_objs is None:
@@ -105,7 +104,9 @@ class DataSelectorOW(OWBaseWidget, openclass=True):
105
104
  """send output signals for each selected items"""
106
105
  sItem = self.widget.dataList.selectedItems()
107
106
  if sItem and len(sItem) >= 1:
108
- selection = [_item.text() for _item in sItem]
107
+ selection = [
108
+ _item.data(qt.Qt.UserRole).get_identifier().to_str() for _item in sItem
109
+ ]
109
110
  self.changeSelection(list_objs=selection)
110
111
 
111
112
  def _loadSettings(self):
@@ -114,8 +115,8 @@ class DataSelectorOW(OWBaseWidget, openclass=True):
114
115
  # kept for backward compatibility since 0.11. To be removed on the future version.
115
116
  if "@" in scan:
116
117
  entry, file_path = scan.split("@")
117
- hdf5_tomo_scan = HDF5TomoScan(entry=entry, scan=file_path)
118
- self.addScan(hdf5_tomo_scan)
118
+ nxtomo_scan = NXtomoScan(entry=entry, scan=file_path)
119
+ self.addScan(nxtomo_scan)
119
120
  else:
120
121
  self.addScan(scan)
121
122
 
@@ -132,3 +133,13 @@ class DataSelectorOW(OWBaseWidget, openclass=True):
132
133
  self.widget.removeSelectedDatasets()
133
134
  else:
134
135
  super().keyPressEvent(event)
136
+
137
+ # expose API
138
+ def setActiveScan(self, data):
139
+ self.widget.setActiveData(data=data)
140
+
141
+ def selectAll(self):
142
+ return self.widget.selectAll()
143
+
144
+ def n_scan(self):
145
+ return self.widget.n_scan()
@@ -38,7 +38,7 @@ from orangecontrib.tomwer.orange.managedprocess import TomwerWithStackStack
38
38
  from orangecontrib.tomwer.widgets.control.NXTomomillMixIn import NXTomomillMixIn
39
39
  from tomwer.core.process.control.nxtomomill import EDFToNxProcess
40
40
  from tomwer.core.scan.edfscan import EDFTomoScan
41
- from tomwer.core.scan.hdf5scan import HDF5TomoScan
41
+ from tomwer.core.scan.nxtomoscan import NXtomoScan
42
42
  from tomwer.gui.control.datalist import EDFDataListMainWindow
43
43
 
44
44
  logger = logging.getLogger(__name__)
@@ -54,7 +54,7 @@ class EDF2NXOW(
54
54
  to HDF5scan.
55
55
  """
56
56
 
57
- name = "edf2nx-nxtomomill"
57
+ name = "nxtomomill - edf2nx (Spec-EDF)"
58
58
  id = "orange.widgets.tomwer.control.NXTomomillOW.EDF2NXOW"
59
59
  description = "Convert folders with .edf to .nx"
60
60
  icon = "icons/edf2nx.svg"
@@ -79,6 +79,12 @@ class EDF2NXOW(
79
79
 
80
80
  LOGGER = logger
81
81
 
82
+ _ewoks_inputs_to_hide_from_orange = (
83
+ "edf_to_nx_configuration",
84
+ "progress",
85
+ "serialize_output_data",
86
+ )
87
+
82
88
  def __init__(self, parent=None):
83
89
  self.__configuration_cache = None
84
90
  # cache updated for each folder in order to match `_execute_ewoks_task` design
@@ -89,7 +95,7 @@ class EDF2NXOW(
89
95
  self.widget = EDFDataListMainWindow(parent=self)
90
96
  _layout.addWidget(self.widget)
91
97
  # for edf default output path is still the 'near to input file'
92
- self.widget._dialog._nxTomomillOutputWidget._closeToBlissFileRB.setChecked(True)
98
+ self.widget._dialog._nxTomomillOutputWidget._inScanFolder.setChecked(True)
93
99
  # add 'convert auto' check box
94
100
  self._convertAutoCB = qt.QCheckBox(
95
101
  "convert automatically when edf scan send through 'edf scan' channel", self
@@ -175,7 +181,7 @@ class EDF2NXOW(
175
181
  edf_to_nx_configuration=self.__configuration_cache.to_dict()
176
182
  )
177
183
 
178
- self.notify_on_going(scan=HDF5TomoScan(output_file, output_entry))
184
+ self.notify_on_going(scan=NXtomoScan(output_file, output_entry))
179
185
  self._execute_ewoks_task(propagate=True)
180
186
 
181
187
  def get_task_inputs(self):
@@ -204,7 +210,7 @@ class EDF2NXOW(
204
210
  task_suceeded = task_executor.succeeded
205
211
  config = task_executor.current_task.inputs.edf_to_nx_configuration
206
212
  config = EDFConfig.from_dict(config)
207
- scan = HDF5TomoScan(
213
+ scan = NXtomoScan(
208
214
  config.output_file,
209
215
  "entry",
210
216
  )
@@ -4,14 +4,14 @@ from orangewidget.settings import Setting
4
4
  from silx.gui import qt
5
5
  from ewoksorange.bindings.owwidgets import OWEwoksWidgetNoThread
6
6
 
7
- import tomwer.core.process.control.email
8
- from tomwer.gui.control.email import Emailwidget
9
- from tomwer.core.utils import concatenate_dict
7
+ import tomwer.core.process.control.emailnotifier
8
+ from tomwer.gui.control.emailnotifier import Emailwidget
9
+ from tomwer.core.utils.dictutils import concatenate_dict
10
10
 
11
11
 
12
12
  class EmailOW(
13
13
  OWEwoksWidgetNoThread,
14
- ewokstaskclass=tomwer.core.process.control.email.TomoEmailTask,
14
+ ewokstaskclass=tomwer.core.process.control.emailnotifier.TomoEmailTask,
15
15
  ):
16
16
  """
17
17
  This widget will browse a folder and sub folder to find valid tomo scan project.
@@ -39,7 +39,7 @@ from orangecontrib.tomwer.orange.managedprocess import TomwerWithStackStack
39
39
  from orangecontrib.tomwer.widgets.control.NXTomomillMixIn import NXTomomillMixIn
40
40
  from tomwer.core.process.control.nxtomomill import H5ToNxProcess
41
41
  from tomwer.core.scan.blissscan import BlissScan
42
- from tomwer.core.scan.hdf5scan import HDF5TomoScan, HDF5TomoScanIdentifier
42
+ from tomwer.core.scan.nxtomoscan import NXtomoScan, NXtomoScanIdentifier
43
43
  from tomwer.gui.control.datalist import BlissHDF5DataListMainWindow
44
44
  from tomwer.gui.control.nxtomomill import NXTomomillInput, OverwriteMessage
45
45
  from ewoksorange.bindings.owwidgets import invalid_data
@@ -58,7 +58,7 @@ class NXTomomillOW(
58
58
  to HDF5scan.
59
59
  """
60
60
 
61
- name = "bliss(HDF5)-nxtomomill"
61
+ name = "nxtomomill h52nx (bliss-HDF5)"
62
62
  id = "orange.widgets.tomwer.control.NXTomomillOW.NXTomomillOW"
63
63
  description = (
64
64
  "Read a bliss .h5 file and extract from it all possible"
@@ -76,6 +76,7 @@ class NXTomomillOW(
76
76
  "NXTomo",
77
77
  "tomography",
78
78
  "nxtomomill",
79
+ "h52nx",
79
80
  ]
80
81
 
81
82
  want_main_area = True
@@ -86,6 +87,12 @@ class NXTomomillOW(
86
87
 
87
88
  LOGGER = logger
88
89
 
90
+ _ewoks_inputs_to_hide_from_orange = (
91
+ "h5_to_nx_configuration",
92
+ "progress",
93
+ "serialize_output_data",
94
+ )
95
+
89
96
  def __init__(self, parent=None):
90
97
  TomwerWithStackStack.__init__(self, parent=parent)
91
98
  NXTomomillMixIn.__init__(self)
@@ -126,8 +133,8 @@ class NXTomomillOW(
126
133
  # kept for backward compatibility since 0.11. To be removed on the future version.
127
134
  if "@" in scan:
128
135
  entry, file_path = scan.split("@")
129
- hdf5_tomo_scan = HDF5TomoScan(entry=entry, scan=file_path)
130
- self.add(hdf5_tomo_scan)
136
+ nxtomo_scan = NXtomoScan(entry=entry, scan=file_path)
137
+ self.add(nxtomo_scan)
131
138
  else:
132
139
  self._scans.append(scan)
133
140
  self._ewoks_default_inputs[ # pylint: disable=E1137
@@ -157,12 +164,10 @@ class NXTomomillOW(
157
164
  h5_scan = super().get_task_inputs().get("hdf5_scan", None)
158
165
  if h5_scan is not None:
159
166
  if not isinstance(h5_scan, H5ToNxProcess):
160
- raise TypeError(
161
- "hdf5_scan is expected to be an instance of HDF5TomoScan"
162
- )
167
+ raise TypeError("hdf5_scan is expected to be an instance of NXtomoScan")
163
168
  self.add(h5_scan.path)
164
169
 
165
- def _convertAndSend(self, bliss_url):
170
+ def _convertAndSend(self, bliss_url: str):
166
171
  """
167
172
 
168
173
  :param str bliss_url: string at entry@file format
@@ -172,7 +177,7 @@ class NXTomomillOW(
172
177
  copy(self.get_default_input_values()["h5_to_nx_configuration"])
173
178
  )
174
179
 
175
- identifier = HDF5TomoScanIdentifier.from_str(bliss_url)
180
+ identifier = NXtomoScanIdentifier.from_str(bliss_url)
176
181
  bliss_scan = BlissScan(
177
182
  master_file=identifier.file_path,
178
183
  entry=identifier.data_path,
@@ -281,11 +286,13 @@ class NXTomomillOW(
281
286
  # reset the GUI for input (reset all the cache for answers)
282
287
  self._canOverwriteOutputs = False
283
288
  for bliss_url in self.widget.datalist.selectedItems():
284
- identifier = HDF5TomoScanIdentifier.from_str(bliss_url.text())
289
+ data = bliss_url.data(qt.Qt.UserRole)
290
+ assert isinstance(data, NXtomoScan)
291
+ identifier = data.get_identifier()
285
292
  self._inputGUI.setBlissScan(
286
293
  entry=identifier.data_path, file_path=identifier.file_path
287
294
  )
288
- self._convertAndSend(bliss_url.text())
295
+ self._convertAndSend(identifier.to_str())
289
296
 
290
297
  def _sendAll(self):
291
298
  """Send a signal for each scan found to the next widget"""
@@ -293,11 +300,13 @@ class NXTomomillOW(
293
300
  # reset the GUI for input (reset all the cache for answers)
294
301
  self._canOverwriteOutputs = False
295
302
  for bliss_url in self.widget.datalist._myitems.values():
296
- identifier = HDF5TomoScanIdentifier.from_str(bliss_url.text())
303
+ data = bliss_url.data(qt.Qt.UserRole)
304
+ identifier = data.get_identifier()
305
+ assert isinstance(data, NXtomoScan)
297
306
  self._inputGUI.setBlissScan(
298
307
  entry=identifier.data_path, file_path=identifier.file_path
299
308
  )
300
- self._convertAndSend(bliss_url.text())
309
+ self._convertAndSend(identifier.to_str())
301
310
 
302
311
  def _notify_state(self):
303
312
  try:
@@ -316,12 +325,16 @@ class NXTomomillOW(
316
325
  def trigger_downstream(self) -> None:
317
326
  for ewoksname, var in self.get_task_outputs().items():
318
327
  # note: for now we want to trigger 'data' for each items of 'datas'
319
- if ewoksname == "datas" and not (
328
+ if ewoksname == "serie" and not (
320
329
  invalid_data.is_invalid_data(var.value) or var.value is None
321
330
  ):
322
331
  for data in var.value:
323
- channel = self._get_output_signal("data")
324
- channel.send(data)
325
- channel = self._get_output_signal("datas")
332
+ data_channel = self._get_output_signal("data")
333
+ data_channel.send(data)
334
+ serie_channel = self._get_output_signal("serie")
326
335
  # then send the list of value / serie (also know as datas)
327
- channel.send(var.value)
336
+ serie_channel.send(var.value)
337
+ elif ewoksname == "data" and not (
338
+ invalid_data.is_invalid_data(var.value) or var.value is None
339
+ ):
340
+ pass # handle by 'serie' in this case
@@ -10,7 +10,7 @@ from silx.gui import qt
10
10
  from typing import Optional
11
11
 
12
12
  from tomwer.core.scan.scanbase import TomwerScanBase
13
- from tomwer.core.scan.hdf5scan import HDF5TomoScan
13
+ from tomwer.core.scan.nxtomoscan import NXtomoScan
14
14
  from tomwer.core.process.control.nxtomoconcatenate import (
15
15
  ConcatenateNXtomoTask,
16
16
  format_output_location,
@@ -34,7 +34,7 @@ class NXtomoConcatenateOW(
34
34
  # note of this widget should be the one registered on the documentation
35
35
  name = "NXtomo concatenation"
36
36
  id = "orangecontrib.tomwer.widgets.control.NXtomoConcatenate.NXtomoConcatenate"
37
- description = "concatenate a serie (of NXtomo / HDF5TomoScan) into a single Nxtomo"
37
+ description = "concatenate a serie (of NXtomo / NXtomoScan) into a single Nxtomo"
38
38
  icon = "icons/concatenate_nxtomos.svg"
39
39
  priority = 200
40
40
  keywords = [
@@ -44,7 +44,7 @@ class NXtomoConcatenateOW(
44
44
  "concatenate",
45
45
  "NXtomo",
46
46
  "data",
47
- "HDF5TomoScan",
47
+ "NXtomoScan",
48
48
  ]
49
49
 
50
50
  want_main_area = True
@@ -59,6 +59,13 @@ class NXtomoConcatenateOW(
59
59
  "overwrite": False,
60
60
  }
61
61
  )
62
+ _ewoks_inputs_to_hide_from_orange = (
63
+ "output_entry",
64
+ "serialize_output_data",
65
+ "progress",
66
+ "output_file",
67
+ "overwrite",
68
+ )
62
69
 
63
70
  TIMEOUT = 30
64
71
 
@@ -124,9 +131,9 @@ class NXtomoConcatenateOW(
124
131
  # task will be executed only when the user validates the dialog
125
132
  data = super().get_task_inputs().get("data", None)
126
133
  if data is not None:
127
- if not isinstance(data, HDF5TomoScan):
134
+ if not isinstance(data, NXtomoScan):
128
135
  raise TypeError(
129
- f"data is expected to be an instance of HDF5TomoScan. {type(data)} are not handled"
136
+ f"data is expected to be an instance of NXtomoScan. {type(data)} are not handled"
130
137
  )
131
138
  self.add(data.path)
132
139
 
@@ -136,7 +143,7 @@ class NXtomoConcatenateOW(
136
143
  def _newTaskStarted(self):
137
144
  try:
138
145
  task_executor = self.sender()
139
- scan_about_to_be_created = HDF5TomoScan(
146
+ scan_about_to_be_created = NXtomoScan(
140
147
  scan=format_output_location(
141
148
  file_path=task_executor.current_task.inputs.output_file_path,
142
149
  serie=task_executor.current_task.inputs.serie,
@@ -168,7 +175,7 @@ class NXtomoConcatenateOW(
168
175
  return
169
176
  else:
170
177
  self.__serie = serie
171
- scan_about_to_be_created = HDF5TomoScan(
178
+ scan_about_to_be_created = NXtomoScan(
172
179
  scan=format_output_location(
173
180
  file_path=self.getOutputFilePath(),
174
181
  serie=serie,
@@ -47,6 +47,7 @@ class NotifierWidgetOW(widget.OWBaseWidget):
47
47
  keywords = ["control", "notifier", "notification"]
48
48
 
49
49
  want_main_area = True
50
+ want_control_area = False
50
51
  resizing_enabled = False
51
52
 
52
53
  _muted = settings.Setting(False)
@@ -37,7 +37,7 @@ from orangewidget.widget import Input, Output, OWBaseWidget
37
37
  from silx.gui import qt
38
38
 
39
39
  import tomwer.core.process.control.volumeselector
40
- from tomwer.core.scan.hdf5scan import HDF5TomoScan
40
+ from tomwer.core.scan.nxtomoscan import NXtomoScan
41
41
  from tomwer.core.volume.volumebase import TomwerVolumeBase
42
42
  from tomwer.gui.control.volumeselectorwidget import VolumeSelectorWidget
43
43
 
@@ -88,7 +88,10 @@ class VolumeSelectorOW(OWBaseWidget, openclass=True):
88
88
  self.add = self.widget.add
89
89
 
90
90
  @Inputs.volume
91
- def addVolume(self, volume, *args, **kwargs):
91
+ def _volumeReceived(self, volume, *args, **kwargs):
92
+ self.addVolume(volume)
93
+
94
+ def addVolume(self, volume):
92
95
  if volume is not None:
93
96
  self.widget.add(volume)
94
97
 
@@ -119,8 +122,8 @@ class VolumeSelectorOW(OWBaseWidget, openclass=True):
119
122
  # kept for backward compatibility since 0.11. To be removed on the future version.
120
123
  if "@" in scan:
121
124
  entry, file_path = scan.split("@")
122
- hdf5_tomo_scan = HDF5TomoScan(entry=entry, scan=file_path)
123
- self.addVolume(hdf5_tomo_scan)
125
+ nxtomo_scan = NXtomoScan(entry=entry, scan=file_path)
126
+ self.addVolume(nxtomo_scan)
124
127
  else:
125
128
  self.addVolume(scan)
126
129