tomwer 1.0.4__py3-none-any.whl → 1.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (256) hide show
  1. orangecontrib/tomwer/tutorials/EBS_tomo_listener.ows +39 -0
  2. orangecontrib/tomwer/tutorials/cast_volume.ows +34 -0
  3. orangecontrib/tomwer/tutorials/simple_slice_reconstruction.ows +39 -0
  4. orangecontrib/tomwer/tutorials/simple_volume_local_reconstruction.ows +49 -0
  5. orangecontrib/tomwer/tutorials/simple_volume_to_slurm_reconstruction.ows +59 -0
  6. orangecontrib/tomwer/tutorials/using_saaxis_to_find_cor.ows +44 -0
  7. orangecontrib/tomwer/widgets/cluster/FutureSupervisorOW.py +1 -1
  8. orangecontrib/tomwer/widgets/cluster/SlurmClusterOW.py +14 -4
  9. orangecontrib/tomwer/widgets/cluster/__init__.py +1 -1
  10. orangecontrib/tomwer/widgets/control/DataListOW.py +12 -5
  11. orangecontrib/tomwer/widgets/control/DataListenerOW.py +18 -9
  12. orangecontrib/tomwer/widgets/control/DataSelectorOW.py +13 -6
  13. orangecontrib/tomwer/widgets/control/DataTransfertOW.py +4 -5
  14. orangecontrib/tomwer/widgets/control/DataValidatorOW.py +8 -4
  15. orangecontrib/tomwer/widgets/control/DataWatcherOW.py +4 -6
  16. orangecontrib/tomwer/widgets/control/EDF2NXTomomillOW.py +49 -62
  17. orangecontrib/tomwer/widgets/control/FilterOW.py +2 -4
  18. orangecontrib/tomwer/widgets/control/NXTomomillMixIn.py +93 -0
  19. orangecontrib/tomwer/widgets/control/NXTomomillOW.py +135 -128
  20. orangecontrib/tomwer/widgets/control/NotifierOW.py +31 -7
  21. orangecontrib/tomwer/widgets/control/SingleTomoObjOW.py +3 -5
  22. orangecontrib/tomwer/widgets/control/TomoObjSerieOW.py +85 -0
  23. orangecontrib/tomwer/widgets/control/VolumeSelector.py +12 -4
  24. orangecontrib/tomwer/widgets/control/VolumeSymLinkOW.py +11 -7
  25. orangecontrib/tomwer/widgets/control/icons/notification.svg +4 -4
  26. orangecontrib/tomwer/widgets/control/icons/nxtomomill.png +0 -0
  27. orangecontrib/tomwer/widgets/control/icons/nxtomomill.svg +8 -5
  28. orangecontrib/tomwer/widgets/control/icons/tomoobjserie.png +0 -0
  29. orangecontrib/tomwer/widgets/control/icons/tomoobjserie.svg +138 -0
  30. orangecontrib/tomwer/widgets/edit/DarkFlatPatchOW.py +16 -4
  31. orangecontrib/tomwer/widgets/edit/NXtomoEditorOW.py +100 -0
  32. orangecontrib/tomwer/widgets/edit/icons/image_key_editor.png +0 -0
  33. orangecontrib/tomwer/widgets/edit/icons/image_key_upgrader.png +0 -0
  34. orangecontrib/tomwer/widgets/edit/icons/nx_tomo_editor.png +0 -0
  35. orangecontrib/tomwer/widgets/edit/icons/nx_tomo_editor.svg +123 -0
  36. orangecontrib/tomwer/widgets/edit/test/test_dark_flat_patch.py +21 -1
  37. orangecontrib/tomwer/widgets/edit/test/test_image_key_editor.py +1 -1
  38. orangecontrib/tomwer/widgets/edit/test/test_image_key_upgrader.py +1 -1
  39. orangecontrib/tomwer/widgets/edit/test/test_nxtomo_editor.py +25 -0
  40. orangecontrib/tomwer/widgets/other/PythonScriptOW.py +19 -10
  41. orangecontrib/tomwer/widgets/reconstruction/AxisOW.py +20 -14
  42. orangecontrib/tomwer/widgets/reconstruction/CastNabuVolumeOW.py +24 -10
  43. orangecontrib/tomwer/widgets/reconstruction/DarkRefAndCopyOW.py +26 -21
  44. orangecontrib/tomwer/widgets/reconstruction/NabuOW.py +29 -12
  45. orangecontrib/tomwer/widgets/reconstruction/NabuVolumeOW.py +44 -17
  46. orangecontrib/tomwer/widgets/reconstruction/SAAxisOW.py +28 -18
  47. orangecontrib/tomwer/widgets/reconstruction/SADeltaBetaOW.py +24 -17
  48. orangecontrib/tomwer/widgets/reconstruction/SinoNormOW.py +6 -6
  49. orangecontrib/tomwer/widgets/reconstruction/TofuOW.py +4 -2
  50. orangecontrib/tomwer/widgets/reconstruction/icons/nabu_2d.png +0 -0
  51. orangecontrib/tomwer/widgets/reconstruction/icons/nabu_2d.svg +11 -8
  52. orangecontrib/tomwer/widgets/visualization/DataViewerOW.py +10 -4
  53. orangecontrib/tomwer/widgets/visualization/DiffViewerOW.py +1 -1
  54. orangecontrib/tomwer/widgets/visualization/NXtomoMetadataViewerOW.py +69 -0
  55. orangecontrib/tomwer/widgets/visualization/SampleMovedOW.py +2 -4
  56. orangecontrib/tomwer/widgets/visualization/icons/nx_tomo_metadata_viewer.png +0 -0
  57. orangecontrib/tomwer/widgets/visualization/icons/nx_tomo_metadata_viewer.svg +105 -0
  58. tomwer/__main__.py +10 -5
  59. tomwer/app/canvas_launcher/config.py +10 -10
  60. tomwer/app/canvas_launcher/mainwindow.py +68 -6
  61. tomwer/app/canvas_launcher/widgetsscheme.py +1 -3
  62. tomwer/app/darkref.py +16 -12
  63. tomwer/app/imagekeyeditor.py +2 -2
  64. tomwer/app/imagekeyupgrader.py +104 -0
  65. tomwer/app/nxtomoeditor.py +103 -0
  66. tomwer/app/rsync.py +1 -1
  67. tomwer/core/cluster/cluster.py +1 -1
  68. tomwer/core/futureobject.py +1 -0
  69. tomwer/core/process/control/datalistener/datalistener.py +7 -1
  70. tomwer/core/process/control/datalistener/rpcserver.py +3 -3
  71. tomwer/core/process/control/datawatcher/datawatcher.py +18 -18
  72. tomwer/core/process/control/datawatcher/datawatcherobserver.py +5 -8
  73. tomwer/core/process/control/datawatcher/datawatcherprocess.py +2 -3
  74. tomwer/core/process/control/datawatcher/edfdwprocess.py +2 -2
  75. tomwer/core/process/control/nxtomomill.py +33 -58
  76. tomwer/core/process/control/scanlist.py +2 -1
  77. tomwer/core/process/control/scanselector.py +7 -0
  78. tomwer/core/process/control/scantransfer.py +9 -18
  79. tomwer/core/process/control/scanvalidator.py +6 -5
  80. tomwer/core/process/control/singletomoobj.py +2 -1
  81. tomwer/core/process/control/timer.py +2 -1
  82. tomwer/core/process/control/tomoobjserie.py +8 -0
  83. tomwer/core/process/control/volumeselector.py +2 -1
  84. tomwer/core/process/control/volumesymlink.py +2 -1
  85. tomwer/core/process/edit/darkflatpatch.py +2 -1
  86. tomwer/core/process/edit/imagekeyeditor.py +4 -3
  87. tomwer/core/process/reconstruction/axis/axis.py +29 -32
  88. tomwer/core/process/reconstruction/axis/mode.py +3 -2
  89. tomwer/core/process/reconstruction/axis/params.py +35 -16
  90. tomwer/core/process/reconstruction/darkref/darkrefs.py +90 -707
  91. tomwer/core/process/reconstruction/darkref/darkrefscopy.py +44 -16
  92. tomwer/core/process/reconstruction/darkref/params.py +62 -67
  93. tomwer/core/process/reconstruction/lamino/tofu.py +1 -1
  94. tomwer/core/process/reconstruction/nabu/castvolume.py +21 -26
  95. tomwer/core/process/reconstruction/nabu/nabucommon.py +36 -38
  96. tomwer/core/process/reconstruction/nabu/nabuscores.py +28 -13
  97. tomwer/core/process/reconstruction/nabu/nabuslices.py +41 -14
  98. tomwer/core/process/reconstruction/nabu/nabuvolume.py +21 -12
  99. tomwer/core/process/reconstruction/nabu/utils.py +12 -1
  100. tomwer/core/process/reconstruction/normalization/normalization.py +9 -8
  101. tomwer/core/process/reconstruction/saaxis/saaxis.py +46 -20
  102. tomwer/core/process/reconstruction/sadeltabeta/sadeltabeta.py +38 -12
  103. tomwer/core/process/reconstruction/test/__init__.py +0 -39
  104. tomwer/core/process/reconstruction/test/test_axis_params.py +25 -3
  105. tomwer/core/process/reconstruction/test/test_darkref_copy.py +117 -1
  106. tomwer/core/process/script/python.py +16 -12
  107. tomwer/core/process/task.py +3 -7
  108. tomwer/core/process/test/test_axis.py +1 -1
  109. tomwer/core/process/test/test_dark_and_flat.py +41 -111
  110. tomwer/core/process/test/test_data_listener.py +0 -29
  111. tomwer/core/process/test/test_data_transfer.py +10 -14
  112. tomwer/core/process/test/test_nabu.py +1 -1
  113. tomwer/core/process/test/test_normalization.py +1 -1
  114. tomwer/core/process/visualization/liveslice.py +6 -0
  115. tomwer/core/scan/blissscan.py +37 -2
  116. tomwer/core/scan/edfscan.py +14 -4
  117. tomwer/core/scan/hdf5scan.py +10 -4
  118. tomwer/core/scan/scanbase.py +35 -29
  119. tomwer/core/scan/scanfactory.py +3 -17
  120. tomwer/core/scan/test/test_h5.py +1 -1
  121. tomwer/core/scan/test/test_process_registration.py +0 -11
  122. tomwer/core/scan/test/test_scan.py +32 -30
  123. tomwer/core/settings.py +2 -2
  124. tomwer/core/test/test_utils.py +1 -1
  125. tomwer/core/tomwer_object.py +19 -0
  126. tomwer/core/utils/__init__.py +0 -45
  127. tomwer/core/utils/char.py +2 -0
  128. tomwer/core/utils/gpu.py +5 -5
  129. tomwer/core/utils/nxtomoutils.py +2 -2
  130. tomwer/core/utils/scanutils.py +50 -0
  131. tomwer/core/utils/volumeutils.py +13 -0
  132. tomwer/core/volume/edfvolume.py +4 -0
  133. tomwer/core/volume/hdf5volume.py +4 -0
  134. tomwer/core/volume/jp2kvolume.py +4 -0
  135. tomwer/core/volume/rawvolume.py +4 -0
  136. tomwer/core/volume/tiffvolume.py +4 -0
  137. tomwer/core/volume/volumebase.py +19 -12
  138. tomwer/core/volume/volumefactory.py +20 -1
  139. tomwer/gui/cluster/slurm.py +1 -1
  140. tomwer/gui/cluster/test/test_cluster.py +2 -2
  141. tomwer/gui/control/datalist.py +109 -34
  142. tomwer/gui/control/datatransfert.py +1 -1
  143. tomwer/gui/control/datawatcher/datawatcher.py +23 -13
  144. tomwer/gui/control/datawatcher/datawatcherobserver.py +1 -1
  145. tomwer/gui/control/observations.py +0 -3
  146. tomwer/gui/control/selectorwidgetbase.py +42 -11
  147. tomwer/gui/control/serie/seriecreator.py +967 -0
  148. tomwer/{web/__init__.py → gui/control/serie/seriewaiter.py} +5 -7
  149. tomwer/gui/control/singletomoobj.py +15 -3
  150. tomwer/gui/control/test/test_datalist.py +1 -1
  151. tomwer/gui/control/test/test_datalistener.py +1 -1
  152. tomwer/gui/control/test/test_inputwidget.py +1 -1
  153. tomwer/gui/control/test/test_process_manager.py +1 -13
  154. tomwer/gui/control/test/test_scanselector.py +1 -1
  155. tomwer/gui/control/test/test_scanvalidator.py +1 -1
  156. tomwer/gui/control/test/test_single_tomo_obj.py +1 -1
  157. tomwer/gui/control/test/test_volume_dialog.py +19 -7
  158. tomwer/gui/control/test/test_volumeselector.py +4 -4
  159. tomwer/gui/debugtools/datasetgenerator.py +1 -8
  160. tomwer/gui/edit/dkrfpatch.py +2 -2
  161. tomwer/gui/edit/imagekeyeditor.py +12 -9
  162. tomwer/gui/edit/nxtomoeditor.py +475 -0
  163. tomwer/gui/edit/test/test_dkrf_patch.py +2 -14
  164. tomwer/gui/edit/test/test_image_key_editor.py +2 -2
  165. tomwer/gui/edit/test/test_nx_editor.py +155 -0
  166. tomwer/gui/qfolderdialog.py +11 -0
  167. tomwer/gui/reconstruction/axis/CompareImages.py +27 -29
  168. tomwer/gui/reconstruction/axis/axis.py +2 -0
  169. tomwer/gui/reconstruction/axis/radioaxis.py +67 -11
  170. tomwer/gui/reconstruction/darkref/darkrefcopywidget.py +7 -9
  171. tomwer/gui/reconstruction/darkref/darkrefwidget.py +22 -24
  172. tomwer/gui/reconstruction/lamino/tofu/projections.py +1 -1
  173. tomwer/gui/reconstruction/lamino/tofu/tofu.py +3 -3
  174. tomwer/gui/reconstruction/lamino/tofu/tofuexpert.py +4 -4
  175. tomwer/gui/reconstruction/lamino/tofu/tofuoutput.py +10 -4
  176. tomwer/gui/reconstruction/nabu/castvolume.py +80 -11
  177. tomwer/gui/reconstruction/nabu/check.py +1 -1
  178. tomwer/gui/reconstruction/nabu/nabuconfig/ctf.py +352 -0
  179. tomwer/gui/reconstruction/nabu/nabuconfig/nabuconfig.py +0 -9
  180. tomwer/gui/reconstruction/nabu/nabuconfig/output.py +1 -1
  181. tomwer/gui/reconstruction/nabu/nabuconfig/phase.py +18 -19
  182. tomwer/gui/reconstruction/nabu/nabuconfig/preprocessing.py +30 -7
  183. tomwer/gui/reconstruction/nabu/nabuconfig/reconstruction.py +26 -13
  184. tomwer/gui/reconstruction/nabu/slices.py +10 -2
  185. tomwer/gui/reconstruction/nabu/slurm.py +1 -1
  186. tomwer/gui/reconstruction/nabu/volume.py +13 -7
  187. tomwer/gui/reconstruction/normalization/intensity.py +1 -1
  188. tomwer/gui/reconstruction/saaxis/corrangeselector.py +10 -34
  189. tomwer/gui/reconstruction/saaxis/saaxis.py +11 -6
  190. tomwer/gui/reconstruction/saaxis/sliceselector.py +11 -26
  191. tomwer/gui/reconstruction/sadeltabeta/saadeltabeta.py +13 -8
  192. tomwer/gui/reconstruction/scores/scoreplot.py +67 -61
  193. tomwer/gui/reconstruction/test/test_axis.py +2 -2
  194. tomwer/gui/reconstruction/test/test_lamino.py +2 -2
  195. tomwer/gui/reconstruction/test/test_nabu.py +14 -1
  196. tomwer/gui/reconstruction/test/test_saaxis.py +8 -17
  197. tomwer/gui/reconstruction/test/test_sadeltabeta.py +7 -13
  198. tomwer/gui/stackplot.py +11 -28
  199. tomwer/gui/test/test_axis_gui.py +4 -4
  200. tomwer/gui/test/test_qfolder_dialog.py +12 -0
  201. tomwer/gui/utils/inputwidget.py +42 -21
  202. tomwer/gui/utils/lineselector/lineselector.py +13 -21
  203. tomwer/gui/utils/scandescription.py +2 -4
  204. tomwer/gui/utils/slider.py +1 -102
  205. tomwer/gui/utils/unitsystem.py +48 -11
  206. tomwer/gui/visualization/dataviewer.py +24 -17
  207. tomwer/gui/visualization/diffviewer/diffviewer.py +2 -11
  208. tomwer/gui/visualization/nxtomometadata.py +21 -0
  209. tomwer/gui/visualization/scanoverview.py +0 -1
  210. tomwer/gui/visualization/test/test_nx_tomo_metadata_viewer.py +72 -0
  211. tomwer/gui/visualization/test/test_stacks.py +1 -1
  212. tomwer/gui/visualization/tomoobjoverview.py +49 -0
  213. tomwer/gui/visualization/volumeoverview.py +64 -0
  214. tomwer/gui/visualization/volumeviewer.py +1 -1
  215. tomwer/resources/gui/icons/multi-document-save.png +0 -0
  216. tomwer/resources/gui/icons/multi-document-save.svg +101 -0
  217. tomwer/resources/gui/illustrations/ctf_z1.png +0 -0
  218. tomwer/resources/gui/illustrations/ctf_z1.svg +471 -0
  219. tomwer/synctools/datalistener.py +5 -1
  220. tomwer/synctools/imageloaderthread.py +2 -2
  221. tomwer/synctools/stacks/edit/imagekeyeditor.py +1 -1
  222. tomwer/synctools/stacks/processingstack.py +2 -2
  223. tomwer/synctools/stacks/reconstruction/castvolume.py +1 -0
  224. tomwer/synctools/stacks/reconstruction/lamino.py +1 -3
  225. tomwer/synctools/stacks/reconstruction/sadeltabeta.py +0 -2
  226. tomwer/synctools/test/test_darkRefs.py +32 -149
  227. tomwer/synctools/test/test_foldertransfer.py +1 -1
  228. tomwer/synctools/test/test_scanstages.py +2 -2
  229. tomwer/tests/__init__.py +0 -0
  230. tomwer/tests/conftest.py +51 -0
  231. tomwer/{test → tests}/test_scripts.py +1 -1
  232. tomwer/tests/test_utils.py +10 -0
  233. tomwer/{test → tests}/utils/utilstest.py +0 -11
  234. tomwer/version.py +3 -3
  235. {tomwer-1.0.4.dist-info → tomwer-1.1.0.dist-info}/METADATA +14 -16
  236. {tomwer-1.0.4.dist-info → tomwer-1.1.0.dist-info}/RECORD +245 -217
  237. {tomwer-1.0.4.dist-info → tomwer-1.1.0.dist-info}/WHEEL +1 -1
  238. {tomwer-1.0.4.dist-info → tomwer-1.1.0.dist-info}/entry_points.txt +6 -0
  239. orangecontrib/tomwer/setup.py +0 -45
  240. orangecontrib/tomwer/widgets/setup.py +0 -49
  241. tomwer/app/process.py +0 -153
  242. tomwer/core/process/reconstruction/nabu/slurm.py +0 -36
  243. tomwer/core/process/reconstruction/utils/nabu_slice_exec.py +0 -10
  244. tomwer/core/utils/laminoutils.py +0 -80
  245. tomwer/gui/utils/lineselector/lineselection.py +0 -76
  246. tomwer/setup.py +0 -52
  247. tomwer/web/client.py +0 -43
  248. tomwer/web/config.py +0 -36
  249. tomwer/web/test/test_graylog_connection.py +0 -59
  250. {tomwer/test → orangecontrib/tomwer/tutorials}/__init__.py +0 -0
  251. /tomwer/{web/test → gui/control/serie}/__init__.py +0 -0
  252. /tomwer/{test → tests}/utils/__init__.py +0 -0
  253. /tomwer-1.0.4-py3.8-nspkg.pth → /tomwer-1.1.0-py3.9-nspkg.pth +0 -0
  254. {tomwer-1.0.4.dist-info → tomwer-1.1.0.dist-info}/LICENSE +0 -0
  255. {tomwer-1.0.4.dist-info → tomwer-1.1.0.dist-info}/namespace_packages.txt +0 -0
  256. {tomwer-1.0.4.dist-info → tomwer-1.1.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,39 @@
1
+ <?xml version='1.0' encoding='utf-8'?>
2
+ <scheme version="2.0" title="EBS tomo listener" description="">
3
+ <nodes>
4
+ <node id="0" name="scan listener" qualified_name="orangecontrib.tomwer.widgets.control.DataListenerOW.DataListenerOW" project_name="tomwer" version="" title="scan listener" 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="(358.0, 190.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="(534.0, 226.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="(681.0, 260.0)" />
8
+ <node id="4" name="data viewer" qualified_name="orangecontrib.tomwer.widgets.visualization.DataViewerOW.DataViewerOW" project_name="tomwer" version="" title="data viewer" position="(846.0, 297.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" />
12
+ <link id="1" source_node_id="1" sink_node_id="2" source_channel="data" sink_channel="data" enabled="true" />
13
+ <link id="2" source_node_id="2" sink_node_id="3" source_channel="data" sink_channel="data" enabled="true" />
14
+ <link id="3" source_node_id="3" sink_node_id="4" source_channel="data" sink_channel="data" enabled="true" />
15
+ </links>
16
+ <annotations>
17
+ <arrow id="0" start="(212.0, 58.0)" end="(174.0, 101.0)" fill="#C1272D" />
18
+ <text id="1" type="text/plain" rect="(248.0, 20.0, 202.0, 76.0)" font-family="Ubuntu" font-size="16">wait for bliss scan and create NXtomo</text>
19
+ <arrow id="2" start="(279.0, 360.0)" end="(332.0, 263.0)" fill="#C1272D" />
20
+ <text id="3" type="text/plain" rect="(224.0, 379.0, 135.0, 10.0)" font-family="Ubuntu" font-size="16">compute reduced darks and flats</text>
21
+ <text id="4" type="text/plain" rect="(611.0, 95.0, 114.0, 38.0)" font-family="Ubuntu" font-size="16">compute COR</text>
22
+ <arrow id="5" start="(616.0, 143.0)" end="(561.0, 183.0)" fill="#C1272D" />
23
+ <arrow id="6" start="(584.0, 412.0)" end="(642.0, 334.0)" fill="#C1272D" />
24
+ <text id="7" type="text/plain" rect="(557.0, 427.0, 150.0, 26.0)" font-family="Ubuntu" font-size="16">compute slice</text>
25
+ <text id="8" type="text/plain" rect="(902.0, 152.0, 117.0, 85.0)" font-family="Ubuntu" font-size="16">browse dataset and reconstructed slice(s)</text>
26
+ <arrow id="9" start="(883.0, 204.0)" end="(845.0, 253.0)" fill="#C1272D" />
27
+ </annotations>
28
+ <thumbnail />
29
+ <node_properties>
30
+ <properties node_id="0" format="literal">{'_blissConfiguration': {}, '_nxtomo_cfg_file': '', '_static_input': {'nxtomomill_cfg_file': ''}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
31
+ <properties node_id="1" format="literal">{'_ewoks_default_inputs': {'data': None, 'dark_ref_params': None}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
32
+ <properties node_id="2" format="literal">{'_ewoks_default_inputs': {'data': None, 'axis_params': {'MODE': 'sino-sliding-window', 'POSITION_VALUE': None, 'CALC_INPUT_TYPE': 'transmission_nopag', 'ANGLE_MODE': '0-180', 'USE_SINOGRAM': True, 'SINOGRAM_LINE': 'middle', '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, 'oversampling': 4, 'n_subsampling_y': 10, 'take_log': True, 'near_pos': 0.0, 'near_width': 20}, 'SIDE': 'left', 'COR_OPTIONS': ''}, 'gui': {'mode_is_lock': True, 'value_is_lock': False, 'auto_update_estimated_cor': True}}, 'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x01k\x00\x00\x00\xac\x00\x00\x06\x01\x00\x00\x03\x8e\x00\x00\x01k\x00\x00\x00\xd1\x00\x00\x06\x01\x00\x00\x03\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x07\x80\x00\x00\x01k\x00\x00\x00\xd1\x00\x00\x06\x01\x00\x00\x03\x8e', '__version__': 1}</properties>
33
+ <properties node_id="3" format="literal">{'_ewoks_default_inputs': {'data': None, 'nabu_params': None}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
34
+ <properties node_id="4" format="literal">{'_viewer_config': {}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
35
+ </node_properties>
36
+ <session_state>
37
+ <window_groups />
38
+ </session_state>
39
+ </scheme>
@@ -0,0 +1,34 @@
1
+ <?xml version='1.0' encoding='utf-8'?>
2
+ <scheme version="2.0" title="cast volume" description="">
3
+ <nodes>
4
+ <node id="0" name="volume selector" qualified_name="orangecontrib.tomwer.widgets.control.VolumeSelector.VolumeSelectorOW" project_name="tomwer" version="" title="volume selector" position="(166.0, 117.0)" />
5
+ <node id="1" name="cast volume" qualified_name="orangecontrib.tomwer.widgets.reconstruction.CastNabuVolumeOW.CastNabuVolumeOW" project_name="tomwer" version="" title="cast volume" position="(322.0, 186.0)" />
6
+ <node id="2" name="volume viewer" qualified_name="orangecontrib.tomwer.widgets.visualization.VolumeViewerOW.VolumeViewerOW" project_name="tomwer" version="" title="volume viewer" position="(532.0, 198.0)" />
7
+ <node id="3" name="volume viewer" qualified_name="orangecontrib.tomwer.widgets.visualization.VolumeViewerOW.VolumeViewerOW" project_name="tomwer" version="" title="volume viewer (1)" position="(500.0, 311.0)" />
8
+ </nodes>
9
+ <links>
10
+ <link id="0" source_node_id="0" sink_node_id="1" source_channel="volume" sink_channel="volume" enabled="true" />
11
+ <link id="1" source_node_id="1" sink_node_id="2" source_channel="volume" sink_channel="volume" enabled="true" />
12
+ <link id="2" source_node_id="1" sink_node_id="3" source_channel="cast volume" sink_channel="volume" enabled="true" />
13
+ </links>
14
+ <annotations>
15
+ <text id="0" type="text/plain" rect="(15.0, 214.0, 150.0, 31.0)" font-family="Ubuntu" font-size="16">define volume</text>
16
+ <arrow id="1" start="(67.0, 211.0)" end="(109.0, 160.0)" fill="#C1272D" />
17
+ <arrow id="2" start="(379.0, 94.0)" end="(341.0, 148.0)" fill="#C1272D" />
18
+ <text id="3" type="text/plain" rect="(393.0, 64.0, 150.0, 26.0)" font-family="Ubuntu" font-size="16">volume casting</text>
19
+ <text id="4" type="text/plain" rect="(626.0, 110.0, 150.0, 26.0)" font-family="Ubuntu" font-size="16">display original volume</text>
20
+ <text id="5" type="text/plain" rect="(372.0, 418.0, 150.0, 26.0)" font-family="Ubuntu" font-size="16">display volume casted</text>
21
+ <arrow id="6" start="(597.0, 123.0)" end="(555.0, 171.0)" fill="#C1272D" />
22
+ <arrow id="7" start="(411.0, 410.0)" end="(460.0, 364.0)" fill="#C1272D" />
23
+ </annotations>
24
+ <thumbnail />
25
+ <node_properties>
26
+ <properties node_id="0" format="literal">{'_scanIDs': [], 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
27
+ <properties node_id="1" format="literal">{'_ewoks_default_inputs': {'data': None, 'cast_volume_params': {}}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
28
+ <properties node_id="2" format="literal">{'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
29
+ <properties node_id="3" format="literal">{'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
30
+ </node_properties>
31
+ <session_state>
32
+ <window_groups />
33
+ </session_state>
34
+ </scheme>
@@ -0,0 +1,39 @@
1
+ <?xml version='1.0' encoding='utf-8'?>
2
+ <scheme version="2.0" title="simple slice reconstruction" 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="(820.0, 307.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" />
12
+ <link id="1" source_node_id="1" sink_node_id="2" source_channel="data" sink_channel="data" enabled="true" />
13
+ <link id="2" source_node_id="2" sink_node_id="3" source_channel="data" sink_channel="data" enabled="true" />
14
+ <link id="3" source_node_id="3" sink_node_id="4" source_channel="data" sink_channel="data" enabled="true" />
15
+ </links>
16
+ <annotations>
17
+ <arrow id="0" start="(267.0, 56.0)" end="(194.0, 105.0)" fill="#C1272D" />
18
+ <arrow id="1" start="(248.0, 298.0)" end="(292.0, 239.0)" fill="#C1272D" />
19
+ <arrow id="2" start="(576.0, 108.0)" end="(521.0, 168.0)" fill="#C1272D" />
20
+ <arrow id="3" start="(573.0, 405.0)" end="(625.0, 330.0)" fill="#C1272D" />
21
+ <arrow id="4" start="(913.0, 208.0)" end="(851.0, 258.0)" fill="#C1272D" />
22
+ <text id="5" type="text/plain" rect="(275.0, 19.0, 150.0, 26.0)" font-family="Ubuntu" font-size="16">provide dataset</text>
23
+ <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>
24
+ <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>
25
+ <text id="8" type="text/plain" rect="(522.0, 423.0, 150.0, 26.0)" font-family="Ubuntu" font-size="16">define one or several slice to be reconstructed</text>
26
+ <text id="9" type="text/plain" rect="(935.0, 174.0, 150.0, 26.0)" font-family="Ubuntu" font-size="16">display reconstructed slices and browse dataset</text>
27
+ </annotations>
28
+ <thumbnail />
29
+ <node_properties>
30
+ <properties node_id="0" format="literal">{'_scanIDs': [], 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
31
+ <properties node_id="1" format="literal">{'_ewoks_default_inputs': {'data': None, 'dark_ref_params': None}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
32
+ <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>
33
+ <properties node_id="3" format="literal">{'_ewoks_default_inputs': {'data': None, 'nabu_params': None}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
34
+ <properties node_id="4" format="literal">{'_viewer_config': {}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
35
+ </node_properties>
36
+ <session_state>
37
+ <window_groups />
38
+ </session_state>
39
+ </scheme>
@@ -0,0 +1,49 @@
1
+ <?xml version='1.0' encoding='utf-8'?>
2
+ <scheme version="2.0" title="simple volume reconstruction (local)" 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="(978.0, 424.0)" />
11
+ </nodes>
12
+ <links>
13
+ <link id="0" source_node_id="0" sink_node_id="1" source_channel="data" sink_channel="data" enabled="true" />
14
+ <link id="1" source_node_id="1" sink_node_id="2" source_channel="data" sink_channel="data" enabled="true" />
15
+ <link id="2" source_node_id="2" sink_node_id="3" source_channel="data" sink_channel="data" enabled="true" />
16
+ <link id="3" source_node_id="3" sink_node_id="4" source_channel="data" sink_channel="data" enabled="true" />
17
+ <link id="4" source_node_id="3" sink_node_id="5" source_channel="data" sink_channel="data" enabled="true" />
18
+ <link id="5" source_node_id="5" sink_node_id="6" source_channel="data" sink_channel="data" enabled="true" />
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="(573.0, 405.0)" end="(625.0, 330.0)" fill="#C1272D" />
25
+ <arrow id="4" start="(905.0, 165.99999999999997)" end="(843.0, 215.99999999999997)" 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="(522.0, 423.0, 150.0, 26.0)" font-family="Ubuntu" font-size="16">define one or several slice to be reconstructed</text>
30
+ <text id="9" type="text/plain" rect="(919.0, 121.0, 150.0, 85.0)" font-family="Ubuntu" font-size="16">display reconstructed slices and browse dataset</text>
31
+ <arrow id="10" start="(716.9999999999999, 512.0)" end="(762.9999999999999, 455.0)" fill="#C1272D" />
32
+ <arrow id="11" start="(1042.0, 342.0)" end="(1005.0, 380.0)" fill="#C1272D" />
33
+ <text id="12" type="text/plain" rect="(1066.0, 309.0, 150.0, 67.0)" font-family="Ubuntu" font-size="16">browse reconstructed volume</text>
34
+ <text id="13" type="text/plain" rect="(690.0, 523.0, 150.0, 26.0)" font-family="Ubuntu" font-size="16">reconstruct volume</text>
35
+ </annotations>
36
+ <thumbnail />
37
+ <node_properties>
38
+ <properties node_id="0" format="literal">{'_scanIDs': [], 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
39
+ <properties node_id="1" format="literal">{'_ewoks_default_inputs': {'data': None, 'dark_ref_params': None}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
40
+ <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>
41
+ <properties node_id="3" format="literal">{'_ewoks_default_inputs': {'data': None, 'nabu_params': None}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
42
+ <properties node_id="4" format="literal">{'_viewer_config': {}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
43
+ <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>
44
+ <properties node_id="6" format="literal">{'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
45
+ </node_properties>
46
+ <session_state>
47
+ <window_groups />
48
+ </session_state>
49
+ </scheme>
@@ -0,0 +1,59 @@
1
+ <?xml version='1.0' encoding='utf-8'?>
2
+ <scheme version="2.0" title="simple volume 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="(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="(1136.75, 545.25)" />
11
+ <node id="7" name="slurm cluster" qualified_name="orangecontrib.tomwer.widgets.cluster.SlurmClusterOW.SlurmClusterOW" project_name="tomwer" version="" title="slurm cluster" position="(648.0, 486.5)" />
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
+ </nodes>
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" />
23
+ </links>
24
+ <annotations>
25
+ <arrow id="0" start="(267.0, 56.0)" end="(194.0, 105.0)" fill="#C1272D" />
26
+ <arrow id="1" start="(248.0, 298.0)" end="(292.0, 239.0)" fill="#C1272D" />
27
+ <arrow id="2" start="(576.0, 108.0)" end="(521.0, 168.0)" fill="#C1272D" />
28
+ <arrow id="3" start="(573.0, 405.0)" end="(625.0, 330.0)" fill="#C1272D" />
29
+ <arrow id="4" start="(905.0, 165.99999999999997)" end="(843.0, 215.99999999999997)" fill="#C1272D" />
30
+ <text id="5" type="text/plain" rect="(276.25, 17.75, 150.0, 31.0)" font-family="Ubuntu" font-size="16">provide dataset</text>
31
+ <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>
32
+ <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>
33
+ <text id="8" type="text/plain" rect="(460.75, 416.75, 150.0, 67.0)" font-family="Ubuntu" font-size="16">define one or several slice to be reconstructed</text>
34
+ <text id="9" type="text/plain" rect="(919.0, 121.0, 150.0, 85.0)" font-family="Ubuntu" font-size="16">display reconstructed slices and browse dataset</text>
35
+ <arrow id="10" start="(937.0, 320.75)" end="(845.5, 355.0)" fill="#C1272D" />
36
+ <arrow id="11" start="(1220.75, 472.0)" end="(1183.75, 510.0)" fill="#C1272D" />
37
+ <text id="12" type="text/plain" rect="(1244.75, 439.0, 150.0, 67.0)" font-family="Ubuntu" font-size="16">browse reconstructed volume</text>
38
+ <text id="13" type="text/plain" rect="(953.75, 289.25, 150.0, 49.0)" font-family="Ubuntu" font-size="16">reconstruct volume</text>
39
+ <arrow id="14" start="(578.75, 588.75)" end="(622.5, 523.75)" fill="#C1272D" />
40
+ <arrow id="15" start="(897.5, 612.5)" end="(948.75, 553.75)" fill="#C1272D" />
41
+ <text id="16" type="text/plain" rect="(842.5, 611.75, 150.0, 26.0)" font-family="Ubuntu" font-size="16">wait for the slurm job to be finished</text>
42
+ <text id="17" type="text/plain" rect="(531.25, 583.0, 150.0, 26.0)" font-family="Ubuntu" font-size="16">define slurm node to be used</text>
43
+ </annotations>
44
+ <thumbnail />
45
+ <node_properties>
46
+ <properties node_id="0" format="literal">{'_scanIDs': [], 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
47
+ <properties node_id="1" format="literal">{'_ewoks_default_inputs': {'data': None, 'dark_ref_params': None}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
48
+ <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>
49
+ <properties node_id="3" format="literal">{'_ewoks_default_inputs': {'data': None, 'nabu_params': None}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
50
+ <properties node_id="4" format="literal">{'_viewer_config': {}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
51
+ <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>
52
+ <properties node_id="6" format="literal">{'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
53
+ <properties node_id="7" format="literal">{'_ewoks_default_inputs': {}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
54
+ <properties node_id="8" format="literal">{'_ewoks_default_inputs': {}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
55
+ </node_properties>
56
+ <session_state>
57
+ <window_groups />
58
+ </session_state>
59
+ </scheme>
@@ -0,0 +1,44 @@
1
+ <?xml version='1.0' encoding='utf-8'?>
2
+ <scheme version="2.0" title="using saaxis to find COR" 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="semi-automated center of rotation" qualified_name="orangecontrib.tomwer.widgets.reconstruction.SAAxisOW.SAAxisOW" project_name="tomwer" version="" title="semi-automated center of rotation" position="(605.0, 288.0)" />
8
+ <node id="4" name="nabu slice reconstruction" qualified_name="orangecontrib.tomwer.widgets.reconstruction.NabuOW.NabuOW" project_name="tomwer" version="" title="nabu slice reconstruction" position="(772.0, 340.0)" />
9
+ <node id="5" name="data viewer" qualified_name="orangecontrib.tomwer.widgets.visualization.DataViewerOW.DataViewerOW" project_name="tomwer" version="" title="data viewer" position="(931.0, 377.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" />
13
+ <link id="1" source_node_id="1" sink_node_id="2" source_channel="data" sink_channel="data" enabled="true" />
14
+ <link id="2" source_node_id="2" sink_node_id="3" source_channel="data" sink_channel="data" enabled="true" />
15
+ <link id="3" source_node_id="3" sink_node_id="4" source_channel="data" sink_channel="data" enabled="true" />
16
+ <link id="4" source_node_id="4" sink_node_id="5" source_channel="data" sink_channel="data" enabled="true" />
17
+ </links>
18
+ <annotations>
19
+ <text id="0" type="text/plain" rect="(223.0, 32.0, 150.0, 26.0)" font-family="Ubuntu" font-size="16">provide dataset</text>
20
+ <arrow id="1" start="(210.0, 73.0)" end="(159.0, 116.0)" fill="#C1272D" />
21
+ <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>
22
+ <arrow id="3" start="(232.0, 299.0)" end="(290.0, 249.0)" fill="#C1272D" />
23
+ <arrow id="4" start="(550.0, 149.0)" end="(484.0, 201.0)" fill="#C1272D" />
24
+ <text id="5" type="text/plain" rect="(577.0, 114.0, 150.0, 26.0)" font-family="Ubuntu" font-size="16">compute center of rotation</text>
25
+ <arrow id="6" start="(532.0, 427.0)" end="(579.0, 356.0)" fill="#C1272D" />
26
+ <text id="7" type="text/plain" rect="(465.0, 427.0, 150.0, 31.0)" font-family="Ubuntu" font-size="16">refine COR</text>
27
+ <arrow id="8" start="(867.0, 239.0)" end="(808.0, 292.0)" fill="#C1272D" />
28
+ <text id="9" type="text/plain" rect="(896.0, 198.0, 150.0, 26.0)" font-family="Ubuntu" font-size="16">reconstruct one or several slices</text>
29
+ <arrow id="10" start="(852.0, 501.0)" end="(895.0, 444.0)" fill="#C1272D" />
30
+ <text id="11" type="text/plain" rect="(822.2222222222223, 503.55555555555554, 150.0, 26.0)" font-family="Ubuntu" font-size="16">browse reconstructed slices and browse dataset</text>
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="literal">{'_ewoks_default_inputs': {'data': None, 'dark_ref_params': None}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
36
+ <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>
37
+ <properties node_id="3" format="literal">{'_ewoks_default_inputs': {'data': None, 'sa_axis_params': None}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
38
+ <properties node_id="4" format="literal">{'_ewoks_default_inputs': {'data': None, 'nabu_params': None}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
39
+ <properties node_id="5" format="literal">{'_viewer_config': {}, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
40
+ </node_properties>
41
+ <session_state>
42
+ <window_groups />
43
+ </session_state>
44
+ </scheme>
@@ -73,7 +73,7 @@ class FutureSupervisorOW(OWBaseWidget, openclass=True):
73
73
  resizing_enabled = True
74
74
  compress_signal = False
75
75
 
76
- _static_input = Setting(dict())
76
+ _ewoks_default_inputs = Setting(dict())
77
77
 
78
78
  class Inputs:
79
79
  future_in = Input(
@@ -57,7 +57,7 @@ class SlurmClusterOW(OWBaseWidget, openclass=True):
57
57
  resizing_enabled = True
58
58
  compress_signal = False
59
59
 
60
- _static_input = Setting(dict())
60
+ _ewoks_default_inputs = Setting(dict())
61
61
 
62
62
  ewokstaskclass = tomwer.core.process.cluster.supervisor._SupervisorPlaceHolder
63
63
 
@@ -70,8 +70,8 @@ class SlurmClusterOW(OWBaseWidget, openclass=True):
70
70
  self._widget = SlurmSettingsWidget(parent=self)
71
71
  layout.addWidget(self._widget)
72
72
 
73
- if self._static_input != {}:
74
- self._widget.setConfiguration(self._static_input)
73
+ if self._ewoks_default_inputs != {}:
74
+ self._widget.setConfiguration(self._ewoks_default_inputs)
75
75
 
76
76
  # trigger the signal to avoid any user request
77
77
  self.Outputs.data_out.send(self.getConfiguration())
@@ -79,10 +79,20 @@ class SlurmClusterOW(OWBaseWidget, openclass=True):
79
79
  # connect signal / slot
80
80
  self._widget.sigConfigChanged.connect(self._configurationChanged)
81
81
 
82
+ def __new__(cls, *args, **kwargs):
83
+ # ensure backward compatibility with 'static_input'
84
+ static_input = kwargs.get("stored_settings", {}).get("_static_input", None)
85
+ if static_input not in (None, {}):
86
+ _logger.warning(
87
+ "static_input has been deprecated. Will be replaced by _ewoks_default_inputs in the workflow file. Please save the workflow to apply modifications"
88
+ )
89
+ kwargs["stored_settings"]["_ewoks_default_inputs"] = static_input
90
+ return super().__new__(cls, *args, **kwargs)
91
+
82
92
  def _configurationChanged(self):
83
93
  slurmClusterconfiguration = self.getConfiguration()
84
94
  self.Outputs.data_out.send(slurmClusterconfiguration)
85
- self._static_input = slurmClusterconfiguration.to_dict()
95
+ self._ewoks_default_inputs = slurmClusterconfiguration.to_dict()
86
96
 
87
97
  def getConfiguration(self):
88
98
  return self._widget.getSlurmClusterConfiguration()
@@ -22,7 +22,7 @@
22
22
  #
23
23
  #############################################################################
24
24
 
25
- NAME = "cluster"
25
+ NAME = "compute cluster"
26
26
 
27
27
  ID = "orangecontrib.tomwer.widgets.cluster"
28
28
 
@@ -27,11 +27,10 @@ __authors__ = ["C. Nemoz", "H. Payno"]
27
27
  __license__ = "MIT"
28
28
  __date__ = "01/12/2016"
29
29
 
30
- from orangewidget import widget, gui
30
+ from orangewidget import gui
31
31
  from silx.gui import qt
32
32
  from tomwer.gui.control.datalist import GenericScanListDialog
33
33
  from tomwer.core.scan.hdf5scan import HDF5TomoScan
34
- from tomwer.web.client import OWClient
35
34
  from tomwer.core.scan.scanbase import TomwerScanBase
36
35
  import tomwer.core.process.control.scanlist
37
36
  from orangewidget.settings import Setting
@@ -41,7 +40,7 @@ import logging
41
40
  logger = logging.getLogger(__name__)
42
41
 
43
42
 
44
- class DataListOW(OWBaseWidget, OWClient, openclass=True):
43
+ class DataListOW(OWBaseWidget, openclass=True):
45
44
  name = "scan list"
46
45
  id = "orange.widgets.tomwer.scanlist"
47
46
  description = "List path to reconstructions/scans. Those path will be send to the next box once validated."
@@ -72,8 +71,7 @@ class DataListOW(OWBaseWidget, OWClient, openclass=True):
72
71
 
73
72
  :param parent: the parent widget
74
73
  """
75
- widget.OWBaseWidget.__init__(self, parent)
76
- OWClient.__init__(self)
74
+ super().__init__(parent)
77
75
  self.widget = GenericScanListDialog(parent=self)
78
76
  self.widget.sigUpdated.connect(self._updateSettings)
79
77
  self._loadSettings()
@@ -117,3 +115,12 @@ class DataListOW(OWBaseWidget, OWClient, openclass=True):
117
115
  self._scanIDs = []
118
116
  for scan in self.widget.datalist._myitems:
119
117
  self._scanIDs.append(scan)
118
+
119
+ def keyPressEvent(self, event):
120
+ """
121
+ To shortcut orange and make sure the `delete` key will be interpreted we need to overwrite this function
122
+ """
123
+ if event.key() == qt.Qt.Key_Delete:
124
+ self.widget._removeSelected()
125
+ else:
126
+ super().keyPressEvent(event)
@@ -143,19 +143,25 @@ class DataListenerOW(
143
143
  self._loadSettings()
144
144
 
145
145
  def _loadSettings(self):
146
- if "bliss_server_configuration" in self._static_input:
147
- bliss_configuration = self._static_input["bliss_server_configuration"]
146
+ if "bliss_server_configuration" in self._static_input: # pylint: disable=E1135
147
+ bliss_configuration = self._static_input[ # pylint: disable=E1136
148
+ "bliss_server_configuration"
149
+ ]
148
150
  else:
149
151
  bliss_configuration = self._blissConfiguration
150
152
  if bliss_configuration != {}:
151
153
  self._widget.setBlissServerConfiguation(bliss_configuration)
152
- if "nxtomomill_cfg_file" in self._static_input:
153
- nxtomo_cfg_file = self._static_input["nxtomomill_cfg_file"]
154
+ if "nxtomomill_cfg_file" in self._static_input: # pylint: disable=E1135
155
+ nxtomo_cfg_file = self._static_input[ # pylint: disable=E1136
156
+ "nxtomomill_cfg_file"
157
+ ]
154
158
  else:
155
159
  nxtomo_cfg_file = self._nxtomo_cfg_file
156
160
  self._widget.setCFGFilePath(nxtomo_cfg_file)
157
- if "output_dir" in self._static_input:
158
- self._widget.setOutputFolder(self._static_input["output_dir"])
161
+ if "output_dir" in self._static_input: # pylint: disable=E1135
162
+ self._widget.setOutputFolder(
163
+ self._static_input["output_dir"] # pylint: disable=E1136
164
+ )
159
165
 
160
166
  def getNXTomomillConfiguration(self):
161
167
  cfg_file = self._widget.getCFGFilePath()
@@ -192,6 +198,7 @@ class DataListenerOW(
192
198
  bliss_scan.master_file,
193
199
  entry=bliss_scan.entry,
194
200
  outputdir=self._widget.getOutputFolder(),
201
+ scan=bliss_scan,
195
202
  )
196
203
  if success:
197
204
  self._processingStack.add(data=bliss_scan, configuration=configuration)
@@ -252,17 +259,19 @@ class DataListenerOW(
252
259
 
253
260
  def _jsonRPCConfigChanged(self):
254
261
  self._blissConfiguration = self._widget.getBlissServerConfiguration()
255
- self._static_input[
262
+ self._static_input[ # pylint: disable=E1137
256
263
  "bliss_server_configuration"
257
264
  ] = self._widget.getBlissServerConfiguration()
258
- self._static_input["output_dir"] = self._widget.getOutputFolder()
265
+ self._static_input[ # pylint: disable=E1137
266
+ "output_dir"
267
+ ] = self._widget.getOutputFolder()
259
268
  if self.is_active():
260
269
  self.activate(False)
261
270
  self.activate(True)
262
271
 
263
272
  def _nxtomoFileChanged(self, cfg_file):
264
273
  self._nxtomo_cfg_file = cfg_file
265
- self._static_input["nxtomomill_cfg_file"] = cfg_file
274
+ self._static_input["nxtomomill_cfg_file"] = cfg_file # pylint: disable=E1137
266
275
 
267
276
  def setMock(self, mock, acquisitions):
268
277
  self._mock = mock
@@ -30,18 +30,17 @@ __date__ = "25/05/2018"
30
30
  from silx.gui import qt
31
31
  from orangewidget import gui
32
32
  from orangewidget.widget import Output, Input, OWBaseWidget
33
- from tomwer.web.client import OWClient
34
33
  from tomwer.core.scan.hdf5scan import HDF5TomoScan
35
34
  from tomwer.gui.control.scanselectorwidget import ScanSelectorWidget
36
35
  from tomwer.core.scan.scanbase import TomwerScanBase
37
36
  from orangewidget.settings import Setting
38
- import tomwer.core.process.control.scanvalidator
37
+ import tomwer.core.process.control.scanselector
39
38
  import logging
40
39
 
41
40
  logger = logging.getLogger(__name__)
42
41
 
43
42
 
44
- class DataSelectorOW(OWBaseWidget, OWClient, openclass=True):
43
+ class DataSelectorOW(OWBaseWidget, openclass=True):
45
44
  name = "scan selector"
46
45
  id = "orange.widgets.tomwer.scanselector"
47
46
  description = (
@@ -52,7 +51,7 @@ class DataSelectorOW(OWBaseWidget, OWClient, openclass=True):
52
51
  priority = 42
53
52
  keywords = ["tomography", "selection", "tomwer", "scan", "data"]
54
53
 
55
- ewokstaskclass = tomwer.core.process.control.scanvalidator._ScanValidatorPlaceHolder
54
+ ewokstaskclass = tomwer.core.process.control.scanselector._ScanSelectorPlaceHolder
56
55
 
57
56
  want_main_area = True
58
57
  want_control_area = False
@@ -69,8 +68,7 @@ class DataSelectorOW(OWBaseWidget, OWClient, openclass=True):
69
68
 
70
69
  def __init__(self, parent=None):
71
70
  """ """
72
- OWBaseWidget.__init__(self, parent)
73
- OWClient.__init__(self)
71
+ super().__init__(parent)
74
72
 
75
73
  self.widget = ScanSelectorWidget(parent=self)
76
74
  self._loadSettings()
@@ -124,3 +122,12 @@ class DataSelectorOW(OWBaseWidget, OWClient, openclass=True):
124
122
  self._scanIDs = []
125
123
  for scan in self.widget.dataList._myitems:
126
124
  self._scanIDs.append(scan)
125
+
126
+ def keyPressEvent(self, event):
127
+ """
128
+ To shortcut orange and make sure the `delete` key will be interpreted we need to overwrite this function
129
+ """
130
+ if event.key() == qt.Qt.Key_Delete:
131
+ self.widget.removeSelectedDatasets()
132
+ else:
133
+ super().keyPressEvent(event)
@@ -36,7 +36,6 @@ from silx.gui import qt
36
36
  import tomwer.core.process.control.scantransfer
37
37
  from tomwer.core.process.control.scantransfer import ScanTransfer
38
38
  from orangecontrib.tomwer.orange.settings import CallbackSettingsHandler
39
- from tomwer.web.client import OWClient
40
39
  from tomwer.gui.control.datatransfert import DataTransfertSelector
41
40
  from tomwer.core.scan.scanbase import TomwerScanBase
42
41
  from processview.core.manager import ProcessManager, DatasetState
@@ -47,7 +46,7 @@ import functools
47
46
  logger = logging.getLogger(__name__)
48
47
 
49
48
 
50
- class DataTransfertOW(SuperviseOW, OWClient):
49
+ class DataTransfertOW(SuperviseOW):
51
50
  """
52
51
  A simple widget managing the copy of an incoming folder to an other one
53
52
 
@@ -91,8 +90,7 @@ class DataTransfertOW(SuperviseOW, OWClient):
91
90
  data = Output(name="data", type=TomwerScanBase)
92
91
 
93
92
  def __init__(self, parent=None):
94
- SuperviseOW.__init__(self, parent)
95
- OWClient.__init__(self)
93
+ super().__init__(parent)
96
94
 
97
95
  self._destDir = None
98
96
  self._forceSync = False
@@ -115,7 +113,7 @@ class DataTransfertOW(SuperviseOW, OWClient):
115
113
  if self.dest_dir_settings != "":
116
114
  self._widget.setFolder(self.dest_dir_settings)
117
115
 
118
- def _requestFolder(self):
116
+ def _requestFolder(self): # pragma: no cover
119
117
  """Launch a QFileDialog to ask the user the output directory"""
120
118
  dialog = qt.QFileDialog(self)
121
119
  dialog.setWindowTitle("Destination folder")
@@ -129,6 +127,7 @@ class DataTransfertOW(SuperviseOW, OWClient):
129
127
  return dialog.selectedFiles()[0]
130
128
 
131
129
  def transfertDoneCallback(self, output_scan):
130
+ print("transfertDoneCallback, triggers")
132
131
  if output_scan is None:
133
132
  return
134
133
  self.Outputs.data.send(output_scan)
@@ -157,7 +157,7 @@ class DataValidatorOW(SuperviseOW):
157
157
  return self._widget.isValidationManual()
158
158
 
159
159
  def _changeReconsParamsEmited(self, scan):
160
- self.Outputs.recons_param_changed.send(scan)
160
+ self.Outputs.recons_params_changed.send(scan)
161
161
 
162
162
  def _scanReadyEmitted(self, scan):
163
163
  ProcessManager().notify_dataset_state(
@@ -167,9 +167,13 @@ class DataValidatorOW(SuperviseOW):
167
167
 
168
168
  def _updateSettings(self):
169
169
  viewer = self._widget._centralWidget
170
- self._viewer_config["mode"] = viewer.getDisplayMode()
171
- self._viewer_config["slice_opt"] = viewer.getSliceOption()
172
- self._viewer_config["radio_opt"] = viewer.getRadioOption()
170
+ self._viewer_config["mode"] = viewer.getDisplayMode() # pylint: disable=E1137
171
+ self._viewer_config[ # pylint: disable=E1137
172
+ "slice_opt"
173
+ ] = viewer.getSliceOption()
174
+ self._viewer_config[ # pylint: disable=E1137
175
+ "radio_opt"
176
+ ] = viewer.getRadioOption()
173
177
 
174
178
  def _setSettings(self, settings):
175
179
  viewer = self._widget._centralWidget