tomwer 1.4.8__py3-none-any.whl → 1.4.10__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/widgets/cluster/FutureSupervisorOW.py +78 -35
- orangecontrib/tomwer/widgets/control/DataListenerOW.py +3 -4
- tomwer/app/canvas_launcher/utils.py +11 -2
- tomwer/core/process/control/datalistener/rpcserver.py +2 -2
- tomwer/core/process/control/nxtomomill.py +1 -0
- tomwer/core/process/reconstruction/nabu/castvolume.py +1 -1
- tomwer/core/settings.py +13 -15
- tomwer/version.py +1 -1
- {tomwer-1.4.8.dist-info → tomwer-1.4.10.dist-info}/METADATA +1 -1
- {tomwer-1.4.8.dist-info → tomwer-1.4.10.dist-info}/RECORD +14 -14
- {tomwer-1.4.8.dist-info → tomwer-1.4.10.dist-info}/WHEEL +1 -1
- {tomwer-1.4.8.dist-info → tomwer-1.4.10.dist-info}/LICENSE +0 -0
- {tomwer-1.4.8.dist-info → tomwer-1.4.10.dist-info}/entry_points.txt +0 -0
- {tomwer-1.4.8.dist-info → tomwer-1.4.10.dist-info}/top_level.txt +0 -0
@@ -1,30 +1,54 @@
|
|
1
|
-
|
1
|
+
# coding: utf-8
|
2
|
+
# /*##########################################################################
|
3
|
+
#
|
4
|
+
# Copyright (c) 2016-2017 European Synchrotron Radiation Facility
|
5
|
+
#
|
6
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
|
+
# of this software and associated documentation files (the "Software"), to deal
|
8
|
+
# in the Software without restriction, including without limitation the rights
|
9
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10
|
+
# copies of the Software, and to permit persons to whom the Software is
|
11
|
+
# furnished to do so, subject to the following conditions:
|
12
|
+
#
|
13
|
+
# The above copyright notice and this permission notice shall be included in
|
14
|
+
# all copies or substantial portions of the Software.
|
15
|
+
#
|
16
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22
|
+
# THE SOFTWARE.
|
23
|
+
#
|
24
|
+
# ###########################################################################*/
|
25
|
+
|
26
|
+
__authors__ = ["H. Payno"]
|
27
|
+
__license__ = "MIT"
|
28
|
+
__date__ = "14/10/2021"
|
29
|
+
|
2
30
|
|
3
31
|
import time
|
4
32
|
|
5
33
|
from orangewidget import gui
|
6
|
-
|
7
|
-
|
8
|
-
from orangecontrib.tomwer.orange.managedprocess import TomwerWithStackStack
|
9
|
-
from ewokscore.missing_data import MISSING_DATA
|
10
|
-
from ewoksorange.gui.orange_imports import Input
|
11
|
-
|
34
|
+
from orangewidget.settings import Setting
|
35
|
+
from orangewidget.widget import Input, Output, OWBaseWidget
|
12
36
|
from processview.core.manager import DatasetState, ProcessManager
|
13
37
|
from processview.core.superviseprocess import SuperviseProcess
|
14
38
|
from silx.gui import qt
|
15
39
|
from silx.gui.utils.concurrent import submitToQtMainThread
|
16
40
|
|
17
41
|
from tomwer.core.futureobject import FutureTomwerObject
|
42
|
+
from tomwer.core.scan.scanbase import TomwerScanBase
|
43
|
+
from tomwer.core.volume.volumebase import TomwerVolumeBase
|
18
44
|
from tomwer.gui.cluster.supervisor import (
|
19
45
|
FutureTomwerScanObserverWidget as _FutureTomwerScanObserverWidget,
|
20
46
|
)
|
21
|
-
from tomwer.core.process.
|
47
|
+
from tomwer.core.process.drac.processeddataset import DracReconstructedVolumeDataset
|
48
|
+
from tomwer.core.volume.volumefactory import VolumeFactory
|
22
49
|
|
23
50
|
|
24
|
-
class FutureSupervisorOW(
|
25
|
-
TomwerWithStackStack,
|
26
|
-
ewokstaskclass=FutureSupervisorTask,
|
27
|
-
):
|
51
|
+
class FutureSupervisorOW(OWBaseWidget, openclass=True):
|
28
52
|
"""
|
29
53
|
Orange widget to define a slurm cluster as input of other
|
30
54
|
widgets (based on nabu for now)
|
@@ -51,9 +75,10 @@ class FutureSupervisorOW(
|
|
51
75
|
want_control_area = False
|
52
76
|
resizing_enabled = True
|
53
77
|
|
78
|
+
_ewoks_default_inputs = Setting(dict())
|
79
|
+
|
54
80
|
class Inputs:
|
55
|
-
|
56
|
-
future_tomo_obj = Input(
|
81
|
+
future_in = Input(
|
57
82
|
name="future_tomo_obj",
|
58
83
|
type=FutureTomwerObject,
|
59
84
|
doc="data with some remote processing",
|
@@ -61,6 +86,15 @@ class FutureSupervisorOW(
|
|
61
86
|
default=True,
|
62
87
|
)
|
63
88
|
|
89
|
+
class Outputs:
|
90
|
+
data = Output(name="data", type=TomwerScanBase)
|
91
|
+
volume = Output(name="volume", type=TomwerVolumeBase)
|
92
|
+
data_portal_processed_datasets = Output(
|
93
|
+
name="data_portal_processed_datasets",
|
94
|
+
type=tuple,
|
95
|
+
doc="data portal processed data to be saved",
|
96
|
+
)
|
97
|
+
|
64
98
|
def __init__(self, parent=None):
|
65
99
|
super().__init__(parent)
|
66
100
|
# gui
|
@@ -92,29 +126,38 @@ class FutureSupervisorOW(
|
|
92
126
|
raise TypeError(
|
93
127
|
f"future_tomo_obj is expected to be an instance of {FutureTomwerObject} and not {type(future_tomo_obj)}"
|
94
128
|
)
|
95
|
-
self.
|
96
|
-
self.execute_ewoks_task()
|
97
|
-
|
98
|
-
def handleNewSignals(self) -> None:
|
99
|
-
"""Invoked by the workflow signal propagation manager after all
|
100
|
-
signals handlers have been called.
|
101
|
-
|
102
|
-
note: this widget can receive two signals: 'dataset' and 'colormap'. The 'colormap' is handled by
|
103
|
-
orange directly while the 'dataset' signal is handled by the ewoks task.
|
104
|
-
This function will be only triggered when the 'dataset' signal is send
|
105
|
-
"""
|
106
|
-
# update GUI from received future_tomo_obj
|
107
|
-
# warning: this code will work because the task has only one input.
|
108
|
-
# so we can pass it directly to the widget.
|
109
|
-
# this won't be the case the task can have several input.
|
110
|
-
future_tomo_obj = self.get_task_input_value("future_tomo_obj", MISSING_DATA)
|
111
|
-
if future_tomo_obj is not MISSING_DATA:
|
112
|
-
self._widget.addFutureTomoObj(future_tomo_obj=future_tomo_obj)
|
129
|
+
self._futureHasBeenConverted(future_tomo_obj, future_tomo_obj.tomo_obj)
|
113
130
|
|
114
|
-
@Inputs.
|
131
|
+
@Inputs.future_in
|
115
132
|
def add(self, future_tomo_obj, signal_id=None):
|
116
|
-
|
117
|
-
|
133
|
+
if future_tomo_obj is not None:
|
134
|
+
self._widget.addFutureTomoObj(future_tomo_obj=future_tomo_obj)
|
135
|
+
|
136
|
+
def _futureHasBeenConverted(self, future_tomo_obj, tomo_obj):
|
137
|
+
# clean client to free resources
|
138
|
+
self._widget.removeFutureTomoObj(future_tomo_obj=future_tomo_obj)
|
139
|
+
if tomo_obj is not None:
|
140
|
+
if isinstance(tomo_obj, TomwerScanBase):
|
141
|
+
self.Outputs.data.send(tomo_obj)
|
142
|
+
|
143
|
+
def build_drac_dataset(vol_id):
|
144
|
+
volume = VolumeFactory.create_tomo_object_from_identifier(vol_id)
|
145
|
+
return DracReconstructedVolumeDataset(
|
146
|
+
tomo_obj=volume,
|
147
|
+
source_scan=tomo_obj,
|
148
|
+
)
|
149
|
+
|
150
|
+
self.Outputs.data_portal_processed_datasets.send(
|
151
|
+
tuple(
|
152
|
+
[
|
153
|
+
build_drac_dataset(vol_id=vol_id)
|
154
|
+
for vol_id in tomo_obj.latest_vol_reconstructions
|
155
|
+
]
|
156
|
+
)
|
157
|
+
)
|
158
|
+
|
159
|
+
elif isinstance(tomo_obj, TomwerVolumeBase):
|
160
|
+
self.Outputs.volume.send(tomo_obj)
|
118
161
|
|
119
162
|
|
120
163
|
class FutureTomwerObjectObserverWidget(
|
@@ -139,9 +139,8 @@ class DataListenerOW(
|
|
139
139
|
|
140
140
|
def create_default_config():
|
141
141
|
configuration = HDF5Config()
|
142
|
-
|
143
|
-
|
144
|
-
configuration.bam_single_file = True
|
142
|
+
configuration.bam_single_file = True
|
143
|
+
configuration.no_master_file = True
|
145
144
|
return configuration
|
146
145
|
|
147
146
|
if cfg_file in (None, ""):
|
@@ -150,7 +149,7 @@ class DataListenerOW(
|
|
150
149
|
try:
|
151
150
|
config = HDF5Config.from_cfg_file(cfg_file)
|
152
151
|
except Exception as e:
|
153
|
-
logger.warning(f"Fail to load
|
152
|
+
logger.warning(f"Fail to load configuration file. Error is {e}")
|
154
153
|
config = create_default_config()
|
155
154
|
|
156
155
|
return config
|
@@ -1,5 +1,6 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
|
+
from importlib.metadata import version as get_version
|
3
4
|
import tomoscan.version
|
4
5
|
|
5
6
|
import ewokscore
|
@@ -7,6 +8,7 @@ import ewoksorange
|
|
7
8
|
import tomwer.version
|
8
9
|
import sluurp
|
9
10
|
|
11
|
+
|
10
12
|
try:
|
11
13
|
import nxtomomill.version
|
12
14
|
except ImportError:
|
@@ -40,8 +42,15 @@ def get_tomotools_stack_versions() -> dict[str, str]:
|
|
40
42
|
if has_nxtomomill:
|
41
43
|
stack["nxtomomill"] = nxtomomill.version.version
|
42
44
|
stack["tomoscan"] = tomoscan.version.version
|
43
|
-
|
44
|
-
|
45
|
+
try:
|
46
|
+
stack["ewokscore"] = ewokscore.__version__
|
47
|
+
except AttributeError:
|
48
|
+
stack["ewokscore"] = get_version("ewokscore")
|
49
|
+
|
50
|
+
try:
|
51
|
+
stack["ewoksorange"] = ewoksorange.__version__
|
52
|
+
except AttributeError:
|
53
|
+
stack["ewoksorange"] = get_version("ewoksorange")
|
45
54
|
stack["sluurp"] = sluurp.__version__
|
46
55
|
|
47
56
|
return stack
|
@@ -257,7 +257,7 @@ def send_signal_to_local_rpc_servers(signal, port: int, extended_find: bool = Tr
|
|
257
257
|
proc.send_signal(signal)
|
258
258
|
found = True
|
259
259
|
return
|
260
|
-
except (
|
260
|
+
except (PermissionError, psutil.AccessDenied):
|
261
261
|
pass
|
262
262
|
if not extended_find:
|
263
263
|
return
|
@@ -272,5 +272,5 @@ def send_signal_to_local_rpc_servers(signal, port: int, extended_find: bool = Tr
|
|
272
272
|
f"process pid: {proc.pid} - {proc.name()} seems to be one occupying port {port}"
|
273
273
|
)
|
274
274
|
return
|
275
|
-
except (
|
275
|
+
except (PermissionError, psutil.AccessDenied):
|
276
276
|
pass
|
@@ -85,6 +85,7 @@ class H5ToNxProcess(
|
|
85
85
|
"h5_to_nx_configuration should be a dict or an instance of {HDF5Config}"
|
86
86
|
)
|
87
87
|
config.bam_single_file = True
|
88
|
+
config.no_master_file = True
|
88
89
|
try:
|
89
90
|
convs = nxtomomill_converter.from_h5_to_nx(
|
90
91
|
configuration=config, progress=self.progress
|
@@ -194,7 +194,7 @@ class CastVolumeTask(
|
|
194
194
|
)
|
195
195
|
if overwrite:
|
196
196
|
command += " --overwrite"
|
197
|
-
command += f" --
|
197
|
+
command += f" --output-data-type={str(output_data_type)}"
|
198
198
|
if data_min is not None:
|
199
199
|
command += f" --data_min={data_min}"
|
200
200
|
if data_max is not None:
|
tomwer/core/settings.py
CHANGED
@@ -90,7 +90,7 @@ class SlurmSettingsMode(_Enum):
|
|
90
90
|
class SlurmSettings:
|
91
91
|
# Default slurm cluster configuration
|
92
92
|
|
93
|
-
N_CORES_PER_TASK =
|
93
|
+
N_CORES_PER_TASK = 16
|
94
94
|
"""Number of CPU per worker"""
|
95
95
|
|
96
96
|
N_TASKS = 1
|
@@ -130,13 +130,13 @@ class DefaultSlurmSettingsCastVolume(SlurmSettings):
|
|
130
130
|
default proposed configuration for casting a volume remotely
|
131
131
|
"""
|
132
132
|
|
133
|
-
|
133
|
+
N_JOBS = 1
|
134
134
|
|
135
|
-
|
135
|
+
N_GPUS_PER_WORKER = 0
|
136
136
|
|
137
137
|
MEMORY_PER_WORKER = 128 # memory in GB
|
138
138
|
|
139
|
-
PARTITION = "nice
|
139
|
+
PARTITION = "nice"
|
140
140
|
|
141
141
|
|
142
142
|
class DefaultSlurmSettingsSliceReconstruction(SlurmSettings):
|
@@ -144,19 +144,15 @@ class DefaultSlurmSettingsSliceReconstruction(SlurmSettings):
|
|
144
144
|
default proposed configuration for reconstructing a single slice remotely
|
145
145
|
"""
|
146
146
|
|
147
|
-
|
148
|
-
|
149
|
-
PARTITION = None
|
147
|
+
N_JOBS = 1
|
150
148
|
|
149
|
+
N_GPUS_PER_WORKER = 1
|
151
150
|
|
152
|
-
|
153
|
-
"""
|
154
|
-
default proposed configuration for reconstructing a full volume remotely
|
155
|
-
"""
|
151
|
+
MEMORY_PER_WORKER = 220 # memory in GB
|
156
152
|
|
157
|
-
MEMORY_PER_WORKER = 256 # memory in GB
|
158
153
|
|
159
|
-
|
154
|
+
class DefaultSlurmSettingsVolumeReconstruction(DefaultSlurmSettingsSliceReconstruction):
|
155
|
+
pass
|
160
156
|
|
161
157
|
|
162
158
|
class DefaultSlurmSettingsStitching(SlurmSettings):
|
@@ -164,8 +160,10 @@ class DefaultSlurmSettingsStitching(SlurmSettings):
|
|
164
160
|
default proposed configuration for stitching
|
165
161
|
"""
|
166
162
|
|
167
|
-
|
163
|
+
N_CORES_PER_TASK = 8
|
168
164
|
|
169
|
-
|
165
|
+
N_JOBS = 16
|
170
166
|
|
171
167
|
N_GPUS_PER_WORKER = 0
|
168
|
+
|
169
|
+
PARTITION = "nice"
|
tomwer/version.py
CHANGED
@@ -26,7 +26,7 @@ orangecontrib/tomwer/tutorials/id16b/ID16b_normalization.ows,sha256=kFGXGxc3eW7i
|
|
26
26
|
orangecontrib/tomwer/tutorials/id16b/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
27
27
|
orangecontrib/tomwer/widgets/__init__.py,sha256=dX_TpkBh3mVsrj3EeGglEESsnZAEVq7V0Nb9bnBrb-8,1214
|
28
28
|
orangecontrib/tomwer/widgets/utils.py,sha256=yq1wZfpfY3iVAhwMRBls57q02lhljO89WRKN7MxMMNg,983
|
29
|
-
orangecontrib/tomwer/widgets/cluster/FutureSupervisorOW.py,sha256=
|
29
|
+
orangecontrib/tomwer/widgets/cluster/FutureSupervisorOW.py,sha256=zXjddYmkhyBnoRCstZ6AYN1mG84xiOKaIntg5tqe4jw,9927
|
30
30
|
orangecontrib/tomwer/widgets/cluster/SlurmClusterOW.py,sha256=L_fX3EFyyx71Fg-FI8ab34ZPSUzrwKGJLcS2FnYCY_c,2565
|
31
31
|
orangecontrib/tomwer/widgets/cluster/__init__.py,sha256=vOOJnIIaLWAj8tnxD9MRzWDyYgk-cyuBsN7QQ5FrIoQ,385
|
32
32
|
orangecontrib/tomwer/widgets/cluster/icons/slurm.png,sha256=C-YBLwXCnh0oo4nvEt80WxX_jKYGUAFpWMUSlzt6ke0,1995
|
@@ -36,7 +36,7 @@ orangecontrib/tomwer/widgets/cluster/icons/slurmobserver.svg,sha256=N22gP4exnQP5
|
|
36
36
|
orangecontrib/tomwer/widgets/cluster/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
37
37
|
orangecontrib/tomwer/widgets/control/AdvancementOW.py,sha256=XCZ3UEVNa_QneIBtcK03jbjmimszhs0_JiIcQAVS8y8,1108
|
38
38
|
orangecontrib/tomwer/widgets/control/DataDiscoveryOW.py,sha256=kGzxJZMMw30ZaMm_cVv_a-99AvkWHVhHcZS7RRZvmJM,8039
|
39
|
-
orangecontrib/tomwer/widgets/control/DataListenerOW.py,sha256=
|
39
|
+
orangecontrib/tomwer/widgets/control/DataListenerOW.py,sha256=YEjPbDJCEi9O0YYxy9lIHiZ68jO_jQmPtbmNMyG9LuI,13837
|
40
40
|
orangecontrib/tomwer/widgets/control/DataSelectorOW.py,sha256=zQNxYEJTxprjc83eyG6b9Ng0JVWmaZxhGb1T-jovMlU,4078
|
41
41
|
orangecontrib/tomwer/widgets/control/DataTransfertOW.py,sha256=SKokOHQT-LPDB1hpnsaLyUzCw_GValyC-B9WyXMjxzM,5942
|
42
42
|
orangecontrib/tomwer/widgets/control/DataValidatorOW.py,sha256=p19UYGoXtem_OxfQm_kEjQf3xKsqwyF_Ay5tQYDlVeY,5774
|
@@ -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=NJGLpRUHDrl6XJCDG9AlbBmq_Bf8it9wSJtAsQ9KdUc,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
|
@@ -249,14 +249,14 @@ tomwer/app/canvas_launcher/config.py,sha256=sLlsp7iy1s2IyxqvSohGbaOpPUP6syuj5P-8
|
|
249
249
|
tomwer/app/canvas_launcher/environ.py,sha256=ljQyPL_u9ai1CWmmq8uGHbn437CZWyX4uJtrDIyabGk,2453
|
250
250
|
tomwer/app/canvas_launcher/mainwindow.py,sha256=KZzbY3AuHITdaS8K4jG2QomD5DEgQqHRYcIe9hymC9g,22283
|
251
251
|
tomwer/app/canvas_launcher/splash.py,sha256=cpUuZVKwlQbeAWfAqjpjP4q1v1MmkfxU6WWllLSVZo8,508
|
252
|
-
tomwer/app/canvas_launcher/utils.py,sha256=
|
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
255
|
tomwer/app/stitching/common.py,sha256=TCXNnAz2MSJrrogB5iWptktxq-g5ED2FUt_jMnDXpnQ,14723
|
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
|
259
|
-
tomwer/core/settings.py,sha256=
|
259
|
+
tomwer/core/settings.py,sha256=xMlOdWeNJxNsi0_qfMXZI8lrzjeRRDftGtT3lFpjFL8,3992
|
260
260
|
tomwer/core/signal.py,sha256=I5TUcyeBZzrEh1SFGs-ylJSL1aBs41ZFb3IJo3O_55c,6115
|
261
261
|
tomwer/core/tomwer_object.py,sha256=rIaD1QlN3Q0cR5h9Sap1Whn4lawu5z9zZ1KspdhYbg0,2023
|
262
262
|
tomwer/core/cluster/__init__.py,sha256=w58VJZaGwC-8hwHLADeJrW9-rs-PrVz6few3AqpScqQ,116
|
@@ -275,7 +275,7 @@ tomwer/core/process/control/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
|
|
275
275
|
tomwer/core/process/control/datadiscovery.py,sha256=Rihr0KI0EhrgG9WTotx3r9gXKkIgRic5lu5jXPRSy-o,377
|
276
276
|
tomwer/core/process/control/emailnotifier.py,sha256=N6tOQO2f0IBbIfUtSChl3XQCrkTJzNOiaRFDl3Ghbhk,4433
|
277
277
|
tomwer/core/process/control/nxtomoconcatenate.py,sha256=fRa8XeLyc4ocQGQtwcHYX4dbN5vM2oHO-2_3fv3HtII,3866
|
278
|
-
tomwer/core/process/control/nxtomomill.py,sha256=
|
278
|
+
tomwer/core/process/control/nxtomomill.py,sha256=4G5AvsRRzUdl-OjNjb3G8RO9Mn5iNe1Ux0XednfbAHQ,7790
|
279
279
|
tomwer/core/process/control/scanlist.py,sha256=bDUf7TDUslhCUPElUXTT_1fHAKRvhrDTzz3Gr1Wg640,697
|
280
280
|
tomwer/core/process/control/scanselector.py,sha256=YD41hajIF4KdDEb6bkP2ZqMyCRmwvVNXzRyzqD5nSNQ,368
|
281
281
|
tomwer/core/process/control/scantransfer.py,sha256=WoXwalXem7G3baP1cH4czpq1DqlTX614TilT6ojsNOs,24366
|
@@ -286,7 +286,7 @@ tomwer/core/process/control/tomoobjseries.py,sha256=_fiVup4ugH5BAC6HwkIziA0QweEu
|
|
286
286
|
tomwer/core/process/control/volumeselector.py,sha256=0uv1Q8k5Ms1h_iU-ldhb-Y35xsy1kHwQrbUQguV5M_A,370
|
287
287
|
tomwer/core/process/control/datalistener/__init__.py,sha256=gSEeJEDX8E-8HzY7tmPc32QKfqSZHG4Ad06IxDrzOWo,52
|
288
288
|
tomwer/core/process/control/datalistener/datalistener.py,sha256=kNDTIeMhJ6n019b2XWoGoB8zDCv-zpVxE7YDzZR9KBM,9606
|
289
|
-
tomwer/core/process/control/datalistener/rpcserver.py,sha256=
|
289
|
+
tomwer/core/process/control/datalistener/rpcserver.py,sha256=JkEmWB1kRzjaXPqzEu-tWN87SlK3uuk3gN7la42wSF0,9555
|
290
290
|
tomwer/core/process/control/datawatcher/__init__.py,sha256=F9d_bGOr5iAPEfnKaf5XOEwQSR1wZp_wkzcDYNSuin4,50
|
291
291
|
tomwer/core/process/control/datawatcher/datawatcher.py,sha256=UmOEW9vA3jJ93R1QcVRisknB_S2j0Nfsc7477VjwThE,15265
|
292
292
|
tomwer/core/process/control/datawatcher/datawatcherobserver.py,sha256=q7ZB9WMWSyeEUtuU9SKuvJ80eBlFzLUC31NlLIYfWfk,24197
|
@@ -332,7 +332,7 @@ tomwer/core/process/reconstruction/darkref/darkrefscopy.py,sha256=D0i__aTsEvfJg_
|
|
332
332
|
tomwer/core/process/reconstruction/darkref/params.py,sha256=vrDN8bZu28E4zLuHJzNvIIyyZq-4yhX9k9itXYCJ2iM,8756
|
333
333
|
tomwer/core/process/reconstruction/darkref/settings.py,sha256=35jliuOIjMKTOJjgn4uiotcDEr6RskpLHfRWWLm76dc,188
|
334
334
|
tomwer/core/process/reconstruction/nabu/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
335
|
-
tomwer/core/process/reconstruction/nabu/castvolume.py,sha256
|
335
|
+
tomwer/core/process/reconstruction/nabu/castvolume.py,sha256=-tz0Kmf-3oJbWxPkFEZnvXTeF7dkiQKPaZ9qgcgD7MU,9950
|
336
336
|
tomwer/core/process/reconstruction/nabu/helical.py,sha256=gauUkoPiShvnvMQrCQXv28g0yLe-GceML5kYMSXmNIg,1997
|
337
337
|
tomwer/core/process/reconstruction/nabu/nabucommon.py,sha256=6jOdKpUW5MbRkf53evu4-ZBkQaNWMfl799-f0zQ9-1Q,24554
|
338
338
|
tomwer/core/process/reconstruction/nabu/nabuscores.py,sha256=e5tRG1QtmVAdXb8KHMTMtBXA3KQXqKKcqipY2HzMURg,25275
|
@@ -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.10.dist-info/LICENSE,sha256=62p1wL0n9WMTu8x2YDv0odYgTqeSvTd9mQ0v6Mq7lzE,1876
|
907
|
+
tomwer-1.4.10.dist-info/METADATA,sha256=W_9nqYKQj3V77AgEbbejG4mHQXzEHvI08AHHvxXbydM,13416
|
908
|
+
tomwer-1.4.10.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
909
|
+
tomwer-1.4.10.dist-info/entry_points.txt,sha256=py3ZUWvGnWGc5c7Yhw_uBTm8Fmew0BDw3aQZnWMBNZI,500
|
910
|
+
tomwer-1.4.10.dist-info/top_level.txt,sha256=Yz5zKh0FPiImtzHYcPuztG1AO8-6KEpUWgoChGbA0Ys,21
|
911
|
+
tomwer-1.4.10.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|