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
@@ -29,42 +29,43 @@ __authors__ = ["C.Nemoz", "H.Payno"]
29
29
  __license__ = "MIT"
30
30
  __date__ = "19/03/2019"
31
31
 
32
+ import logging
33
+ from typing import Optional, Union
34
+
32
35
  import nabu
33
36
  import numpy
34
- import logging
35
- from processview.core.manager import ProcessManager
36
- from processview.core.manager import DatasetState
37
+ from nabu.estimation.cor import (
38
+ CenterOfRotation,
39
+ CenterOfRotationAdaptiveSearch,
40
+ CenterOfRotationGrowingWindow,
41
+ CenterOfRotationSlidingWindow,
42
+ )
43
+ from nabu.pipeline.estimators import SinoCORFinder
44
+ from processview.core.manager import DatasetState, ProcessManager
45
+ from processview.core.superviseprocess import SuperviseProcess
46
+
37
47
  import tomwer.version
48
+ from tomwer.core.process.reconstruction.utils.cor import absolute_pos_to_relative
49
+ from tomwer.core.process.task import Task
50
+ from tomwer.core.scan.hdf5scan import HDF5TomoScan
51
+ from tomwer.core.scan.scanbase import TomwerScanBase
52
+ from tomwer.core.scan.scanfactory import ScanFactory
53
+ from tomwer.core.utils import image, logconfig
54
+ from tomwer.core.utils.scanutils import data_identifier_to_scan
55
+ from tomwer.utils import docstring
56
+
57
+ from .anglemode import CorAngleMode
58
+ from .mode import AxisMode
38
59
  from .params import (
39
- AxisRP,
40
- DEFAULT_CMP_TAKE_LOG,
41
- DEFAULT_CMP_OVERSAMPLING,
42
60
  DEFAULT_CMP_N_SUBSAMPLING_Y,
43
61
  DEFAULT_CMP_NEAR_POS,
44
62
  DEFAULT_CMP_NEAR_WIDTH,
63
+ DEFAULT_CMP_OVERSAMPLING,
64
+ DEFAULT_CMP_TAKE_LOG,
45
65
  DEFAULT_CMP_THETA,
66
+ AxisRP,
46
67
  )
47
- from .mode import AxisMode
48
68
  from .projectiontype import ProjectionType
49
- from .anglemode import CorAngleMode
50
- from tomwer.core.process.task import Task
51
- from processview.core.superviseprocess import SuperviseProcess
52
- from tomwer.core.scan.scanbase import TomwerScanBase
53
- from tomwer.core.process.reconstruction.utils.cor import absolute_pos_to_relative
54
- from tomwer.core.scan.scanfactory import ScanFactory
55
- from tomwer.core.utils.scanutils import data_identifier_to_scan
56
- from tomwer.core.utils import logconfig
57
- from typing import Optional, Union
58
- from tomwer.utils import docstring
59
- from tomwer.core.utils import image
60
- from tomwer.core.scan.hdf5scan import HDF5TomoScan
61
- from nabu.estimation.cor import (
62
- CenterOfRotation,
63
- CenterOfRotationAdaptiveSearch,
64
- CenterOfRotationGrowingWindow,
65
- CenterOfRotationSlidingWindow,
66
- )
67
- from nabu.pipeline.estimators import SinoCORFinder
68
69
 
69
70
  try:
70
71
  from nabu.pipeline.estimators import CompositeCOREstimator
@@ -73,8 +74,8 @@ except ImportError:
73
74
  else:
74
75
  has_composite_cor_finder = True
75
76
  from silx.io.url import DataUrl
76
- from tomoscan.io import HDF5File
77
77
  from silx.io.utils import h5py_read_dataset
78
+ from tomoscan.io import HDF5File
78
79
 
79
80
  _logger = logging.getLogger(__name__)
80
81
  if not has_composite_cor_finder:
@@ -111,9 +112,10 @@ def adapt_tomwer_scan_to_nabu(scan: TomwerScanBase):
111
112
  # since this version nabu does not the load of dark / flat mean/median
112
113
  # directly in the function but outside. So we need an extra call to
113
114
  # update_dataset_info_flats_darks
114
- from nabu.resources.nxflatfield import update_dataset_info_flats_darks
115
115
  import inspect
116
116
 
117
+ from nabu.resources.nxflatfield import update_dataset_info_flats_darks
118
+
117
119
  # processes_file has been removed in a minor release. safer to inspect if is needed or not
118
120
  # should be removed on release 1.1 of tomwer I guess
119
121
  if (
@@ -265,7 +267,7 @@ def compute_scan_composite_coarse_to_fine(scan: TomwerScanBase):
265
267
  cor_options=scan.axis_params.get_nabu_cor_options_as_dict(),
266
268
  logger=_logger,
267
269
  take_log=take_log,
268
- **extra_args
270
+ **extra_args,
269
271
  )
270
272
  res = corfinder.find_cor()
271
273
  return _absolute_pos_to_relative_with_warning(
@@ -679,7 +681,7 @@ class AxisProcess(
679
681
  elif isinstance(scan, dict):
680
682
  scan = ScanFactory.create_scan_object_frm_dict(scan)
681
683
  else:
682
- raise ValueError("input type {} is not managed".format(scan))
684
+ raise ValueError(f"input type {scan} is not managed")
683
685
 
684
686
  _logger.info("start axis calculation for %s" % scan.path)
685
687
  self._axis_params.frame_width = scan.dim_1
@@ -751,7 +753,7 @@ class AxisProcess(
751
753
  dataset=scan, process=self, state=DatasetState.FAILED, details=info
752
754
  )
753
755
  else:
754
- info = "axis calculation defined for {}: {} (using {})" "".format(
756
+ info = "axis calculation defined for {}: {} (using {})".format(
755
757
  str(scan.path),
756
758
  str(scan.axis_params.relative_cor_value),
757
759
  scan.axis_params.mode.value,
@@ -863,8 +865,7 @@ class AxisProcess(
863
865
  scan_name = scan.path or "undef scan"
864
866
  scan.axis_params.set_relative_value(None)
865
867
  raise Exception(
866
- "Fail to compute axis position for {} reason is {}"
867
- "".format(scan_name, e)
868
+ f"Fail to compute axis position for {scan_name} reason is {e}"
868
869
  )
869
870
  else:
870
871
  scan.axis_params.set_relative_value(position)
@@ -875,12 +876,9 @@ class AxisProcess(
875
876
  method = "sinogram"
876
877
  else:
877
878
  method = scan.axis_params.mode.value
879
+ r_cor_value = scan.axis_params.relative_cor_value
878
880
  mess = (
879
- "Compute axis position ({value}) with {method} for {scan_name}".format(
880
- value=str(scan.axis_params.relative_cor_value),
881
- method=method,
882
- scan_name=scan_name,
883
- )
881
+ f"Compute axis position ({r_cor_value}) with {method} for {scan_name}"
884
882
  )
885
883
  _logger.info(mess)
886
884
  if self._return_dict:
@@ -28,9 +28,10 @@ __license__ = "MIT"
28
28
  __date__ = "15/10/2019"
29
29
 
30
30
 
31
- from silx.utils.enum import Enum as _Enum
32
31
  import logging
33
32
 
33
+ from silx.utils.enum import Enum as _Enum
34
+
34
35
  _logger = logging.getLogger(__name__)
35
36
 
36
37
 
@@ -28,23 +28,25 @@ __license__ = "MIT"
28
28
  __date__ = "04/03/2019"
29
29
 
30
30
 
31
- from silx.utils.enum import Enum as _Enum
32
-
33
- from .anglemode import CorAngleMode
34
- from tomwer.core.utils import getParametersFromParOrInfo
35
- from .projectiontype import ProjectionType
36
- from .mode import AxisMode
37
- from collections import namedtuple
38
- from silx.io.url import DataUrl
39
- from tomoscan.esrf.scan.utils import get_data
40
31
  import logging
41
- import numpy
42
32
  import os
43
- import h5py
33
+ from collections import namedtuple
44
34
  from typing import Union
35
+
36
+ import h5py
37
+ import numpy
38
+ from silx.io.url import DataUrl
39
+ from silx.utils.deprecation import deprecated
40
+ from silx.utils.enum import Enum as _Enum
41
+ from tomoscan.esrf.scan.utils import get_data
42
+
45
43
  from tomwer.core.process.task import Task
46
44
  from tomwer.core.scan.scanbase import TomwerScanBase
47
- from silx.utils.deprecation import deprecated
45
+ from tomwer.core.utils import getParametersFromParOrInfo
46
+
47
+ from .anglemode import CorAngleMode
48
+ from .mode import AxisMode
49
+ from .projectiontype import ProjectionType
48
50
 
49
51
  try:
50
52
  from nabu.preproc.phase import PaganinPhaseRetrieval
@@ -264,7 +266,7 @@ class AxisRP:
264
266
  """do image scaling"""
265
267
  self.__padding_mode = None
266
268
  self.__frame_width = None
267
- self.__side = "all"
269
+ self.__side = "right"
268
270
  """side of the cor. Requested by nabu cor algorithms growing-window
269
271
  and sliding-window"""
270
272
  self.__flip_lr = True
@@ -293,8 +295,7 @@ class AxisRP:
293
295
  name = AxisMode.global_.name
294
296
  elif name == "accurate":
295
297
  _logger.info(
296
- "convert axis mode {} to {} (renamed)"
297
- "".format(name, AxisMode.centered.name)
298
+ f"convert axis mode {name} to {AxisMode.centered.name} (renamed)"
298
299
  )
299
300
  name = AxisMode.centered.name
300
301
  elif name == "growing-window":
@@ -312,7 +313,7 @@ class AxisRP:
312
313
  except Exception:
313
314
  _mode = AxisMode.from_value(name)
314
315
  except Exception:
315
- raise ValueError("Fail to create axis mode from %s" % mode)
316
+ raise ValueError(f"Fail to create axis mode from {mode}")
316
317
  else:
317
318
  if not isinstance(mode, AxisMode):
318
319
  raise TypeError(f"mode is expected to be an instance of {AxisMode}")
@@ -328,7 +329,7 @@ class AxisRP:
328
329
  def frame_width(self, value):
329
330
  if not isinstance(value, (type(None), float, int)):
330
331
  raise TypeError(
331
- "Value is expected to be None or a float. Not {}".format(type(value))
332
+ f"Value is expected to be None or a float. Not {type(value)}"
332
333
  )
333
334
  if value is None:
334
335
  self.__frame_width = value
@@ -410,7 +411,7 @@ class AxisRP:
410
411
  @side.setter
411
412
  def side(self, side):
412
413
  if side not in ("all", "left", "right", "center", "near"):
413
- raise ValueError("side '{}' is not managed".format(side))
414
+ raise ValueError(f"side '{side}' is not managed")
414
415
  if self.__side != side:
415
416
  self.__side = side
416
417
  self.changed()
@@ -660,10 +661,7 @@ class AxisRP:
660
661
  ):
661
662
  _dict = getParametersFromParOrInfo(file_path)
662
663
  if self.AXIS_POSITION_PAR_KEY.lower() not in _dict:
663
- err = "fail to find `%s` in %s" % (
664
- self.AXIS_POSITION_PAR_KEY,
665
- file_path,
666
- )
664
+ err = f"fail to find `{self.AXIS_POSITION_PAR_KEY}` in {file_path}"
667
665
  _logger.info(err)
668
666
  raise KeyError(err)
669
667
  else:
@@ -725,8 +723,7 @@ class AxisRP:
725
723
  elif len(processes) > 1:
726
724
  _logger.info("found more than one value computed for " "center of rotation")
727
725
  _logger.info(
728
- "load center of rotation from %s: %s"
729
- % (file_path, processes[0].results["center_of_rotation"])
726
+ f"load center of rotation from {file_path}: {processes[0].results['center_of_rotation']}"
730
727
  )
731
728
  cor = processes[0].results["center_of_rotation"]
732
729
  if cor in [None, ""]:
@@ -862,16 +859,14 @@ class AxisRP:
862
859
  pass
863
860
 
864
861
  def get_simple_str(self):
865
- results = "{}".format(self.mode.value)
862
+ results = f"{self.mode.value}"
866
863
  if self.mode in (
867
864
  AxisMode.growing_window_radios,
868
865
  AxisMode.growing_window_sinogram,
869
866
  AxisMode.sliding_window_radios,
870
867
  AxisMode.sliding_window_sinogram,
871
868
  ):
872
- extra_info = "side: {}, use sinogram: {}".format(
873
- self.side, self.use_sinogram
874
- )
869
+ extra_info = f"side: {self.side}, use sinogram: {self.use_sinogram}"
875
870
  results = ", ".join((results, extra_info))
876
871
  return results
877
872
 
@@ -30,27 +30,28 @@ __authors__ = ["C. Nemoz", "H.Payno"]
30
30
  __license__ = "MIT"
31
31
  __date__ = "06/09/2017"
32
32
 
33
+ import logging
33
34
  import os
34
35
  import typing
35
- import logging
36
36
  from queue import Queue
37
+
38
+ from processview.core.manager import DatasetState, ProcessManager
39
+ from processview.core.superviseprocess import SuperviseProcess
40
+ from silx.io.url import DataUrl
41
+ from silx.io.utils import h5py_read_dataset
42
+ from tomoscan.framereducerbase import REDUCER_TARGET, ReduceMethod
43
+ from tomoscan.io import HDF5File
44
+
37
45
  import tomwer.version
38
- from tomwer.utils import docstring
39
- from tomwer.core import settings
40
- from tomwer.core import utils
46
+ from tomwer.core import settings, utils
41
47
  from tomwer.core.process.task import Task
42
- from tomwer.core.utils.scanutils import data_identifier_to_scan
43
- from tomwer.core.scan.scanbase import TomwerScanBase
44
48
  from tomwer.core.scan.hdf5scan import HDF5TomoScan
45
- from . import params as dkrf_reconsparams
49
+ from tomwer.core.scan.scanbase import TomwerScanBase
46
50
  from tomwer.core.scan.scanfactory import ScanFactory
47
- from tomoscan.framereducerbase import ReduceMethod, REDUCER_TARGET
48
- from processview.core.manager import ProcessManager
49
- from tomoscan.io import HDF5File
50
- from processview.core.superviseprocess import SuperviseProcess
51
- from processview.core.manager import DatasetState
52
- from silx.io.utils import h5py_read_dataset
53
- from silx.io.url import DataUrl
51
+ from tomwer.core.utils.scanutils import data_identifier_to_scan
52
+ from tomwer.utils import docstring
53
+
54
+ from . import params as dkrf_reconsparams
54
55
 
55
56
  logger = logging.getLogger(__name__)
56
57
 
@@ -247,7 +248,7 @@ class DarkRefs(
247
248
 
248
249
  with HDF5File(process_file, "r", swmr=True) as h5f:
249
250
  if entry not in h5f.keys():
250
- logger.info("no dark found for {}".format(entry))
251
+ logger.info(f"no dark found for {entry}")
251
252
  return {}
252
253
  dark_nodes = DarkRefs._get_process_nodes(
253
254
  root_node=h5f[entry], process=DarkRefs
@@ -309,7 +310,7 @@ class DarkRefs(
309
310
 
310
311
  with HDF5File(process_file, "r", swmr=True) as h5f:
311
312
  if entry not in h5f.keys():
312
- logger.info("no flats found for {}".format(entry))
313
+ logger.info(f"no flats found for {entry}")
313
314
  return {}
314
315
  dkref_nodes = DarkRefs._get_process_nodes(
315
316
  root_node=h5f[entry], process=DarkRefs
@@ -326,7 +327,7 @@ class DarkRefs(
326
327
  if (len(index_to_path)) > 1:
327
328
  logger.debug(
328
329
  "several processing found for dark-ref,"
329
- "take the last one: %s" % last_process_dkrf
330
+ f"take the last one: {last_process_dkrf}"
330
331
  )
331
332
 
332
333
  res = {}
@@ -378,7 +379,7 @@ class DarkRefs(
378
379
  process=self,
379
380
  state=DatasetState.ON_GOING,
380
381
  )
381
- logger.processStarted("start dark and ref for {}" "".format(str(scan)))
382
+ logger.processStarted(f"start dark and ref for {scan}")
382
383
  if (
383
384
  settings.isOnLbsram(scan)
384
385
  and utils.isLowOnMemory(settings.get_lbsram_path()) is True
@@ -398,7 +399,7 @@ class DarkRefs(
398
399
  return
399
400
 
400
401
  if not (scan and os.path.exists(scan.path)):
401
- mess = "folder {} is not existing".format(scan.path)
402
+ mess = f"folder {scan.folder} is not existing"
402
403
  logger.warning(mess)
403
404
  ProcessManager().notify_dataset_state(
404
405
  dataset=scan, process=self, state=DatasetState.FAILED, details=mess
@@ -424,16 +425,11 @@ class DarkRefs(
424
425
  # if reduced already exists and user didn't asked for overwritting it
425
426
  if exists and not overwrite:
426
427
  continue
427
- logger.debug(
428
- "compute {what} using mode {mode} for {scan}"
429
- "".format(what=what, mode=mode, scan=str(scan))
430
- )
428
+ logger.debug(f"compute {what} using mode {mode} for {scan}")
431
429
  try:
432
430
  self.compute(scan=scan, target=what, method=mode, overwrite=True)
433
431
  except Exception as e:
434
- info = "Fail computing dark and flat for {}. Reason is {}".format(
435
- str(scan), e
436
- )
432
+ info = f"Fail computing dark and flat for {scan}. Reason is {e}"
437
433
  self.notify_to_state_to_managed(
438
434
  dataset=scan, state=DatasetState.FAILED, details=info
439
435
  )
@@ -489,7 +485,7 @@ class DarkRefs(
489
485
  process_index=scan.pop_process_index(),
490
486
  overwrite=True,
491
487
  )
492
- logger.processSucceed("Dark and ref succeeded for {}" "".format(str(scan)))
488
+ logger.processSucceed(f"Dark and ref succeeded for {scan}")
493
489
  self.notify_to_state_to_managed(
494
490
  dataset=scan, state=DatasetState.SUCCEED, details=None
495
491
  )
@@ -32,20 +32,24 @@ __license__ = "MIT"
32
32
  __date__ = "17/08/2021"
33
33
 
34
34
 
35
- import os
36
35
  import logging
36
+ import os
37
37
  import tempfile
38
38
  from typing import Union
39
+
40
+ from silx.io.dictdump import dicttoh5, h5todict
39
41
  from silx.io.url import DataUrl
40
- from silx.io.dictdump import dicttoh5
41
- from tomoscan.io import HDF5File
42
- from tomoscan.esrf.scan.utils import cwd_context
42
+ from tomoscan.esrf.scan.utils import (
43
+ copy_h5_dict_darks_to,
44
+ copy_h5_dict_flats_to,
45
+ cwd_context,
46
+ )
43
47
  from tomoscan.framereducerbase import REDUCER_TARGET
48
+ from tomoscan.io import HDF5File
49
+
44
50
  from tomwer.core.process.reconstruction.darkref.darkrefs import DarkRefs
45
51
  from tomwer.core.scan.scanbase import TomwerScanBase
46
52
  from tomwer.core.utils.scanutils import data_identifier_to_scan
47
- from tomoscan.esrf.scan.utils import copy_h5_dict_darks_to, copy_h5_dict_flats_to
48
- from silx.io.dictdump import h5todict
49
53
 
50
54
  logger = logging.getLogger(__name__)
51
55
 
@@ -92,9 +96,7 @@ class DarkRefsCopy(DarkRefs):
92
96
  if init_ref_scan:
93
97
  if not isinstance(init_ref_scan, TomwerScanBase):
94
98
  raise TypeError(
95
- "init_ref_scan is expected to be an instance of TomwerScanBase. Not {}".format(
96
- type(init_ref_scan)
97
- )
99
+ f"init_ref_scan is expected to be an instance of TomwerScanBase. Not {type(init_ref_scan)}"
98
100
  )
99
101
  else:
100
102
  self.set_darks_and_flats_from_scan(init_ref_scan)
@@ -216,9 +218,7 @@ class DarkRefsCopy(DarkRefs):
216
218
  def _copy_to(self, scan):
217
219
  if not isinstance(scan, TomwerScanBase):
218
220
  raise TypeError(
219
- "{} is expected to be a {} and not {}".format(
220
- str(scan), TomwerScanBase, type(scan)
221
- )
221
+ f"{scan} is expected to be an instance of {TomwerScanBase} and not {type(scan)}"
222
222
  )
223
223
 
224
224
  if self.has_dark_stored():
@@ -306,9 +306,7 @@ class DarkRefsCopy(DarkRefs):
306
306
  """Return True if the scan has already some dark processed"""
307
307
  if not isinstance(scan, TomwerScanBase):
308
308
  return TypeError(
309
- "scan is expected to be an instance of {} and not {}".format(
310
- TomwerScanBase, type(scan)
311
- )
309
+ f"scan is expected to be an instance of {TomwerScanBase} and not {type(scan)}"
312
310
  )
313
311
  else:
314
312
  return scan.reduced_darks or scan.load_reduced_darks()
@@ -317,9 +315,7 @@ class DarkRefsCopy(DarkRefs):
317
315
  """Return True if the scan has already some dark processed"""
318
316
  if not isinstance(scan, TomwerScanBase):
319
317
  return TypeError(
320
- "scan is expected to be an instance of {} and not {}".format(
321
- TomwerScanBase, type(scan)
322
- )
318
+ f"scan is expected to be an instance of {TomwerScanBase} and not {type(scan)}"
323
319
  )
324
320
  else:
325
321
  return scan.reduced_flats or scan.load_reduced_flats()
@@ -29,14 +29,16 @@ __date__ = "07/03/2019"
29
29
 
30
30
 
31
31
  import enum
32
+
32
33
  from silx.utils.enum import Enum as _Enum
34
+ from tomoscan.framereducerbase import ReduceMethod
35
+
33
36
  from tomwer.core.process.reconstruction.darkref.settings import (
34
37
  DARKHST_PREFIX,
35
38
  REFHST_PREFIX,
36
39
  )
37
40
  from tomwer.core.process.reconstruction.paramsbase import _ReconsParam
38
41
  from tomwer.core.utils.deprecation import deprecated
39
- from tomoscan.framereducerbase import ReduceMethod
40
42
 
41
43
 
42
44
  # TODO: those classes (when, method) should be linked / embedded in the DarkRef
@@ -28,27 +28,27 @@ __license__ = "MIT"
28
28
  __date__ = "01/06/2018"
29
29
 
30
30
 
31
+ import enum
31
32
  import glob
33
+ import logging
32
34
  import os
35
+ import shutil
33
36
  import subprocess
34
37
  import sys
35
- import enum
36
- from collections import OrderedDict
37
38
  import tempfile
38
- import shutil
39
- from tomwer.core.scan.hdf5scan import HDF5TomoScan
40
- from tomwer.core.process.task import Task
39
+ from collections import OrderedDict
40
+
41
+ import tomwer.version
41
42
  from tomwer.core.process.reconstruction.darkref.settings import (
42
43
  DARKHST_PREFIX,
43
44
  REFHST_PREFIX,
44
45
  )
45
- from tomwer.core.scan.scanfactory import ScanFactory
46
+ from tomwer.core.process.task import Task
47
+ from tomwer.core.scan.hdf5scan import HDF5TomoScan
46
48
  from tomwer.core.scan.scanbase import TomwerScanBase
49
+ from tomwer.core.scan.scanfactory import ScanFactory
47
50
  from tomwer.core.utils import getDim1Dim2
48
51
  from tomwer.core.utils.char import PSI_CHAR
49
- import tomwer.version
50
-
51
- import logging
52
52
 
53
53
  logger = logging.getLogger(__name__)
54
54
 
@@ -417,10 +417,7 @@ def _preprocess_stitching(
417
417
  return True
418
418
 
419
419
  def stitching(shift, blend, adjust_mean):
420
- work = "[read path=%s, read path=%s ! flip direction=horizontal]" % (
421
- fc1_folder,
422
- fc2_folder,
423
- )
420
+ work = f"[read path={fc1_folder}, read path={fc2_folder} ! flip direction=horizontal]"
424
421
  work = work + " ! stitch shift=%s " % shift
425
422
  work += "blend=%s " % str(int(blend))
426
423
  work += "adjust-mean=%s " % str(int(adjust_mean))
@@ -767,8 +764,7 @@ class LaminoReconstruction(Task, input_names=("data",), output_names=("data",)):
767
764
  _scan = scan
768
765
  if not isinstance(_scan, TomwerScanBase):
769
766
  raise TypeError(
770
- "input data is expected to be dict, str or "
771
- "TomwerScanBase not {}".format(type(_scan))
767
+ f"input data is expected to be dict, str or {TomwerScanBase} not {type(_scan)}"
772
768
  )
773
769
 
774
770
  # if need some preprocessing
@@ -31,31 +31,28 @@ __license__ = "MIT"
31
31
  __date__ = "15/12/2021"
32
32
 
33
33
 
34
+ import logging
34
35
  import os
36
+
37
+ import numpy
38
+ from nabu.io.cast_volume import RESCALE_MAX_PERCENTILE, RESCALE_MIN_PERCENTILE
39
+ from nabu.io.cast_volume import cast_volume as _nabu_cast_volume
40
+ from nabu.io.cast_volume import get_default_output_volume
41
+ from processview.core.manager import DatasetState, ProcessManager
35
42
  from processview.core.superviseprocess import SuperviseProcess
43
+ from sluurp.executor import submit as submit_to_slurm_cluster
44
+ from sluurp.job import SBatchScriptJob
45
+ from tomoscan.volumebase import VolumeBase
46
+
36
47
  from tomwer.core.cluster.cluster import SlurmClusterConfiguration
48
+ from tomwer.core.futureobject import FutureTomwerObject
37
49
  from tomwer.core.process.reconstruction.nabu import settings
50
+ from tomwer.core.process.reconstruction.nabu.nabucommon import NabuOutputFileFormat
38
51
  from tomwer.core.process.task import Task
39
- from tomwer.core.process.reconstruction.nabu.nabucommon import (
40
- NabuOutputFileFormat,
41
- )
42
- from processview.core.manager import ProcessManager, DatasetState
43
- import numpy
44
- import logging
45
- from tomoscan.volumebase import VolumeBase
46
- from nabu.io.cast_volume import (
47
- cast_volume as _nabu_cast_volume,
48
- RESCALE_MIN_PERCENTILE,
49
- RESCALE_MAX_PERCENTILE,
50
- get_default_output_volume,
51
- )
52
- from tomwer.core.futureobject import FutureTomwerObject
53
52
  from tomwer.core.utils.slurm import get_slurm_script_name
54
- from tomwer.core.volume.volumefactory import VolumeFactory
55
- from tomwer.core.volume.volumebase import TomwerVolumeBase
56
53
  from tomwer.core.utils.volumeutils import volume_identifier_to_volume
57
- from sluurp.job import SBatchScriptJob
58
- from sluurp.executor import submit as submit_to_slurm_cluster
54
+ from tomwer.core.volume.volumebase import TomwerVolumeBase
55
+ from tomwer.core.volume.volumefactory import VolumeFactory
59
56
 
60
57
  _logger = logging.getLogger(__name__)
61
58
 
@@ -32,37 +32,36 @@ __license__ = "MIT"
32
32
  __date__ = "27/10/2021"
33
33
 
34
34
 
35
- from tomwer.core.cluster.cluster import (
36
- SlurmClusterConfiguration,
37
- )
35
+ import logging
36
+ import os
37
+ import subprocess
38
+ import uuid
39
+ from typing import Iterable, Optional, Union
40
+
41
+ import numpy
42
+ from silx.io.url import DataUrl
43
+ from silx.utils.enum import Enum as _Enum
38
44
  from sluurp.executor import submit as submit_to_slurm_cluster
39
45
  from sluurp.job import SBatchScriptJob
46
+ from tomoscan.io import HDF5File
47
+ from tomoscan.normalization import Method as INormMethod
48
+
49
+ from tomwer.core.cluster.cluster import SlurmClusterConfiguration
40
50
  from tomwer.core.process.reconstruction.nabu.target import Target
41
51
  from tomwer.core.process.reconstruction.nabu.utils import (
42
52
  _NabuPhaseMethod,
43
53
  nabu_std_err_has_error,
44
54
  )
45
- from tomwer.core.utils.scanutils import format_output_location
55
+ from tomwer.core.process.reconstruction.normalization.params import (
56
+ _ValueSource as INormSource,
57
+ )
46
58
  from tomwer.core.scan.edfscan import EDFTomoScan
47
59
  from tomwer.core.scan.hdf5scan import HDF5TomoScan
48
60
  from tomwer.core.scan.scanbase import TomwerScanBase
61
+ from tomwer.core.utils.scanutils import format_output_location
49
62
  from tomwer.core.utils.slurm import get_slurm_script_name, is_slurm_available
50
- from tomwer.core.process.reconstruction.normalization.params import (
51
- _ValueSource as INormSource,
52
- )
53
- from tomoscan.normalization import Method as INormMethod
54
- from silx.utils.enum import Enum as _Enum
55
- from silx.io.url import DataUrl
56
- from typing import Iterable, Optional
57
- from typing import Union
58
- import logging
59
- import subprocess
60
- from . import settings
61
- from . import utils
62
- import os
63
- import uuid
64
- from tomoscan.io import HDF5File
65
- import numpy
63
+
64
+ from . import settings, utils
66
65
 
67
66
  _logger = logging.getLogger(__name__)
68
67
  try: