tomwer 1.1.0rc7__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 (361) 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 +32 -38
  46. orangecontrib/tomwer/widgets/reconstruction/SADeltaBetaOW.py +26 -26
  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/slurm.py +36 -0
  124. tomwer/core/process/reconstruction/nabu/utils.py +18 -15
  125. tomwer/core/process/reconstruction/normalization/__init__.py +1 -3
  126. tomwer/core/process/reconstruction/normalization/normalization.py +16 -21
  127. tomwer/core/process/reconstruction/normalization/params.py +2 -2
  128. tomwer/core/process/reconstruction/saaxis/__init__.py +1 -1
  129. tomwer/core/process/reconstruction/saaxis/params.py +6 -7
  130. tomwer/core/process/reconstruction/saaxis/saaxis.py +44 -55
  131. tomwer/core/process/reconstruction/sadeltabeta/__init__.py +1 -1
  132. tomwer/core/process/reconstruction/sadeltabeta/params.py +9 -13
  133. tomwer/core/process/reconstruction/sadeltabeta/sadeltabeta.py +40 -46
  134. tomwer/core/process/reconstruction/scores/__init__.py +2 -2
  135. tomwer/core/process/reconstruction/scores/params.py +6 -9
  136. tomwer/core/process/reconstruction/scores/scores.py +10 -13
  137. tomwer/core/process/reconstruction/test/test_axis_params.py +4 -2
  138. tomwer/core/process/reconstruction/test/test_darkref.py +1 -2
  139. tomwer/core/process/reconstruction/test/test_darkref_copy.py +3 -1
  140. tomwer/core/process/reconstruction/test/test_paramsbase.py +1 -1
  141. tomwer/core/process/reconstruction/test/test_saaxis.py +11 -7
  142. tomwer/core/process/reconstruction/test/test_sadeltabeta.py +5 -4
  143. tomwer/core/process/reconstruction/test/test_utils.py +3 -2
  144. tomwer/core/process/script/python.py +6 -8
  145. tomwer/core/process/task.py +11 -12
  146. tomwer/core/process/test/test_axis.py +12 -9
  147. tomwer/core/process/test/test_conditions.py +8 -8
  148. tomwer/core/process/test/test_dark_and_flat.py +9 -8
  149. tomwer/core/process/test/test_data_listener.py +5 -3
  150. tomwer/core/process/test/test_data_transfer.py +14 -12
  151. tomwer/core/process/test/test_data_watcher.py +3 -1
  152. tomwer/core/process/test/test_lamino.py +3 -1
  153. tomwer/core/process/test/test_nabu.py +13 -12
  154. tomwer/core/process/test/test_normalization.py +7 -5
  155. tomwer/core/process/test/test_timer.py +2 -1
  156. tomwer/core/process/utils.py +9 -9
  157. tomwer/core/progress.py +3 -4
  158. tomwer/core/scan/blissscan.py +4 -2
  159. tomwer/core/scan/edfscan.py +26 -29
  160. tomwer/core/scan/futurescan.py +2 -1
  161. tomwer/core/scan/hdf5scan.py +21 -28
  162. tomwer/core/scan/scanbase.py +18 -18
  163. tomwer/core/scan/scanfactory.py +20 -21
  164. tomwer/core/scan/scantype.py +7 -0
  165. tomwer/core/scan/test/test_edf.py +2 -1
  166. tomwer/core/scan/test/test_future_scan.py +2 -1
  167. tomwer/core/scan/test/test_h5.py +5 -4
  168. tomwer/core/scan/test/test_process_registration.py +5 -3
  169. tomwer/core/scan/test/test_scan.py +11 -9
  170. tomwer/core/settings.py +1 -2
  171. tomwer/core/test/test_lamino.py +3 -2
  172. tomwer/core/test/test_scanutils.py +3 -2
  173. tomwer/core/test/test_utils.py +6 -4
  174. tomwer/core/utils/__init__.py +8 -6
  175. tomwer/core/utils/deprecation.py +2 -2
  176. tomwer/core/utils/image.py +4 -3
  177. tomwer/core/utils/laminoutils.py +80 -0
  178. tomwer/core/utils/locker.py +1 -1
  179. tomwer/core/utils/normalization.py +1 -0
  180. tomwer/core/utils/nxtomoutils.py +2 -1
  181. tomwer/core/utils/scanutils.py +9 -6
  182. tomwer/core/utils/slurm.py +2 -1
  183. tomwer/core/utils/time.py +2 -4
  184. tomwer/core/utils/volumeutils.py +2 -1
  185. tomwer/core/volume/__init__.py +1 -1
  186. tomwer/core/volume/edfvolume.py +4 -3
  187. tomwer/core/volume/hdf5volume.py +6 -8
  188. tomwer/core/volume/jp2kvolume.py +4 -3
  189. tomwer/core/volume/rawvolume.py +7 -7
  190. tomwer/core/volume/tiffvolume.py +8 -6
  191. tomwer/core/volume/volumebase.py +1 -0
  192. tomwer/core/volume/volumefactory.py +18 -18
  193. tomwer/gui/cluster/slurm.py +2 -0
  194. tomwer/gui/cluster/supervisor.py +4 -2
  195. tomwer/gui/cluster/test/test_cluster.py +5 -4
  196. tomwer/gui/cluster/test/test_supervisor.py +4 -2
  197. tomwer/gui/conditions/filter.py +7 -6
  198. tomwer/gui/control/actions.py +1 -0
  199. tomwer/gui/control/datadiscovery.py +168 -0
  200. tomwer/gui/control/datalist.py +29 -28
  201. tomwer/gui/control/datalistener.py +8 -4
  202. tomwer/gui/control/datareacheractions.py +2 -1
  203. tomwer/gui/control/datatransfert.py +3 -1
  204. tomwer/gui/control/datavalidator.py +11 -12
  205. tomwer/gui/control/datawatcher/configuration.py +12 -1
  206. tomwer/gui/control/datawatcher/controlwidget.py +116 -0
  207. tomwer/gui/control/datawatcher/datawatcher.py +63 -121
  208. tomwer/gui/control/datawatcher/datawatcherobserver.py +7 -9
  209. tomwer/gui/control/history.py +3 -1
  210. tomwer/gui/control/observations.py +7 -7
  211. tomwer/gui/control/scanselectorwidget.py +4 -2
  212. tomwer/gui/control/selectorwidgetbase.py +3 -1
  213. tomwer/gui/control/serie/seriecreator.py +11 -12
  214. tomwer/gui/control/singletomoobj.py +4 -4
  215. tomwer/gui/control/test/test_datadiscovery.py +27 -0
  216. tomwer/gui/control/test/test_datalist.py +7 -6
  217. tomwer/gui/control/test/test_datalistener.py +4 -4
  218. tomwer/gui/control/test/test_datavalidator.py +3 -1
  219. tomwer/gui/control/test/test_inputwidget.py +5 -4
  220. tomwer/gui/control/test/test_process_manager.py +3 -3
  221. tomwer/gui/control/test/test_scanselector.py +6 -4
  222. tomwer/gui/control/test/test_scanvalidator.py +6 -5
  223. tomwer/gui/control/test/test_single_tomo_obj.py +5 -3
  224. tomwer/gui/control/test/test_volume_dialog.py +7 -5
  225. tomwer/gui/control/test/test_volumeselector.py +8 -6
  226. tomwer/gui/control/volumeselectorwidget.py +2 -1
  227. tomwer/gui/debugtools/datasetgenerator.py +2 -1
  228. tomwer/gui/debugtools/objectinspector.py +6 -7
  229. tomwer/gui/edit/dkrfpatch.py +11 -10
  230. tomwer/gui/edit/imagekeyeditor.py +12 -12
  231. tomwer/gui/edit/nxtomoeditor.py +8 -7
  232. tomwer/gui/edit/test/test_dkrf_patch.py +10 -9
  233. tomwer/gui/edit/test/test_image_key_editor.py +8 -6
  234. tomwer/gui/edit/test/test_nx_editor.py +7 -5
  235. tomwer/gui/icons.py +3 -2
  236. tomwer/gui/illustrations.py +3 -2
  237. tomwer/gui/imagefromfile.py +3 -1
  238. tomwer/gui/qfolderdialog.py +14 -12
  239. tomwer/gui/reconstruction/axis/CompareImages.py +9 -8
  240. tomwer/gui/reconstruction/axis/__init__.py +1 -1
  241. tomwer/gui/reconstruction/axis/axis.py +9 -7
  242. tomwer/gui/reconstruction/axis/radioaxis.py +30 -32
  243. tomwer/gui/reconstruction/darkref/darkrefcopywidget.py +6 -5
  244. tomwer/gui/reconstruction/darkref/darkrefwidget.py +4 -2
  245. tomwer/gui/reconstruction/lamino/tofu/misc.py +3 -1
  246. tomwer/gui/reconstruction/lamino/tofu/projections.py +16 -8
  247. tomwer/gui/reconstruction/lamino/tofu/tofu.py +6 -3
  248. tomwer/gui/reconstruction/lamino/tofu/tofuexpert.py +5 -2
  249. tomwer/gui/reconstruction/lamino/tofu/tofuoutput.py +8 -5
  250. tomwer/gui/reconstruction/nabu/action.py +1 -0
  251. tomwer/gui/reconstruction/nabu/castvolume.py +6 -4
  252. tomwer/gui/reconstruction/nabu/check.py +3 -2
  253. tomwer/gui/reconstruction/nabu/nabuconfig/base.py +5 -2
  254. tomwer/gui/reconstruction/nabu/nabuconfig/ctf.py +6 -3
  255. tomwer/gui/reconstruction/nabu/nabuconfig/nabuconfig.py +4 -3
  256. tomwer/gui/reconstruction/nabu/nabuconfig/output.py +7 -5
  257. tomwer/gui/reconstruction/nabu/nabuconfig/phase.py +8 -6
  258. tomwer/gui/reconstruction/nabu/nabuconfig/preprocessing.py +7 -7
  259. tomwer/gui/reconstruction/nabu/nabuconfig/reconstruction.py +40 -33
  260. tomwer/gui/reconstruction/nabu/nabuflow.py +7 -4
  261. tomwer/gui/reconstruction/nabu/slices.py +14 -10
  262. tomwer/gui/reconstruction/nabu/slurm.py +1 -0
  263. tomwer/gui/reconstruction/nabu/volume.py +5 -3
  264. tomwer/gui/reconstruction/normalization/intensity.py +14 -13
  265. tomwer/gui/reconstruction/saaxis/corrangeselector.py +36 -35
  266. tomwer/gui/reconstruction/saaxis/dimensionwidget.py +5 -4
  267. tomwer/gui/reconstruction/saaxis/saaxis.py +17 -17
  268. tomwer/gui/reconstruction/saaxis/sliceselector.py +5 -5
  269. tomwer/gui/reconstruction/sadeltabeta/saadeltabeta.py +33 -36
  270. tomwer/gui/reconstruction/scores/scoreplot.py +19 -18
  271. tomwer/gui/reconstruction/test/test_axis.py +14 -13
  272. tomwer/gui/reconstruction/test/test_lamino.py +3 -2
  273. tomwer/gui/reconstruction/test/test_nabu.py +8 -6
  274. tomwer/gui/reconstruction/test/test_saaxis.py +17 -15
  275. tomwer/gui/reconstruction/test/test_sadeltabeta.py +15 -13
  276. tomwer/gui/samplemoved/__init__.py +8 -7
  277. tomwer/gui/samplemoved/selectiontable.py +4 -2
  278. tomwer/gui/stackplot.py +14 -13
  279. tomwer/gui/stacks.py +11 -9
  280. tomwer/gui/test/test_axis_gui.py +5 -4
  281. tomwer/gui/test/test_qfolder_dialog.py +2 -1
  282. tomwer/gui/utils/__init__.py +5 -5
  283. tomwer/gui/utils/buttons.py +1 -0
  284. tomwer/gui/utils/completer.py +1 -0
  285. tomwer/gui/utils/flow.py +4 -2
  286. tomwer/gui/utils/illustrations.py +1 -0
  287. tomwer/gui/utils/inputwidget.py +11 -17
  288. tomwer/gui/utils/lineselector/lineselection.py +76 -0
  289. tomwer/gui/utils/lineselector/lineselector.py +6 -8
  290. tomwer/gui/utils/qt_utils.py +1 -0
  291. tomwer/gui/utils/scandescription.py +2 -0
  292. tomwer/gui/utils/splashscreen.py +1 -1
  293. tomwer/gui/utils/unitsystem.py +3 -1
  294. tomwer/gui/utils/vignettes.py +8 -8
  295. tomwer/gui/utils/waiterthread.py +2 -1
  296. tomwer/gui/visualization/dataviewer.py +20 -28
  297. tomwer/gui/visualization/diffviewer/diffviewer.py +17 -20
  298. tomwer/gui/visualization/diffviewer/shiftwidget.py +3 -1
  299. tomwer/gui/visualization/nxtomometadata.py +1 -0
  300. tomwer/gui/visualization/reconstructionparameters.py +13 -12
  301. tomwer/gui/visualization/scanoverview.py +5 -3
  302. tomwer/gui/visualization/sinogramviewer.py +3 -2
  303. tomwer/gui/visualization/test/test_dataviewer.py +3 -1
  304. tomwer/gui/visualization/test/test_diffviewer.py +8 -6
  305. tomwer/gui/visualization/test/test_nx_tomo_metadata_viewer.py +5 -3
  306. tomwer/gui/visualization/test/test_reconstruction_parameters.py +5 -3
  307. tomwer/gui/visualization/test/test_sinogramviewer.py +10 -9
  308. tomwer/gui/visualization/test/test_stacks.py +8 -6
  309. tomwer/gui/visualization/test/test_volumeviewer.py +10 -8
  310. tomwer/gui/visualization/tomoobjoverview.py +7 -4
  311. tomwer/gui/visualization/volumeoverview.py +5 -3
  312. tomwer/gui/visualization/volumeviewer.py +15 -14
  313. tomwer/io/utils/__init__.py +3 -3
  314. tomwer/io/utils/h5pyutils.py +2 -1
  315. tomwer/io/utils/utils.py +17 -21
  316. tomwer/resources/__init__.py +1 -1
  317. tomwer/synctools/axis.py +3 -1
  318. tomwer/synctools/darkref.py +3 -2
  319. tomwer/synctools/datalistener.py +10 -6
  320. tomwer/synctools/datatransfert.py +2 -3
  321. tomwer/synctools/imageloaderthread.py +5 -3
  322. tomwer/synctools/rsyncmanager.py +3 -2
  323. tomwer/synctools/saaxis.py +3 -1
  324. tomwer/synctools/sadeltabeta.py +3 -1
  325. tomwer/synctools/stacks/control/datalistener.py +9 -12
  326. tomwer/synctools/stacks/edit/darkflatpatch.py +13 -12
  327. tomwer/synctools/stacks/edit/imagekeyeditor.py +12 -11
  328. tomwer/synctools/stacks/processingstack.py +3 -2
  329. tomwer/synctools/stacks/reconstruction/axis.py +12 -12
  330. tomwer/synctools/stacks/reconstruction/castvolume.py +8 -5
  331. tomwer/synctools/stacks/reconstruction/dkrefcopy.py +10 -9
  332. tomwer/synctools/stacks/reconstruction/lamino.py +9 -7
  333. tomwer/synctools/stacks/reconstruction/nabu.py +18 -17
  334. tomwer/synctools/stacks/reconstruction/normalization.py +12 -16
  335. tomwer/synctools/stacks/reconstruction/saaxis.py +13 -11
  336. tomwer/synctools/stacks/reconstruction/sadeltabeta.py +16 -14
  337. tomwer/synctools/test/test_darkRefs.py +4 -3
  338. tomwer/synctools/test/test_foldertransfer.py +14 -12
  339. tomwer/synctools/test/test_scanstages.py +8 -7
  340. tomwer/synctools/utils/scanstages.py +7 -5
  341. tomwer/tests/conftest.py +4 -4
  342. tomwer/tests/test_scripts.py +3 -2
  343. tomwer/tests/utils/__init__.py +5 -4
  344. tomwer/tests/utils/utilstest.py +5 -6
  345. tomwer/third_party/nabu/preproc/phase.py +7 -5
  346. tomwer/third_party/nabu/utils.py +3 -2
  347. tomwer/utils.py +12 -12
  348. tomwer/version.py +3 -3
  349. tomwer/web/__init__.py +30 -0
  350. tomwer/web/client.py +43 -0
  351. tomwer/web/config.py +36 -0
  352. tomwer/web/test/__init__.py +0 -0
  353. tomwer/web/test/test_graylog_connection.py +59 -0
  354. {tomwer-1.1.0rc7.dist-info → tomwer-1.2.0a0.dist-info}/METADATA +2 -2
  355. {tomwer-1.1.0rc7.dist-info → tomwer-1.2.0a0.dist-info}/RECORD +361 -345
  356. {tomwer-1.1.0rc7.dist-info → tomwer-1.2.0a0.dist-info}/WHEEL +1 -1
  357. /tomwer-1.1.0rc7-py3.9-nspkg.pth → /tomwer-1.2.0a0-py3.8-nspkg.pth +0 -0
  358. {tomwer-1.1.0rc7.dist-info → tomwer-1.2.0a0.dist-info}/LICENSE +0 -0
  359. {tomwer-1.1.0rc7.dist-info → tomwer-1.2.0a0.dist-info}/entry_points.txt +0 -0
  360. {tomwer-1.1.0rc7.dist-info → tomwer-1.2.0a0.dist-info}/namespace_packages.txt +0 -0
  361. {tomwer-1.1.0rc7.dist-info → tomwer-1.2.0a0.dist-info}/top_level.txt +0 -0
@@ -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):
@@ -32,45 +32,51 @@ __license__ = "MIT"
32
32
  __date__ = "28/10/2021"
33
33
 
34
34
 
35
- import os
36
35
  import logging
37
- import h5py
38
- import numpy
36
+ import os
39
37
  from copy import copy
40
38
  from typing import Optional, Union
39
+
40
+ import h5py
41
+ import numpy
41
42
  from nabu.pipeline.config import get_default_nabu_config
42
43
  from nabu.pipeline.fullfield.nabu_config import (
43
44
  nabu_config as nabu_fullfield_default_config,
44
45
  )
45
- from processview.core.manager import ProcessManager, DatasetState
46
+ from processview.core.manager import DatasetState, ProcessManager
46
47
  from processview.core.superviseprocess import SuperviseProcess
48
+ from tomoscan.esrf.scan.utils import get_data
49
+ from tomoscan.io import HDF5File
50
+
51
+ import tomwer.version
47
52
  from tomwer.core.process.reconstruction.nabu.nabucommon import (
48
- ResultSlurmRun,
49
53
  ResultsLocalRun,
54
+ ResultSlurmRun,
55
+ ResultsRun,
50
56
  ResultsWithStd,
51
57
  )
52
- from tomwer.core.scan.scanfactory import ScanFactory
53
- from .params import SADeltaBetaParams
54
- from tomwer.core.scan.scanbase import TomwerScanBase
55
- from tomwer.core.utils import logconfig
56
- from tomwer.core.process.task import Task
57
- from tomwer.core.scan.hdf5scan import HDF5TomoScan
58
- from tomoscan.io import HDF5File
59
- from tomoscan.esrf.scan.utils import get_data
60
- import tomwer.version
61
58
  from tomwer.core.process.reconstruction.nabu.nabuslices import (
59
+ SingleSliceRunner,
62
60
  run_single_slice_reconstruction,
63
61
  )
64
- from tomwer.core.process.reconstruction.nabu.nabucommon import ResultsRun
62
+ from tomwer.core.process.reconstruction.scores import (
63
+ ComputedScore,
64
+ ScoreMethod,
65
+ apply_roi,
66
+ compute_score,
67
+ get_disk_mask_radius,
68
+ )
69
+ from tomwer.core.process.task import Task
65
70
  from tomwer.core.progress import Progress
66
- from ..nabu import utils as nabu_utils
67
- from tomwer.core.process.reconstruction.scores import compute_score
68
- from tomwer.core.process.reconstruction.scores import ScoreMethod
69
- from tomwer.core.process.reconstruction.scores import ComputedScore
70
- from tomwer.core.process.reconstruction.scores import get_disk_mask_radius, apply_roi
71
- from tomwer.core.process.reconstruction.nabu.nabuslices import SingleSliceRunner
72
- from tomwer.core.volume.volumefactory import VolumeFactory
71
+ from tomwer.core.scan.hdf5scan import HDF5TomoScan
72
+ from tomwer.core.scan.scanbase import TomwerScanBase
73
+ from tomwer.core.scan.scanfactory import ScanFactory
74
+ from tomwer.core.utils import logconfig
73
75
  from tomwer.core.utils.scanutils import data_identifier_to_scan
76
+ from tomwer.core.volume.volumefactory import VolumeFactory
77
+
78
+ from ..nabu import utils as nabu_utils
79
+ from .params import SADeltaBetaParams
74
80
 
75
81
  _logger = logging.getLogger(__name__)
76
82
 
@@ -113,22 +119,20 @@ def one_slice_several_db(
113
119
  dry_run = configuration.dry_run
114
120
  cluster_config = configuration.cluster_config
115
121
  _logger.info(
116
- "launch reconstruction of slice {} and delta / beta: {}".format(
117
- slice_index, delta_beta_s
118
- )
122
+ f"launch reconstruction of slice {slice_index} and delta / beta: {delta_beta_s}"
119
123
  )
120
124
  if isinstance(slice_index, str):
121
125
  if not slice_index == "middle":
122
- raise ValueError("slice index {} not recognized".format(slice_index))
126
+ raise ValueError(f"slice index {slice_index} not recognized")
123
127
  elif not len(slice_index) == 1:
124
128
  raise ValueError("only manage one slice")
125
129
  else:
126
130
  slice_index = list(slice_index.values())[0]
127
- advancement = Progress("sa-delta-beta - slice {} of {}".format(slice_index, scan))
131
+ advancement = Progress(f"sa-delta-beta - slice {slice_index} of {scan}")
128
132
 
129
133
  config = configuration.nabu_params.copy()
130
134
 
131
- _logger.info("start reconstruction of {}".format(str(scan)))
135
+ _logger.info(f"start reconstruction of {scan}")
132
136
  # if scan contains some center of position copy it to nabu
133
137
  if scan.axis_params is not None and scan.axis_params.relative_cor_value is not None:
134
138
  if "reconstruction" in config:
@@ -136,7 +140,7 @@ def one_slice_several_db(
136
140
  cor_nabu_ref = scan.axis_params.relative_cor_value + scan.dim_1 / 2.0
137
141
  config["reconstruction"]["rotation_axis_position"] = str(cor_nabu_ref)
138
142
 
139
- _logger.info("set nabu reconstruction parameters to {}".format(str(scan)))
143
+ _logger.info(f"set nabu reconstruction parameters to {scan}")
140
144
  scan.nabu_recons_params = config
141
145
 
142
146
  db_reconstructions = {}
@@ -285,8 +289,7 @@ def one_slice_several_db(
285
289
  data = get_data(slice_url)
286
290
  except Exception as e:
287
291
  _logger.error(
288
- "Fail to compute a score for {}. Reason is {}"
289
- "".format(volume_identifier, str(e))
292
+ f"Fail to compute a score for {volume_identifier}. Reason is {e}"
290
293
  )
291
294
  datasets_[db] = (slice_url, None)
292
295
  else:
@@ -297,14 +300,12 @@ def one_slice_several_db(
297
300
  data = data.reshape(data.shape[0], data.shape[1])
298
301
  else:
299
302
  raise ValueError(
300
- "Data is expected to be 2D. Not {}".format(data.ndim)
303
+ f"Data is expected to be 2D. Not {data.ndim}D"
301
304
  )
302
305
  elif data.ndim == 2:
303
306
  pass
304
307
  else:
305
- raise ValueError(
306
- "Data is expected to be 2D. Not {}".format(data.ndim)
307
- )
308
+ raise ValueError(f"Data is expected to be 2D. Not {data.ndim}D")
308
309
 
309
310
  datasets_[db] = (slice_url, data)
310
311
  return datasets_
@@ -411,9 +412,7 @@ class SADeltaBetaProcess(
411
412
  elif isinstance(scan, dict):
412
413
  scan = ScanFactory.create_scan_object_frm_dict(scan)
413
414
  else:
414
- raise ValueError(
415
- "input type of {}: {} is not managed" "".format(scan, type(scan))
416
- )
415
+ raise ValueError(f"input type of {scan}: {type(scan)} is not managed")
417
416
  # insure scan contains some parameter regarding sa delta / beta
418
417
  if scan.sa_delta_beta_params is None:
419
418
  scan.sa_delta_beta_params = SADeltaBetaParams()
@@ -458,18 +457,13 @@ class SADeltaBetaProcess(
458
457
  slice_index = self.get_configuration().get("slice_index", None)
459
458
 
460
459
  if db_res is None:
461
- info = (
462
- "fail to compute delta/beta scores of slice {} for scan {}."
463
- "".format(slice_index, scan)
464
- )
460
+ info = f"fail to compute delta/beta scores of slice {slice_index} for scan {scan}."
465
461
  _logger.processFailed(info, extra=extra)
466
462
  ProcessManager().notify_dataset_state(
467
463
  dataset=scan, process=self, state=DatasetState.FAILED, details=info
468
464
  )
469
465
  else:
470
- info = "delta/beta scores of slice {} for scan {} computed." "".format(
471
- slice_index, scan
472
- )
466
+ info = f"delta/beta scores of slice {slice_index} for scan {scan} computed."
473
467
  _logger.processSucceed(info, extra=extra)
474
468
  ProcessManager().notify_dataset_state(
475
469
  dataset=scan,
@@ -496,7 +490,7 @@ class SADeltaBetaProcess(
496
490
  if not isinstance(score_rois, dict):
497
491
  raise TypeError("score_rois is expected to be a dict")
498
492
  process_file = scan.process_file
499
- process_name = "tomwer_process_" + str(process_index)
493
+ process_name = f"tomwer_process_{process_index}"
500
494
 
501
495
  if scan.saaxis_params.scores in (None, {}):
502
496
  return
@@ -1,6 +1,6 @@
1
- from .scores import ScoreMethod # noqa F401
2
1
  from .params import SABaseParams # noqa F401
3
- from .scores import compute_score # noqa F401
4
2
  from .scores import ComputedScore # noqa F401
3
+ from .scores import ScoreMethod # noqa F401
5
4
  from .scores import apply_roi # noqa F401
5
+ from .scores import compute_score # noqa F401
6
6
  from .scores import get_disk_mask_radius # noqa F401
@@ -28,10 +28,11 @@ __license__ = "MIT"
28
28
  __date__ = "04/05/2021"
29
29
 
30
30
 
31
- from tomwer.core.cluster.cluster import SlurmClusterConfiguration
32
- from tomwer.core.process.reconstruction.scores import ScoreMethod
33
31
  from typing import Optional, Union
34
32
 
33
+ from tomwer.core.cluster.cluster import SlurmClusterConfiguration
34
+ from tomwer.core.process.reconstruction.scores.scores import ScoreMethod
35
+
35
36
 
36
37
  class SABaseParams:
37
38
  """Parameters for the semi-automatic axis calculation"""
@@ -79,8 +80,7 @@ class SABaseParams:
79
80
  raise ValueError("the only valid indexes values is 'middle'")
80
81
  elif not isinstance(indexes, (type(None), dict)):
81
82
  raise TypeError(
82
- "index should be an instance of int or None and "
83
- "not {}".format(type(indexes))
83
+ f"index should be an instance of int or None and not {type(indexes)}"
84
84
  )
85
85
  self._slice_indexes = indexes
86
86
 
@@ -91,9 +91,7 @@ class SABaseParams:
91
91
  @nabu_params.setter
92
92
  def nabu_params(self, params: dict):
93
93
  if not isinstance(params, dict):
94
- raise TypeError(
95
- "params should be a dictionary and not {}" "".format(type(params))
96
- )
94
+ raise TypeError(f"params should be a dictionary and not {type(params)}")
97
95
  self._nabu_params = params
98
96
 
99
97
  @property
@@ -144,8 +142,7 @@ class SABaseParams:
144
142
  raise TypeError("format should be a str")
145
143
  if format_ not in self._VALID_FILE_FORMAT:
146
144
  raise ValueError(
147
- "requested format ({}) is invalid. valid ones "
148
- "are {}".format(format_, self._VALID_FILE_FORMAT)
145
+ f"requested format ({format_}) is invalid. valid ones are {self._VALID_FILE_FORMAT}"
149
146
  )
150
147
  self._file_format = format_
151
148
 
@@ -28,12 +28,13 @@ __license__ = "MIT"
28
28
  __date__ = "18/02/2021"
29
29
 
30
30
 
31
- from silx.utils.enum import Enum as _Enum
32
- import numpy
33
- import sys
34
31
  import logging
32
+ import sys
35
33
  from typing import Union
36
34
 
35
+ import numpy
36
+ from silx.utils.enum import Enum as _Enum
37
+
37
38
  _logger = logging.getLogger(__name__)
38
39
 
39
40
 
@@ -76,7 +77,7 @@ class ComputedScore:
76
77
  elif method is ScoreMethod.TOMO_CONSISTENCY:
77
78
  return self.tomo_consistency
78
79
  else:
79
- raise ValueError("{} is an unrecognized method".format(method))
80
+ raise ValueError(f"{method} is an unrecognized method")
80
81
 
81
82
 
82
83
  def compute_tomo_consistency(
@@ -160,11 +161,11 @@ def compute_score(
160
161
  elif data.shape[2] == 1:
161
162
  data = data.reshape(data.shape[0], data.shape[1])
162
163
  else:
163
- raise ValueError("Data is expected to be 2D. Not {}".format(data.ndim))
164
+ raise ValueError(f"Data is expected to be 2D. Not {data.ndim}D")
164
165
  elif data.ndim == 2:
165
166
  pass
166
167
  else:
167
- raise ValueError("Data is expected to be 2D. Not {}".format(data.ndim))
168
+ raise ValueError(f"Data is expected to be 2D. Not {data.ndim}D")
168
169
  if method is ScoreMethod.TOMO_CONSISTENCY:
169
170
  try:
170
171
  return compute_tomo_consistency(
@@ -177,9 +178,7 @@ def compute_score(
177
178
  except ImportError:
178
179
  return None
179
180
  except Exception as e:
180
- _logger.warning(
181
- "Fail to compute 'tomo consistency' score. " "Reason is {}".format(e)
182
- )
181
+ _logger.warning(f"Fail to compute 'tomo consistency' score. Reason is {e}")
183
182
  return None
184
183
  else:
185
184
  fct = _METHOD_TO_FCT.get(method, None)
@@ -187,7 +186,7 @@ def compute_score(
187
186
  if fct is not None:
188
187
  return fct(data)
189
188
  else:
190
- raise ValueError("{} is not handled".format(method))
189
+ raise ValueError(f"{method} is not handled")
191
190
 
192
191
 
193
192
  def get_disk_mask_radius(datasets_) -> int:
@@ -214,7 +213,5 @@ def apply_roi(data, radius, url) -> numpy.array:
214
213
  try:
215
214
  return data[min_y:max_y, min_x:max_x]
216
215
  except Exception:
217
- _logger.error(
218
- "Fail to apply roi for {}. Take the entire dataset".format(url.path())
219
- )
216
+ _logger.error(f"Fail to apply roi for {url.path()}. Take the entire dataset")
220
217
  return data
@@ -1,11 +1,13 @@
1
1
  import os
2
+
3
+ import numpy
2
4
  import pytest
5
+
3
6
  from tomwer.core.process.reconstruction.axis.params import (
4
- AxisResource,
5
7
  AxisCalculationInput,
8
+ AxisResource,
6
9
  )
7
10
  from tomwer.core.utils.scanutils import MockHDF5
8
- import numpy
9
11
 
10
12
 
11
13
  def test_axis_resource(tmp_path):
@@ -28,11 +28,10 @@ __license__ = "MIT"
28
28
  __date__ = "24/11/2021"
29
29
 
30
30
 
31
- from tomwer.core.utils.scanutils import MockEDF
32
- from tomwer.core.utils.scanutils import MockHDF5
33
31
  from tomwer.core.process.reconstruction.darkref.darkrefs import (
34
32
  requires_reduced_dark_and_flat,
35
33
  )
34
+ from tomwer.core.utils.scanutils import MockEDF, MockHDF5
36
35
 
37
36
 
38
37
  def test_quick_run_necessary_edf(tmpdir):
@@ -1,7 +1,9 @@
1
1
  import os
2
+
2
3
  import numpy
3
4
  import pytest
4
5
  from silx.io.dictdump import dicttoh5
6
+
5
7
  from tomwer.core.process.reconstruction.darkref.darkrefscopy import DarkRefsCopy
6
8
  from tomwer.core.utils.scanutils import MockHDF5
7
9
 
@@ -91,8 +93,8 @@ def test_save_reduced_frames_to_be_copied(tmp_path):
91
93
  test save_flats_to_be_copied and save_darks_to_be_copied functions
92
94
  """
93
95
  # create raw data
94
- from tomoscan.scanbase import ReducedFramesInfos
95
96
  from silx.io.url import DataUrl
97
+ from tomoscan.scanbase import ReducedFramesInfos
96
98
 
97
99
  raw_data = tmp_path / "raw_data"
98
100
  raw_data.mkdir()
@@ -1,5 +1,5 @@
1
- from tomwer.core.process.reconstruction.paramsbase import _ReconsParam, _get_db_fromstr
2
1
  from tomwer.core.process.reconstruction.darkref.params import DKRFRP
2
+ from tomwer.core.process.reconstruction.paramsbase import _get_db_fromstr, _ReconsParam
3
3
 
4
4
 
5
5
  def test_paramsbase():
@@ -28,17 +28,21 @@ __license__ = "MIT"
28
28
  __date__ = "27/02/2021"
29
29
 
30
30
 
31
- import unittest
32
- from tomwer.core.process.reconstruction.scores.scores import compute_score_contrast_std
33
- from tomwer.core.process.reconstruction.scores.scores import _METHOD_TO_FCT
34
- from tomwer.core.process.reconstruction.saaxis.saaxis import SAAxisProcess
35
- from tomwer.core.process.reconstruction.saaxis.params import SAAxisParams
36
- from tomwer.core.utils.scanutils import MockHDF5
37
31
  import os
38
- import tempfile
39
32
  import shutil
33
+ import tempfile
34
+ import unittest
35
+
40
36
  import numpy
41
37
 
38
+ from tomwer.core.process.reconstruction.saaxis.params import SAAxisParams
39
+ from tomwer.core.process.reconstruction.saaxis.saaxis import SAAxisProcess
40
+ from tomwer.core.process.reconstruction.scores.scores import (
41
+ _METHOD_TO_FCT,
42
+ compute_score_contrast_std,
43
+ )
44
+ from tomwer.core.utils.scanutils import MockHDF5
45
+
42
46
 
43
47
  class TestScoreFunctions(unittest.TestCase):
44
48
  """Test all the score functions"""
@@ -28,15 +28,16 @@ __license__ = "MIT"
28
28
  __date__ = "27/02/2021"
29
29
 
30
30
 
31
+ import os
32
+ import shutil
33
+ import tempfile
31
34
  import unittest
35
+
32
36
  from tomwer.core.process.reconstruction.sadeltabeta.sadeltabeta import (
33
- SADeltaBetaProcess,
34
37
  SADeltaBetaParams,
38
+ SADeltaBetaProcess,
35
39
  )
36
40
  from tomwer.core.utils.scanutils import MockHDF5
37
- import os
38
- import tempfile
39
- import shutil
40
41
 
41
42
 
42
43
  class TestSADeltaBetaProcess(unittest.TestCase):