tomwer 1.5.0rc3__py3-none-any.whl → 1.5.2__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/tutorials/id16b/ID16b_insitu.ows +1 -1
- orangecontrib/tomwer/tutorials/id16b/ID16b_normalization.ows +1 -1
- orangecontrib/tomwer/tutorials/untitled.ows +15 -0
- orangecontrib/tomwer/widgets/cluster/FutureSupervisorOW.py +2 -0
- tomwer/app/canvas_launcher/config.py +6 -2
- tomwer/core/process/reconstruction/nabu/nabuslices.py +18 -5
- tomwer/core/process/reconstruction/nabu/utils.py +1 -0
- tomwer/core/process/reconstruction/saaxis/saaxis.py +4 -0
- tomwer/core/process/reconstruction/tests/test_saaxis.py +56 -66
- tomwer/gui/reconstruction/nabu/nabuconfig/ctf.py +0 -10
- tomwer/gui/reconstruction/nabu/nabuconfig/preprocessing.py +3 -3
- tomwer/gui/reconstruction/nabu/nabuconfig/tests/test_NabuConfiguration.py +42 -0
- tomwer/gui/reconstruction/nabu/slices.py +1 -1
- tomwer/gui/reconstruction/nabu/test/test_ctf.py +0 -2
- tomwer/gui/reconstruction/sacommon.py +1 -1
- tomwer/gui/reconstruction/tests/test_nabu.py +2 -4
- tomwer/gui/utils/buttons.py +1 -1
- tomwer/synctools/stacks/processingstack.py +19 -3
- tomwer/synctools/stacks/reconstruction/nabu.py +5 -0
- tomwer/version.py +3 -3
- {tomwer-1.5.0rc3.dist-info → tomwer-1.5.2.dist-info}/METADATA +10 -51
- {tomwer-1.5.0rc3.dist-info → tomwer-1.5.2.dist-info}/RECORD +27 -26
- tomwer/tasks/reconstruction/cleardarkflat.py +0 -42
- /tomwer/{model/dataset.py → gui/reconstruction/nabu/nabuconfig/tests/__init__.py} +0 -0
- {tomwer-1.5.0rc3.dist-info → tomwer-1.5.2.dist-info}/WHEEL +0 -0
- {tomwer-1.5.0rc3.dist-info → tomwer-1.5.2.dist-info}/entry_points.txt +0 -0
- {tomwer-1.5.0rc3.dist-info → tomwer-1.5.2.dist-info}/licenses/LICENSE +0 -0
- {tomwer-1.5.0rc3.dist-info → tomwer-1.5.2.dist-info}/top_level.txt +0 -0
@@ -31,7 +31,7 @@
|
|
31
31
|
<thumbnail />
|
32
32
|
<node_properties>
|
33
33
|
<properties node_id="0" format="literal">{'_muted': False, 'controlAreaVisible': False, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x04n\x00\x00\x01\xfe\x00\x00\x05\xc1\x00\x00\x03-\x00\x00\x04n\x00\x00\x02#\x00\x00\x05\xc1\x00\x00\x03-\x00\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x04n\x00\x00\x02#\x00\x00\x05\xc1\x00\x00\x03-', '__version__': 1}</properties>
|
34
|
-
<properties node_id="1" format="literal">{'_ewoks_default_inputs': {'data': None, 'nabu_params': {'preproc': {'flatfield': 1, '
|
34
|
+
<properties node_id="1" format="literal">{'_ewoks_default_inputs': {'data': None, 'nabu_params': {'preproc': {'flatfield': 1, 'double_flatfield': 0, 'dff_sigma': 0.0, 'ccd_filter_enabled': 0, 'ccd_filter_threshold': 0.04, 'take_logarithm': True, 'log_min_clip': 1e-06, 'log_max_clip': 10.0, 'sino_rings_correction': 'None', 'sino_rings_options': 'sigma=1.0 ; levels=10 ; padding=False', 'tilt_correction': '', 'autotilt_options': '', 'normalize_srcurrent': 1}, 'reconstruction': {'method': 'FBP', 'slice_plane': 'XY', 'angles_file': '', 'axis_correction_file': '', 'angle_offset': 0.0, 'fbp_filter_type': 'ramlak', 'padding_type': 'edges', 'iterations': 200, 'optim_algorithm': 'chambolle-pock', 'weight_tv': 0.01, 'preconditioning_filter': 1, 'positivity_constraint': 1, 'rotation_axis_position': '', 'translation_movements_file': '', 'clip_outer_circle': 1, 'centered_axis': 1, 'start_x': 0, 'end_x': -1, 'start_y': 0, 'end_y': -1, 'start_z': 0, 'end_z': -1, 'enable_halftomo': 0}, 'dataset': {'binning': 1, 'binning_z': 1, 'projections_subsampling': 1}, 'tomwer_slices': 'middle', 'output': {'file_format': 'vol', 'location': '', 'output_dir_mode': 'same folder as scan'}, 'phase': {'method': 'Paganin', 'delta_beta': '180', 'padding_type': 'edge', 'unsharp_coeff': 3.0, 'unsharp_sigma': 0.8, 'ctf_geometry': ' z1_v=None; z1_h=None; detec_pixel_size=None; magnification=True', 'beam_shape': 'parallel', 'ctf_advanced_params': ' length_scale=1e-05; lim1=1e-05; lim2=0.2; normalize_by_mean=True', 'ctf_translations_file': ''}, 'configuration_level': 'optional', 'mode_locked': True, 'cluster_config': None}}, 'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x02\xaa\x00\x00\x00\xb4\x00\x00\x083\x00\x00\x04\x12\x00\x00\x02\xaa\x00\x00\x00\xb4\x00\x00\x083\x00\x00\x04\x12\x00\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x02\xaa\x00\x00\x00\xb4\x00\x00\x083\x00\x00\x04\x12', '__version__': 1}</properties>
|
35
35
|
<properties node_id="2" format="pickle">gASVPgEAAAAAAAB9lCiMDl92aWV3ZXJfY29uZmlnlH2UKIwEbW9kZZSMI3RvbXdlci5ndWkudmlz
|
36
36
|
dWFsaXphdGlvbi5kYXRhdmlld2VylIwMX0Rpc3BsYXlNb2RllJOUjAZzbGljZXOUhZRSlIwJc2xp
|
37
37
|
Y2Vfb3B0lGgEjApfU2xpY2VNb2RllJOUjAZsYXRlc3SUhZRSlIwJcmFkaW9fb3B0lGgEjApfUmFk
|
@@ -33,7 +33,7 @@
|
|
33
33
|
<properties node_id="1" format="literal">{'_ewoks_default_inputs': {'data': None, 'dark_ref_params': {'DOWHEN': 'before', 'DARKCAL': 'Average', 'DARKOVE': 1, 'DARKRMV': 0, 'DKFILE': 'darkend[0-9]{3,4}', 'REFSCAL': 'Median', 'REFSOVE': 1, 'REFSRMV': 0, 'RFFILE': 'ref*.*[0-9]{3,4}_[0-9]{3,4}'}}, 'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x00H\x00\x00\x00\x1b\x00\x00\x03\xef\x00\x00\x02\x1f\x00\x00\x00H\x00\x00\x00@\x00\x00\x03\xef\x00\x00\x02\x1f\x00\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00H\x00\x00\x00@\x00\x00\x03\xef\x00\x00\x02\x1f', '__version__': 1}</properties>
|
34
34
|
<properties node_id="2" format="literal">{'_scanIDs': [], 'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x02\x80\x00\x00\x01C\x00\x00\x04\xff\x00\x00\x03G\x00\x00\x02\x80\x00\x00\x01h\x00\x00\x04\xff\x00\x00\x03G\x00\x00\x00\x00\x00\x00\x00\x00\x07\x80\x00\x00\x02\x80\x00\x00\x01h\x00\x00\x04\xff\x00\x00\x03G', '__version__': 1}</properties>
|
35
35
|
<properties node_id="3" format="literal">{'_muted': False, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}</properties>
|
36
|
-
<properties node_id="4" format="literal">{'_ewoks_default_inputs': {'data': None, 'nabu_params': {'preproc': {'flatfield': 1, '
|
36
|
+
<properties node_id="4" format="literal">{'_ewoks_default_inputs': {'data': None, 'nabu_params': {'preproc': {'flatfield': 1, 'double_flatfield': 0, 'dff_sigma': 0.0, 'ccd_filter_enabled': 0, 'ccd_filter_threshold': 0.04, 'take_logarithm': True, 'log_min_clip': 1e-06, 'log_max_clip': 10.0, 'sino_rings_correction': 'None', 'sino_rings_options': 'sigma=1.0 ; levels=10', 'tilt_correction': '', 'autotilt_options': ''}, 'reconstruction': {'method': 'FBP', 'angles_file': '', 'axis_correction_file': '', 'angle_offset': 0.0, 'fbp_filter_type': 'ramlak', 'padding_type': 'edges', 'iterations': 200, 'optim_algorithm': 'chambolle-pock', 'weight_tv': 0.01, 'preconditioning_filter': 1, 'positivity_constraint': 1, 'rotation_axis_position': '', 'translation_movements_file': '', 'clip_outer_circle': 1, 'start_x': 0, 'end_x': -1, 'start_y': 0, 'end_y': -1, 'start_z': 0, 'end_z': -1, 'enable_halftomo': 0}, 'dataset': {'binning': 1, 'binning_z': 1, 'projections_subsampling': 1}, 'tomwer_slices': 'middle', 'output': {'file_format': 'vol', 'location': ''}, 'phase': {'method': 'Paganin', 'delta_beta': '500', 'padding_type': 'edge', 'unsharp_coeff': 3.0, 'unsharp_sigma': 0.65}, 'configuration_level': 'optional', 'mode_locked': False, 'cluster_config': None}}, 'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x00H\x00\x00\x00@\x00\x00\x05\xd1\x00\x00\x03\x9e\x00\x00\x00H\x00\x00\x00@\x00\x00\x05\xd1\x00\x00\x03\x9e\x00\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00H\x00\x00\x00@\x00\x00\x05\xd1\x00\x00\x03\x9e', '__version__': 1}</properties>
|
37
37
|
<properties node_id="5" format="pickle">gASVWQEAAAAAAAB9lCiMDl92aWV3ZXJfY29uZmlnlH2UKIwEbW9kZZSMCGJ1aWx0aW5zlIwHZ2V0
|
38
38
|
YXR0cpSTlIwjdG9td2VyLmd1aS52aXN1YWxpemF0aW9uLmRhdGF2aWV3ZXKUjAxfRGlzcGxheU1v
|
39
39
|
ZGWUk5SMBlNMSUNFU5SGlFKUjAlzbGljZV9vcHSUaAZoB4wKX1NsaWNlTW9kZZSTlIwGTEFURVNU
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<?xml version='1.0' encoding='utf-8'?>
|
2
|
+
<scheme version="2.0" title="" description="">
|
3
|
+
<nodes>
|
4
|
+
<node id="0" name="nabu slice reconstruction" qualified_name="orangecontrib.tomwer.widgets.reconstruction.NabuOW.NabuOW" project_name="tomwer" version="" title="nabu slice reconstruction" position="(234.0, 102.0)" />
|
5
|
+
</nodes>
|
6
|
+
<links />
|
7
|
+
<annotations />
|
8
|
+
<thumbnail />
|
9
|
+
<node_properties>
|
10
|
+
<properties node_id="0" format="literal">{'_ewoks_default_inputs': {'data': None, 'nabu_params': {'preproc': {'flatfield': 1, 'double_flatfield': 0, 'dff_sigma': 0.0, 'ccd_filter_enabled': 0, 'ccd_filter_threshold': 0.04, 'take_logarithm': True, 'log_min_clip': 1e-06, 'log_max_clip': 10.0, 'sino_rings_correction': 'None', 'sino_rings_options': 'sigma=1.0 ; levels=10 ; padding=False', 'tilt_correction': '', 'autotilt_options': '', 'normalize_srcurrent': 1, 'rotate_projections_center': '', 'flat_distortion_correction_enabled': True, 'flat_distortion_params': "tile_size=100; interpolation_kind='linear'; padding_mode='edge'; correction_spike_threshold=None", 'detector_distortion_correction': False, 'detector_distortion_correction_options': {'map_x': '', 'map_z': ''}}, 'reconstruction': {'method': 'FBP', 'slice_plane': 'XY', 'angles_file': '', 'axis_correction_file': '', 'angle_offset': 0.0, 'fbp_filter_type': 'ramlak', 'padding_type': 'edges', 'iterations': 200, 'optim_algorithm': 'chambolle-pock', 'weight_tv': 0.01, 'preconditioning_filter': 1, 'positivity_constraint': 1, 'rotation_axis_position': '', 'translation_movements_file': '', 'clip_outer_circle': 1, 'centered_axis': 1, 'start_x': 0, 'end_x': -1, 'start_y': 0, 'end_y': -1, 'start_z': 0, 'end_z': -1, 'enable_halftomo': 0}, 'dataset': {'binning': 1, 'binning_z': 1, 'projections_subsampling': 1, 'exclude_projections': ''}, 'tomwer_slices': 'middle', 'output': {'file_format': 'hdf5', 'location': '', 'output_dir_mode': 'same folder as scan'}, 'phase': {'method': 'None', 'unsharp_coeff': 0, 'unsharp_sigma': 0, 'ctf_geometry': ' z1_v=None; z1_h=None; detec_pixel_size=None; magnification=True', 'beam_shape': 'parallel', 'ctf_advanced_params': ' length_scale=1e-05; lim1=1e-05; lim2=0.2; normalize_by_mean=True'}, 'gpu_mem_fraction': 0.9, 'cpu_mem_fraction': 0.9, 'configuration_level': 'advanced', 'mode_locked': False, 'cluster_config': None}}, 'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\t\xb8\x00\x00\x00\xdb\x00\x00\x0c\xb4\x00\x00\x03!\x00\x00\t\xb8\x00\x00\x00\xdb\x00\x00\x0c\xb4\x00\x00\x03!\x00\x00\x00\x01\x00\x00\x00\x00\x07\x80\x00\x00\t\xb8\x00\x00\x00\xdb\x00\x00\x0c\xb4\x00\x00\x03!', '__version__': 1}</properties>
|
11
|
+
</node_properties>
|
12
|
+
<session_state>
|
13
|
+
<window_groups />
|
14
|
+
</session_state>
|
15
|
+
</scheme>
|
@@ -206,6 +206,8 @@ class FutureTomwerObjectObserverWidget(
|
|
206
206
|
return
|
207
207
|
elif future_tomo_obj.status == "error":
|
208
208
|
state = DatasetState.FAILED
|
209
|
+
if future_tomo_obj.job_id is None:
|
210
|
+
details = "Job submission to Slurm has failed. This is likely due to an invalid configuration request, such as requesting a GPU on a partition that does not support GPUs. Please review your configuration and try again."
|
209
211
|
elif future_tomo_obj.status == "pending":
|
210
212
|
details = "\n".join([details, "pending"])
|
211
213
|
state = DatasetState.PENDING
|
@@ -9,7 +9,11 @@ import logging
|
|
9
9
|
import tomwer.version
|
10
10
|
from tomwer.gui import icons
|
11
11
|
|
12
|
-
|
12
|
+
try:
|
13
|
+
from ewoksorange.pkg_meta import entry_points
|
14
|
+
except ImportError:
|
15
|
+
# ewoksorange < 2.0
|
16
|
+
from ewoksorange.pkg_meta import iter_entry_points as entry_points
|
13
17
|
from . import environ
|
14
18
|
from .splash import getIcon, splash_screen
|
15
19
|
from .widgetsscheme import WidgetsScheme
|
@@ -82,7 +86,7 @@ class TomwerConfig(config.Config):
|
|
82
86
|
return entry.name.lower() not in ("ewoks demo",)
|
83
87
|
|
84
88
|
try:
|
85
|
-
all_eps = filter(accept_extension,
|
89
|
+
all_eps = filter(accept_extension, entry_points(group=WIDGETS_ENTRY))
|
86
90
|
except Exception as e:
|
87
91
|
_logger.error(f"fail to find add-ons. Error is {e}")
|
88
92
|
return iter(all_eps)
|
@@ -5,6 +5,7 @@ import functools
|
|
5
5
|
import logging
|
6
6
|
import os
|
7
7
|
import gc
|
8
|
+
from collections.abc import Callable
|
8
9
|
from tomwer.io.utils import format_stderr_stdout
|
9
10
|
from silx.utils.deprecation import deprecated, deprecated_warning
|
10
11
|
from silx.io.utils import open as open_hdf5
|
@@ -85,6 +86,7 @@ def run_slices_reconstruction(
|
|
85
86
|
advancement=None,
|
86
87
|
process_id: int | None = None,
|
87
88
|
instantiate_classes_only: bool = False,
|
89
|
+
invalid_slice_callback: Callable[[str], None] | None = None,
|
88
90
|
) -> tuple:
|
89
91
|
"""
|
90
92
|
call nabu for a reconstruction on scan with the given configuration
|
@@ -142,7 +144,9 @@ def run_slices_reconstruction(
|
|
142
144
|
scan.nabu_recons_params = sc_config
|
143
145
|
|
144
146
|
# handle special cases like several db...
|
145
|
-
nabu_configurations = interpret_tomwer_configuration(
|
147
|
+
nabu_configurations = interpret_tomwer_configuration(
|
148
|
+
config, scan=scan, invalid_slice_callback=invalid_slice_callback
|
149
|
+
)
|
146
150
|
output_urls = []
|
147
151
|
stderrs = []
|
148
152
|
stdouts = []
|
@@ -227,6 +231,7 @@ class NabuSlicesTask(
|
|
227
231
|
optional_input_names=(
|
228
232
|
"dry_run",
|
229
233
|
"serialize_output_data",
|
234
|
+
"invalid_slice_callback",
|
230
235
|
),
|
231
236
|
output_names=("data", "nabu_params", "future_tomo_obj"),
|
232
237
|
):
|
@@ -288,6 +293,9 @@ class NabuSlicesTask(
|
|
288
293
|
dry_run=self._dry_run,
|
289
294
|
process_id=self.process_id,
|
290
295
|
instantiate_classes_only=True,
|
296
|
+
invalid_slice_callback=self.get_input_value(
|
297
|
+
"invalid_slice_callback", None
|
298
|
+
),
|
291
299
|
)
|
292
300
|
except Exception as e:
|
293
301
|
mess = f"Fail to instantiate slice reconstructor for {str(scan)}. Reason is {e}."
|
@@ -425,7 +433,11 @@ class NabuSlicesTask(
|
|
425
433
|
self._current_processing.cancel()
|
426
434
|
|
427
435
|
|
428
|
-
def interpret_tomwer_configuration(
|
436
|
+
def interpret_tomwer_configuration(
|
437
|
+
config: dict,
|
438
|
+
scan: TomwerScanBase | None,
|
439
|
+
invalid_slice_callback: Callable[[str], None] | None = None,
|
440
|
+
) -> tuple:
|
429
441
|
"""
|
430
442
|
tomwer can 'mock' the nabu reconstruction to request more feature.
|
431
443
|
Typical use case is that we can ask for reconstruction of several
|
@@ -471,9 +483,10 @@ def interpret_tomwer_configuration(config: dict, scan: TomwerScanBase | None) ->
|
|
471
483
|
index_max = index_max - 1
|
472
484
|
|
473
485
|
if slice_index > index_max:
|
474
|
-
|
475
|
-
|
476
|
-
|
486
|
+
error_message = f"{scan.get_identifier().short_description()}\n\nCannot reconstruct slice {slice_index} along plane {axis.value}. Must be in [0-{index_max}]"
|
487
|
+
_logger.error(error_message)
|
488
|
+
if invalid_slice_callback is not None:
|
489
|
+
invalid_slice_callback(error_message)
|
477
490
|
return False
|
478
491
|
return True
|
479
492
|
|
@@ -628,6 +628,10 @@ class SAAxisTask(
|
|
628
628
|
|
629
629
|
saaxis_results_url = SAAxisTask.get_results_url(scan=scan)
|
630
630
|
|
631
|
+
if not os.path.exists(saaxis_results_url.file_path()):
|
632
|
+
_logger.error("no result saved")
|
633
|
+
return
|
634
|
+
|
631
635
|
# save it to the file
|
632
636
|
with HDF5File(saaxis_results_url.file_path(), mode="a") as h5f:
|
633
637
|
nx_process = h5f.require_group(saaxis_results_url.data_path())
|
@@ -3,9 +3,7 @@ from __future__ import annotations
|
|
3
3
|
|
4
4
|
|
5
5
|
import os
|
6
|
-
import
|
7
|
-
import tempfile
|
8
|
-
import unittest
|
6
|
+
import pytest
|
9
7
|
|
10
8
|
import numpy
|
11
9
|
|
@@ -18,74 +16,66 @@ from tomwer.core.process.reconstruction.scores.scores import (
|
|
18
16
|
from tomwer.core.utils.scanutils import MockNXtomo
|
19
17
|
|
20
18
|
|
21
|
-
|
22
|
-
"""
|
19
|
+
def test_img_contrast_std_score():
|
20
|
+
"""simple test of the API to call compute_score_contrast_std"""
|
21
|
+
data = numpy.random.random(100 * 100).reshape(100, 100)
|
22
|
+
compute_score_contrast_std(data)
|
23
23
|
|
24
|
-
def test_img_contrast_std_score(self):
|
25
|
-
"""simple test of the API to call compute_score_contrast_std"""
|
26
|
-
data = numpy.random.random(100 * 100).reshape(100, 100)
|
27
|
-
compute_score_contrast_std(data)
|
28
24
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
self.assertTrue(isinstance(res, float))
|
25
|
+
@pytest.mark.parametrize("fct", _METHOD_TO_FCT.values())
|
26
|
+
def test_method_to_function(fct):
|
27
|
+
"""Test the dictionary used to for linking the score method to the
|
28
|
+
callback function"""
|
29
|
+
data = numpy.random.random(100 * 100).reshape(100, 100)
|
30
|
+
res = fct(data)
|
31
|
+
assert res is not None
|
32
|
+
assert isinstance(res, float)
|
38
33
|
|
39
34
|
|
40
|
-
|
35
|
+
def testSAAxisProcess(tmp_path):
|
41
36
|
"""Test the SAAxisProcess class"""
|
37
|
+
scan_path = tmp_path / "mock_nxtomo"
|
38
|
+
scan_path.mkdir()
|
39
|
+
# set up
|
40
|
+
dim = 10
|
41
|
+
mock = MockNXtomo(
|
42
|
+
scan_path=scan_path, n_proj=10, n_ini_proj=10, scan_range=180, dim=dim
|
43
|
+
)
|
44
|
+
mock.add_alignment_radio(index=10, angle=90)
|
45
|
+
mock.add_alignment_radio(index=10, angle=0)
|
46
|
+
scan = mock.scan
|
42
47
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
mock.add_alignment_radio(index=10, angle=90)
|
50
|
-
mock.add_alignment_radio(index=10, angle=0)
|
51
|
-
self.scan = mock.scan
|
48
|
+
default_saaxis_params = SAAxisParams()
|
49
|
+
default_saaxis_params.output_dir = os.path.join(scan_path, "output_dir")
|
50
|
+
default_saaxis_params.slice_indexes = {"slice": 4}
|
51
|
+
default_saaxis_params.nabu_config = {}
|
52
|
+
default_saaxis_params.dry_run = True
|
53
|
+
default_saaxis_params.file_format = "hdf5"
|
52
54
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
55
|
+
# test processing
|
56
|
+
process = SAAxisTask(
|
57
|
+
inputs={
|
58
|
+
"data": scan,
|
59
|
+
"sa_axis_params": default_saaxis_params.to_dict(),
|
60
|
+
"serialize_output_data": False,
|
61
|
+
}
|
62
|
+
)
|
61
63
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
"serialize_output_data": False,
|
81
|
-
},
|
82
|
-
)
|
83
|
-
process.run()
|
84
|
-
process = SAAxisTask(
|
85
|
-
inputs={
|
86
|
-
"data": self.scan,
|
87
|
-
"sa_axis_params": self._default_saaxis_params.to_dict(),
|
88
|
-
"serialize_output_data": False,
|
89
|
-
},
|
90
|
-
)
|
91
|
-
process.run()
|
64
|
+
default_saaxis_params.estimated_cor = 11
|
65
|
+
default_saaxis_params.research_width = 2
|
66
|
+
process = SAAxisTask(
|
67
|
+
inputs={
|
68
|
+
"data": scan,
|
69
|
+
"sa_axis_params": default_saaxis_params.to_dict(),
|
70
|
+
"serialize_output_data": False,
|
71
|
+
},
|
72
|
+
)
|
73
|
+
process.run()
|
74
|
+
process = SAAxisTask(
|
75
|
+
inputs={
|
76
|
+
"data": scan,
|
77
|
+
"sa_axis_params": default_saaxis_params.to_dict(),
|
78
|
+
"serialize_output_data": False,
|
79
|
+
},
|
80
|
+
)
|
81
|
+
process.run()
|
@@ -9,8 +9,6 @@ from tomwer.gui.reconstruction.nabu.nabuconfig import base
|
|
9
9
|
from tomwer.gui.utils.illustrations import _IllustrationWidget
|
10
10
|
from tomwer.gui.utils.scrollarea import QComboBoxIgnoreWheel
|
11
11
|
|
12
|
-
from .reconstruction import AnglesFileWidget as Filewidget
|
13
|
-
|
14
12
|
|
15
13
|
def nabu_param_ligne_to_dict(str_ligne: str) -> dict:
|
16
14
|
ddict = {}
|
@@ -324,10 +322,6 @@ class CTFConfig(qt.QGroupBox, base._NabuStageConfigBase):
|
|
324
322
|
self._geometryWidget = CTFGeometry(parent=self, title="geometry")
|
325
323
|
self.layout().addRow(self._geometryWidget)
|
326
324
|
self.registerWidget(self._geometryWidget, "optional")
|
327
|
-
# translation file
|
328
|
-
self._translationFile = Filewidget(self)
|
329
|
-
self.layout().addRow("translation file", self._translationFile)
|
330
|
-
self.registerWidget(self._translationFile, "optional")
|
331
325
|
# advanced parameters
|
332
326
|
self._advancedParamsWidget = CTFAdvancedParams(
|
333
327
|
parent=self, title="advanced parameters"
|
@@ -338,7 +332,6 @@ class CTFConfig(qt.QGroupBox, base._NabuStageConfigBase):
|
|
338
332
|
# connect signal / slot
|
339
333
|
self._geometryWidget.sigConfChanged.connect(self._confChanged)
|
340
334
|
self._advancedParamsWidget.sigConfChanged.connect(self._confChanged)
|
341
|
-
self._translationFile._qle.textEdited.connect(self._confChanged)
|
342
335
|
|
343
336
|
def _confChanged(self, *args, **kwargs):
|
344
337
|
self.sigConfChanged.emit("phase")
|
@@ -346,11 +339,8 @@ class CTFConfig(qt.QGroupBox, base._NabuStageConfigBase):
|
|
346
339
|
def getConfiguration(self) -> dict:
|
347
340
|
ddict = self._geometryWidget.getConfiguration()
|
348
341
|
ddict.update(self._advancedParamsWidget.getConfiguration())
|
349
|
-
ddict["ctf_translations_file"] = self._translationFile.getFile()
|
350
342
|
return ddict
|
351
343
|
|
352
344
|
def setConfiguration(self, ddict):
|
353
345
|
self._geometryWidget.setConfiguration(ddict=ddict)
|
354
346
|
self._advancedParamsWidget.setConfiguration(ddict=ddict)
|
355
|
-
if "ctf_translations_file" in ddict:
|
356
|
-
self._translationFile.setFile(ddict["ctf_translations_file"])
|
@@ -221,7 +221,7 @@ class _NabuPreProcessingConfig(_NabuStageConfigBase, qt.QWidget):
|
|
221
221
|
self._signalConfChanged("flatfield")
|
222
222
|
|
223
223
|
def _dffChanged(self, *args, **kwargs):
|
224
|
-
self._signalConfChanged("
|
224
|
+
self._signalConfChanged("double_flatfield")
|
225
225
|
|
226
226
|
def _dffSigmaChanged(self, *args, **kwargs):
|
227
227
|
self._signalConfChanged("dff_sigma")
|
@@ -337,7 +337,7 @@ class _NabuPreProcessingConfig(_NabuStageConfigBase, qt.QWidget):
|
|
337
337
|
tilt_correction, autotilt_opts = self._tiltCorrection.getTiltCorrection()
|
338
338
|
return {
|
339
339
|
"flatfield": int(self.isFlatFieldActivate()),
|
340
|
-
"
|
340
|
+
"double_flatfield": int(self.isDoubleFlatFieldActivate()),
|
341
341
|
"dff_sigma": self.getDFFSigma(),
|
342
342
|
"ccd_filter_enabled": int(self.isCCDFilterActivate()),
|
343
343
|
"ccd_filter_threshold": self.getCCDThreshold(),
|
@@ -365,7 +365,7 @@ class _NabuPreProcessingConfig(_NabuStageConfigBase, qt.QWidget):
|
|
365
365
|
if ff is not None:
|
366
366
|
self._flatFieldCB.setChecked(bool(ff))
|
367
367
|
|
368
|
-
dff = conf.get("
|
368
|
+
dff = conf.get("double_flatfield", None)
|
369
369
|
if dff is not None:
|
370
370
|
self._dffCB.setChecked(bool(dff))
|
371
371
|
|
@@ -0,0 +1,42 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from tomwer.tests.conftest import qtapp # noqa F401
|
4
|
+
from tomwer.gui.reconstruction.nabu.nabuconfig.nabuconfig import (
|
5
|
+
NabuConfiguration,
|
6
|
+
)
|
7
|
+
from nabu.pipeline.config import _extract_nabuconfig_keyvals
|
8
|
+
from nabu.pipeline.fullfield.nabu_config import (
|
9
|
+
nabu_config as nabu_fullfield_default_config,
|
10
|
+
)
|
11
|
+
|
12
|
+
|
13
|
+
def test_NabuConfiguration(
|
14
|
+
qtapp, # noqa F811
|
15
|
+
):
|
16
|
+
"""Test that the 'NabuConfiguration' produce only keys understandable by nabu"""
|
17
|
+
widget = NabuConfiguration(parent=None)
|
18
|
+
|
19
|
+
tomwer_config = widget.getConfiguration()
|
20
|
+
nabu_config = _extract_nabuconfig_keyvals(nabu_fullfield_default_config)
|
21
|
+
|
22
|
+
tomwer_section_keys = set(tomwer_config.keys())
|
23
|
+
nabu_section_keys = set(nabu_config.keys())
|
24
|
+
tomwer_section_keys.remove("tomwer_slices")
|
25
|
+
assert tomwer_section_keys.issubset(
|
26
|
+
nabu_section_keys
|
27
|
+
), f"tomwer provide sections undefined by nabu: {tomwer_section_keys - nabu_section_keys}"
|
28
|
+
|
29
|
+
for section_key in nabu_config.keys():
|
30
|
+
if section_key in tomwer_config:
|
31
|
+
nabu_sub_section_keys = set(nabu_config[section_key].keys())
|
32
|
+
tomwer_sub_section_keys = set(tomwer_config[section_key].keys())
|
33
|
+
if section_key == "phase":
|
34
|
+
# this key is pop by tomwer before calling nabu. It is used internally only
|
35
|
+
tomwer_sub_section_keys.remove("beam_shape")
|
36
|
+
elif section_key == "reconstruction":
|
37
|
+
tomwer_sub_section_keys.remove("slice_plane")
|
38
|
+
elif section_key == "output":
|
39
|
+
tomwer_sub_section_keys.remove("output_dir_mode")
|
40
|
+
assert tomwer_sub_section_keys.issubset(
|
41
|
+
nabu_sub_section_keys
|
42
|
+
), f"tomwer provides keys undefined by nabu: {tomwer_sub_section_keys - nabu_sub_section_keys}"
|
@@ -323,7 +323,7 @@ class NabuWindow(qt.QMainWindow):
|
|
323
323
|
self._mainWidget.nabuSettingsWidget._configuration._preProcessingWidget._sinoRingsOpts.resetConfiguration()
|
324
324
|
default_config["tomwer_slices"] = "middle"
|
325
325
|
default_config["preproc"]["ccd_filter_enabled"] = False
|
326
|
-
default_config["preproc"]["
|
326
|
+
default_config["preproc"]["double_flatfield"] = False
|
327
327
|
default_config["preproc"]["flatfield"] = True
|
328
328
|
default_config["preproc"]["take_logarithm"] = True
|
329
329
|
self.setConfiguration(default_config)
|
@@ -29,12 +29,10 @@ class TestFutureSupervisorOW(TestCaseQt):
|
|
29
29
|
assert config == {
|
30
30
|
"ctf_geometry": " z1_v=None; z1_h=None; detec_pixel_size=None; magnification=True",
|
31
31
|
"ctf_advanced_params": " length_scale=1e-05; lim1=1e-05; lim2=0.2; normalize_by_mean=True",
|
32
|
-
"ctf_translations_file": "",
|
33
32
|
"beam_shape": "parallel",
|
34
33
|
}
|
35
34
|
|
36
35
|
config["beam_shape"] = "cone"
|
37
|
-
config["ctf_translations_file"] = "my_file.txt"
|
38
36
|
config["ctf_geometry"] = (
|
39
37
|
" z1_v=10.2; z1_h=3.6; detec_pixel_size=1e-05; magnification=False"
|
40
38
|
)
|
@@ -87,7 +87,7 @@ class NabuWidgetWithToolbar(qt.QMainWindow):
|
|
87
87
|
self._nabuSettings._configuration._preProcessingWidget._sinoRingsOpts.resetConfiguration()
|
88
88
|
default_config["tomwer_slices"] = "middle"
|
89
89
|
default_config["preproc"]["ccd_filter_enabled"] = False
|
90
|
-
default_config["preproc"]["
|
90
|
+
default_config["preproc"]["double_flatfield"] = False
|
91
91
|
default_config["preproc"]["flatfield"] = True
|
92
92
|
default_config["preproc"]["take_logarithm"] = True
|
93
93
|
self._nabuSettings.setConfiguration(default_config)
|
@@ -90,7 +90,7 @@ class TestNabuPreProcConfig(TestCaseQt):
|
|
90
90
|
"""Test that the get configuration is working"""
|
91
91
|
ini_conf = {
|
92
92
|
"flatfield": 1,
|
93
|
-
"
|
93
|
+
"double_flatfield": 0,
|
94
94
|
"dff_sigma": 0.0,
|
95
95
|
"ccd_filter_enabled": 0,
|
96
96
|
"ccd_filter_threshold": 0.04,
|
@@ -110,7 +110,7 @@ class TestNabuPreProcConfig(TestCaseQt):
|
|
110
110
|
"""Test that the set configuration is working"""
|
111
111
|
conf = {
|
112
112
|
"flatfield": 0,
|
113
|
-
"
|
113
|
+
"double_flatfield": 1,
|
114
114
|
"dff_sigma": 2.0,
|
115
115
|
"ccd_filter_enabled": 1,
|
116
116
|
"ccd_filter_threshold": 0.98,
|
@@ -150,7 +150,6 @@ class TestNabuPhaseConfig(TestCaseQt):
|
|
150
150
|
"beam_shape": "parallel",
|
151
151
|
"ctf_advanced_params": " length_scale=1e-05; lim1=1e-05; lim2=0.2; normalize_by_mean=True",
|
152
152
|
"ctf_geometry": " z1_v=None; z1_h=None; detec_pixel_size=None; magnification=True",
|
153
|
-
"ctf_translations_file": "",
|
154
153
|
}
|
155
154
|
self.assertEqual(self.nabuWidget.getConfiguration(), ini_conf)
|
156
155
|
|
@@ -165,7 +164,6 @@ class TestNabuPhaseConfig(TestCaseQt):
|
|
165
164
|
"beam_shape": "cone",
|
166
165
|
"ctf_advanced_params": " length_scale=1e-05; lim1=1e-05; lim2=0.2; normalize_by_mean=True",
|
167
166
|
"ctf_geometry": " z1_v=0.0; z1_h=0.0; detec_pixel_size=None; magnification=True",
|
168
|
-
"ctf_translations_file": "",
|
169
167
|
}
|
170
168
|
self.nabuWidget.setConfiguration(conf)
|
171
169
|
self.nabuWidget.show()
|
tomwer/gui/utils/buttons.py
CHANGED
@@ -111,7 +111,7 @@ class TapeMeasureToolButton(PlotToolButton):
|
|
111
111
|
self._lastRoiCreated.setVisible(self.isChecked())
|
112
112
|
if self.isChecked():
|
113
113
|
self._roiManager.start(
|
114
|
-
|
114
|
+
TapeMeasureROI,
|
115
115
|
self,
|
116
116
|
)
|
117
117
|
self.__interactiveModeStarted(self._roiManager)
|
@@ -17,6 +17,9 @@ class ProcessingThread(qt.QThread):
|
|
17
17
|
sigComputationStarted = qt.Signal()
|
18
18
|
"""Signal emitted when a computation is started"""
|
19
19
|
|
20
|
+
sigError = qt.Signal(str)
|
21
|
+
"""Error found during processing. Parameter is the error raised"""
|
22
|
+
|
20
23
|
|
21
24
|
class FIFO(SuperviseProcess):
|
22
25
|
"""Processing Queue with a First In, First Out behavior"""
|
@@ -29,17 +32,22 @@ class FIFO(SuperviseProcess):
|
|
29
32
|
|
30
33
|
def __init__(self, process_id=None):
|
31
34
|
SuperviseProcess.__init__(self, process_id=process_id)
|
35
|
+
self._errors: list[qt.QErrorMessage] = []
|
32
36
|
self._deque = deque()
|
33
37
|
self._computationThread = self._create_processing_thread(process_id=process_id)
|
34
38
|
assert isinstance(self._computationThread, ProcessingThread)
|
35
|
-
|
36
|
-
self._start_threaded_computation
|
37
|
-
)
|
39
|
+
|
38
40
|
"""scan process by the thread"""
|
39
41
|
self._data_currently_computed = None
|
40
42
|
"""Scan computed currently"""
|
41
43
|
self._processing = False
|
42
44
|
|
45
|
+
# connect signal / slot
|
46
|
+
self._computationThread.sigComputationStarted.connect(
|
47
|
+
self._start_threaded_computation
|
48
|
+
)
|
49
|
+
self._computationThread.sigError.connect(self._displayError)
|
50
|
+
|
43
51
|
@property
|
44
52
|
def data_currently_computed(self) -> TomwerObject | None:
|
45
53
|
return self._data_currently_computed
|
@@ -146,6 +154,14 @@ class FIFO(SuperviseProcess):
|
|
146
154
|
self._processing = False
|
147
155
|
self._data_currently_computed = None
|
148
156
|
|
157
|
+
def _displayError(self, error_msg: str):
|
158
|
+
err = qt.QMessageBox()
|
159
|
+
err.setText(error_msg)
|
160
|
+
err.setIcon(qt.QMessageBox.Warning)
|
161
|
+
self._errors.append(err)
|
162
|
+
err.setModal(False)
|
163
|
+
err.show()
|
164
|
+
|
149
165
|
# expose deque API
|
150
166
|
def append(self, value):
|
151
167
|
self._deque.append(value)
|
@@ -6,6 +6,7 @@ import logging
|
|
6
6
|
|
7
7
|
from processview.core.manager import DatasetState, ProcessManager
|
8
8
|
from processview.core.superviseprocess import SuperviseProcess
|
9
|
+
|
9
10
|
from silx.gui import qt
|
10
11
|
from silx.gui.utils import blockSignals
|
11
12
|
|
@@ -138,6 +139,7 @@ class _SliceProcessingThread(ProcessingThread, SuperviseProcess):
|
|
138
139
|
"nabu_params": self._configuration,
|
139
140
|
"dry_run": self._dry_run,
|
140
141
|
"serialize_output_data": False,
|
142
|
+
"invalid_slice_callback": self.showErrorSliceInvalid,
|
141
143
|
},
|
142
144
|
)
|
143
145
|
self._task.run()
|
@@ -148,6 +150,9 @@ class _SliceProcessingThread(ProcessingThread, SuperviseProcess):
|
|
148
150
|
self._task.cancel()
|
149
151
|
self.quit()
|
150
152
|
|
153
|
+
def showErrorSliceInvalid(self, error_message):
|
154
|
+
self.sigError.emit(error_message)
|
155
|
+
|
151
156
|
|
152
157
|
class _VolumeProcessingThread(_SliceProcessingThread):
|
153
158
|
"""
|
tomwer/version.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: tomwer
|
3
|
-
Version: 1.5.
|
3
|
+
Version: 1.5.2
|
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
|
@@ -25,12 +25,11 @@ Requires-Dist: numpy
|
|
25
25
|
Requires-Dist: setuptools
|
26
26
|
Requires-Dist: psutil
|
27
27
|
Requires-Dist: silx[full]>=2.1.1
|
28
|
-
Requires-Dist: tomoscan>=2.2.0a6
|
28
|
+
Requires-Dist: tomoscan[full_no_compression_plugins]>=2.2.0a6
|
29
29
|
Requires-Dist: nxtomo>=2.0.0dev2
|
30
30
|
Requires-Dist: nxtomomill>=1.2.0dev1
|
31
31
|
Requires-Dist: processview>=1.5.0
|
32
32
|
Requires-Dist: ewoks>=0.1.1
|
33
|
-
Requires-Dist: ewokscore<1.1.0
|
34
33
|
Requires-Dist: sluurp>=0.4.1
|
35
34
|
Requires-Dist: packaging
|
36
35
|
Requires-Dist: pint
|
@@ -39,83 +38,63 @@ Provides-Extra: full-base
|
|
39
38
|
Requires-Dist: orange-canvas-core; extra == "full-base"
|
40
39
|
Requires-Dist: orange-widget-base; extra == "full-base"
|
41
40
|
Requires-Dist: ewoks[orange]>=0.1.1; extra == "full-base"
|
42
|
-
Requires-Dist: ewoksorange
|
41
|
+
Requires-Dist: ewoksorange==1.1; extra == "full-base"
|
43
42
|
Requires-Dist: rsyncmanager; extra == "full-base"
|
44
43
|
Requires-Dist: fabio; extra == "full-base"
|
45
|
-
Requires-Dist: h5py>=3; extra == "full-base"
|
46
|
-
Requires-Dist: lxml; extra == "full-base"
|
47
44
|
Requires-Dist: werkzeug; extra == "full-base"
|
48
45
|
Requires-Dist: json-rpc; extra == "full-base"
|
49
46
|
Requires-Dist: scipy; extra == "full-base"
|
50
47
|
Requires-Dist: Pillow; extra == "full-base"
|
51
|
-
Requires-Dist: glymur<0.14; extra == "full-base"
|
52
48
|
Requires-Dist: resource; extra == "full-base"
|
53
|
-
Requires-Dist: tifffile; extra == "full-base"
|
54
49
|
Requires-Dist: hdf5plugin; extra == "full-base"
|
55
50
|
Requires-Dist: pyicat_plus; extra == "full-base"
|
56
51
|
Requires-Dist: ewoksnotify[full]; extra == "full-base"
|
57
|
-
Requires-Dist: pyicat_plus; extra == "full-base"
|
58
52
|
Provides-Extra: full-no-nabu
|
59
53
|
Requires-Dist: orange-canvas-core; extra == "full-no-nabu"
|
60
54
|
Requires-Dist: orange-widget-base; extra == "full-no-nabu"
|
61
55
|
Requires-Dist: ewoks[orange]>=0.1.1; extra == "full-no-nabu"
|
62
|
-
Requires-Dist: ewoksorange
|
56
|
+
Requires-Dist: ewoksorange==1.1; extra == "full-no-nabu"
|
63
57
|
Requires-Dist: rsyncmanager; extra == "full-no-nabu"
|
64
58
|
Requires-Dist: fabio; extra == "full-no-nabu"
|
65
|
-
Requires-Dist: h5py>=3; extra == "full-no-nabu"
|
66
|
-
Requires-Dist: lxml; extra == "full-no-nabu"
|
67
59
|
Requires-Dist: werkzeug; extra == "full-no-nabu"
|
68
60
|
Requires-Dist: json-rpc; extra == "full-no-nabu"
|
69
61
|
Requires-Dist: scipy; extra == "full-no-nabu"
|
70
62
|
Requires-Dist: Pillow; extra == "full-no-nabu"
|
71
|
-
Requires-Dist: glymur<0.14; extra == "full-no-nabu"
|
72
63
|
Requires-Dist: resource; extra == "full-no-nabu"
|
73
|
-
Requires-Dist: tifffile; extra == "full-no-nabu"
|
74
64
|
Requires-Dist: hdf5plugin; extra == "full-no-nabu"
|
75
65
|
Requires-Dist: pyicat_plus; extra == "full-no-nabu"
|
76
66
|
Requires-Dist: ewoksnotify[full]; extra == "full-no-nabu"
|
77
|
-
Requires-Dist: pyicat_plus; extra == "full-no-nabu"
|
78
67
|
Provides-Extra: full-no-cuda
|
79
68
|
Requires-Dist: orange-canvas-core; extra == "full-no-cuda"
|
80
69
|
Requires-Dist: orange-widget-base; extra == "full-no-cuda"
|
81
70
|
Requires-Dist: ewoks[orange]>=0.1.1; extra == "full-no-cuda"
|
82
|
-
Requires-Dist: ewoksorange
|
71
|
+
Requires-Dist: ewoksorange==1.1; extra == "full-no-cuda"
|
83
72
|
Requires-Dist: rsyncmanager; extra == "full-no-cuda"
|
84
73
|
Requires-Dist: fabio; extra == "full-no-cuda"
|
85
|
-
Requires-Dist: h5py>=3; extra == "full-no-cuda"
|
86
|
-
Requires-Dist: lxml; extra == "full-no-cuda"
|
87
74
|
Requires-Dist: werkzeug; extra == "full-no-cuda"
|
88
75
|
Requires-Dist: json-rpc; extra == "full-no-cuda"
|
89
76
|
Requires-Dist: scipy; extra == "full-no-cuda"
|
90
77
|
Requires-Dist: Pillow; extra == "full-no-cuda"
|
91
|
-
Requires-Dist: glymur<0.14; extra == "full-no-cuda"
|
92
78
|
Requires-Dist: resource; extra == "full-no-cuda"
|
93
|
-
Requires-Dist: tifffile; extra == "full-no-cuda"
|
94
79
|
Requires-Dist: hdf5plugin; extra == "full-no-cuda"
|
95
80
|
Requires-Dist: pyicat_plus; extra == "full-no-cuda"
|
96
81
|
Requires-Dist: ewoksnotify[full]; extra == "full-no-cuda"
|
97
|
-
Requires-Dist: pyicat_plus; extra == "full-no-cuda"
|
98
82
|
Requires-Dist: nabu>=2023.3.1dev; extra == "full-no-cuda"
|
99
83
|
Provides-Extra: full
|
100
84
|
Requires-Dist: orange-canvas-core; extra == "full"
|
101
85
|
Requires-Dist: orange-widget-base; extra == "full"
|
102
86
|
Requires-Dist: ewoks[orange]>=0.1.1; extra == "full"
|
103
|
-
Requires-Dist: ewoksorange
|
87
|
+
Requires-Dist: ewoksorange==1.1; extra == "full"
|
104
88
|
Requires-Dist: rsyncmanager; extra == "full"
|
105
89
|
Requires-Dist: fabio; extra == "full"
|
106
|
-
Requires-Dist: h5py>=3; extra == "full"
|
107
|
-
Requires-Dist: lxml; extra == "full"
|
108
90
|
Requires-Dist: werkzeug; extra == "full"
|
109
91
|
Requires-Dist: json-rpc; extra == "full"
|
110
92
|
Requires-Dist: scipy; extra == "full"
|
111
93
|
Requires-Dist: Pillow; extra == "full"
|
112
|
-
Requires-Dist: glymur<0.14; extra == "full"
|
113
94
|
Requires-Dist: resource; extra == "full"
|
114
|
-
Requires-Dist: tifffile; extra == "full"
|
115
95
|
Requires-Dist: hdf5plugin; extra == "full"
|
116
96
|
Requires-Dist: pyicat_plus; extra == "full"
|
117
97
|
Requires-Dist: ewoksnotify[full]; extra == "full"
|
118
|
-
Requires-Dist: pyicat_plus; extra == "full"
|
119
98
|
Requires-Dist: nabu[full]>=2023.3.1dev; extra == "full"
|
120
99
|
Requires-Dist: pycuda<2024.1.1; extra == "full"
|
121
100
|
Requires-Dist: scikit-cuda; extra == "full"
|
@@ -123,22 +102,17 @@ Provides-Extra: doc
|
|
123
102
|
Requires-Dist: orange-canvas-core; extra == "doc"
|
124
103
|
Requires-Dist: orange-widget-base; extra == "doc"
|
125
104
|
Requires-Dist: ewoks[orange]>=0.1.1; extra == "doc"
|
126
|
-
Requires-Dist: ewoksorange
|
105
|
+
Requires-Dist: ewoksorange==1.1; extra == "doc"
|
127
106
|
Requires-Dist: rsyncmanager; extra == "doc"
|
128
107
|
Requires-Dist: fabio; extra == "doc"
|
129
|
-
Requires-Dist: h5py>=3; extra == "doc"
|
130
|
-
Requires-Dist: lxml; extra == "doc"
|
131
108
|
Requires-Dist: werkzeug; extra == "doc"
|
132
109
|
Requires-Dist: json-rpc; extra == "doc"
|
133
110
|
Requires-Dist: scipy; extra == "doc"
|
134
111
|
Requires-Dist: Pillow; extra == "doc"
|
135
|
-
Requires-Dist: glymur<0.14; extra == "doc"
|
136
112
|
Requires-Dist: resource; extra == "doc"
|
137
|
-
Requires-Dist: tifffile; extra == "doc"
|
138
113
|
Requires-Dist: hdf5plugin; extra == "doc"
|
139
114
|
Requires-Dist: pyicat_plus; extra == "doc"
|
140
115
|
Requires-Dist: ewoksnotify[full]; extra == "doc"
|
141
|
-
Requires-Dist: pyicat_plus; extra == "doc"
|
142
116
|
Requires-Dist: nabu>=2023.3.1dev; extra == "doc"
|
143
117
|
Requires-Dist: Sphinx>=4.0.0; extra == "doc"
|
144
118
|
Requires-Dist: nbsphinx; extra == "doc"
|
@@ -157,22 +131,17 @@ Provides-Extra: dev
|
|
157
131
|
Requires-Dist: orange-canvas-core; extra == "dev"
|
158
132
|
Requires-Dist: orange-widget-base; extra == "dev"
|
159
133
|
Requires-Dist: ewoks[orange]>=0.1.1; extra == "dev"
|
160
|
-
Requires-Dist: ewoksorange
|
134
|
+
Requires-Dist: ewoksorange==1.1; extra == "dev"
|
161
135
|
Requires-Dist: rsyncmanager; extra == "dev"
|
162
136
|
Requires-Dist: fabio; extra == "dev"
|
163
|
-
Requires-Dist: h5py>=3; extra == "dev"
|
164
|
-
Requires-Dist: lxml; extra == "dev"
|
165
137
|
Requires-Dist: werkzeug; extra == "dev"
|
166
138
|
Requires-Dist: json-rpc; extra == "dev"
|
167
139
|
Requires-Dist: scipy; extra == "dev"
|
168
140
|
Requires-Dist: Pillow; extra == "dev"
|
169
|
-
Requires-Dist: glymur<0.14; extra == "dev"
|
170
141
|
Requires-Dist: resource; extra == "dev"
|
171
|
-
Requires-Dist: tifffile; extra == "dev"
|
172
142
|
Requires-Dist: hdf5plugin; extra == "dev"
|
173
143
|
Requires-Dist: pyicat_plus; extra == "dev"
|
174
144
|
Requires-Dist: ewoksnotify[full]; extra == "dev"
|
175
|
-
Requires-Dist: pyicat_plus; extra == "dev"
|
176
145
|
Requires-Dist: nabu[full]>=2023.3.1dev; extra == "dev"
|
177
146
|
Requires-Dist: pycuda<2024.1.1; extra == "dev"
|
178
147
|
Requires-Dist: scikit-cuda; extra == "dev"
|
@@ -184,22 +153,17 @@ Provides-Extra: dev-no-cuda
|
|
184
153
|
Requires-Dist: orange-canvas-core; extra == "dev-no-cuda"
|
185
154
|
Requires-Dist: orange-widget-base; extra == "dev-no-cuda"
|
186
155
|
Requires-Dist: ewoks[orange]>=0.1.1; extra == "dev-no-cuda"
|
187
|
-
Requires-Dist: ewoksorange
|
156
|
+
Requires-Dist: ewoksorange==1.1; extra == "dev-no-cuda"
|
188
157
|
Requires-Dist: rsyncmanager; extra == "dev-no-cuda"
|
189
158
|
Requires-Dist: fabio; extra == "dev-no-cuda"
|
190
|
-
Requires-Dist: h5py>=3; extra == "dev-no-cuda"
|
191
|
-
Requires-Dist: lxml; extra == "dev-no-cuda"
|
192
159
|
Requires-Dist: werkzeug; extra == "dev-no-cuda"
|
193
160
|
Requires-Dist: json-rpc; extra == "dev-no-cuda"
|
194
161
|
Requires-Dist: scipy; extra == "dev-no-cuda"
|
195
162
|
Requires-Dist: Pillow; extra == "dev-no-cuda"
|
196
|
-
Requires-Dist: glymur<0.14; extra == "dev-no-cuda"
|
197
163
|
Requires-Dist: resource; extra == "dev-no-cuda"
|
198
|
-
Requires-Dist: tifffile; extra == "dev-no-cuda"
|
199
164
|
Requires-Dist: hdf5plugin; extra == "dev-no-cuda"
|
200
165
|
Requires-Dist: pyicat_plus; extra == "dev-no-cuda"
|
201
166
|
Requires-Dist: ewoksnotify[full]; extra == "dev-no-cuda"
|
202
|
-
Requires-Dist: pyicat_plus; extra == "dev-no-cuda"
|
203
167
|
Requires-Dist: nabu>=2023.3.1dev; extra == "dev-no-cuda"
|
204
168
|
Requires-Dist: black; extra == "dev-no-cuda"
|
205
169
|
Requires-Dist: flake8; extra == "dev-no-cuda"
|
@@ -209,22 +173,17 @@ Provides-Extra: test
|
|
209
173
|
Requires-Dist: orange-canvas-core; extra == "test"
|
210
174
|
Requires-Dist: orange-widget-base; extra == "test"
|
211
175
|
Requires-Dist: ewoks[orange]>=0.1.1; extra == "test"
|
212
|
-
Requires-Dist: ewoksorange
|
176
|
+
Requires-Dist: ewoksorange==1.1; extra == "test"
|
213
177
|
Requires-Dist: rsyncmanager; extra == "test"
|
214
178
|
Requires-Dist: fabio; extra == "test"
|
215
|
-
Requires-Dist: h5py>=3; extra == "test"
|
216
|
-
Requires-Dist: lxml; extra == "test"
|
217
179
|
Requires-Dist: werkzeug; extra == "test"
|
218
180
|
Requires-Dist: json-rpc; extra == "test"
|
219
181
|
Requires-Dist: scipy; extra == "test"
|
220
182
|
Requires-Dist: Pillow; extra == "test"
|
221
|
-
Requires-Dist: glymur<0.14; extra == "test"
|
222
183
|
Requires-Dist: resource; extra == "test"
|
223
|
-
Requires-Dist: tifffile; extra == "test"
|
224
184
|
Requires-Dist: hdf5plugin; extra == "test"
|
225
185
|
Requires-Dist: pyicat_plus; extra == "test"
|
226
186
|
Requires-Dist: ewoksnotify[full]; extra == "test"
|
227
|
-
Requires-Dist: pyicat_plus; extra == "test"
|
228
187
|
Requires-Dist: nabu>=2023.3.1dev; extra == "test"
|
229
188
|
Requires-Dist: pytest-asyncio; extra == "test"
|
230
189
|
Requires-Dist: tomoscan[test]>=2.2.0a6; extra == "test"
|
@@ -18,15 +18,16 @@ orangecontrib/tomwer/tutorials/simple_slice_reconstruction.ows,sha256=O9Bnunjh0Q
|
|
18
18
|
orangecontrib/tomwer/tutorials/simple_slice_reconstruction_on_slurm.ows,sha256=t-fwTMCvqQV17AIZWM0lSCmjC6loLEHNZSFmAADF9xY,6584
|
19
19
|
orangecontrib/tomwer/tutorials/simple_volume_local_reconstruction.ows,sha256=mhvCyFqXnFznRPaTG6wgjpxkte8n_SOzg3W8yJkWy1s,7025
|
20
20
|
orangecontrib/tomwer/tutorials/simple_volume_to_slurm_reconstruction.ows,sha256=jHOERmyBFo7NmmmOUO6KroAfvyAD8ds92lkl0g73C-8,9830
|
21
|
+
orangecontrib/tomwer/tutorials/untitled.ows,sha256=dBokmKHOdqZqHTrZqrZgjBg7xzQacKWUXBjY7lTaYVU,2731
|
21
22
|
orangecontrib/tomwer/tutorials/using_saaxis_to_find_cor.ows,sha256=TUZNkXEsQyj7Qra1GEb4IhGFDWv3uJzqXbp3P04jwbs,5192
|
22
23
|
orangecontrib/tomwer/tutorials/volume_casting_on_slurm.ows,sha256=yKa6pvd4UB6XDDlj_o7T8Md6bI8aQJXMCUnxyecdXbc,7568
|
23
24
|
orangecontrib/tomwer/tutorials/id16b/ID16b_full_volume.ows,sha256=eSxYxrZ-0WKsmDqXivsHxND7SR2dSwdgG6Wcjbr06Ew,1727
|
24
|
-
orangecontrib/tomwer/tutorials/id16b/ID16b_insitu.ows,sha256=
|
25
|
-
orangecontrib/tomwer/tutorials/id16b/ID16b_normalization.ows,sha256=
|
25
|
+
orangecontrib/tomwer/tutorials/id16b/ID16b_insitu.ows,sha256=sdo7YmzVUSBf61hsMUg7zOiGtDa21eitCx08fYY93LI,29558
|
26
|
+
orangecontrib/tomwer/tutorials/id16b/ID16b_normalization.ows,sha256=eufyC3wPbnzpUIQyno4mTrGXGtRayRFQbo0OAyYCds8,22594
|
26
27
|
orangecontrib/tomwer/tutorials/id16b/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
27
28
|
orangecontrib/tomwer/widgets/__init__.py,sha256=dX_TpkBh3mVsrj3EeGglEESsnZAEVq7V0Nb9bnBrb-8,1214
|
28
29
|
orangecontrib/tomwer/widgets/utils.py,sha256=yq1wZfpfY3iVAhwMRBls57q02lhljO89WRKN7MxMMNg,983
|
29
|
-
orangecontrib/tomwer/widgets/cluster/FutureSupervisorOW.py,sha256=
|
30
|
+
orangecontrib/tomwer/widgets/cluster/FutureSupervisorOW.py,sha256=JodqMVgu2krTWmrPEPze0E_SinOyX7UghDDbbsN8dSE,10210
|
30
31
|
orangecontrib/tomwer/widgets/cluster/SlurmClusterOW.py,sha256=O44AZGt7cC1KaAl4U9f78OuzKKMXOSm22voUodyvqnk,3003
|
31
32
|
orangecontrib/tomwer/widgets/cluster/__init__.py,sha256=vOOJnIIaLWAj8tnxD9MRzWDyYgk-cyuBsN7QQ5FrIoQ,385
|
32
33
|
orangecontrib/tomwer/widgets/cluster/icons/slurm.png,sha256=C-YBLwXCnh0oo4nvEt80WxX_jKYGUAFpWMUSlzt6ke0,1995
|
@@ -219,7 +220,7 @@ orangecontrib/tomwer/widgets/visualization/tests/__init__.py,sha256=47DEQpj8HBSa
|
|
219
220
|
tomwer/__init__.py,sha256=cMIyH-uRxpa9WVnAuWjiBD7k9TK57WO21RzP_S-Mb8I,460
|
220
221
|
tomwer/__main__.py,sha256=7tCADiS4u7k1PCxFhlRAcYSIOpxQTGUTx8sCEQ-hi1E,8707
|
221
222
|
tomwer/utils.py,sha256=7h7dEgKAEUmQ43jkULvC1B9Adl55nkCty-SEKUKCl4U,7008
|
222
|
-
tomwer/version.py,sha256=
|
223
|
+
tomwer/version.py,sha256=DKeug4r2Q7g-Ny4eovdPe5bCCM6RkITFNm8wikj1IUE,4386
|
223
224
|
tomwer/app/__init__.py,sha256=h1FKED7Tw5f99yikygt7ruXsdrxQhcJxO7kagLGxhJg,84
|
224
225
|
tomwer/app/axis.py,sha256=1TZU27QPhq6Sa5-1kRMr4VDv2Qntg4ZHTQOjwucXf4I,5842
|
225
226
|
tomwer/app/canvas.py,sha256=y8rYOiwmv6ug7JcjgkOzEiGQnNXjKWNNmKofT0n8TFg,1538
|
@@ -245,7 +246,7 @@ tomwer/app/stopdatalistener.py,sha256=WADEHM5LHHjWP2HM-ru-RinXWzvV3PQv72E5Y1Xeio
|
|
245
246
|
tomwer/app/ystitching.py,sha256=QvXUHBnmr3R--lTvd_RkjpXMAedbnpiC01bSD99_BPE,562
|
246
247
|
tomwer/app/zstitching.py,sha256=pTV_ESnARpabvo038pSCuUoV0DjrPxKubIKfhjyIZZ0,562
|
247
248
|
tomwer/app/canvas_launcher/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
248
|
-
tomwer/app/canvas_launcher/config.py,sha256=
|
249
|
+
tomwer/app/canvas_launcher/config.py,sha256=vzpYdoPI0zP3uogwU5TLggDGQrSpw2ew-Fvs0-wjinU,4066
|
249
250
|
tomwer/app/canvas_launcher/environ.py,sha256=ljQyPL_u9ai1CWmmq8uGHbn437CZWyX4uJtrDIyabGk,2453
|
250
251
|
tomwer/app/canvas_launcher/mainwindow.py,sha256=KZzbY3AuHITdaS8K4jG2QomD5DEgQqHRYcIe9hymC9g,22283
|
251
252
|
tomwer/app/canvas_launcher/splash.py,sha256=cpUuZVKwlQbeAWfAqjpjP4q1v1MmkfxU6WWllLSVZo8,508
|
@@ -336,12 +337,12 @@ tomwer/core/process/reconstruction/nabu/castvolume.py,sha256=yTdVMGjG8gnByNi7D1X
|
|
336
337
|
tomwer/core/process/reconstruction/nabu/helical.py,sha256=twqUNAatBAAK2K0cTmqcWb4py_nHif6Vsr3ms6Pqbag,2051
|
337
338
|
tomwer/core/process/reconstruction/nabu/nabucommon.py,sha256=GGhM3jl2OVbI2mr4-bMlMOyON2Ss0dEOU_v9SmixhTo,24532
|
338
339
|
tomwer/core/process/reconstruction/nabu/nabuscores.py,sha256=fjOtWxPOoVHq5E1mkbpfVglWNq5HfP1VAzhaLu1jd1M,25291
|
339
|
-
tomwer/core/process/reconstruction/nabu/nabuslices.py,sha256=
|
340
|
+
tomwer/core/process/reconstruction/nabu/nabuslices.py,sha256=9w_DPooYn8l9rSGZJhYFmWlPO0L-DkuEKvKmb-Q9Sao,32648
|
340
341
|
tomwer/core/process/reconstruction/nabu/nabuvolume.py,sha256=Fn0tkPDTDJQaMEJA4LzpPp0ZtG4MIu9YN82-jesxRKo,20052
|
341
342
|
tomwer/core/process/reconstruction/nabu/plane.py,sha256=1SFNJgl1_cDYVW6gq7zjw2jpvRjiEmzzEQEBCxUseGM,380
|
342
343
|
tomwer/core/process/reconstruction/nabu/settings.py,sha256=3AJpxVQbJziw4v6F26Ppz8Q9vc9ZNepTWygqpCAbIEM,955
|
343
344
|
tomwer/core/process/reconstruction/nabu/target.py,sha256=I_7X2Nfr5VC4doaodtCzTeg7JVG1Lnbv123uI8AKEeU,111
|
344
|
-
tomwer/core/process/reconstruction/nabu/utils.py,sha256=
|
345
|
+
tomwer/core/process/reconstruction/nabu/utils.py,sha256=YtcEj3pLYKjArklZD7cREsuafeNMjQ203VIR8Oeo-i4,16271
|
345
346
|
tomwer/core/process/reconstruction/nabu/test/test_castvolume.py,sha256=yEqVFrmp8vVpiIuhASMR9bWLF3Cgnag2u8S_SaI8BSo,3985
|
346
347
|
tomwer/core/process/reconstruction/nabu/test/test_nabu_utils.py,sha256=vmB02KUGcP_AyUEWuDByGm0UAOCDIHEhePfRV1UGQQg,15608
|
347
348
|
tomwer/core/process/reconstruction/nabu/test/test_nabunormalization.py,sha256=5rHDwUROEBlsEFsZoy8mmcdRpziEetF9g_oFyxlvS6k,6010
|
@@ -350,7 +351,7 @@ tomwer/core/process/reconstruction/normalization/normalization.py,sha256=8rW9D6e
|
|
350
351
|
tomwer/core/process/reconstruction/normalization/params.py,sha256=BqZPnaAeCi0CVkNxVKcS188oCb2y6RUxY-c5pLdOIDk,3374
|
351
352
|
tomwer/core/process/reconstruction/saaxis/__init__.py,sha256=ZEOu0nZWlMyBoX_A64yeEjVflE5x4iWSpYLTgs45g0o,137
|
352
353
|
tomwer/core/process/reconstruction/saaxis/params.py,sha256=tCV5QLu7jqLwmoRnUGCNxXgdXZ_WRRuuIxbmXG18mH0,4171
|
353
|
-
tomwer/core/process/reconstruction/saaxis/saaxis.py,sha256=
|
354
|
+
tomwer/core/process/reconstruction/saaxis/saaxis.py,sha256=g3p8_cI1KTasAc4183pXKa22jwml-CfAbhwF8dvZLlo,30282
|
354
355
|
tomwer/core/process/reconstruction/sadeltabeta/__init__.py,sha256=WDYJxfqPnz5IeLPCX5W8UEO8-Z-NSH79gkqp2DZn1bM,162
|
355
356
|
tomwer/core/process/reconstruction/sadeltabeta/params.py,sha256=ziAlTtQLy4EItIprFxDOm2Td1emHpSpnQb58niF1tI0,2691
|
356
357
|
tomwer/core/process/reconstruction/sadeltabeta/sadeltabeta.py,sha256=bAO0dYSnMdgbBHlcU-roRC7sGqLIpi_rlC7cMXFInLI,29075
|
@@ -364,7 +365,7 @@ tomwer/core/process/reconstruction/tests/test_darkref.py,sha256=KkdZ4epw9fYOPT3e
|
|
364
365
|
tomwer/core/process/reconstruction/tests/test_darkref_copy.py,sha256=Cl8qLAMZxLHDJp2oMDusr6q2WfALIg6mpbvuGyJJY7M,6090
|
365
366
|
tomwer/core/process/reconstruction/tests/test_params_cache.py,sha256=mNqWbOLr4mo06mwF3KhFpQPRvGgFxsCTPhLlK-fF2Ro,1238
|
366
367
|
tomwer/core/process/reconstruction/tests/test_paramsbase.py,sha256=n9x9BZV4I9uF7DM5QjCelfxaAzWQ6vx9N9BsjysW6RU,1505
|
367
|
-
tomwer/core/process/reconstruction/tests/test_saaxis.py,sha256=
|
368
|
+
tomwer/core/process/reconstruction/tests/test_saaxis.py,sha256=iuDJW3Wr5vbS19UZO49a7ohcJBX5vhQytzvOEPUusIQ,2362
|
368
369
|
tomwer/core/process/reconstruction/tests/test_sadeltabeta.py,sha256=24JRMIocNYLMdX_xFgOCUUo_VA61BPzz3HTaRTzDFhE,1232
|
369
370
|
tomwer/core/process/reconstruction/tests/test_utils.py,sha256=o_w8Bkk3T0btLCAan2UPq9U45y9vfh8ihyaHnZ7fEb0,1006
|
370
371
|
tomwer/core/process/reconstruction/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -539,7 +540,7 @@ tomwer/gui/edit/tests/test_dkrf_patch.py,sha256=L0fO2nqqK74EOIZTPQKjO03qsAiXbqjj
|
|
539
540
|
tomwer/gui/edit/tests/test_image_key_editor.py,sha256=6sIGM_DjU_KjspnVKB2UDhWh_BLDhYP8rS6U1fAZXkk,4647
|
540
541
|
tomwer/gui/edit/tests/test_nx_editor.py,sha256=y4_-g1-8rj0NkhAZ9HeebH-CIcUrvrH3q-s2RnBRQMo,17501
|
541
542
|
tomwer/gui/reconstruction/__init__.py,sha256=Ozf9bYay5hVhe1clExeM_MLhcAuu624i5BP1xonWlB0,95
|
542
|
-
tomwer/gui/reconstruction/sacommon.py,sha256=
|
543
|
+
tomwer/gui/reconstruction/sacommon.py,sha256=1ZT51WRkajkWsyaJmnH1Fi2QxHzyEa8Pqf7DAyF47lQ,5982
|
543
544
|
tomwer/gui/reconstruction/axis/AxisMainWindow.py,sha256=7w2LhdQ1pa8vU9U-XTA3ohGQfYKk5ETZ79s_xl4Zxx8,9641
|
544
545
|
tomwer/gui/reconstruction/axis/AxisOptionsWidget.py,sha256=M47xflZ68KkTDg8tksFt8n7ZFVIr8tJxstlPyG4Odq0,12168
|
545
546
|
tomwer/gui/reconstruction/axis/AxisSettingsWidget.py,sha256=7GpHteE2j9RUo-jUQoJdXJ-GnIi9VnY13Lveq3mvd1M,28120
|
@@ -561,20 +562,22 @@ tomwer/gui/reconstruction/nabu/check.py,sha256=5DYLlVCyXm3ax5VgogX79n1Oyl3O_JUvZ
|
|
561
562
|
tomwer/gui/reconstruction/nabu/helical.py,sha256=TAVPcuZdgtZSz37ESqi_yuLhYuNnGde_0drvjTntahs,3708
|
562
563
|
tomwer/gui/reconstruction/nabu/nabuflow.py,sha256=mnFFd9z7IC9FFZ3xcOr-6g2hvY0R7PtnFI-AMgWqHhI,14977
|
563
564
|
tomwer/gui/reconstruction/nabu/platform.py,sha256=eSPs2yUfBSHsqZ8bYY_BJ7zuRXc5sxXA4lRxlQaFBz0,3859
|
564
|
-
tomwer/gui/reconstruction/nabu/slices.py,sha256=
|
565
|
+
tomwer/gui/reconstruction/nabu/slices.py,sha256=fDvYrDDvwYmXFmjEKU4zv3NdkUciPYM4rqteSb9pQD8,24283
|
565
566
|
tomwer/gui/reconstruction/nabu/slurm.py,sha256=yfJD8KgX45Be5CUi6bn2CdocrQemJPxDYBBqoLoXqn0,1268
|
566
567
|
tomwer/gui/reconstruction/nabu/volume.py,sha256=OGstMDOd7DHY0PVUJdPRxOtSH7SaJyy7VNWU1F6ci6g,17826
|
567
568
|
tomwer/gui/reconstruction/nabu/nabuconfig/__init__.py,sha256=WgEFXIrUDhX0vpBNlKiymHEY9p1DMdk4QZkvnXIC8yk,77
|
568
569
|
tomwer/gui/reconstruction/nabu/nabuconfig/base.py,sha256=7jB8VKVk5zt2QP4z1Vx2k7vLfPN5jjeGnCL_dLXr1J4,2133
|
569
|
-
tomwer/gui/reconstruction/nabu/nabuconfig/ctf.py,sha256=
|
570
|
+
tomwer/gui/reconstruction/nabu/nabuconfig/ctf.py,sha256=6zFiWhaJcJAWsZS0-djZ3HUROxUGHKa0Zw_XTsDvN10,12559
|
570
571
|
tomwer/gui/reconstruction/nabu/nabuconfig/nabuconfig.py,sha256=5tCkwvgCv_Rdt7yP4ZUrq9ZGKE7Yy9Ht-n7XvCGIoTw,9048
|
571
572
|
tomwer/gui/reconstruction/nabu/nabuconfig/output.py,sha256=0SShYqvFj-motxTw20e3I1Z0WiierSqgOsN15qwe-TY,11907
|
572
573
|
tomwer/gui/reconstruction/nabu/nabuconfig/phase.py,sha256=t4rVi6DCwRkrfGv_9hD1SWMwu9CMpzxjAwyH_YmC3Gw,16238
|
573
|
-
tomwer/gui/reconstruction/nabu/nabuconfig/preprocessing.py,sha256=
|
574
|
+
tomwer/gui/reconstruction/nabu/nabuconfig/preprocessing.py,sha256=utJgcburzX_WNdXItAKuENd97oLIs4QzFmLrNUF0n3c,32532
|
574
575
|
tomwer/gui/reconstruction/nabu/nabuconfig/reconstruction.py,sha256=W0EXvvEgtlOtxgg7CjsSj2aTjfpRwYfQ_I1fDX0cPxE,42571
|
576
|
+
tomwer/gui/reconstruction/nabu/nabuconfig/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
577
|
+
tomwer/gui/reconstruction/nabu/nabuconfig/tests/test_NabuConfiguration.py,sha256=xORtyJ9I4UDC_COEA2RMqvEAARLLorZFkwZoeuDa67c,1811
|
575
578
|
tomwer/gui/reconstruction/nabu/test/test_cast_volume.py,sha256=Gtz_LduqKQNiVuVYrvtoPkE-DgG9QotS1mK-siSl8HU,3451
|
576
579
|
tomwer/gui/reconstruction/nabu/test/test_check.py,sha256=KXg1Gg4FVjQ9GkBOgb0ZJh6_c3JMeJTtyX5UVY6vdms,2318
|
577
|
-
tomwer/gui/reconstruction/nabu/test/test_ctf.py,sha256=
|
580
|
+
tomwer/gui/reconstruction/nabu/test/test_ctf.py,sha256=9LaonqdG7kp1Tst_kzTnVp9HCCGQjxo1vIKWj1zCFiY,1457
|
578
581
|
tomwer/gui/reconstruction/nabu/test/test_helical.py,sha256=6vB_xXJOuNPHbXKLw8JWUtl-BB-Ntm8xkNEMV08ocEM,754
|
579
582
|
tomwer/gui/reconstruction/nabu/test/test_nabu_preprocessing.py,sha256=OcTJ6-GQrIMETlezvJ7HlWE7_eWMKdfbfueohl_lZ-c,2258
|
580
583
|
tomwer/gui/reconstruction/normalization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -592,7 +595,7 @@ tomwer/gui/reconstruction/scores/control.py,sha256=SVWMruB--sa_LSM1oZhjoFM5ci1oQ
|
|
592
595
|
tomwer/gui/reconstruction/scores/scoreplot.py,sha256=_mHvuc8EoSgEFiQkDJM9p21CLkgLe3c3d-bvPfQ0mFc,31166
|
593
596
|
tomwer/gui/reconstruction/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
594
597
|
tomwer/gui/reconstruction/tests/test_axis.py,sha256=h0u_tTnQp57rg4oFtwjGSYNw5IujoxydOpnvNd98INA,7498
|
595
|
-
tomwer/gui/reconstruction/tests/test_nabu.py,sha256=
|
598
|
+
tomwer/gui/reconstruction/tests/test_nabu.py,sha256=MbyaQcRYGOs20fO3sUY-KPHhOoRzXpEPrx_jCjKwLiA,13546
|
596
599
|
tomwer/gui/reconstruction/tests/test_saaxis.py,sha256=dQjhULF913WMevo0ePIy6JQbnrP6zGVnde9XLRLBtFM,6792
|
597
600
|
tomwer/gui/reconstruction/tests/test_sadeltabeta.py,sha256=96tE_gxIcmp0qDXQmIwSEkYl3Js7dT2CyUH1doyjGc0,4491
|
598
601
|
tomwer/gui/samplemoved/__init__.py,sha256=jNA03mYWfP3_S1MRet6ijYe5DNCTK3Br7-5yrW3oEG4,8240
|
@@ -635,7 +638,7 @@ tomwer/gui/tests/test_axis_gui.py,sha256=7Sz7LKTADuRCxaPYFGes22-0AItYwfrcd6kgk4X
|
|
635
638
|
tomwer/gui/tests/test_qfolder_dialog.py,sha256=hwN7uEDUYoGsHeJgjTvgMLV21umt_LTIemDsUTU2UvA,352
|
636
639
|
tomwer/gui/utils/RangeWidget.py,sha256=HERjGePh_LxkJEELt2ZVOL_D8G_0xmaP4OotZlASPEo,1327
|
637
640
|
tomwer/gui/utils/__init__.py,sha256=zRGvzYC0R676iDAjHIERQJlV4YgTcsXc3G34f6cUCK8,66
|
638
|
-
tomwer/gui/utils/buttons.py,sha256=
|
641
|
+
tomwer/gui/utils/buttons.py,sha256=czf14thj6yC9oqrSga77pBDFUtizuAlsIG39GSfpIss,7361
|
639
642
|
tomwer/gui/utils/completer.py,sha256=XQGVSiUdLa1MfgXPDY5qfcTxtjVerxmVKXmWDb-kQ-I,3606
|
640
643
|
tomwer/gui/utils/flow.py,sha256=DO9QhS_0dOxMArowqDGU5yZ_a36CsvwQUoFPwuxjxkE,10646
|
641
644
|
tomwer/gui/utils/gpu.py,sha256=R2sRA77zyxdy5bVYGNltQpKS_9wuaj9eIn6rglsWGWg,2223
|
@@ -689,7 +692,6 @@ tomwer/io/utils/tomoobj.py,sha256=PGcTc2nMDMzKGvL7u5LgIMc9MYhJwLN9yecA1gttmzE,28
|
|
689
692
|
tomwer/io/utils/utils.py,sha256=BGXWRMl0l0VNHJDo5EA33gs9IHLiVCYbc4ThtU8-xPU,9292
|
690
693
|
tomwer/io/utils/test/test_raw_and_processed_data.py,sha256=2TgR3GZZ1PJ2wlyCqRU4qxh6XrQF-thvSqLZFMSV5es,552
|
691
694
|
tomwer/io/utils/test/test_utils.py,sha256=1EVY_N0vryUJYAe-l_CM0HbqQr-8tf7DAM6XyVy_4-U,1922
|
692
|
-
tomwer/model/dataset.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
693
695
|
tomwer/resources/__init__.py,sha256=yGvSUNzqb_1F2qvcXARl3m6yqZYagpeUWjOayUY4B8s,4613
|
694
696
|
tomwer/resources/gui/icons/Imagej_icon.png,sha256=JFDzPw20pzRrf6wLBnScXEcmTVt6orXPzwPwniKeVss,1618960
|
695
697
|
tomwer/resources/gui/icons/a.png,sha256=YrYFndLl3SUcsYNJDloU9YeJLBUkiMmgvDjDNJCMipI,3858
|
@@ -833,14 +835,14 @@ tomwer/synctools/rsyncmanager.py,sha256=4SvN0Bk_D_WavBWFvF64Vxmll5kXeOrhmgOI4k0g
|
|
833
835
|
tomwer/synctools/saaxis.py,sha256=hvsJ3g189fA3FWZUdUFrqPLDRh5T-V7ptWY2YhJJ13I,669
|
834
836
|
tomwer/synctools/sadeltabeta.py,sha256=WCrBx-2lBlQUuoZlbR_HQaBAH8owsghh2j1TQXiBMIw,694
|
835
837
|
tomwer/synctools/stacks/__init__.py,sha256=wWN09X2qRXzBSekl5nkpEx1WDAcU2LQLxO9NpmW3bDU,165
|
836
|
-
tomwer/synctools/stacks/processingstack.py,sha256=
|
838
|
+
tomwer/synctools/stacks/processingstack.py,sha256=3FE7Z_dHvPS6k3HoYr1WJSkdOk4mM_R8OgFylw2tTc4,5959
|
837
839
|
tomwer/synctools/stacks/control/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
838
840
|
tomwer/synctools/stacks/control/datalistener.py,sha256=XN40esWfSQPgsy9HHrjvd3imSg7gcTzZ2OJgAFEtbEs,3785
|
839
841
|
tomwer/synctools/stacks/reconstruction/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
840
842
|
tomwer/synctools/stacks/reconstruction/axis.py,sha256=yq36BFGUGq0dtrDYE581nA2kMomMex6Nl7JSF2EVa_U,6088
|
841
843
|
tomwer/synctools/stacks/reconstruction/castvolume.py,sha256=hyLW_M6uR81nUAk1ZvyyYMd3gvIcWfqKF7RSdUgVzmQ,6795
|
842
844
|
tomwer/synctools/stacks/reconstruction/dkrefcopy.py,sha256=bemmlZajyoT7hAvGeEfhEXuxIN1IwhgEwnYSe1htXKA,6171
|
843
|
-
tomwer/synctools/stacks/reconstruction/nabu.py,sha256=
|
845
|
+
tomwer/synctools/stacks/reconstruction/nabu.py,sha256=fr86pc9XJahx3tel1lRoZU1GQZ64px3R11W4IMWhLAE,6661
|
844
846
|
tomwer/synctools/stacks/reconstruction/normalization.py,sha256=WSlx-aad8OhKI-2wZDe2pKzu9ht-446Yrwo0Z0cUaE0,4044
|
845
847
|
tomwer/synctools/stacks/reconstruction/saaxis.py,sha256=6HHfNfT4n6podzB_X88AjC7simiFAHpoi520nt3OexY,5808
|
846
848
|
tomwer/synctools/stacks/reconstruction/sadeltabeta.py,sha256=Oo0mczxv3-DxedpOybyMSUZAlcf65W8ZiCeTvPMHEas,5796
|
@@ -849,7 +851,6 @@ tomwer/synctools/tests/test_darkRefs.py,sha256=1OgWaV-hgDmi4rkh0hxjCW_codBAnxNhp
|
|
849
851
|
tomwer/synctools/tests/test_foldertransfer.py,sha256=ZFIJWSjgYAWw3ktzamid5DJZNnMkAV6Pj72dKG69cJc,12024
|
850
852
|
tomwer/synctools/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
851
853
|
tomwer/synctools/utils/scanstages.py,sha256=xd27Y1mIcL9YGTHER7MX7oS_ky12R_y2fjIznT6p2rg,7797
|
852
|
-
tomwer/tasks/reconstruction/cleardarkflat.py,sha256=_V_x7W8vp1_AqqtQ9xk2VRgwlivn4IPTLEpWySjSZRE,1353
|
853
854
|
tomwer/tests/__init__.py,sha256=dPPaIvpzHssjwxsMzYJM_gxQ2e0cnRyQHXxi9ux6ZOY,19
|
854
855
|
tomwer/tests/conftest.py,sha256=0XlKfOrVtPg8VmyQn4BoK_mzcliFUtacDGLlZ5wD_PM,1912
|
855
856
|
tomwer/tests/datasets.py,sha256=QXQ3jSwgWzfq4CaELOSrk9kHg5GmrP7kGHsdOlNSEIE,336
|
@@ -906,9 +907,9 @@ tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_volume_viewer
|
|
906
907
|
tomwer/tests/test_ewoks/test_conversion.py,sha256=a8cEWbErXiFCAkaapi0jeEoRKYxcFQCoa-Jr_u77_OM,3656
|
907
908
|
tomwer/tests/test_ewoks/test_single_node_execution.py,sha256=YBUHfiAnkciv_kjj7biC5fOs7c7ofNImM_azGMn4LZM,2813
|
908
909
|
tomwer/tests/test_ewoks/test_workflows.py,sha256=Eq80eexf5NVL7SzvwctLOaUeuQ8V3vDiFiHgbJA4Yb8,4871
|
909
|
-
tomwer-1.5.
|
910
|
-
tomwer-1.5.
|
911
|
-
tomwer-1.5.
|
912
|
-
tomwer-1.5.
|
913
|
-
tomwer-1.5.
|
914
|
-
tomwer-1.5.
|
910
|
+
tomwer-1.5.2.dist-info/licenses/LICENSE,sha256=62p1wL0n9WMTu8x2YDv0odYgTqeSvTd9mQ0v6Mq7lzE,1876
|
911
|
+
tomwer-1.5.2.dist-info/METADATA,sha256=GIxAXiLuueEJjDNgHpJLxxSxCWI3nXYdkWvtn9wWo88,11636
|
912
|
+
tomwer-1.5.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
913
|
+
tomwer-1.5.2.dist-info/entry_points.txt,sha256=py3ZUWvGnWGc5c7Yhw_uBTm8Fmew0BDw3aQZnWMBNZI,500
|
914
|
+
tomwer-1.5.2.dist-info/top_level.txt,sha256=Yz5zKh0FPiImtzHYcPuztG1AO8-6KEpUWgoChGbA0Ys,21
|
915
|
+
tomwer-1.5.2.dist-info/RECORD,,
|
@@ -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
|
File without changes
|
File without changes
|