tomwer 1.4.1__py3-none-any.whl → 1.4.3__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.
- orangecontrib/tomwer/orange/managedprocess.py +7 -0
- orangecontrib/tomwer/widgets/edit/ImageKeyUpgraderOW.py +5 -4
- orangecontrib/tomwer/widgets/reconstruction/DarkRefAndCopyOW.py +0 -2
- tomwer/core/process/reconstruction/axis/axis.py +7 -5
- tomwer/core/process/reconstruction/nabu/nabuslices.py +35 -12
- tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_i_norm.py +110 -143
- tomwer/version.py +1 -1
- {tomwer-1.4.1.dist-info → tomwer-1.4.3.dist-info}/METADATA +2 -2
- {tomwer-1.4.1.dist-info → tomwer-1.4.3.dist-info}/RECORD +13 -13
- {tomwer-1.4.1.dist-info → tomwer-1.4.3.dist-info}/LICENSE +0 -0
- {tomwer-1.4.1.dist-info → tomwer-1.4.3.dist-info}/WHEEL +0 -0
- {tomwer-1.4.1.dist-info → tomwer-1.4.3.dist-info}/entry_points.txt +0 -0
- {tomwer-1.4.1.dist-info → tomwer-1.4.3.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,7 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
3
|
import functools
|
4
|
+
import logging
|
4
5
|
|
5
6
|
from ewoksorange.bindings import OWEwoksWidgetWithTaskStack
|
6
7
|
from ewoksorange.bindings.owwidgets import invalid_data
|
@@ -10,6 +11,8 @@ from processview.core.superviseprocess import SuperviseProcess
|
|
10
11
|
|
11
12
|
from orangecontrib.tomwer.widgets.utils import WidgetLongProcessing
|
12
13
|
|
14
|
+
_logger = logging.getLogger(__name__)
|
15
|
+
|
13
16
|
|
14
17
|
class _SuperviseMixIn(SuperviseProcess):
|
15
18
|
def __init__(self, process_id=None):
|
@@ -18,6 +21,10 @@ class _SuperviseMixIn(SuperviseProcess):
|
|
18
21
|
|
19
22
|
def setCaption(self, caption):
|
20
23
|
self.name = caption
|
24
|
+
try:
|
25
|
+
ProcessManager().process_renamed(process=self)
|
26
|
+
except Exception as e:
|
27
|
+
_logger.warning(f"Fail to update process name. Error is {e}")
|
21
28
|
|
22
29
|
def notify_skip(self, scan, details=None):
|
23
30
|
ProcessManager().notify_dataset_state(
|
@@ -78,6 +78,7 @@ class ImageKeyUpgraderOW(
|
|
78
78
|
|
79
79
|
def get_task_inputs(self):
|
80
80
|
task_inputs = super().get_task_inputs()
|
81
|
+
task_inputs["serialize_output_data"] = False
|
81
82
|
try:
|
82
83
|
scan = task_inputs["data"]
|
83
84
|
except Exception:
|
@@ -86,14 +87,14 @@ class ImageKeyUpgraderOW(
|
|
86
87
|
self.notify_pending(scan=scan)
|
87
88
|
return task_inputs
|
88
89
|
|
89
|
-
def _execute_ewoks_task(self, propagate):
|
90
|
+
def _execute_ewoks_task(self, propagate, log_missing_inputs=False):
|
90
91
|
task_arguments = self._get_task_arguments()
|
91
92
|
scan = task_arguments.get("inputs", {}).get("data", None)
|
92
93
|
if scan is not None:
|
93
94
|
self.notify_pending(scan=scan)
|
94
|
-
|
95
|
-
|
96
|
-
|
95
|
+
super()._execute_ewoks_task( # pylint: disable=E1123
|
96
|
+
propagate=propagate, log_missing_inputs=log_missing_inputs
|
97
|
+
)
|
97
98
|
|
98
99
|
def _notify_state(self):
|
99
100
|
try:
|
@@ -144,8 +144,6 @@ class DarkRefAndCopyOW(SuperviseOW, WidgetLongProcessing):
|
|
144
144
|
except Exception:
|
145
145
|
_logger.warning("fail to load reconstruction settings")
|
146
146
|
|
147
|
-
self.setCaption(self.windowTitle())
|
148
|
-
|
149
147
|
def __new__(cls, *args, **kwargs):
|
150
148
|
# ensure backward compatibility with 'static_input'
|
151
149
|
static_input = kwargs.get("stored_settings", {}).get("static_input", None)
|
@@ -56,7 +56,7 @@ def _absolute_pos_to_relative_with_warning(absolute_pos: float, det_width: int |
|
|
56
56
|
return absolute_pos_to_relative(absolute_pos=absolute_pos, det_width=det_width)
|
57
57
|
|
58
58
|
|
59
|
-
def adapt_tomwer_scan_to_nabu(scan: TomwerScanBase):
|
59
|
+
def adapt_tomwer_scan_to_nabu(scan: TomwerScanBase, do_flatfield: bool):
|
60
60
|
"""simple util to convert tomwer scan to a nabu DataAnalizer and
|
61
61
|
updating infos regarding flat and dark if needed
|
62
62
|
"""
|
@@ -65,7 +65,7 @@ def adapt_tomwer_scan_to_nabu(scan: TomwerScanBase):
|
|
65
65
|
try:
|
66
66
|
update_dataset_info_flats_darks(
|
67
67
|
dataset_infos,
|
68
|
-
flatfield_mode=
|
68
|
+
flatfield_mode=do_flatfield,
|
69
69
|
)
|
70
70
|
except ValueError as exception:
|
71
71
|
# nabu raise an error if no darks / flats set. But this can make sense at this stage if the NXtomo has no
|
@@ -429,11 +429,13 @@ class AxisTask(
|
|
429
429
|
else:
|
430
430
|
has_darks = scan.reduced_darks is not None and len(scan.reduced_darks) > 0
|
431
431
|
has_flats = scan.reduced_flats is not None and len(scan.reduced_flats) > 0
|
432
|
-
|
432
|
+
do_flatfield = has_darks and has_flats
|
433
433
|
res = estimate_cor(
|
434
434
|
method=mode.value,
|
435
|
-
dataset_info=adapt_tomwer_scan_to_nabu(
|
436
|
-
|
435
|
+
dataset_info=adapt_tomwer_scan_to_nabu(
|
436
|
+
scan=scan, do_flatfield=do_flatfield
|
437
|
+
),
|
438
|
+
do_flatfield=do_flatfield,
|
437
439
|
cor_options=scan.axis_params.get_nabu_cor_options_as_dict(),
|
438
440
|
)
|
439
441
|
# convert back to relative
|
@@ -445,13 +445,47 @@ def interpret_tomwer_configuration(config: dict, scan: TomwerScanBase | None) ->
|
|
445
445
|
return nabu_config
|
446
446
|
|
447
447
|
if "tomwer_slices" in config and scan is not None:
|
448
|
+
reconstruction_axis = NabuPlane.from_value(
|
449
|
+
config.get("reconstruction", {}).get("slice_plane", "XY")
|
450
|
+
)
|
448
451
|
slices = list(
|
449
452
|
NabuSliceMode.getSlices(
|
450
453
|
config["tomwer_slices"],
|
451
454
|
scan=scan,
|
452
|
-
axis=
|
455
|
+
axis=reconstruction_axis,
|
456
|
+
)
|
457
|
+
)
|
458
|
+
|
459
|
+
def filter_slice(slice_index: int, axis: NabuPlane):
|
460
|
+
"""remove slices that 'cannot' be reconstructed (out of bounds)"""
|
461
|
+
if axis is NabuPlane.XY:
|
462
|
+
index_max = scan.dim_2
|
463
|
+
elif axis in (NabuPlane.XZ, NabuPlane.YZ):
|
464
|
+
index_max = scan.dim_1
|
465
|
+
else:
|
466
|
+
raise ValueError
|
467
|
+
|
468
|
+
if index_max is None:
|
469
|
+
return True
|
470
|
+
|
471
|
+
index_max = index_max - 1
|
472
|
+
|
473
|
+
if slice_index > index_max:
|
474
|
+
_logger.error(
|
475
|
+
f"slice index {slice_index} requested. But slice index must be in 0-{index_max} - ignore this request"
|
476
|
+
)
|
477
|
+
return False
|
478
|
+
return True
|
479
|
+
|
480
|
+
slices = list(
|
481
|
+
filter(
|
482
|
+
lambda slice_index: filter_slice(
|
483
|
+
int(slice_index), axis=reconstruction_axis
|
484
|
+
),
|
485
|
+
slices,
|
453
486
|
)
|
454
487
|
)
|
488
|
+
|
455
489
|
else:
|
456
490
|
slices = []
|
457
491
|
|
@@ -464,17 +498,6 @@ def interpret_tomwer_configuration(config: dict, scan: TomwerScanBase | None) ->
|
|
464
498
|
else:
|
465
499
|
pag_dbs = (None,)
|
466
500
|
|
467
|
-
# remove slices that 'cannot' be reconstructed (out of bounds)
|
468
|
-
def filter_slice(slice_index: int):
|
469
|
-
if scan.dim_2 is not None and slice_index > scan.dim_2:
|
470
|
-
_logger.error(
|
471
|
-
f"slice index {slice_index} requested. But slice index must be in 0-{scan.dim_2} - ignore this request"
|
472
|
-
)
|
473
|
-
return False
|
474
|
-
return True
|
475
|
-
|
476
|
-
slices = list(filter(lambda slice_index: filter_slice(int(slice_index)), slices))
|
477
|
-
|
478
501
|
# by default add the slice 'None' which is the slice for the volume
|
479
502
|
slices.append(None)
|
480
503
|
nabu_config = get_nabu_config(config=config)
|
@@ -1,29 +1,24 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
from __future__ import annotations
|
3
3
|
|
4
|
-
import gc
|
5
4
|
import logging
|
6
5
|
import os
|
7
6
|
import pickle
|
8
|
-
import shutil
|
9
|
-
import tempfile
|
10
7
|
|
11
8
|
from orangecanvas.scheme.readwrite import literal_dumps
|
12
9
|
from processview.core.manager import DatasetState, ProcessManager
|
13
10
|
from silx.gui import qt
|
14
|
-
from silx.gui.utils.testutils import TestCaseQt
|
15
11
|
|
16
12
|
from orangecontrib.tomwer.widgets.reconstruction.SinoNormOW import (
|
17
|
-
SinoNormOW as
|
13
|
+
SinoNormOW as _SinoNormOW,
|
18
14
|
)
|
19
|
-
from tomwer.core import settings
|
20
|
-
from tomwer.core.utils.lbsram import mock_low_memory
|
21
15
|
from tomwer.core.utils.scanutils import MockNXtomo
|
16
|
+
from tomwer.tests.conftest import qtapp # noqa F401
|
22
17
|
|
23
18
|
logger = logging.getLogger(__name__)
|
24
19
|
|
25
20
|
|
26
|
-
class
|
21
|
+
class SinoNormOW(_SinoNormOW):
|
27
22
|
def __init__(self, parent=None):
|
28
23
|
self._scans_finished = []
|
29
24
|
super().__init__(parent)
|
@@ -49,142 +44,114 @@ class NormIOW(_NormIOW):
|
|
49
44
|
super().close()
|
50
45
|
|
51
46
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
self.widget.process(self.scan_1)
|
115
|
-
process_scalar_manually()
|
116
|
-
self.assertEqual(
|
117
|
-
self._process_manager.get_dataset_state(
|
118
|
-
dataset_id=self.scan_1.get_identifier(),
|
119
|
-
process=self.widget,
|
120
|
-
),
|
121
|
-
DatasetState.WAIT_USER_VALIDATION,
|
47
|
+
FRAME_DIM = 100
|
48
|
+
|
49
|
+
|
50
|
+
def create_scan(folder_name):
|
51
|
+
return MockNXtomo(
|
52
|
+
scan_path=folder_name,
|
53
|
+
n_ini_proj=20,
|
54
|
+
n_proj=20,
|
55
|
+
n_alignement_proj=2,
|
56
|
+
create_final_flat=False,
|
57
|
+
create_ini_dark=True,
|
58
|
+
create_ini_flat=True,
|
59
|
+
n_refs=1,
|
60
|
+
dim=FRAME_DIM,
|
61
|
+
).scan
|
62
|
+
|
63
|
+
|
64
|
+
def test_SinoNormOW(
|
65
|
+
qtapp, # noqa F811
|
66
|
+
tmp_path,
|
67
|
+
):
|
68
|
+
source_dir = tmp_path / "source"
|
69
|
+
source_dir.mkdir()
|
70
|
+
|
71
|
+
# create scans
|
72
|
+
scan_1 = create_scan(os.path.join(source_dir, "scan_1"))
|
73
|
+
scan_2 = create_scan(os.path.join(source_dir, "scan_2"))
|
74
|
+
scan_3 = create_scan(os.path.join(source_dir, "scan_3"))
|
75
|
+
process_manager = ProcessManager()
|
76
|
+
|
77
|
+
widget = SinoNormOW()
|
78
|
+
widget.show()
|
79
|
+
|
80
|
+
# test serialization
|
81
|
+
pickle.dumps(widget.getConfiguration())
|
82
|
+
|
83
|
+
# test literal dumps
|
84
|
+
widget._updateSettings()
|
85
|
+
literal_dumps(widget._ewoks_default_inputs)
|
86
|
+
|
87
|
+
# test behavior when the widget is unlocked
|
88
|
+
"""Test result when used with some interaction"""
|
89
|
+
widget.setLocked(False)
|
90
|
+
|
91
|
+
def process_scalar_manually():
|
92
|
+
widget.setCurrentMethod("division")
|
93
|
+
widget.setCurrentSource("manual ROI")
|
94
|
+
|
95
|
+
qt.QApplication.processEvents()
|
96
|
+
widget.setROI(start_x=0, end_x=10, start_y=0, end_y=10)
|
97
|
+
qt.QApplication.processEvents()
|
98
|
+
widget.compute()
|
99
|
+
widget.wait_processing(5000)
|
100
|
+
qt.QApplication.processEvents()
|
101
|
+
|
102
|
+
widget.process(scan_1)
|
103
|
+
process_scalar_manually()
|
104
|
+
assert (
|
105
|
+
process_manager.get_dataset_state(
|
106
|
+
dataset_id=scan_1.get_identifier(),
|
107
|
+
process=widget,
|
122
108
|
)
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
),
|
132
|
-
|
109
|
+
== DatasetState.WAIT_USER_VALIDATION
|
110
|
+
)
|
111
|
+
|
112
|
+
widget.process(scan_2)
|
113
|
+
process_scalar_manually()
|
114
|
+
assert len(widget.scans_finished) == 0
|
115
|
+
assert (
|
116
|
+
process_manager.get_dataset_state(
|
117
|
+
dataset_id=scan_1.get_identifier(),
|
118
|
+
process=widget,
|
133
119
|
)
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
),
|
139
|
-
|
120
|
+
== DatasetState.SKIPPED
|
121
|
+
)
|
122
|
+
assert (
|
123
|
+
process_manager.get_dataset_state(
|
124
|
+
dataset_id=scan_2.get_identifier(),
|
125
|
+
process=widget,
|
140
126
|
)
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
),
|
150
|
-
|
127
|
+
== DatasetState.WAIT_USER_VALIDATION
|
128
|
+
)
|
129
|
+
|
130
|
+
widget.process(scan_3)
|
131
|
+
process_scalar_manually()
|
132
|
+
widget.validateCurrentScan()
|
133
|
+
assert (
|
134
|
+
process_manager.get_dataset_state(
|
135
|
+
dataset_id=scan_3.get_identifier(),
|
136
|
+
process=widget,
|
137
|
+
)
|
138
|
+
== DatasetState.SUCCEED
|
139
|
+
)
|
140
|
+
|
141
|
+
# test behavior when the widget is locked
|
142
|
+
|
143
|
+
widget.setLocked(True)
|
144
|
+
for scan in (scan_1, scan_2, scan_3):
|
145
|
+
widget.process(scan)
|
146
|
+
widget.wait_processing(5000)
|
147
|
+
qt.QApplication.processEvents()
|
148
|
+
|
149
|
+
for scan in (scan_1, scan_2, scan_3):
|
150
|
+
# test status is SUCCEED
|
151
|
+
assert (
|
152
|
+
process_manager.get_dataset_state(
|
153
|
+
dataset_id=scan.get_identifier(),
|
154
|
+
process=widget,
|
155
|
+
)
|
156
|
+
== DatasetState.SUCCEED
|
151
157
|
)
|
152
|
-
|
153
|
-
def testTestLbsram(self):
|
154
|
-
"""Test scan are all validated if 'low memory on lbsram' scenario is
|
155
|
-
activated"""
|
156
|
-
mock_low_memory(True)
|
157
|
-
settings.mock_lsbram(True)
|
158
|
-
for scan in (self.scan_1, self.scan_2, self.scan_3):
|
159
|
-
self.widget.process(scan)
|
160
|
-
self.widget.wait_processing(5000)
|
161
|
-
self.qapp.processEvents()
|
162
|
-
|
163
|
-
for scan in (self.scan_1, self.scan_2, self.scan_3):
|
164
|
-
with self.subTest(scan=str(scan)):
|
165
|
-
self.assertEqual(
|
166
|
-
self._process_manager.get_dataset_state(
|
167
|
-
dataset_id=scan.get_identifier(),
|
168
|
-
process=self.widget,
|
169
|
-
),
|
170
|
-
DatasetState.SKIPPED,
|
171
|
-
)
|
172
|
-
|
173
|
-
def testLocked(self):
|
174
|
-
"""Test scan are all validated if the widget is lock"""
|
175
|
-
self.widget.setLocked(True)
|
176
|
-
for scan in (self.scan_1, self.scan_2, self.scan_3):
|
177
|
-
self.widget.process(scan)
|
178
|
-
self.widget.wait_processing(5000)
|
179
|
-
self.qapp.processEvents()
|
180
|
-
|
181
|
-
for scan in (self.scan_1, self.scan_2, self.scan_3):
|
182
|
-
# test status is SUCCEED
|
183
|
-
with self.subTest(scan=str(scan)):
|
184
|
-
self.assertEqual(
|
185
|
-
self._process_manager.get_dataset_state(
|
186
|
-
dataset_id=scan.get_identifier(),
|
187
|
-
process=self.widget,
|
188
|
-
),
|
189
|
-
DatasetState.SUCCEED,
|
190
|
-
)
|
tomwer/version.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: tomwer
|
3
|
-
Version: 1.4.
|
3
|
+
Version: 1.4.3
|
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
|
@@ -28,7 +28,7 @@ Requires-Dist: silx[full]>=2.0
|
|
28
28
|
Requires-Dist: tomoscan>=2.1.0a18
|
29
29
|
Requires-Dist: nxtomo>=1.3.0dev4
|
30
30
|
Requires-Dist: nxtomomill>=1.1.0a0
|
31
|
-
Requires-Dist: processview>=1.
|
31
|
+
Requires-Dist: processview>=1.5.0
|
32
32
|
Requires-Dist: ewoks>=0.1.1
|
33
33
|
Requires-Dist: sluurp>=0.4.1
|
34
34
|
Requires-Dist: packaging
|
@@ -1,7 +1,7 @@
|
|
1
1
|
orangecontrib/tomwer/__init__.py,sha256=B4DXy1gY_wXmNYa2aOfapmJb2mEuCAjoaNEGnpBs70g,148
|
2
2
|
orangecontrib/tomwer/state_summary.py,sha256=5_dPzweL3r0ye4ZfJo6IV2ThJI8fQhWoO2ySdJJajj8,1711
|
3
3
|
orangecontrib/tomwer/orange/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
|
-
orangecontrib/tomwer/orange/managedprocess.py,sha256=
|
4
|
+
orangecontrib/tomwer/orange/managedprocess.py,sha256=0OMlOYnNq5hC-t6CWtDaERQ9k0bNMGaLzVT9fDyM1LE,3512
|
5
5
|
orangecontrib/tomwer/orange/settings.py,sha256=osaHvnyE1NJwAWHQoKHtageey1giRQCdBmpTY_zeWoA,720
|
6
6
|
orangecontrib/tomwer/tests/TestAcquisition.py,sha256=57fI2tTnI7viysekP8aFQx2gggD9o0Quu6l0eW7zdyE,7782
|
7
7
|
orangecontrib/tomwer/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -110,7 +110,7 @@ orangecontrib/tomwer/widgets/debugtools/icons/inspector.svg,sha256=GPx4Xoo8dZGr0
|
|
110
110
|
orangecontrib/tomwer/widgets/debugtools/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
111
111
|
orangecontrib/tomwer/widgets/edit/DarkFlatPatchOW.py,sha256=fJuVlzd5mBRWOwKxRltlZqBV44HisF6O51aT0BPBwzM,5327
|
112
112
|
orangecontrib/tomwer/widgets/edit/ImageKeyEditorOW.py,sha256=qTI6B3cA-THpW3I7GJsP808vMCGX2XoQ-LzUqBeyvtY,3506
|
113
|
-
orangecontrib/tomwer/widgets/edit/ImageKeyUpgraderOW.py,sha256=
|
113
|
+
orangecontrib/tomwer/widgets/edit/ImageKeyUpgraderOW.py,sha256=X9IXgm65Nq1TeDnYYIuyo8KlYfda2LQ38MtX_9rLQj8,3672
|
114
114
|
orangecontrib/tomwer/widgets/edit/NXtomoEditorOW.py,sha256=PPSP8kqnkmHeeY4RW9IjH9n848W5MkCEQp4Emw8D17U,3744
|
115
115
|
orangecontrib/tomwer/widgets/edit/__init__.py,sha256=Vi59fYTOMhrLXwQ3OkMIonmHx4rG_UUnutZPiax_rGY,1555
|
116
116
|
orangecontrib/tomwer/widgets/edit/icons/image_key_editor.png,sha256=Fl6PEgzY9Gjs6Sh_vMWHCXVtNJ_wiQ5e9g58rZI64ng,878
|
@@ -150,7 +150,7 @@ orangecontrib/tomwer/widgets/other/icons/hub.svg,sha256=9EYoBKY-P-cO17nM48OPA9VD
|
|
150
150
|
orangecontrib/tomwer/widgets/other/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
151
151
|
orangecontrib/tomwer/widgets/reconstruction/AxisOW.py,sha256=Qz6r34NdNgBvn-UwbIhPQDDCgtlXa_rSLnCEIuI_mrQ,20067
|
152
152
|
orangecontrib/tomwer/widgets/reconstruction/CastNabuVolumeOW.py,sha256=E9hTJH_WfMsbOpKsGworVkqc16kWIRL1ajZbpnT_IAI,7614
|
153
|
-
orangecontrib/tomwer/widgets/reconstruction/DarkRefAndCopyOW.py,sha256=
|
153
|
+
orangecontrib/tomwer/widgets/reconstruction/DarkRefAndCopyOW.py,sha256=flRgeOXimjzKEtL6h-0hwaa04G-BqMydv0Ju5r0Reao,9696
|
154
154
|
orangecontrib/tomwer/widgets/reconstruction/NabuHelicalPrepareWeightsDoubleOW.py,sha256=NjMC0BEmPhDZ795Q-yyL81-hluAyGE8MRiq8xMdqAqY,6233
|
155
155
|
orangecontrib/tomwer/widgets/reconstruction/NabuOW.py,sha256=UvCNwpAtQ1AdCl5kUw13QsKxesIDV8SIjIW9cWCXIMc,9946
|
156
156
|
orangecontrib/tomwer/widgets/reconstruction/NabuVolumeOW.py,sha256=j-jDhgv6jvNOBz9X4vwGA-4UYbQ5I2FWSv6X2Eczrfg,17077
|
@@ -220,7 +220,7 @@ orangecontrib/tomwer/widgets/visualization/tests/__init__.py,sha256=47DEQpj8HBSa
|
|
220
220
|
tomwer/__init__.py,sha256=GeLSeY4__z-HQZu1y4ptZ5Y1OeXFvG8kuEwWXhkeaMA,360
|
221
221
|
tomwer/__main__.py,sha256=7tCADiS4u7k1PCxFhlRAcYSIOpxQTGUTx8sCEQ-hi1E,8707
|
222
222
|
tomwer/utils.py,sha256=7h7dEgKAEUmQ43jkULvC1B9Adl55nkCty-SEKUKCl4U,7008
|
223
|
-
tomwer/version.py,sha256=
|
223
|
+
tomwer/version.py,sha256=a1loEqEj9NVb3IVtlWL8YHxJkt3I_gA4e_oclG0NANo,4386
|
224
224
|
tomwer/app/__init__.py,sha256=RYMB2YhbQaoMXC8W-oOyfZ_Y1vmHD7L13YkKeAMuShM,85
|
225
225
|
tomwer/app/axis.py,sha256=OhDgMj_gS-45PnjKBTyOCOkmZ1Iy-Tb6Dj66mzQg0sU,5827
|
226
226
|
tomwer/app/canvas.py,sha256=sM368nniUwbQXLA-oNCg1iNwMMol_ZGTKbiw8WsC4yw,1539
|
@@ -321,7 +321,7 @@ tomwer/core/process/reconstruction/params_cache.py,sha256=GTchgCH1Db7fuYsSGxSF6w
|
|
321
321
|
tomwer/core/process/reconstruction/paramsbase.py,sha256=6PjFcO0yYs_apgv2MImGSDLsBgQ7UeK2TSBLz28HYgc,6344
|
322
322
|
tomwer/core/process/reconstruction/axis/__init__.py,sha256=VSQkN6M6JvM_c55OiboNyJUW8Zs1wkkQgv1JYmzvIr8,80
|
323
323
|
tomwer/core/process/reconstruction/axis/anglemode.py,sha256=4IFrqYSeWEMs14GZHipr1u9Njm2fLhF7qJHq9_kWfeY,537
|
324
|
-
tomwer/core/process/reconstruction/axis/axis.py,sha256=
|
324
|
+
tomwer/core/process/reconstruction/axis/axis.py,sha256=RjK_LX9rowqAx7J3VOE37wFmviH5qUSRBWyMv7CBo3A,17097
|
325
325
|
tomwer/core/process/reconstruction/axis/mode.py,sha256=Bp3Kz5fK9lIZdDvGlc3AAFoDo6d4fqezV37cX9lPiBI,9541
|
326
326
|
tomwer/core/process/reconstruction/axis/params.py,sha256=yabw4l2TDyssc0xwXS_WQ7n3hEoDtAJtl_chDr_BAhw,28276
|
327
327
|
tomwer/core/process/reconstruction/axis/projectiontype.py,sha256=U8ZZA2o3tONpUkzWLL-MXTahtJGJMQofpJOVkuDNc8Q,184
|
@@ -336,7 +336,7 @@ tomwer/core/process/reconstruction/nabu/castvolume.py,sha256=4VEVnJxWfG8_Ku2uhUS
|
|
336
336
|
tomwer/core/process/reconstruction/nabu/helical.py,sha256=gauUkoPiShvnvMQrCQXv28g0yLe-GceML5kYMSXmNIg,1997
|
337
337
|
tomwer/core/process/reconstruction/nabu/nabucommon.py,sha256=s1KxEzHQJ09JEWP3_EvKFe51k1boi_a8YRlbs3TppdE,23338
|
338
338
|
tomwer/core/process/reconstruction/nabu/nabuscores.py,sha256=e5tRG1QtmVAdXb8KHMTMtBXA3KQXqKKcqipY2HzMURg,25275
|
339
|
-
tomwer/core/process/reconstruction/nabu/nabuslices.py,sha256=
|
339
|
+
tomwer/core/process/reconstruction/nabu/nabuslices.py,sha256=WAmNlfyRWL0zhEE8jMjMg7WyzPM4BcBA6bWpaH8O53A,32101
|
340
340
|
tomwer/core/process/reconstruction/nabu/nabuvolume.py,sha256=Fn0tkPDTDJQaMEJA4LzpPp0ZtG4MIu9YN82-jesxRKo,20052
|
341
341
|
tomwer/core/process/reconstruction/nabu/plane.py,sha256=366gWprWw8Rlob8jsMn753CqgudruvvVauU0ihH2lU4,400
|
342
342
|
tomwer/core/process/reconstruction/nabu/settings.py,sha256=3AJpxVQbJziw4v6F26Ppz8Q9vc9ZNepTWygqpCAbIEM,955
|
@@ -885,7 +885,7 @@ tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_axis.py,sha2
|
|
885
885
|
tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_cast_volumeow.py,sha256=4urO8fmzwNUyaThujIOX7X37g-_DEtTerpirgMz_47o,1612
|
886
886
|
tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_dark_refs_widget.py,sha256=qCiY4Gm_z6OsoLjVDLpHv4W1zCYNiBDT5QSCvLPzrOc,4925
|
887
887
|
tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_delta_beta_selector.py,sha256=BJcjGemqzqwjqBVVCMLB_ASDWGtAyQUO6cl4m2N9m2E,407
|
888
|
-
tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_i_norm.py,sha256=
|
888
|
+
tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_i_norm.py,sha256=909ajdn_p0MHZ7N6rLGu_E9hlrEwGYxTkJft4RLDbjU,4101
|
889
889
|
tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_nabu_helical_prepare_weights_double.py,sha256=ofao24KYcPCWoxR771MtfKv4EY3TjFLFgRtJtEgKYrI,621
|
890
890
|
tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_nabu_volume.py,sha256=0g0eCp6RDQlRSZe0me4LvGxTA66ChRtwQjCAWMmsvj8,2298
|
891
891
|
tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_nabu_widget.py,sha256=_yhT_ih0VIBsm2OdLObuZgjpLf38ILXvzn7pOTtxdl8,3780
|
@@ -903,9 +903,9 @@ tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_volume_viewer
|
|
903
903
|
tomwer/tests/test_ewoks/test_conversion.py,sha256=a8cEWbErXiFCAkaapi0jeEoRKYxcFQCoa-Jr_u77_OM,3656
|
904
904
|
tomwer/tests/test_ewoks/test_single_node_execution.py,sha256=YBUHfiAnkciv_kjj7biC5fOs7c7ofNImM_azGMn4LZM,2813
|
905
905
|
tomwer/tests/test_ewoks/test_workflows.py,sha256=Eq80eexf5NVL7SzvwctLOaUeuQ8V3vDiFiHgbJA4Yb8,4871
|
906
|
-
tomwer-1.4.
|
907
|
-
tomwer-1.4.
|
908
|
-
tomwer-1.4.
|
909
|
-
tomwer-1.4.
|
910
|
-
tomwer-1.4.
|
911
|
-
tomwer-1.4.
|
906
|
+
tomwer-1.4.3.dist-info/LICENSE,sha256=62p1wL0n9WMTu8x2YDv0odYgTqeSvTd9mQ0v6Mq7lzE,1876
|
907
|
+
tomwer-1.4.3.dist-info/METADATA,sha256=Ld2sbq0AQqYvZRs3bw6o5BjDIzkFYxLOMzOXiANnUiY,13377
|
908
|
+
tomwer-1.4.3.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
909
|
+
tomwer-1.4.3.dist-info/entry_points.txt,sha256=py3ZUWvGnWGc5c7Yhw_uBTm8Fmew0BDw3aQZnWMBNZI,500
|
910
|
+
tomwer-1.4.3.dist-info/top_level.txt,sha256=Yz5zKh0FPiImtzHYcPuztG1AO8-6KEpUWgoChGbA0Ys,21
|
911
|
+
tomwer-1.4.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|