tomwer 1.4.16__py3-none-any.whl → 1.4.18__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.
- tomwer/app/nabuapp.py +3 -1
- tomwer/app/stitching/common.py +35 -1
- tomwer/core/scan/nxtomoscan.py +1 -1
- tomwer/gui/stitching/SingleAxisStitchingWidget.py +24 -0
- tomwer/gui/stitching/StitchingWindow.py +11 -0
- tomwer/gui/stitching/axisorderedlist.py +4 -3
- tomwer/gui/stitching/config/positionoveraxis.py +11 -3
- tomwer/gui/stitching/tests/test_ZStitchingWindow.py +3 -3
- tomwer/gui/utils/inputwidget.py +7 -1
- tomwer/gui/utils/utils.py +1 -1
- tomwer/version.py +1 -1
- {tomwer-1.4.16.dist-info → tomwer-1.4.18.dist-info}/METADATA +12 -11
- {tomwer-1.4.16.dist-info → tomwer-1.4.18.dist-info}/RECORD +17 -19
- {tomwer-1.4.16.dist-info → tomwer-1.4.18.dist-info}/WHEEL +1 -1
- tomwer/core/scan/tests/test_process_registration.py +0 -64
- tomwer/tasks/reconstruction/cleardarkflat.py +0 -42
- {tomwer-1.4.16.dist-info → tomwer-1.4.18.dist-info}/entry_points.txt +0 -0
- {tomwer-1.4.16.dist-info → tomwer-1.4.18.dist-info/licenses}/LICENSE +0 -0
- {tomwer-1.4.16.dist-info → tomwer-1.4.18.dist-info}/top_level.txt +0 -0
tomwer/app/nabuapp.py
CHANGED
@@ -95,7 +95,9 @@ class NabuWindow(NabuDialog):
|
|
95
95
|
|
96
96
|
# add center of rotation widget
|
97
97
|
self._corWidget = _CORWidget(parent=self)
|
98
|
-
rw =
|
98
|
+
rw = (
|
99
|
+
self._widget._mainWidget._nabuSettingsWidget._configuration._reconstructionWidget
|
100
|
+
)
|
99
101
|
rw.layout().addWidget(self._corWidget, 99, 0, 1, 2)
|
100
102
|
|
101
103
|
self._dataViewer = None
|
tomwer/app/stitching/common.py
CHANGED
@@ -33,6 +33,8 @@ from tomwer.gui.cluster.slurm import SlurmSettingsWidget
|
|
33
33
|
from tomwer.core.scan.scanbase import TomwerScanBase
|
34
34
|
from tomwer.core.scan.nxtomoscan import NXtomoScan
|
35
35
|
from tomwer.core.volume import HDF5Volume
|
36
|
+
from tomwer.core.volume.volumebase import TomwerVolumeBase
|
37
|
+
from tomwer.core.tomwer_object import TomwerObject
|
36
38
|
|
37
39
|
|
38
40
|
class MainWidget(qt.QTabWidget):
|
@@ -131,6 +133,14 @@ class MainWidget(qt.QTabWidget):
|
|
131
133
|
def loadSettings(self, config_file):
|
132
134
|
self._stitchingConfigWindow._loadSettings(config_file)
|
133
135
|
|
136
|
+
def get_available_pre_processing_stitching_mode(self):
|
137
|
+
return self._stitchingConfigWindow.get_available_pre_processing_stitching_mode()
|
138
|
+
|
139
|
+
def get_available_post_processing_stitching_mode(self):
|
140
|
+
return (
|
141
|
+
self._stitchingConfigWindow.get_available_post_processing_stitching_mode()
|
142
|
+
)
|
143
|
+
|
134
144
|
|
135
145
|
class _StitcherThread(qt.QThread):
|
136
146
|
DEFAULT_OUTPUT_CONFIG_NAME = "stitching_conf_autosave.conf"
|
@@ -189,6 +199,9 @@ class _StitcherThread(qt.QThread):
|
|
189
199
|
|
190
200
|
|
191
201
|
class MainWindow(qt.QDialog):
|
202
|
+
|
203
|
+
sigTomoObjAdded = qt.Signal(TomwerObject)
|
204
|
+
|
192
205
|
def __init__(self, axis: int, parent=None) -> None:
|
193
206
|
super().__init__(parent)
|
194
207
|
self.setLayout(qt.QVBoxLayout())
|
@@ -268,7 +281,22 @@ class MainWindow(qt.QDialog):
|
|
268
281
|
self._mainWindow._stitchingConfigWindow._widget._mainWidget.setCurrentWidget(
|
269
282
|
orderedListWidget
|
270
283
|
)
|
271
|
-
orderedListWidget._callbackAddTomoObj()
|
284
|
+
tomo_objs = orderedListWidget._callbackAddTomoObj()
|
285
|
+
for tomo_obj in tomo_objs:
|
286
|
+
if len(tomo_objs) > 0:
|
287
|
+
self.__updateStitchingTypeFromObjAdded(tomo_obj=tomo_objs[0])
|
288
|
+
|
289
|
+
def __updateStitchingTypeFromObjAdded(self, tomo_obj: TomwerObject):
|
290
|
+
if isinstance(tomo_obj, TomwerScanBase):
|
291
|
+
self.setStitchingType(self.get_available_pre_processing_stitching_mode()[0])
|
292
|
+
elif isinstance(tomo_obj, TomwerVolumeBase):
|
293
|
+
self.setStitchingType(
|
294
|
+
self.get_available_post_processing_stitching_mode()[0]
|
295
|
+
)
|
296
|
+
else:
|
297
|
+
raise TypeError(
|
298
|
+
f"tomo_obj is expected to be an instance of {type(TomwerObject)}. Got {type(tomo_obj)}"
|
299
|
+
)
|
272
300
|
|
273
301
|
def close(self):
|
274
302
|
self._mainWindow.close()
|
@@ -330,6 +358,12 @@ class MainWindow(qt.QDialog):
|
|
330
358
|
def setPostProcessingOutput(self, url: DataUrl) -> None:
|
331
359
|
self._mainWindow._stitchingConfigWindow.setPostProcessingOutput(url=url)
|
332
360
|
|
361
|
+
def get_available_pre_processing_stitching_mode(self) -> tuple[StitchingType]:
|
362
|
+
return self._mainWindow.get_available_pre_processing_stitching_mode()
|
363
|
+
|
364
|
+
def get_available_post_processing_stitching_mode(self) -> tuple[StitchingType]:
|
365
|
+
return self._mainWindow.get_available_post_processing_stitching_mode()
|
366
|
+
|
333
367
|
|
334
368
|
def main(argv, stitcher_name: str, stitching_axis: int, logger):
|
335
369
|
parser = argparse.ArgumentParser(description=__doc__)
|
tomwer/core/scan/nxtomoscan.py
CHANGED
@@ -427,7 +427,7 @@ class NXtomoScan(_tsNXtomoScan, TomwerScanBase):
|
|
427
427
|
)
|
428
428
|
return {
|
429
429
|
"hdf5_entry": self.entry,
|
430
|
-
"location": os.path.
|
430
|
+
"location": filter_esrf_mounting_points(os.path.abspath(self.master_file)),
|
431
431
|
"binning": binning,
|
432
432
|
"binning_z": binning_z,
|
433
433
|
"projections_subsampling": proj_subsampling,
|
@@ -92,6 +92,30 @@ class SingleAxisStitchingWidget(qt.QWidget, _SingleAxisMixIn):
|
|
92
92
|
if idx >= 0:
|
93
93
|
self._stitchingTypeCB.setCurrentIndex(idx)
|
94
94
|
|
95
|
+
def get_available_pre_processing_stitching_mode(self):
|
96
|
+
pre_proc_modes: tuple[str] = tuple(
|
97
|
+
filter(
|
98
|
+
lambda mode: "preproc" in mode,
|
99
|
+
[
|
100
|
+
self._stitchingTypeCB.itemText(i_item)
|
101
|
+
for i_item in range(self._stitchingTypeCB.count())
|
102
|
+
],
|
103
|
+
)
|
104
|
+
)
|
105
|
+
return tuple([StitchingType.from_value(mode) for mode in pre_proc_modes])
|
106
|
+
|
107
|
+
def get_available_post_processing_stitching_mode(self):
|
108
|
+
post_proc_modes: tuple[str] = tuple(
|
109
|
+
filter(
|
110
|
+
lambda mode: "postproc" in mode,
|
111
|
+
[
|
112
|
+
self._stitchingTypeCB.itemText(i_item)
|
113
|
+
for i_item in range(self._stitchingTypeCB.count())
|
114
|
+
],
|
115
|
+
)
|
116
|
+
)
|
117
|
+
return tuple([StitchingType.from_value(mode) for mode in post_proc_modes])
|
118
|
+
|
95
119
|
def addTomoObj(self, tomo_obj: TomwerObject):
|
96
120
|
self._mainWidget.addTomoObj(tomo_obj)
|
97
121
|
self._updatePreviewPixelSize()
|
@@ -438,6 +438,11 @@ class _SingleAxisStitchingWindow(
|
|
438
438
|
# update to force overwrite
|
439
439
|
config["output"]["overwrite_results"] = True
|
440
440
|
|
441
|
+
# avoid any recalculation of the axis position. So the preview is accurate
|
442
|
+
config["output"]["axis_0_params"] = ""
|
443
|
+
config["output"]["axis_1_params"] = ""
|
444
|
+
config["output"]["axis_2_params"] = ""
|
445
|
+
|
441
446
|
# clean current preview to notify some calculation is going on
|
442
447
|
preview_plot = self._widget._mainWidget._previewPlot
|
443
448
|
preview_plot._waitingOverlay.show()
|
@@ -583,6 +588,12 @@ class _SingleAxisStitchingWindow(
|
|
583
588
|
def setPostProcessingOutput(self, *args, **kwargs):
|
584
589
|
self._outputWidget.setPostProcessingOutput(*args, **kwargs)
|
585
590
|
|
591
|
+
def get_available_pre_processing_stitching_mode(self):
|
592
|
+
return self._widget.get_available_pre_processing_stitching_mode()
|
593
|
+
|
594
|
+
def get_available_post_processing_stitching_mode(self):
|
595
|
+
return self._widget.get_available_post_processing_stitching_mode()
|
596
|
+
|
586
597
|
|
587
598
|
class YStitchingWindow(_SingleAxisStitchingWindow, axis=1):
|
588
599
|
pass
|
@@ -361,7 +361,7 @@ class EditableOrderedTomoObjWidget(AxisOrderedTomoObjWidget):
|
|
361
361
|
[self._tomoObjsTableView.model().getTomoObj(item) for item in selection]
|
362
362
|
)
|
363
363
|
|
364
|
-
def _callbackAddTomoObj(self):
|
364
|
+
def _callbackAddTomoObj(self) -> tuple[TomwerObject]:
|
365
365
|
dialog = qt.QFileDialog()
|
366
366
|
dialog.setFileMode(qt.QFileDialog.ExistingFiles)
|
367
367
|
dialog.setNameFilters(
|
@@ -372,9 +372,9 @@ class EditableOrderedTomoObjWidget(AxisOrderedTomoObjWidget):
|
|
372
372
|
|
373
373
|
if not dialog.exec_():
|
374
374
|
dialog.close()
|
375
|
-
return
|
375
|
+
return ()
|
376
376
|
elif len(dialog.selectedFiles()) == 0:
|
377
|
-
return
|
377
|
+
return ()
|
378
378
|
else:
|
379
379
|
tomo_objs = []
|
380
380
|
for file in dialog.selectedFiles():
|
@@ -386,6 +386,7 @@ class EditableOrderedTomoObjWidget(AxisOrderedTomoObjWidget):
|
|
386
386
|
tomo_objs.extend(new_objs)
|
387
387
|
for tomo_obj in tomo_objs:
|
388
388
|
self.addTomoObj(tomo_obj=tomo_obj, trigger_callbacks=True)
|
389
|
+
return tuple(tomo_objs)
|
389
390
|
|
390
391
|
def _callbackRemoveSelectedTomoObj(self):
|
391
392
|
obj_to_remove = self.getSelectedTomoObjs()
|
@@ -333,9 +333,15 @@ class _TomoObjPosition(qt.QWidget):
|
|
333
333
|
self.layout().addWidget(self._resetValueQPB)
|
334
334
|
|
335
335
|
# connect signal / slot
|
336
|
-
self._spinBox.
|
336
|
+
self._spinBox.editingFinished.connect(self._sbEditingFinished)
|
337
337
|
self._resetValueQPB.clicked.connect(self.resetOriginalValue)
|
338
338
|
|
339
|
+
def _sbEditingFinished(self):
|
340
|
+
sender = self.sender()
|
341
|
+
assert isinstance(sender, qt.QSpinBox)
|
342
|
+
new_value = sender.value()
|
343
|
+
self._valueChanged(new_value=new_value)
|
344
|
+
|
339
345
|
def _valueChanged(self, new_value):
|
340
346
|
self.sigValueChanged.emit(
|
341
347
|
self.__lastValue,
|
@@ -354,10 +360,12 @@ class _TomoObjPosition(qt.QWidget):
|
|
354
360
|
self._positionChanged()
|
355
361
|
|
356
362
|
def _positionChanged(self):
|
357
|
-
self._valueChanged(
|
363
|
+
self._valueChanged(self._spinBox.value())
|
358
364
|
|
359
|
-
def setValue(self, value: float) -> None:
|
365
|
+
def setValue(self, value: float, emit_editing_finished: bool = False) -> None:
|
360
366
|
self._spinBox.setValue(value)
|
367
|
+
if emit_editing_finished:
|
368
|
+
self._spinBox.editingFinished.emit()
|
361
369
|
self.__lastValue = value
|
362
370
|
|
363
371
|
def getValue(self) -> float:
|
@@ -69,10 +69,10 @@ def test_ZStitchingWindow(
|
|
69
69
|
)
|
70
70
|
|
71
71
|
window._editTomoObjFirstAxisPositionsWidget.setEditionMode("free")
|
72
|
-
widget_tomo_obj_0.setValue(10)
|
72
|
+
widget_tomo_obj_0.setValue(10, emit_editing_finished=True)
|
73
73
|
assert window.getConfiguration()["stitching"]["axis_0_pos_px"] == [10, 0, -90]
|
74
74
|
window._editTomoObjFirstAxisPositionsWidget.setEditionMode("downstream")
|
75
|
-
widget_tomo_obj_0.setValue(30)
|
75
|
+
widget_tomo_obj_0.setValue(30, emit_editing_finished=True)
|
76
76
|
assert window.getConfiguration()["stitching"]["axis_0_pos_px"] == [30, 20, -70]
|
77
77
|
window._editTomoObjFirstAxisPositionsWidget.setEditionMode("upstream")
|
78
78
|
widget_tomo_obj_2 = (
|
@@ -80,7 +80,7 @@ def test_ZStitchingWindow(
|
|
80
80
|
scans[2].get_identifier().to_str()
|
81
81
|
]
|
82
82
|
)
|
83
|
-
widget_tomo_obj_2.setValue(-120)
|
83
|
+
widget_tomo_obj_2.setValue(-120, emit_editing_finished=True)
|
84
84
|
assert window.getConfiguration()["stitching"]["axis_0_pos_px"] == [-20, -30, -120]
|
85
85
|
|
86
86
|
# test reset positions to initial positions
|
tomwer/gui/utils/inputwidget.py
CHANGED
@@ -437,7 +437,13 @@ class OutputVolumeDefinition(qt.QWidget):
|
|
437
437
|
# output file or folder
|
438
438
|
self._outputFileLabel = qt.QLabel("", self)
|
439
439
|
self.layout().addWidget(self._outputFileLabel, 1, 0, 1, 1)
|
440
|
-
self._outputFileQLE = QLFileSystem(
|
440
|
+
self._outputFileQLE = QLFileSystem(
|
441
|
+
os.path.join(
|
442
|
+
os.getcwd(),
|
443
|
+
"stitched_volume.hdf5",
|
444
|
+
),
|
445
|
+
parent=None,
|
446
|
+
)
|
441
447
|
self.layout().addWidget(self._outputFileQLE, 1, 1, 1, 1)
|
442
448
|
self._selectPB = qt.QPushButton("select", self)
|
443
449
|
self.layout().addWidget(self._selectPB, 1, 2, 1, 1)
|
tomwer/gui/utils/utils.py
CHANGED
@@ -49,7 +49,7 @@ def open_url_with_image_j(url: DataUrl) -> threading.Thread:
|
|
49
49
|
|
50
50
|
:param url: url we want to open in imagej
|
51
51
|
"""
|
52
|
-
global __image_j_from
|
52
|
+
global __image_j_from # noqa: F824
|
53
53
|
if not has_imagej():
|
54
54
|
raise OSError("ImageJ is not installed")
|
55
55
|
thread = ImageJthread(url=url, image_j_from=__image_j_from)
|
tomwer/version.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: tomwer
|
3
|
-
Version: 1.4.
|
3
|
+
Version: 1.4.18
|
4
4
|
Summary: "tomography workflow tools"
|
5
5
|
Home-page: https://gitlab.esrf.fr/tomotools/tomwer
|
6
6
|
Author: Henri Payno, Pierre Paleo, Pierre-Olivier Autran, Jérôme Lesaint, Alessandro Mirone
|
@@ -26,7 +26,7 @@ Requires-Dist: setuptools
|
|
26
26
|
Requires-Dist: psutil
|
27
27
|
Requires-Dist: silx[full]<2.1.1,>=2.0
|
28
28
|
Requires-Dist: tomoscan>=2.1.0a18
|
29
|
-
Requires-Dist: nxtomo
|
29
|
+
Requires-Dist: nxtomo<2.0,>=1.3.0dev4
|
30
30
|
Requires-Dist: nxtomomill>=1.1.0a0
|
31
31
|
Requires-Dist: processview>=1.5.0
|
32
32
|
Requires-Dist: ewoks>=0.1.1
|
@@ -48,7 +48,7 @@ Requires-Dist: werkzeug; extra == "full-base"
|
|
48
48
|
Requires-Dist: json-rpc; extra == "full-base"
|
49
49
|
Requires-Dist: scipy; extra == "full-base"
|
50
50
|
Requires-Dist: Pillow; extra == "full-base"
|
51
|
-
Requires-Dist: glymur; extra == "full-base"
|
51
|
+
Requires-Dist: glymur<0.14; extra == "full-base"
|
52
52
|
Requires-Dist: resource; extra == "full-base"
|
53
53
|
Requires-Dist: tifffile; extra == "full-base"
|
54
54
|
Requires-Dist: hdf5plugin; extra == "full-base"
|
@@ -68,7 +68,7 @@ Requires-Dist: werkzeug; extra == "full-no-nabu"
|
|
68
68
|
Requires-Dist: json-rpc; extra == "full-no-nabu"
|
69
69
|
Requires-Dist: scipy; extra == "full-no-nabu"
|
70
70
|
Requires-Dist: Pillow; extra == "full-no-nabu"
|
71
|
-
Requires-Dist: glymur; extra == "full-no-nabu"
|
71
|
+
Requires-Dist: glymur<0.14; extra == "full-no-nabu"
|
72
72
|
Requires-Dist: resource; extra == "full-no-nabu"
|
73
73
|
Requires-Dist: tifffile; extra == "full-no-nabu"
|
74
74
|
Requires-Dist: hdf5plugin; extra == "full-no-nabu"
|
@@ -88,7 +88,7 @@ Requires-Dist: werkzeug; extra == "full-no-cuda"
|
|
88
88
|
Requires-Dist: json-rpc; extra == "full-no-cuda"
|
89
89
|
Requires-Dist: scipy; extra == "full-no-cuda"
|
90
90
|
Requires-Dist: Pillow; extra == "full-no-cuda"
|
91
|
-
Requires-Dist: glymur; extra == "full-no-cuda"
|
91
|
+
Requires-Dist: glymur<0.14; extra == "full-no-cuda"
|
92
92
|
Requires-Dist: resource; extra == "full-no-cuda"
|
93
93
|
Requires-Dist: tifffile; extra == "full-no-cuda"
|
94
94
|
Requires-Dist: hdf5plugin; extra == "full-no-cuda"
|
@@ -109,7 +109,7 @@ Requires-Dist: werkzeug; extra == "full"
|
|
109
109
|
Requires-Dist: json-rpc; extra == "full"
|
110
110
|
Requires-Dist: scipy; extra == "full"
|
111
111
|
Requires-Dist: Pillow; extra == "full"
|
112
|
-
Requires-Dist: glymur; extra == "full"
|
112
|
+
Requires-Dist: glymur<0.14; extra == "full"
|
113
113
|
Requires-Dist: resource; extra == "full"
|
114
114
|
Requires-Dist: tifffile; extra == "full"
|
115
115
|
Requires-Dist: hdf5plugin; extra == "full"
|
@@ -132,7 +132,7 @@ Requires-Dist: werkzeug; extra == "doc"
|
|
132
132
|
Requires-Dist: json-rpc; extra == "doc"
|
133
133
|
Requires-Dist: scipy; extra == "doc"
|
134
134
|
Requires-Dist: Pillow; extra == "doc"
|
135
|
-
Requires-Dist: glymur; extra == "doc"
|
135
|
+
Requires-Dist: glymur<0.14; extra == "doc"
|
136
136
|
Requires-Dist: resource; extra == "doc"
|
137
137
|
Requires-Dist: tifffile; extra == "doc"
|
138
138
|
Requires-Dist: hdf5plugin; extra == "doc"
|
@@ -166,7 +166,7 @@ Requires-Dist: werkzeug; extra == "dev"
|
|
166
166
|
Requires-Dist: json-rpc; extra == "dev"
|
167
167
|
Requires-Dist: scipy; extra == "dev"
|
168
168
|
Requires-Dist: Pillow; extra == "dev"
|
169
|
-
Requires-Dist: glymur; extra == "dev"
|
169
|
+
Requires-Dist: glymur<0.14; extra == "dev"
|
170
170
|
Requires-Dist: resource; extra == "dev"
|
171
171
|
Requires-Dist: tifffile; extra == "dev"
|
172
172
|
Requires-Dist: hdf5plugin; extra == "dev"
|
@@ -193,7 +193,7 @@ Requires-Dist: werkzeug; extra == "dev-no-cuda"
|
|
193
193
|
Requires-Dist: json-rpc; extra == "dev-no-cuda"
|
194
194
|
Requires-Dist: scipy; extra == "dev-no-cuda"
|
195
195
|
Requires-Dist: Pillow; extra == "dev-no-cuda"
|
196
|
-
Requires-Dist: glymur; extra == "dev-no-cuda"
|
196
|
+
Requires-Dist: glymur<0.14; extra == "dev-no-cuda"
|
197
197
|
Requires-Dist: resource; extra == "dev-no-cuda"
|
198
198
|
Requires-Dist: tifffile; extra == "dev-no-cuda"
|
199
199
|
Requires-Dist: hdf5plugin; extra == "dev-no-cuda"
|
@@ -218,7 +218,7 @@ Requires-Dist: werkzeug; extra == "test"
|
|
218
218
|
Requires-Dist: json-rpc; extra == "test"
|
219
219
|
Requires-Dist: scipy; extra == "test"
|
220
220
|
Requires-Dist: Pillow; extra == "test"
|
221
|
-
Requires-Dist: glymur; extra == "test"
|
221
|
+
Requires-Dist: glymur<0.14; extra == "test"
|
222
222
|
Requires-Dist: resource; extra == "test"
|
223
223
|
Requires-Dist: tifffile; extra == "test"
|
224
224
|
Requires-Dist: hdf5plugin; extra == "test"
|
@@ -231,6 +231,7 @@ Requires-Dist: tomoscan[test]>=2.1.0a18; extra == "test"
|
|
231
231
|
Provides-Extra: setup-requires
|
232
232
|
Requires-Dist: setuptools; extra == "setup-requires"
|
233
233
|
Requires-Dist: numpy>=1.12; extra == "setup-requires"
|
234
|
+
Dynamic: license-file
|
234
235
|
|
235
236
|
.. image:: doc/img/tomwer.png
|
236
237
|
:alt: Tomwer Logo
|
@@ -219,7 +219,7 @@ orangecontrib/tomwer/widgets/visualization/tests/__init__.py,sha256=47DEQpj8HBSa
|
|
219
219
|
tomwer/__init__.py,sha256=cMIyH-uRxpa9WVnAuWjiBD7k9TK57WO21RzP_S-Mb8I,460
|
220
220
|
tomwer/__main__.py,sha256=7tCADiS4u7k1PCxFhlRAcYSIOpxQTGUTx8sCEQ-hi1E,8707
|
221
221
|
tomwer/utils.py,sha256=7h7dEgKAEUmQ43jkULvC1B9Adl55nkCty-SEKUKCl4U,7008
|
222
|
-
tomwer/version.py,sha256=
|
222
|
+
tomwer/version.py,sha256=ZockRUONTpS2pMmqMM74e8Rvh1TysPALNWyegIXFEyE,4387
|
223
223
|
tomwer/app/__init__.py,sha256=h1FKED7Tw5f99yikygt7ruXsdrxQhcJxO7kagLGxhJg,84
|
224
224
|
tomwer/app/axis.py,sha256=lB-IZx1o6KTWLIelITvYCIu2flFTB9NhuIfD2MhUZZA,5826
|
225
225
|
tomwer/app/canvas.py,sha256=y8rYOiwmv6ug7JcjgkOzEiGQnNXjKWNNmKofT0n8TFg,1538
|
@@ -231,7 +231,7 @@ tomwer/app/imagekeyupgrader.py,sha256=qLbfWPz68b2DxMYNd5MlIyZdQ12YQ7F-KUA92RcI01
|
|
231
231
|
tomwer/app/intensitynormalization.py,sha256=5uT8xQWjjq7uV8-0jru_2Qf9SIN5ooVCPH8Ok8inMYE,5998
|
232
232
|
tomwer/app/multicor.py,sha256=NgSYIh1CTM1ssD5fXfH4j9MM3HU_NUEx_4EIWehijMs,8900
|
233
233
|
tomwer/app/multipag.py,sha256=LHk4-97aYqFQ9UgQb8mYW1_nkUQBbgUxee4RinloCjk,12016
|
234
|
-
tomwer/app/nabuapp.py,sha256=
|
234
|
+
tomwer/app/nabuapp.py,sha256=1kBQlyzkEYW-iEH6hdYlrXuvg1MPQfPLmDIA5P6oXE4,7687
|
235
235
|
tomwer/app/nxtomoeditor.py,sha256=1Wj59ZF3QvDBmUkUosxZlxvOM-mCvs74l1YJe3tFtwQ,3012
|
236
236
|
tomwer/app/patchrawdarkflat.py,sha256=0s4Uk7rlF6VYcwKAysxj5ncP7jTgDL9XIiMPqZUktvg,3779
|
237
237
|
tomwer/app/radiostack.py,sha256=S6VB7BSmpfFdnGEyX_7wvLFiOtbtlEwgP7PEUAJLN4w,2640
|
@@ -252,7 +252,7 @@ tomwer/app/canvas_launcher/splash.py,sha256=cpUuZVKwlQbeAWfAqjpjP4q1v1MmkfxU6WWl
|
|
252
252
|
tomwer/app/canvas_launcher/utils.py,sha256=WfsCHAhiiv4-TUNodgyKJenVvmFWnxsy5OBwTBK2jKE,1279
|
253
253
|
tomwer/app/canvas_launcher/widgetsscheme.py,sha256=9Or1KMmSxIs_dJmJGV0Xhjg9HH4m8aPGbtiEuK2i6q0,2744
|
254
254
|
tomwer/app/stitching/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
255
|
-
tomwer/app/stitching/common.py,sha256
|
255
|
+
tomwer/app/stitching/common.py,sha256=unFHRuJdzKMLlBM6znQx-KPcbJ7H__EKKe8CUw_Apfs,17293
|
256
256
|
tomwer/core/__init__.py,sha256=-EtD8J-a7WVnCgYS7WHkisYn61iM2PpHWcXwE5BetJ8,71
|
257
257
|
tomwer/core/futureobject.py,sha256=8Sd9gOrdhYc0PvzPeZPBNOmaHuwB5epG6RJyABRsCmQ,5113
|
258
258
|
tomwer/core/resourcemanager.py,sha256=VLNnVodMa-HOMZhN2qpUR_L6phJ8IHPUEPYMxuW6VHg,1067
|
@@ -408,7 +408,7 @@ tomwer/core/scan/edfscan.py,sha256=5brP6ewiDRaT0ssSf35kAYzfWwynyTaoSPcOjmNxf0o,2
|
|
408
408
|
tomwer/core/scan/futurescan.py,sha256=chXjteQ4_6cSyFBoCil-DeHkHGGzM-xb21xJRYLEfhI,213
|
409
409
|
tomwer/core/scan/hdf5scan.py,sha256=rQ-WtbOIgNtnMxA2kC23fEAcJIJIKboAv7UQColkrBg,966
|
410
410
|
tomwer/core/scan/helicalmetadata.py,sha256=JRBxqHkyTe5f3FDlbIeDfN31P6Ms48SqGiFRXHuZ8sw,472
|
411
|
-
tomwer/core/scan/nxtomoscan.py,sha256=
|
411
|
+
tomwer/core/scan/nxtomoscan.py,sha256=juA5so5YpiLDC4-JMCcR5xNovCRbLmcEkWN65QfWkzk,18441
|
412
412
|
tomwer/core/scan/scanbase.py,sha256=GO5DgYHtLZJwLW1-Y4ztHxgfdGMPUIhx1rhBG9lWBeM,25627
|
413
413
|
tomwer/core/scan/scanfactory.py,sha256=-bF0Ru9bn8bnGk4MKXhbt5Oli19qN1WvFPDMtqw81BA,9116
|
414
414
|
tomwer/core/scan/scantype.py,sha256=pQjWuCy_014uK5cdb8pFAkE_EPHJvPdSo3NM8aWTo58,137
|
@@ -416,7 +416,6 @@ tomwer/core/scan/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
|
|
416
416
|
tomwer/core/scan/tests/test_edf.py,sha256=JI7wH5emdjlYl08OhmjIO_8mui7rHa-aRCUwmkCRyys,830
|
417
417
|
tomwer/core/scan/tests/test_future_scan.py,sha256=tsF9p57dCOmW0fPyl6BP2lLSo0rRYRF6hSF-kryLMDM,848
|
418
418
|
tomwer/core/scan/tests/test_nxtomoscan.py,sha256=w2mNuCsfWMl1b9jP_-vkTDkCD_z9oM02yx42f6-DzY8,4751
|
419
|
-
tomwer/core/scan/tests/test_process_registration.py,sha256=g4Toef92SjxCBUE82MTbjonFJpc3PQqfpF6FSCarN5U,1988
|
420
419
|
tomwer/core/scan/tests/test_scan.py,sha256=mHFPi2Tc7Z2_5rWvAp3YmObVSTB5yi-sTkHm1iOJlDo,12228
|
421
420
|
tomwer/core/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
422
421
|
tomwer/core/tests/test_scanutils.py,sha256=xWwd1nycVDWmFaIaL2gQ_xxrUMhVCARaNHI2SxT9NOI,844
|
@@ -598,13 +597,13 @@ tomwer/gui/reconstruction/tests/test_saaxis.py,sha256=6lXKa5yY8pYkcBap7hyzLwhp8W
|
|
598
597
|
tomwer/gui/reconstruction/tests/test_sadeltabeta.py,sha256=96tE_gxIcmp0qDXQmIwSEkYl3Js7dT2CyUH1doyjGc0,4491
|
599
598
|
tomwer/gui/samplemoved/__init__.py,sha256=jNA03mYWfP3_S1MRet6ijYe5DNCTK3Br7-5yrW3oEG4,8240
|
600
599
|
tomwer/gui/samplemoved/selectiontable.py,sha256=CzQnJBxfIeoZSw8aR0VvrsaIg6fozREI8YRXdzQbA7Q,7968
|
601
|
-
tomwer/gui/stitching/SingleAxisStitchingWidget.py,sha256=
|
600
|
+
tomwer/gui/stitching/SingleAxisStitchingWidget.py,sha256=KSAEUVpSkZ56XjnpF2RlrgenjIkfJct367kbZaYQlXA,13917
|
602
601
|
tomwer/gui/stitching/StitchingOptionsWidget.py,sha256=c5kRZOMuGKK_CgK28IkBawaVvK2cmczbWF4TcVUZxq4,18186
|
603
|
-
tomwer/gui/stitching/StitchingWindow.py,sha256=
|
602
|
+
tomwer/gui/stitching/StitchingWindow.py,sha256=tm7aadWGUcmHnVXws1ifJtbb835U3dF4mLZGiP3VQSM,25103
|
604
603
|
tomwer/gui/stitching/__init__.py,sha256=jYSG4DSAtMGm9Yuf4MVdlSdMO8JKOp_t-8NKsnR92LU,45
|
605
604
|
tomwer/gui/stitching/action.py,sha256=7CkACYKsRt3c_6PgrmQVZwSi9UwvGrQVUymJytHbqcE,1659
|
606
605
|
tomwer/gui/stitching/alignment.py,sha256=QGWnogvBSbx3kk8lrFDoipmhqbVHEe46WGAeOorlHQ8,4001
|
607
|
-
tomwer/gui/stitching/axisorderedlist.py,sha256=
|
606
|
+
tomwer/gui/stitching/axisorderedlist.py,sha256=IEJoOXlf8wpWkJijLjF-jGRMHOpQ8lGVuajvIqc670s,18045
|
608
607
|
tomwer/gui/stitching/metadataholder.py,sha256=jeR6_DM529aEmxQLeLM3CB-49GHq6KLY2Nc24kSC-HA,913
|
609
608
|
tomwer/gui/stitching/normalization.py,sha256=sECW3S83-eQJut2RodfxCRsTnTV4XLCL-z-pVtD1U5Y,4492
|
610
609
|
tomwer/gui/stitching/preview.py,sha256=no74hLS4d_mDVwMXkO7k5aNn-B3Y4h-Jx0dlM20rhbE,2292
|
@@ -616,11 +615,11 @@ tomwer/gui/stitching/utils.py,sha256=ZgfKHLyH7l81Ry-4M5ajdwqdeos_J4g4Ee3j3yoXcJo
|
|
616
615
|
tomwer/gui/stitching/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
617
616
|
tomwer/gui/stitching/config/axisparams.py,sha256=1cRa9ukPvVK7AGePJsJx2M_i_5TMLJocVwrotz7uxXk,8026
|
618
617
|
tomwer/gui/stitching/config/output.py,sha256=2kOKV5vTt1scIkmEUyhSvERRs8UvEHojRazCC0RzeE8,6176
|
619
|
-
tomwer/gui/stitching/config/positionoveraxis.py,sha256=
|
618
|
+
tomwer/gui/stitching/config/positionoveraxis.py,sha256=3vKasddv6d--qO5Izjg6JBE1HXhgYI-RBNFBuLF-BUU,16642
|
620
619
|
tomwer/gui/stitching/config/stitchingstrategies.py,sha256=BI5KYs0qeEp-hfFI7M9MJN8EHmoC7iaJqQ7Hf902v6Y,4598
|
621
620
|
tomwer/gui/stitching/config/tomoobjdetails.py,sha256=GkQIqE2ArXFJFtmjrwc0txbZldNKJK-fpMEF_68S1qQ,14667
|
622
621
|
tomwer/gui/stitching/config/tests/test_axisparams.py,sha256=btumHdTFr2xmiFZ-GbWAuRy6kjwYUilMrluhiE0repM,738
|
623
|
-
tomwer/gui/stitching/tests/test_ZStitchingWindow.py,sha256=
|
622
|
+
tomwer/gui/stitching/tests/test_ZStitchingWindow.py,sha256=_qywMShdazk7WekGCUA2rv8ZN-WGuQJ-v8zqCGuWYN0,3091
|
624
623
|
tomwer/gui/stitching/tests/test_axis_ordered_list.py,sha256=ueXQ-YrP0S325PrJiPLdsM4GdzhZm8lTzb-P9hJ3TEY,700
|
625
624
|
tomwer/gui/stitching/tests/test_normalization.py,sha256=m4anggtaZ32JSfZ5yHgis5CD0HYpjLvS6bpDitQv9ec,643
|
626
625
|
tomwer/gui/stitching/tests/test_preview.py,sha256=sQ0fh07e1oYgWwlB4tqHlOv9Qsf_-bZS39GfsolGW3s,2349
|
@@ -641,7 +640,7 @@ tomwer/gui/utils/completer.py,sha256=XQGVSiUdLa1MfgXPDY5qfcTxtjVerxmVKXmWDb-kQ-I
|
|
641
640
|
tomwer/gui/utils/flow.py,sha256=p9KoaXSK_YhyFrpUTXr-HI1pAoDRiCPW1F9tVgjSIbA,10668
|
642
641
|
tomwer/gui/utils/gpu.py,sha256=R2sRA77zyxdy5bVYGNltQpKS_9wuaj9eIn6rglsWGWg,2223
|
643
642
|
tomwer/gui/utils/illustrations.py,sha256=SoLAGBIrdYAu44qIZM8kvC74naOTJzUyAxSUkpblyEw,3134
|
644
|
-
tomwer/gui/utils/inputwidget.py,sha256=
|
643
|
+
tomwer/gui/utils/inputwidget.py,sha256=E8S4XwuIFxdm7ylBzqQVcJtEYif5CgMx5RTAyQ9Vs8E,22505
|
645
644
|
tomwer/gui/utils/loadingmode.py,sha256=A9FeNacgnDFqhyrq5-qybCvV_NwGdXU-Skr_5vwoTZM,2928
|
646
645
|
tomwer/gui/utils/qt_utils.py,sha256=QMXte_vdCEwr4Vybt5sopczQ_OuRd1W5h6SydqFH0F8,538
|
647
646
|
tomwer/gui/utils/sandboxes.py,sha256=QfSRhL1KrFhS2Wr734Tzvp1OjTp82Ozc0ULr-JycFlI,6145
|
@@ -651,7 +650,7 @@ tomwer/gui/utils/slider.py,sha256=NLooxIa_2dMv60UAt_PV2BKcd15WuNv1EiV1JRdVcu0,21
|
|
651
650
|
tomwer/gui/utils/splashscreen.py,sha256=Wt6lDby3irZn6Vc52whPRTbJOzmMA66VH6d5cIXy_dI,489
|
652
651
|
tomwer/gui/utils/step.py,sha256=epEKQwj2byRFH_Lc2XUuMGOVcrKR0m1iFP7HPqb5iG0,5397
|
653
652
|
tomwer/gui/utils/unitsystem.py,sha256=0g6pYemy2MpkGQJGuuR9yCwbZ9mt3nPA1dqAvAqUHRo,5994
|
654
|
-
tomwer/gui/utils/utils.py,sha256=
|
653
|
+
tomwer/gui/utils/utils.py,sha256=FbzvEkJacSdZXe4lvrYOge9csQGx50hH-R8gbx5E0sI,2687
|
655
654
|
tomwer/gui/utils/vignettes.py,sha256=1HoABQcreptH6GIuo5nrLZmPcsTWuQlRuSW5IHJTRT4,17792
|
656
655
|
tomwer/gui/utils/waiterthread.py,sha256=lyRCzVDAyxquO3JbXxDhVTCv_YjzOQd7PAPsGWjKBrE,494
|
657
656
|
tomwer/gui/utils/lineselector/__init__.py,sha256=GZ847ef5X2wk_sAHxg6h24TarPYmb4NZjQI3jjkc7jE,75
|
@@ -849,7 +848,6 @@ tomwer/synctools/tests/test_darkRefs.py,sha256=1OgWaV-hgDmi4rkh0hxjCW_codBAnxNhp
|
|
849
848
|
tomwer/synctools/tests/test_foldertransfer.py,sha256=ZFIJWSjgYAWw3ktzamid5DJZNnMkAV6Pj72dKG69cJc,12024
|
850
849
|
tomwer/synctools/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
851
850
|
tomwer/synctools/utils/scanstages.py,sha256=vIUKVDSfM2UwPjjmZTiIN1tNg4antnGcSPv1aYapJCY,7830
|
852
|
-
tomwer/tasks/reconstruction/cleardarkflat.py,sha256=_V_x7W8vp1_AqqtQ9xk2VRgwlivn4IPTLEpWySjSZRE,1353
|
853
851
|
tomwer/tests/__init__.py,sha256=dPPaIvpzHssjwxsMzYJM_gxQ2e0cnRyQHXxi9ux6ZOY,19
|
854
852
|
tomwer/tests/conftest.py,sha256=0XlKfOrVtPg8VmyQn4BoK_mzcliFUtacDGLlZ5wD_PM,1912
|
855
853
|
tomwer/tests/datasets.py,sha256=QXQ3jSwgWzfq4CaELOSrk9kHg5GmrP7kGHsdOlNSEIE,336
|
@@ -906,9 +904,9 @@ tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_volume_viewer
|
|
906
904
|
tomwer/tests/test_ewoks/test_conversion.py,sha256=a8cEWbErXiFCAkaapi0jeEoRKYxcFQCoa-Jr_u77_OM,3656
|
907
905
|
tomwer/tests/test_ewoks/test_single_node_execution.py,sha256=YBUHfiAnkciv_kjj7biC5fOs7c7ofNImM_azGMn4LZM,2813
|
908
906
|
tomwer/tests/test_ewoks/test_workflows.py,sha256=Eq80eexf5NVL7SzvwctLOaUeuQ8V3vDiFiHgbJA4Yb8,4871
|
909
|
-
tomwer-1.4.
|
910
|
-
tomwer-1.4.
|
911
|
-
tomwer-1.4.
|
912
|
-
tomwer-1.4.
|
913
|
-
tomwer-1.4.
|
914
|
-
tomwer-1.4.
|
907
|
+
tomwer-1.4.18.dist-info/licenses/LICENSE,sha256=62p1wL0n9WMTu8x2YDv0odYgTqeSvTd9mQ0v6Mq7lzE,1876
|
908
|
+
tomwer-1.4.18.dist-info/METADATA,sha256=JzR1mNQUR3mOwD1uqJNJKCE62eAa0U5Vy67pb2qNc5o,13483
|
909
|
+
tomwer-1.4.18.dist-info/WHEEL,sha256=pxyMxgL8-pra_rKaQ4drOZAegBVuX-G_4nRHjjgWbmo,91
|
910
|
+
tomwer-1.4.18.dist-info/entry_points.txt,sha256=py3ZUWvGnWGc5c7Yhw_uBTm8Fmew0BDw3aQZnWMBNZI,500
|
911
|
+
tomwer-1.4.18.dist-info/top_level.txt,sha256=Yz5zKh0FPiImtzHYcPuztG1AO8-6KEpUWgoChGbA0Ys,21
|
912
|
+
tomwer-1.4.18.dist-info/RECORD,,
|
@@ -1,64 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
from __future__ import annotations
|
3
|
-
|
4
|
-
import shutil
|
5
|
-
import tempfile
|
6
|
-
import unittest
|
7
|
-
|
8
|
-
from tomoscan.io import HDF5File, get_swmr_mode
|
9
|
-
|
10
|
-
from tomwer.core.process.task import Task
|
11
|
-
from tomwer.core.utils.scanutils import MockNXtomo
|
12
|
-
|
13
|
-
|
14
|
-
class TestProcessRegistration(unittest.TestCase):
|
15
|
-
"""
|
16
|
-
Make sure utils link to the process registration are
|
17
|
-
correctly working
|
18
|
-
"""
|
19
|
-
|
20
|
-
class DummyProcess(Task):
|
21
|
-
@staticmethod
|
22
|
-
def program_name():
|
23
|
-
"""Name of the program used for this processing"""
|
24
|
-
return "dummy program"
|
25
|
-
|
26
|
-
@staticmethod
|
27
|
-
def program_version():
|
28
|
-
"""version of the program used for this processing"""
|
29
|
-
return "0.0.0"
|
30
|
-
|
31
|
-
@staticmethod
|
32
|
-
def definition():
|
33
|
-
"""definition of the process"""
|
34
|
-
return "no definition"
|
35
|
-
|
36
|
-
def setUp(self):
|
37
|
-
self.tmp_dir = tempfile.mkdtemp()
|
38
|
-
self.scan = MockNXtomo(scan_path=self.tmp_dir, n_proj=2).scan
|
39
|
-
|
40
|
-
def tearDown(self):
|
41
|
-
shutil.rmtree(self.tmp_dir)
|
42
|
-
|
43
|
-
def testGetProcessNodes(self):
|
44
|
-
"""insure it return the last dark process based on the processing index"""
|
45
|
-
|
46
|
-
for i in range(20):
|
47
|
-
Task._register_process(
|
48
|
-
self.scan.process_file,
|
49
|
-
process=self.DummyProcess,
|
50
|
-
entry=self.scan.entry,
|
51
|
-
configuration=None,
|
52
|
-
results={"output": i},
|
53
|
-
process_index=i,
|
54
|
-
)
|
55
|
-
|
56
|
-
with HDF5File(self.scan.process_file, "r", swmr=get_swmr_mode()) as h5f:
|
57
|
-
nodes = Task._get_process_nodes(
|
58
|
-
root_node=h5f[self.scan.entry], process=self.DummyProcess
|
59
|
-
)
|
60
|
-
self.assertEqual(len(nodes), 20)
|
61
|
-
self.assertTrue("/entry/tomwer_process_16" in nodes)
|
62
|
-
self.assertEqual(nodes["/entry/tomwer_process_16"], 16)
|
63
|
-
self.assertTrue("/entry/tomwer_process_1" in nodes)
|
64
|
-
self.assertEqual(nodes["/entry/tomwer_process_1"], 1)
|
@@ -1,42 +0,0 @@
|
|
1
|
-
"""
|
2
|
-
Contains task to clear reduced dark and flat frames
|
3
|
-
"""
|
4
|
-
|
5
|
-
from __future__ import annotations
|
6
|
-
|
7
|
-
from tomoscan.scanbase import TomoScanBase as TomoscanScanBase
|
8
|
-
|
9
|
-
from processview.core.manager import DatasetState, ProcessManager
|
10
|
-
from processview.core.superviseprocess import SuperviseProcess
|
11
|
-
|
12
|
-
from tomwer.tasks.task import Task
|
13
|
-
from tomwer.core.scan.scanbase import TomwerScanBase
|
14
|
-
from tomwer.core.scan.scanfactory import ScanFactory
|
15
|
-
from tomwer.core.utils.scanutils import data_identifier_to_scan
|
16
|
-
from tomwer.core.reconstruction.darkflat import params as dkrf_reconsparams
|
17
|
-
from tomwer.utils import docstring
|
18
|
-
|
19
|
-
|
20
|
-
class ClearReducedDarkAndFlat(
|
21
|
-
Task,
|
22
|
-
SuperviseProcess,
|
23
|
-
input_names=("data",),
|
24
|
-
output_names=("data",),
|
25
|
-
):
|
26
|
-
"""
|
27
|
-
Task to clear reduced darks and flats. Both on disk and on the object cache.
|
28
|
-
th goal of this task is to make sure the scan is cleared of any reduced frames to reprocess it later.
|
29
|
-
"""
|
30
|
-
|
31
|
-
def run(self):
|
32
|
-
scan = self.inputs.data
|
33
|
-
if not isinstance(scan, TomoscanScanBase):
|
34
|
-
raise TypeError(
|
35
|
-
f"scan should be an instance of {TomoscanScanBase}. Got {type(scan)}"
|
36
|
-
)
|
37
|
-
scan.set_reduced_flats(None)
|
38
|
-
scan.reduced_flats_infos = None
|
39
|
-
scan.set_reduced_darks(None)
|
40
|
-
scan.reduced_darks_infos = None
|
41
|
-
|
42
|
-
self.outputs.data = scan
|
File without changes
|
File without changes
|
File without changes
|