sigima 0.0.1.dev0__py3-none-any.whl → 1.0.0__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.
- sigima/__init__.py +142 -2
- sigima/client/__init__.py +105 -0
- sigima/client/base.py +780 -0
- sigima/client/remote.py +469 -0
- sigima/client/stub.py +814 -0
- sigima/client/utils.py +90 -0
- sigima/config.py +444 -0
- sigima/data/logo/Sigima.svg +135 -0
- sigima/data/tests/annotations.json +798 -0
- sigima/data/tests/curve_fitting/exponential_fit.txt +511 -0
- sigima/data/tests/curve_fitting/gaussian_fit.txt +100 -0
- sigima/data/tests/curve_fitting/piecewiseexponential_fit.txt +1022 -0
- sigima/data/tests/curve_fitting/polynomial_fit.txt +100 -0
- sigima/data/tests/curve_fitting/twohalfgaussian_fit.txt +1000 -0
- sigima/data/tests/curve_formats/bandwidth.txt +201 -0
- sigima/data/tests/curve_formats/boxcar.npy +0 -0
- sigima/data/tests/curve_formats/datetime.txt +1001 -0
- sigima/data/tests/curve_formats/dynamic_parameters.txt +4000 -0
- sigima/data/tests/curve_formats/fw1e2.txt +301 -0
- sigima/data/tests/curve_formats/fwhm.txt +319 -0
- sigima/data/tests/curve_formats/multiple_curves.csv +29 -0
- sigima/data/tests/curve_formats/noised_saw.mat +0 -0
- sigima/data/tests/curve_formats/oscilloscope.csv +111 -0
- sigima/data/tests/curve_formats/other/other2/recursive2.txt +5 -0
- sigima/data/tests/curve_formats/other/recursive1.txt +5 -0
- sigima/data/tests/curve_formats/paracetamol.npy +0 -0
- sigima/data/tests/curve_formats/paracetamol.txt +1010 -0
- sigima/data/tests/curve_formats/paracetamol_dx_dy.csv +1000 -0
- sigima/data/tests/curve_formats/paracetamol_dy.csv +1001 -0
- sigima/data/tests/curve_formats/pulse1.npy +0 -0
- sigima/data/tests/curve_formats/pulse2.npy +0 -0
- sigima/data/tests/curve_formats/simple.txt +5 -0
- sigima/data/tests/curve_formats/spectrum.mca +2139 -0
- sigima/data/tests/curve_formats/square2.npy +0 -0
- sigima/data/tests/curve_formats/step.npy +0 -0
- sigima/data/tests/fabry-perot1.jpg +0 -0
- sigima/data/tests/fabry-perot2.jpg +0 -0
- sigima/data/tests/flower.npy +0 -0
- sigima/data/tests/image_formats/NF 180338201.scor-data +11003 -0
- sigima/data/tests/image_formats/binary_image.npy +0 -0
- sigima/data/tests/image_formats/binary_image.png +0 -0
- sigima/data/tests/image_formats/centroid_test.npy +0 -0
- sigima/data/tests/image_formats/coordinated_text/complex_image.txt +10011 -0
- sigima/data/tests/image_formats/coordinated_text/complex_ref_image.txt +10010 -0
- sigima/data/tests/image_formats/coordinated_text/image.txt +15 -0
- sigima/data/tests/image_formats/coordinated_text/image2.txt +14 -0
- sigima/data/tests/image_formats/coordinated_text/image_no_unit_no_label.txt +14 -0
- sigima/data/tests/image_formats/coordinated_text/image_with_nan.txt +15 -0
- sigima/data/tests/image_formats/coordinated_text/image_with_unit.txt +14 -0
- sigima/data/tests/image_formats/fiber.csv +480 -0
- sigima/data/tests/image_formats/fiber.jpg +0 -0
- sigima/data/tests/image_formats/fiber.png +0 -0
- sigima/data/tests/image_formats/fiber.txt +480 -0
- sigima/data/tests/image_formats/gaussian_spot_with_noise.npy +0 -0
- sigima/data/tests/image_formats/mr-brain.dcm +0 -0
- sigima/data/tests/image_formats/noised_gaussian.mat +0 -0
- sigima/data/tests/image_formats/sif_reader/nd_lum_image_no_glue.sif +0 -0
- sigima/data/tests/image_formats/sif_reader/raman1.sif +0 -0
- sigima/data/tests/image_formats/tiling.txt +10 -0
- sigima/data/tests/image_formats/uint16.tiff +0 -0
- sigima/data/tests/image_formats/uint8.tiff +0 -0
- sigima/data/tests/laser_beam/TEM00_z_13.jpg +0 -0
- sigima/data/tests/laser_beam/TEM00_z_18.jpg +0 -0
- sigima/data/tests/laser_beam/TEM00_z_23.jpg +0 -0
- sigima/data/tests/laser_beam/TEM00_z_30.jpg +0 -0
- sigima/data/tests/laser_beam/TEM00_z_35.jpg +0 -0
- sigima/data/tests/laser_beam/TEM00_z_40.jpg +0 -0
- sigima/data/tests/laser_beam/TEM00_z_45.jpg +0 -0
- sigima/data/tests/laser_beam/TEM00_z_50.jpg +0 -0
- sigima/data/tests/laser_beam/TEM00_z_55.jpg +0 -0
- sigima/data/tests/laser_beam/TEM00_z_60.jpg +0 -0
- sigima/data/tests/laser_beam/TEM00_z_65.jpg +0 -0
- sigima/data/tests/laser_beam/TEM00_z_70.jpg +0 -0
- sigima/data/tests/laser_beam/TEM00_z_75.jpg +0 -0
- sigima/data/tests/laser_beam/TEM00_z_80.jpg +0 -0
- sigima/enums.py +195 -0
- sigima/io/__init__.py +123 -0
- sigima/io/base.py +311 -0
- sigima/io/common/__init__.py +5 -0
- sigima/io/common/basename.py +164 -0
- sigima/io/common/converters.py +189 -0
- sigima/io/common/objmeta.py +181 -0
- sigima/io/common/textreader.py +58 -0
- sigima/io/convenience.py +157 -0
- sigima/io/enums.py +17 -0
- sigima/io/ftlab.py +395 -0
- sigima/io/image/__init__.py +9 -0
- sigima/io/image/base.py +177 -0
- sigima/io/image/formats.py +1016 -0
- sigima/io/image/funcs.py +414 -0
- sigima/io/signal/__init__.py +9 -0
- sigima/io/signal/base.py +129 -0
- sigima/io/signal/formats.py +290 -0
- sigima/io/signal/funcs.py +723 -0
- sigima/objects/__init__.py +260 -0
- sigima/objects/base.py +937 -0
- sigima/objects/image/__init__.py +88 -0
- sigima/objects/image/creation.py +556 -0
- sigima/objects/image/object.py +524 -0
- sigima/objects/image/roi.py +904 -0
- sigima/objects/scalar/__init__.py +57 -0
- sigima/objects/scalar/common.py +215 -0
- sigima/objects/scalar/geometry.py +502 -0
- sigima/objects/scalar/table.py +784 -0
- sigima/objects/shape.py +290 -0
- sigima/objects/signal/__init__.py +133 -0
- sigima/objects/signal/constants.py +27 -0
- sigima/objects/signal/creation.py +1428 -0
- sigima/objects/signal/object.py +444 -0
- sigima/objects/signal/roi.py +274 -0
- sigima/params.py +405 -0
- sigima/proc/__init__.py +96 -0
- sigima/proc/base.py +381 -0
- sigima/proc/decorator.py +330 -0
- sigima/proc/image/__init__.py +513 -0
- sigima/proc/image/arithmetic.py +335 -0
- sigima/proc/image/base.py +260 -0
- sigima/proc/image/detection.py +519 -0
- sigima/proc/image/edges.py +329 -0
- sigima/proc/image/exposure.py +406 -0
- sigima/proc/image/extraction.py +458 -0
- sigima/proc/image/filtering.py +219 -0
- sigima/proc/image/fourier.py +147 -0
- sigima/proc/image/geometry.py +661 -0
- sigima/proc/image/mathops.py +340 -0
- sigima/proc/image/measurement.py +195 -0
- sigima/proc/image/morphology.py +155 -0
- sigima/proc/image/noise.py +107 -0
- sigima/proc/image/preprocessing.py +182 -0
- sigima/proc/image/restoration.py +235 -0
- sigima/proc/image/threshold.py +217 -0
- sigima/proc/image/transformations.py +393 -0
- sigima/proc/signal/__init__.py +376 -0
- sigima/proc/signal/analysis.py +206 -0
- sigima/proc/signal/arithmetic.py +551 -0
- sigima/proc/signal/base.py +262 -0
- sigima/proc/signal/extraction.py +60 -0
- sigima/proc/signal/features.py +310 -0
- sigima/proc/signal/filtering.py +484 -0
- sigima/proc/signal/fitting.py +276 -0
- sigima/proc/signal/fourier.py +259 -0
- sigima/proc/signal/mathops.py +420 -0
- sigima/proc/signal/processing.py +580 -0
- sigima/proc/signal/stability.py +175 -0
- sigima/proc/title_formatting.py +227 -0
- sigima/proc/validation.py +272 -0
- sigima/tests/__init__.py +7 -0
- sigima/tests/common/__init__.py +0 -0
- sigima/tests/common/arithmeticparam_unit_test.py +26 -0
- sigima/tests/common/basename_unit_test.py +126 -0
- sigima/tests/common/client_unit_test.py +412 -0
- sigima/tests/common/converters_unit_test.py +77 -0
- sigima/tests/common/decorator_unit_test.py +176 -0
- sigima/tests/common/examples_unit_test.py +104 -0
- sigima/tests/common/kernel_normalization_unit_test.py +242 -0
- sigima/tests/common/roi_basic_unit_test.py +73 -0
- sigima/tests/common/roi_geometry_unit_test.py +171 -0
- sigima/tests/common/scalar_builder_unit_test.py +142 -0
- sigima/tests/common/scalar_unit_test.py +991 -0
- sigima/tests/common/shape_unit_test.py +183 -0
- sigima/tests/common/stat_unit_test.py +138 -0
- sigima/tests/common/title_formatting_unit_test.py +338 -0
- sigima/tests/common/tools_coordinates_unit_test.py +60 -0
- sigima/tests/common/transformations_unit_test.py +178 -0
- sigima/tests/common/validation_unit_test.py +205 -0
- sigima/tests/conftest.py +129 -0
- sigima/tests/data.py +998 -0
- sigima/tests/env.py +280 -0
- sigima/tests/guiutils.py +163 -0
- sigima/tests/helpers.py +532 -0
- sigima/tests/image/__init__.py +28 -0
- sigima/tests/image/binning_unit_test.py +128 -0
- sigima/tests/image/blob_detection_unit_test.py +312 -0
- sigima/tests/image/centroid_unit_test.py +170 -0
- sigima/tests/image/check_2d_array_unit_test.py +63 -0
- sigima/tests/image/contour_unit_test.py +172 -0
- sigima/tests/image/convolution_unit_test.py +178 -0
- sigima/tests/image/datatype_unit_test.py +67 -0
- sigima/tests/image/edges_unit_test.py +155 -0
- sigima/tests/image/enclosingcircle_unit_test.py +88 -0
- sigima/tests/image/exposure_unit_test.py +223 -0
- sigima/tests/image/fft2d_unit_test.py +189 -0
- sigima/tests/image/filtering_unit_test.py +166 -0
- sigima/tests/image/geometry_unit_test.py +654 -0
- sigima/tests/image/hough_circle_unit_test.py +147 -0
- sigima/tests/image/imageobj_unit_test.py +737 -0
- sigima/tests/image/morphology_unit_test.py +71 -0
- sigima/tests/image/noise_unit_test.py +57 -0
- sigima/tests/image/offset_correction_unit_test.py +72 -0
- sigima/tests/image/operation_unit_test.py +518 -0
- sigima/tests/image/peak2d_limits_unit_test.py +41 -0
- sigima/tests/image/peak2d_unit_test.py +133 -0
- sigima/tests/image/profile_unit_test.py +159 -0
- sigima/tests/image/projections_unit_test.py +121 -0
- sigima/tests/image/restoration_unit_test.py +141 -0
- sigima/tests/image/roi2dparam_unit_test.py +53 -0
- sigima/tests/image/roi_advanced_unit_test.py +588 -0
- sigima/tests/image/roi_grid_unit_test.py +279 -0
- sigima/tests/image/spectrum2d_unit_test.py +40 -0
- sigima/tests/image/threshold_unit_test.py +91 -0
- sigima/tests/io/__init__.py +0 -0
- sigima/tests/io/addnewformat_unit_test.py +125 -0
- sigima/tests/io/convenience_funcs_unit_test.py +470 -0
- sigima/tests/io/coordinated_text_format_unit_test.py +495 -0
- sigima/tests/io/datetime_csv_unit_test.py +198 -0
- sigima/tests/io/imageio_formats_test.py +41 -0
- sigima/tests/io/ioregistry_unit_test.py +69 -0
- sigima/tests/io/objmeta_unit_test.py +87 -0
- sigima/tests/io/readobj_unit_test.py +130 -0
- sigima/tests/io/readwriteobj_unit_test.py +67 -0
- sigima/tests/signal/__init__.py +0 -0
- sigima/tests/signal/analysis_unit_test.py +135 -0
- sigima/tests/signal/check_1d_arrays_unit_test.py +169 -0
- sigima/tests/signal/convolution_unit_test.py +404 -0
- sigima/tests/signal/datetime_unit_test.py +176 -0
- sigima/tests/signal/fft1d_unit_test.py +303 -0
- sigima/tests/signal/filters_unit_test.py +403 -0
- sigima/tests/signal/fitting_unit_test.py +929 -0
- sigima/tests/signal/fwhm_unit_test.py +111 -0
- sigima/tests/signal/noise_unit_test.py +128 -0
- sigima/tests/signal/offset_correction_unit_test.py +34 -0
- sigima/tests/signal/operation_unit_test.py +489 -0
- sigima/tests/signal/peakdetection_unit_test.py +145 -0
- sigima/tests/signal/processing_unit_test.py +657 -0
- sigima/tests/signal/pulse/__init__.py +112 -0
- sigima/tests/signal/pulse/crossing_times_unit_test.py +123 -0
- sigima/tests/signal/pulse/plateau_detection_unit_test.py +102 -0
- sigima/tests/signal/pulse/pulse_unit_test.py +1824 -0
- sigima/tests/signal/roi_advanced_unit_test.py +392 -0
- sigima/tests/signal/signalobj_unit_test.py +603 -0
- sigima/tests/signal/stability_unit_test.py +431 -0
- sigima/tests/signal/uncertainty_unit_test.py +611 -0
- sigima/tests/vistools.py +1030 -0
- sigima/tools/__init__.py +59 -0
- sigima/tools/checks.py +290 -0
- sigima/tools/coordinates.py +308 -0
- sigima/tools/datatypes.py +26 -0
- sigima/tools/image/__init__.py +97 -0
- sigima/tools/image/detection.py +451 -0
- sigima/tools/image/exposure.py +77 -0
- sigima/tools/image/extraction.py +48 -0
- sigima/tools/image/fourier.py +260 -0
- sigima/tools/image/geometry.py +190 -0
- sigima/tools/image/preprocessing.py +165 -0
- sigima/tools/signal/__init__.py +86 -0
- sigima/tools/signal/dynamic.py +254 -0
- sigima/tools/signal/features.py +135 -0
- sigima/tools/signal/filtering.py +171 -0
- sigima/tools/signal/fitting.py +1171 -0
- sigima/tools/signal/fourier.py +466 -0
- sigima/tools/signal/interpolation.py +70 -0
- sigima/tools/signal/peakdetection.py +126 -0
- sigima/tools/signal/pulse.py +1626 -0
- sigima/tools/signal/scaling.py +50 -0
- sigima/tools/signal/stability.py +258 -0
- sigima/tools/signal/windowing.py +90 -0
- sigima/worker.py +79 -0
- sigima-1.0.0.dist-info/METADATA +233 -0
- sigima-1.0.0.dist-info/RECORD +262 -0
- {sigima-0.0.1.dev0.dist-info → sigima-1.0.0.dist-info}/licenses/LICENSE +29 -29
- sigima-0.0.1.dev0.dist-info/METADATA +0 -60
- sigima-0.0.1.dev0.dist-info/RECORD +0 -6
- {sigima-0.0.1.dev0.dist-info → sigima-1.0.0.dist-info}/WHEEL +0 -0
- {sigima-0.0.1.dev0.dist-info → sigima-1.0.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
# Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Signal ROI utilities
|
|
5
|
+
====================
|
|
6
|
+
|
|
7
|
+
This module provides Region of Interest (ROI) classes and utilities for signal objects.
|
|
8
|
+
|
|
9
|
+
The module includes:
|
|
10
|
+
|
|
11
|
+
- `ROI1DParam`: Parameter class for 1D signal ROIs
|
|
12
|
+
- `SegmentROI`: Single ROI representing a segment of a signal
|
|
13
|
+
- `SignalROI`: Collection of signal ROIs with operations
|
|
14
|
+
- `create_signal_roi`: Factory function for creating signal ROI objects
|
|
15
|
+
|
|
16
|
+
These classes enable defining and working with regions of interest in 1D signal data,
|
|
17
|
+
supporting operations like data extraction, masking, and parameter conversion.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
# pylint: disable=invalid-name # Allows short reference names like x, y, ...
|
|
21
|
+
# pylint: disable=duplicate-code
|
|
22
|
+
|
|
23
|
+
from __future__ import annotations
|
|
24
|
+
|
|
25
|
+
from typing import TYPE_CHECKING, Type
|
|
26
|
+
|
|
27
|
+
import guidata.dataset as gds
|
|
28
|
+
import numpy as np
|
|
29
|
+
|
|
30
|
+
from sigima.config import _
|
|
31
|
+
from sigima.objects import base
|
|
32
|
+
|
|
33
|
+
if TYPE_CHECKING:
|
|
34
|
+
from sigima.objects.signal.object import SignalObj
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class ROI1DParam(base.BaseROIParam["SignalObj", "SegmentROI"]):
|
|
38
|
+
"""Signal ROI parameters"""
|
|
39
|
+
|
|
40
|
+
# Note: in this class, the ROI parameters are stored as X coordinates
|
|
41
|
+
|
|
42
|
+
title = gds.StringItem(_("ROI title"), default="")
|
|
43
|
+
xmin = gds.FloatItem(_("First point coordinate"), default=0.0)
|
|
44
|
+
xmax = gds.FloatItem(_("Last point coordinate"), default=1.0)
|
|
45
|
+
|
|
46
|
+
def to_single_roi(self, obj: SignalObj) -> SegmentROI:
|
|
47
|
+
"""Convert parameters to single ROI
|
|
48
|
+
|
|
49
|
+
Args:
|
|
50
|
+
obj: signal object
|
|
51
|
+
|
|
52
|
+
Returns:
|
|
53
|
+
Single ROI
|
|
54
|
+
"""
|
|
55
|
+
assert isinstance(self.xmin, float) and isinstance(self.xmax, float)
|
|
56
|
+
return SegmentROI([self.xmin, self.xmax], False, title=self.title)
|
|
57
|
+
|
|
58
|
+
def get_data(self, obj: SignalObj) -> np.ndarray:
|
|
59
|
+
"""Get signal data in ROI
|
|
60
|
+
|
|
61
|
+
Args:
|
|
62
|
+
obj: signal object
|
|
63
|
+
|
|
64
|
+
Returns:
|
|
65
|
+
Data in ROI
|
|
66
|
+
"""
|
|
67
|
+
assert isinstance(self.xmin, float) and isinstance(self.xmax, float)
|
|
68
|
+
imin, imax = np.searchsorted(obj.x, [self.xmin, self.xmax])
|
|
69
|
+
return np.array([obj.x[imin:imax], obj.y[imin:imax]])
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
class SegmentROI(base.BaseSingleROI["SignalObj", ROI1DParam]):
|
|
73
|
+
"""Segment ROI
|
|
74
|
+
|
|
75
|
+
Args:
|
|
76
|
+
coords: ROI coordinates (xmin, xmax)
|
|
77
|
+
title: ROI title
|
|
78
|
+
"""
|
|
79
|
+
|
|
80
|
+
# Note: in this class, the ROI parameters are stored as X indices
|
|
81
|
+
|
|
82
|
+
def check_coords(self) -> None:
|
|
83
|
+
"""Check if coords are valid
|
|
84
|
+
|
|
85
|
+
Raises:
|
|
86
|
+
ValueError: invalid coords
|
|
87
|
+
"""
|
|
88
|
+
if len(self.coords) != 2:
|
|
89
|
+
raise ValueError("Invalid ROI segment coords (2 values expected)")
|
|
90
|
+
if self.coords[0] >= self.coords[1]:
|
|
91
|
+
raise ValueError("Invalid ROI segment coords (xmin >= xmax)")
|
|
92
|
+
|
|
93
|
+
def get_data(self, obj: SignalObj) -> tuple[np.ndarray, np.ndarray]:
|
|
94
|
+
"""Get signal data in ROI
|
|
95
|
+
|
|
96
|
+
Args:
|
|
97
|
+
obj: signal object
|
|
98
|
+
|
|
99
|
+
Returns:
|
|
100
|
+
Data in ROI
|
|
101
|
+
"""
|
|
102
|
+
imin, imax = self.get_indices_coords(obj)
|
|
103
|
+
return obj.x[imin:imax], obj.y[imin:imax]
|
|
104
|
+
|
|
105
|
+
def to_mask(self, obj: SignalObj) -> np.ndarray:
|
|
106
|
+
"""Create mask from ROI
|
|
107
|
+
|
|
108
|
+
Args:
|
|
109
|
+
obj: signal object
|
|
110
|
+
|
|
111
|
+
Returns:
|
|
112
|
+
Mask (boolean array where True values are inside the ROI)
|
|
113
|
+
"""
|
|
114
|
+
mask = np.ones_like(obj.xydata, dtype=bool)
|
|
115
|
+
imin, imax = self.get_indices_coords(obj)
|
|
116
|
+
mask[:, imin:imax] = False
|
|
117
|
+
return mask
|
|
118
|
+
|
|
119
|
+
# pylint: disable=unused-argument
|
|
120
|
+
def to_param(self, obj: SignalObj, index: int) -> ROI1DParam:
|
|
121
|
+
"""Convert ROI to parameters
|
|
122
|
+
|
|
123
|
+
Args:
|
|
124
|
+
obj: object (signal), for physical-indices coordinates conversion
|
|
125
|
+
index: ROI index
|
|
126
|
+
"""
|
|
127
|
+
gtitle = base.get_generic_roi_title(index)
|
|
128
|
+
param = ROI1DParam(gtitle)
|
|
129
|
+
param.title = self.title or gtitle
|
|
130
|
+
param.xmin, param.xmax = self.get_physical_coords(obj)
|
|
131
|
+
return param
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
class SignalROI(base.BaseROI["SignalObj", SegmentROI, ROI1DParam]):
|
|
135
|
+
"""Signal Regions of Interest
|
|
136
|
+
|
|
137
|
+
Args:
|
|
138
|
+
inverse: if True, ROI is outside the region
|
|
139
|
+
"""
|
|
140
|
+
|
|
141
|
+
PREFIX = "s"
|
|
142
|
+
|
|
143
|
+
def union(self) -> SignalROI:
|
|
144
|
+
"""Return union of ROIs"""
|
|
145
|
+
if not self.single_rois:
|
|
146
|
+
return SignalROI()
|
|
147
|
+
coords = np.array([roi.coords for roi in self.single_rois])
|
|
148
|
+
# Merge overlapping segments:
|
|
149
|
+
sorted_coords = coords[coords[:, 0].argsort()]
|
|
150
|
+
merged_coords = [sorted_coords[0].tolist()]
|
|
151
|
+
for current in sorted_coords[1:]:
|
|
152
|
+
last = merged_coords[-1]
|
|
153
|
+
if current[0] <= last[1]: # Overlap
|
|
154
|
+
last[1] = max(last[1], current[1]) # Merge
|
|
155
|
+
else:
|
|
156
|
+
merged_coords.append(current.tolist())
|
|
157
|
+
# Create new SignalROI with merged segments:
|
|
158
|
+
roi = create_signal_roi(merged_coords)
|
|
159
|
+
return roi
|
|
160
|
+
|
|
161
|
+
def clipped(self, x_min: float, x_max: float) -> SignalROI:
|
|
162
|
+
"""Remove parts of ROIs outside the signal range
|
|
163
|
+
|
|
164
|
+
Args:
|
|
165
|
+
x_min: signal minimum X value
|
|
166
|
+
x_max: signal maximum X value
|
|
167
|
+
|
|
168
|
+
Returns:
|
|
169
|
+
SignalROI object containing ROIs clipped to the specified signal range.
|
|
170
|
+
"""
|
|
171
|
+
new_roi = SignalROI()
|
|
172
|
+
for roi in self.single_rois:
|
|
173
|
+
roi_min, roi_max = roi.coords
|
|
174
|
+
if roi_max < x_min or roi_min > x_max:
|
|
175
|
+
# ROI completely outside signal range: skip it
|
|
176
|
+
continue
|
|
177
|
+
# Clip ROI to signal range:
|
|
178
|
+
new_roi_min = max(roi_min, x_min)
|
|
179
|
+
new_roi_max = min(roi_max, x_max)
|
|
180
|
+
new_roi.add_roi(
|
|
181
|
+
SegmentROI(np.array([new_roi_min, new_roi_max], float), indices=False)
|
|
182
|
+
)
|
|
183
|
+
return new_roi
|
|
184
|
+
|
|
185
|
+
def inverted(self, x_min: float, x_max: float) -> SignalROI:
|
|
186
|
+
"""Return inverted ROI (inside/outside).
|
|
187
|
+
|
|
188
|
+
Args:
|
|
189
|
+
x_min: signal minimum X value
|
|
190
|
+
x_max: signal maximum X value
|
|
191
|
+
Returns:
|
|
192
|
+
Inverted ROI
|
|
193
|
+
"""
|
|
194
|
+
clipped_roi = self.clipped(x_min, x_max)
|
|
195
|
+
union_roi = clipped_roi.union()
|
|
196
|
+
roi_delimiter_list = np.array(
|
|
197
|
+
[roi.coords for roi in union_roi.single_rois]
|
|
198
|
+
).reshape(-1)
|
|
199
|
+
|
|
200
|
+
if len(roi_delimiter_list) == 0:
|
|
201
|
+
# No ROIs: inverted ROI is the whole signal
|
|
202
|
+
raise ValueError("No ROIs defined, cannot invert")
|
|
203
|
+
if len(roi_delimiter_list) % 2 != 0:
|
|
204
|
+
# Odd number of delimiters: add signal limits
|
|
205
|
+
raise ValueError("Internal error: odd number of ROI delimiters")
|
|
206
|
+
|
|
207
|
+
if roi_delimiter_list[0] == x_min:
|
|
208
|
+
# First delimiter is signal min: remove it
|
|
209
|
+
roi_delimiter_list = roi_delimiter_list[1:]
|
|
210
|
+
else:
|
|
211
|
+
# Add signal min as first delimiter
|
|
212
|
+
roi_delimiter_list = np.insert(roi_delimiter_list, 0, x_min)
|
|
213
|
+
|
|
214
|
+
if roi_delimiter_list[-1] == x_max:
|
|
215
|
+
# Last delimiter is signal max: remove it
|
|
216
|
+
roi_delimiter_list = roi_delimiter_list[:-1]
|
|
217
|
+
else:
|
|
218
|
+
# Add signal max as last delimiter
|
|
219
|
+
roi_delimiter_list = np.append(roi_delimiter_list, x_max)
|
|
220
|
+
|
|
221
|
+
return create_signal_roi(np.array(roi_delimiter_list).reshape(-1, 2))
|
|
222
|
+
|
|
223
|
+
@staticmethod
|
|
224
|
+
def get_compatible_single_roi_classes() -> list[Type[SegmentROI]]:
|
|
225
|
+
"""Return compatible single ROI classes"""
|
|
226
|
+
return [SegmentROI]
|
|
227
|
+
|
|
228
|
+
def to_mask(self, obj: SignalObj) -> np.ndarray:
|
|
229
|
+
"""Create mask from ROI
|
|
230
|
+
|
|
231
|
+
Args:
|
|
232
|
+
obj: signal object
|
|
233
|
+
|
|
234
|
+
Returns:
|
|
235
|
+
Mask (boolean array where True values are inside the ROI)
|
|
236
|
+
"""
|
|
237
|
+
mask = np.ones_like(obj.xydata, dtype=bool)
|
|
238
|
+
if self.single_rois:
|
|
239
|
+
for roi in self.single_rois:
|
|
240
|
+
mask &= roi.to_mask(obj)
|
|
241
|
+
else:
|
|
242
|
+
# If no single ROIs, the mask is empty (no ROI defined)
|
|
243
|
+
mask[:] = False
|
|
244
|
+
return mask
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
def create_signal_roi(
|
|
248
|
+
coords: np.ndarray | list[float] | list[list[float]],
|
|
249
|
+
indices: bool = False,
|
|
250
|
+
title: str = "",
|
|
251
|
+
) -> SignalROI:
|
|
252
|
+
"""Create Signal Regions of Interest (ROI) object.
|
|
253
|
+
More ROIs can be added to the object after creation, using the `add_roi` method.
|
|
254
|
+
|
|
255
|
+
Args:
|
|
256
|
+
coords: single ROI coordinates `[xmin, xmax]`, or multiple ROIs coordinates
|
|
257
|
+
`[[xmin1, xmax1], [xmin2, xmax2], ...]` (lists or NumPy arrays)
|
|
258
|
+
indices: if True, coordinates are indices, if False, they are physical values
|
|
259
|
+
(default to False for signals)
|
|
260
|
+
title: title
|
|
261
|
+
|
|
262
|
+
Returns:
|
|
263
|
+
Regions of Interest (ROI) object
|
|
264
|
+
|
|
265
|
+
Raises:
|
|
266
|
+
ValueError: if the number of coordinates is not even
|
|
267
|
+
"""
|
|
268
|
+
coords = np.array(coords, float)
|
|
269
|
+
if coords.ndim == 1:
|
|
270
|
+
coords = coords.reshape(1, -1)
|
|
271
|
+
roi = SignalROI()
|
|
272
|
+
for row in coords:
|
|
273
|
+
roi.add_roi(SegmentROI(row, indices=indices, title=title))
|
|
274
|
+
return roi
|
sigima/params.py
ADDED
|
@@ -0,0 +1,405 @@
|
|
|
1
|
+
# Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Parameters (:mod:`sigima.params`)
|
|
5
|
+
---------------------------------
|
|
6
|
+
|
|
7
|
+
The :mod:`sigima.params` module aims at providing all the dataset parameters that are
|
|
8
|
+
used by the :mod:`sigima.proc` and DataLab's processors.
|
|
9
|
+
|
|
10
|
+
Those datasets are defined in other modules:
|
|
11
|
+
|
|
12
|
+
- :mod:`sigima.proc.base`
|
|
13
|
+
- :mod:`sigima.proc.image`
|
|
14
|
+
- :mod:`sigima.proc.signal`
|
|
15
|
+
|
|
16
|
+
The :mod:`sigima.params` module is thus a convenient way to import all the sets of
|
|
17
|
+
parameters at once.
|
|
18
|
+
|
|
19
|
+
As a matter of fact, the following import statement is equivalent to the previous one:
|
|
20
|
+
|
|
21
|
+
.. code-block:: python
|
|
22
|
+
|
|
23
|
+
# Original import statement
|
|
24
|
+
from sigima.proc.base import MovingAverageParam
|
|
25
|
+
from sigima.proc.signal import PolynomialFitParam
|
|
26
|
+
from sigima.proc.image.exposure import EqualizeHistParam
|
|
27
|
+
|
|
28
|
+
# Equivalent import statement
|
|
29
|
+
from sigima.params import MovingAverageParam, PolynomialFitParam, EqualizeHistParam
|
|
30
|
+
|
|
31
|
+
Introduction to `DataSet` parameters
|
|
32
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
33
|
+
|
|
34
|
+
The datasets listed in the following sections are used to define the parameters
|
|
35
|
+
necessary for the various computations and processing operations available in Sigima.
|
|
36
|
+
|
|
37
|
+
Each dataset is a subclass of :py:class:`guidata.dataset.datatypes.DataSet` and thus
|
|
38
|
+
needs to be instantiated before being used.
|
|
39
|
+
|
|
40
|
+
Here is a complete example of how to instantiate a dataset and access its parameters
|
|
41
|
+
with the :py:class:`sigima.params.BinningParam` dataset:
|
|
42
|
+
|
|
43
|
+
.. autodataset:: sigima.params.BinningParam
|
|
44
|
+
:no-index:
|
|
45
|
+
:shownote:
|
|
46
|
+
|
|
47
|
+
I/O parameters
|
|
48
|
+
^^^^^^^^^^^^^^
|
|
49
|
+
|
|
50
|
+
.. autodataset:: sigima.io.convenience.SaveToDirectoryParam
|
|
51
|
+
:no-index:
|
|
52
|
+
|
|
53
|
+
Common parameters
|
|
54
|
+
^^^^^^^^^^^^^^^^^
|
|
55
|
+
|
|
56
|
+
.. autodataset:: sigima.params.ArithmeticParam
|
|
57
|
+
:no-index:
|
|
58
|
+
.. autodataset:: sigima.params.ClipParam
|
|
59
|
+
:no-index:
|
|
60
|
+
.. autodataset:: sigima.params.ConstantParam
|
|
61
|
+
:no-index:
|
|
62
|
+
.. autodataset:: sigima.params.FFTParam
|
|
63
|
+
:no-index:
|
|
64
|
+
.. autodataset:: sigima.params.GaussianParam
|
|
65
|
+
:no-index:
|
|
66
|
+
.. autodataset:: sigima.params.HistogramParam
|
|
67
|
+
:no-index:
|
|
68
|
+
.. autodataset:: sigima.params.MovingAverageParam
|
|
69
|
+
:no-index:
|
|
70
|
+
.. autodataset:: sigima.params.MovingMedianParam
|
|
71
|
+
:no-index:
|
|
72
|
+
.. autodataset:: sigima.params.NormalizeParam
|
|
73
|
+
:no-index:
|
|
74
|
+
.. autodataset:: sigima.params.SpectrumParam
|
|
75
|
+
:no-index:
|
|
76
|
+
|
|
77
|
+
Signal parameters
|
|
78
|
+
^^^^^^^^^^^^^^^^^
|
|
79
|
+
|
|
80
|
+
.. autodataset:: sigima.params.AllanVarianceParam
|
|
81
|
+
:no-index:
|
|
82
|
+
.. autodataset:: sigima.params.AngleUnitParam
|
|
83
|
+
:no-index:
|
|
84
|
+
.. autodataset:: sigima.params.BandPassFilterParam
|
|
85
|
+
:no-index:
|
|
86
|
+
.. autodataset:: sigima.params.BandStopFilterParam
|
|
87
|
+
:no-index:
|
|
88
|
+
.. autodataset:: sigima.params.DataTypeSParam
|
|
89
|
+
:no-index:
|
|
90
|
+
.. autodataset:: sigima.params.DetrendingParam
|
|
91
|
+
:no-index:
|
|
92
|
+
.. autodataset:: sigima.params.DynamicParam
|
|
93
|
+
:no-index:
|
|
94
|
+
.. autodataset:: sigima.params.AbscissaParam
|
|
95
|
+
:no-index:
|
|
96
|
+
.. autodataset:: sigima.params.OrdinateParam
|
|
97
|
+
:no-index:
|
|
98
|
+
.. autodataset:: sigima.params.FWHMParam
|
|
99
|
+
:no-index:
|
|
100
|
+
.. autodataset:: sigima.params.HighPassFilterParam
|
|
101
|
+
:no-index:
|
|
102
|
+
.. autodataset:: sigima.params.InterpolationParam
|
|
103
|
+
:no-index:
|
|
104
|
+
.. autodataset:: sigima.params.LowPassFilterParam
|
|
105
|
+
:no-index:
|
|
106
|
+
.. autodataset:: sigima.params.PeakDetectionParam
|
|
107
|
+
:no-index:
|
|
108
|
+
.. autodataset:: sigima.params.PolynomialFitParam
|
|
109
|
+
:no-index:
|
|
110
|
+
.. autodataset:: sigima.params.PowerParam
|
|
111
|
+
:no-index:
|
|
112
|
+
.. autodataset:: sigima.params.PulseFeaturesParam
|
|
113
|
+
:no-index:
|
|
114
|
+
.. autodataset:: sigima.params.Resampling1DParam
|
|
115
|
+
:no-index:
|
|
116
|
+
.. autodataset:: sigima.params.Resampling2DParam
|
|
117
|
+
:no-index:
|
|
118
|
+
.. autodataset:: sigima.params.WindowingParam
|
|
119
|
+
:no-index:
|
|
120
|
+
.. autodataset:: sigima.params.XYCalibrateParam
|
|
121
|
+
:no-index:
|
|
122
|
+
.. autodataset:: sigima.params.ZeroPadding1DParam
|
|
123
|
+
:no-index:
|
|
124
|
+
|
|
125
|
+
Image parameters
|
|
126
|
+
^^^^^^^^^^^^^^^^
|
|
127
|
+
|
|
128
|
+
Base image parameters
|
|
129
|
+
~~~~~~~~~~~~~~~~~~~~~
|
|
130
|
+
|
|
131
|
+
.. autodataset:: sigima.params.GridParam
|
|
132
|
+
:no-index:
|
|
133
|
+
|
|
134
|
+
Detection parameters
|
|
135
|
+
~~~~~~~~~~~~~~~~~~~~
|
|
136
|
+
|
|
137
|
+
.. autodataset:: sigima.params.BlobDOGParam
|
|
138
|
+
:no-index:
|
|
139
|
+
.. autodataset:: sigima.params.BlobDOHParam
|
|
140
|
+
:no-index:
|
|
141
|
+
.. autodataset:: sigima.params.BlobLOGParam
|
|
142
|
+
:no-index:
|
|
143
|
+
.. autodataset:: sigima.params.BlobOpenCVParam
|
|
144
|
+
:no-index:
|
|
145
|
+
.. autodataset:: sigima.params.ContourShapeParam
|
|
146
|
+
:no-index:
|
|
147
|
+
.. autodataset:: sigima.params.Peak2DDetectionParam
|
|
148
|
+
:no-index:
|
|
149
|
+
.. autodataset:: sigima.params.HoughCircleParam
|
|
150
|
+
:no-index:
|
|
151
|
+
|
|
152
|
+
Edge detection parameters
|
|
153
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
154
|
+
|
|
155
|
+
.. autodataset:: sigima.params.CannyParam
|
|
156
|
+
:no-index:
|
|
157
|
+
|
|
158
|
+
Exposure correction parameters
|
|
159
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
160
|
+
|
|
161
|
+
.. autodataset:: sigima.params.AdjustGammaParam
|
|
162
|
+
:no-index:
|
|
163
|
+
.. autodataset:: sigima.params.AdjustLogParam
|
|
164
|
+
:no-index:
|
|
165
|
+
.. autodataset:: sigima.params.AdjustSigmoidParam
|
|
166
|
+
:no-index:
|
|
167
|
+
.. autodataset:: sigima.params.EqualizeAdaptHistParam
|
|
168
|
+
:no-index:
|
|
169
|
+
.. autodataset:: sigima.params.EqualizeHistParam
|
|
170
|
+
:no-index:
|
|
171
|
+
.. autodataset:: sigima.params.RescaleIntensityParam
|
|
172
|
+
:no-index:
|
|
173
|
+
.. autodataset:: sigima.params.FlatFieldParam
|
|
174
|
+
:no-index:
|
|
175
|
+
.. autodataset:: sigima.params.XYZCalibrateParam
|
|
176
|
+
:no-index:
|
|
177
|
+
|
|
178
|
+
Extraction parameters
|
|
179
|
+
~~~~~~~~~~~~~~~~~~~~~~
|
|
180
|
+
|
|
181
|
+
.. autodataset:: sigima.params.AverageProfileParam
|
|
182
|
+
:no-index:
|
|
183
|
+
.. autodataset:: sigima.params.LineProfileParam
|
|
184
|
+
:no-index:
|
|
185
|
+
.. autodataset:: sigima.params.RadialProfileParam
|
|
186
|
+
:no-index:
|
|
187
|
+
.. autodataset:: sigima.params.SegmentProfileParam
|
|
188
|
+
:no-index:
|
|
189
|
+
.. autoclass:: sigima.params.Direction
|
|
190
|
+
:no-index:
|
|
191
|
+
.. autodataset:: sigima.params.ROIGridParam
|
|
192
|
+
:no-index:
|
|
193
|
+
|
|
194
|
+
Filtering parameters
|
|
195
|
+
~~~~~~~~~~~~~~~~~~~~
|
|
196
|
+
|
|
197
|
+
.. autodataset:: sigima.params.ButterworthParam
|
|
198
|
+
:no-index:
|
|
199
|
+
.. autofunction:: sigima.params.GaussianFreqFilterParam
|
|
200
|
+
:no-index:
|
|
201
|
+
|
|
202
|
+
Fourier analysis parameters
|
|
203
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
204
|
+
|
|
205
|
+
.. autodataset:: sigima.params.ZeroPadding2DParam
|
|
206
|
+
:no-index:
|
|
207
|
+
|
|
208
|
+
Geometry parameters
|
|
209
|
+
~~~~~~~~~~~~~~~~~~~
|
|
210
|
+
|
|
211
|
+
.. autodataset:: sigima.params.BinningParam
|
|
212
|
+
:no-index:
|
|
213
|
+
.. autodataset:: sigima.params.ResizeParam
|
|
214
|
+
:no-index:
|
|
215
|
+
.. autodataset:: sigima.params.RotateParam
|
|
216
|
+
:no-index:
|
|
217
|
+
.. autodataset:: sigima.params.TranslateParam
|
|
218
|
+
:no-index:
|
|
219
|
+
|
|
220
|
+
Mathematical operation parameters
|
|
221
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
222
|
+
|
|
223
|
+
.. autodataset:: sigima.params.DataTypeIParam
|
|
224
|
+
:no-index:
|
|
225
|
+
.. autodataset:: sigima.params.Log10ZPlusNParam
|
|
226
|
+
:no-index:
|
|
227
|
+
|
|
228
|
+
Morphological parameters
|
|
229
|
+
~~~~~~~~~~~~~~~~~~~~~~~~
|
|
230
|
+
|
|
231
|
+
.. autodataset:: sigima.params.MorphologyParam
|
|
232
|
+
:no-index:
|
|
233
|
+
|
|
234
|
+
Restoration parameters
|
|
235
|
+
~~~~~~~~~~~~~~~~~~~~~~
|
|
236
|
+
|
|
237
|
+
.. autodataset:: sigima.params.DenoiseBilateralParam
|
|
238
|
+
:no-index:
|
|
239
|
+
.. autodataset:: sigima.params.DenoiseTVParam
|
|
240
|
+
:no-index:
|
|
241
|
+
.. autodataset:: sigima.params.DenoiseWaveletParam
|
|
242
|
+
:no-index:
|
|
243
|
+
|
|
244
|
+
Threshold parameters
|
|
245
|
+
~~~~~~~~~~~~~~~~~~~~
|
|
246
|
+
|
|
247
|
+
.. autodataset:: sigima.params.ThresholdParam
|
|
248
|
+
:no-index:
|
|
249
|
+
"""
|
|
250
|
+
|
|
251
|
+
__all__ = [
|
|
252
|
+
"AbscissaParam",
|
|
253
|
+
"AdjustGammaParam",
|
|
254
|
+
"AdjustLogParam",
|
|
255
|
+
"AdjustSigmoidParam",
|
|
256
|
+
"AllanVarianceParam",
|
|
257
|
+
"AngleUnitParam",
|
|
258
|
+
"ArithmeticParam",
|
|
259
|
+
"AverageProfileParam",
|
|
260
|
+
"BandPassFilterParam",
|
|
261
|
+
"BandStopFilterParam",
|
|
262
|
+
"BinningParam",
|
|
263
|
+
"BlobDOGParam",
|
|
264
|
+
"BlobDOHParam",
|
|
265
|
+
"BlobLOGParam",
|
|
266
|
+
"BlobOpenCVParam",
|
|
267
|
+
"ButterworthParam",
|
|
268
|
+
"CannyParam",
|
|
269
|
+
"ClipParam",
|
|
270
|
+
"ConstantParam",
|
|
271
|
+
"ContourShapeParam",
|
|
272
|
+
"DataTypeIParam",
|
|
273
|
+
"DataTypeSParam",
|
|
274
|
+
"DenoiseBilateralParam",
|
|
275
|
+
"DenoiseTVParam",
|
|
276
|
+
"DenoiseWaveletParam",
|
|
277
|
+
"DetrendingParam",
|
|
278
|
+
"Direction",
|
|
279
|
+
"DynamicParam",
|
|
280
|
+
"EqualizeAdaptHistParam",
|
|
281
|
+
"EqualizeHistParam",
|
|
282
|
+
"FFTParam",
|
|
283
|
+
"FWHMParam",
|
|
284
|
+
"FlatFieldParam",
|
|
285
|
+
"GaussianFreqFilterParam",
|
|
286
|
+
"GaussianParam",
|
|
287
|
+
"GridParam",
|
|
288
|
+
"HighPassFilterParam",
|
|
289
|
+
"HistogramParam",
|
|
290
|
+
"HoughCircleParam",
|
|
291
|
+
"InterpolationParam",
|
|
292
|
+
"LineProfileParam",
|
|
293
|
+
"Log10ZPlusNParam",
|
|
294
|
+
"LowPassFilterParam",
|
|
295
|
+
"MorphologyParam",
|
|
296
|
+
"MovingAverageParam",
|
|
297
|
+
"MovingMedianParam",
|
|
298
|
+
"NormalizeParam",
|
|
299
|
+
"OrdinateParam",
|
|
300
|
+
"Peak2DDetectionParam",
|
|
301
|
+
"PeakDetectionParam",
|
|
302
|
+
"PhaseParam",
|
|
303
|
+
"PolynomialFitParam",
|
|
304
|
+
"PowerParam",
|
|
305
|
+
"PulseFeaturesParam",
|
|
306
|
+
"ROIGridParam",
|
|
307
|
+
"RadialProfileParam",
|
|
308
|
+
"Resampling1DParam",
|
|
309
|
+
"Resampling2DParam",
|
|
310
|
+
"RescaleIntensityParam",
|
|
311
|
+
"ResizeParam",
|
|
312
|
+
"RotateParam",
|
|
313
|
+
"SaveToDirectoryParam",
|
|
314
|
+
"SegmentProfileParam",
|
|
315
|
+
"SignalsToImageParam",
|
|
316
|
+
"SpectrumParam",
|
|
317
|
+
"ThresholdParam",
|
|
318
|
+
"TranslateParam",
|
|
319
|
+
"UniformCoordsParam",
|
|
320
|
+
"WindowingParam",
|
|
321
|
+
"XYCalibrateParam",
|
|
322
|
+
"XYZCalibrateParam",
|
|
323
|
+
"ZeroPadding1DParam",
|
|
324
|
+
"ZeroPadding2DParam",
|
|
325
|
+
]
|
|
326
|
+
|
|
327
|
+
from sigima.io.convenience import SaveToDirectoryParam
|
|
328
|
+
from sigima.proc.base import (
|
|
329
|
+
AngleUnitParam,
|
|
330
|
+
ArithmeticParam,
|
|
331
|
+
ClipParam,
|
|
332
|
+
ConstantParam,
|
|
333
|
+
FFTParam,
|
|
334
|
+
GaussianParam,
|
|
335
|
+
HistogramParam,
|
|
336
|
+
MovingAverageParam,
|
|
337
|
+
MovingMedianParam,
|
|
338
|
+
NormalizeParam,
|
|
339
|
+
PhaseParam,
|
|
340
|
+
SignalsToImageParam,
|
|
341
|
+
SpectrumParam,
|
|
342
|
+
)
|
|
343
|
+
from sigima.proc.image import (
|
|
344
|
+
AdjustGammaParam,
|
|
345
|
+
AdjustLogParam,
|
|
346
|
+
AdjustSigmoidParam,
|
|
347
|
+
AverageProfileParam,
|
|
348
|
+
BinningParam,
|
|
349
|
+
BlobDOGParam,
|
|
350
|
+
BlobDOHParam,
|
|
351
|
+
BlobLOGParam,
|
|
352
|
+
BlobOpenCVParam,
|
|
353
|
+
ButterworthParam,
|
|
354
|
+
CannyParam,
|
|
355
|
+
ContourShapeParam,
|
|
356
|
+
DataTypeIParam,
|
|
357
|
+
DenoiseBilateralParam,
|
|
358
|
+
DenoiseTVParam,
|
|
359
|
+
DenoiseWaveletParam,
|
|
360
|
+
Direction,
|
|
361
|
+
EqualizeAdaptHistParam,
|
|
362
|
+
EqualizeHistParam,
|
|
363
|
+
FlatFieldParam,
|
|
364
|
+
GaussianFreqFilterParam,
|
|
365
|
+
GridParam,
|
|
366
|
+
HoughCircleParam,
|
|
367
|
+
LineProfileParam,
|
|
368
|
+
Log10ZPlusNParam,
|
|
369
|
+
MorphologyParam,
|
|
370
|
+
Peak2DDetectionParam,
|
|
371
|
+
RadialProfileParam,
|
|
372
|
+
Resampling2DParam,
|
|
373
|
+
RescaleIntensityParam,
|
|
374
|
+
ResizeParam,
|
|
375
|
+
ROIGridParam,
|
|
376
|
+
RotateParam,
|
|
377
|
+
SegmentProfileParam,
|
|
378
|
+
ThresholdParam,
|
|
379
|
+
TranslateParam,
|
|
380
|
+
UniformCoordsParam,
|
|
381
|
+
XYZCalibrateParam,
|
|
382
|
+
ZeroPadding2DParam,
|
|
383
|
+
)
|
|
384
|
+
from sigima.proc.signal import (
|
|
385
|
+
AbscissaParam,
|
|
386
|
+
AllanVarianceParam,
|
|
387
|
+
BandPassFilterParam,
|
|
388
|
+
BandStopFilterParam,
|
|
389
|
+
DataTypeSParam,
|
|
390
|
+
DetrendingParam,
|
|
391
|
+
DynamicParam,
|
|
392
|
+
FWHMParam,
|
|
393
|
+
HighPassFilterParam,
|
|
394
|
+
InterpolationParam,
|
|
395
|
+
LowPassFilterParam,
|
|
396
|
+
OrdinateParam,
|
|
397
|
+
PeakDetectionParam,
|
|
398
|
+
PolynomialFitParam,
|
|
399
|
+
PowerParam,
|
|
400
|
+
PulseFeaturesParam,
|
|
401
|
+
Resampling1DParam,
|
|
402
|
+
WindowingParam,
|
|
403
|
+
XYCalibrateParam,
|
|
404
|
+
ZeroPadding1DParam,
|
|
405
|
+
)
|