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
@@ -28,15 +28,17 @@ __date__ = "22/01/2017"
28
28
 
29
29
 
30
30
  import os
31
- from tomwer.tests.utils import skip_gui_test
32
- from silx.gui import qt
33
- from silx.gui.utils.testutils import TestCaseQt
34
- from tomwer.gui.control.volumeselectorwidget import VolumeSelectorWidget
35
- from tomwer.core.volume import EDFVolume, HDF5Volume
36
- import numpy
37
31
  import shutil
38
32
  import tempfile
33
+
34
+ import numpy
39
35
  import pytest
36
+ from silx.gui import qt
37
+ from silx.gui.utils.testutils import TestCaseQt
38
+
39
+ from tomwer.core.volume import EDFVolume, HDF5Volume
40
+ from tomwer.gui.control.volumeselectorwidget import VolumeSelectorWidget
41
+ from tomwer.tests.utils import skip_gui_test
40
42
 
41
43
 
42
44
  @pytest.mark.skipif(skip_gui_test(), reason="skip gui test")
@@ -30,11 +30,12 @@ __license__ = "MIT"
30
30
  __date__ = "12/07/2022"
31
31
 
32
32
 
33
+ import logging
34
+
33
35
  from tomwer.gui.control.datalist import VolumeList
34
36
  from tomwer.gui.qfolderdialog import QVolumeDialog
35
37
 
36
38
  from .selectorwidgetbase import _SelectorWidget
37
- import logging
38
39
 
39
40
  logger = logging.getLogger(__name__)
40
41
 
@@ -31,9 +31,10 @@ __date__ = "28/09/2020"
31
31
 
32
32
 
33
33
  from silx.gui import qt
34
+
35
+ from tomwer.core.scan.blissscan import BlissScan
34
36
  from tomwer.core.scan.edfscan import EDFTomoScan
35
37
  from tomwer.core.scan.hdf5scan import HDF5TomoScan
36
- from tomwer.core.scan.blissscan import BlissScan
37
38
 
38
39
 
39
40
  class DatasetGeneratorDialog(qt.QDialog):
@@ -30,9 +30,10 @@ __license__ = "MIT"
30
30
  __date__ = "30/09/2020"
31
31
 
32
32
 
33
- from silx.gui import qt
34
33
  import sys
35
34
 
35
+ from silx.gui import qt
36
+
36
37
 
37
38
  class ObjectInspector(qt.QWidget):
38
39
  def __init__(self, parent):
@@ -47,10 +48,8 @@ class ObjectInspector(qt.QWidget):
47
48
 
48
49
  def setObject(self, object):
49
50
  self.__model.clear()
50
- root_item = qt.QStandardItem("{}".format(str(object)))
51
- size_item = qt.QStandardItem(
52
- "{} (M bytes)".format(sys.getsizeof(object) * 10e-6)
53
- )
51
+ root_item = qt.QStandardItem(f"{str(object)}")
52
+ size_item = qt.QStandardItem(f"{sys.getsizeof(object) * 10e-6} (M bytes)")
54
53
  self.__model.invisibleRootItem().appendRow((root_item, size_item))
55
54
 
56
55
  def add_sub_elmts(parent_item, python_obj):
@@ -59,10 +58,10 @@ class ObjectInspector(qt.QWidget):
59
58
  if hasattr(object, elmt):
60
59
  children_obj = getattr(object, elmt)
61
60
  # TODO: check if is a property or is a function
62
- item = qt.QStandardItem("{}".format(elmt))
61
+ item = qt.QStandardItem(f"{elmt}")
63
62
  # TODO: add size
64
63
  size_item = qt.QStandardItem(
65
- "{} (M bytes)".format(sys.getsizeof(children_obj) * 10e-6)
64
+ f"{sys.getsizeof(children_obj) * 10e-6} (M bytes)"
66
65
  )
67
66
  parent_item.appendRow((item, size_item))
68
67
 
@@ -28,19 +28,20 @@ __license__ = "MIT"
28
28
  __date__ = "30/10/2020"
29
29
 
30
30
 
31
+ import logging
32
+ from typing import Union
33
+
31
34
  import h5py
32
35
  from silx.gui import qt
36
+ from silx.gui.dialog.DataFileDialog import DataFileDialog
37
+ from silx.io.url import DataUrl
33
38
  from silx.io.utils import h5py_read_dataset
34
39
  from tomoscan.esrf.scan.hdf5scan import ImageKey
35
- from silx.io.url import DataUrl
36
40
  from tomoscan.io import HDF5File
41
+
42
+ import tomwer.core.utils.nxtomoutils as nxtomo_utils
37
43
  from tomwer.core.scan.hdf5scan import HDF5TomoScan
38
- from silx.gui.dialog.DataFileDialog import DataFileDialog
39
44
  from tomwer.io.utils import get_default_directory
40
- import tomwer.core.utils.nxtomoutils as nxtomo_utils
41
-
42
- from typing import Union
43
- import logging
44
45
 
45
46
  _logger = logging.getLogger(__name__)
46
47
 
@@ -105,7 +106,7 @@ class _DarkOrFlatUrl(qt.QWidget):
105
106
 
106
107
  def setSerie(self, serie):
107
108
  type_name = self._type.name.lower().replace("_", " ")
108
- item_txt = "{} serie n°{}".format(type_name, serie)
109
+ item_txt = f"{type_name} serie n°{serie}"
109
110
  idx = self._optionsCB.findText(item_txt)
110
111
  if idx >= 0:
111
112
  self._optionsCB.setCurrentIndex(idx)
@@ -173,16 +174,16 @@ class _DarkOrFlatUrl(qt.QWidget):
173
174
  type_name = self._type.name.lower().replace("_", " ")
174
175
  series_indexes = list(range(n_serie))
175
176
  for i_serie in series_indexes:
176
- self._optionsCB.addItem("{} serie n°{}".format(type_name, i_serie))
177
+ self._optionsCB.addItem(f"{type_name} serie n°{i_serie}")
177
178
  # if this is a end url then set to the last found entry
178
179
  if self._when == "end":
179
180
  opt_idx = self._optionsCB.findText(
180
- "{} serie n°{}".format(type_name, series_indexes[-1])
181
+ f"{type_name} serie n°{series_indexes[-1]}"
181
182
  )
182
183
  else:
183
184
  # else set it to the first entry
184
185
  opt_idx = self._optionsCB.findText(
185
- "{} serie n°{}".format(type_name, series_indexes[0])
186
+ f"{type_name} serie n°{series_indexes[0]}"
186
187
  )
187
188
  if opt_idx >= 0:
188
189
  self._optionsCB.setCurrentIndex(opt_idx)
@@ -28,15 +28,17 @@ __license__ = "MIT"
28
28
  __date__ = "26/10/2020"
29
29
 
30
30
 
31
+ import functools
32
+ import logging
33
+ import weakref
34
+ from collections.abc import Iterable
35
+ from typing import Union
36
+
31
37
  from silx.gui import qt
38
+ from tomoscan.esrf.scan.hdf5scan import ImageKey as _ImageKey
39
+
32
40
  from tomwer.core.process.edit.imagekeyeditor import IMAGE_KEYS
33
- from typing import Union
34
41
  from tomwer.core.scan.hdf5scan import HDF5TomoScan
35
- from tomoscan.esrf.scan.hdf5scan import ImageKey as _ImageKey
36
- import weakref
37
- import functools
38
- from collections.abc import Iterable
39
- import logging
40
42
 
41
43
  _logger = logging.getLogger(__name__)
42
44
 
@@ -626,7 +628,9 @@ class _ImageKeyListFiltered(qt.QWidget):
626
628
 
627
629
  def setScan(self, scan):
628
630
  if not isinstance(scan, HDF5TomoScan):
629
- raise TypeError("scan should be an instance of {}" "".format(HDF5TomoScan))
631
+ raise TypeError(
632
+ f"scan should be an instance of {HDF5TomoScan}. {type(scan)} provided"
633
+ )
630
634
  self.__frames_modifications = {}
631
635
  self._scan = weakref.ref(scan)
632
636
  frames = scan.frames
@@ -659,11 +663,7 @@ class _FrameSelectionDialog(qt.QDialog):
659
663
  def setFrames(self, frames):
660
664
  item_texts = []
661
665
  for frame in frames:
662
- item_texts.append(
663
- "{index} ({image_key})".format(
664
- index=frame.index, image_key=frame.image_key.value
665
- )
666
- )
666
+ item_texts.append(f"{frame.index} ({frame.image_key.value})")
667
667
  self._listWidget.addItems(item_texts)
668
668
 
669
669
  def getSelectedFrameIndexes(self):
@@ -1,18 +1,19 @@
1
- import weakref
2
1
  import logging
3
- import numpy
2
+ import weakref
3
+ from typing import Optional
4
+
4
5
  import h5py
6
+ import numpy
5
7
  from silx.gui import qt
6
- from typing import Optional
7
- from tomwer.core.scan.hdf5scan import HDF5TomoScan
8
- from tomwer.gui.utils.unitsystem import MetricEntry
9
- from tomwer.gui.utils.scandescription import ScanNameLabelAndShape
8
+ from silx.io.utils import h5py_read_dataset
10
9
  from tomoscan.esrf.scan.hdf5scan import ImageKey
11
10
  from tomoscan.io import HDF5File
12
11
  from tomoscan.nexus.paths.nxtomo import get_paths as get_nexus_paths
13
- from silx.io.utils import h5py_read_dataset
14
12
  from tomoscan.scanbase import _FOV
15
13
 
14
+ from tomwer.core.scan.hdf5scan import HDF5TomoScan
15
+ from tomwer.gui.utils.scandescription import ScanNameLabelAndShape
16
+ from tomwer.gui.utils.unitsystem import MetricEntry
16
17
 
17
18
  _logger = logging.getLogger(__name__)
18
19
 
@@ -28,21 +28,22 @@ __license__ = "MIT"
28
28
  __date__ = "28/10/2020"
29
29
 
30
30
 
31
+ import shutil
32
+ import tempfile
33
+
34
+ import numpy
31
35
  import pytest
36
+ from nxtomomill.utils import add_dark_flat_nx_file
32
37
  from silx.gui import qt
33
38
  from silx.gui.utils.testutils import TestCaseQt
34
- from tomwer.tests.utils import skip_gui_test
35
- from tomwer.core.utils.scanutils import MockHDF5
36
- from tomwer.gui.edit.dkrfpatch import DarkRefPatchWidget
37
- from tomwer.gui.edit.dkrfpatch import _DarkOrFlatUrl
38
39
  from silx.io.url import DataUrl
39
- from tomoscan.esrf.scan.utils import get_data
40
40
  from tomoscan.esrf.scan.hdf5scan import ImageKey
41
- from nxtomomill.utils import add_dark_flat_nx_file
41
+ from tomoscan.esrf.scan.utils import get_data
42
+
42
43
  from tomwer.core.scan.hdf5scan import HDF5TomoScan
43
- import tempfile
44
- import shutil
45
- import numpy
44
+ from tomwer.core.utils.scanutils import MockHDF5
45
+ from tomwer.gui.edit.dkrfpatch import DarkRefPatchWidget, _DarkOrFlatUrl
46
+ from tomwer.tests.utils import skip_gui_test
46
47
 
47
48
 
48
49
  @pytest.mark.skipif(skip_gui_test(), reason="skip gui test")
@@ -28,18 +28,20 @@ __license__ = "MIT"
28
28
  __date__ = "28/10/2020"
29
29
 
30
30
 
31
+ import tempfile
32
+
33
+ import pytest
31
34
  from silx.gui import qt
32
- from silx.gui.utils.testutils import TestCaseQt, SignalListener
33
- from tomwer.tests.utils import skip_gui_test
35
+ from silx.gui.utils.testutils import SignalListener, TestCaseQt
36
+ from tomoscan.esrf.scan.hdf5scan import ImageKey
37
+
38
+ from tomwer.core.utils.scanutils import MockHDF5
34
39
  from tomwer.gui.edit.imagekeyeditor import (
35
40
  ImageKeyDialog,
36
41
  ImageKeyUpgraderWidget,
37
42
  _AddImageKeyUpgradeOperation,
38
43
  )
39
- from tomwer.core.utils.scanutils import MockHDF5
40
- from tomoscan.esrf.scan.hdf5scan import ImageKey
41
- import tempfile
42
- import pytest
44
+ from tomwer.tests.utils import skip_gui_test
43
45
 
44
46
 
45
47
  @pytest.mark.skipif(skip_gui_test(), reason="skip gui test")
@@ -1,15 +1,17 @@
1
1
  import os
2
- import pytest
2
+
3
3
  import numpy
4
- from tomoscan.scanbase import _FOV
4
+ import pytest
5
+ from nxtomomill.nexus.nxtomo import NXtomo
6
+ from silx.gui import qt
5
7
  from tomoscan.esrf.scan.hdf5scan import ImageKey
6
- from tomoscan.unitsystem.metricsystem import MetricSystem
8
+ from tomoscan.scanbase import _FOV
7
9
  from tomoscan.unitsystem.energysystem import EnergySI
10
+ from tomoscan.unitsystem.metricsystem import MetricSystem
11
+
8
12
  from tomwer.core.scan.hdf5scan import HDF5TomoScan
9
13
  from tomwer.gui.edit.nxtomoeditor import NXtomoEditor, _TranslationMetricEntry
10
- from nxtomomill.nexus.nxtomo import NXtomo
11
14
  from tomwer.tests.conftest import qtapp # noqa F401
12
- from silx.gui import qt
13
15
 
14
16
 
15
17
  @pytest.mark.parametrize("x_pixel_size", (None, 0.12))
tomwer/gui/icons.py CHANGED
@@ -32,14 +32,15 @@ __license__ = "MIT"
32
32
  __date__ = "06/09/2017"
33
33
 
34
34
 
35
- import os
36
35
  import logging
36
+ import os
37
37
  import weakref
38
+
38
39
  from silx.gui import qt
39
- import tomwer.resources
40
40
  from silx.utils import weakref as silxweakref
41
41
  from silx.utils.deprecation import deprecated
42
42
 
43
+ import tomwer.resources
43
44
 
44
45
  _logger = logging.getLogger(__name__)
45
46
  """Module logger"""
@@ -32,12 +32,13 @@ __license__ = "MIT"
32
32
  __date__ = "06/09/2017"
33
33
 
34
34
 
35
- import os
36
35
  import logging
36
+ import os
37
37
  import weakref
38
+
38
39
  from silx.gui import qt
39
- import tomwer.resources
40
40
 
41
+ import tomwer.resources
41
42
 
42
43
  _logger = logging.getLogger(__name__)
43
44
  """Module logger"""
@@ -31,11 +31,13 @@ __date__ = "06/08/2018"
31
31
 
32
32
  import functools
33
33
  import logging
34
+
34
35
  from silx.gui import qt
35
36
  from silx.io.url import DataUrl
37
+ from tomoscan.io import HDF5File
38
+
36
39
  from tomwer.core.scan.scanbase import TomwerScanBase
37
40
  from tomwer.synctools.imageloaderthread import ImageLoaderThread
38
- from tomoscan.io import HDF5File
39
41
 
40
42
  logger = logging.getLogger(__name__)
41
43
 
@@ -28,27 +28,29 @@ __author__ = ["H. Payno"]
28
28
  __license__ = "MIT"
29
29
  __date__ = "11/07/2022"
30
30
 
31
+ import logging
32
+ import os
33
+
34
+ import h5py
31
35
  from silx.gui import qt
36
+ from silx.gui.dialog.DataFileDialog import DataFileDialog
37
+ from silx.gui.utils import blockSignals
38
+ from silx.io.url import DataUrl
39
+ from tomoscan.esrf.volume.utils import (
40
+ get_most_common_extension as get_most_common_extension,
41
+ )
42
+ from tomoscan.esrf.volume.utils import guess_volumes as tomoscan_guess_volumes
32
43
  from tomoscan.volumebase import VolumeBase
44
+
33
45
  from tomwer.core.volume import (
34
46
  EDFVolume,
35
47
  HDF5Volume,
36
- TIFFVolume,
37
- MultiTIFFVolume,
38
48
  JP2KVolume,
49
+ MultiTIFFVolume,
39
50
  RawVolume,
51
+ TIFFVolume,
40
52
  )
41
53
  from tomwer.core.volume.volumefactory import VolumeFactory as Factory
42
- from silx.gui.dialog.DataFileDialog import DataFileDialog
43
- from tomoscan.esrf.volume.utils import (
44
- guess_volumes as tomoscan_guess_volumes,
45
- get_most_common_extension as get_most_common_extension,
46
- )
47
- from silx.gui.utils import blockSignals
48
- from silx.io.url import DataUrl
49
- import logging
50
- import h5py
51
- import os
52
54
 
53
55
  _logger = logging.getLogger()
54
56
 
@@ -27,14 +27,16 @@ __authors__ = ["v. Valls", "H. Payno"]
27
27
  __license__ = "MIT"
28
28
  __date__ = "26/02/2019"
29
29
 
30
+ import logging
31
+ import weakref
32
+
33
+ import numpy
34
+ from silx.gui import icons as silx_icons
30
35
  from silx.gui import qt
31
36
  from silx.gui.plot import CompareImages as _CompareImages
32
- from silx.gui import icons as silx_icons
33
- from tomwer.gui import icons as tomwer_icons
34
37
  from silx.gui.plot import tools
35
- import numpy
36
- import weakref
37
- import logging
38
+
39
+ from tomwer.gui import icons as tomwer_icons
38
40
 
39
41
  _logger = logging.getLogger(__name__)
40
42
 
@@ -378,9 +380,8 @@ class CompareImagesStatusBar(qt.QStatusBar):
378
380
  if not numpy.isclose(transform.sy, 1.0):
379
381
  strings.append("Scale y: %0.3f" % transform.sy)
380
382
  if not numpy.isclose(transform.rot, 0.0):
381
- strings.append(
382
- "Rotation: %0.3fdeg" % (transform.rot * 180 / numpy.pi)
383
- )
383
+ _rot = transform.rot * 180 / numpy.pi
384
+ strings.append(f"Rotation: {_rot:0.3f}deg")
384
385
  if strings == []:
385
386
  text = "No transformation"
386
387
  else:
@@ -1,2 +1,2 @@
1
- from .radioaxis import RadioAxisWindow # noqa F401
2
1
  from .axis import AxisWindow # noqa F401
2
+ from .radioaxis import RadioAxisWindow # noqa F401
@@ -31,17 +31,19 @@ __license__ = "MIT"
31
31
  __date__ = "14/10/2019"
32
32
 
33
33
 
34
+ import logging
34
35
  from typing import Optional
36
+
35
37
  from silx.gui import qt
38
+ from silx.utils.deprecation import deprecated
36
39
 
37
- from tomwer.core.scan.scanbase import TomwerScanBase
38
- from .radioaxis import RadioAxisWindow
39
- from ...utils.scandescription import ScanNameLabelAndShape
40
40
  from tomwer.core.process.reconstruction.axis.mode import AxisMode
41
+ from tomwer.core.scan.scanbase import TomwerScanBase
41
42
  from tomwer.gui.utils.buttons import PadlockButton
42
43
  from tomwer.synctools.axis import QAxisRP
43
- from silx.utils.deprecation import deprecated
44
- import logging
44
+
45
+ from ...utils.scandescription import ScanNameLabelAndShape
46
+ from .radioaxis import RadioAxisWindow
45
47
 
46
48
  _logger = logging.getLogger(__file__)
47
49
 
@@ -597,11 +599,11 @@ class _PositionInfoWidget(qt.QWidget):
597
599
  elif isinstance(relative_cor, str):
598
600
  self._relativePositionLabel.setText(relative_cor)
599
601
  else:
600
- self._relativePositionLabel.setText("{:.3f}".format(relative_cor))
602
+ self._relativePositionLabel.setText(f"{relative_cor:.3f}")
601
603
  if abs_cor is None:
602
604
  self._absolutePositionLabel.setText("?")
603
605
  else:
604
- self._absolutePositionLabel.setText("{:.3f}".format(abs_cor))
606
+ self._absolutePositionLabel.setText(f"{abs_cor:.3f}")
605
607
 
606
608
  def _updateAbsolutePosition(self, width):
607
609
  rel_value = self._relativePositionLabel.text()
@@ -30,33 +30,35 @@ __authors__ = ["C. Nemoz", "H. Payno"]
30
30
  __license__ = "MIT"
31
31
  __date__ = "25/02/2019"
32
32
 
33
- from bisect import bisect_left
34
- from silx.gui import qt
35
- import logging
36
- from tomwer.core.utils import image
37
- import numpy
38
33
  import enum
34
+ import logging
39
35
  import os
40
- from tomwer.core.scan.scanbase import TomwerScanBase
41
- from tomwer.core.scan.scanfactory import ScanFactory
42
- from tomwer.gui.utils.qt_utils import block_signals
43
- from tomwer.synctools.axis import QAxisRP
36
+ from bisect import bisect_left
37
+ from typing import Optional, Union
38
+
39
+ import numpy
40
+ import scipy.signal
41
+ from silx.gui import qt
42
+ from silx.io.url import DataUrl
43
+ from silx.utils.deprecation import deprecated
44
+
44
45
  from tomwer.core.process.reconstruction.axis import mode as axis_mode
45
46
  from tomwer.core.process.reconstruction.axis.anglemode import CorAngleMode
46
47
  from tomwer.core.process.reconstruction.axis.params import (
47
- AxisCalculationInput,
48
- DEFAULT_CMP_THETA,
49
48
  DEFAULT_CMP_N_SUBSAMPLING_Y,
50
49
  DEFAULT_CMP_OVERSAMPLING,
51
50
  DEFAULT_CMP_TAKE_LOG,
51
+ DEFAULT_CMP_THETA,
52
+ AxisCalculationInput,
52
53
  )
53
- from silx.io.url import DataUrl
54
- import scipy.signal
55
- from .CompareImages import CompareImages
54
+ from tomwer.core.scan.scanbase import TomwerScanBase
55
+ from tomwer.core.scan.scanfactory import ScanFactory
56
+ from tomwer.core.utils import image
56
57
  from tomwer.gui.utils.buttons import PadlockButton
57
- from silx.utils.deprecation import deprecated
58
- from typing import Union
59
- from typing import Optional
58
+ from tomwer.gui.utils.qt_utils import block_signals
59
+ from tomwer.synctools.axis import QAxisRP
60
+
61
+ from .CompareImages import CompareImages
60
62
 
61
63
  _logger = logging.getLogger(__name__)
62
64
 
@@ -283,8 +285,7 @@ class RadioAxisWindow(qt.QMainWindow):
283
285
  raise ValueError("Fail to discover a valid scan in %s" % scan)
284
286
  elif not isinstance(_scan, TomwerScanBase):
285
287
  raise ValueError(
286
- "type of %s (%s) is invalid, scan should be a "
287
- "file/dir path or an instance of ScanBase" % (scan, type(scan))
288
+ f"type of {scan} ({type(scan)}) is invalid, scan should be a file/dir path or an instance of ScanBase"
288
289
  )
289
290
  assert isinstance(_scan, TomwerScanBase)
290
291
 
@@ -376,7 +377,7 @@ class RadioAxisWindow(qt.QMainWindow):
376
377
  if _imgA.shape != _imgB.shape:
377
378
  _logger.error(
378
379
  "The two provided images have incoherent shapes "
379
- "(%s vs %s)" % (_imgA.shape, _imgB.shape)
380
+ f"({_imgA.shape} vs {_imgB.shape})"
380
381
  )
381
382
  elif _imgA.ndim != 2:
382
383
  _logger.error("Image shape are not 2 dimensional")
@@ -1038,7 +1039,7 @@ class _ROIDefinition(qt.QWidget):
1038
1039
  self._xOriginSB.setValue(x_origin)
1039
1040
  self._yOriginSB.setValue(y_origin)
1040
1041
  except Exception:
1041
- _logger.warning("unable to determine origin for {}".format(str(scan)))
1042
+ _logger.warning(f"unable to determine origin for {scan}")
1042
1043
 
1043
1044
 
1044
1045
  @enum.unique
@@ -1547,8 +1548,7 @@ class AxisTabWidget(qt.QTabWidget):
1547
1548
  current_mode = self.getMode()
1548
1549
  if current_mode not in axis_mode._VALID_INPUTS:
1549
1550
  raise ValueError(
1550
- "valid input should have been defined for the "
1551
- "mode {}".format(current_mode.value)
1551
+ f"valid input should have been defined for the mode {current_mode.value}"
1552
1552
  )
1553
1553
  else:
1554
1554
  valid_inputs = axis_mode._VALID_INPUTS[current_mode]
@@ -2017,16 +2017,16 @@ class _SliceSelector(qt.QWidget):
2017
2017
  else:
2018
2018
  return self._otherSB.value()
2019
2019
 
2020
- def setSlice(self, slice):
2021
- if slice is None:
2020
+ def setSlice(self, slice_):
2021
+ if slice_ is None:
2022
2022
  return
2023
- if slice == "middle":
2023
+ if slice_ == "middle":
2024
2024
  idx = self._modeCB.findText("middle")
2025
2025
  self._modeCB.setCurrentIndex(idx)
2026
2026
  else:
2027
2027
  idx = self._modeCB.findText("other")
2028
2028
  self._modeCB.setCurrentIndex(idx)
2029
- self._otherSB.setValue(slice)
2029
+ self._otherSB.setValue(slice_)
2030
2030
  self.sigChanged.emit()
2031
2031
 
2032
2032
  def getMode(self):
@@ -2236,15 +2236,13 @@ class _InputWidget(qt.QWidget):
2236
2236
  axis_mode._InputType.from_value(mode)
2237
2237
  except Exception:
2238
2238
  raise ValueError(
2239
- "mode {} should be an instance of {}".format(
2240
- mode, axis_mode._InputType
2241
- )
2239
+ f"mode {mode} should be an instance of {axis_mode._InputType}"
2242
2240
  )
2243
2241
  if len(modes) == 2:
2244
2242
  self._sinogramGB.setEnabled(True)
2245
2243
  self._radioGB.setEnabled(True)
2246
2244
  elif len(modes) > 2:
2247
- raise ValueError("invalid input {}".format(modes))
2245
+ raise ValueError(f"invalid input {modes}")
2248
2246
  elif len(modes) < 0:
2249
2247
  raise ValueError("modes is empty")
2250
2248
  else:
@@ -2537,7 +2535,7 @@ class _ManualFramesSelection(qt.QWidget):
2537
2535
 
2538
2536
  @staticmethod
2539
2537
  def _angleToStr(angle: float) -> str:
2540
- return "{:0.3f}".format(float(angle))
2538
+ return f"{float(angle):0.3f}"
2541
2539
 
2542
2540
  def setScan(self, scan: Union[TomwerScanBase, None]) -> None:
2543
2541
  self._anglesAvailable.clear()
@@ -31,14 +31,15 @@ __date__ = "13/08/2021"
31
31
  import logging
32
32
  import shutil
33
33
  from typing import Union
34
+
34
35
  from silx.gui import qt
36
+ from silx.gui.dialog.DataFileDialog import DataFileDialog
37
+ from silx.io.url import DataUrl
38
+
39
+ from tomwer.core import settings, utils
35
40
  from tomwer.core.process.reconstruction.darkref.darkrefscopy import DarkRefsCopy
36
- from tomwer.io.utils import get_default_directory
37
- from tomwer.core import settings
38
- from tomwer.core import utils
39
41
  from tomwer.gui.reconstruction.darkref.darkrefwidget import DarkRefWidget
40
- from silx.io.url import DataUrl
41
- from silx.gui.dialog.DataFileDialog import DataFileDialog
42
+ from tomwer.io.utils import get_default_directory
42
43
 
43
44
  _logger = logging.getLogger(__name__)
44
45
 
@@ -28,10 +28,12 @@ __license__ = "MIT"
28
28
  __date__ = "10/01/2018"
29
29
 
30
30
 
31
- from silx.gui import qt
32
31
  import logging
33
- from tomwer.core.process.reconstruction.darkref.darkrefs import DarkRefs
32
+
33
+ from silx.gui import qt
34
+
34
35
  from tomwer.core.process.reconstruction.darkref import params as dkrf
36
+ from tomwer.core.process.reconstruction.darkref.darkrefs import DarkRefs
35
37
  from tomwer.core.scan.scanbase import TomwerScanBase
36
38
  from tomwer.gui.utils.sandboxes import RegularExpressionSandBox
37
39
  from tomwer.synctools.darkref import QDKRFRP
@@ -28,10 +28,12 @@ __license__ = "MIT"
28
28
  __date__ = "01/06/2018"
29
29
 
30
30
 
31
+ import logging
32
+
31
33
  from silx.gui import qt
34
+
32
35
  from tomwer.gui import icons
33
36
  from tomwer.gui.utils.buttons import PadlockButton
34
- import logging
35
37
 
36
38
  _logger = logging.getLogger()
37
39