tomwer 1.2.0a1__py3-none-any.whl → 1.2.0a3__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 (219) hide show
  1. orangecontrib/tomwer/tutorials/append_raw_darks_and_flats_frames_to_NXtomos.ows +44 -0
  2. orangecontrib/tomwer/tutorials/copy_reduced_darks_and_flats_meth1.ows +55 -0
  3. orangecontrib/tomwer/tutorials/copy_reduced_darks_and_flats_meth2.ows +48 -0
  4. orangecontrib/tomwer/tutorials/default_cor_search.ows +40 -0
  5. orangecontrib/tomwer/tutorials/hello_world_python_script.ows +50 -0
  6. orangecontrib/tomwer/tutorials/simple_slice_reconstruction_on_slurm.ows +50 -0
  7. orangecontrib/tomwer/tutorials/simple_volume_to_slurm_reconstruction.ows +8 -8
  8. orangecontrib/tomwer/widgets/__init__.py +1 -1
  9. orangecontrib/tomwer/widgets/cluster/FutureSupervisorOW.py +0 -1
  10. orangecontrib/tomwer/widgets/cluster/SlurmClusterOW.py +8 -6
  11. orangecontrib/tomwer/widgets/control/AdvancementOW.py +0 -1
  12. orangecontrib/tomwer/widgets/control/DataDiscoveryOW.py +1 -6
  13. orangecontrib/tomwer/widgets/control/DataListOW.py +0 -1
  14. orangecontrib/tomwer/widgets/control/DataListenerOW.py +4 -4
  15. orangecontrib/tomwer/widgets/control/DataSelectorOW.py +0 -1
  16. orangecontrib/tomwer/widgets/control/DataTransfertOW.py +7 -7
  17. orangecontrib/tomwer/widgets/control/DataValidatorOW.py +0 -1
  18. orangecontrib/tomwer/widgets/control/DataWatcherOW.py +0 -3
  19. orangecontrib/tomwer/widgets/control/EDF2NXTomomillOW.py +3 -2
  20. orangecontrib/tomwer/widgets/control/EmailOW.py +82 -0
  21. orangecontrib/tomwer/widgets/control/FilterOW.py +3 -3
  22. orangecontrib/tomwer/widgets/control/NXTomomillOW.py +1 -1
  23. orangecontrib/tomwer/widgets/control/NotifierOW.py +0 -1
  24. orangecontrib/tomwer/widgets/control/ReduceDarkFlatSelectorOW.py +93 -0
  25. orangecontrib/tomwer/widgets/control/SingleTomoObjOW.py +29 -5
  26. orangecontrib/tomwer/widgets/control/TimerOW.py +1 -2
  27. orangecontrib/tomwer/widgets/control/TomoObjSerieOW.py +0 -1
  28. orangecontrib/tomwer/widgets/control/VolumeSelector.py +0 -1
  29. orangecontrib/tomwer/widgets/control/VolumeSymLinkOW.py +4 -10
  30. orangecontrib/tomwer/widgets/control/icons/email.png +0 -0
  31. orangecontrib/tomwer/widgets/control/icons/email.svg +58 -0
  32. orangecontrib/tomwer/widgets/control/icons/reduced_darkflat_selector.png +0 -0
  33. orangecontrib/tomwer/widgets/control/icons/reduced_darkflat_selector.svg +199 -0
  34. orangecontrib/tomwer/widgets/debugtools/DatasetGeneratorOW.py +0 -1
  35. orangecontrib/tomwer/widgets/debugtools/ObjectInspectorOW.py +0 -1
  36. orangecontrib/tomwer/widgets/edit/DarkFlatPatchOW.py +1 -2
  37. orangecontrib/tomwer/widgets/edit/ImageKeyEditorOW.py +1 -2
  38. orangecontrib/tomwer/widgets/edit/ImageKeyUpgraderOW.py +0 -1
  39. orangecontrib/tomwer/widgets/edit/NXtomoEditorOW.py +0 -1
  40. orangecontrib/tomwer/widgets/other/PythonScriptOW.py +29 -1
  41. orangecontrib/tomwer/widgets/other/TomoObjsHub.py +28 -0
  42. orangecontrib/tomwer/widgets/other/icons/hub.png +0 -0
  43. orangecontrib/tomwer/widgets/other/icons/hub.svg +113 -0
  44. orangecontrib/tomwer/widgets/reconstruction/AxisOW.py +18 -12
  45. orangecontrib/tomwer/widgets/reconstruction/CastNabuVolumeOW.py +0 -2
  46. orangecontrib/tomwer/widgets/reconstruction/DarkRefAndCopyOW.py +21 -6
  47. orangecontrib/tomwer/widgets/reconstruction/NabuOW.py +29 -7
  48. orangecontrib/tomwer/widgets/reconstruction/NabuVolumeOW.py +18 -5
  49. orangecontrib/tomwer/widgets/reconstruction/SAAxisOW.py +40 -13
  50. orangecontrib/tomwer/widgets/reconstruction/SADeltaBetaOW.py +37 -10
  51. orangecontrib/tomwer/widgets/reconstruction/SinoNormOW.py +2 -3
  52. orangecontrib/tomwer/widgets/reconstruction/TofuOW.py +5 -4
  53. orangecontrib/tomwer/widgets/stitching/StitcherOW.py +0 -1
  54. orangecontrib/tomwer/widgets/stitching/ZStitchingConfigOW.py +0 -1
  55. orangecontrib/tomwer/widgets/visualization/DataViewerOW.py +10 -4
  56. orangecontrib/tomwer/widgets/visualization/DiffViewerOW.py +1 -1
  57. orangecontrib/tomwer/widgets/visualization/LivesliceOW.py +0 -1
  58. orangecontrib/tomwer/widgets/visualization/NXtomoMetadataViewerOW.py +0 -1
  59. orangecontrib/tomwer/widgets/visualization/RadioStackOW.py +7 -5
  60. orangecontrib/tomwer/widgets/visualization/SampleMovedOW.py +1 -1
  61. orangecontrib/tomwer/widgets/visualization/SinogramViewerOW.py +0 -3
  62. orangecontrib/tomwer/widgets/visualization/SliceStackOW.py +7 -5
  63. orangecontrib/tomwer/widgets/visualization/VolumeViewerOW.py +4 -4
  64. tomwer/__main__.py +139 -5
  65. tomwer/app/axis.py +16 -5
  66. tomwer/app/canvas_launcher/config.py +1 -1
  67. tomwer/app/canvas_launcher/mainwindow.py +164 -6
  68. tomwer/app/darkref.py +10 -181
  69. tomwer/app/darkrefpatch.py +10 -131
  70. tomwer/app/diffframe.py +11 -0
  71. tomwer/app/imagekeyeditor.py +12 -19
  72. tomwer/app/intensitynormalization.py +1 -0
  73. tomwer/app/lamino.py +7 -2
  74. tomwer/app/patchrawdarkflat.py +131 -0
  75. tomwer/app/radiostack.py +10 -0
  76. tomwer/app/reducedarkflat.py +205 -0
  77. tomwer/app/saaxis.py +27 -8
  78. tomwer/app/sadeltabeta.py +29 -8
  79. tomwer/app/samplemoved.py +11 -0
  80. tomwer/app/scanviewer.py +12 -0
  81. tomwer/app/sinogramviewer.py +11 -0
  82. tomwer/app/slicestack.py +11 -0
  83. tomwer/app/zstitching.py +12 -0
  84. tomwer/core/futureobject.py +4 -2
  85. tomwer/core/process/conditions/filters.py +26 -4
  86. tomwer/core/process/control/datadiscovery.py +4 -0
  87. tomwer/core/process/control/datawatcher/datawatcher.py +5 -1
  88. tomwer/core/process/control/email.py +148 -0
  89. tomwer/core/process/control/nxtomoconcatenate.py +9 -2
  90. tomwer/core/process/control/nxtomomill.py +58 -16
  91. tomwer/core/process/control/scanselector.py +4 -0
  92. tomwer/core/process/control/scantransfer.py +52 -23
  93. tomwer/core/process/control/test/test_concatenate_nxtomos.py +1 -0
  94. tomwer/core/process/control/test/test_email.py +52 -0
  95. tomwer/core/process/control/test/test_h52nx_process.py +106 -0
  96. tomwer/core/process/control/test/test_volume_link.py +5 -4
  97. tomwer/core/process/control/timer.py +27 -6
  98. tomwer/core/process/control/tomoobjserie.py +4 -0
  99. tomwer/core/process/control/volumeselector.py +4 -0
  100. tomwer/core/process/control/volumesymlink.py +47 -8
  101. tomwer/core/process/edit/darkflatpatch.py +49 -8
  102. tomwer/core/process/edit/imagekeyeditor.py +63 -13
  103. tomwer/core/process/reconstruction/axis/__init__.py +1 -1
  104. tomwer/core/process/reconstruction/axis/axis.py +61 -41
  105. tomwer/core/process/reconstruction/axis/params.py +4 -6
  106. tomwer/core/process/reconstruction/darkref/darkrefs.py +53 -16
  107. tomwer/core/process/reconstruction/darkref/darkrefscopy.py +12 -2
  108. tomwer/core/process/reconstruction/lamino/__init__.py +1 -1
  109. tomwer/core/process/reconstruction/lamino/tofu.py +22 -2
  110. tomwer/core/process/reconstruction/nabu/nabucommon.py +93 -14
  111. tomwer/core/process/reconstruction/nabu/nabuscores.py +70 -33
  112. tomwer/core/process/reconstruction/nabu/nabuslices.py +219 -41
  113. tomwer/core/process/reconstruction/nabu/nabuvolume.py +240 -108
  114. tomwer/core/process/reconstruction/nabu/utils.py +10 -36
  115. tomwer/core/process/reconstruction/normalization/normalization.py +10 -3
  116. tomwer/core/process/reconstruction/saaxis/__init__.py +1 -0
  117. tomwer/core/process/reconstruction/saaxis/saaxis.py +564 -376
  118. tomwer/core/process/reconstruction/sadeltabeta/__init__.py +1 -0
  119. tomwer/core/process/reconstruction/sadeltabeta/sadeltabeta.py +481 -268
  120. tomwer/core/process/reconstruction/scores/params.py +21 -8
  121. tomwer/core/process/reconstruction/test/test_darkref_copy.py +2 -0
  122. tomwer/core/process/reconstruction/test/test_saaxis.py +21 -8
  123. tomwer/core/process/reconstruction/test/test_sadeltabeta.py +8 -5
  124. tomwer/core/process/script/python.py +7 -2
  125. tomwer/core/process/stitching/nabustitcher.py +10 -3
  126. tomwer/core/process/task.py +2 -9
  127. tomwer/core/process/test/test_axis.py +25 -15
  128. tomwer/core/process/test/test_conditions.py +6 -6
  129. tomwer/core/process/test/test_dark_and_flat.py +20 -15
  130. tomwer/core/process/test/test_data_transfer.py +8 -8
  131. tomwer/core/process/test/test_data_watcher.py +1 -1
  132. tomwer/core/process/test/test_lamino.py +6 -6
  133. tomwer/core/process/test/test_nabu.py +13 -8
  134. tomwer/core/process/test/test_normalization.py +1 -0
  135. tomwer/core/process/test/test_timer.py +6 -6
  136. tomwer/core/process/visualization/dataviewer.py +4 -0
  137. tomwer/core/process/visualization/diffviewer.py +4 -0
  138. tomwer/core/process/visualization/imagestackviewer.py +4 -0
  139. tomwer/core/process/visualization/radiostack.py +4 -0
  140. tomwer/core/process/visualization/samplemoved.py +4 -0
  141. tomwer/core/process/visualization/sinogramviewer.py +4 -0
  142. tomwer/core/process/visualization/slicestack.py +4 -0
  143. tomwer/core/process/visualization/volumeviewer.py +4 -0
  144. tomwer/core/scan/hdf5scan.py +4 -4
  145. tomwer/core/scan/scanbase.py +5 -1
  146. tomwer/core/scan/test/test_process_registration.py +9 -9
  147. tomwer/core/settings.py +59 -1
  148. tomwer/core/test/test_lamino.py +2 -1
  149. tomwer/core/utils/__init__.py +16 -0
  150. tomwer/core/utils/locker.py +0 -1
  151. tomwer/core/utils/resource.py +6 -11
  152. tomwer/core/utils/scanutils.py +2 -0
  153. tomwer/gui/cluster/slurm.py +91 -7
  154. tomwer/gui/cluster/supervisor.py +16 -11
  155. tomwer/gui/cluster/test/test_cluster.py +16 -1
  156. tomwer/gui/conditions/filter.py +3 -3
  157. tomwer/gui/control/datalist.py +24 -11
  158. tomwer/gui/control/email.py +183 -0
  159. tomwer/gui/control/reducedarkflatselector.py +545 -0
  160. tomwer/gui/control/singletomoobj.py +23 -1
  161. tomwer/gui/control/test/test_email.py +35 -0
  162. tomwer/gui/control/test/test_reducedarkflat_selector.py +280 -0
  163. tomwer/gui/reconstruction/axis/CompareImages.py +1 -1
  164. tomwer/gui/reconstruction/axis/axis.py +10 -6
  165. tomwer/gui/reconstruction/axis/radioaxis.py +14 -6
  166. tomwer/gui/reconstruction/darkref/darkrefcopywidget.py +2 -0
  167. tomwer/gui/reconstruction/darkref/darkrefwidget.py +4 -4
  168. tomwer/gui/reconstruction/nabu/nabuconfig/phase.py +3 -1
  169. tomwer/gui/reconstruction/nabu/nabuconfig/preprocessing.py +34 -33
  170. tomwer/gui/reconstruction/nabu/nabuconfig/reconstruction.py +1 -1
  171. tomwer/gui/reconstruction/normalization/intensity.py +5 -5
  172. tomwer/gui/reconstruction/saaxis/corrangeselector.py +1 -0
  173. tomwer/gui/reconstruction/saaxis/saaxis.py +6 -6
  174. tomwer/gui/reconstruction/sadeltabeta/saadeltabeta.py +6 -6
  175. tomwer/gui/reconstruction/scores/scoreplot.py +6 -4
  176. tomwer/gui/samplemoved/__init__.py +2 -2
  177. tomwer/gui/stackplot.py +18 -7
  178. tomwer/gui/stacks.py +2 -2
  179. tomwer/gui/stitching/stitchandbackground.py +2 -2
  180. tomwer/gui/stitching/stitching.py +1 -1
  181. tomwer/gui/stitching/stitching_raw.py +1 -1
  182. tomwer/gui/utils/__init__.py +1 -85
  183. tomwer/gui/utils/illustrations.py +1 -1
  184. tomwer/gui/utils/inputwidget.py +41 -36
  185. tomwer/gui/utils/slider.py +2 -2
  186. tomwer/gui/utils/utils.py +93 -0
  187. tomwer/gui/visualization/dataviewer.py +8 -5
  188. tomwer/gui/visualization/diffviewer/diffviewer.py +4 -4
  189. tomwer/gui/visualization/reconstructionparameters.py +26 -6
  190. tomwer/gui/visualization/sinogramviewer.py +7 -1
  191. tomwer/gui/visualization/test/test_reconstruction_parameters.py +2 -4
  192. tomwer/gui/visualization/volumeviewer.py +2 -0
  193. tomwer/resources/__init__.py +55 -43
  194. tomwer/resources/gui/icons/compose.png +0 -0
  195. tomwer/resources/gui/icons/compose.svg +75 -0
  196. tomwer/synctools/datatransfert.py +3 -1
  197. tomwer/synctools/stacks/edit/darkflatpatch.py +39 -34
  198. tomwer/synctools/stacks/edit/imagekeyeditor.py +8 -27
  199. tomwer/synctools/stacks/processingstack.py +45 -9
  200. tomwer/synctools/stacks/reconstruction/axis.py +6 -5
  201. tomwer/synctools/stacks/reconstruction/dkrefcopy.py +1 -0
  202. tomwer/synctools/stacks/reconstruction/lamino.py +3 -3
  203. tomwer/synctools/stacks/reconstruction/nabu.py +49 -140
  204. tomwer/synctools/stacks/reconstruction/normalization.py +1 -0
  205. tomwer/synctools/stacks/reconstruction/saaxis.py +19 -33
  206. tomwer/synctools/stacks/reconstruction/sadeltabeta.py +16 -32
  207. tomwer/synctools/test/test_darkRefs.py +19 -10
  208. tomwer/synctools/test/test_foldertransfer.py +7 -7
  209. tomwer/third_party/nabu/preproc/phase.py +6 -8
  210. tomwer/third_party/nabu/utils.py +2 -3
  211. tomwer/version.py +1 -1
  212. {tomwer-1.2.0a1.dist-info → tomwer-1.2.0a3.dist-info}/METADATA +15 -54
  213. {tomwer-1.2.0a1.dist-info → tomwer-1.2.0a3.dist-info}/RECORD +219 -192
  214. {tomwer-1.2.0a1.dist-info → tomwer-1.2.0a3.dist-info}/WHEEL +1 -1
  215. {tomwer-1.2.0a1.dist-info → tomwer-1.2.0a3.dist-info}/entry_points.txt +3 -3
  216. /tomwer-1.2.0a1-py3.9-nspkg.pth → /tomwer-1.2.0a3-py3.11-nspkg.pth +0 -0
  217. {tomwer-1.2.0a1.dist-info → tomwer-1.2.0a3.dist-info}/LICENSE +0 -0
  218. {tomwer-1.2.0a1.dist-info → tomwer-1.2.0a3.dist-info}/namespace_packages.txt +0 -0
  219. {tomwer-1.2.0a1.dist-info → tomwer-1.2.0a3.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,44 @@
1
+ <?xml version='1.0' encoding='utf-8'?>
2
+ <scheme version="2.0" title="Append dark and flat frames to an NXtomo" description="">
3
+ <nodes>
4
+ <node id="0" name="image-key-upgrader" qualified_name="orangecontrib.tomwer.widgets.edit.ImageKeyUpgraderOW.ImageKeyUpgraderOW" project_name="tomwer" version="" title="image-key-upgrader" position="(336.0, 221.0)" />
5
+ <node id="1" name="dark-flat-patch" qualified_name="orangecontrib.tomwer.widgets.edit.DarkFlatPatchOW.DarkFlatPatchOW" project_name="tomwer" version="" title="dark-flat-patch" position="(579.0, 221.0)" />
6
+ <node id="2" name="reduced darks and flats" qualified_name="orangecontrib.tomwer.widgets.reconstruction.DarkRefAndCopyOW.DarkRefAndCopyOW" project_name="tomwer" version="" title="reduced darks and flats" position="(781.0, 221.0)" />
7
+ <node id="3" name="scan selector" qualified_name="orangecontrib.tomwer.widgets.control.DataSelectorOW.DataSelectorOW" project_name="tomwer" version="" title="scan selector" position="(133.0, 222.0)" />
8
+ <node id="4" name="scan selector" qualified_name="orangecontrib.tomwer.widgets.control.DataSelectorOW.DataSelectorOW" project_name="tomwer" version="" title="scan selector (1)" position="(981.0, 222.0)" />
9
+ </nodes>
10
+ <links>
11
+ <link id="0" source_node_id="3" sink_node_id="0" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
12
+ <link id="1" source_node_id="0" sink_node_id="1" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
13
+ <link id="2" source_node_id="1" sink_node_id="2" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
14
+ <link id="3" source_node_id="2" sink_node_id="4" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
15
+ </links>
16
+ <annotations>
17
+ <text id="0" type="text/plain" rect="(68.0, 8.0, 740.0, 86.0)" font-family="Sans" font-size="16">Context: we want to modify an NXtomo in order to append some (raw) darks / flats to it.
18
+ Then those raw darks and flats will be used for reduced darks / flats calculation.
19
+
20
+ warning: reduced darks and flats are usually mean / median of a serie of darks / flats. when raw darks and flats are raw frame before mean / median 'reduction'</text>
21
+ <text id="1" type="text/plain" rect="(65.0, 360.0, 150.0, 88.0)" font-family="Sans" font-size="16">NXtomo to be patched
22
+ Step 3 : process NXtomo</text>
23
+ <text id="2" type="text/plain" rect="(249.0, 355.0, 220.0, 135.0)" font-family="Sans" font-size="16">step1: define frame series to be ignored (here darks and flats series to avoid conflict with the one added by the dark / flat patch)</text>
24
+ <arrow id="3" start="(130.0, 345.0)" end="(131.0, 286.0)" fill="#C1272D" />
25
+ <arrow id="4" start="(337.0, 345.0)" end="(336.99999999999994, 283.0)" fill="#C1272D" />
26
+ <text id="5" type="text/plain" rect="(912.0, 350.0, 233.0, 158.0)" font-family="Sans" font-size="16">result: NXtomo with patched frame (step 2) and reduced darks and flats to be used for reconstruction</text>
27
+ <arrow id="6" start="(981.9999999999999, 332.0)" end="(982.9999999999999, 278.0)" fill="#C1272D" />
28
+ <text id="7" type="text/plain" rect="(700.0, 349.0, 183.0, 126.0)" font-family="Sans" font-size="16">standard darks / flats reduction (but taking into account patched darks / flats frames)</text>
29
+ <arrow id="8" start="(780.0000000000001, 342.0)" end="(782.0000000000001, 296.0)" fill="#C1272D" />
30
+ <text id="9" type="text/plain" rect="(506.0, 347.0, 150.0, 145.0)" font-family="Sans" font-size="16">step2: provide series of darks / flats from other(s) NXtomo to be added to the `NXtomo to be patched`</text>
31
+ <arrow id="10" start="(574.0, 338.0)" end="(573.0, 281.0)" fill="#C1272D" />
32
+ </annotations>
33
+ <thumbnail />
34
+ <node_properties>
35
+ <properties node_id="0" format="literal">{'_ewoks_default_inputs': {'operations': {}}, '_ewoks_execinfo': {}, '_ewoks_varinfo': {}, 'controlAreaVisible': True, 'default_inputs': {}, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x07\xe6\x00\x00\x01\x18\x00\x00\n/\x00\x00\x03-\x00\x00\x07\xeb\x00\x00\x015\x00\x00\n*\x00\x00\x03(\x00\x00\x00\x01\x00\x00\x00\x00\x07\x7f\x00\x00\x07\xeb\x00\x00\x015\x00\x00\n*\x00\x00\x03(', '__version__': 1}</properties>
36
+ <properties node_id="1" format="literal">{'_urlsSetting': {}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
37
+ <properties node_id="2" format="literal">{'_ewoks_default_inputs': {'data': None, 'dark_ref_params': {'DOWHEN': 'before', 'DARKCAL': 'mean', 'DARKOVE': 0, 'DARKRMV': 0, 'DKFILE': 'darkend[0-9]{3,4}', 'REFSCAL': 'median', 'REFSOVE': 0, 'REFSRMV': 0, 'RFFILE': 'ref*.*[0-9]{3,4}_[0-9]{3,4}'}}, 'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x06\x9b\x00\x00\x02K\x00\x00\n\x95\x00\x00\x04\x8f\x00\x00\x06\xa0\x00\x00\x02h\x00\x00\n\x90\x00\x00\x04\x8a\x00\x00\x00\x01\x00\x00\x00\x00\x07\x7f\x00\x00\x06\xa0\x00\x00\x02h\x00\x00\n\x90\x00\x00\x04\x8a', '__version__': 1}</properties>
38
+ <properties node_id="3" format="literal">{'_scanIDs': [], 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
39
+ <properties node_id="4" format="literal">{'_scanIDs': [], 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
40
+ </node_properties>
41
+ <session_state>
42
+ <window_groups />
43
+ </session_state>
44
+ </scheme>
@@ -0,0 +1,55 @@
1
+ <?xml version='1.0' encoding='utf-8'?>
2
+ <scheme version="2.0" title="darks and flats copy - method 1" 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="(-519.0, -209.0)" />
5
+ <node id="1" name="image-key-upgrader" qualified_name="orangecontrib.tomwer.widgets.edit.ImageKeyUpgraderOW.ImageKeyUpgraderOW" project_name="tomwer" version="" title="image-key-upgrader" position="(-293.0, -209.0)" />
6
+ <node id="2" name="reduced darks and flats" qualified_name="orangecontrib.tomwer.widgets.reconstruction.DarkRefAndCopyOW.DarkRefAndCopyOW" project_name="tomwer" version="" title="reduced darks and flats" position="(65.0, -226.0)" />
7
+ <node id="3" name="single tomo obj" qualified_name="orangecontrib.tomwer.widgets.control.SingleTomoObjOW.SingleTomoObjOW" project_name="tomwer" version="" title="scan with darks to be used" position="(-79.0, -439.0)" />
8
+ <node id="4" name="single tomo obj" qualified_name="orangecontrib.tomwer.widgets.control.SingleTomoObjOW.SingleTomoObjOW" project_name="tomwer" version="" title="scan with reduced flats to be used" position="(-191.0, -335.0)" />
9
+ <node id="5" name="scan selector" qualified_name="orangecontrib.tomwer.widgets.control.DataSelectorOW.DataSelectorOW" project_name="tomwer" version="" title="scan selector (1)" position="(286.0, -227.0)" />
10
+ </nodes>
11
+ <links>
12
+ <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" />
13
+ <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" />
14
+ <link id="2" source_node_id="3" sink_node_id="2" source_channel="reduced dark(s)" sink_channel="reduced dark(s)" enabled="true" source_channel_id="reduced_darks" sink_channel_id="reduced_darks" />
15
+ <link id="3" source_node_id="4" sink_node_id="2" source_channel="reduced flat(s)" sink_channel="reduced flat(s)" enabled="true" source_channel_id="reduced_flats" sink_channel_id="reduced_flats" />
16
+ <link id="4" source_node_id="2" sink_node_id="5" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
17
+ </links>
18
+ <annotations>
19
+ <text id="0" type="text/plain" rect="(-597.0, -79.0, 150.0, 126.0)" font-family="Sans" font-size="16">step2: provide scans for which we need to copy reduced darks and flats</text>
20
+ <arrow id="1" start="(-522.0, -87.0)" end="(-523.0, -151.0)" fill="#C1272D" />
21
+ <text id="2" type="text/plain" rect="(-379.0, -87.0, 236.0, 111.0)" font-family="Sans" font-size="16">invalid any existing darks or flats frames (else reduced darks and flats will use them instead of making the copy)</text>
22
+ <arrow id="3" start="(-293.0, -97.0)" end="(-290.0, -158.0)" fill="#C1272D" />
23
+ <text id="4" type="text/plain" rect="(-71.0, -96.0, 270.0, 80.0)" font-family="Sans" font-size="16">will copy reduced darks / flats to `dataset_{darks|flats}.hdf5` to be used for reconstruction</text>
24
+ <arrow id="5" start="(69.99999999999997, -105.0)" end="(69.99999999999997, -156.0)" fill="#C1272D" />
25
+ <text id="6" type="text/plain" rect="(-390.0, -471.0, 150.0, 107.0)" font-family="Sans" font-size="16">step1: provide scan with already computed darks and flats</text>
26
+ <arrow id="7" start="(-236.0, -419.0)" end="(-130.0, -428.0)" fill="#C1272D" />
27
+ <arrow id="8" start="(-277.0, -357.00000000000006)" end="(-228.00000000000003, -333.00000000000006)" fill="#C1272D" />
28
+ <text id="9" type="text/plain" rect="(241.0, -96.0, 150.0, 88.0)" font-family="Sans" font-size="16">result: scans with copied reduced darks / flats</text>
29
+ <text id="10" type="text/plain" rect="(-623.0, -603.0, 932.0, 145.0)" font-family="Sans" font-size="16">Context: on this workflow we want to copy reduced flats / darks from a dataset to others.
30
+ This one of the various way to do this.
31
+ </text>
32
+ <text id="11" type="text/plain" rect="(-593.0, 94.0, 919.0, 84.0)" font-family="Sans" font-size="16">Note: You can also replace the two upper widgets (providing reduced darks and flats) by a python script providing a python dictionnary.
33
+ * Key should be position of the flat / dark in the sequence (so 0 if at the beginning for example)
34
+ * Value is the 2D numpy array with mean / median /xxx of the darks and flats serie</text>
35
+ <arrow id="12" start="(288.0, -105.0)" end="(286.0, -165.0)" fill="#C1272D" />
36
+ </annotations>
37
+ <thumbnail />
38
+ <node_properties>
39
+ <properties node_id="0" format="literal">{'_scanIDs': [], 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
40
+ <properties node_id="1" format="pickle">gASVLwEAAAAAAAB9lCiMFV9ld29rc19kZWZhdWx0X2lucHV0c5R9lIwKb3BlcmF0aW9uc5R9lCiM
41
+ G3RvbW9zY2FuLmVzcmYuc2Nhbi5oZGY1c2NhbpSMCEltYWdlS2V5lJOUSwKFlFKUaAdLA4WUUpRo
42
+ B0sBhZRSlGgLdXOMD19ld29rc19leGVjaW5mb5R9lIwOX2V3b2tzX3ZhcmluZm+UfZSMEmNvbnRy
43
+ b2xBcmVhVmlzaWJsZZSIjA5kZWZhdWx0X2lucHV0c5R9lIwTc2F2ZWRXaWRnZXRHZW9tZXRyeZRD
44
+ QgHZ0MsAAwAAAAAH5gAAARgAAAovAAADLQAAB+sAAAE1AAAKKgAAAygAAAABAAAAAAd/AAAH6wAA
45
+ ATUAAAoqAAADKJSMC19fdmVyc2lvbl9flEsBdS4=
46
+ </properties>
47
+ <properties node_id="2" format="literal">{'_ewoks_default_inputs': {'data': None, 'dark_ref_params': None}, 'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x07\x0e\x00\x00\x015\x00\x00\x0b\x08\x00\x00\x03\x10\x00\x00\x07\x13\x00\x00\x01R\x00\x00\x0b\x03\x00\x00\x03\x0b\x00\x00\x00\x01\x00\x00\x00\x00\x07\x7f\x00\x00\x07\x13\x00\x00\x01R\x00\x00\x0b\x03\x00\x00\x03\x0b', '__version__': 1}</properties>
48
+ <properties node_id="3" format="literal">{'_tomo_obj_setting': '', 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
49
+ <properties node_id="4" format="literal">{'_tomo_obj_setting': '', 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
50
+ <properties node_id="5" format="literal">{'_scanIDs': [], 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
51
+ </node_properties>
52
+ <session_state>
53
+ <window_groups />
54
+ </session_state>
55
+ </scheme>
@@ -0,0 +1,48 @@
1
+ <?xml version='1.0' encoding='utf-8'?>
2
+ <scheme version="2.0" title="darks and flats copy - method 2" 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="(-519.0, -209.0)" />
5
+ <node id="1" name="image-key-upgrader" qualified_name="orangecontrib.tomwer.widgets.edit.ImageKeyUpgraderOW.ImageKeyUpgraderOW" project_name="tomwer" version="" title="image-key-upgrader" position="(-293.0, -209.0)" />
6
+ <node id="2" name="reduced darks and flats" qualified_name="orangecontrib.tomwer.widgets.reconstruction.DarkRefAndCopyOW.DarkRefAndCopyOW" project_name="tomwer" version="" title="reduced darks and flats" position="(62.0, -212.0)" />
7
+ <node id="3" name="scan selector" qualified_name="orangecontrib.tomwer.widgets.control.DataSelectorOW.DataSelectorOW" project_name="tomwer" version="" title="scan selector (1)" position="(291.0, -211.0)" />
8
+ </nodes>
9
+ <links>
10
+ <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" />
11
+ <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" />
12
+ <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" />
13
+ </links>
14
+ <annotations>
15
+ <text id="0" type="text/plain" rect="(-597.0, -79.0, 150.0, 126.0)" font-family="Sans" font-size="16">step2: provide scans for which we need to copy reduced darks and flats</text>
16
+ <arrow id="1" start="(-522.0, -87.0)" end="(-523.0, -151.0)" fill="#C1272D" />
17
+ <text id="2" type="text/plain" rect="(-379.0, -87.0, 236.0, 111.0)" font-family="Sans" font-size="16">invalid any existing darks or flats frames (else reduced darks and flats will use them instead of making the copy)</text>
18
+ <arrow id="3" start="(-293.0, -97.0)" end="(-290.0, -158.0)" fill="#C1272D" />
19
+ <text id="4" type="text/plain" rect="(-70.0, -81.0, 270.0, 80.0)" font-family="Sans" font-size="16">will copy reduced darks / flats to `dataset_{darks|flats}.hdf5` to be used for reconstruction</text>
20
+ <arrow id="5" start="(61.99999999999998, -91.0)" end="(61.99999999999998, -142.0)" fill="#C1272D" />
21
+ <text id="6" type="text/plain" rect="(-141.0, -427.0, 464.0, 85.0)" font-family="Sans" font-size="16">step1: provide reduced darks and flats from the 'copy' tab,
22
+ unselecting auto and setting them through `select darks url` and `select flats url`</text>
23
+ <arrow id="7" start="(57.0, -334.0)" end="(58.99999999999997, -259.00000000000006)" fill="#C1272D" />
24
+ <text id="8" type="text/plain" rect="(241.0, -94.0, 150.0, 88.0)" font-family="Sans" font-size="16">result: scans with copied reduced darks / flats</text>
25
+ <text id="9" type="text/plain" rect="(-601.0, -590.0, 932.0, 68.0)" font-family="Sans" font-size="16">Context: on this workflow we want to copy reduced flats / darks from a dataset to others.
26
+ This one of the various way to do this.
27
+ </text>
28
+ <text id="10" type="text/plain" rect="(-593.0, 94.0, 919.0, 84.0)" font-family="Sans" font-size="16">Note: reduced darks / flats can be saved to disk from another python script using the `silx.io.dictdump` dicttoh5 function.
29
+ Reduced darks and flats are dictionary with index in the sequence as key (so index==0 if the dark / flat serie is done at the beginning) and the reduced darks / flats as value (2D numpy array) </text>
30
+ <arrow id="11" start="(291.0, -109.0)" end="(290.0, -158.0)" fill="#C1272D" />
31
+ </annotations>
32
+ <thumbnail />
33
+ <node_properties>
34
+ <properties node_id="0" format="literal">{'_scanIDs': [], 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
35
+ <properties node_id="1" format="pickle">gASVLwEAAAAAAAB9lCiMFV9ld29rc19kZWZhdWx0X2lucHV0c5R9lIwKb3BlcmF0aW9uc5R9lCiM
36
+ G3RvbW9zY2FuLmVzcmYuc2Nhbi5oZGY1c2NhbpSMCEltYWdlS2V5lJOUSwKFlFKUaAdLA4WUUpRo
37
+ B0sBhZRSlGgLdXOMD19ld29rc19leGVjaW5mb5R9lIwOX2V3b2tzX3ZhcmluZm+UfZSMEmNvbnRy
38
+ b2xBcmVhVmlzaWJsZZSIjA5kZWZhdWx0X2lucHV0c5R9lIwTc2F2ZWRXaWRnZXRHZW9tZXRyeZRD
39
+ QgHZ0MsAAwAAAAAH5gAAARgAAAovAAADLQAAB+sAAAE1AAAKKgAAAygAAAABAAAAAAd/AAAH6wAA
40
+ ATUAAAoqAAADKJSMC19fdmVyc2lvbl9flEsBdS4=
41
+ </properties>
42
+ <properties node_id="2" format="literal">{'_ewoks_default_inputs': {'data': None, 'dark_ref_params': {'DOWHEN': 'before', 'DARKCAL': 'mean', 'DARKOVE': 0, 'DARKRMV': 0, 'DKFILE': 'darkend[0-9]{3,4}', 'REFSCAL': 'median', 'REFSOVE': 0, 'REFSRMV': 0, 'RFFILE': 'ref*.*[0-9]{3,4}_[0-9]{3,4}'}}, 'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x06\x9b\x00\x00\x02K\x00\x00\n\x95\x00\x00\x04\x8f\x00\x00\x06\xa0\x00\x00\x02h\x00\x00\n\x90\x00\x00\x04\x8a\x00\x00\x00\x01\x00\x00\x00\x00\x07\x7f\x00\x00\x06\xa0\x00\x00\x02h\x00\x00\n\x90\x00\x00\x04\x8a', '__version__': 1}</properties>
43
+ <properties node_id="3" format="literal">{'_scanIDs': [], 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
44
+ </node_properties>
45
+ <session_state>
46
+ <window_groups />
47
+ </session_state>
48
+ </scheme>
@@ -0,0 +1,40 @@
1
+ <?xml version='1.0' encoding='utf-8'?>
2
+ <scheme version="2.0" title="default cor search" 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="(319.0, 189.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="(469.0, 237.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="(659.0, 325.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, 362.0)" />
9
+ </nodes>
10
+ <links>
11
+ <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" />
12
+ <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" />
13
+ <link id="2" source_node_id="3" sink_node_id="4" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
14
+ <link id="3" source_node_id="2" sink_node_id="3" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
15
+ </links>
16
+ <annotations>
17
+ <text id="0" type="text/plain" rect="(223.0, 32.0, 150.0, 26.0)" font-family="Ubuntu" font-size="16">provide dataset</text>
18
+ <arrow id="1" start="(210.0, 73.0)" end="(159.0, 116.0)" fill="#C1272D" />
19
+ <text id="2" type="text/plain" rect="(157.0, 304.0, 150.0, 49.0)" font-family="Ubuntu" font-size="16">compute reduced darks and flats</text>
20
+ <arrow id="3" start="(232.0, 299.0)" end="(290.0, 249.0)" fill="#C1272D" />
21
+ <arrow id="4" start="(550.0, 149.0)" end="(484.0, 201.0)" fill="#C1272D" />
22
+ <text id="5" type="text/plain" rect="(552.0, 76.0, 281.0, 72.0)" font-family="Ubuntu" font-size="16">compute center of rotation
23
+ manually or using one of the numerous existing algorithms</text>
24
+ <arrow id="6" start="(754.0, 224.00000000000003)" end="(695.0, 277.0)" fill="#C1272D" />
25
+ <text id="7" type="text/plain" rect="(783.0, 183.0, 150.0, 50.0)" font-family="Ubuntu" font-size="16">reconstruct one or several slices</text>
26
+ <arrow id="8" start="(739.0, 486.0)" end="(782.0, 429.0)" fill="#C1272D" />
27
+ <text id="9" type="text/plain" rect="(709.2222222222222, 488.55555555555554, 150.0, 88.0)" font-family="Ubuntu" font-size="16">browse reconstructed slices and browse dataset</text>
28
+ </annotations>
29
+ <thumbnail />
30
+ <node_properties>
31
+ <properties node_id="0" format="literal">{'_scanIDs': [], 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
32
+ <properties node_id="1" format="literal">{'_ewoks_default_inputs': {'data': None, 'dark_ref_params': None}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
33
+ <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>
34
+ <properties node_id="3" format="literal">{'_ewoks_default_inputs': {'data': None, 'nabu_params': None}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
35
+ <properties node_id="4" format="literal">{'_viewer_config': {}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
36
+ </node_properties>
37
+ <session_state>
38
+ <window_groups />
39
+ </session_state>
40
+ </scheme>
@@ -0,0 +1,50 @@
1
+ <?xml version='1.0' encoding='utf-8'?>
2
+ <scheme version="2.0" title="Python script hello world" description="">
3
+ <nodes>
4
+ <node id="0" name="single tomo obj" qualified_name="orangecontrib.tomwer.widgets.control.SingleTomoObjOW.SingleTomoObjOW" project_name="tomwer" version="" title="single tomo obj" position="(215.0, 171.0)" />
5
+ <node id="1" name="Python Script" qualified_name="orangecontrib.tomwer.widgets.other.PythonScriptOW.OWPythonScript" project_name="tomwer" version="" title="Python Script" position="(395.0, 238.0)" />
6
+ </nodes>
7
+ <links>
8
+ <link id="0" source_node_id="0" sink_node_id="1" source_channel="tomo_obj" sink_channel="data" enabled="true" source_channel_id="tomo_obj" sink_channel_id="data" />
9
+ </links>
10
+ <annotations>
11
+ <arrow id="0" start="(155.0, 343.0)" end="(199.0, 238.0)" fill="#C1272D" />
12
+ <text id="1" type="text/plain" rect="(22.0, 370.0, 211.0, 103.0)" font-family="Cantarell" font-size="16">1: provide a scan either by:
13
+ * using the 'select button'
14
+ * copy-paste a file containing a NXtomo to the interface</text>
15
+ <arrow id="2" start="(369.0, 406.0)" end="(374.0, 308.0)" fill="#C1272D" />
16
+ <text id="3" type="text/plain" rect="(329.0, 414.0, 150.0, 70.0)" font-family="Cantarell" font-size="16">2: print some information about this scan</text>
17
+ </annotations>
18
+ <thumbnail />
19
+ <node_properties>
20
+ <properties node_id="0" format="literal">{'_tomo_obj_setting': '', 'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x08C\x00\x00\x02=\x00\x00\r\xb3\x00\x00\x02\xd8\x00\x00\x08C\x00\x00\x02b\x00\x00\r\xb3\x00\x00\x02\xd8\x00\x00\x00\x01\x00\x00\x00\x00\x07\x80\x00\x00\x08C\x00\x00\x02b\x00\x00\r\xb3\x00\x00\x02\xd8', '__version__': 1}</properties>
21
+ <properties node_id="1" format="pickle">gASVKQUAAAAAAAB9lCiMEmNvbnRyb2xBcmVhVmlzaWJsZZSIjBJjdXJyZW50U2NyaXB0SW5kZXiU
22
+ SwCMEWxpYnJhcnlMaXN0U291cmNllF2UjDFvcmFuZ2Vjb250cmliLnRvbXdlci53aWRnZXRzLm90
23
+ aGVyLlB5dGhvblNjcmlwdE9XlIwGU2NyaXB0lJOUKYGUfZQojARuYW1llIwLSGVsbG8gd29ybGSU
24
+ jAZzY3JpcHSUWOgBAABmcm9tIHRvbXdlci5jb3JlLnNjYW4uaGRmNXNjYW4gaW1wb3J0IEhERjVU
25
+ b21vU2Nhbgpmcm9tIHRvbXdlci5jb3JlLnNjYW4uZWRmc2NhbiBpbXBvcnQgRURGVG9tb1NjYW4K
26
+ c2NhbiA9IGluX2RhdGEKaWYgaXNpbnN0YW5jZShzY2FuLCBIREY1VG9tb1NjYW4pOgogICAgcHJp
27
+ bnQoInNjYW4gbWFzdGVyIGZpbGUgaXMiLCBzY2FuLm1hc3Rlcl9maWxlKQplbHNlOgogICAgcHJp
28
+ bnQoInNjYW4gZGlyZWN0b3J5IGlzIiwgc2Nhbi5wYXRoKQoKcHJpbnQoZiJzY2FuIGhhcyB7bGVu
29
+ KHNjYW4ucHJvamVjdGlvbnMpfSBwcm9qZWN0aW9ucywge2xlbihzY2FuLmRhcmtzKX0gZGFya3Mg
30
+ YW5kIHtsZW4oc2Nhbi5mbGF0cyl9IGZsYXRzIikKCnByaW50KGYic2NhbiBlbmVyZ3kgaXMge3Nj
31
+ YW4uZW5lcmd5fSwgcm90YXRpb24gYW5nbGUgZ29lcyBmcm9tIHttaW4oc2Nhbi5yb3RhdGlvbl9h
32
+ bmdsZSl9IHRvIHttYXgoc2Nhbi5yb3RhdGlvbl9hbmdsZSl9IGRlZ3JlZXMiKZSMBWZsYWdzlEsA
33
+ jAhmaWxlbmFtZZROdWJhjBNzYXZlZFdpZGdldEdlb21ldHJ5lENCAdnQywADAAAAAAhKAAAA0wAA
34
+ DWYAAARRAAAISgAAAPgAAA1mAAAEUQAAAAEAAAAAB4AAAAhKAAAA+AAADWYAAARRlIwKc2NyaXB0
35
+ VGV4dJRY6AEAAGZyb20gdG9td2VyLmNvcmUuc2Nhbi5oZGY1c2NhbiBpbXBvcnQgSERGNVRvbW9T
36
+ Y2FuCmZyb20gdG9td2VyLmNvcmUuc2Nhbi5lZGZzY2FuIGltcG9ydCBFREZUb21vU2NhbgpzY2Fu
37
+ ID0gaW5fZGF0YQppZiBpc2luc3RhbmNlKHNjYW4sIEhERjVUb21vU2Nhbik6CiAgICBwcmludCgi
38
+ c2NhbiBtYXN0ZXIgZmlsZSBpcyIsIHNjYW4ubWFzdGVyX2ZpbGUpCmVsc2U6CiAgICBwcmludCgi
39
+ c2NhbiBkaXJlY3RvcnkgaXMiLCBzY2FuLnBhdGgpCgpwcmludChmInNjYW4gaGFzIHtsZW4oc2Nh
40
+ bi5wcm9qZWN0aW9ucyl9IHByb2plY3Rpb25zLCB7bGVuKHNjYW4uZGFya3MpfSBkYXJrcyBhbmQg
41
+ e2xlbihzY2FuLmZsYXRzKX0gZmxhdHMiKQoKcHJpbnQoZiJzY2FuIGVuZXJneSBpcyB7c2Nhbi5l
42
+ bmVyZ3l9LCByb3RhdGlvbiBhbmdsZSBnb2VzIGZyb20ge21pbihzY2FuLnJvdGF0aW9uX2FuZ2xl
43
+ KX0gdG8ge21heChzY2FuLnJvdGF0aW9uX2FuZ2xlKX0gZGVncmVlcyIplIwNc3BsaXR0ZXJTdGF0
44
+ ZZROjAtfX3ZlcnNpb25fX5RLAXUu
45
+ </properties>
46
+ </node_properties>
47
+ <session_state>
48
+ <window_groups />
49
+ </session_state>
50
+ </scheme>
@@ -0,0 +1,50 @@
1
+ <?xml version='1.0' encoding='utf-8'?>
2
+ <scheme version="2.0" title="simple slice reconstruction on slurm" 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="(945.0, 368.0)" />
9
+ <node id="5" name="slurm cluster" qualified_name="orangecontrib.tomwer.widgets.cluster.SlurmClusterOW.SlurmClusterOW" project_name="tomwer" version="" title="slurm cluster" position="(412.0, 387.0)" />
10
+ <node id="6" name="future supervisor" qualified_name="orangecontrib.tomwer.widgets.cluster.FutureSupervisorOW.FutureSupervisorOW" project_name="tomwer" version="" title="future supervisor" position="(803.5, 315.5)" />
11
+ </nodes>
12
+ <links>
13
+ <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" />
14
+ <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" />
15
+ <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" />
16
+ <link id="3" source_node_id="5" sink_node_id="3" source_channel="cluster_config" sink_channel="cluster_config" enabled="true" source_channel_id="data_out" sink_channel_id="cluster_in" />
17
+ <link id="4" source_node_id="3" sink_node_id="6" source_channel="future_tomo_obj" sink_channel="future_tomo_obj" enabled="true" source_channel_id="future_out" sink_channel_id="future_in" />
18
+ <link id="5" source_node_id="6" sink_node_id="4" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
19
+ </links>
20
+ <annotations>
21
+ <arrow id="0" start="(267.0, 56.0)" end="(194.0, 105.0)" fill="#C1272D" />
22
+ <arrow id="1" start="(248.0, 298.0)" end="(292.0, 239.0)" fill="#C1272D" />
23
+ <arrow id="2" start="(576.0, 108.0)" end="(521.0, 168.0)" fill="#C1272D" />
24
+ <arrow id="3" start="(647.0, 420.0)" end="(649.0, 328.0)" fill="#C1272D" />
25
+ <arrow id="4" start="(1013.0, 272.0)" end="(951.0, 322.0)" fill="#C1272D" />
26
+ <text id="5" type="text/plain" rect="(275.0, 19.0, 150.0, 26.0)" font-family="Ubuntu" font-size="16">provide dataset</text>
27
+ <text id="6" type="text/plain" rect="(187.0, 309.0, 150.0, 26.0)" font-family="Ubuntu" font-size="16">compute reduced darks and flats</text>
28
+ <text id="7" type="text/plain" rect="(596.0, 53.0, 150.0, 26.0)" font-family="Ubuntu" font-size="16">compute center of rotation</text>
29
+ <text id="8" type="text/plain" rect="(557.0, 428.0, 214.0, 94.0)" font-family="Ubuntu" font-size="16">slice reconstruction will be done on slurm as it has a 'slurm cluster' input</text>
30
+ <text id="9" type="text/plain" rect="(979.4444444444443, 459.11111111111114, 150.0, 88.0)" font-family="Ubuntu" font-size="16">display reconstructed slices and browse dataset</text>
31
+ <arrow id="10" start="(256.0, 528.0)" end="(341.0, 433.0)" fill="#C1272D" />
32
+ <text id="11" type="text/plain" rect="(126.0, 534.0, 267.0, 77.0)" font-family="Cantarell" font-size="16">Define the slurm partition to be used for the reconstruction.
33
+ Warning: you must ask for one GPU</text>
34
+ <arrow id="12" start="(854.0, 176.0)" end="(817.0, 273.0)" fill="#C1272D" />
35
+ <text id="13" type="text/plain" rect="(859.0, 112.0, 219.0, 50.0)" font-family="Cantarell" font-size="16">wait for reconstruction to be done over slurm</text>
36
+ </annotations>
37
+ <thumbnail />
38
+ <node_properties>
39
+ <properties node_id="0" format="literal">{'_scanIDs': [], 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
40
+ <properties node_id="1" format="literal">{'_ewoks_default_inputs': {'data': None, 'dark_ref_params': None}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
41
+ <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>
42
+ <properties node_id="3" format="literal">{'_ewoks_default_inputs': {'data': None, 'nabu_params': None}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
43
+ <properties node_id="4" format="literal">{'_viewer_config': {}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
44
+ <properties node_id="5" format="literal">{'_ewoks_default_inputs': {}, 'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\nH\x00\x00\x01l\x00\x00\x0c#\x00\x00\x02\xce\x00\x00\nH\x00\x00\x01\x91\x00\x00\x0c#\x00\x00\x02\xce\x00\x00\x00\x01\x00\x00\x00\x00\x07\x80\x00\x00\nH\x00\x00\x01\x91\x00\x00\x0c#\x00\x00\x02\xce', '__version__': 1}</properties>
45
+ <properties node_id="6" format="literal">{'_ewoks_default_inputs': {}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
46
+ </node_properties>
47
+ <session_state>
48
+ <window_groups />
49
+ </session_state>
50
+ </scheme>
@@ -12,14 +12,14 @@
12
12
  <node id="8" name="future supervisor" qualified_name="orangecontrib.tomwer.widgets.cluster.FutureSupervisorOW.FutureSupervisorOW" project_name="tomwer" version="" title="future supervisor" position="(988.0, 497.75)" />
13
13
  </nodes>
14
14
  <links>
15
- <link id="0" source_node_id="0" sink_node_id="1" source_channel="data" sink_channel="data" enabled="true" />
16
- <link id="1" source_node_id="1" sink_node_id="2" source_channel="data" sink_channel="data" enabled="true" />
17
- <link id="2" source_node_id="2" sink_node_id="3" source_channel="data" sink_channel="data" enabled="true" />
18
- <link id="3" source_node_id="3" sink_node_id="4" source_channel="data" sink_channel="data" enabled="true" />
19
- <link id="4" source_node_id="3" sink_node_id="5" source_channel="data" sink_channel="data" enabled="true" />
20
- <link id="5" source_node_id="7" sink_node_id="5" source_channel="cluster_config" sink_channel="cluster_config" enabled="true" />
21
- <link id="6" source_node_id="5" sink_node_id="8" source_channel="future_tomo_obj" sink_channel="future_tomo_obj" enabled="true" />
22
- <link id="7" source_node_id="8" sink_node_id="6" source_channel="volume" sink_channel="volume" enabled="true" />
15
+ <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" />
16
+ <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" />
17
+ <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" />
18
+ <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" />
19
+ <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" />
20
+ <link id="5" source_node_id="7" sink_node_id="5" source_channel="cluster_config" sink_channel="cluster_config" enabled="true" source_channel_id="data_out" sink_channel_id="cluster_in" />
21
+ <link id="6" source_node_id="5" sink_node_id="8" source_channel="future_tomo_obj" sink_channel="future_tomo_obj" enabled="true" source_channel_id="future_out" sink_channel_id="future_in" />
22
+ <link id="7" source_node_id="8" sink_node_id="6" source_channel="data" sink_channel="data" enabled="true" source_channel_id="data" sink_channel_id="data" />
23
23
  </links>
24
24
  <annotations>
25
25
  <arrow id="0" start="(267.0, 56.0)" end="(194.0, 105.0)" fill="#C1272D" />
@@ -40,7 +40,7 @@ def widget_discovery(discovery):
40
40
  "orangecontrib.tomwer.widgets.debugtools",
41
41
  "orangecontrib.tomwer.widgets.edit",
42
42
  "orangecontrib.tomwer.widgets.reconstruction",
43
- "orangecontrib.tomwer.widgets.stitching",
43
+ # "orangecontrib.tomwer.widgets.stitching",
44
44
  "orangecontrib.tomwer.widgets.visualization",
45
45
  "orangecontrib.tomwer.widgets.other",
46
46
  ]
@@ -72,7 +72,6 @@ class FutureSupervisorOW(OWBaseWidget, openclass=True):
72
72
  want_main_area = True
73
73
  want_control_area = False
74
74
  resizing_enabled = True
75
- compress_signal = False
76
75
 
77
76
  _ewoks_default_inputs = Setting(dict())
78
77
 
@@ -29,13 +29,15 @@ __date__ = "13/10/2021"
29
29
 
30
30
  import logging
31
31
 
32
+ from silx.gui import qt
33
+
32
34
  from orangewidget import gui
33
35
  from orangewidget.settings import Setting
34
36
  from orangewidget.widget import Output, OWBaseWidget
35
37
 
36
38
  import tomwer.core.process.cluster.supervisor
37
39
  from tomwer.core.cluster import SlurmClusterConfiguration
38
- from tomwer.gui.cluster.slurm import SlurmSettingsWidget
40
+ from tomwer.gui.cluster.slurm import SlurmSettingsWindow
39
41
 
40
42
  _logger = logging.getLogger(__name__)
41
43
 
@@ -56,26 +58,26 @@ class SlurmClusterOW(OWBaseWidget, openclass=True):
56
58
  want_main_area = True
57
59
  want_control_area = False
58
60
  resizing_enabled = True
59
- compress_signal = False
60
61
 
61
62
  _ewoks_default_inputs = Setting(dict())
62
63
 
63
64
  ewokstaskclass = tomwer.core.process.cluster.supervisor._SupervisorPlaceHolder
64
65
 
65
66
  class Outputs:
66
- data_out = Output(name="cluster_config", type=SlurmClusterConfiguration)
67
+ config_out = Output(name="cluster_config", type=SlurmClusterConfiguration)
67
68
 
68
69
  def __init__(self, parent=None) -> None:
69
70
  super().__init__(parent)
70
71
  layout = gui.vBox(self.mainArea, self.name).layout()
71
- self._widget = SlurmSettingsWidget(parent=self)
72
+ self._widget = SlurmSettingsWindow(parent=self)
73
+ self._widget.setWindowFlags(qt.Qt.Widget)
72
74
  layout.addWidget(self._widget)
73
75
 
74
76
  if self._ewoks_default_inputs != {}:
75
77
  self._widget.setConfiguration(self._ewoks_default_inputs)
76
78
 
77
79
  # trigger the signal to avoid any user request
78
- self.Outputs.data_out.send(self.getConfiguration())
80
+ self.Outputs.config_out.send(self.getConfiguration())
79
81
 
80
82
  # connect signal / slot
81
83
  self._widget.sigConfigChanged.connect(self._configurationChanged)
@@ -92,7 +94,7 @@ class SlurmClusterOW(OWBaseWidget, openclass=True):
92
94
 
93
95
  def _configurationChanged(self):
94
96
  slurmClusterconfiguration = self.getConfiguration()
95
- self.Outputs.data_out.send(slurmClusterconfiguration)
97
+ self.Outputs.config_out.send(slurmClusterconfiguration)
96
98
  self._ewoks_default_inputs = slurmClusterconfiguration.to_dict()
97
99
 
98
100
  def getConfiguration(self):
@@ -54,7 +54,6 @@ class AdvancementOW(widget.OWBaseWidget, openclass=True):
54
54
  want_main_area = True
55
55
  want_control_area = False
56
56
  resizing_enabled = True
57
- compress_signal = False
58
57
 
59
58
  def __init__(self, parent=None):
60
59
  widget.OWBaseWidget.__init__(self, parent)
@@ -48,15 +48,11 @@ class DataDiscoveryOW(widget.OWBaseWidget, WidgetLongProcessing, openclass=True)
48
48
  "NXtomo",
49
49
  ]
50
50
 
51
- compress_signal = False
52
-
53
51
  want_main_area = True
54
52
  want_control_area = False
55
53
  resizing_enabled = True
56
54
 
57
- ewoksorangeclass = (
58
- tomwer.core.process.control.datadiscovery._DataDiscoveryPlaceHolder
59
- )
55
+ ewokstaskclass = tomwer.core.process.control.datadiscovery._DataDiscoveryPlaceHolder
60
56
 
61
57
  class Outputs:
62
58
  data = Output(name="data", type=TomwerScanBase, doc="one scan to be process")
@@ -94,7 +90,6 @@ class DataDiscoveryOW(widget.OWBaseWidget, WidgetLongProcessing, openclass=True)
94
90
  )
95
91
 
96
92
  def _updatesettings(self):
97
- print("update settings")
98
93
  self.settings = self.getConfiguration()
99
94
 
100
95
  # expose some API
@@ -53,7 +53,6 @@ class DataListOW(OWBaseWidget, openclass=True):
53
53
  want_main_area = True
54
54
  want_control_area = False
55
55
  resizing_enabled = True
56
- compress_signal = False
57
56
 
58
57
  _scanIDs = Setting(list())
59
58
 
@@ -90,14 +90,11 @@ class DataListenerOW(
90
90
  "NXtomo",
91
91
  ]
92
92
 
93
- allows_cycle = True
94
- compress_signal = False
95
-
96
93
  want_main_area = True
97
94
  want_control_area = False
98
95
  resizing_enabled = True
99
96
 
100
- ewoksorangeclass = (
97
+ ewokstaskclass = (
101
98
  tomwer.core.process.control.datalistener.datalistener._DataListenerTaskPlaceHolder
102
99
  )
103
100
 
@@ -141,6 +138,9 @@ class DataListenerOW(
141
138
  # set up
142
139
  self._loadSettings()
143
140
 
141
+ # for conveniance start the listener when create it.
142
+ self.activate(True)
143
+
144
144
  def _loadSettings(self):
145
145
  if "bliss_server_configuration" in self._static_input: # pylint: disable=E1135
146
146
  bliss_configuration = self._static_input[ # pylint: disable=E1136
@@ -58,7 +58,6 @@ class DataSelectorOW(OWBaseWidget, openclass=True):
58
58
  want_main_area = True
59
59
  want_control_area = False
60
60
  resizing_enabled = True
61
- compress_signal = False
62
61
 
63
62
  _scanIDs = Setting(list())
64
63
 
@@ -38,7 +38,7 @@ from silx.gui import qt
38
38
  import tomwer.core.process.control.scantransfer
39
39
  from orangecontrib.tomwer.orange.managedprocess import SuperviseOW
40
40
  from orangecontrib.tomwer.orange.settings import CallbackSettingsHandler
41
- from tomwer.core.process.control.scantransfer import ScanTransfer
41
+ from tomwer.core.process.control.scantransfer import ScanTransferTask
42
42
  from tomwer.core.scan.scanbase import TomwerScanBase
43
43
  from tomwer.gui.control.datatransfert import DataTransfertSelector
44
44
  from tomwer.utils import docstring
@@ -70,13 +70,12 @@ class DataTransfertOW(SuperviseOW):
70
70
  "folder",
71
71
  ]
72
72
 
73
- ewokstaskclass = tomwer.core.process.control.scantransfer.ScanTransfer
73
+ ewokstaskclass = tomwer.core.process.control.scantransfer.ScanTransferTask
74
74
 
75
75
  settingsHandler = CallbackSettingsHandler()
76
76
 
77
77
  want_main_area = True
78
78
  resizing_enabled = True
79
- compress_signal = False
80
79
 
81
80
  dest_dir_settings = settings.Setting(str())
82
81
  """Parameters directly editabled from the TOFU interface"""
@@ -100,7 +99,7 @@ class DataTransfertOW(SuperviseOW):
100
99
  self._widget = DataTransfertSelector(
101
100
  parent=self,
102
101
  rnice_option=True,
103
- default_root_folder=ScanTransfer.getDefaultOutputDir(),
102
+ default_root_folder=ScanTransferTask.getDefaultOutputDir(),
104
103
  )
105
104
  self._layout = gui.vBox(self.mainArea, self.name).layout()
106
105
  self._layout.addWidget(self._widget)
@@ -152,10 +151,11 @@ class DataTransfertOW(SuperviseOW):
152
151
  inputs = {
153
152
  "data": data,
154
153
  "move": move,
155
- "force": force,
154
+ "overwrite": force,
156
155
  "noRsync": noRsync,
157
156
  "dest_dir": self._destDir,
158
157
  "block": self._forceSync,
158
+ "serialize_output_data": False,
159
159
  }
160
160
  thread = ThreadDataTransfer(
161
161
  inputs=inputs,
@@ -163,7 +163,7 @@ class DataTransfertOW(SuperviseOW):
163
163
  process=self,
164
164
  )
165
165
  try:
166
- process = ScanTransfer(inputs=inputs)
166
+ process = ScanTransferTask(inputs=inputs)
167
167
  except Exception as e:
168
168
  logger.error(e)
169
169
  else:
@@ -204,7 +204,7 @@ class ThreadDataTransfer(qt.QThread):
204
204
 
205
205
  def run(self):
206
206
  try:
207
- process = ScanTransfer(inputs=self._inputs)
207
+ process = ScanTransferTask(inputs=self._inputs)
208
208
  process.run()
209
209
  except Exception as e:
210
210
  logger.error(f"data transfer failed. Reason is {e}")
@@ -63,7 +63,6 @@ class DataValidatorOW(SuperviseOW):
63
63
 
64
64
  want_main_area = True
65
65
  resizing_enabled = True
66
- compress_signal = False
67
66
 
68
67
  ewokstaskclass = tomwer.core.process.control.scanvalidator._ScanValidatorPlaceHolder
69
68
 
@@ -63,9 +63,6 @@ class DataWatcherOW(widget.OWBaseWidget, WidgetLongProcessing, openclass=True):
63
63
  priority = 12
64
64
  keywords = ["tomography", "file", "tomwer", "observer", "datawatcher"]
65
65
 
66
- allows_cycle = True
67
- compress_signal = False
68
-
69
66
  want_main_area = True
70
67
  want_control_area = False
71
68
  resizing_enabled = True