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
@@ -47,29 +47,31 @@ except (ImportError, OSError):
47
47
  has_nabu = True
48
48
  else:
49
49
  has_nabu = True
50
+ import logging
51
+ import os
50
52
  from typing import Iterable, Optional, Union
51
53
 
54
+ from nabu.pipeline.fullfield.nabu_config import (
55
+ nabu_config as nabu_fullfield_default_config,
56
+ )
52
57
  from processview.core.manager.manager import ProcessManager
58
+
59
+ from tomwer.core.futureobject import FutureTomwerObject
60
+ from tomwer.core.process.reconstruction.nabu.nabuslices import (
61
+ SingleSliceRunner,
62
+ _NabuBaseReconstructor,
63
+ generate_nabu_configfile,
64
+ )
53
65
  from tomwer.core.process.reconstruction.nabu.target import Target
54
66
  from tomwer.core.progress import Progress
55
67
  from tomwer.core.scan.edfscan import EDFTomoScan
56
- from tomwer.core.futureobject import FutureTomwerObject
57
68
  from tomwer.core.scan.scanbase import TomwerScanBase
58
69
  from tomwer.core.utils.slurm import is_slurm_available
59
70
  from tomwer.utils import docstring
71
+
60
72
  from ..nabu import settings as nabu_settings
61
- from tomwer.core.process.reconstruction.nabu.nabuslices import (
62
- SingleSliceRunner,
63
- generate_nabu_configfile,
64
- _NabuBaseReconstructor,
65
- )
66
- from nabu.pipeline.fullfield.nabu_config import (
67
- nabu_config as nabu_fullfield_default_config,
68
- )
69
- from .nabucommon import ResultSlurmRun, ResultsLocalRun, ResultsWithStd
70
73
  from . import utils
71
- import logging
72
- import os
74
+ from .nabucommon import ResultsLocalRun, ResultSlurmRun, ResultsWithStd
73
75
 
74
76
  _logger = logging.getLogger(__name__)
75
77
 
@@ -254,7 +256,7 @@ class _Reconstructor(_NabuBaseReconstructor):
254
256
  db=db,
255
257
  ctf=ctf,
256
258
  )
257
- _config["output"]["file_prefix"] = "cor_{}_{}".format(_file_name, cor)
259
+ _config["output"]["file_prefix"] = f"cor_{_file_name}_{cor}"
258
260
  if _config["output"]["location"] not in ("", None):
259
261
  # if user specify the location
260
262
  if not os.path.isdir(_config["output"]["location"]):
@@ -303,5 +305,5 @@ class _Reconstructor(_NabuBaseReconstructor):
303
305
  )
304
306
  if not isinstance(self.scan, EDFTomoScan):
305
307
  name = "_".join((self.scan.entry.lstrip("/"), name))
306
- conf_file = os.path.join(cfg_folder, "cor_{}_{}".format(cor, name))
308
+ conf_file = os.path.join(cfg_folder, f"cor_{cor}_{name}")
307
309
  return config, conf_file
@@ -28,15 +28,16 @@ __license__ = "MIT"
28
28
  __date__ = "26/10/2021"
29
29
 
30
30
 
31
- import functools
32
- import os
33
31
  import copy
32
+ import functools
34
33
  import logging
34
+ import os
35
+
35
36
  from processview.core.manager.manager import ProcessManager
36
37
 
37
38
  from tomwer.core.futureobject import FutureTomwerObject
38
- from tomwer.core.utils.slurm import is_slurm_available
39
39
  from tomwer.core.utils.scanutils import data_identifier_to_scan
40
+ from tomwer.core.utils.slurm import is_slurm_available
40
41
 
41
42
  try:
42
43
  from nabu.pipeline.fullfield.reconstruction import ( # noqa F401
@@ -58,36 +59,40 @@ else:
58
59
  has_nabu = True
59
60
  _err_import_nabu = None
60
61
 
61
- from silx.utils.enum import Enum as _Enum
62
- from tomwer.core.scan.scanbase import TomwerScanBase
63
- from tomwer.core.scan.hdf5scan import HDF5TomoScan
64
- from tomwer.core.scan.scanfactory import ScanFactory
65
- from tomwer.utils import docstring
66
- from typing import Iterable, Union
67
- from typing import Optional
68
- from nabu.pipeline.config import generate_nabu_configfile
62
+ from typing import Iterable, Optional, Union
63
+
64
+ from nabu import version as nabu_version
65
+ from nabu.pipeline.config import (
66
+ _extract_nabuconfig_keyvals,
67
+ generate_nabu_configfile,
68
+ get_default_nabu_config,
69
+ )
69
70
  from nabu.pipeline.fullfield.nabu_config import (
70
71
  nabu_config as nabu_fullfield_default_config,
71
72
  )
72
- from nabu.pipeline.config import _extract_nabuconfig_keyvals
73
- from nabu import version as nabu_version
73
+ from processview.core.superviseprocess import SuperviseProcess
74
74
  from silx.io.dictdump import h5todict
75
- from . import utils
76
- from . import settings as nabu_settings
75
+ from silx.io.utils import h5py_read_dataset
76
+ from silx.utils.enum import Enum as _Enum
77
77
  from tomoscan.io import HDF5File
78
+
79
+ from tomwer.core.process.task import Task
78
80
  from tomwer.core.scan.edfscan import EDFTomoScan
79
- from silx.io.utils import h5py_read_dataset
80
- from nabu.pipeline.config import get_default_nabu_config
81
+ from tomwer.core.scan.hdf5scan import HDF5TomoScan
82
+ from tomwer.core.scan.scanbase import TomwerScanBase
83
+ from tomwer.core.scan.scanfactory import ScanFactory
81
84
  from tomwer.io.utils.h5pyutils import EntryReader
82
- from tomwer.core.process.task import Task
83
- from .target import Target
85
+ from tomwer.utils import docstring
86
+
87
+ from . import settings as nabu_settings
88
+ from . import utils
84
89
  from .nabucommon import (
85
- _NabuBaseReconstructor,
86
- ResultsRun,
87
90
  ResultsLocalRun,
88
91
  ResultSlurmRun,
92
+ ResultsRun,
93
+ _NabuBaseReconstructor,
89
94
  )
90
- from processview.core.superviseprocess import SuperviseProcess
95
+ from .target import Target
91
96
 
92
97
  _logger = logging.getLogger(__name__)
93
98
  if not has_nabu:
@@ -28,36 +28,34 @@ __license__ = "MIT"
28
28
  __date__ = "26/10/2021"
29
29
 
30
30
 
31
+ import copy
32
+ import functools
31
33
  import logging
34
+ import os
32
35
  from typing import Iterable, Optional
36
+
37
+ from nabu import version as nabu_version
38
+ from nabu.pipeline.config import generate_nabu_configfile
39
+ from nabu.pipeline.fullfield.nabu_config import (
40
+ nabu_config as nabu_fullfield_default_config,
41
+ )
33
42
  from processview.core.manager.manager import ProcessManager
43
+ from silx.io.utils import h5py_read_dataset
44
+
34
45
  from tomwer.core.cluster.cluster import SlurmClusterConfiguration
35
46
  from tomwer.core.futureobject import FutureTomwerObject
36
- from tomwer.core.scan.scanbase import TomwerScanBase
47
+ from tomwer.core.process.task import Task
48
+ from tomwer.core.scan.edfscan import EDFTomoScan
37
49
  from tomwer.core.scan.hdf5scan import HDF5TomoScan
50
+ from tomwer.core.scan.scanbase import TomwerScanBase
38
51
  from tomwer.core.scan.scanfactory import ScanFactory
39
52
  from tomwer.core.utils.scanutils import data_identifier_to_scan
40
- from . import utils
41
- from . import settings
42
- from nabu.pipeline.config import generate_nabu_configfile
43
- from nabu.pipeline.fullfield.nabu_config import (
44
- nabu_config as nabu_fullfield_default_config,
45
- )
46
- from nabu import version as nabu_version
47
- from tomwer.core.scan.edfscan import EDFTomoScan
48
- import copy
49
- import os
50
- from tomwer.core.process.task import Task
51
53
  from tomwer.io.utils.h5pyutils import EntryReader
52
- from silx.io.utils import h5py_read_dataset
53
- from .target import Target
54
- import functools
55
54
  from tomwer.utils import docstring
56
- from .nabucommon import (
57
- _NabuBaseReconstructor,
58
- ResultsLocalRun,
59
- ResultSlurmRun,
60
- )
55
+
56
+ from . import settings, utils
57
+ from .nabucommon import ResultsLocalRun, ResultSlurmRun, _NabuBaseReconstructor
58
+ from .target import Target
61
59
 
62
60
  _logger = logging.getLogger(__name__)
63
61
 
@@ -260,7 +258,7 @@ class VolumeRunner(_NabuBaseReconstructor):
260
258
  if not isinstance(self.scan, EDFTomoScan):
261
259
  name = "_".join((self.scan.entry.lstrip("/"), name))
262
260
  conf_file = os.path.join(cfg_folder, name)
263
- _logger.info("{}: create {}".format(self.scan, conf_file))
261
+ _logger.info(f"{self.scan}: create {conf_file}")
264
262
 
265
263
  # add some tomwer metadata and save the configuration
266
264
  # note: for now the section is ignored by nabu but shouldn't stay that way
@@ -401,7 +399,7 @@ class NabuVolume(
401
399
  elif isinstance(scan, dict):
402
400
  scan = ScanFactory.create_scan_object_frm_dict(scan)
403
401
  else:
404
- raise ValueError("input type {} is not managed".format(scan))
402
+ raise ValueError(f"input type {scan} is not managed")
405
403
 
406
404
  if scan.nabu_recons_params is None:
407
405
  raise ValueError(
@@ -28,25 +28,27 @@ __license__ = "MIT"
28
28
  __date__ = "06/08/2020"
29
29
 
30
30
 
31
- from tomwer.core.scan.edfscan import EDFTomoScan
32
- from tomwer.core.scan.scanbase import TomwerScanBase
33
- from tomwer.core.scan.hdf5scan import HDF5TomoScan
34
- import tomwer.version
35
- from silx.utils.enum import Enum as _Enum
36
- from contextlib import AbstractContextManager
37
- import logging
38
31
  import datetime
39
- import typing
32
+ import logging
40
33
  import os
41
- from tomwer.core.volume.hdf5volume import HDF5Volume
42
- from tomwer.core.volume.edfvolume import EDFVolume
43
- from tomwer.core.volume.jp2kvolume import JP2KVolume
44
- from tomwer.core.volume.tiffvolume import TIFFVolume
45
- from tomwer.core.volume.rawvolume import RawVolume
34
+ import typing
35
+ from contextlib import AbstractContextManager
36
+
37
+ from nabu.pipeline.config import generate_nabu_configfile, parse_nabu_config_file
46
38
  from nabu.pipeline.fullfield.nabu_config import (
47
39
  nabu_config as nabu_fullfield_default_config,
48
40
  )
49
- from nabu.pipeline.config import generate_nabu_configfile, parse_nabu_config_file
41
+ from silx.utils.enum import Enum as _Enum
42
+
43
+ import tomwer.version
44
+ from tomwer.core.scan.edfscan import EDFTomoScan
45
+ from tomwer.core.scan.hdf5scan import HDF5TomoScan
46
+ from tomwer.core.scan.scanbase import TomwerScanBase
47
+ from tomwer.core.volume.edfvolume import EDFVolume
48
+ from tomwer.core.volume.hdf5volume import HDF5Volume
49
+ from tomwer.core.volume.jp2kvolume import JP2KVolume
50
+ from tomwer.core.volume.rawvolume import RawVolume
51
+ from tomwer.core.volume.tiffvolume import TIFFVolume
50
52
 
51
53
  _logger = logging.getLogger(__name__)
52
54
 
@@ -242,7 +244,7 @@ def get_recons_volume_identifier(
242
244
  # )
243
245
 
244
246
  else:
245
- raise ValueError("file format not managed: {}".format(file_format))
247
+ raise ValueError(f"file format not managed: {file_format}")
246
248
 
247
249
  return tuple([volume.get_identifier() for volume in volumes])
248
250
 
@@ -1,4 +1,2 @@
1
- from .normalization import ( # noqa F403
2
- SinoNormalizationTask,
3
- )
1
+ from .normalization import SinoNormalizationTask # noqa F403
4
2
  from .params import SinoNormalizationParams # noqa F403
@@ -34,24 +34,22 @@ __license__ = "MIT"
34
34
  __date__ = "25/06/2021"
35
35
 
36
36
 
37
- import numpy
38
- import logging
39
37
  import functools
38
+ import logging
39
+
40
+ import numpy
41
+ import tomoscan.esrf.scan.utils
42
+ from processview.core.dataset import DatasetIdentifier
43
+ from processview.core.superviseprocess import SuperviseProcess
40
44
  from silx.io.url import DataUrl
45
+ from tomoscan.esrf.scan.utils import get_data
46
+ from tomoscan.normalization import Method as NormMethod
47
+
41
48
  import tomwer.version
42
49
  from tomwer.core.process.task import Task
43
50
  from tomwer.core.utils.scanutils import data_identifier_to_scan
44
- from .params import (
45
- SinoNormalizationParams,
46
- _ValueCalculationFct,
47
- _ValueSource,
48
- )
49
- from tomoscan.normalization import Method as NormMethod
50
- import tomoscan.esrf.scan.utils
51
- from tomoscan.esrf.scan.utils import get_data
52
- from processview.core.dataset import DatasetIdentifier
53
- from processview.core.superviseprocess import SuperviseProcess
54
51
 
52
+ from .params import SinoNormalizationParams, _ValueCalculationFct, _ValueSource
55
53
 
56
54
  _logger = logging.getLogger(__name__)
57
55
 
@@ -143,7 +141,7 @@ class SinoNormalizationTask(
143
141
  "source": _ValueSource.MANUAL_SCALAR.value,
144
142
  }
145
143
  else:
146
- raise ValueError("method {} is not handled".format(params.method))
144
+ raise ValueError(f"method {params.method} is not handled")
147
145
  except Exception as e:
148
146
  _logger.error(e)
149
147
  final_norm_info = {"tomwer_processing_res_code": False}
@@ -274,7 +272,7 @@ class SinoNormalizationTask(
274
272
 
275
273
  def retrieve_data_proj_indexes(url_):
276
274
  urls = []
277
- for slice in range(
275
+ for data_slice in range(
278
276
  url_.data_slice().start,
279
277
  url_.data_slice().stop,
280
278
  url_.data_slice().step or 1,
@@ -284,7 +282,7 @@ class SinoNormalizationTask(
284
282
  file_path=url_.file_path(),
285
283
  data_path=url_.data_path(),
286
284
  scheme=url_.scheme(),
287
- data_slice=slice,
285
+ data_slice=data_slice,
288
286
  )
289
287
  )
290
288
 
@@ -298,8 +296,7 @@ class SinoNormalizationTask(
298
296
  res.append(url_idxs[my_url_path])
299
297
  else:
300
298
  _logger.warning(
301
- "unable to retrieve frame index from url {}. "
302
- "Take the slice index as frame index".format(my_url_path)
299
+ f"unable to retrieve frame index from url {my_url_path}. Take the slice index as frame index"
303
300
  )
304
301
  return res
305
302
 
@@ -323,9 +320,7 @@ class SinoNormalizationTask(
323
320
  ]
324
321
  current_idx += length
325
322
  else:
326
- raise ValueError(
327
- "Frame where expected and not a " "{}D object".format(data.ndim)
328
- )
323
+ raise ValueError(f"Frame where expected and not a {data.ndim}D object")
329
324
  return SinoNormalizationTask.compute_stats(roi_area)
330
325
 
331
326
  @staticmethod
@@ -339,7 +334,7 @@ class SinoNormalizationTask(
339
334
  elif data.ndim in (0, 1):
340
335
  res = data
341
336
  else:
342
- raise ValueError("dataset dimension not handled ({})".format(data.ndim))
337
+ raise ValueError(f"dataset dimension not handled ({data.ndim}D)")
343
338
  results[calc_fct.value] = res
344
339
  return results
345
340
 
@@ -34,11 +34,11 @@ __license__ = "MIT"
34
34
  __date__ = "25/06/2021"
35
35
 
36
36
 
37
+ import typing
38
+
37
39
  from silx.utils.enum import Enum as _Enum
38
40
  from tomoscan.normalization import Method
39
41
 
40
- import typing
41
-
42
42
 
43
43
  class _ValueSource(_Enum):
44
44
  MONITOR = "intensity monitor"
@@ -1,2 +1,2 @@
1
- from .saaxis import SAAxisProcess # noqa F401
2
1
  from .params import SAAxisParams # noqa F401
2
+ from .saaxis import SAAxisProcess # noqa F401
@@ -30,9 +30,11 @@ __date__ = "18/02/2021"
30
30
 
31
31
  from collections.abc import Iterable
32
32
  from typing import Union
33
+
34
+ import numpy
33
35
  from silx.utils.enum import Enum as _Enum
36
+
34
37
  from tomwer.core.process.reconstruction.scores.params import SABaseParams
35
- import numpy
36
38
 
37
39
 
38
40
  class ReconstructionMode(_Enum):
@@ -92,7 +94,7 @@ class SAAxisParams(SABaseParams):
92
94
  @image_width.setter
93
95
  def image_width(self, width):
94
96
  if not isinstance(width, (type(None), float, int)):
95
- raise TypeError("None, int or float expected. Not {}".format(type(width)))
97
+ raise TypeError(f"None, int or float expected. Not {type(width)}")
96
98
  else:
97
99
  self._image_width = width
98
100
 
@@ -136,12 +138,9 @@ class SAAxisParams(SABaseParams):
136
138
  if self.slice_indexes is None:
137
139
  missing_information.append("slice index not provided")
138
140
  if len(missing_information) > 0:
141
+ missing_information_str = " ; ".join(missing_information)
139
142
  raise ValueError(
140
- str(
141
- "Some informations are missing: {}".format(
142
- " ; ".join(missing_information)
143
- )
144
- )
143
+ f"Some informations are missing: {missing_information_str}"
145
144
  )
146
145
 
147
146
  @staticmethod
@@ -32,48 +32,52 @@ __license__ = "MIT"
32
32
  __date__ = "10/02/2021"
33
33
 
34
34
 
35
- import os
36
35
  import copy
37
- import h5py
38
- import numpy
39
36
  import logging
37
+ import os
40
38
  from typing import Iterable, Optional
41
- from silx.io.url import DataUrl
42
- from tomoscan.io import HDF5File
43
- from processview.core.manager import ProcessManager, DatasetState
44
- from processview.core.superviseprocess import SuperviseProcess
39
+
40
+ import h5py
41
+ import numpy
45
42
  from nabu.pipeline.config import get_default_nabu_config
46
43
  from nabu.pipeline.fullfield.nabu_config import (
47
44
  nabu_config as nabu_fullfield_default_config,
48
45
  )
49
- from tomwer.core.scan.edfscan import EDFTomoScan
50
- from tomwer.core.scan.scanfactory import ScanFactory
46
+ from processview.core.manager import DatasetState, ProcessManager
47
+ from processview.core.superviseprocess import SuperviseProcess
48
+ from silx.io.url import DataUrl
49
+ from tomoscan.io import HDF5File
50
+
51
+ import tomwer.version
52
+ from tomwer.core.process.reconstruction.axis import AxisRP
53
+ from tomwer.core.process.reconstruction.nabu.nabuscores import (
54
+ run_nabu_one_slice_several_config,
55
+ )
51
56
  from tomwer.core.process.reconstruction.nabu.nabuslices import (
52
57
  SingleSliceRunner,
53
58
  interpret_tomwer_configuration,
54
59
  )
55
- from tomwer.core.utils.slurm import is_slurm_available
56
- from tomwer.core.volume.volumefactory import VolumeFactory
57
- from tomwer.io.utils.utils import get_slice_data
58
- from ..nabu import utils
60
+ from tomwer.core.process.reconstruction.scores import (
61
+ ComputedScore,
62
+ apply_roi,
63
+ compute_score,
64
+ get_disk_mask_radius,
65
+ )
59
66
  from tomwer.core.process.reconstruction.scores.params import ScoreMethod
60
- from .params import ReconstructionMode
61
- from .params import SAAxisParams
62
- from tomwer.core.scan.scanbase import TomwerScanBase
63
- from tomwer.core.utils import logconfig
64
67
  from tomwer.core.process.task import Task
65
- from tomwer.core.scan.hdf5scan import HDF5TomoScan
66
- import tomwer.version
67
68
  from tomwer.core.progress import Progress
68
- from tomwer.core.process.reconstruction.axis import AxisRP
69
- from tomwer.core.process.reconstruction.scores import compute_score
70
- from tomwer.core.process.reconstruction.scores import ComputedScore
71
- from tomwer.core.process.reconstruction.scores import get_disk_mask_radius, apply_roi
72
- from tomwer.core.process.reconstruction.nabu.nabuscores import (
73
- run_nabu_one_slice_several_config,
74
- )
69
+ from tomwer.core.scan.edfscan import EDFTomoScan
70
+ from tomwer.core.scan.hdf5scan import HDF5TomoScan
71
+ from tomwer.core.scan.scanbase import TomwerScanBase
72
+ from tomwer.core.scan.scanfactory import ScanFactory
73
+ from tomwer.core.utils import logconfig
75
74
  from tomwer.core.utils.scanutils import data_identifier_to_scan
75
+ from tomwer.core.utils.slurm import is_slurm_available
76
+ from tomwer.core.volume.volumefactory import VolumeFactory
77
+ from tomwer.io.utils.utils import get_slice_data
76
78
 
79
+ from ..nabu import utils
80
+ from .params import ReconstructionMode, SAAxisParams
77
81
 
78
82
  _logger = logging.getLogger(__name__)
79
83
 
@@ -116,18 +120,16 @@ def one_slice_several_cor(
116
120
  nabu_output_config = nabu_config.get("output", {})
117
121
  file_format = nabu_output_config.get("file_format", "hdf5")
118
122
  cluster_config = configuration.cluster_config
119
- _logger.info(
120
- "launch reconstruction of slice {} and cors {}".format(slice_index, cors)
121
- )
123
+ _logger.info(f"launch reconstruction of slice {slice_index} and cors {cors}")
122
124
  if mode is ReconstructionMode.VERTICAL:
123
125
  if isinstance(slice_index, str):
124
126
  if not slice_index == "middle":
125
- raise ValueError("slice index {} not recognized".format(slice_index))
127
+ raise ValueError(f"slice index {slice_index} not recognized")
126
128
  elif not len(slice_index) == 1:
127
- raise ValueError("{} mode only manage one slice".format(mode.value))
129
+ raise ValueError(f"{mode.value} mode only manage one slice")
128
130
  else:
129
131
  slice_index = list(slice_index.values())[0]
130
- advancement = Progress("saaxis - slice {} of {}".format(slice_index, scan))
132
+ advancement = Progress(f"saaxis - slice {slice_index} of {scan}")
131
133
 
132
134
  _, cor_reconstructions, outs, errs, future_tomo_objs = run_slice_reconstruction(
133
135
  scan=scan,
@@ -142,7 +144,7 @@ def one_slice_several_cor(
142
144
  process_id=process_id,
143
145
  )
144
146
  else:
145
- raise ValueError("{} is not handled for now".format(mode))
147
+ raise ValueError(f"{mode} is not handled for now")
146
148
 
147
149
  # treat future
148
150
  if output_dir is None:
@@ -173,7 +175,7 @@ def one_slice_several_cor(
173
175
  db=db,
174
176
  ctf=ctf,
175
177
  )
176
- file_prefix = "cor_{}_{}".format(_file_name, cor)
178
+ file_prefix = f"cor_{_file_name}_{cor}"
177
179
 
178
180
  recons_vol_id = utils.get_recons_volume_identifier(
179
181
  scan=scan,
@@ -280,8 +282,7 @@ def one_slice_several_cor(
280
282
  data = get_slice_data(url=url)
281
283
  except Exception as e:
282
284
  _logger.error(
283
- "Fail to compute a score for {}. Reason is {}"
284
- "".format(url.path(), str(e))
285
+ f"Fail to compute a score for {url.path()}. Reason is {e}"
285
286
  )
286
287
  datasets_[cor] = (url, None)
287
288
  else:
@@ -292,14 +293,12 @@ def one_slice_several_cor(
292
293
  data = data.reshape(data.shape[0], data.shape[1])
293
294
  else:
294
295
  raise ValueError(
295
- "Data is expected to be 2D. Not {}".format(data.ndim)
296
+ f"Data is expected to be 2D. Not {data.ndim}D"
296
297
  )
297
298
  elif data.ndim == 2:
298
299
  pass
299
300
  else:
300
- raise ValueError(
301
- "Data is expected to be 2D. Not {}".format(data.ndim)
302
- )
301
+ raise ValueError("Data is expected to be 2D. Not {data.ndim}D")
303
302
 
304
303
  datasets_[cor] = (url, data)
305
304
  return datasets_
@@ -506,9 +505,7 @@ class SAAxisProcess(
506
505
  elif isinstance(scan, dict):
507
506
  scan = ScanFactory.create_scan_object_frm_dict(scan)
508
507
  else:
509
- raise ValueError(
510
- "input type of {}: {} is not managed" "".format(scan, type(scan))
511
- )
508
+ raise ValueError(f"input type of {scan}: {type(scan)} is not managed")
512
509
  # TODO: look and update if there is some nabu reconstruction
513
510
  # or axis information to be used back
514
511
  configuration = self.get_configuration()
@@ -527,17 +524,13 @@ class SAAxisProcess(
527
524
  ):
528
525
  params.estimated_cor = relative_cor
529
526
  _logger.info(
530
- "{}: set estimated cor from previously computed cor ({})".format(
531
- str(scan), params.estimated_cor
532
- )
527
+ f"{scan}: set estimated cor from previously computed cor ({params.estimated_cor})"
533
528
  )
534
529
  # from scan.estimated_cor_position
535
530
  if params.estimated_cor is None and scan.estimated_cor_frm_motor is not None:
536
531
  params.estimated_cor = scan.estimated_cor_frm_motor
537
532
  _logger.info(
538
- "{}: set estimated cor from motor position ({})".format(
539
- str(scan), params.estimated_cor
540
- )
533
+ f"{scan}: set estimated cor from motor position ({params.estimated_cor})"
541
534
  )
542
535
  if scan.dim_1 is not None:
543
536
  params.image_width = scan.dim_1
@@ -575,17 +568,13 @@ class SAAxisProcess(
575
568
  slice_index = self.get_configuration().get("slice_index", None)
576
569
 
577
570
  if cors_res is None:
578
- info = "fail to compute cor scores of slice {} for scan {}." "".format(
579
- slice_index, scan
580
- )
571
+ info = f"fail to compute cor scores of slice {slice_index} for scan {scan}."
581
572
  _logger.processFailed(info, extra=extra)
582
573
  ProcessManager().notify_dataset_state(
583
574
  dataset=scan, process=self, state=DatasetState.FAILED, details=info
584
575
  )
585
576
  else:
586
- info = "cor scores of slice {} for scan {} computed." "".format(
587
- slice_index, scan
588
- )
577
+ info = f"cor scores of slice {slice_index} for scan {scan} computed."
589
578
  _logger.processSucceed(info, extra=extra)
590
579
  ProcessManager().notify_dataset_state(
591
580
  dataset=scan,
@@ -1,2 +1,2 @@
1
- from .sadeltabeta import SADeltaBetaProcess # noqa F401
2
1
  from .params import SADeltaBetaParams # noqa F401
2
+ from .sadeltabeta import SADeltaBetaProcess # noqa F401
@@ -28,10 +28,11 @@ __license__ = "MIT"
28
28
  __date__ = "04/05/2021"
29
29
 
30
30
 
31
- from tomwer.core.process.reconstruction.scores.params import SABaseParams
32
- from tomwer.core.process.reconstruction.nabu.utils import retrieve_lst_of_value_from_str
33
31
  import typing
34
32
 
33
+ from tomwer.core.process.reconstruction.nabu.utils import retrieve_lst_of_value_from_str
34
+ from tomwer.core.process.reconstruction.scores.params import SABaseParams
35
+
35
36
 
36
37
  class SADeltaBetaParams(SABaseParams):
37
38
  """Parameters for the semi-automatic axis calculation"""
@@ -62,20 +63,18 @@ class SADeltaBetaParams(SABaseParams):
62
63
  return self._selected_db
63
64
 
64
65
  def to_dict(self) -> dict:
65
- dict = super().to_dict()
66
- dict.update(
66
+ my_dict = super().to_dict()
67
+ my_dict.update(
67
68
  {
68
69
  "delta_beta_values": self.delta_beta_values,
69
70
  "selected_db_value": self.selected_delta_beta_value,
70
71
  }
71
72
  )
72
- return dict
73
+ return my_dict
73
74
 
74
75
  def load_from_dict(self, dict_: dict):
75
76
  if not isinstance(dict_, dict):
76
- raise TypeError(
77
- "dict_ should be an instance of dict not {}".format(type(dict_))
78
- )
77
+ raise TypeError(f"dict_ should be an instance of dict not {type(dict_)}")
79
78
  super().load_from_dict(dict_)
80
79
  if "delta_beta_values" in dict_:
81
80
  self.delta_beta_values = dict_["delta_beta_values"]
@@ -99,12 +98,9 @@ class SADeltaBetaParams(SABaseParams):
99
98
  if self.slice_indexes is None:
100
99
  missing_information.append("slice index not provided")
101
100
  if len(missing_information) > 0:
101
+ missing_information_str = " ; ".join(missing_information)
102
102
  raise ValueError(
103
- str(
104
- "Some informations are missing: {}".format(
105
- " ; ".join(missing_information)
106
- )
107
- )
103
+ f"Some informations are missing: {missing_information_str}"
108
104
  )
109
105
 
110
106
  def __str__(self):