tomwer 1.1.1__py3-none-any.whl → 1.2.0a0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (353) hide show
  1. orangecontrib/tomwer/__init__.py +1 -0
  2. orangecontrib/tomwer/orange/managedprocess.py +6 -4
  3. orangecontrib/tomwer/state_summary.py +3 -2
  4. orangecontrib/tomwer/widgets/__init__.py +2 -2
  5. orangecontrib/tomwer/widgets/cluster/FutureSupervisorOW.py +9 -7
  6. orangecontrib/tomwer/widgets/cluster/SlurmClusterOW.py +6 -5
  7. orangecontrib/tomwer/widgets/control/AdvancementOW.py +2 -1
  8. orangecontrib/tomwer/widgets/control/DataDiscoveryOW.py +235 -0
  9. orangecontrib/tomwer/widgets/control/DataListOW.py +7 -5
  10. orangecontrib/tomwer/widgets/control/DataListenerOW.py +13 -14
  11. orangecontrib/tomwer/widgets/control/DataSelectorOW.py +8 -6
  12. orangecontrib/tomwer/widgets/control/DataTransfertOW.py +9 -9
  13. orangecontrib/tomwer/widgets/control/DataValidatorOW.py +7 -8
  14. orangecontrib/tomwer/widgets/control/DataWatcherOW.py +25 -17
  15. orangecontrib/tomwer/widgets/control/EDF2NXTomomillOW.py +8 -8
  16. orangecontrib/tomwer/widgets/control/FilterOW.py +9 -8
  17. orangecontrib/tomwer/widgets/control/NXTomomillMixIn.py +3 -4
  18. orangecontrib/tomwer/widgets/control/NXTomomillOW.py +13 -14
  19. orangecontrib/tomwer/widgets/control/NotifierOW.py +3 -4
  20. orangecontrib/tomwer/widgets/control/SingleTomoObjOW.py +7 -5
  21. orangecontrib/tomwer/widgets/control/TimerOW.py +6 -5
  22. orangecontrib/tomwer/widgets/control/TomoObjSerieOW.py +5 -3
  23. orangecontrib/tomwer/widgets/control/VolumeSelector.py +8 -6
  24. orangecontrib/tomwer/widgets/control/VolumeSymLinkOW.py +10 -9
  25. orangecontrib/tomwer/widgets/control/icons/datadiscover.png +0 -0
  26. orangecontrib/tomwer/widgets/control/icons/datadiscover.svg +137 -0
  27. orangecontrib/tomwer/widgets/control/icons/nxtomomill.png +0 -0
  28. orangecontrib/tomwer/widgets/control/icons/nxtomomill.svg +5 -8
  29. orangecontrib/tomwer/widgets/debugtools/DatasetGeneratorOW.py +13 -15
  30. orangecontrib/tomwer/widgets/debugtools/ObjectInspectorOW.py +3 -2
  31. orangecontrib/tomwer/widgets/edit/DarkFlatPatchOW.py +10 -7
  32. orangecontrib/tomwer/widgets/edit/ImageKeyEditorOW.py +8 -5
  33. orangecontrib/tomwer/widgets/edit/ImageKeyUpgraderOW.py +5 -2
  34. orangecontrib/tomwer/widgets/edit/NXtomoEditorOW.py +6 -3
  35. orangecontrib/tomwer/widgets/edit/test/test_dark_flat_patch.py +8 -6
  36. orangecontrib/tomwer/widgets/edit/test/test_image_key_editor.py +3 -1
  37. orangecontrib/tomwer/widgets/edit/test/test_image_key_upgrader.py +3 -1
  38. orangecontrib/tomwer/widgets/edit/test/test_nxtomo_editor.py +3 -1
  39. orangecontrib/tomwer/widgets/other/PythonScriptOW.py +11 -11
  40. orangecontrib/tomwer/widgets/reconstruction/AxisOW.py +22 -27
  41. orangecontrib/tomwer/widgets/reconstruction/CastNabuVolumeOW.py +13 -11
  42. orangecontrib/tomwer/widgets/reconstruction/DarkRefAndCopyOW.py +11 -9
  43. orangecontrib/tomwer/widgets/reconstruction/NabuOW.py +16 -14
  44. orangecontrib/tomwer/widgets/reconstruction/NabuVolumeOW.py +27 -32
  45. orangecontrib/tomwer/widgets/reconstruction/SAAxisOW.py +27 -34
  46. orangecontrib/tomwer/widgets/reconstruction/SADeltaBetaOW.py +23 -25
  47. orangecontrib/tomwer/widgets/reconstruction/SinoNormOW.py +16 -18
  48. orangecontrib/tomwer/widgets/reconstruction/TofuOW.py +9 -7
  49. orangecontrib/tomwer/widgets/reconstruction/icons/nabu_2d.png +0 -0
  50. orangecontrib/tomwer/widgets/reconstruction/icons/nabu_2d.svg +8 -11
  51. orangecontrib/tomwer/widgets/visualization/DataViewerOW.py +8 -8
  52. orangecontrib/tomwer/widgets/visualization/DiffViewerOW.py +6 -4
  53. orangecontrib/tomwer/widgets/visualization/LivesliceOW.py +4 -3
  54. orangecontrib/tomwer/widgets/visualization/NXtomoMetadataViewerOW.py +4 -3
  55. orangecontrib/tomwer/widgets/visualization/RadioStackOW.py +6 -4
  56. orangecontrib/tomwer/widgets/visualization/SampleMovedOW.py +8 -6
  57. orangecontrib/tomwer/widgets/visualization/SinogramViewerOW.py +6 -3
  58. orangecontrib/tomwer/widgets/visualization/SliceStackOW.py +7 -5
  59. orangecontrib/tomwer/widgets/visualization/VolumeViewerOW.py +5 -4
  60. tomwer/__init__.py +1 -1
  61. tomwer/__main__.py +2 -1
  62. tomwer/app/axis.py +18 -14
  63. tomwer/app/canvas.py +7 -5
  64. tomwer/app/canvas_launcher/config.py +8 -6
  65. tomwer/app/canvas_launcher/environ.py +1 -2
  66. tomwer/app/canvas_launcher/mainwindow.py +23 -22
  67. tomwer/app/canvas_launcher/splash.py +1 -0
  68. tomwer/app/canvas_launcher/widgetsscheme.py +3 -3
  69. tomwer/app/darkref.py +7 -6
  70. tomwer/app/darkrefpatch.py +8 -6
  71. tomwer/app/diffframe.py +6 -4
  72. tomwer/app/imagekeyeditor.py +10 -10
  73. tomwer/app/imagekeyupgrader.py +8 -6
  74. tomwer/app/intensitynormalization.py +8 -8
  75. tomwer/app/lamino.py +5 -3
  76. tomwer/app/nabuapp.py +8 -6
  77. tomwer/app/nxtomoeditor.py +6 -5
  78. tomwer/app/radiostack.py +8 -6
  79. tomwer/app/rsync.py +3 -3
  80. tomwer/app/saaxis.py +22 -23
  81. tomwer/app/sadeltabeta.py +21 -21
  82. tomwer/app/samplemoved.py +8 -6
  83. tomwer/app/scanviewer.py +7 -6
  84. tomwer/app/sinogramviewer.py +8 -7
  85. tomwer/app/slicestack.py +8 -6
  86. tomwer/app/stopdatalistener.py +2 -1
  87. tomwer/core/futureobject.py +15 -6
  88. tomwer/core/log/logger.py +4 -3
  89. tomwer/core/log/processlog.py +0 -1
  90. tomwer/core/process/conditions/filters.py +3 -3
  91. tomwer/core/process/control/datadiscovery.py +7 -0
  92. tomwer/core/process/control/datalistener/datalistener.py +22 -21
  93. tomwer/core/process/control/datalistener/rpcserver.py +18 -28
  94. tomwer/core/process/control/datawatcher/datawatcher.py +15 -12
  95. tomwer/core/process/control/datawatcher/datawatcherobserver.py +11 -8
  96. tomwer/core/process/control/datawatcher/datawatcherprocess.py +7 -5
  97. tomwer/core/process/control/datawatcher/edfdwprocess.py +5 -15
  98. tomwer/core/process/control/datawatcher/hdf5dwprocess.py +3 -1
  99. tomwer/core/process/control/datawatcher/status.py +2 -0
  100. tomwer/core/process/control/nxtomomill.py +7 -6
  101. tomwer/core/process/control/scanlist.py +2 -1
  102. tomwer/core/process/control/scanselector.py +1 -0
  103. tomwer/core/process/control/scantransfer.py +12 -12
  104. tomwer/core/process/control/scanvalidator.py +7 -6
  105. tomwer/core/process/control/test/test_volume_link.py +5 -4
  106. tomwer/core/process/control/timer.py +4 -4
  107. tomwer/core/process/control/volumeselector.py +1 -0
  108. tomwer/core/process/control/volumesymlink.py +8 -9
  109. tomwer/core/process/edit/darkflatpatch.py +9 -12
  110. tomwer/core/process/edit/imagekeyeditor.py +11 -13
  111. tomwer/core/process/reconstruction/axis/axis.py +36 -38
  112. tomwer/core/process/reconstruction/axis/mode.py +2 -1
  113. tomwer/core/process/reconstruction/axis/params.py +23 -28
  114. tomwer/core/process/reconstruction/darkref/darkrefs.py +23 -27
  115. tomwer/core/process/reconstruction/darkref/darkrefscopy.py +14 -18
  116. tomwer/core/process/reconstruction/darkref/params.py +3 -1
  117. tomwer/core/process/reconstruction/lamino/tofu.py +11 -15
  118. tomwer/core/process/reconstruction/nabu/castvolume.py +15 -18
  119. tomwer/core/process/reconstruction/nabu/nabucommon.py +19 -20
  120. tomwer/core/process/reconstruction/nabu/nabuscores.py +16 -14
  121. tomwer/core/process/reconstruction/nabu/nabuslices.py +27 -22
  122. tomwer/core/process/reconstruction/nabu/nabuvolume.py +20 -22
  123. tomwer/core/process/reconstruction/nabu/utils.py +17 -15
  124. tomwer/core/process/reconstruction/normalization/__init__.py +1 -3
  125. tomwer/core/process/reconstruction/normalization/normalization.py +16 -21
  126. tomwer/core/process/reconstruction/normalization/params.py +2 -2
  127. tomwer/core/process/reconstruction/saaxis/__init__.py +1 -1
  128. tomwer/core/process/reconstruction/saaxis/params.py +6 -7
  129. tomwer/core/process/reconstruction/saaxis/saaxis.py +44 -55
  130. tomwer/core/process/reconstruction/sadeltabeta/__init__.py +1 -1
  131. tomwer/core/process/reconstruction/sadeltabeta/params.py +9 -13
  132. tomwer/core/process/reconstruction/sadeltabeta/sadeltabeta.py +40 -46
  133. tomwer/core/process/reconstruction/scores/__init__.py +2 -2
  134. tomwer/core/process/reconstruction/scores/params.py +6 -9
  135. tomwer/core/process/reconstruction/scores/scores.py +10 -13
  136. tomwer/core/process/reconstruction/test/test_axis_params.py +4 -2
  137. tomwer/core/process/reconstruction/test/test_darkref.py +1 -2
  138. tomwer/core/process/reconstruction/test/test_darkref_copy.py +3 -1
  139. tomwer/core/process/reconstruction/test/test_paramsbase.py +1 -1
  140. tomwer/core/process/reconstruction/test/test_saaxis.py +11 -7
  141. tomwer/core/process/reconstruction/test/test_sadeltabeta.py +5 -4
  142. tomwer/core/process/reconstruction/test/test_utils.py +3 -2
  143. tomwer/core/process/script/python.py +6 -8
  144. tomwer/core/process/task.py +11 -12
  145. tomwer/core/process/test/test_axis.py +12 -9
  146. tomwer/core/process/test/test_conditions.py +8 -8
  147. tomwer/core/process/test/test_dark_and_flat.py +9 -8
  148. tomwer/core/process/test/test_data_listener.py +5 -3
  149. tomwer/core/process/test/test_data_transfer.py +14 -12
  150. tomwer/core/process/test/test_data_watcher.py +3 -1
  151. tomwer/core/process/test/test_lamino.py +3 -1
  152. tomwer/core/process/test/test_nabu.py +13 -12
  153. tomwer/core/process/test/test_normalization.py +7 -5
  154. tomwer/core/process/test/test_timer.py +2 -1
  155. tomwer/core/process/utils.py +9 -9
  156. tomwer/core/progress.py +3 -4
  157. tomwer/core/scan/blissscan.py +4 -2
  158. tomwer/core/scan/edfscan.py +26 -29
  159. tomwer/core/scan/futurescan.py +2 -1
  160. tomwer/core/scan/hdf5scan.py +21 -28
  161. tomwer/core/scan/scanbase.py +18 -18
  162. tomwer/core/scan/scanfactory.py +20 -21
  163. tomwer/core/scan/scantype.py +7 -0
  164. tomwer/core/scan/test/test_edf.py +2 -1
  165. tomwer/core/scan/test/test_future_scan.py +2 -1
  166. tomwer/core/scan/test/test_h5.py +5 -4
  167. tomwer/core/scan/test/test_process_registration.py +5 -3
  168. tomwer/core/scan/test/test_scan.py +11 -9
  169. tomwer/core/settings.py +1 -2
  170. tomwer/core/test/test_lamino.py +3 -2
  171. tomwer/core/test/test_scanutils.py +3 -2
  172. tomwer/core/test/test_utils.py +6 -4
  173. tomwer/core/utils/__init__.py +8 -6
  174. tomwer/core/utils/deprecation.py +2 -2
  175. tomwer/core/utils/image.py +4 -3
  176. tomwer/core/utils/locker.py +1 -1
  177. tomwer/core/utils/normalization.py +1 -0
  178. tomwer/core/utils/nxtomoutils.py +2 -1
  179. tomwer/core/utils/scanutils.py +9 -6
  180. tomwer/core/utils/slurm.py +2 -1
  181. tomwer/core/utils/time.py +2 -4
  182. tomwer/core/utils/volumeutils.py +2 -1
  183. tomwer/core/volume/__init__.py +1 -1
  184. tomwer/core/volume/edfvolume.py +4 -3
  185. tomwer/core/volume/hdf5volume.py +6 -8
  186. tomwer/core/volume/jp2kvolume.py +4 -3
  187. tomwer/core/volume/rawvolume.py +7 -7
  188. tomwer/core/volume/tiffvolume.py +8 -6
  189. tomwer/core/volume/volumebase.py +1 -0
  190. tomwer/core/volume/volumefactory.py +18 -18
  191. tomwer/gui/cluster/slurm.py +2 -0
  192. tomwer/gui/cluster/supervisor.py +4 -2
  193. tomwer/gui/cluster/test/test_cluster.py +5 -4
  194. tomwer/gui/cluster/test/test_supervisor.py +4 -2
  195. tomwer/gui/conditions/filter.py +7 -6
  196. tomwer/gui/control/actions.py +1 -0
  197. tomwer/gui/control/datadiscovery.py +168 -0
  198. tomwer/gui/control/datalist.py +29 -28
  199. tomwer/gui/control/datalistener.py +8 -4
  200. tomwer/gui/control/datareacheractions.py +2 -1
  201. tomwer/gui/control/datatransfert.py +3 -1
  202. tomwer/gui/control/datavalidator.py +11 -12
  203. tomwer/gui/control/datawatcher/configuration.py +12 -1
  204. tomwer/gui/control/datawatcher/controlwidget.py +116 -0
  205. tomwer/gui/control/datawatcher/datawatcher.py +63 -121
  206. tomwer/gui/control/datawatcher/datawatcherobserver.py +7 -9
  207. tomwer/gui/control/history.py +3 -1
  208. tomwer/gui/control/observations.py +7 -7
  209. tomwer/gui/control/scanselectorwidget.py +4 -2
  210. tomwer/gui/control/selectorwidgetbase.py +3 -1
  211. tomwer/gui/control/serie/seriecreator.py +11 -12
  212. tomwer/gui/control/singletomoobj.py +4 -4
  213. tomwer/gui/control/test/test_datadiscovery.py +27 -0
  214. tomwer/gui/control/test/test_datalist.py +7 -6
  215. tomwer/gui/control/test/test_datalistener.py +4 -4
  216. tomwer/gui/control/test/test_datavalidator.py +3 -1
  217. tomwer/gui/control/test/test_inputwidget.py +5 -4
  218. tomwer/gui/control/test/test_process_manager.py +3 -3
  219. tomwer/gui/control/test/test_scanselector.py +6 -4
  220. tomwer/gui/control/test/test_scanvalidator.py +6 -5
  221. tomwer/gui/control/test/test_single_tomo_obj.py +5 -3
  222. tomwer/gui/control/test/test_volume_dialog.py +7 -5
  223. tomwer/gui/control/test/test_volumeselector.py +8 -6
  224. tomwer/gui/control/volumeselectorwidget.py +2 -1
  225. tomwer/gui/debugtools/datasetgenerator.py +2 -1
  226. tomwer/gui/debugtools/objectinspector.py +6 -7
  227. tomwer/gui/edit/dkrfpatch.py +11 -10
  228. tomwer/gui/edit/imagekeyeditor.py +12 -12
  229. tomwer/gui/edit/nxtomoeditor.py +8 -7
  230. tomwer/gui/edit/test/test_dkrf_patch.py +10 -9
  231. tomwer/gui/edit/test/test_image_key_editor.py +8 -6
  232. tomwer/gui/edit/test/test_nx_editor.py +7 -5
  233. tomwer/gui/icons.py +3 -2
  234. tomwer/gui/illustrations.py +3 -2
  235. tomwer/gui/imagefromfile.py +3 -1
  236. tomwer/gui/qfolderdialog.py +14 -12
  237. tomwer/gui/reconstruction/axis/CompareImages.py +9 -8
  238. tomwer/gui/reconstruction/axis/__init__.py +1 -1
  239. tomwer/gui/reconstruction/axis/axis.py +9 -7
  240. tomwer/gui/reconstruction/axis/radioaxis.py +30 -32
  241. tomwer/gui/reconstruction/darkref/darkrefcopywidget.py +6 -5
  242. tomwer/gui/reconstruction/darkref/darkrefwidget.py +4 -2
  243. tomwer/gui/reconstruction/lamino/tofu/misc.py +3 -1
  244. tomwer/gui/reconstruction/lamino/tofu/projections.py +16 -8
  245. tomwer/gui/reconstruction/lamino/tofu/tofu.py +6 -3
  246. tomwer/gui/reconstruction/lamino/tofu/tofuexpert.py +5 -2
  247. tomwer/gui/reconstruction/lamino/tofu/tofuoutput.py +8 -5
  248. tomwer/gui/reconstruction/nabu/action.py +1 -0
  249. tomwer/gui/reconstruction/nabu/castvolume.py +6 -4
  250. tomwer/gui/reconstruction/nabu/check.py +3 -2
  251. tomwer/gui/reconstruction/nabu/nabuconfig/base.py +5 -2
  252. tomwer/gui/reconstruction/nabu/nabuconfig/ctf.py +6 -3
  253. tomwer/gui/reconstruction/nabu/nabuconfig/nabuconfig.py +4 -3
  254. tomwer/gui/reconstruction/nabu/nabuconfig/output.py +7 -5
  255. tomwer/gui/reconstruction/nabu/nabuconfig/phase.py +8 -6
  256. tomwer/gui/reconstruction/nabu/nabuconfig/preprocessing.py +7 -7
  257. tomwer/gui/reconstruction/nabu/nabuconfig/reconstruction.py +40 -33
  258. tomwer/gui/reconstruction/nabu/nabuflow.py +7 -4
  259. tomwer/gui/reconstruction/nabu/slices.py +14 -10
  260. tomwer/gui/reconstruction/nabu/slurm.py +1 -0
  261. tomwer/gui/reconstruction/nabu/volume.py +5 -3
  262. tomwer/gui/reconstruction/normalization/intensity.py +14 -13
  263. tomwer/gui/reconstruction/saaxis/corrangeselector.py +36 -35
  264. tomwer/gui/reconstruction/saaxis/dimensionwidget.py +5 -4
  265. tomwer/gui/reconstruction/saaxis/saaxis.py +17 -17
  266. tomwer/gui/reconstruction/saaxis/sliceselector.py +5 -5
  267. tomwer/gui/reconstruction/sadeltabeta/saadeltabeta.py +33 -36
  268. tomwer/gui/reconstruction/scores/scoreplot.py +19 -18
  269. tomwer/gui/reconstruction/test/test_axis.py +14 -13
  270. tomwer/gui/reconstruction/test/test_lamino.py +3 -2
  271. tomwer/gui/reconstruction/test/test_nabu.py +8 -6
  272. tomwer/gui/reconstruction/test/test_saaxis.py +17 -15
  273. tomwer/gui/reconstruction/test/test_sadeltabeta.py +15 -13
  274. tomwer/gui/samplemoved/__init__.py +8 -7
  275. tomwer/gui/samplemoved/selectiontable.py +4 -2
  276. tomwer/gui/stackplot.py +14 -13
  277. tomwer/gui/stacks.py +11 -9
  278. tomwer/gui/test/test_axis_gui.py +5 -4
  279. tomwer/gui/test/test_qfolder_dialog.py +2 -1
  280. tomwer/gui/utils/__init__.py +5 -5
  281. tomwer/gui/utils/buttons.py +1 -0
  282. tomwer/gui/utils/completer.py +1 -0
  283. tomwer/gui/utils/flow.py +4 -2
  284. tomwer/gui/utils/illustrations.py +1 -0
  285. tomwer/gui/utils/inputwidget.py +11 -17
  286. tomwer/gui/utils/lineselector/lineselector.py +6 -8
  287. tomwer/gui/utils/qt_utils.py +1 -0
  288. tomwer/gui/utils/scandescription.py +2 -0
  289. tomwer/gui/utils/splashscreen.py +1 -1
  290. tomwer/gui/utils/unitsystem.py +3 -1
  291. tomwer/gui/utils/vignettes.py +8 -8
  292. tomwer/gui/utils/waiterthread.py +2 -1
  293. tomwer/gui/visualization/dataviewer.py +20 -28
  294. tomwer/gui/visualization/diffviewer/diffviewer.py +17 -20
  295. tomwer/gui/visualization/diffviewer/shiftwidget.py +3 -1
  296. tomwer/gui/visualization/nxtomometadata.py +1 -0
  297. tomwer/gui/visualization/reconstructionparameters.py +13 -12
  298. tomwer/gui/visualization/scanoverview.py +5 -3
  299. tomwer/gui/visualization/sinogramviewer.py +3 -2
  300. tomwer/gui/visualization/test/test_dataviewer.py +3 -1
  301. tomwer/gui/visualization/test/test_diffviewer.py +8 -6
  302. tomwer/gui/visualization/test/test_nx_tomo_metadata_viewer.py +5 -3
  303. tomwer/gui/visualization/test/test_reconstruction_parameters.py +5 -3
  304. tomwer/gui/visualization/test/test_sinogramviewer.py +10 -9
  305. tomwer/gui/visualization/test/test_stacks.py +8 -6
  306. tomwer/gui/visualization/test/test_volumeviewer.py +10 -8
  307. tomwer/gui/visualization/tomoobjoverview.py +7 -4
  308. tomwer/gui/visualization/volumeoverview.py +5 -3
  309. tomwer/gui/visualization/volumeviewer.py +15 -14
  310. tomwer/io/utils/__init__.py +3 -3
  311. tomwer/io/utils/h5pyutils.py +2 -1
  312. tomwer/io/utils/utils.py +17 -21
  313. tomwer/resources/__init__.py +1 -1
  314. tomwer/synctools/axis.py +3 -1
  315. tomwer/synctools/darkref.py +3 -2
  316. tomwer/synctools/datalistener.py +10 -6
  317. tomwer/synctools/datatransfert.py +2 -3
  318. tomwer/synctools/imageloaderthread.py +5 -3
  319. tomwer/synctools/rsyncmanager.py +3 -2
  320. tomwer/synctools/saaxis.py +3 -1
  321. tomwer/synctools/sadeltabeta.py +3 -1
  322. tomwer/synctools/stacks/control/datalistener.py +9 -12
  323. tomwer/synctools/stacks/edit/darkflatpatch.py +13 -12
  324. tomwer/synctools/stacks/edit/imagekeyeditor.py +12 -11
  325. tomwer/synctools/stacks/processingstack.py +3 -2
  326. tomwer/synctools/stacks/reconstruction/axis.py +12 -12
  327. tomwer/synctools/stacks/reconstruction/castvolume.py +8 -5
  328. tomwer/synctools/stacks/reconstruction/dkrefcopy.py +10 -9
  329. tomwer/synctools/stacks/reconstruction/lamino.py +9 -7
  330. tomwer/synctools/stacks/reconstruction/nabu.py +18 -17
  331. tomwer/synctools/stacks/reconstruction/normalization.py +12 -16
  332. tomwer/synctools/stacks/reconstruction/saaxis.py +13 -11
  333. tomwer/synctools/stacks/reconstruction/sadeltabeta.py +16 -14
  334. tomwer/synctools/test/test_darkRefs.py +4 -3
  335. tomwer/synctools/test/test_foldertransfer.py +14 -12
  336. tomwer/synctools/test/test_scanstages.py +8 -7
  337. tomwer/synctools/utils/scanstages.py +7 -5
  338. tomwer/tests/conftest.py +4 -4
  339. tomwer/tests/test_scripts.py +3 -2
  340. tomwer/tests/utils/__init__.py +5 -4
  341. tomwer/tests/utils/utilstest.py +5 -6
  342. tomwer/third_party/nabu/preproc/phase.py +7 -5
  343. tomwer/third_party/nabu/utils.py +3 -2
  344. tomwer/utils.py +12 -12
  345. tomwer/version.py +4 -4
  346. {tomwer-1.1.1.dist-info → tomwer-1.2.0a0.dist-info}/METADATA +2 -2
  347. {tomwer-1.1.1.dist-info → tomwer-1.2.0a0.dist-info}/RECORD +353 -345
  348. /tomwer-1.1.1-py3.8-nspkg.pth → /tomwer-1.2.0a0-py3.8-nspkg.pth +0 -0
  349. {tomwer-1.1.1.dist-info → tomwer-1.2.0a0.dist-info}/LICENSE +0 -0
  350. {tomwer-1.1.1.dist-info → tomwer-1.2.0a0.dist-info}/WHEEL +0 -0
  351. {tomwer-1.1.1.dist-info → tomwer-1.2.0a0.dist-info}/entry_points.txt +0 -0
  352. {tomwer-1.1.1.dist-info → tomwer-1.2.0a0.dist-info}/namespace_packages.txt +0 -0
  353. {tomwer-1.1.1.dist-info → tomwer-1.2.0a0.dist-info}/top_level.txt +0 -0
@@ -1,9 +1,11 @@
1
1
  import gc
2
+
2
3
  import pytest
3
4
  from silx.gui import qt
4
- from tomwer.tests.utils import skip_gui_test
5
5
  from silx.gui.utils.testutils import TestCaseQt
6
+
6
7
  from orangecontrib.tomwer.widgets.edit.NXtomoEditorOW import NXtomoEditorOW
8
+ from tomwer.tests.utils import skip_gui_test
7
9
 
8
10
 
9
11
  @pytest.mark.skipif(skip_gui_test(), reason="skip gui test")
@@ -2,24 +2,26 @@
2
2
  the icon change (to difference them) and here the input is not a Table
3
3
  but a TomwerScanBase (use silx.gui.qt instead of AnyQt too)"""
4
4
 
5
- import sys
6
- import os
7
5
  import code
8
- import keyword
9
6
  import itertools
7
+ import keyword
8
+ import os
9
+ import sys
10
10
  import unicodedata
11
11
  from unittest.mock import patch
12
- from silx.gui import qt
13
- from orangewidget import widget, gui
14
- from orangewidget.utils import itemmodels
12
+
13
+ from orangewidget import gui, widget
15
14
  from orangewidget.settings import Setting, SettingsHandler
16
- from orangewidget.widget import OWBaseWidget, Input, Output
15
+ from orangewidget.utils import itemmodels
16
+ from orangewidget.widget import Input, Output, OWBaseWidget
17
+ from silx.gui import qt
18
+ from tomoscan.serie import Serie
19
+
17
20
  import tomwer.core.process.script.python
18
21
  from tomwer.core.cluster.cluster import SlurmClusterConfiguration
19
22
  from tomwer.core.futureobject import FutureTomwerObject
20
23
  from tomwer.core.scan.scanbase import TomwerScanBase
21
24
  from tomwer.core.volume.volumebase import TomwerVolumeBase
22
- from tomoscan.serie import Serie
23
25
 
24
26
  __all__ = ["OWPythonScript"]
25
27
 
@@ -778,9 +780,7 @@ class OWPythonScript(widget.OWBaseWidget, openclass=True):
778
780
  if not isinstance(out_var, signal_type) and out_var is not None:
779
781
  self.Error.add_message(
780
782
  signal,
781
- "'{}' has to be an instance of '{}'.".format(
782
- signal, signal_type.__name__
783
- ),
783
+ f"'{signal}' has to be an instance of '{signal_type.__name__}'",
784
784
  )
785
785
  getattr(self.Error, signal)()
786
786
  out_var = None
@@ -27,31 +27,31 @@ __authors__ = ["H. Payno"]
27
27
  __license__ = "MIT"
28
28
  __date__ = "04/03/2019"
29
29
 
30
- import tomwer.core.process.reconstruction.axis
31
- from ..utils import WidgetLongProcessing
30
+ import copy
31
+ import functools
32
+ import logging
33
+
32
34
  from orangewidget import gui
33
- from orangecontrib.tomwer.orange.managedprocess import SuperviseOW
34
35
  from orangewidget.settings import Setting
35
- from orangecontrib.tomwer.orange.settings import CallbackSettingsHandler
36
36
  from orangewidget.widget import Input, Output
37
- from processview.gui.processmanager import ProcessManager
38
- from processview.core.manager import DatasetState
39
37
  from processview.core import helpers as pv_helpers
40
- from tomwer.core.process.reconstruction.axis.mode import AxisMode
41
- from tomwer.synctools.stacks.reconstruction.axis import AxisProcessStack
38
+ from processview.core.manager import DatasetState
39
+ from processview.gui.processmanager import ProcessManager
40
+ from silx.gui import qt
41
+
42
+ import tomwer.core.process.reconstruction.axis
43
+ from orangecontrib.tomwer.orange.managedprocess import SuperviseOW
44
+ from orangecontrib.tomwer.orange.settings import CallbackSettingsHandler
45
+ from tomwer.core import settings, utils
42
46
  from tomwer.core.process.reconstruction.axis import AxisProcess
43
- from tomwer.synctools.axis import QAxisRP
44
- from tomwer.gui.reconstruction.axis import AxisWindow
45
- from tomwer.core.scan.scanbase import TomwerScanBase
47
+ from tomwer.core.process.reconstruction.axis.mode import AxisMode
46
48
  from tomwer.core.scan.hdf5scan import HDF5TomoScan
47
- from tomwer.core.scan.scanbase import _TomwerBaseDock
48
- from silx.gui import qt
49
- from tomwer.core import settings
50
- from tomwer.core import utils
51
- import functools
52
- import copy
49
+ from tomwer.core.scan.scanbase import TomwerScanBase, _TomwerBaseDock
50
+ from tomwer.gui.reconstruction.axis import AxisWindow
51
+ from tomwer.synctools.axis import QAxisRP
52
+ from tomwer.synctools.stacks.reconstruction.axis import AxisProcessStack
53
53
 
54
- import logging
54
+ from ..utils import WidgetLongProcessing
55
55
 
56
56
  logger = logging.getLogger(__name__)
57
57
 
@@ -116,8 +116,7 @@ class AxisOW(SuperviseOW, WidgetLongProcessing):
116
116
  if axis_params is not None:
117
117
  if not isinstance(axis_params, QAxisRP):
118
118
  raise TypeError(
119
- "axis_params should be an instance of "
120
- "QAxisRP. Not {}".format(type(axis_params))
119
+ f"axis_params should be an instance of QAxisRP. Not {type(axis_params)}"
121
120
  )
122
121
  self._axis_params = axis_params or QAxisRP()
123
122
 
@@ -128,7 +127,7 @@ class AxisOW(SuperviseOW, WidgetLongProcessing):
128
127
  try:
129
128
  self._axis_params.load_from_dict(axis_params_settings)
130
129
  except Exception as e:
131
- logger.error(f"fail to load reconstruction settings: {str(e)}")
130
+ logger.error(f"fail to load reconstruction settings: {e}")
132
131
 
133
132
  # gui settings
134
133
  gui_settings = self._ewoks_default_inputs.get("gui", {})
@@ -321,15 +320,11 @@ class AxisOW(SuperviseOW, WidgetLongProcessing):
321
320
  self.__scan._axis_params.set_relative_value(
322
321
  self._axis_params.relative_cor_value
323
322
  )
323
+ _cor_value = self.__scan.axis_params.relative_cor_value
324
324
  pv_helpers.notify_succeed(
325
325
  process=self,
326
326
  dataset=self.__scan,
327
- details="axis calculation defined for {}: {} (using {})"
328
- "".format(
329
- str(self.__scan.path),
330
- str(self.__scan.axis_params.relative_cor_value),
331
- "manual",
332
- ),
327
+ details=f"axis calculation defined for {self.__scan.path}: {_cor_value} (using manual)",
333
328
  )
334
329
  # validate the center of rotation
335
330
  pm = ProcessManager()
@@ -27,25 +27,27 @@ __authors__ = ["H. Payno"]
27
27
  __license__ = "MIT"
28
28
  __date__ = "15/12/2021"
29
29
 
30
+ import logging
30
31
  from typing import Optional
31
32
 
33
+ from orangewidget import gui
34
+ from orangewidget.settings import Setting
35
+ from orangewidget.widget import Input, Output
32
36
  from processview.core.manager.manager import DatasetState, ProcessManager
37
+ from silx.gui import qt
38
+
39
+ import tomwer.core.process.reconstruction.nabu.castvolume
40
+ from orangecontrib.tomwer.widgets.utils import WidgetLongProcessing
33
41
  from tomwer.core import settings
34
42
  from tomwer.core.cluster.cluster import SlurmClusterConfiguration
35
43
  from tomwer.core.futureobject import FutureTomwerObject
36
- from ...orange.managedprocess import SuperviseOW
37
- from orangecontrib.tomwer.widgets.utils import WidgetLongProcessing
38
- from orangewidget.settings import Setting
39
- from orangewidget import gui
40
- from orangewidget.widget import Input, Output
41
- from silx.gui import qt
42
44
  from tomwer.core.scan.scanbase import TomwerScanBase
43
- from tomwer.synctools.stacks.reconstruction.castvolume import CastVolumeProcessStack
44
- import tomwer.core.process.reconstruction.nabu.castvolume
45
- from tomwer.gui.reconstruction.nabu.castvolume import CastVolumeWidget
46
- from tomwer.core.volume.volumebase import TomwerVolumeBase
47
45
  from tomwer.core.utils import isLowOnMemory
48
- import logging
46
+ from tomwer.core.volume.volumebase import TomwerVolumeBase
47
+ from tomwer.gui.reconstruction.nabu.castvolume import CastVolumeWidget
48
+ from tomwer.synctools.stacks.reconstruction.castvolume import CastVolumeProcessStack
49
+
50
+ from ...orange.managedprocess import SuperviseOW
49
51
 
50
52
  _logger = logging.getLogger(__name__)
51
53
 
@@ -28,23 +28,25 @@ __license__ = "MIT"
28
28
  __date__ = "10/01/2018"
29
29
 
30
30
 
31
+ import copy
31
32
  import logging
32
- from ..utils import WidgetLongProcessing
33
- from silx.gui import qt
33
+
34
+ import tomoscan.esrf.scan.utils
34
35
  from orangewidget import gui
35
- from orangecontrib.tomwer.orange.managedprocess import SuperviseOW
36
36
  from orangewidget.settings import Setting
37
37
  from orangewidget.widget import Input, Output
38
+ from processview.core.manager import DatasetState, ProcessManager
39
+ from silx.gui import qt
40
+
41
+ import tomwer.core.process.reconstruction.darkref.darkrefscopy
42
+ from orangecontrib.tomwer.orange.managedprocess import SuperviseOW
38
43
  from tomwer.core.scan.scanbase import TomwerScanBase
39
44
  from tomwer.gui.reconstruction.darkref.darkrefcopywidget import DarkRefAndCopyWidget
40
45
  from tomwer.synctools.darkref import QDKRFRP
41
46
  from tomwer.synctools.stacks.reconstruction.dkrefcopy import DarkRefCopyProcessStack
42
- from processview.core.manager import DatasetState
43
- from processview.core.manager import ProcessManager
44
- import tomoscan.esrf.scan.utils
45
47
  from tomwer.utils import docstring
46
- import tomwer.core.process.reconstruction.darkref.darkrefscopy
47
- import copy
48
+
49
+ from ..utils import WidgetLongProcessing
48
50
 
49
51
  _logger = logging.getLogger(__name__)
50
52
 
@@ -245,7 +247,7 @@ class DarkRefAndCopyOW(SuperviseOW, WidgetLongProcessing):
245
247
  reduced_frames=scan.reduced_flats, scan=scan
246
248
  )
247
249
  )
248
- _logger.info("{} ended".format(str(scan)))
250
+ _logger.info(f"{scan} ended")
249
251
 
250
252
  def setReducedDarks(self, darks: dict):
251
253
  self.widget._refCopyWidget.save_darks_to_be_copied(darks)
@@ -28,25 +28,27 @@ __license__ = "MIT"
28
28
  __date__ = "14/02/2020"
29
29
 
30
30
 
31
+ import copy
31
32
  import logging
32
- from typing import Optional
33
- from tomwer.core.volume.volumefactory import VolumeFactory
34
- import tomwer.core.process.reconstruction.nabu.nabuslices
35
33
  from contextlib import AbstractContextManager
36
- from silx.gui import qt
37
- from tomwer.synctools.stacks.reconstruction.nabu import NabuSliceProcessStack
38
- from tomwer.core.process.reconstruction.nabu.nabuslices import NabuSlices
39
- from tomwer.gui.reconstruction.nabu.slices import NabuWindow
40
- from tomwer.core.scan.scanbase import TomwerScanBase
41
- from ..utils import WidgetLongProcessing
42
- from orangewidget.settings import Setting
34
+ from typing import Optional
35
+
43
36
  from orangewidget import gui
44
- from tomwer.core.scan.scanbase import _TomwerBaseDock
37
+ from orangewidget.settings import Setting
45
38
  from orangewidget.widget import Input, Output
46
- from ...orange.managedprocess import SuperviseOW
39
+ from silx.gui import qt
40
+
41
+ import tomwer.core.process.reconstruction.nabu.nabuslices
47
42
  from tomwer.core.cluster import SlurmClusterConfiguration
48
43
  from tomwer.core.futureobject import FutureTomwerObject
49
- import copy
44
+ from tomwer.core.process.reconstruction.nabu.nabuslices import NabuSlices
45
+ from tomwer.core.scan.scanbase import TomwerScanBase, _TomwerBaseDock
46
+ from tomwer.core.volume.volumefactory import VolumeFactory
47
+ from tomwer.gui.reconstruction.nabu.slices import NabuWindow
48
+ from tomwer.synctools.stacks.reconstruction.nabu import NabuSliceProcessStack
49
+
50
+ from ...orange.managedprocess import SuperviseOW
51
+ from ..utils import WidgetLongProcessing
50
52
 
51
53
  _logger = logging.getLogger(__name__)
52
54
 
@@ -190,7 +192,7 @@ class NabuOW(WidgetLongProcessing, SuperviseOW):
190
192
  scan_ = copy.copy(scan)
191
193
  scan_.clear_latest_reconstructions()
192
194
 
193
- _logger.info("add {} to the stack".format(str(scan)))
195
+ _logger.info(f"add {scan} to the stack")
194
196
  # update the reconstruction mode if possible
195
197
  self._nabuWidget.setScan(scan_)
196
198
  self._processingStack.add(scan_, self.getConfiguration())
@@ -28,32 +28,35 @@ __license__ = "MIT"
28
28
  __date__ = "14/02/2020"
29
29
 
30
30
 
31
+ import copy
32
+ import functools
31
33
  import logging
34
+ from collections.abc import Iterable
32
35
  from contextlib import AbstractContextManager
36
+
37
+ from orangewidget import gui
38
+ from orangewidget.settings import Setting
39
+ from orangewidget.widget import Input, Output
33
40
  from silx.gui import qt
34
- from tomwer.synctools.stacks.reconstruction.nabu import NabuVolumeProcessStack
35
- from tomwer.core.process.reconstruction.nabu.nabuvolume import NabuVolume
36
- from tomwer.gui.reconstruction.nabu.volume import NabuVolumeWindow
37
- from tomwer.core.scan.scanbase import TomwerScanBase
41
+ from tomoscan.identifier import VolumeIdentifier
42
+
43
+ import tomwer.core.process.reconstruction.nabu.nabuvolume
44
+ from orangecontrib.tomwer.widgets.utils import WidgetLongProcessing
45
+ from tomwer.core import settings
38
46
  from tomwer.core.cluster import SlurmClusterConfiguration
39
47
  from tomwer.core.futureobject import FutureTomwerObject
40
- from orangecontrib.tomwer.widgets.utils import WidgetLongProcessing
41
- from tomwer.core.volume.volumefactory import VolumeFactory
42
- from orangewidget.settings import Setting
43
- from orangewidget import gui
44
- from orangewidget.widget import Input, Output
45
- from ...orange.managedprocess import SuperviseOW
46
48
  from tomwer.core.process.reconstruction.nabu import utils as nabu_utils
49
+ from tomwer.core.process.reconstruction.nabu.nabuvolume import NabuVolume
50
+ from tomwer.core.scan.scanbase import TomwerScanBase
47
51
  from tomwer.core.utils.char import BETA_CHAR, DELTA_CHAR
48
- from collections.abc import Iterable
49
- from tomwer.utils import docstring
50
- from tomwer.core import settings
51
- import tomwer.core.process.reconstruction.nabu.nabuvolume
52
- from tomwer.core.volume.volumebase import TomwerVolumeBase
53
52
  from tomwer.core.utils.scanutils import format_output_location
54
- from tomoscan.identifier import VolumeIdentifier
55
- import functools
56
- import copy
53
+ from tomwer.core.volume.volumebase import TomwerVolumeBase
54
+ from tomwer.core.volume.volumefactory import VolumeFactory
55
+ from tomwer.gui.reconstruction.nabu.volume import NabuVolumeWindow
56
+ from tomwer.synctools.stacks.reconstruction.nabu import NabuVolumeProcessStack
57
+ from tomwer.utils import docstring
58
+
59
+ from ...orange.managedprocess import SuperviseOW
57
60
 
58
61
  _logger = logging.getLogger(__name__)
59
62
 
@@ -202,10 +205,8 @@ class NabuVolumeOW(WidgetLongProcessing, SuperviseOW):
202
205
  # insure we are able to reconstruct
203
206
  if scan.nabu_recons_params in ({}, None):
204
207
  _logger.error(
205
- "No reconstruction parameters found from nabu "
206
- "slices for {}. You should first run slice "
207
- "reconstruction prior to volume reconstruction"
208
- "".format(str(scan))
208
+ f"No reconstruction parameters found from nabu slices for {scan}. "
209
+ "You should first run slice reconstruction prior to volume reconstruction"
209
210
  )
210
211
  self.Outputs.data.send(scan)
211
212
  self.sigScanReady.emit(scan)
@@ -235,9 +236,7 @@ class NabuVolumeOW(WidgetLongProcessing, SuperviseOW):
235
236
  pass
236
237
  if len(pag_dbs) > 1:
237
238
  _logger.warning(
238
- "Several value found for {} / {}. Volume"
239
- "reconstruction take one at most."
240
- "".format(DELTA_CHAR, BETA_CHAR)
239
+ f"Several value found for {DELTA_CHAR} / {BETA_CHAR}. Volume reconstruction take one at most."
241
240
  )
242
241
  timeout = NabuVolumeOW.TIMEOUT if settings.isOnLbsram(scan) else None
243
242
  self._dialogDB = _DeltaBetaSelectorDialog(
@@ -372,13 +371,10 @@ class _DeltaBetaSelectorDialog(qt.QDialog):
372
371
  self.layout().addWidget(self._buttons)
373
372
  self._timeout = timeout
374
373
  if self._timeout is None:
375
- self.setWindowTitle(
376
- "Select one value for {} / {}".format(DELTA_CHAR, BETA_CHAR)
377
- )
374
+ self.setWindowTitle(f"Select one value for {DELTA_CHAR} / {BETA_CHAR}")
378
375
  else:
379
376
  self.setWindowTitle(
380
- "Select one value for {} / {}. (close automatically in {} "
381
- "sec.)".format(DELTA_CHAR, BETA_CHAR, self._timeout)
377
+ f"Select one value for {DELTA_CHAR} / {BETA_CHAR}. (close automatically in {self._timeout} sec.)"
382
378
  )
383
379
 
384
380
  # connect signal / slot
@@ -416,8 +412,7 @@ class _DeltaBetaSelectorDialog(qt.QDialog):
416
412
  self.reject()
417
413
  else:
418
414
  self.setWindowTitle(
419
- "Select one value for {} / {}. (close automatically in {} "
420
- "sec.)".format(DELTA_CHAR, BETA_CHAR, self._timeout)
415
+ f"Select one value for {DELTA_CHAR} / {BETA_CHAR}. (close automatically in {self._timeout} sec.)"
421
416
  )
422
417
  self._displayTimer.start(1000)
423
418
 
@@ -28,31 +28,32 @@ __license__ = "MIT"
28
28
  __date__ = "01/02/2021"
29
29
 
30
30
 
31
- from ..utils import WidgetLongProcessing
31
+ import functools
32
+ import logging
33
+ from typing import Union
34
+
32
35
  from orangewidget import gui
33
- from orangecontrib.tomwer.orange.managedprocess import SuperviseOW
34
36
  from orangewidget.settings import Setting
35
- from orangecontrib.tomwer.orange.settings import CallbackSettingsHandler
36
37
  from orangewidget.widget import Input, Output
37
- from tomwer.synctools.stacks.reconstruction.saaxis import SAAxisProcessStack
38
- from tomwer.synctools.saaxis import QSAAxisParams
39
- from tomwer.synctools.axis import QAxisRP
40
- from tomwer.core.process.reconstruction.axis import AxisProcess
41
- from tomwer.core.scan.scanbase import TomwerScanBase
38
+ from processview.core import helpers as pv_helpers
39
+ from processview.core.manager import DatasetState, ProcessManager
42
40
  from silx.gui import qt
43
- from tomwer.gui.reconstruction.saaxis.saaxis import SAAxisWindow as _SAAxisWindow
44
- from processview.core.manager import ProcessManager, DatasetState
45
- from tomwer.core import settings
46
- from tomwer.core import utils
47
- from tomwer.core.process.reconstruction.saaxis.saaxis import SAAxisProcess
48
- from tomwer.core.scan.scanbase import _TomwerBaseDock
41
+
49
42
  import tomwer.core.process.reconstruction.saaxis.saaxis
43
+ from orangecontrib.tomwer.orange.managedprocess import SuperviseOW
44
+ from orangecontrib.tomwer.orange.settings import CallbackSettingsHandler
45
+ from tomwer.core import settings, utils
50
46
  from tomwer.core.cluster import SlurmClusterConfiguration
51
47
  from tomwer.core.futureobject import FutureTomwerObject
52
- from processview.core import helpers as pv_helpers
53
- import functools
54
- import logging
55
- from typing import Union
48
+ from tomwer.core.process.reconstruction.axis import AxisProcess
49
+ from tomwer.core.process.reconstruction.saaxis.saaxis import SAAxisProcess
50
+ from tomwer.core.scan.scanbase import TomwerScanBase, _TomwerBaseDock
51
+ from tomwer.gui.reconstruction.saaxis.saaxis import SAAxisWindow as _SAAxisWindow
52
+ from tomwer.synctools.axis import QAxisRP
53
+ from tomwer.synctools.saaxis import QSAAxisParams
54
+ from tomwer.synctools.stacks.reconstruction.saaxis import SAAxisProcessStack
55
+
56
+ from ..utils import WidgetLongProcessing
56
57
 
57
58
  _logger = logging.getLogger(__name__)
58
59
 
@@ -100,7 +101,7 @@ class SAAxisWindow(_SAAxisWindow):
100
101
  else:
101
102
  axis_params_info = self.getQAxisRP().get_simple_str()
102
103
 
103
- text = "start automatic cor for {} with {}".format(scan, axis_params_info)
104
+ text = f"start automatic cor for {scan} with {axis_params_info}"
104
105
  _logger.inform(text)
105
106
  cor_estimation_process = AxisProcess(
106
107
  inputs={
@@ -113,10 +114,7 @@ class SAAxisWindow(_SAAxisWindow):
113
114
  try:
114
115
  cor_estimation_process.run()
115
116
  except Exception as e:
116
- text = (
117
- "Unable to run automatic cor calculation. Reason is "
118
- "{}.".format(e)
119
- )
117
+ text = f"Unable to run automatic cor calculation. Reason is {e}"
120
118
  _logger.error(text)
121
119
  msg = qt.QMessageBox(self)
122
120
  msg.setIcon(qt.QMessageBox.Critical)
@@ -125,9 +123,7 @@ class SAAxisWindow(_SAAxisWindow):
125
123
  return None
126
124
  else:
127
125
  cor = scan.axis_params.relative_cor_value
128
- text = "automatic cor computed for {}: {} ({})".format(
129
- scan, cor, axis_params_info
130
- )
126
+ text = f"automatic cor computed for {scan}: {cor} ({axis_params_info})"
131
127
  _logger.inform(text)
132
128
  self.setEstimatedCorPosition(value=cor)
133
129
  self.getAutomaticCorWindow().hide()
@@ -198,7 +194,7 @@ class SAAxisWindow(_SAAxisWindow):
198
194
  if details is None:
199
195
  details = ""
200
196
  if selected_cor_value is None:
201
- infos = "no selected cor value. {} skip SAAXIS".format(scan)
197
+ infos = f"no selected cor value. {scan} skip SAAXIS"
202
198
  infos = "\n".join((infos, details))
203
199
  _logger.warning(infos)
204
200
  scan.axis_params.set_relative_value(None)
@@ -213,11 +209,9 @@ class SAAxisWindow(_SAAxisWindow):
213
209
  scan.nabu_recons_params["reconstruction"][
214
210
  "rotation_axis_position"
215
211
  ] = scan.axis_params.absolute_cor_value
216
- infos = "cor selected for {}: relative: {}, absolute: {}".format(
217
- scan,
218
- scan.axis_params.relative_cor_value,
219
- scan.axis_params.absolute_cor_value,
220
- )
212
+ r_cor = scan.axis_params.relative_cor_value
213
+ a_cor = scan.axis_params.absolute_cor_value
214
+ infos = f"cor selected for {scan}: relative: {r_cor}, absolute: {a_cor}"
221
215
  infos = "\n".join((infos, details))
222
216
  pv_helpers.notify_succeed(
223
217
  process=self._processing_stack, dataset=scan, details=infos
@@ -404,8 +398,7 @@ class SAAxisOW(SuperviseOW, WidgetLongProcessing):
404
398
  ):
405
399
  self.notify_skip(
406
400
  scan=scan,
407
- details="saaxis has been skiped for {} because "
408
- "of low space in lbsram".format(scan),
401
+ details=f"saaxis has been skiped for {scan} because of low space in lbsram",
409
402
  )
410
403
  self.Outputs.data.send(scan)
411
404
  else:
@@ -28,30 +28,32 @@ __license__ = "MIT"
28
28
  __date__ = "04/05/2021"
29
29
 
30
30
 
31
- from ..utils import WidgetLongProcessing
31
+ import functools
32
+ import logging
33
+
32
34
  from orangewidget import gui
33
- from orangecontrib.tomwer.orange.managedprocess import SuperviseOW
34
35
  from orangewidget.settings import Setting
35
- from orangecontrib.tomwer.orange.settings import CallbackSettingsHandler
36
36
  from orangewidget.widget import Input, Output
37
- from tomwer.core.process.reconstruction.sadeltabeta import SADeltaBetaProcess
38
- from tomwer.synctools.stacks.reconstruction.sadeltabeta import SADeltaBetaProcessStack
39
- from tomwer.synctools.sadeltabeta import QSADeltaBetaParams
40
- from tomwer.synctools.axis import QAxisRP
37
+ from processview.core import helpers as pv_helpers
38
+ from processview.core.manager import DatasetState, ProcessManager
41
39
  from silx.gui import qt
42
- from tomwer.gui.reconstruction.sadeltabeta import (
43
- SADeltaBetaWindow as _SADeltaBetaWindow,
44
- )
45
- from tomwer.core.scan.scanbase import TomwerScanBase, _TomwerBaseDock
46
- from processview.core.manager import ProcessManager, DatasetState
40
+
47
41
  import tomwer.core.process.reconstruction.sadeltabeta.sadeltabeta
48
- from tomwer.core import settings
49
- from tomwer.core import utils
42
+ from orangecontrib.tomwer.orange.managedprocess import SuperviseOW
43
+ from orangecontrib.tomwer.orange.settings import CallbackSettingsHandler
44
+ from tomwer.core import settings, utils
50
45
  from tomwer.core.cluster import SlurmClusterConfiguration
51
46
  from tomwer.core.futureobject import FutureTomwerObject
52
- from processview.core import helpers as pv_helpers
53
- import functools
54
- import logging
47
+ from tomwer.core.process.reconstruction.sadeltabeta import SADeltaBetaProcess
48
+ from tomwer.core.scan.scanbase import TomwerScanBase, _TomwerBaseDock
49
+ from tomwer.gui.reconstruction.sadeltabeta import (
50
+ SADeltaBetaWindow as _SADeltaBetaWindow,
51
+ )
52
+ from tomwer.synctools.axis import QAxisRP
53
+ from tomwer.synctools.sadeltabeta import QSADeltaBetaParams
54
+ from tomwer.synctools.stacks.reconstruction.sadeltabeta import SADeltaBetaProcessStack
55
+
56
+ from ..utils import WidgetLongProcessing
55
57
 
56
58
  _logger = logging.getLogger(__name__)
57
59
 
@@ -129,9 +131,7 @@ class SADeltaBetaWindow(_SADeltaBetaWindow):
129
131
  self.getCurrentDeltaBetaValue() or scan.sa_delta_beta_params.autofocus
130
132
  )
131
133
  if selected_db_value is None:
132
- infos = "no selected delta / beta value. {} skip SADeltaBetaParams".format(
133
- scan
134
- )
134
+ infos = f"no selected delta / beta value. {scan} skip SADeltaBetaParams"
135
135
  _logger.warning(infos)
136
136
  scan.sa_delta_beta_params.set_db_selected_value(None)
137
137
  pv_helpers.notify_skip(
@@ -143,9 +143,8 @@ class SADeltaBetaWindow(_SADeltaBetaWindow):
143
143
  if "phase" not in scan.nabu_recons_params:
144
144
  scan.nabu_recons_params["phase"] = {}
145
145
  scan.nabu_recons_params["phase"]["delta_beta"] = (selected_db_value,)
146
- infos = "delta / beta selected for {}: {},".format(
147
- scan, scan.sa_delta_beta_params.value
148
- )
146
+ _db_value = scan.sa_delta_beta_params.value
147
+ infos = f"delta / beta selected for {scan}: {_db_value}"
149
148
  pv_helpers.notify_succeed(
150
149
  process=self._processing_stack, dataset=scan, details=infos
151
150
  )
@@ -330,8 +329,7 @@ class SADeltaBetaOW(SuperviseOW, WidgetLongProcessing):
330
329
  ):
331
330
  self.notify_skip(
332
331
  scan=scan,
333
- details="sa-delta-beta has been skiped for {} because "
334
- "of low space in lbsram".format(scan),
332
+ details=f"sa-delta-beta has been skiped for {scan} because of low space in lbsram",
335
333
  )
336
334
  self.Outputs.data.send(scan)
337
335
  else:
@@ -30,30 +30,29 @@ __license__ = "MIT"
30
30
  __date__ = "19/07/2021"
31
31
 
32
32
 
33
+ import functools
33
34
  import logging
34
- from silx.gui import qt
35
- from tomwer.core.scan.scanbase import TomwerScanBase
36
- from orangecontrib.tomwer.widgets.utils import WidgetLongProcessing
37
- from orangewidget.settings import Setting
35
+
38
36
  from orangewidget import gui
37
+ from orangewidget.settings import Setting
39
38
  from orangewidget.widget import Input, Output
40
- from ...orange.managedprocess import SuperviseOW
39
+ from processview.core.manager import DatasetState, ProcessManager
40
+ from silx.gui import qt
41
+ from tomoscan.normalization import Method as NormMethod
42
+
43
+ from orangecontrib.tomwer.widgets.utils import WidgetLongProcessing
44
+ from tomwer.core import settings, utils
45
+ from tomwer.core.process.reconstruction.normalization import SinoNormalizationTask
46
+ from tomwer.core.process.reconstruction.normalization.params import _ValueSource
47
+ from tomwer.core.scan.scanbase import TomwerScanBase
41
48
  from tomwer.gui.reconstruction.normalization.intensity import (
42
49
  SinoNormWindow as _SinoNormWindow,
43
50
  )
44
51
  from tomwer.synctools.stacks.reconstruction.normalization import (
45
52
  INormalizationProcessStack,
46
53
  )
47
- from processview.core.manager import ProcessManager
48
- from processview.core.manager import DatasetState
49
- from tomwer.core.process.reconstruction.normalization import (
50
- SinoNormalizationTask,
51
- )
52
- from tomwer.core import settings
53
- from tomwer.core import utils
54
- from tomoscan.normalization import Method as NormMethod
55
- from tomwer.core.process.reconstruction.normalization.params import _ValueSource
56
- import functools
54
+
55
+ from ...orange.managedprocess import SuperviseOW
57
56
 
58
57
  _logger = logging.getLogger(__name__)
59
58
 
@@ -193,8 +192,7 @@ class SinoNormOW(WidgetLongProcessing, SuperviseOW):
193
192
  def process(self, scan: TomwerScanBase):
194
193
  if not isinstance(scan, (TomwerScanBase, type(None))):
195
194
  raise TypeError(
196
- "scan should be None or an instance of "
197
- "TomwerScanBase. Not {}".format(type(scan))
195
+ f"scan should be None or an instance of TomwerScanBase. Not {(type(scan))}",
198
196
  )
199
197
  if scan is None:
200
198
  return
@@ -203,7 +201,7 @@ class SinoNormOW(WidgetLongProcessing, SuperviseOW):
203
201
  if settings.isOnLbsram(scan) and utils.isLowOnMemory(
204
202
  settings.get_lbsram_path()
205
203
  ):
206
- details = "skip {} because low memory on lbsram".format(str(scan))
204
+ details = f"skip {scan} because low memory on lbsram"
207
205
  self.notify_skip(scan=scan, details=details)
208
206
  self.Outputs.data_out.send(scan)
209
207
  else: