sigima 0.0.1.dev0__tar.gz → 1.0.0__tar.gz
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.
Potentially problematic release.
This version of sigima might be problematic. Click here for more details.
- sigima-1.0.0/CHANGELOG.md +312 -0
- {sigima-0.0.1.dev0 → sigima-1.0.0}/LICENSE +29 -29
- {sigima-0.0.1.dev0 → sigima-1.0.0}/MANIFEST.in +3 -3
- sigima-1.0.0/PKG-INFO +233 -0
- sigima-1.0.0/README.md +162 -0
- sigima-1.0.0/doc/_static/DataLab-Banner.svg +104 -0
- sigima-1.0.0/doc/_static/DataLab-Title.svg +94 -0
- sigima-1.0.0/doc/_static/DataLab.svg +83 -0
- sigima-1.0.0/doc/_static/Sigima-Frontpage.png +0 -0
- sigima-1.0.0/doc/_static/Sigima-Title.svg +135 -0
- sigima-1.0.0/doc/_static/codra.png +0 -0
- sigima-1.0.0/doc/_static/favicon.ico +0 -0
- sigima-1.0.0/doc/_static/pypi.svg +1 -0
- sigima-1.0.0/doc/api/client.rst +2 -0
- sigima-1.0.0/doc/api/config.rst +2 -0
- sigima-1.0.0/doc/api/index.rst +43 -0
- sigima-1.0.0/doc/api/objects.rst +2 -0
- sigima-1.0.0/doc/api/params.rst +2 -0
- sigima-1.0.0/doc/api/proc.rst +2 -0
- sigima-1.0.0/doc/api/tools.rst +1 -0
- sigima-1.0.0/doc/conf.py +258 -0
- sigima-1.0.0/doc/contributing/contribute_code.rst +38 -0
- sigima-1.0.0/doc/contributing/dependencies.rst +66 -0
- sigima-1.0.0/doc/contributing/environment.md +111 -0
- sigima-1.0.0/doc/contributing/gitworkflow.rst +204 -0
- sigima-1.0.0/doc/contributing/guidelines.rst +74 -0
- sigima-1.0.0/doc/contributing/index.rst +120 -0
- sigima-1.0.0/doc/examples/README.txt +15 -0
- sigima-1.0.0/doc/examples/features/README.txt +2 -0
- sigima-1.0.0/doc/examples/features/convolution.py +288 -0
- sigima-1.0.0/doc/examples/features/coordinate_systems.py +294 -0
- sigima-1.0.0/doc/examples/features/datalab_client.py +58 -0
- sigima-1.0.0/doc/examples/features/datetime_signals.py +240 -0
- sigima-1.0.0/doc/examples/getting_started/README.txt +2 -0
- sigima-1.0.0/doc/examples/getting_started/image_creation.py +185 -0
- sigima-1.0.0/doc/examples/getting_started/signal_creation.py +213 -0
- sigima-1.0.0/doc/examples/use_cases/README.txt +2 -0
- sigima-1.0.0/doc/examples/use_cases/blob_detection.py +199 -0
- sigima-1.0.0/doc/examples/use_cases/fabry_perot.py +194 -0
- sigima-1.0.0/doc/examples/use_cases/laser_beam.py +360 -0
- sigima-1.0.0/doc/examples/use_cases/spectrum_analysis.py +277 -0
- sigima-1.0.0/doc/images/Sigima-Banner.png +0 -0
- sigima-1.0.0/doc/images/Sigima-Banner.svg +135 -0
- sigima-1.0.0/doc/images/Sigima.svg +135 -0
- sigima-1.0.0/doc/images/logos/cea.svg +29 -0
- sigima-1.0.0/doc/images/logos/codra.svg +65 -0
- sigima-1.0.0/doc/images/logos/nlnet.svg +41 -0
- sigima-1.0.0/doc/index.rst +90 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/api/index.po +71 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/auto_examples/features/convolution.po +119 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/auto_examples/features/coordinate_systems.po +107 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/auto_examples/features/datalab_client.po +47 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/auto_examples/features/datetime_signals.po +119 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/auto_examples/features/index.po +36 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/auto_examples/getting_started/image_creation.po +135 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/auto_examples/getting_started/index.po +29 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/auto_examples/getting_started/signal_creation.po +153 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/auto_examples/index.po +75 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/auto_examples/use_cases/blob_detection.po +118 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/auto_examples/use_cases/convolution.po +120 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/auto_examples/use_cases/fabry_perot.po +107 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/auto_examples/use_cases/index.po +36 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/auto_examples/use_cases/laser_beam.po +137 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/auto_examples/use_cases/spectrum_analysis.po +130 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/changelog.po +789 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/contributing/contribute_code.po +48 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/contributing/dependencies.po +104 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/contributing/environment.po +239 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/contributing/gitworkflow.po +173 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/contributing/guidelines.po +96 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/contributing/index.po +129 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/index.po +86 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/requirements.po +242 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/user_guide/features.po +1331 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/user_guide/index.po +44 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/user_guide/installation.po +326 -0
- sigima-1.0.0/doc/locale/fr/LC_MESSAGES/user_guide/overview.po +418 -0
- sigima-1.0.0/doc/remote_example.ipynb +181 -0
- sigima-1.0.0/doc/requirements.rst +145 -0
- sigima-1.0.0/doc/user_guide/features.rst +740 -0
- sigima-1.0.0/doc/user_guide/index.rst +33 -0
- sigima-1.0.0/doc/user_guide/installation.rst +143 -0
- sigima-1.0.0/doc/user_guide/overview.rst +290 -0
- {sigima-0.0.1.dev0 → sigima-1.0.0}/pyproject.toml +46 -14
- sigima-1.0.0/requirements.txt +28 -0
- {sigima-0.0.1.dev0 → sigima-1.0.0}/setup.cfg +4 -4
- sigima-1.0.0/sigima/__init__.py +142 -0
- sigima-1.0.0/sigima/client/__init__.py +105 -0
- sigima-1.0.0/sigima/client/base.py +780 -0
- sigima-1.0.0/sigima/client/remote.py +469 -0
- sigima-1.0.0/sigima/client/stub.py +814 -0
- sigima-1.0.0/sigima/client/utils.py +90 -0
- sigima-1.0.0/sigima/config.py +444 -0
- sigima-1.0.0/sigima/data/logo/Sigima.svg +135 -0
- sigima-1.0.0/sigima/data/tests/annotations.json +798 -0
- sigima-1.0.0/sigima/data/tests/curve_fitting/exponential_fit.txt +511 -0
- sigima-1.0.0/sigima/data/tests/curve_fitting/gaussian_fit.txt +100 -0
- sigima-1.0.0/sigima/data/tests/curve_fitting/piecewiseexponential_fit.txt +1022 -0
- sigima-1.0.0/sigima/data/tests/curve_fitting/polynomial_fit.txt +100 -0
- sigima-1.0.0/sigima/data/tests/curve_fitting/twohalfgaussian_fit.txt +1000 -0
- sigima-1.0.0/sigima/data/tests/curve_formats/bandwidth.txt +201 -0
- sigima-1.0.0/sigima/data/tests/curve_formats/boxcar.npy +0 -0
- sigima-1.0.0/sigima/data/tests/curve_formats/datetime.txt +1001 -0
- sigima-1.0.0/sigima/data/tests/curve_formats/dynamic_parameters.txt +4000 -0
- sigima-1.0.0/sigima/data/tests/curve_formats/fw1e2.txt +301 -0
- sigima-1.0.0/sigima/data/tests/curve_formats/fwhm.txt +319 -0
- sigima-1.0.0/sigima/data/tests/curve_formats/multiple_curves.csv +29 -0
- sigima-1.0.0/sigima/data/tests/curve_formats/noised_saw.mat +0 -0
- sigima-1.0.0/sigima/data/tests/curve_formats/oscilloscope.csv +111 -0
- sigima-1.0.0/sigima/data/tests/curve_formats/other/other2/recursive2.txt +5 -0
- sigima-1.0.0/sigima/data/tests/curve_formats/other/recursive1.txt +5 -0
- sigima-1.0.0/sigima/data/tests/curve_formats/paracetamol.npy +0 -0
- sigima-1.0.0/sigima/data/tests/curve_formats/paracetamol.txt +1010 -0
- sigima-1.0.0/sigima/data/tests/curve_formats/paracetamol_dx_dy.csv +1000 -0
- sigima-1.0.0/sigima/data/tests/curve_formats/paracetamol_dy.csv +1001 -0
- sigima-1.0.0/sigima/data/tests/curve_formats/pulse1.npy +0 -0
- sigima-1.0.0/sigima/data/tests/curve_formats/pulse2.npy +0 -0
- sigima-1.0.0/sigima/data/tests/curve_formats/simple.txt +5 -0
- sigima-1.0.0/sigima/data/tests/curve_formats/spectrum.mca +2139 -0
- sigima-1.0.0/sigima/data/tests/curve_formats/square2.npy +0 -0
- sigima-1.0.0/sigima/data/tests/curve_formats/step.npy +0 -0
- sigima-1.0.0/sigima/data/tests/fabry-perot1.jpg +0 -0
- sigima-1.0.0/sigima/data/tests/fabry-perot2.jpg +0 -0
- sigima-1.0.0/sigima/data/tests/flower.npy +0 -0
- sigima-1.0.0/sigima/data/tests/image_formats/NF 180338201.scor-data +11003 -0
- sigima-1.0.0/sigima/data/tests/image_formats/binary_image.npy +0 -0
- sigima-1.0.0/sigima/data/tests/image_formats/binary_image.png +0 -0
- sigima-1.0.0/sigima/data/tests/image_formats/centroid_test.npy +0 -0
- sigima-1.0.0/sigima/data/tests/image_formats/coordinated_text/complex_image.txt +10011 -0
- sigima-1.0.0/sigima/data/tests/image_formats/coordinated_text/complex_ref_image.txt +10010 -0
- sigima-1.0.0/sigima/data/tests/image_formats/coordinated_text/image.txt +15 -0
- sigima-1.0.0/sigima/data/tests/image_formats/coordinated_text/image2.txt +14 -0
- sigima-1.0.0/sigima/data/tests/image_formats/coordinated_text/image_no_unit_no_label.txt +14 -0
- sigima-1.0.0/sigima/data/tests/image_formats/coordinated_text/image_with_nan.txt +15 -0
- sigima-1.0.0/sigima/data/tests/image_formats/coordinated_text/image_with_unit.txt +14 -0
- sigima-1.0.0/sigima/data/tests/image_formats/fiber.csv +480 -0
- sigima-1.0.0/sigima/data/tests/image_formats/fiber.jpg +0 -0
- sigima-1.0.0/sigima/data/tests/image_formats/fiber.png +0 -0
- sigima-1.0.0/sigima/data/tests/image_formats/fiber.txt +480 -0
- sigima-1.0.0/sigima/data/tests/image_formats/gaussian_spot_with_noise.npy +0 -0
- sigima-1.0.0/sigima/data/tests/image_formats/mr-brain.dcm +0 -0
- sigima-1.0.0/sigima/data/tests/image_formats/noised_gaussian.mat +0 -0
- sigima-1.0.0/sigima/data/tests/image_formats/sif_reader/nd_lum_image_no_glue.sif +0 -0
- sigima-1.0.0/sigima/data/tests/image_formats/sif_reader/raman1.sif +0 -0
- sigima-1.0.0/sigima/data/tests/image_formats/tiling.txt +10 -0
- sigima-1.0.0/sigima/data/tests/image_formats/uint16.tiff +0 -0
- sigima-1.0.0/sigima/data/tests/image_formats/uint8.tiff +0 -0
- sigima-1.0.0/sigima/data/tests/laser_beam/TEM00_z_13.jpg +0 -0
- sigima-1.0.0/sigima/data/tests/laser_beam/TEM00_z_18.jpg +0 -0
- sigima-1.0.0/sigima/data/tests/laser_beam/TEM00_z_23.jpg +0 -0
- sigima-1.0.0/sigima/data/tests/laser_beam/TEM00_z_30.jpg +0 -0
- sigima-1.0.0/sigima/data/tests/laser_beam/TEM00_z_35.jpg +0 -0
- sigima-1.0.0/sigima/data/tests/laser_beam/TEM00_z_40.jpg +0 -0
- sigima-1.0.0/sigima/data/tests/laser_beam/TEM00_z_45.jpg +0 -0
- sigima-1.0.0/sigima/data/tests/laser_beam/TEM00_z_50.jpg +0 -0
- sigima-1.0.0/sigima/data/tests/laser_beam/TEM00_z_55.jpg +0 -0
- sigima-1.0.0/sigima/data/tests/laser_beam/TEM00_z_60.jpg +0 -0
- sigima-1.0.0/sigima/data/tests/laser_beam/TEM00_z_65.jpg +0 -0
- sigima-1.0.0/sigima/data/tests/laser_beam/TEM00_z_70.jpg +0 -0
- sigima-1.0.0/sigima/data/tests/laser_beam/TEM00_z_75.jpg +0 -0
- sigima-1.0.0/sigima/data/tests/laser_beam/TEM00_z_80.jpg +0 -0
- sigima-1.0.0/sigima/enums.py +195 -0
- sigima-1.0.0/sigima/io/__init__.py +123 -0
- sigima-1.0.0/sigima/io/base.py +311 -0
- sigima-1.0.0/sigima/io/common/__init__.py +5 -0
- sigima-1.0.0/sigima/io/common/basename.py +164 -0
- sigima-1.0.0/sigima/io/common/converters.py +189 -0
- sigima-1.0.0/sigima/io/common/objmeta.py +181 -0
- sigima-1.0.0/sigima/io/common/textreader.py +58 -0
- sigima-1.0.0/sigima/io/convenience.py +157 -0
- sigima-1.0.0/sigima/io/enums.py +17 -0
- sigima-1.0.0/sigima/io/ftlab.py +395 -0
- sigima-1.0.0/sigima/io/image/__init__.py +9 -0
- sigima-1.0.0/sigima/io/image/base.py +177 -0
- sigima-1.0.0/sigima/io/image/formats.py +1016 -0
- sigima-1.0.0/sigima/io/image/funcs.py +414 -0
- sigima-1.0.0/sigima/io/signal/__init__.py +9 -0
- sigima-1.0.0/sigima/io/signal/base.py +129 -0
- sigima-1.0.0/sigima/io/signal/formats.py +290 -0
- sigima-1.0.0/sigima/io/signal/funcs.py +723 -0
- sigima-1.0.0/sigima/objects/__init__.py +260 -0
- sigima-1.0.0/sigima/objects/base.py +937 -0
- sigima-1.0.0/sigima/objects/image/__init__.py +88 -0
- sigima-1.0.0/sigima/objects/image/creation.py +556 -0
- sigima-1.0.0/sigima/objects/image/object.py +524 -0
- sigima-1.0.0/sigima/objects/image/roi.py +904 -0
- sigima-1.0.0/sigima/objects/scalar/__init__.py +57 -0
- sigima-1.0.0/sigima/objects/scalar/common.py +215 -0
- sigima-1.0.0/sigima/objects/scalar/geometry.py +502 -0
- sigima-1.0.0/sigima/objects/scalar/table.py +784 -0
- sigima-1.0.0/sigima/objects/shape.py +290 -0
- sigima-1.0.0/sigima/objects/signal/__init__.py +133 -0
- sigima-1.0.0/sigima/objects/signal/constants.py +27 -0
- sigima-1.0.0/sigima/objects/signal/creation.py +1428 -0
- sigima-1.0.0/sigima/objects/signal/object.py +444 -0
- sigima-1.0.0/sigima/objects/signal/roi.py +274 -0
- sigima-1.0.0/sigima/params.py +405 -0
- sigima-1.0.0/sigima/proc/__init__.py +96 -0
- sigima-1.0.0/sigima/proc/base.py +381 -0
- sigima-1.0.0/sigima/proc/decorator.py +330 -0
- sigima-1.0.0/sigima/proc/image/__init__.py +513 -0
- sigima-1.0.0/sigima/proc/image/arithmetic.py +335 -0
- sigima-1.0.0/sigima/proc/image/base.py +260 -0
- sigima-1.0.0/sigima/proc/image/detection.py +519 -0
- sigima-1.0.0/sigima/proc/image/edges.py +329 -0
- sigima-1.0.0/sigima/proc/image/exposure.py +406 -0
- sigima-1.0.0/sigima/proc/image/extraction.py +458 -0
- sigima-1.0.0/sigima/proc/image/filtering.py +219 -0
- sigima-1.0.0/sigima/proc/image/fourier.py +147 -0
- sigima-1.0.0/sigima/proc/image/geometry.py +661 -0
- sigima-1.0.0/sigima/proc/image/mathops.py +340 -0
- sigima-1.0.0/sigima/proc/image/measurement.py +195 -0
- sigima-1.0.0/sigima/proc/image/morphology.py +155 -0
- sigima-1.0.0/sigima/proc/image/noise.py +107 -0
- sigima-1.0.0/sigima/proc/image/preprocessing.py +182 -0
- sigima-1.0.0/sigima/proc/image/restoration.py +235 -0
- sigima-1.0.0/sigima/proc/image/threshold.py +217 -0
- sigima-1.0.0/sigima/proc/image/transformations.py +393 -0
- sigima-1.0.0/sigima/proc/signal/__init__.py +376 -0
- sigima-1.0.0/sigima/proc/signal/analysis.py +206 -0
- sigima-1.0.0/sigima/proc/signal/arithmetic.py +551 -0
- sigima-1.0.0/sigima/proc/signal/base.py +262 -0
- sigima-1.0.0/sigima/proc/signal/extraction.py +60 -0
- sigima-1.0.0/sigima/proc/signal/features.py +310 -0
- sigima-1.0.0/sigima/proc/signal/filtering.py +484 -0
- sigima-1.0.0/sigima/proc/signal/fitting.py +276 -0
- sigima-1.0.0/sigima/proc/signal/fourier.py +259 -0
- sigima-1.0.0/sigima/proc/signal/mathops.py +420 -0
- sigima-1.0.0/sigima/proc/signal/processing.py +580 -0
- sigima-1.0.0/sigima/proc/signal/stability.py +175 -0
- sigima-1.0.0/sigima/proc/title_formatting.py +227 -0
- sigima-1.0.0/sigima/proc/validation.py +272 -0
- sigima-1.0.0/sigima/tests/__init__.py +7 -0
- sigima-1.0.0/sigima/tests/common/__init__.py +0 -0
- sigima-1.0.0/sigima/tests/common/arithmeticparam_unit_test.py +26 -0
- sigima-1.0.0/sigima/tests/common/basename_unit_test.py +126 -0
- sigima-1.0.0/sigima/tests/common/client_unit_test.py +412 -0
- sigima-1.0.0/sigima/tests/common/converters_unit_test.py +77 -0
- sigima-1.0.0/sigima/tests/common/decorator_unit_test.py +176 -0
- sigima-1.0.0/sigima/tests/common/examples_unit_test.py +104 -0
- sigima-1.0.0/sigima/tests/common/kernel_normalization_unit_test.py +242 -0
- sigima-1.0.0/sigima/tests/common/roi_basic_unit_test.py +73 -0
- sigima-1.0.0/sigima/tests/common/roi_geometry_unit_test.py +171 -0
- sigima-1.0.0/sigima/tests/common/scalar_builder_unit_test.py +142 -0
- sigima-1.0.0/sigima/tests/common/scalar_unit_test.py +991 -0
- sigima-1.0.0/sigima/tests/common/shape_unit_test.py +183 -0
- sigima-1.0.0/sigima/tests/common/stat_unit_test.py +138 -0
- sigima-1.0.0/sigima/tests/common/title_formatting_unit_test.py +338 -0
- sigima-1.0.0/sigima/tests/common/tools_coordinates_unit_test.py +60 -0
- sigima-1.0.0/sigima/tests/common/transformations_unit_test.py +178 -0
- sigima-1.0.0/sigima/tests/common/validation_unit_test.py +205 -0
- sigima-1.0.0/sigima/tests/conftest.py +129 -0
- sigima-1.0.0/sigima/tests/data.py +998 -0
- sigima-1.0.0/sigima/tests/env.py +280 -0
- sigima-1.0.0/sigima/tests/guiutils.py +163 -0
- sigima-1.0.0/sigima/tests/helpers.py +532 -0
- sigima-1.0.0/sigima/tests/image/__init__.py +28 -0
- sigima-1.0.0/sigima/tests/image/binning_unit_test.py +128 -0
- sigima-1.0.0/sigima/tests/image/blob_detection_unit_test.py +312 -0
- sigima-1.0.0/sigima/tests/image/centroid_unit_test.py +170 -0
- sigima-1.0.0/sigima/tests/image/check_2d_array_unit_test.py +63 -0
- sigima-1.0.0/sigima/tests/image/contour_unit_test.py +172 -0
- sigima-1.0.0/sigima/tests/image/convolution_unit_test.py +178 -0
- sigima-1.0.0/sigima/tests/image/datatype_unit_test.py +67 -0
- sigima-1.0.0/sigima/tests/image/edges_unit_test.py +155 -0
- sigima-1.0.0/sigima/tests/image/enclosingcircle_unit_test.py +88 -0
- sigima-1.0.0/sigima/tests/image/exposure_unit_test.py +223 -0
- sigima-1.0.0/sigima/tests/image/fft2d_unit_test.py +189 -0
- sigima-1.0.0/sigima/tests/image/filtering_unit_test.py +166 -0
- sigima-1.0.0/sigima/tests/image/geometry_unit_test.py +654 -0
- sigima-1.0.0/sigima/tests/image/hough_circle_unit_test.py +147 -0
- sigima-1.0.0/sigima/tests/image/imageobj_unit_test.py +737 -0
- sigima-1.0.0/sigima/tests/image/morphology_unit_test.py +71 -0
- sigima-1.0.0/sigima/tests/image/noise_unit_test.py +57 -0
- sigima-1.0.0/sigima/tests/image/offset_correction_unit_test.py +72 -0
- sigima-1.0.0/sigima/tests/image/operation_unit_test.py +518 -0
- sigima-1.0.0/sigima/tests/image/peak2d_limits_unit_test.py +41 -0
- sigima-1.0.0/sigima/tests/image/peak2d_unit_test.py +133 -0
- sigima-1.0.0/sigima/tests/image/profile_unit_test.py +159 -0
- sigima-1.0.0/sigima/tests/image/projections_unit_test.py +121 -0
- sigima-1.0.0/sigima/tests/image/restoration_unit_test.py +141 -0
- sigima-1.0.0/sigima/tests/image/roi2dparam_unit_test.py +53 -0
- sigima-1.0.0/sigima/tests/image/roi_advanced_unit_test.py +588 -0
- sigima-1.0.0/sigima/tests/image/roi_grid_unit_test.py +279 -0
- sigima-1.0.0/sigima/tests/image/spectrum2d_unit_test.py +40 -0
- sigima-1.0.0/sigima/tests/image/threshold_unit_test.py +91 -0
- sigima-1.0.0/sigima/tests/io/__init__.py +0 -0
- sigima-1.0.0/sigima/tests/io/addnewformat_unit_test.py +125 -0
- sigima-1.0.0/sigima/tests/io/convenience_funcs_unit_test.py +470 -0
- sigima-1.0.0/sigima/tests/io/coordinated_text_format_unit_test.py +495 -0
- sigima-1.0.0/sigima/tests/io/datetime_csv_unit_test.py +198 -0
- sigima-1.0.0/sigima/tests/io/imageio_formats_test.py +41 -0
- sigima-1.0.0/sigima/tests/io/ioregistry_unit_test.py +69 -0
- sigima-1.0.0/sigima/tests/io/objmeta_unit_test.py +87 -0
- sigima-1.0.0/sigima/tests/io/readobj_unit_test.py +130 -0
- sigima-1.0.0/sigima/tests/io/readwriteobj_unit_test.py +67 -0
- sigima-1.0.0/sigima/tests/signal/__init__.py +0 -0
- sigima-1.0.0/sigima/tests/signal/analysis_unit_test.py +135 -0
- sigima-1.0.0/sigima/tests/signal/check_1d_arrays_unit_test.py +169 -0
- sigima-1.0.0/sigima/tests/signal/convolution_unit_test.py +404 -0
- sigima-1.0.0/sigima/tests/signal/datetime_unit_test.py +176 -0
- sigima-1.0.0/sigima/tests/signal/fft1d_unit_test.py +303 -0
- sigima-1.0.0/sigima/tests/signal/filters_unit_test.py +403 -0
- sigima-1.0.0/sigima/tests/signal/fitting_unit_test.py +929 -0
- sigima-1.0.0/sigima/tests/signal/fwhm_unit_test.py +111 -0
- sigima-1.0.0/sigima/tests/signal/noise_unit_test.py +128 -0
- sigima-1.0.0/sigima/tests/signal/offset_correction_unit_test.py +34 -0
- sigima-1.0.0/sigima/tests/signal/operation_unit_test.py +489 -0
- sigima-1.0.0/sigima/tests/signal/peakdetection_unit_test.py +145 -0
- sigima-1.0.0/sigima/tests/signal/processing_unit_test.py +657 -0
- sigima-1.0.0/sigima/tests/signal/pulse/__init__.py +112 -0
- sigima-1.0.0/sigima/tests/signal/pulse/crossing_times_unit_test.py +123 -0
- sigima-1.0.0/sigima/tests/signal/pulse/plateau_detection_unit_test.py +102 -0
- sigima-1.0.0/sigima/tests/signal/pulse/pulse_unit_test.py +1824 -0
- sigima-1.0.0/sigima/tests/signal/roi_advanced_unit_test.py +392 -0
- sigima-1.0.0/sigima/tests/signal/signalobj_unit_test.py +603 -0
- sigima-1.0.0/sigima/tests/signal/stability_unit_test.py +431 -0
- sigima-1.0.0/sigima/tests/signal/uncertainty_unit_test.py +611 -0
- sigima-1.0.0/sigima/tests/vistools.py +1030 -0
- sigima-1.0.0/sigima/tools/__init__.py +59 -0
- sigima-1.0.0/sigima/tools/checks.py +290 -0
- sigima-1.0.0/sigima/tools/coordinates.py +308 -0
- sigima-1.0.0/sigima/tools/datatypes.py +26 -0
- sigima-1.0.0/sigima/tools/image/__init__.py +97 -0
- sigima-1.0.0/sigima/tools/image/detection.py +451 -0
- sigima-1.0.0/sigima/tools/image/exposure.py +77 -0
- sigima-1.0.0/sigima/tools/image/extraction.py +48 -0
- sigima-1.0.0/sigima/tools/image/fourier.py +260 -0
- sigima-1.0.0/sigima/tools/image/geometry.py +190 -0
- sigima-1.0.0/sigima/tools/image/preprocessing.py +165 -0
- sigima-1.0.0/sigima/tools/signal/__init__.py +86 -0
- sigima-1.0.0/sigima/tools/signal/dynamic.py +254 -0
- sigima-1.0.0/sigima/tools/signal/features.py +135 -0
- sigima-1.0.0/sigima/tools/signal/filtering.py +171 -0
- sigima-1.0.0/sigima/tools/signal/fitting.py +1171 -0
- sigima-1.0.0/sigima/tools/signal/fourier.py +466 -0
- sigima-1.0.0/sigima/tools/signal/interpolation.py +70 -0
- sigima-1.0.0/sigima/tools/signal/peakdetection.py +126 -0
- sigima-1.0.0/sigima/tools/signal/pulse.py +1626 -0
- sigima-1.0.0/sigima/tools/signal/scaling.py +50 -0
- sigima-1.0.0/sigima/tools/signal/stability.py +258 -0
- sigima-1.0.0/sigima/tools/signal/windowing.py +90 -0
- sigima-1.0.0/sigima/worker.py +79 -0
- sigima-1.0.0/sigima.egg-info/PKG-INFO +233 -0
- sigima-1.0.0/sigima.egg-info/SOURCES.txt +346 -0
- sigima-1.0.0/sigima.egg-info/requires.txt +42 -0
- sigima-0.0.1.dev0/PKG-INFO +0 -60
- sigima-0.0.1.dev0/README.md +0 -5
- sigima-0.0.1.dev0/requirements.txt +0 -25
- sigima-0.0.1.dev0/sigima/__init__.py +0 -2
- sigima-0.0.1.dev0/sigima.egg-info/PKG-INFO +0 -60
- sigima-0.0.1.dev0/sigima.egg-info/SOURCES.txt +0 -11
- sigima-0.0.1.dev0/sigima.egg-info/requires.txt +0 -26
- {sigima-0.0.1.dev0 → sigima-1.0.0}/sigima.egg-info/dependency_links.txt +0 -0
- {sigima-0.0.1.dev0 → sigima-1.0.0}/sigima.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
# Release notes #
|
|
2
|
+
|
|
3
|
+
The `sigima` library is part of the DataLab open-source platform.
|
|
4
|
+
See DataLab [roadmap page](https://datalab-platform.com/en/contributing/roadmap.html) for future and past milestones.
|
|
5
|
+
|
|
6
|
+
## sigima 1.0.0 ##
|
|
7
|
+
|
|
8
|
+
💥 New features and enhancements:
|
|
9
|
+
|
|
10
|
+
* **Signals to image conversion**: New feature to combine multiple signals into a 2D image
|
|
11
|
+
* New computation function `signals_to_image()` in `sigima.proc.signal.arithmetic`
|
|
12
|
+
* Takes a list of signals and combines them into an image by stacking Y-arrays
|
|
13
|
+
* Two orientation modes:
|
|
14
|
+
* **Rows**: Each signal becomes a row in the image (default)
|
|
15
|
+
* **Columns**: Each signal becomes a column in the image
|
|
16
|
+
* Optional normalization:
|
|
17
|
+
* Supports multiple normalization methods (Z-score, Min-Max, Maximum)
|
|
18
|
+
* Normalizes each signal independently before stacking
|
|
19
|
+
* Useful for visualizing signals with different amplitude ranges
|
|
20
|
+
* Validates that all signals have the same size before combining
|
|
21
|
+
* New parameter class `SignalsToImageParam` with orientation and normalization settings
|
|
22
|
+
* New enum `SignalsToImageOrientation` for specifying row/column orientation
|
|
23
|
+
* Comprehensive validation tests for all combinations of parameters
|
|
24
|
+
* Ideal for creating spectrograms, heatmaps, or waterfall displays from signal collections
|
|
25
|
+
|
|
26
|
+
* **Non-uniform coordinate support for images**: Added comprehensive support for non-uniform pixel coordinates
|
|
27
|
+
* `ImageObj` now supports both uniform and non-uniform coordinate systems:
|
|
28
|
+
* Uniform coordinates: defined by origin (`x0`, `y0`) and pixel spacing (`dx`, `dy`)
|
|
29
|
+
* Non-uniform coordinates: defined by coordinate arrays (`xcoords`, `ycoords`)
|
|
30
|
+
* New methods for coordinate manipulation:
|
|
31
|
+
* `set_coords()`: Set non-uniform X and Y coordinate arrays
|
|
32
|
+
* `is_uniform_coords`: Property to check if coordinates are uniform
|
|
33
|
+
* New computation function `set_uniform_coords()`: Convert non-uniform to uniform coordinates
|
|
34
|
+
* Automatically extracts uniform spacing from non-uniform arrays
|
|
35
|
+
* Handles numerical precision issues from linspace-generated arrays
|
|
36
|
+
* Preserves image data while transforming coordinate system
|
|
37
|
+
* Enhanced `calibration()` function with polynomial support:
|
|
38
|
+
* Now supports polynomial calibration up to cubic order: `dst = a0 + a1*src + a2*src² + a3*src³`
|
|
39
|
+
* Parameter class changed from `a, b` (linear) to `a0, a1, a2, a3` (polynomial)
|
|
40
|
+
* Works on X-axis, Y-axis (creating non-uniform coordinates), and Z-axis (data values)
|
|
41
|
+
* Linear calibration is a special case with `a2=0, a3=0`
|
|
42
|
+
* Automatically handles conversion between uniform and non-uniform coordinate systems
|
|
43
|
+
* Enhanced I/O support:
|
|
44
|
+
* HDF5 format now serializes/deserializes non-uniform coordinates
|
|
45
|
+
* Coordinated text files support non-uniform coordinate arrays
|
|
46
|
+
* All geometric operations updated to handle both coordinate types:
|
|
47
|
+
* Coordinate transformations preserve or create appropriate coordinate system
|
|
48
|
+
* ROI operations work seamlessly with both uniform and non-uniform coordinates
|
|
49
|
+
|
|
50
|
+
* **DateTime support for signal data**: Added comprehensive datetime handling for signal X-axis data
|
|
51
|
+
* Automatic detection and conversion of datetime columns when reading CSV files
|
|
52
|
+
* Detects datetime values in the first or second column (handling index columns)
|
|
53
|
+
* Validates datetime format and ensures reasonable date ranges (post-1900)
|
|
54
|
+
* Converts datetime strings to float timestamps for efficient computation
|
|
55
|
+
* Preserves datetime metadata for proper display and export
|
|
56
|
+
* New `SignalObj` methods for datetime manipulation:
|
|
57
|
+
* `set_x_from_datetime()`: Convert datetime objects/strings to signal X data with configurable time units (s, ms, μs, ns, min, h)
|
|
58
|
+
* `get_x_as_datetime()`: Retrieve X values as datetime objects for display or export
|
|
59
|
+
* `is_x_datetime()`: Check if signal contains datetime data
|
|
60
|
+
* Enhanced CSV export to preserve datetime format when writing signals with datetime X-axis
|
|
61
|
+
* New constants module (`sigima.objects.signal.constants`) defining datetime metadata keys and time unit conversion factors
|
|
62
|
+
* Comprehensive unit tests covering datetime conversion, I/O roundtrip, and edge cases
|
|
63
|
+
* Example test data file with real-world temperature/humidity logger data (`datetime.txt`)
|
|
64
|
+
|
|
65
|
+
* **New client subpackage**: Migrated DataLab client functionality to `sigima.client`
|
|
66
|
+
* Added `sigima.client.remote.SimpleRemoteProxy` for XML-RPC communication with DataLab
|
|
67
|
+
* Added `sigima.client.base.SimpleBaseProxy` as abstract base class for DataLab proxies
|
|
68
|
+
* Included comprehensive unit tests and API documentation
|
|
69
|
+
* Maintains headless design principle (GUI components excluded)
|
|
70
|
+
* Enables remote control of DataLab application from Python scripts and Jupyter notebooks
|
|
71
|
+
* Client functionality is now directly accessible: `from sigima import SimpleRemoteProxy`
|
|
72
|
+
|
|
73
|
+
* **New image ROI feature**: Added inverse ROI functionality for image ROIs
|
|
74
|
+
* Added `inside` parameter to `BaseSingleImageROI` base class, inherited by all image ROI types (`PolygonalROI`, `RectangularROI`, `CircularROI`)
|
|
75
|
+
* When `inside=True`, ROI represents the region inside the shape (inverted behavior)
|
|
76
|
+
* When `inside=False` (default), ROI represents the region outside the shape (original behavior)
|
|
77
|
+
* Fully integrated with serialization (`to_dict`/`from_dict`) and parameter conversion (`to_param`/`from_param`)
|
|
78
|
+
* Signal ROIs (`SegmentROI`) are unaffected as the concept doesn't apply to 1D intervals
|
|
79
|
+
* Optimal architecture with zero code duplication - all `inside` functionality implemented once in the base class
|
|
80
|
+
* Individual ROI classes no longer need custom constructors, inheriting directly from base class
|
|
81
|
+
|
|
82
|
+
* New image operation:
|
|
83
|
+
* Convolution.
|
|
84
|
+
|
|
85
|
+
* New image format support:
|
|
86
|
+
* **Coordinated text image files**: Added support for reading coordinated text files (`.txt` extension), similar to the Matris image format.
|
|
87
|
+
* Supports both real and complex-valued image data with optional error images.
|
|
88
|
+
* Automatically handles NaN values in the data.
|
|
89
|
+
* Reads metadata including units (X, Y, Z) and labels from file headers.
|
|
90
|
+
|
|
91
|
+
* New image analysis features:
|
|
92
|
+
* Horizontal and vertical projections
|
|
93
|
+
* Compute the horizontal projection profile by summing values along the y-axis (`sigima.proc.image.measurement.horizontal_projection`).
|
|
94
|
+
* Compute the vertical projection profile by summing values along the x-axis (`sigima.proc.image.measurement.vertical_projection`).
|
|
95
|
+
|
|
96
|
+
* **New curve fitting algorithms**: Complete curve fitting framework with `sigima.tools.signal.fitting` module:
|
|
97
|
+
* **Core fitting functions**: Comprehensive set of curve fitting algorithms for scientific data analysis:
|
|
98
|
+
* `linear_fit`: Linear regression fitting
|
|
99
|
+
* `polynomial_fit`: Polynomial fitting with configurable degree
|
|
100
|
+
* `gaussian_fit`: Gaussian profile fitting for peak analysis
|
|
101
|
+
* `lorentzian_fit`: Lorentzian profile fitting for spectroscopy
|
|
102
|
+
* `voigt_fit`: Voigt profile fitting (convolution of Gaussian and Lorentzian profiles)
|
|
103
|
+
* `exponential_fit`: Single exponential fitting with overflow protection
|
|
104
|
+
* `piecewiseexponential_fit`: Piecewise exponential (raise-decay) fitting with advanced parameter estimation
|
|
105
|
+
* `planckian_fit`: Planckian (blackbody radiation) fitting with correct physics implementation
|
|
106
|
+
* `twohalfgaussian_fit`: Asymmetric peak fitting with separate left/right parameters
|
|
107
|
+
* `multilorentzian_fit`: Multi-peak Lorentzian fitting for complex spectra
|
|
108
|
+
* `sinusoidal_fit`: Sinusoidal fitting with FFT-based frequency estimation
|
|
109
|
+
* `cdf_fit`: Cumulative Distribution Function fitting using error function
|
|
110
|
+
* `sigmoid_fit`: Sigmoid (logistic) function fitting for S-shaped curves
|
|
111
|
+
* **Advanced piecewise exponential (raise-decay) fitting**: Enhanced algorithm with:
|
|
112
|
+
* Standard piecewise exponential model: `y = a_left*exp(b_left*x) + a_right*exp(b_right*x) + y0`
|
|
113
|
+
* Multi-start optimization strategy for robust convergence to global minimum
|
|
114
|
+
* Support for both positive and negative exponential rates (growth and decay components)
|
|
115
|
+
* Comprehensive parameter bounds validation to prevent optimization errors
|
|
116
|
+
* **Enhanced asymmetric peak fitting**: Advanced `twohalfgaussian_fit` with:
|
|
117
|
+
* Separate baseline offsets for left and right sides (`y0_left`, `y0_right`)
|
|
118
|
+
* Independent amplitude parameters (`amp_left`, `amp_right`) for better asymmetric modeling
|
|
119
|
+
* Robust baseline estimation using percentile-based methods
|
|
120
|
+
* **Technical features**: All fitting functions include:
|
|
121
|
+
* Automatic initial parameter estimation from data characteristics
|
|
122
|
+
* Proper bounds enforcement ensuring optimization stability
|
|
123
|
+
* Comprehensive error handling and parameter validation
|
|
124
|
+
* Consistent dataclass-based parameter structures
|
|
125
|
+
* Full test coverage with synthetic and experimental data validation
|
|
126
|
+
|
|
127
|
+
* New common signal/image feature:
|
|
128
|
+
* Added `phase` (argument) feature to extract the phase information from complex signals or images.
|
|
129
|
+
* Added operation to create complex-valued signal/image from real and imaginary parts.
|
|
130
|
+
* Added operation to create complex-valued signal/image from magnitude and phase.
|
|
131
|
+
* Standard deviation of the selected signals or images (this complements the "Average" feature).
|
|
132
|
+
* Generate new signal or image: Poisson noise.
|
|
133
|
+
* Add noise to the selected signals or images.
|
|
134
|
+
* Gaussian, Poisson or uniform noise can be added.
|
|
135
|
+
* New utility functions to generate file basenames.
|
|
136
|
+
* Deconvolution in the frequency domain.
|
|
137
|
+
|
|
138
|
+
* New ROI features:
|
|
139
|
+
* Improved single ROI title handling, using default title based on the index of the ROI when no title is provided.
|
|
140
|
+
* Added `combine_with` method to ROI objects (`SignalROI` and `ImageROI`) to return a new ROI that combines the current ROI with another one (union) and handling duplicate ROIs.
|
|
141
|
+
* Image ROI transformations:
|
|
142
|
+
* Before this change, image ROI were removed after applying each single computation function.
|
|
143
|
+
* Now, the geometry computation functions preserve the ROI information across transformations: the transformed ROIs are automatically updated in the image object.
|
|
144
|
+
* Image ROI coordinates:
|
|
145
|
+
* Before this change, image ROI coordinates were defined using indices by default.
|
|
146
|
+
* Now, `ROI2DParam` uses physical coordinates by default.
|
|
147
|
+
* Note that ROI may still be defined using indices instead (using `create_image_roi` function).
|
|
148
|
+
* Image ROI grid:
|
|
149
|
+
* New `generate_image_grid_roi` function: create a grid of ROIs from an image, with customizable parameters for grid size, spacing, and naming.
|
|
150
|
+
* This function allows for easy extraction of multiple ROIs from an image in a structured manner.
|
|
151
|
+
* Parameters are handled via the `ROIGridParam` class, which provides a convenient way to specify grid properties:
|
|
152
|
+
* `nx` / `ny`: Number of grid cells in the X/Y direction.
|
|
153
|
+
* `xsize` / `ysize`: Size of each grid cell in pixels.
|
|
154
|
+
* `xtranslation` / `ytranslation`: Translation of the grid in pixels.
|
|
155
|
+
* `xdirection` / `ydirection`: Direction of the grid (increasing/decreasing).
|
|
156
|
+
|
|
157
|
+
* New image processing features:
|
|
158
|
+
* New "2D resampling" feature:
|
|
159
|
+
* This feature allows to resample 2D images to a new coordinate grid using interpolation.
|
|
160
|
+
* It supports two resampling modes: pixel size and output shape.
|
|
161
|
+
* Multiple interpolation methods are available: linear, cubic, and nearest neighbor.
|
|
162
|
+
* The `fill_value` parameter controls how out-of-bounds pixels are handled, with support for numeric values or NaN.
|
|
163
|
+
* Automatic data type conversion ensures proper NaN handling for integer images.
|
|
164
|
+
* It is implemented in the `sigima.proc.image.resampling` function with parameters defined in `Resampling2DParam`.
|
|
165
|
+
* New "Frequency domain Gaussian filter" feature:
|
|
166
|
+
* This feature allows to filter an image in the frequency domain using a Gaussian filter.
|
|
167
|
+
* It is implemented in the `sigima.proc.image.frequency_domain_gaussian_filter` function.
|
|
168
|
+
* New "Erase" feature:
|
|
169
|
+
* This feature allows to erase an area of the image using the mean value of the image.
|
|
170
|
+
* It is implemented in the `sigima.proc.image.erase` function.
|
|
171
|
+
* The erased area is defined by a region of interest (ROI) parameter set.
|
|
172
|
+
* Example usage:
|
|
173
|
+
|
|
174
|
+
```python
|
|
175
|
+
import numpy as np
|
|
176
|
+
import sigima.objects as sio
|
|
177
|
+
import sigima.proc.image as sipi
|
|
178
|
+
|
|
179
|
+
obj = sio.create_image("test_image", data=np.random.rand(1024, 1024))
|
|
180
|
+
p = sio.ROI2DParam.create(x0=600, y0=800, width=300, height=200)
|
|
181
|
+
dst = sipi.erase(obj, p)
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
* By default, pixel binning changes the pixel size.
|
|
185
|
+
|
|
186
|
+
* Improved centroid estimation:
|
|
187
|
+
* New `get_centroid_auto` method implements an adaptive strategy that chooses between the Fourier-based centroid and a more robust fallback (scikit-image), based on agreement with a projected profile-based reference.
|
|
188
|
+
* Introduced `get_projected_profile_centroid` function for robust estimation via 1D projections (median or barycentric), offering high accuracy even with truncated or noisy images.
|
|
189
|
+
* These changes improve centroid accuracy and stability in edge cases (e.g. truncated disks or off-center spots), while preserving noise robustness.
|
|
190
|
+
* See [DataLab issue #251](https://github.com/DataLab-Platform/DataLab/issues/251) for more details.
|
|
191
|
+
|
|
192
|
+
* New signal processing features:
|
|
193
|
+
* New "Brick wall filter" feature:
|
|
194
|
+
* This feature allows to filter a signal in the frequency domain using an ideal ("brick wall") filter.
|
|
195
|
+
* It is implemented in `sigima.proc.signal.frequency_filter`, along the other frequency domain filtering features (`Bessel`, `Butterworth`, etc.).
|
|
196
|
+
* Enhanced zero padding to support prepend and append. Change default strategy to next power of 2.
|
|
197
|
+
* **Pulse analysis algorithms**: Comprehensive pulse feature extraction framework in `sigima.tools.signal.pulse` module:
|
|
198
|
+
* **Core pulse analysis functions**: Complete set of algorithms for step and square pulse characterization:
|
|
199
|
+
* `extract_pulse_features`: Main function for automated pulse feature extraction
|
|
200
|
+
* `heuristically_recognize_shape`: Intelligent signal type detection (step, square, or other)
|
|
201
|
+
* `detect_polarity`: Robust polarity detection using baseline analysis
|
|
202
|
+
* **Advanced timing parameter extraction**: Precise measurement algorithms for:
|
|
203
|
+
* Rise and fall time calculations with configurable start/stop ratios (e.g., 10%-90%)
|
|
204
|
+
* Timing parameters at specific fractions (x10, x50, x90, x100) of signal amplitude
|
|
205
|
+
* Full width at half maximum (FWHM) computation for square pulses
|
|
206
|
+
* Foot duration measurement for pulse characterization
|
|
207
|
+
* **Baseline analysis capabilities**: Statistical methods for:
|
|
208
|
+
* Automatic baseline range detection from signal extremes
|
|
209
|
+
* Robust baseline level estimation using mean values within ranges
|
|
210
|
+
* Start and end baseline characterization for differential analysis
|
|
211
|
+
* **Signal validation and error handling**: Comprehensive input validation with:
|
|
212
|
+
* Data array consistency checks and NaN/infinity detection
|
|
213
|
+
* Signal length validation and range boundary verification
|
|
214
|
+
* Graceful error handling with descriptive exception messages
|
|
215
|
+
* **PulseFeatures dataclass**: Structured result container with all extracted parameters:
|
|
216
|
+
* Amplitude, polarity, and offset measurements
|
|
217
|
+
* Timing parameters (rise_time, fall_time, fwhm, x10, x50, x90, x100)
|
|
218
|
+
* Baseline ranges (xstartmin, xstartmax, xendmin, xendmax)
|
|
219
|
+
* Signal shape classification and foot duration
|
|
220
|
+
* Implementation leverages robust statistical methods and provides both high-level convenience functions and low-level building blocks for custom pulse analysis workflows.
|
|
221
|
+
* Comprehensive uncertainty propagation implementation:
|
|
222
|
+
* Added mathematically correct uncertainty propagation to ~15 core signal processing functions.
|
|
223
|
+
* Enhanced `Wrap1to1Func` class to handle uncertainty propagation for mathematical functions (`sqrt`, `log10`, `exp`, `clip`, `absolute`, `real`, `imag`).
|
|
224
|
+
* Implemented uncertainty propagation for arithmetic operations (`product_constant`, `division_constant`).
|
|
225
|
+
* Added uncertainty propagation for advanced processing functions (`power`, `normalize`, `derivative`, `integral`, `calibration`).
|
|
226
|
+
* All implementations use proper error propagation formulas with numerical stability handling (NaN/infinity protection).
|
|
227
|
+
* Optimized for memory efficiency by leveraging `dst_1_to_1` automatic uncertainty copying and in-place modifications.
|
|
228
|
+
* Maintains backward compatibility with existing signal processing workflows.
|
|
229
|
+
|
|
230
|
+
* New 2D ramp image generator:
|
|
231
|
+
* This feature allows to generate a 2D ramp image: z = a(x − x₀) + b(y − y₀) + c
|
|
232
|
+
* It is implemented in the `sigima.objects.Ramp2DParam` parameter class.
|
|
233
|
+
* Example usage:
|
|
234
|
+
|
|
235
|
+
```python
|
|
236
|
+
import sigima.objects as sio
|
|
237
|
+
param = sio.Ramp2DParam.create(width=100, height=100, a=1.0, b=2.0)
|
|
238
|
+
image = sio.create_image_from_param(param)
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
* New signal generators: linear chirp, logistic function, Planck function.
|
|
242
|
+
|
|
243
|
+
* New image "Extent" computed parameters:
|
|
244
|
+
* Added computed parameters for image extent: `xmin`, `xmax`, `ymin`, and `ymax`.
|
|
245
|
+
* These parameters are automatically calculated based on the image origin, pixel spacing, and dimensions.
|
|
246
|
+
* They provide the physical coordinate boundaries of the image for enhanced spatial analysis.
|
|
247
|
+
|
|
248
|
+
* New I/O features:
|
|
249
|
+
* Added HDF5 format for signal and image objects (extensions `.h5sig` and `.h5ima`) that may be opened with any HDF5 viewer.
|
|
250
|
+
* Added support for MCA (Multi-Channel Analyzer) spectrum file format:
|
|
251
|
+
* Reading MCA files (`.mca` extension) commonly used in spectroscopy and radiation detection
|
|
252
|
+
* Automatically extracts spectrum data and calibration information
|
|
253
|
+
* Supports energy calibration with interpolation for accurate X-axis values
|
|
254
|
+
* Parses metadata from multiple sections (PMCA SPECTRUM, DPP STATUS, CALIBRATION)
|
|
255
|
+
* Handles various encoding formats (UTF-8, Latin-1, CP1252) for maximum compatibility
|
|
256
|
+
* Added support for FT-Lab signal and image format.
|
|
257
|
+
* Added functions to read and write metadata and ROIs in JSON format:
|
|
258
|
+
* `sigima.io.read_metadata` and `sigima.io.write_metadata` for metadata.
|
|
259
|
+
* `sigima.io.read_roi` and `sigima.io.write_roi` for ROIs.
|
|
260
|
+
* Added convenience I/O functions `write_signals` and `write_images` with `SaveToDirectoryParam` support:
|
|
261
|
+
* These functions enable batch saving of multiple signal or image objects to a directory with configurable naming patterns.
|
|
262
|
+
* `SaveToDirectoryParam` provides control over file basenames (with Python format string support), extensions, directory paths, and overwrite behavior.
|
|
263
|
+
* Automatic filename conflict resolution ensures unique filenames when duplicates would occur.
|
|
264
|
+
* Enhanced workflow efficiency for processing and saving multiple objects in batch operations.
|
|
265
|
+
|
|
266
|
+
✨ Core architecture update: scalar result types
|
|
267
|
+
|
|
268
|
+
* Introduced two new immutable result types: `TableResult` and `GeometryResult`, replacing the legacy `ResultProperties` and `ResultShape` objects.
|
|
269
|
+
* These new result types are computation-oriented and free of application-specific logic (e.g., Qt, metadata), enabling better separation of concerns and future reuse.
|
|
270
|
+
* Added a `TableResultBuilder` utility to incrementally define tabular computations (e.g., statistics on signals or images) and generate a `TableResult` object.
|
|
271
|
+
* All metadata-related behaviors of former result types have been migrated to the DataLab application layer.
|
|
272
|
+
* Removed obsolete or tightly coupled features such as `from_metadata_entry()` and `transform_shapes()` from the Sigima core.
|
|
273
|
+
* This refactoring greatly improves modularity, testability, and the clarity of the scalar computation API.
|
|
274
|
+
|
|
275
|
+
🛠️ Bug fixes:
|
|
276
|
+
|
|
277
|
+
* Fix how data is managed in signal objects (`SignalObj`):
|
|
278
|
+
* Signal data is stored internally as a 2D array with shape `(2, n)`, where the first row is the x data and the second row is the y data: that is the `xydata` attribute.
|
|
279
|
+
* Because of this, when storing complex Y data, the data type is propagated to the x data, which is not always desired.
|
|
280
|
+
* As a workaround, the `x` property now returns the real part of the x data.
|
|
281
|
+
* Furthermore, the `get_data` method now returns a tuple of numpy arrays instead of a single array, allowing to access both x and y data separately, keeping the original data type.
|
|
282
|
+
* Fix ROI conversion between physical and indices coordinates:
|
|
283
|
+
* The conversion between physical coordinates and indices has been corrected (half pixel error was removed).
|
|
284
|
+
* The `indices_to_physical` and `physical_to_indices` methods now raise a `ValueError` if the input does not contain an even number of elements (x, y pairs).
|
|
285
|
+
|
|
286
|
+
🔒 Security fixes:
|
|
287
|
+
|
|
288
|
+
* **Dependency vulnerability fix**: Fixed CVE-2023-4863 vulnerability in opencv-python-headless
|
|
289
|
+
* Updated minimum requirement from 4.5.4.60 to 4.8.1.78
|
|
290
|
+
* Addresses libwebp binaries vulnerability in bundled OpenCV wheels
|
|
291
|
+
* See [DataLab security advisory](https://github.com/DataLab-Platform/DataLab/security/dependabot/1) for details
|
|
292
|
+
|
|
293
|
+
## sigima 0.2.0 ##
|
|
294
|
+
|
|
295
|
+
⚠️ Major API changes:
|
|
296
|
+
|
|
297
|
+
* Rename `sigima.computation` to `sigima.proc`.
|
|
298
|
+
* Rename `sigima.algorithms` to `sigima.tools`.
|
|
299
|
+
* Rename `sigima.obj` to `sigima.objects`.
|
|
300
|
+
* Rename `sigima.param` to `sigima.params`.
|
|
301
|
+
|
|
302
|
+
ℹ️ Various changes:
|
|
303
|
+
|
|
304
|
+
* Add Sigima SVG logo.
|
|
305
|
+
|
|
306
|
+
🛠️ Bug fixes:
|
|
307
|
+
|
|
308
|
+
* Fix API documentation and docstrings.
|
|
309
|
+
|
|
310
|
+
## sigima 0.1.0 ##
|
|
311
|
+
|
|
312
|
+
This first version of the library is the result of the externalization of the signal and image processing features from the DataLab main repository.
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
BSD 3-Clause License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2023, DataLab Platform Developers.
|
|
4
|
-
All rights reserved.
|
|
5
|
-
|
|
6
|
-
Redistribution and use in source and binary forms, with or without
|
|
7
|
-
modification, are permitted provided that the following conditions are met:
|
|
8
|
-
|
|
9
|
-
1. Redistributions of source code must retain the above copyright notice, this
|
|
10
|
-
list of conditions and the following disclaimer.
|
|
11
|
-
|
|
12
|
-
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
13
|
-
this list of conditions and the following disclaimer in the documentation
|
|
14
|
-
and/or other materials provided with the distribution.
|
|
15
|
-
|
|
16
|
-
3. Neither the name of the copyright holder nor the names of its
|
|
17
|
-
contributors may be used to endorse or promote products derived from
|
|
18
|
-
this software without specific prior written permission.
|
|
19
|
-
|
|
20
|
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
21
|
-
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
22
|
-
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
23
|
-
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
24
|
-
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
25
|
-
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
26
|
-
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
27
|
-
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
28
|
-
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
29
|
-
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
1
|
+
BSD 3-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023, DataLab Platform Developers.
|
|
4
|
+
All rights reserved.
|
|
5
|
+
|
|
6
|
+
Redistribution and use in source and binary forms, with or without
|
|
7
|
+
modification, are permitted provided that the following conditions are met:
|
|
8
|
+
|
|
9
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
10
|
+
list of conditions and the following disclaimer.
|
|
11
|
+
|
|
12
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
13
|
+
this list of conditions and the following disclaimer in the documentation
|
|
14
|
+
and/or other materials provided with the distribution.
|
|
15
|
+
|
|
16
|
+
3. Neither the name of the copyright holder nor the names of its
|
|
17
|
+
contributors may be used to endorse or promote products derived from
|
|
18
|
+
this software without specific prior written permission.
|
|
19
|
+
|
|
20
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
21
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
22
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
23
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
24
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
25
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
26
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
27
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
28
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
29
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
graft doc
|
|
2
|
-
include CHANGELOG.md
|
|
3
|
-
include CONTRIBUTING.md
|
|
1
|
+
graft doc
|
|
2
|
+
include CHANGELOG.md
|
|
3
|
+
include CONTRIBUTING.md
|
|
4
4
|
include requirements.txt
|
sigima-1.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: sigima
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Scientific computing engine for 1D signals and 2D images, part of the DataLab open-source platform.
|
|
5
|
+
Author-email: Pierre Raybaut <p.raybaut@codra.fr>
|
|
6
|
+
Maintainer-email: DataLab Platform Developers <p.raybaut@codra.fr>
|
|
7
|
+
License-Expression: BSD-3-Clause
|
|
8
|
+
Project-URL: Homepage, https://github.com/DataLab-Platform/Sigima
|
|
9
|
+
Project-URL: Documentation, https://sigima.readthedocs.io/en/latest/
|
|
10
|
+
Classifier: Development Status :: 4 - Beta
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: Intended Audience :: Education
|
|
13
|
+
Classifier: Intended Audience :: Science/Research
|
|
14
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
15
|
+
Classifier: Operating System :: MacOS :: MacOS X
|
|
16
|
+
Classifier: Operating System :: Microsoft :: Windows :: Windows 7
|
|
17
|
+
Classifier: Operating System :: Microsoft :: Windows :: Windows 8
|
|
18
|
+
Classifier: Operating System :: Microsoft :: Windows :: Windows 10
|
|
19
|
+
Classifier: Operating System :: Microsoft :: Windows :: Windows 11
|
|
20
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
26
|
+
Classifier: Topic :: Scientific/Engineering
|
|
27
|
+
Classifier: Topic :: Scientific/Engineering :: Image Processing
|
|
28
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
29
|
+
Requires-Python: <4,>=3.9
|
|
30
|
+
Description-Content-Type: text/markdown
|
|
31
|
+
License-File: LICENSE
|
|
32
|
+
Requires-Dist: guidata>=3.13
|
|
33
|
+
Requires-Dist: NumPy>=1.22
|
|
34
|
+
Requires-Dist: SciPy>=1.10.1
|
|
35
|
+
Requires-Dist: scikit-image>=0.19.2
|
|
36
|
+
Requires-Dist: pandas>=1.4
|
|
37
|
+
Requires-Dist: PyWavelets>=1.2
|
|
38
|
+
Requires-Dist: packaging>=21.3
|
|
39
|
+
Requires-Dist: typing-extensions>=4.0
|
|
40
|
+
Requires-Dist: makefun>=1.13.1
|
|
41
|
+
Provides-Extra: opencv
|
|
42
|
+
Requires-Dist: opencv-python-headless>=4.8.1.78; extra == "opencv"
|
|
43
|
+
Provides-Extra: dev
|
|
44
|
+
Requires-Dist: build; extra == "dev"
|
|
45
|
+
Requires-Dist: babel; extra == "dev"
|
|
46
|
+
Requires-Dist: ruff; extra == "dev"
|
|
47
|
+
Requires-Dist: pylint; extra == "dev"
|
|
48
|
+
Requires-Dist: Coverage; extra == "dev"
|
|
49
|
+
Requires-Dist: pre-commit; extra == "dev"
|
|
50
|
+
Provides-Extra: doc
|
|
51
|
+
Requires-Dist: sphinx; extra == "doc"
|
|
52
|
+
Requires-Dist: sphinx-gallery; extra == "doc"
|
|
53
|
+
Requires-Dist: sphinx_intl; extra == "doc"
|
|
54
|
+
Requires-Dist: myst_parser; extra == "doc"
|
|
55
|
+
Requires-Dist: sphinx_design; extra == "doc"
|
|
56
|
+
Requires-Dist: sphinx-copybutton; extra == "doc"
|
|
57
|
+
Requires-Dist: pydata-sphinx-theme; extra == "doc"
|
|
58
|
+
Requires-Dist: sphinx-gallery; extra == "doc"
|
|
59
|
+
Requires-Dist: qtpy; extra == "doc"
|
|
60
|
+
Requires-Dist: PyQt5; extra == "doc"
|
|
61
|
+
Requires-Dist: plotpy; extra == "doc"
|
|
62
|
+
Requires-Dist: opencv-python-headless>=4.8.1.78; extra == "doc"
|
|
63
|
+
Provides-Extra: test
|
|
64
|
+
Requires-Dist: pytest; extra == "test"
|
|
65
|
+
Requires-Dist: pytest-xvfb; extra == "test"
|
|
66
|
+
Provides-Extra: qt
|
|
67
|
+
Requires-Dist: qtpy; extra == "qt"
|
|
68
|
+
Requires-Dist: PyQt5; extra == "qt"
|
|
69
|
+
Requires-Dist: plotpy; extra == "qt"
|
|
70
|
+
Dynamic: license-file
|
|
71
|
+
|
|
72
|
+
# Sigima - Scientific Image and Signal Processing Library
|
|
73
|
+
|
|
74
|
+

|
|
75
|
+
|
|
76
|
+
[](./LICENSE)
|
|
77
|
+
[](https://pypi.org/project/sigima/)
|
|
78
|
+
[](https://github.com/DataLab-Platform/Sigima)
|
|
79
|
+
[](https://pypi.org/project/sigima/)
|
|
80
|
+
|
|
81
|
+
**Sigima** is an **open-source Python library for scientific image and signal processing**,
|
|
82
|
+
designed as a modular and testable foundation for building advanced analysis pipelines.
|
|
83
|
+
|
|
84
|
+
🔬 Developed by the [DataLab Platform Developers](https://github.com/DataLab-Platform), Sigima powers the computation backend of [DataLab](https://datalab-platform.com/).
|
|
85
|
+
|
|
86
|
+
## 🌟 Project & Sponsors
|
|
87
|
+
|
|
88
|
+
| Project/Sponsor | Description |
|
|
89
|
+
|---------------------|-------------|
|
|
90
|
+
| <a href="https://datalab-platform.com/"><img src="https://raw.githubusercontent.com/DataLab-Platform/DataLab/main/resources/DataLab-Banner.svg" alt="DataLab logo" style="height:80px;"/></a> | Open-source platform for scientific signal and image processing, powered by Sigima. |
|
|
91
|
+
| <a href="https://nlnet.nl/"><img src="https://nlnet.nl/logo/banner.svg" alt="NLnet logo" style="height:80px;width:209px;"/></a> | European non-profit supporting open-source and internet projects. Sigima has received funding from NLnet for its development, through the DataLab project. |
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## ✨ Highlights
|
|
96
|
+
|
|
97
|
+
- Unified processing model for **1D signals** and **2D images**
|
|
98
|
+
- Works with **object-oriented wrappers** (`SignalObj`, `ImageObj`) extending NumPy arrays
|
|
99
|
+
- Includes common processing tasks: filtering, smoothing, binning, thresholding, labeling, etc.
|
|
100
|
+
- Structured for **testability**, **modularity**, and **headless usage**
|
|
101
|
+
- 100% **independent of GUI frameworks** (no Qt/PlotPyStack dependencies)
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## 💡 Use cases
|
|
106
|
+
|
|
107
|
+
Sigima is meant to be:
|
|
108
|
+
|
|
109
|
+
- A **processing backend** for scientific/industrial tools
|
|
110
|
+
- A library to **build reproducible analysis pipelines**
|
|
111
|
+
- A component for **headless automation or remote execution**
|
|
112
|
+
- A testbed for **developing and validating new signal/image operations**
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## 📖 Design Philosophy
|
|
117
|
+
|
|
118
|
+
The main goal of **Sigima** is to provide a unified, high-level API for handling and processing **1D signals** and **2D images**, through dedicated Python objects: `SignalObj` and `ImageObj`.
|
|
119
|
+
|
|
120
|
+
The library is organized to separate concerns clearly:
|
|
121
|
+
|
|
122
|
+
- `sigima.objects`: defines the object model for signals and images.
|
|
123
|
+
- `sigima.params`: contains parameter classes for configuring processing functions.
|
|
124
|
+
- `sigima.proc`: provides high-level processing functions that operate directly on `SignalObj` and `ImageObj` instances.
|
|
125
|
+
- `sigima.io`: handles input/output operations (CSV files, image formats, etc.) for signals and images.
|
|
126
|
+
- `sigima.tools`: contains **low-level, NumPy-based functions** that implement the core logic behind many processing routines.
|
|
127
|
+
|
|
128
|
+
This structure supports a **layered programming model**:
|
|
129
|
+
|
|
130
|
+
- Developers can use `computation` to process full signal/image objects in an object-oriented manner.
|
|
131
|
+
- Or they can directly use `tools` to process raw NumPy arrays — for instance, in custom tools or when integrating Sigima into other projects.
|
|
132
|
+
|
|
133
|
+
> ⚠️ `sigima.tools` is not intended as a general-purpose NumPy extension. Its purpose is to **fill in the gaps** of common scientific libraries (NumPy, SciPy, scikit-image, etc.), offering consistent tools for signal/image processing in the context of Sigima and similar projects.
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Usage Outside Sigima
|
|
138
|
+
|
|
139
|
+
Although Sigima is designed primarily for object-based processing, some of its core functions are useful on their own.
|
|
140
|
+
|
|
141
|
+
For instance, the [DataLab](https://datalab-platform.com) project — an open-source platform for signal/image processing — uses many functions from `sigima.tools` independently of the object model. This demonstrates how `sigima.tools` can serve as a **lightweight utility layer** in scientific and industrial Python applications, even when the object model is not used directly.
|
|
142
|
+
|
|
143
|
+
To maintain this flexibility and avoid confusion, the distinction between `tools` (array-based) and `computation` (object-based) is intentional and explicit.
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## 📦 Installation
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
pip install sigima
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Or in a development environment:
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
git clone https://github.com/DataLab-Platform/Sigima.git
|
|
157
|
+
cd Sigima
|
|
158
|
+
pip install -e .
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## 📚 Documentation
|
|
164
|
+
|
|
165
|
+
📖 Full documentation (in progress) is available at:
|
|
166
|
+
👉 <https://sigima.readthedocs.io/>
|
|
167
|
+
|
|
168
|
+
> Want to use Sigima inside DataLab with GUI tools?
|
|
169
|
+
> Check out the full platform: [DataLab](https://datalab-platform.com/)
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## ⚙️ Architecture
|
|
174
|
+
|
|
175
|
+
Sigima is organized by data type:
|
|
176
|
+
|
|
177
|
+
```text
|
|
178
|
+
sigima/
|
|
179
|
+
├── tools/ # Low-level NumPy-based algorithms supporting some computation functions
|
|
180
|
+
├── proc/ # High-level processing functions operating on SignalObj/ImageObj
|
|
181
|
+
│ ├── base/ # Common processing functions
|
|
182
|
+
│ ├── signal/ # 1D signal processing
|
|
183
|
+
│ └── image/ # 2D image processing
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Each domain provides:
|
|
187
|
+
|
|
188
|
+
- Low-level functions operating on NumPy arrays
|
|
189
|
+
- High-level functions operating on `SignalObj` or `ImageObj`
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## 🧪 Testing
|
|
194
|
+
|
|
195
|
+
Sigima comes with unit tests based on `pytest`.
|
|
196
|
+
|
|
197
|
+
To run all tests:
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
pytest
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
To run GUI-assisted validation tests (optional):
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
pytest --gui
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## 🧠 License
|
|
212
|
+
|
|
213
|
+
Sigima is distributed under the terms of the BSD 3-Clause license.
|
|
214
|
+
See [LICENSE](./LICENSE) for details.
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## 🤝 Contributing
|
|
219
|
+
|
|
220
|
+
Bug reports, feature requests and pull requests are welcome!
|
|
221
|
+
See the [CONTRIBUTING](https://datalab-platform.com/en/contributing) guide to get started.
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+

|
|
226
|
+

|
|
227
|
+

|
|
228
|
+

|
|
229
|
+

|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
© DataLab Platform Developers
|