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
@@ -27,19 +27,19 @@ __authors__ = ["H. Payno"]
27
27
  __license__ = "MIT"
28
28
  __date__ = "09/06/2020"
29
29
 
30
- import time
30
+ import getpass
31
31
  import logging
32
+ import socket
32
33
  import threading
34
+ import time
33
35
  import typing
34
- from silx.utils.enum import Enum as _Enum
35
36
  from multiprocessing import Process
36
- from werkzeug.wrappers import Request, Response
37
- from werkzeug.serving import run_simple
37
+
38
38
  from jsonrpc import JSONRPCResponseManager, dispatcher
39
- import socket
40
39
  from psutil import process_iter
41
- import getpass
42
-
40
+ from silx.utils.enum import Enum as _Enum
41
+ from werkzeug.serving import run_simple
42
+ from werkzeug.wrappers import Request, Response
43
43
 
44
44
  _logger = logging.getLogger(__name__)
45
45
 
@@ -177,20 +177,18 @@ class _BaseDataListenerThread:
177
177
  self.scan_added(acquisition=self._current_sequence, scan_number=scan_number)
178
178
 
179
179
  def scan_added(self, acquisition: BlissAcquisition, scan_number: int):
180
- print("scan {} started".format(scan_number))
180
+ print(f"scan {scan_number} started")
181
181
 
182
182
  def _rpc_scan_ended(self, scan_number):
183
183
  if self._current_sequence is not None:
184
184
  self.scan_ended(acquisition=self._current_sequence, scan_number=scan_number)
185
185
 
186
186
  def scan_ended(self, acquisition: BlissAcquisition, scan_number):
187
- print("scan {} ended".format(scan_number))
187
+ print(f"scan {scan_number} ended")
188
188
 
189
189
  def _rpc_sequence_ended(self, saving_file, sequence_scan_number, success: bool):
190
190
  if success is False:
191
- _logger.warning(
192
- "sequence {}@{} failed".format(sequence_scan_number, saving_file)
193
- )
191
+ _logger.warning(f"sequence {sequence_scan_number}@{saving_file} failed")
194
192
  if self._current_sequence is not None:
195
193
  try:
196
194
  self.sequence_failed(self._current_sequence)
@@ -212,23 +210,18 @@ class _BaseDataListenerThread:
212
210
  )
213
211
 
214
212
  _logger.warning(
215
- "End of {} detected but does not fit the "
216
- "current acquisition {}".format(name, name_current)
213
+ f"End of {name} detected but does not fit the current acquisition {name_current}"
217
214
  )
218
215
 
219
216
  def sequence_ended(self, acquisition: BlissAcquisition):
220
217
  """callback when a sequence end (with success)"""
221
218
  print(
222
- "sequence {}@{} ended. Succeed: {}".format(
223
- acquisition.entry, acquisition.master_file, acquisition.status
224
- )
219
+ f"sequence {acquisition.entry}@{acquisition.master_file} ended. Succeed: {acquisition.status}"
225
220
  )
226
221
 
227
222
  def sequence_failed(self, acquisition: BlissAcquisition):
228
223
  """callback when a sequence fails (probably canceled)"""
229
- print(
230
- "sequence {}@{} failed".format(acquisition.entry, acquisition.master_file)
231
- )
224
+ print(f"sequence {acquisition.entry}@{acquisition.master_file} failed")
232
225
 
233
226
  @Request.application
234
227
  def application(self, request):
@@ -242,17 +235,17 @@ class _BaseDataListenerThread:
242
235
 
243
236
  def start(self) -> None:
244
237
  self._stop = False
245
- _logger.info("launch rpc server on {}:{}".format(self._host, self._port))
238
+ _logger.info(f"launch rpc server on {self._host}:{self._port}")
246
239
  self._server = Process(
247
240
  target=run_simple, args=(self._host, self._port, self.application)
248
241
  )
249
242
  self._server.start()
250
- _logger.info("launcher server with pid {}".format(self._server.pid))
243
+ _logger.info(f"launcher server with pid {self._server.pid}")
251
244
 
252
245
  def stop(self):
253
246
  self._stop = True
254
247
  if self._server is not None:
255
- _logger.info("stop rpc server on {}:{}".format(self._host, self._port))
248
+ _logger.info(f"stop rpc server on {self._host}:{self._port}")
256
249
  self._server.terminate()
257
250
  self._server.join(_BaseDataListenerThread._JOIN_TIMEOUT)
258
251
  self._server = None
@@ -290,9 +283,7 @@ def send_signal_to_local_rpc_servers(signal, port, extended_find=True):
290
283
  "tomwer",
291
284
  "orange-canvas",
292
285
  ):
293
- _logger.warning(
294
- "send {} signal to pid {}" "".format(signal, proc.pid)
295
- )
286
+ _logger.warning(f"send {signal} signal to pid {proc.pid}")
296
287
  proc.send_signal(signal)
297
288
  found = True
298
289
  return
@@ -308,8 +299,7 @@ def send_signal_to_local_rpc_servers(signal, port, extended_find=True):
308
299
  # make sure we will kill the correct process
309
300
  if conns.laddr.port == port:
310
301
  _logger.warning(
311
- "process pid: {} - {} seems to be one occupying port {}"
312
- "".format(proc.pid, proc.name(), port)
302
+ f"process pid: {proc.pid} - {proc.name()} seems to be one occupying port {port}"
313
303
  )
314
304
  return
315
305
  except (psutil.PermissionError, psutil.AccessDenied):
@@ -30,25 +30,28 @@ __authors__ = ["H. Payno"]
30
30
  __license__ = "MIT"
31
31
  __date__ = "30/09/2019"
32
32
 
33
+ import logging
33
34
  import os
34
- import time
35
35
  import threading
36
- from tomwer.core.scan.blissscan import BlissScan
37
- from tomwer.core.signal import Signal
38
- from tomwer.core.process.utils import LastReceivedScansDict
39
- from tomwer.core.process.task import BaseProcessInfo
36
+ import time
37
+ from typing import Optional
38
+
39
+ from ewokscore.task import Task as EwoksTask
40
+
40
41
  from tomwer.core.process.control.datawatcher.datawatcherobserver import (
41
42
  _DataWatcherObserver,
42
43
  _OngoingObservation,
43
44
  )
44
- from typing import Optional
45
+ from tomwer.core.process.task import BaseProcessInfo
46
+ from tomwer.core.process.utils import LastReceivedScansDict
47
+ from tomwer.core.scan.blissscan import BlissScan
48
+ from tomwer.core.scan.scanbase import TomwerScanBase
45
49
  from tomwer.core.scan.scanfactory import ScanFactory
46
- from tomwer.core.settings import get_lbsram_path, get_dest_path
50
+ from tomwer.core.settings import get_dest_path, get_lbsram_path
51
+ from tomwer.core.signal import Signal
47
52
  from tomwer.core.utils import logconfig
53
+
48
54
  from .status import * # noqa F403
49
- import logging
50
- from tomwer.core.scan.scanbase import TomwerScanBase
51
- from ewokscore.task import Task as EwoksTask
52
55
 
53
56
  logger = logging.getLogger(__name__)
54
57
 
@@ -284,8 +287,8 @@ class _DataWatcher(BaseProcessInfo):
284
287
 
285
288
  return True
286
289
 
287
- def _messageNotDir(self, dir):
288
- message = "Given path (%s) isn't a directory." % dir
290
+ def _messageNotDir(self, dir_):
291
+ message = "Given path (%s) isn't a directory." % dir_
289
292
  logger.warning(message, extra={logconfig.DOC_TITLE: self._scheme_title})
290
293
 
291
294
  def _createDataWatcher(self):
@@ -33,24 +33,27 @@ __license__ = "MIT"
33
33
  __date__ = "09/02/2017"
34
34
 
35
35
 
36
- from fnmatch import fnmatch
36
+ import logging
37
37
  import os
38
38
  import threading
39
+ import time
39
40
  from collections import OrderedDict
41
+ from fnmatch import fnmatch
40
42
  from typing import Optional
43
+
44
+ import h5py
45
+
41
46
  from tomwer.core.process.control.datawatcher import status as datawatcherstatus
47
+ from tomwer.core.scan.edfscan import EDFTomoScan
48
+ from tomwer.core.utils.threads import LoopThread
49
+
50
+ from .datawatcherprocess import _DataWatchEmpty
42
51
  from .edfdwprocess import (
43
52
  _DataWatcherProcessParseInfo,
44
53
  _DataWatcherProcessUserFilePattern,
45
54
  _DataWatcherProcessXML,
46
55
  )
47
- from .hdf5dwprocess import _DataWatcherProcessHDF5, _BlissScanWatcherProcess
48
- from .datawatcherprocess import _DataWatchEmpty
49
- from tomwer.core.utils.threads import LoopThread
50
- import logging
51
- from tomwer.core.scan.edfscan import EDFTomoScan
52
- import time
53
- import h5py
56
+ from .hdf5dwprocess import _BlissScanWatcherProcess, _DataWatcherProcessHDF5
54
57
 
55
58
  logger = logging.getLogger(__name__)
56
59
 
@@ -31,13 +31,15 @@ __license__ = "MIT"
31
31
  __date__ = "14/10/2016"
32
32
 
33
33
 
34
- from glob import glob
35
- import subprocess
36
- from tomwer.core.signal import Signal
37
34
  import logging
35
+ import os
36
+ import subprocess
37
+ from glob import glob
38
+
38
39
  from tomwer.core.scan.edfscan import EDFTomoScan
40
+ from tomwer.core.signal import Signal
41
+
39
42
  from .status import OBSERVATION_STATUS
40
- import os
41
43
 
42
44
  logger = logging.getLogger(__name__)
43
45
 
@@ -168,7 +170,7 @@ class _DataWatcherProcess:
168
170
  if self.RootDir.startswith(self.srcPattern):
169
171
  source = os.path.join(self.RootDir, self.parsing_dir)
170
172
  target = source.replace(self.srcPattern, self.destPattern, 1)
171
- info = "Start synchronization between %s and %s" % (source, target)
173
+ info = f"Start synchronization between {source} and {target}"
172
174
  self.sigNewInformation.emit(info)
173
175
 
174
176
  target_dirname = os.path.dirname(target)
@@ -31,14 +31,15 @@ __license__ = "MIT"
31
31
  __date__ = "30/09/2019"
32
32
 
33
33
 
34
- from .datawatcherprocess import _DataWatcherProcess
35
34
  import logging
36
35
  import os
37
36
  import shutil
38
- from tomwer.core.scan.edfscan import EDFTomoScan
39
- from subprocess import getstatusoutput as myux
40
37
  from glob import glob
41
38
 
39
+ from tomwer.core.scan.edfscan import EDFTomoScan
40
+
41
+ from .datawatcherprocess import _DataWatcherProcess
42
+
42
43
  _logger = logging.getLogger(__name__)
43
44
  try:
44
45
  from tomwer.synctools.rsyncmanager import RSyncManager
@@ -49,17 +50,6 @@ except ImportError:
49
50
  has_rsync = True
50
51
 
51
52
 
52
- def get_dir_size(dir):
53
- if not os.path.isdir(dir):
54
- err = "%s is not a directory, can't get size" % dir
55
- raise ValueError(err)
56
- else:
57
- aux = myux("du -ms " + dir.replace(" ", "\ ")) # noqa W605
58
- if len(aux) < 2:
59
- return 0
60
- return float((aux[1].split("\t"))[0])
61
-
62
-
63
53
  def get_info_val(lines, key):
64
54
  r = range(len(lines))
65
55
  key = key + "="
@@ -97,7 +87,7 @@ class _DataWatcherEDFProcess(_DataWatcherProcess):
97
87
  def _removeAcquisition(self, scanID, reason):
98
88
  if os.path.exists(scanID) and os.path.isdir(scanID):
99
89
  if self._removed is None:
100
- _logger.info("removing folder %s because %s" % (scanID, reason))
90
+ _logger.info(f"removing folder {scanID} because {reason}")
101
91
  if has_rsync:
102
92
  RSyncManager().removeDir(scanID)
103
93
  # avoid multiple removal as removal is asynchronous and might
@@ -30,10 +30,12 @@ __authors__ = ["C. Nemoz", "H. Payno"]
30
30
  __license__ = "MIT"
31
31
  __date__ = "30/09/2019"
32
32
 
33
- from .datawatcherprocess import _DataWatcherProcess
34
33
  import logging
34
+
35
35
  import h5py
36
36
 
37
+ from .datawatcherprocess import _DataWatcherProcess
38
+
37
39
  _logger = logging.getLogger(__name__)
38
40
 
39
41
 
@@ -73,3 +73,5 @@ BLISS_SCAN_END = "bliss scan - end_time dataset"
73
73
 
74
74
 
75
75
  NXtomo_END = "already converted NXtomo"
76
+
77
+ EDF_SCAN_END = "Any EDF scan"
@@ -28,15 +28,16 @@ __license__ = "MIT"
28
28
  __date__ = "30/07/2020"
29
29
 
30
30
 
31
- from tomwer.core.utils.scanutils import format_output_location
32
- from tomwer.core.process.task import TaskWithProgress
33
- from tomwer.core.scan.hdf5scan import HDF5TomoScan
31
+ import logging
32
+ import os
33
+
34
34
  from nxtomomill import converter as nxtomomill_converter
35
- from nxtomomill.io.config import TomoHDF5Config as HDF5Config
36
35
  from nxtomomill.io.config import TomoEDFConfig as EDFConfig
36
+ from nxtomomill.io.config import TomoHDF5Config as HDF5Config
37
37
 
38
- import os
39
- import logging
38
+ from tomwer.core.process.task import TaskWithProgress
39
+ from tomwer.core.scan.hdf5scan import HDF5TomoScan
40
+ from tomwer.core.utils.scanutils import format_output_location
40
41
 
41
42
  _logger = logging.getLogger(__name__)
42
43
 
@@ -31,9 +31,10 @@ __license__ = "MIT"
31
31
  __date__ = "05/07/2017"
32
32
 
33
33
 
34
+ import logging
35
+
34
36
  from tomwer.core.process.task import Task
35
37
  from tomwer.core.utils.scanutils import data_identifier_to_scan
36
- import logging
37
38
 
38
39
  logger = logging.getLogger(__name__)
39
40
 
@@ -1,4 +1,5 @@
1
1
  from ewokscore.task import Task as EwoksTask
2
+
2
3
  from tomwer.core.utils.scanutils import data_identifier_to_scan
3
4
 
4
5
 
@@ -28,24 +28,24 @@ __license__ = "MIT"
28
28
  __date__ = "05/07/2017"
29
29
 
30
30
 
31
+ import fnmatch
32
+ import logging
31
33
  import os
32
34
  import shutil
33
- import fnmatch
34
35
 
35
- from tomwer.core.process.task import Task
36
- from tomwer.core.utils.scanutils import data_identifier_to_scan
37
- from tomwer.core.scan.scanfactory import ScanFactory
38
- from tomwer.core.settings import get_lbsram_path, get_dest_path
36
+ import tomwer.version
39
37
  from tomwer.core.process.reconstruction.nabu.settings import NABU_CFG_FILE_FOLDER
40
38
  from tomwer.core.process.reconstruction.nabu.utils import update_cfg_file_after_transfer
41
- from tomwer.core.signal import Signal
42
- from tomwer.core.utils import logconfig, rebaseParFile
43
- import logging
44
- from tomwer.core.scan.scanbase import TomwerScanBase
39
+ from tomwer.core.process.task import Task
45
40
  from tomwer.core.scan.edfscan import EDFTomoScan
46
41
  from tomwer.core.scan.hdf5scan import HDF5TomoScan
42
+ from tomwer.core.scan.scanbase import TomwerScanBase
43
+ from tomwer.core.scan.scanfactory import ScanFactory
44
+ from tomwer.core.settings import get_dest_path, get_lbsram_path
45
+ from tomwer.core.signal import Signal
46
+ from tomwer.core.utils import logconfig, rebaseParFile
47
+ from tomwer.core.utils.scanutils import data_identifier_to_scan
47
48
  from tomwer.io.utils import get_linked_files_with_entry
48
- import tomwer.version
49
49
 
50
50
  logger = logging.getLogger(__name__)
51
51
 
@@ -521,7 +521,7 @@ class ScanTransfer(Task, input_names=("data",), output_names=("data",)):
521
521
  configuration=None,
522
522
  )
523
523
  logger.processSucceed(
524
- "transfer succeed of {} to {}".format(str(input_scan), str(output_scan)),
524
+ f"transfer succeed of {input_scan} to {output_scan}",
525
525
  extra={
526
526
  logconfig.DOC_TITLE: self._scheme_title,
527
527
  logconfig.FROM: str(input_scan),
@@ -646,7 +646,7 @@ class ScanTransfer(Task, input_names=("data",), output_names=("data",)):
646
646
  print("### copying files ", scanID, " to ", outputdir)
647
647
  print("### ...")
648
648
 
649
- info = "start moving folder from %s to %s" % (scanID, outputdir)
649
+ info = f"start moving folder from {scanID} to {outputdir}"
650
650
  logger.processStarted(info, extra={logconfig.DOC_TITLE: self._scheme_title})
651
651
 
652
652
  def _signalCopyFailed(self):
@@ -27,16 +27,17 @@ __authors__ = ["H. Payno"]
27
27
  __license__ = "MIT"
28
28
  __date__ = "18/06/2017"
29
29
 
30
- from tomwer.core.signal import Signal
31
- from tomwer.core import settings
32
- from tomwer.core import utils
30
+ import logging
31
+
32
+ from ewokscore.task import Task as EwoksTask
33
+
34
+ from tomwer.core import settings, utils
33
35
  from tomwer.core.process.task import BaseProcessInfo
36
+ from tomwer.core.scan.scanbase import TomwerScanBase, _TomwerBaseDock
34
37
  from tomwer.core.scan.scanfactory import ScanFactory
38
+ from tomwer.core.signal import Signal
35
39
  from tomwer.core.utils import logconfig
36
40
  from tomwer.core.utils.scanutils import data_identifier_to_scan
37
- import logging
38
- from tomwer.core.scan.scanbase import TomwerScanBase, _TomwerBaseDock
39
- from ewokscore.task import Task as EwoksTask
40
41
 
41
42
  logger = logging.getLogger(__name__)
42
43
 
@@ -28,13 +28,14 @@ __license__ = "MIT"
28
28
  __date__ = "16/06/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.control.volumesymlink import VolumeSymbolicLinkProcess
33
- from tomwer.core.utils.scanutils import MockEDF
34
37
  from tomwer.core.scan.edfscan import EDFTomoScan
35
- import tempfile
36
- import shutil
37
- import os
38
+ from tomwer.core.utils.scanutils import MockEDF
38
39
 
39
40
 
40
41
  class TestVolumeSymbolicLink(unittest.TestCase):
@@ -28,12 +28,13 @@ __license__ = "MIT"
28
28
  __date__ = "12/12/2018"
29
29
 
30
30
 
31
+ import logging
32
+ import time
33
+
31
34
  from tomwer.core.process.task import Task
32
35
  from tomwer.core.scan.scanbase import TomwerScanBase
33
36
  from tomwer.core.scan.scanfactory import ScanFactory
34
37
  from tomwer.core.utils.scanutils import data_identifier_to_scan
35
- import time
36
- import logging
37
38
 
38
39
  _logger = logging.getLogger(__name__)
39
40
 
@@ -74,8 +75,7 @@ class Timer(Task, input_names=("data",), output_names=("data",)):
74
75
  scan = scan
75
76
  if not isinstance(scan, TomwerScanBase):
76
77
  raise TypeError(
77
- "scan is expected to be a dict or an instance "
78
- "of TomwerScanBase. Not {}".format(type(scan))
78
+ f"scan is expected to be a dict or an instance of TomwerScanBase. Not {type(scan)}"
79
79
  )
80
80
  time.sleep(self.waiting_time)
81
81
  if self._return_dict:
@@ -1,4 +1,5 @@
1
1
  from ewokscore.task import Task as EwoksTask
2
+
2
3
  from tomwer.core.utils.scanutils import data_identifier_to_scan
3
4
 
4
5
 
@@ -29,16 +29,18 @@ __date__ = "16/11/2020"
29
29
 
30
30
 
31
31
  import logging
32
- from tomwer.core.scan.scanbase import TomwerScanBase
32
+ import os
33
+
34
+ from silx.utils.enum import Enum as _Enum
33
35
  from tomoscan.factory import Factory
34
36
  from tomoscan.volumebase import VolumeBase
37
+
38
+ import tomwer.version
35
39
  from tomwer.core.process.task import Task
40
+ from tomwer.core.scan.scanbase import TomwerScanBase
36
41
  from tomwer.core.scan.scanfactory import ScanFactory
37
42
  from tomwer.core.utils.scanutils import data_identifier_to_scan
38
- from silx.utils.enum import Enum as _Enum
39
43
  from tomwer.utils import docstring
40
- import tomwer.version
41
- import os
42
44
 
43
45
  _logger = logging.getLogger(__name__)
44
46
 
@@ -128,8 +130,7 @@ class VolumeSymbolicLinkProcess(Task, input_names=("data",), output_names=("data
128
130
  return
129
131
  if not isinstance(scan, TomwerScanBase):
130
132
  raise TypeError(
131
- "scan is expected to be a dict or an instance "
132
- "of TomwerScanBase. Not {}".format(type(scan))
133
+ f"scan is expected to be a dict or an instance of TomwerScanBase. Not {type(scan)}"
133
134
  )
134
135
 
135
136
  if self._output_type is OutputType.STATIC:
@@ -150,9 +151,7 @@ class VolumeSymbolicLinkProcess(Task, input_names=("data",), output_names=("data
150
151
  os.path.join(output_folder, self._output_type.value)
151
152
  )
152
153
  else:
153
- raise ValueError(
154
- "output type {} is not managed".format(self._output_type.value)
155
- )
154
+ raise ValueError(f"output type {self._output_type.value} is not managed")
156
155
  create_volume_symbolic_link(scan=scan, output_folder=output_folder)
157
156
  self.outputs.data = scan
158
157
 
@@ -28,14 +28,15 @@ __license__ = "MIT"
28
28
  __date__ = "04/11/2020"
29
29
 
30
30
 
31
- from tomwer.core.scan.scanbase import TomwerScanBase
32
- from tomwer.core.scan.hdf5scan import HDF5TomoScan
33
- from tomwer.core.utils.scanutils import data_identifier_to_scan
31
+ import nxtomomill.version
34
32
  from nxtomomill.utils import add_dark_flat_nx_file
33
+ from silx.io.url import DataUrl
34
+
35
35
  from tomwer.core.process.task import Task
36
+ from tomwer.core.scan.hdf5scan import HDF5TomoScan
37
+ from tomwer.core.scan.scanbase import TomwerScanBase
36
38
  from tomwer.core.scan.scanfactory import ScanFactory
37
- from silx.io.url import DataUrl
38
- import nxtomomill.version
39
+ from tomwer.core.utils.scanutils import data_identifier_to_scan
39
40
 
40
41
 
41
42
  def apply_dark_flat_patch(scan: HDF5TomoScan, config: dict) -> TomwerScanBase:
@@ -47,8 +48,7 @@ def apply_dark_flat_patch(scan: HDF5TomoScan, config: dict) -> TomwerScanBase:
47
48
  """
48
49
  if not isinstance(scan, HDF5TomoScan):
49
50
  raise ValueError(
50
- "Dark and flat patch only manage HDF5TomoScan and "
51
- "not {}".format(type(scan))
51
+ f"Dark and flat patch only manage HDF5TomoScan and not {type(scan)}"
52
52
  )
53
53
  if config is None:
54
54
  return scan
@@ -79,13 +79,10 @@ class DarkFlatPatch(Task, input_names=("data",), output_names=("data",)):
79
79
  return
80
80
  if not isinstance(scan, TomwerScanBase):
81
81
  raise TypeError(
82
- "scan is expected to be a dict or an instance "
83
- "of TomwerScanBase. Not {}".format(type(scan))
82
+ f"scan is expected to be a dict or an instance of TomwerScanBase. Not {type(scan)}"
84
83
  )
85
84
  if not isinstance(scan, HDF5TomoScan):
86
- raise ValueError(
87
- "input type of {}: {} is not managed" "".format(scan, type(scan))
88
- )
85
+ raise ValueError(f"input type of {scan}: {type(scan)} is not managed")
89
86
 
90
87
  config = self.get_configuration()
91
88
  apply_dark_flat_patch(scan=scan, config=config)
@@ -28,16 +28,18 @@ __license__ = "MIT"
28
28
  __date__ = "26/10/2020"
29
29
 
30
30
 
31
+ import logging
32
+
33
+ import nxtomomill.version
34
+ from nxtomomill.utils import change_image_key_control as _change_image_key_control
35
+ from tomoscan.esrf.scan.hdf5scan import ImageKey
31
36
  from tomoscan.esrf.scan.hdf5scan import ImageKey as _ImageKey
37
+
38
+ from tomwer.core.process.task import Task
32
39
  from tomwer.core.scan.hdf5scan import HDF5TomoScan
33
40
  from tomwer.core.scan.scanbase import TomwerScanBase
34
- from nxtomomill.utils import change_image_key_control as _change_image_key_control
35
- from tomwer.core.process.task import Task
36
- from tomoscan.esrf.scan.hdf5scan import ImageKey
37
41
  from tomwer.core.scan.scanfactory import ScanFactory
38
42
  from tomwer.core.utils.scanutils import data_identifier_to_scan
39
- import nxtomomill.version
40
- import logging
41
43
 
42
44
  _logger = logging.getLogger(__name__)
43
45
 
@@ -63,8 +65,7 @@ def change_image_key_control(scan: HDF5TomoScan, config: dict) -> TomwerScanBase
63
65
  return
64
66
  elif not isinstance(scan, HDF5TomoScan):
65
67
  raise ValueError(
66
- "Image key control only handle HDF5TomoScan and "
67
- "not {}".format(type(scan))
68
+ f"Image key control only handle HDF5TomoScan and not {type(scan)}"
68
69
  )
69
70
 
70
71
  if "modifications" not in config:
@@ -83,7 +84,7 @@ def change_image_key_control(scan: HDF5TomoScan, config: dict) -> TomwerScanBase
83
84
  filter(lambda item: item[1] is image_key_type, modifications.items())
84
85
  )
85
86
  frame_indexes = tuple(frame_indexes_dict.keys())
86
- _logger.warning("will modify {} to {}".format(frame_indexes, image_key_type))
87
+ _logger.warning(f"will modify {frame_indexes} to {image_key_type}")
87
88
  _change_image_key_control(
88
89
  file_path=scan.master_file,
89
90
  entry=scan.entry,
@@ -118,13 +119,10 @@ class ImageKeyEditor(Task, input_names=("data",), output_names=("data",)):
118
119
  return
119
120
  if not isinstance(scan, TomwerScanBase):
120
121
  raise TypeError(
121
- "scan is expected to be a dict or an instance "
122
- "of TomwerScanBase. Not {}".format(type(scan))
122
+ f"scan is expected to be a dict or an instance of TomwerScanBase. Not {type(scan)}"
123
123
  )
124
124
  if not isinstance(scan, HDF5TomoScan):
125
- raise ValueError(
126
- "input type of {}: {} is not managed" "".format(scan, type(scan))
127
- )
125
+ raise ValueError(f"input type of {scan}: {(type(scan))} is not managed")
128
126
 
129
127
  change_image_key_control(scan=scan, config=self.get_configuration())
130
128
  config = self.get_configuration()