datalab-platform 0.0.1.dev0__py3-none-any.whl → 1.0.1__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.
- datalab/__init__.py +35 -2
- datalab/adapters_metadata/__init__.py +31 -0
- datalab/adapters_metadata/base_adapter.py +316 -0
- datalab/adapters_metadata/common.py +422 -0
- datalab/adapters_metadata/geometry_adapter.py +98 -0
- datalab/adapters_metadata/table_adapter.py +84 -0
- datalab/adapters_plotpy/__init__.py +54 -0
- datalab/adapters_plotpy/annotations.py +124 -0
- datalab/adapters_plotpy/base.py +110 -0
- datalab/adapters_plotpy/converters.py +86 -0
- datalab/adapters_plotpy/factories.py +80 -0
- datalab/adapters_plotpy/objects/__init__.py +0 -0
- datalab/adapters_plotpy/objects/base.py +197 -0
- datalab/adapters_plotpy/objects/image.py +157 -0
- datalab/adapters_plotpy/objects/scalar.py +565 -0
- datalab/adapters_plotpy/objects/signal.py +264 -0
- datalab/adapters_plotpy/roi/__init__.py +0 -0
- datalab/adapters_plotpy/roi/base.py +146 -0
- datalab/adapters_plotpy/roi/factory.py +93 -0
- datalab/adapters_plotpy/roi/image.py +207 -0
- datalab/adapters_plotpy/roi/signal.py +72 -0
- datalab/app.py +98 -0
- datalab/config.py +817 -0
- datalab/control/__init__.py +0 -0
- datalab/control/baseproxy.py +776 -0
- datalab/control/proxy.py +343 -0
- datalab/control/remote.py +1005 -0
- datalab/data/doc/DataLab_en.pdf +0 -0
- datalab/data/doc/DataLab_fr.pdf +0 -0
- datalab/data/icons/analysis/delete_results.svg +109 -0
- datalab/data/icons/analysis/fw1e2.svg +156 -0
- datalab/data/icons/analysis/fwhm.svg +156 -0
- datalab/data/icons/analysis/histogram.svg +49 -0
- datalab/data/icons/analysis/peak_detect.svg +160 -0
- datalab/data/icons/analysis/plot_results.svg +151 -0
- datalab/data/icons/analysis/show_results.svg +83 -0
- datalab/data/icons/analysis/stats.svg +49 -0
- datalab/data/icons/analysis.svg +120 -0
- datalab/data/icons/apply.svg +3 -0
- datalab/data/icons/check_all.svg +15 -0
- datalab/data/icons/collapse.svg +44 -0
- datalab/data/icons/collapse_selection.svg +63 -0
- datalab/data/icons/console.svg +101 -0
- datalab/data/icons/create/1d-normal.svg +8 -0
- datalab/data/icons/create/1d-poisson.svg +9 -0
- datalab/data/icons/create/1d-uniform.svg +8 -0
- datalab/data/icons/create/1d-zero.svg +57 -0
- datalab/data/icons/create/2d-gaussian.svg +56 -0
- datalab/data/icons/create/2d-normal.svg +38 -0
- datalab/data/icons/create/2d-poisson.svg +38 -0
- datalab/data/icons/create/2d-ramp.svg +90 -0
- datalab/data/icons/create/2d-sinc.svg +62 -0
- datalab/data/icons/create/2d-uniform.svg +38 -0
- datalab/data/icons/create/2d-zero.svg +13 -0
- datalab/data/icons/create/checkerboard.svg +39 -0
- datalab/data/icons/create/cosine.svg +12 -0
- datalab/data/icons/create/exponential.svg +55 -0
- datalab/data/icons/create/gaussian.svg +12 -0
- datalab/data/icons/create/grating.svg +29 -0
- datalab/data/icons/create/linear_chirp.svg +7 -0
- datalab/data/icons/create/logistic.svg +7 -0
- datalab/data/icons/create/lorentzian.svg +12 -0
- datalab/data/icons/create/planck.svg +12 -0
- datalab/data/icons/create/polynomial.svg +7 -0
- datalab/data/icons/create/pulse.svg +12 -0
- datalab/data/icons/create/ring.svg +18 -0
- datalab/data/icons/create/sawtooth.svg +7 -0
- datalab/data/icons/create/siemens.svg +35 -0
- datalab/data/icons/create/sinc.svg +12 -0
- datalab/data/icons/create/sine.svg +7 -0
- datalab/data/icons/create/square.svg +7 -0
- datalab/data/icons/create/square_pulse.svg +7 -0
- datalab/data/icons/create/step.svg +7 -0
- datalab/data/icons/create/step_pulse.svg +12 -0
- datalab/data/icons/create/triangle.svg +7 -0
- datalab/data/icons/create/voigt.svg +12 -0
- datalab/data/icons/edit/annotations.svg +72 -0
- datalab/data/icons/edit/annotations_copy.svg +114 -0
- datalab/data/icons/edit/annotations_delete.svg +83 -0
- datalab/data/icons/edit/annotations_edit.svg +98 -0
- datalab/data/icons/edit/annotations_export.svg +85 -0
- datalab/data/icons/edit/annotations_import.svg +85 -0
- datalab/data/icons/edit/annotations_paste.svg +100 -0
- datalab/data/icons/edit/copy_titles.svg +109 -0
- datalab/data/icons/edit/delete.svg +84 -0
- datalab/data/icons/edit/delete_all.svg +214 -0
- datalab/data/icons/edit/duplicate.svg +64 -0
- datalab/data/icons/edit/goto_source.svg +60 -0
- datalab/data/icons/edit/metadata.svg +60 -0
- datalab/data/icons/edit/metadata_add.svg +80 -0
- datalab/data/icons/edit/metadata_copy.svg +96 -0
- datalab/data/icons/edit/metadata_delete.svg +62 -0
- datalab/data/icons/edit/metadata_export.svg +68 -0
- datalab/data/icons/edit/metadata_import.svg +68 -0
- datalab/data/icons/edit/metadata_paste.svg +79 -0
- datalab/data/icons/edit/move_down.svg +55 -0
- datalab/data/icons/edit/move_up.svg +54 -0
- datalab/data/icons/edit/new_group.svg +76 -0
- datalab/data/icons/edit/recompute.svg +60 -0
- datalab/data/icons/edit/rename.svg +49 -0
- datalab/data/icons/edit.svg +16 -0
- datalab/data/icons/expand.svg +44 -0
- datalab/data/icons/expand_selection.svg +63 -0
- datalab/data/icons/fit/cdf_fit.svg +56 -0
- datalab/data/icons/fit/exponential_fit.svg +55 -0
- datalab/data/icons/fit/gaussian_fit.svg +62 -0
- datalab/data/icons/fit/interactive_fit.svg +101 -0
- datalab/data/icons/fit/linear_fit.svg +57 -0
- datalab/data/icons/fit/lorentzian_fit.svg +209 -0
- datalab/data/icons/fit/multigaussian_fit.svg +85 -0
- datalab/data/icons/fit/multilorentzian_fit.svg +85 -0
- datalab/data/icons/fit/piecewiseexponential_fit.svg +209 -0
- datalab/data/icons/fit/planckian_fit.svg +62 -0
- datalab/data/icons/fit/polynomial_fit.svg +59 -0
- datalab/data/icons/fit/sigmoid_fit.svg +56 -0
- datalab/data/icons/fit/sinusoidal_fit.svg +72 -0
- datalab/data/icons/fit/twohalfgaussian_fit.svg +63 -0
- datalab/data/icons/fit/voigt_fit.svg +57 -0
- datalab/data/icons/group.svg +56 -0
- datalab/data/icons/h5/h5array.svg +59 -0
- datalab/data/icons/h5/h5attrs.svg +75 -0
- datalab/data/icons/h5/h5browser.svg +133 -0
- datalab/data/icons/h5/h5file.svg +69 -0
- datalab/data/icons/h5/h5group.svg +49 -0
- datalab/data/icons/h5/h5scalar.svg +1 -0
- datalab/data/icons/help_pdf.svg +46 -0
- datalab/data/icons/history.svg +7 -0
- datalab/data/icons/image.svg +135 -0
- datalab/data/icons/io/fileopen_directory.svg +60 -0
- datalab/data/icons/io/fileopen_h5.svg +84 -0
- datalab/data/icons/io/fileopen_ima.svg +187 -0
- datalab/data/icons/io/fileopen_py.svg +123 -0
- datalab/data/icons/io/fileopen_sig.svg +138 -0
- datalab/data/icons/io/filesave_h5.svg +97 -0
- datalab/data/icons/io/filesave_ima.svg +200 -0
- datalab/data/icons/io/filesave_py.svg +136 -0
- datalab/data/icons/io/filesave_sig.svg +151 -0
- datalab/data/icons/io/import_text.svg +144 -0
- datalab/data/icons/io/save_to_directory.svg +134 -0
- datalab/data/icons/io.svg +84 -0
- datalab/data/icons/libre-camera-flash-off.svg +1 -0
- datalab/data/icons/libre-camera-flash-on.svg +1 -0
- datalab/data/icons/libre-gui-about.svg +1 -0
- datalab/data/icons/libre-gui-action-delete.svg +1 -0
- datalab/data/icons/libre-gui-add.svg +1 -0
- datalab/data/icons/libre-gui-arrow-down.svg +1 -0
- datalab/data/icons/libre-gui-arrow-left.svg +1 -0
- datalab/data/icons/libre-gui-arrow-right.svg +1 -0
- datalab/data/icons/libre-gui-arrow-up.svg +1 -0
- datalab/data/icons/libre-gui-close.svg +40 -0
- datalab/data/icons/libre-gui-cogs.svg +1 -0
- datalab/data/icons/libre-gui-globe.svg +1 -0
- datalab/data/icons/libre-gui-help.svg +1 -0
- datalab/data/icons/libre-gui-link.svg +1 -0
- datalab/data/icons/libre-gui-menu.svg +1 -0
- datalab/data/icons/libre-gui-pencil.svg +1 -0
- datalab/data/icons/libre-gui-plugin.svg +1 -0
- datalab/data/icons/libre-gui-questions.svg +1 -0
- datalab/data/icons/libre-gui-settings.svg +1 -0
- datalab/data/icons/libre-gui-unlink.svg +1 -0
- datalab/data/icons/libre-tech-ram.svg +1 -0
- datalab/data/icons/libre-toolbox.svg +1 -0
- datalab/data/icons/logs.svg +1 -0
- datalab/data/icons/markers.svg +74 -0
- datalab/data/icons/menu.svg +13 -0
- datalab/data/icons/new_ima.svg +148 -0
- datalab/data/icons/new_sig.svg +123 -0
- datalab/data/icons/operations/abs.svg +116 -0
- datalab/data/icons/operations/arithmetic.svg +123 -0
- datalab/data/icons/operations/average.svg +124 -0
- datalab/data/icons/operations/complex_from_magnitude_phase.svg +116 -0
- datalab/data/icons/operations/complex_from_real_imag.svg +124 -0
- datalab/data/icons/operations/constant.svg +116 -0
- datalab/data/icons/operations/constant_add.svg +109 -0
- datalab/data/icons/operations/constant_divide.svg +109 -0
- datalab/data/icons/operations/constant_multiply.svg +109 -0
- datalab/data/icons/operations/constant_subtract.svg +109 -0
- datalab/data/icons/operations/convert_dtype.svg +117 -0
- datalab/data/icons/operations/convolution.svg +46 -0
- datalab/data/icons/operations/deconvolution.svg +57 -0
- datalab/data/icons/operations/derivative.svg +127 -0
- datalab/data/icons/operations/difference.svg +52 -0
- datalab/data/icons/operations/division.svg +139 -0
- datalab/data/icons/operations/exp.svg +116 -0
- datalab/data/icons/operations/flip_horizontally.svg +69 -0
- datalab/data/icons/operations/flip_vertically.svg +74 -0
- datalab/data/icons/operations/im.svg +124 -0
- datalab/data/icons/operations/integral.svg +50 -0
- datalab/data/icons/operations/inverse.svg +143 -0
- datalab/data/icons/operations/log10.svg +109 -0
- datalab/data/icons/operations/phase.svg +116 -0
- datalab/data/icons/operations/power.svg +118 -0
- datalab/data/icons/operations/product.svg +124 -0
- datalab/data/icons/operations/profile.svg +379 -0
- datalab/data/icons/operations/profile_average.svg +399 -0
- datalab/data/icons/operations/profile_radial.svg +261 -0
- datalab/data/icons/operations/profile_segment.svg +262 -0
- datalab/data/icons/operations/quadratic_difference.svg +84 -0
- datalab/data/icons/operations/re.svg +124 -0
- datalab/data/icons/operations/rotate_left.svg +72 -0
- datalab/data/icons/operations/rotate_right.svg +72 -0
- datalab/data/icons/operations/signals_to_image.svg +314 -0
- datalab/data/icons/operations/sqrt.svg +110 -0
- datalab/data/icons/operations/std.svg +124 -0
- datalab/data/icons/operations/sum.svg +102 -0
- datalab/data/icons/play_demo.svg +9 -0
- datalab/data/icons/processing/axis_transform.svg +62 -0
- datalab/data/icons/processing/bandpass.svg +79 -0
- datalab/data/icons/processing/bandstop.svg +71 -0
- datalab/data/icons/processing/binning.svg +126 -0
- datalab/data/icons/processing/clip.svg +119 -0
- datalab/data/icons/processing/detrending.svg +173 -0
- datalab/data/icons/processing/distribute_on_grid.svg +769 -0
- datalab/data/icons/processing/edge_detection.svg +46 -0
- datalab/data/icons/processing/erase.svg +1 -0
- datalab/data/icons/processing/exposure.svg +143 -0
- datalab/data/icons/processing/fourier.svg +104 -0
- datalab/data/icons/processing/highpass.svg +59 -0
- datalab/data/icons/processing/interpolation.svg +71 -0
- datalab/data/icons/processing/level_adjustment.svg +70 -0
- datalab/data/icons/processing/lowpass.svg +60 -0
- datalab/data/icons/processing/morphology.svg +49 -0
- datalab/data/icons/processing/noise_addition.svg +114 -0
- datalab/data/icons/processing/noise_reduction.svg +38 -0
- datalab/data/icons/processing/normalize.svg +84 -0
- datalab/data/icons/processing/offset_correction.svg +131 -0
- datalab/data/icons/processing/resampling1d.svg +101 -0
- datalab/data/icons/processing/resampling2d.svg +240 -0
- datalab/data/icons/processing/reset_positions.svg +185 -0
- datalab/data/icons/processing/resize.svg +9 -0
- datalab/data/icons/processing/reverse_signal_x.svg +171 -0
- datalab/data/icons/processing/stability.svg +11 -0
- datalab/data/icons/processing/swap_x_y.svg +65 -0
- datalab/data/icons/processing/thresholding.svg +63 -0
- datalab/data/icons/processing/windowing.svg +45 -0
- datalab/data/icons/properties.svg +26 -0
- datalab/data/icons/reset.svg +9 -0
- datalab/data/icons/restore.svg +40 -0
- datalab/data/icons/roi/roi.svg +76 -0
- datalab/data/icons/roi/roi_coordinate.svg +78 -0
- datalab/data/icons/roi/roi_copy.svg +112 -0
- datalab/data/icons/roi/roi_delete.svg +81 -0
- datalab/data/icons/roi/roi_export.svg +87 -0
- datalab/data/icons/roi/roi_graphical.svg +78 -0
- datalab/data/icons/roi/roi_grid.svg +67 -0
- datalab/data/icons/roi/roi_ima.svg +188 -0
- datalab/data/icons/roi/roi_import.svg +87 -0
- datalab/data/icons/roi/roi_new.svg +81 -0
- datalab/data/icons/roi/roi_new_circle.svg +95 -0
- datalab/data/icons/roi/roi_new_polygon.svg +110 -0
- datalab/data/icons/roi/roi_new_rectangle.svg +70 -0
- datalab/data/icons/roi/roi_paste.svg +98 -0
- datalab/data/icons/roi/roi_sig.svg +124 -0
- datalab/data/icons/shapes.svg +134 -0
- datalab/data/icons/signal.svg +103 -0
- datalab/data/icons/table.svg +85 -0
- datalab/data/icons/table_unavailable.svg +102 -0
- datalab/data/icons/to_signal.svg +124 -0
- datalab/data/icons/tour/next.svg +44 -0
- datalab/data/icons/tour/previous.svg +44 -0
- datalab/data/icons/tour/rewind.svg +51 -0
- datalab/data/icons/tour/stop.svg +47 -0
- datalab/data/icons/tour/tour.svg +16 -0
- datalab/data/icons/uncheck_all.svg +78 -0
- datalab/data/icons/view/curve_antialiasing.svg +50 -0
- datalab/data/icons/view/new_window.svg +98 -0
- datalab/data/icons/view/refresh-auto.svg +57 -0
- datalab/data/icons/view/refresh-manual.svg +51 -0
- datalab/data/icons/view/reset_curve_styles.svg +96 -0
- datalab/data/icons/view/show_first.svg +55 -0
- datalab/data/icons/view/show_titles.svg +46 -0
- datalab/data/icons/visualization.svg +51 -0
- datalab/data/logo/DataLab-Banner-150.png +0 -0
- datalab/data/logo/DataLab-Banner-200.png +0 -0
- datalab/data/logo/DataLab-Banner2-100.png +0 -0
- datalab/data/logo/DataLab-Splash.png +0 -0
- datalab/data/logo/DataLab-watermark.png +0 -0
- datalab/data/logo/DataLab.svg +83 -0
- datalab/data/tests/reordering_test.h5 +0 -0
- datalab/data/tutorials/fabry_perot/fabry-perot1.jpg +0 -0
- datalab/data/tutorials/fabry_perot/fabry-perot2.jpg +0 -0
- datalab/data/tutorials/laser_beam/TEM00_z_13.jpg +0 -0
- datalab/data/tutorials/laser_beam/TEM00_z_18.jpg +0 -0
- datalab/data/tutorials/laser_beam/TEM00_z_23.jpg +0 -0
- datalab/data/tutorials/laser_beam/TEM00_z_30.jpg +0 -0
- datalab/data/tutorials/laser_beam/TEM00_z_35.jpg +0 -0
- datalab/data/tutorials/laser_beam/TEM00_z_40.jpg +0 -0
- datalab/data/tutorials/laser_beam/TEM00_z_45.jpg +0 -0
- datalab/data/tutorials/laser_beam/TEM00_z_50.jpg +0 -0
- datalab/data/tutorials/laser_beam/TEM00_z_55.jpg +0 -0
- datalab/data/tutorials/laser_beam/TEM00_z_60.jpg +0 -0
- datalab/data/tutorials/laser_beam/TEM00_z_65.jpg +0 -0
- datalab/data/tutorials/laser_beam/TEM00_z_70.jpg +0 -0
- datalab/data/tutorials/laser_beam/TEM00_z_75.jpg +0 -0
- datalab/data/tutorials/laser_beam/TEM00_z_80.jpg +0 -0
- datalab/env.py +542 -0
- datalab/gui/__init__.py +89 -0
- datalab/gui/actionhandler.py +1701 -0
- datalab/gui/docks.py +473 -0
- datalab/gui/h5io.py +150 -0
- datalab/gui/macroeditor.py +310 -0
- datalab/gui/main.py +2081 -0
- datalab/gui/newobject.py +217 -0
- datalab/gui/objectview.py +766 -0
- datalab/gui/panel/__init__.py +48 -0
- datalab/gui/panel/base.py +3254 -0
- datalab/gui/panel/image.py +157 -0
- datalab/gui/panel/macro.py +607 -0
- datalab/gui/panel/signal.py +164 -0
- datalab/gui/plothandler.py +800 -0
- datalab/gui/processor/__init__.py +84 -0
- datalab/gui/processor/base.py +2456 -0
- datalab/gui/processor/catcher.py +75 -0
- datalab/gui/processor/image.py +1214 -0
- datalab/gui/processor/signal.py +755 -0
- datalab/gui/profiledialog.py +333 -0
- datalab/gui/roieditor.py +633 -0
- datalab/gui/roigrideditor.py +208 -0
- datalab/gui/settings.py +612 -0
- datalab/gui/tour.py +908 -0
- datalab/h5/__init__.py +12 -0
- datalab/h5/common.py +314 -0
- datalab/h5/generic.py +580 -0
- datalab/h5/native.py +39 -0
- datalab/h5/utils.py +95 -0
- datalab/objectmodel.py +640 -0
- datalab/plugins/_readme_.txt +9 -0
- datalab/plugins/datalab_imageformats.py +175 -0
- datalab/plugins/datalab_testdata.py +190 -0
- datalab/plugins.py +355 -0
- datalab/tests/__init__.py +199 -0
- datalab/tests/backbone/__init__.py +1 -0
- datalab/tests/backbone/config_unit_test.py +170 -0
- datalab/tests/backbone/config_versioning_unit_test.py +34 -0
- datalab/tests/backbone/dictlistserial_app_test.py +38 -0
- datalab/tests/backbone/errorcatcher_unit_test.py +69 -0
- datalab/tests/backbone/errormsgbox_unit_test.py +50 -0
- datalab/tests/backbone/execenv_unit.py +262 -0
- datalab/tests/backbone/loadtest_gdi.py +147 -0
- datalab/tests/backbone/long_callback.py +96 -0
- datalab/tests/backbone/main_app_test.py +137 -0
- datalab/tests/backbone/memory_leak.py +43 -0
- datalab/tests/backbone/procisolation1_unit.py +128 -0
- datalab/tests/backbone/procisolation2_unit.py +171 -0
- datalab/tests/backbone/procisolation_unit_test.py +22 -0
- datalab/tests/backbone/profiling_app.py +27 -0
- datalab/tests/backbone/strings_unit_test.py +65 -0
- datalab/tests/backbone/title_formatting_unit_test.py +82 -0
- datalab/tests/conftest.py +131 -0
- datalab/tests/features/__init__.py +1 -0
- datalab/tests/features/applauncher/__init__.py +1 -0
- datalab/tests/features/applauncher/launcher1_app_test.py +28 -0
- datalab/tests/features/applauncher/launcher2_app_test.py +30 -0
- datalab/tests/features/common/__init__.py +1 -0
- datalab/tests/features/common/add_metadata_app_test.py +134 -0
- datalab/tests/features/common/add_metadata_unit_test.py +267 -0
- datalab/tests/features/common/annotations_management_unit_test.py +152 -0
- datalab/tests/features/common/auto_analysis_recompute_unit_test.py +240 -0
- datalab/tests/features/common/createobject_unit_test.py +50 -0
- datalab/tests/features/common/geometry_results_app_test.py +135 -0
- datalab/tests/features/common/interactive_processing_test.py +1109 -0
- datalab/tests/features/common/io_app_test.py +75 -0
- datalab/tests/features/common/large_results_app_test.py +187 -0
- datalab/tests/features/common/metadata_all_patterns_test.py +103 -0
- datalab/tests/features/common/metadata_app_test.py +139 -0
- datalab/tests/features/common/metadata_io_unit_test.py +60 -0
- datalab/tests/features/common/misc_app_test.py +236 -0
- datalab/tests/features/common/multiple_geometry_results_unit_test.py +122 -0
- datalab/tests/features/common/multiple_table_results_unit_test.py +64 -0
- datalab/tests/features/common/operation_modes_app_test.py +392 -0
- datalab/tests/features/common/plot_results_app_test.py +278 -0
- datalab/tests/features/common/reorder_app_test.py +75 -0
- datalab/tests/features/common/result_deletion_unit_test.py +96 -0
- datalab/tests/features/common/result_merged_label_unit_test.py +154 -0
- datalab/tests/features/common/result_shape_settings_unit_test.py +223 -0
- datalab/tests/features/common/roi_plotitem_unit_test.py +64 -0
- datalab/tests/features/common/roieditor_unit_test.py +102 -0
- datalab/tests/features/common/save_to_dir_app_test.py +163 -0
- datalab/tests/features/common/save_to_dir_unit_test.py +474 -0
- datalab/tests/features/common/stat_app_test.py +40 -0
- datalab/tests/features/common/stats_tools_unit_test.py +77 -0
- datalab/tests/features/common/table_results_app_test.py +52 -0
- datalab/tests/features/common/textimport_unit_test.py +131 -0
- datalab/tests/features/common/uuid_preservation_test.py +281 -0
- datalab/tests/features/common/worker_unit_test.py +402 -0
- datalab/tests/features/control/__init__.py +1 -0
- datalab/tests/features/control/connect_dialog.py +28 -0
- datalab/tests/features/control/embedded1_unit_test.py +304 -0
- datalab/tests/features/control/embedded2_unit_test.py +52 -0
- datalab/tests/features/control/remoteclient_app_test.py +219 -0
- datalab/tests/features/control/remoteclient_unit.py +75 -0
- datalab/tests/features/control/simpleclient_unit_test.py +321 -0
- datalab/tests/features/hdf5/__init__.py +1 -0
- datalab/tests/features/hdf5/h5browser1_unit_test.py +31 -0
- datalab/tests/features/hdf5/h5browser2_unit.py +55 -0
- datalab/tests/features/hdf5/h5browser_app_test.py +77 -0
- datalab/tests/features/hdf5/h5import_app_test.py +25 -0
- datalab/tests/features/hdf5/h5importer_app_test.py +34 -0
- datalab/tests/features/image/__init__.py +1 -0
- datalab/tests/features/image/annotations_app_test.py +28 -0
- datalab/tests/features/image/annotations_unit_test.py +80 -0
- datalab/tests/features/image/average_app_test.py +46 -0
- datalab/tests/features/image/background_dialog_test.py +70 -0
- datalab/tests/features/image/blobs_app_test.py +50 -0
- datalab/tests/features/image/contour_app_test.py +42 -0
- datalab/tests/features/image/contour_fabryperot_app_test.py +51 -0
- datalab/tests/features/image/denoise_app_test.py +31 -0
- datalab/tests/features/image/distribute_on_grid_app_test.py +95 -0
- datalab/tests/features/image/edges_app_test.py +31 -0
- datalab/tests/features/image/erase_app_test.py +21 -0
- datalab/tests/features/image/fft2d_app_test.py +27 -0
- datalab/tests/features/image/flatfield_app_test.py +40 -0
- datalab/tests/features/image/geometry_transform_unit_test.py +396 -0
- datalab/tests/features/image/imagetools_app_test.py +51 -0
- datalab/tests/features/image/imagetools_unit_test.py +27 -0
- datalab/tests/features/image/load_app_test.py +73 -0
- datalab/tests/features/image/morph_app_test.py +32 -0
- datalab/tests/features/image/offsetcorrection_app_test.py +30 -0
- datalab/tests/features/image/peak2d_app_test.py +53 -0
- datalab/tests/features/image/profile_app_test.py +73 -0
- datalab/tests/features/image/profile_dialog_test.py +56 -0
- datalab/tests/features/image/roi_app_test.py +98 -0
- datalab/tests/features/image/roi_circ_app_test.py +62 -0
- datalab/tests/features/image/roi_manipulation_app_test.py +268 -0
- datalab/tests/features/image/roigrid_unit_test.py +60 -0
- datalab/tests/features/image/side_by_side_app_test.py +52 -0
- datalab/tests/features/macro/__init__.py +1 -0
- datalab/tests/features/macro/macro_app_test.py +28 -0
- datalab/tests/features/macro/macroeditor_unit_test.py +102 -0
- datalab/tests/features/signal/__init__.py +1 -0
- datalab/tests/features/signal/baseline_dialog_test.py +53 -0
- datalab/tests/features/signal/deltax_dialog_unit_test.py +34 -0
- datalab/tests/features/signal/fft1d_app_test.py +26 -0
- datalab/tests/features/signal/filter_app_test.py +44 -0
- datalab/tests/features/signal/fitdialog_unit_test.py +50 -0
- datalab/tests/features/signal/interpolation_app_test.py +110 -0
- datalab/tests/features/signal/loadbigsignal_app_test.py +80 -0
- datalab/tests/features/signal/multiple_rois_unit_test.py +132 -0
- datalab/tests/features/signal/pulse_features_app_test.py +118 -0
- datalab/tests/features/signal/pulse_features_roi_app_test.py +55 -0
- datalab/tests/features/signal/roi_app_test.py +78 -0
- datalab/tests/features/signal/roi_manipulation_app_test.py +261 -0
- datalab/tests/features/signal/select_xy_cursor_unit_test.py +46 -0
- datalab/tests/features/signal/signalpeakdetection_dialog_test.py +33 -0
- datalab/tests/features/signal/signals_to_image_app_test.py +98 -0
- datalab/tests/features/signal/xarray_compat_app_test.py +128 -0
- datalab/tests/features/tour_unit_test.py +22 -0
- datalab/tests/features/utilities/__init__.py +1 -0
- datalab/tests/features/utilities/installconf_unit_test.py +21 -0
- datalab/tests/features/utilities/logview_app_test.py +21 -0
- datalab/tests/features/utilities/logview_error.py +24 -0
- datalab/tests/features/utilities/logview_unit_test.py +21 -0
- datalab/tests/features/utilities/memstatus_app_test.py +42 -0
- datalab/tests/features/utilities/settings_unit_test.py +88 -0
- datalab/tests/scenarios/__init__.py +1 -0
- datalab/tests/scenarios/beautiful_app.py +121 -0
- datalab/tests/scenarios/common.py +463 -0
- datalab/tests/scenarios/demo.py +212 -0
- datalab/tests/scenarios/example_app_test.py +47 -0
- datalab/tests/scenarios/scenario_h5_app_test.py +75 -0
- datalab/tests/scenarios/scenario_ima1_app_test.py +34 -0
- datalab/tests/scenarios/scenario_ima2_app_test.py +34 -0
- datalab/tests/scenarios/scenario_mac_app_test.py +58 -0
- datalab/tests/scenarios/scenario_sig1_app_test.py +36 -0
- datalab/tests/scenarios/scenario_sig2_app_test.py +35 -0
- datalab/utils/__init__.py +1 -0
- datalab/utils/conf.py +304 -0
- datalab/utils/dephash.py +105 -0
- datalab/utils/qthelpers.py +633 -0
- datalab/utils/strings.py +34 -0
- datalab/utils/tests.py +0 -0
- datalab/widgets/__init__.py +1 -0
- datalab/widgets/connection.py +138 -0
- datalab/widgets/filedialog.py +91 -0
- datalab/widgets/fileviewer.py +84 -0
- datalab/widgets/fitdialog.py +788 -0
- datalab/widgets/h5browser.py +1048 -0
- datalab/widgets/imagebackground.py +111 -0
- datalab/widgets/instconfviewer.py +175 -0
- datalab/widgets/logviewer.py +80 -0
- datalab/widgets/signalbaseline.py +90 -0
- datalab/widgets/signalcursor.py +208 -0
- datalab/widgets/signaldeltax.py +151 -0
- datalab/widgets/signalpeak.py +199 -0
- datalab/widgets/status.py +249 -0
- datalab/widgets/textimport.py +786 -0
- datalab/widgets/warningerror.py +223 -0
- datalab/widgets/wizard.py +286 -0
- datalab_platform-1.0.1.dist-info/METADATA +121 -0
- datalab_platform-1.0.1.dist-info/RECORD +494 -0
- datalab_platform-0.0.1.dev0.dist-info/METADATA +0 -67
- datalab_platform-0.0.1.dev0.dist-info/RECORD +0 -7
- {datalab_platform-0.0.1.dev0.dist-info → datalab_platform-1.0.1.dist-info}/WHEEL +0 -0
- {datalab_platform-0.0.1.dev0.dist-info → datalab_platform-1.0.1.dist-info}/entry_points.txt +0 -0
- {datalab_platform-0.0.1.dev0.dist-info → datalab_platform-1.0.1.dist-info}/licenses/LICENSE +0 -0
- {datalab_platform-0.0.1.dev0.dist-info → datalab_platform-1.0.1.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Average application test
|
|
5
|
+
========================
|
|
6
|
+
|
|
7
|
+
The purpose of this test is to check that we can average a set of images without
|
|
8
|
+
overflowing the data type.
|
|
9
|
+
|
|
10
|
+
This test was written following a regression where the average of 10 images of
|
|
11
|
+
size 256x256 with a Gaussian distribution of values was overflowing the data type
|
|
12
|
+
uint8.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
# pylint: disable=invalid-name # Allows short reference names like x, y, ...
|
|
16
|
+
# pylint: disable=duplicate-code
|
|
17
|
+
# guitest: show
|
|
18
|
+
|
|
19
|
+
import numpy as np
|
|
20
|
+
import sigima.objects
|
|
21
|
+
import sigima.tests.data as ctd
|
|
22
|
+
|
|
23
|
+
from datalab.tests import datalab_test_app_context, helpers
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def test_image_average() -> None:
|
|
27
|
+
"""Average application test."""
|
|
28
|
+
with datalab_test_app_context() as win:
|
|
29
|
+
panel = win.imagepanel
|
|
30
|
+
N, size = 10, 256
|
|
31
|
+
dtype = sigima.objects.ImageDatatypes.UINT8
|
|
32
|
+
p = sigima.objects.NewImageParam.create(height=size, width=size, dtype=dtype)
|
|
33
|
+
data = ctd.create_2d_gaussian(size, dtype.to_numpy_dtype())
|
|
34
|
+
for _idx in range(N):
|
|
35
|
+
obj = sigima.objects.create_image_from_param(p)
|
|
36
|
+
obj.data = data
|
|
37
|
+
panel.add_object(obj)
|
|
38
|
+
panel.objview.select_groups([0])
|
|
39
|
+
panel.processor.run_feature("average")
|
|
40
|
+
res_data = panel.objview.get_sel_objects(include_groups=True)[0].data
|
|
41
|
+
exp_data = np.array(data, dtype=float)
|
|
42
|
+
helpers.check_array_result("Average", res_data, exp_data)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
if __name__ == "__main__":
|
|
46
|
+
test_image_average()
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Image background dialog unit test.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
# pylint: disable=invalid-name # Allows short reference names like x, y, ...
|
|
8
|
+
# pylint: disable=duplicate-code
|
|
9
|
+
# guitest: show
|
|
10
|
+
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
import numpy as np
|
|
14
|
+
import sigima.objects
|
|
15
|
+
import sigima.params
|
|
16
|
+
import sigima.proc.image as sipi
|
|
17
|
+
from guidata.qthelpers import exec_dialog, qt_app_context
|
|
18
|
+
from sigima.tests import vistools
|
|
19
|
+
from sigima.tests.data import create_noisy_gaussian_image
|
|
20
|
+
|
|
21
|
+
from datalab.env import execenv
|
|
22
|
+
from datalab.widgets.imagebackground import ImageBackgroundDialog
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def test_image_background_selection() -> None:
|
|
26
|
+
"""Image background selection test."""
|
|
27
|
+
with qt_app_context():
|
|
28
|
+
img = create_noisy_gaussian_image()
|
|
29
|
+
# Switch to non-uniform coordinates to test the background dialog handling:
|
|
30
|
+
xcoords = np.linspace(0, 10, img.data.shape[1])
|
|
31
|
+
img.set_coords(xcoords, 0.02 * xcoords**3)
|
|
32
|
+
dlg = ImageBackgroundDialog(img)
|
|
33
|
+
dlg.resize(640, 480)
|
|
34
|
+
dlg.setObjectName(dlg.objectName() + "_00") # to avoid timestamp suffix
|
|
35
|
+
exec_dialog(dlg)
|
|
36
|
+
if execenv.unattended:
|
|
37
|
+
dlg.test_compute_background()
|
|
38
|
+
execenv.print(f"background: {dlg.get_background()}")
|
|
39
|
+
execenv.print(f"rect coords: {dlg.get_rect_coords()}")
|
|
40
|
+
# Check background value:
|
|
41
|
+
x0, y0, x1, y1 = dlg.get_rect_coords()
|
|
42
|
+
ix0, iy0, ix1, iy1 = dlg.imageitem.get_closest_index_rect(x0, y0, x1, y1)
|
|
43
|
+
assert np.isclose(img.data[iy0:iy1, ix0:ix1].mean(), dlg.get_background())
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def test_image_offset_correction_with_background_dialog() -> None:
|
|
47
|
+
"""Image offset correction interactive test using the background dialog."""
|
|
48
|
+
with qt_app_context():
|
|
49
|
+
i1 = create_noisy_gaussian_image()
|
|
50
|
+
dlg = ImageBackgroundDialog(i1)
|
|
51
|
+
ok = exec_dialog(dlg)
|
|
52
|
+
if ok:
|
|
53
|
+
if execenv.unattended:
|
|
54
|
+
dlg.test_compute_background()
|
|
55
|
+
param = sigima.objects.ROI2DParam()
|
|
56
|
+
# pylint: disable=unbalanced-tuple-unpacking
|
|
57
|
+
ix0, iy0, ix1, iy1 = i1.physical_to_indices(dlg.get_rect_coords())
|
|
58
|
+
param.x0, param.y0, param.dx, param.dy = ix0, iy0, ix1 - ix0, iy1 - iy0
|
|
59
|
+
i2 = sipi.offset_correction(i1, param)
|
|
60
|
+
i3 = sipi.clip(i2, sigima.params.ClipParam.create(lower=0))
|
|
61
|
+
vistools.view_images_side_by_side(
|
|
62
|
+
[i1, i3],
|
|
63
|
+
titles=["Original image", "Corrected image"],
|
|
64
|
+
title="Image offset correction and thresholding",
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
if __name__ == "__main__":
|
|
69
|
+
test_image_background_selection()
|
|
70
|
+
test_image_offset_correction_with_background_dialog()
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Blob detection application test
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
# pylint: disable=invalid-name # Allows short reference names like x, y, ...
|
|
8
|
+
# guitest: show
|
|
9
|
+
|
|
10
|
+
import sigima.params
|
|
11
|
+
from sigima.objects import create_image
|
|
12
|
+
from sigima.tests.data import get_test_image
|
|
13
|
+
|
|
14
|
+
from datalab.adapters_plotpy import create_adapter_from_object
|
|
15
|
+
from datalab.tests import datalab_test_app_context, skip_if_opencv_missing
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def test_blobs():
|
|
19
|
+
"""Run blob detection application test scenario"""
|
|
20
|
+
with datalab_test_app_context() as win:
|
|
21
|
+
panel = win.imagepanel
|
|
22
|
+
proc = panel.processor
|
|
23
|
+
data = get_test_image("flower.npy").data
|
|
24
|
+
|
|
25
|
+
# Testing blob detection
|
|
26
|
+
# ======================
|
|
27
|
+
for paramclass, compute_method, name in (
|
|
28
|
+
(sigima.params.BlobDOGParam, "blob_dog", "BlobDOG"),
|
|
29
|
+
(sigima.params.BlobDOHParam, "blob_doh", "BlobDOH"),
|
|
30
|
+
(sigima.params.BlobLOGParam, "blob_log", "BlobLOG"),
|
|
31
|
+
(sigima.params.BlobOpenCVParam, "blob_opencv", "BlobOpenCV"),
|
|
32
|
+
):
|
|
33
|
+
param = paramclass()
|
|
34
|
+
param.min_sigma = 10.0
|
|
35
|
+
param.max_sigma = 30.0
|
|
36
|
+
image = create_image(name, data)
|
|
37
|
+
create_adapter_from_object(image).add_label_with_title()
|
|
38
|
+
panel.add_object(image)
|
|
39
|
+
with skip_if_opencv_missing():
|
|
40
|
+
proc.run_feature(compute_method, param)
|
|
41
|
+
|
|
42
|
+
# Testing distribute_on_grid and reset_positions
|
|
43
|
+
# ==============================================
|
|
44
|
+
panel.objview.selectAll()
|
|
45
|
+
param = sigima.params.GridParam.create(cols=2, colspac=10, rowspac=10)
|
|
46
|
+
proc.distribute_on_grid(param)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
if __name__ == "__main__":
|
|
50
|
+
test_blobs()
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Contour finding application test
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
# pylint: disable=invalid-name # Allows short reference names like x, y, ...
|
|
8
|
+
# guitest: show
|
|
9
|
+
|
|
10
|
+
import sigima.enums
|
|
11
|
+
import sigima.params
|
|
12
|
+
from sigima.objects import NewImageParam
|
|
13
|
+
from sigima.tests.data import create_multigaussian_image
|
|
14
|
+
|
|
15
|
+
from datalab.env import execenv
|
|
16
|
+
from datalab.tests import datalab_test_app_context, take_plotwidget_screenshot
|
|
17
|
+
from datalab.tests.features.image.roi_app_test import create_test_image_with_roi
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def test_contour_app():
|
|
21
|
+
"""Run contour finding application test scenario"""
|
|
22
|
+
newparam = NewImageParam.create(height=200, width=200)
|
|
23
|
+
with datalab_test_app_context() as win:
|
|
24
|
+
panel = win.imagepanel
|
|
25
|
+
for shape in sigima.enums.ContourShape:
|
|
26
|
+
ima1 = create_multigaussian_image(newparam)
|
|
27
|
+
ima1.set_metadata_option("colormap", "gray")
|
|
28
|
+
panel.add_object(ima1)
|
|
29
|
+
param = sigima.params.ContourShapeParam.create(shape=shape)
|
|
30
|
+
panel.processor.run_feature("contour_shape", param)
|
|
31
|
+
take_plotwidget_screenshot(panel, "contour_test")
|
|
32
|
+
ima2 = create_test_image_with_roi(newparam)
|
|
33
|
+
ima2.set_metadata_option("colormap", "gray")
|
|
34
|
+
panel.add_object(ima2)
|
|
35
|
+
panel.processor.edit_roi_graphically()
|
|
36
|
+
panel.processor.run_feature("contour_shape", param)
|
|
37
|
+
if not execenv.unattended:
|
|
38
|
+
break
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
if __name__ == "__main__":
|
|
42
|
+
test_contour_app()
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Contour finding application test with Fabry-Perot images
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
# pylint: disable=invalid-name # Allows short reference names like x, y, ...
|
|
8
|
+
# guitest: show
|
|
9
|
+
|
|
10
|
+
import sigima.enums
|
|
11
|
+
import sigima.objects
|
|
12
|
+
import sigima.params
|
|
13
|
+
from sigima.tests.data import get_test_image
|
|
14
|
+
|
|
15
|
+
from datalab.tests import datalab_test_app_context, take_plotwidget_screenshot
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def test_contour_app() -> None:
|
|
19
|
+
"""Run contour finding application test scenario"""
|
|
20
|
+
with datalab_test_app_context() as win:
|
|
21
|
+
panel = win.imagepanel
|
|
22
|
+
|
|
23
|
+
shape = sigima.enums.ContourShape.CIRCLE
|
|
24
|
+
|
|
25
|
+
ima1 = get_test_image("fabry-perot1.jpg")
|
|
26
|
+
ima1.set_metadata_option("colormap", "gray")
|
|
27
|
+
xc, yc, r = 601.0, 556.0, 457.0
|
|
28
|
+
roi = sigima.objects.create_image_roi("circle", [xc, yc, r])
|
|
29
|
+
ima1.roi = roi
|
|
30
|
+
panel.add_object(ima1)
|
|
31
|
+
param = sigima.params.ContourShapeParam.create(shape=shape)
|
|
32
|
+
panel.processor.run_feature("contour_shape", param)
|
|
33
|
+
take_plotwidget_screenshot(panel, "contour_fabryperot_test")
|
|
34
|
+
|
|
35
|
+
ima2 = get_test_image("fabry-perot2.jpg")
|
|
36
|
+
ima2.set_metadata_option("colormap", "gray")
|
|
37
|
+
ima2.roi = roi
|
|
38
|
+
panel.add_object(ima2)
|
|
39
|
+
panel.processor.run_feature("contour_shape", param)
|
|
40
|
+
|
|
41
|
+
param = sigima.params.LineProfileParam.create(direction="horizontal", row=554)
|
|
42
|
+
panel.processor.run_feature("line_profile", param)
|
|
43
|
+
|
|
44
|
+
param = sigima.params.AverageProfileParam.create(
|
|
45
|
+
direction="horizontal", row1=550, row2=560
|
|
46
|
+
)
|
|
47
|
+
panel.processor.run_feature("average_profile", param)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
if __name__ == "__main__":
|
|
51
|
+
test_contour_app()
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Denoise processing application test
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
# pylint: disable=invalid-name # Allows short reference names like x, y, ...
|
|
8
|
+
# guitest: show
|
|
9
|
+
|
|
10
|
+
import sigima.params
|
|
11
|
+
from sigima.tests.data import get_test_image
|
|
12
|
+
|
|
13
|
+
from datalab.tests import datalab_test_app_context
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def test_denoise():
|
|
17
|
+
"""Run denoise application test scenario"""
|
|
18
|
+
with datalab_test_app_context() as win:
|
|
19
|
+
win.showMaximized()
|
|
20
|
+
panel = win.imagepanel
|
|
21
|
+
panel.add_object(get_test_image("flower.npy"))
|
|
22
|
+
proc = panel.processor
|
|
23
|
+
proc.compute_all_denoise()
|
|
24
|
+
panel.objview.select_groups()
|
|
25
|
+
param = sigima.params.GridParam.create(cols=3)
|
|
26
|
+
proc.distribute_on_grid(param)
|
|
27
|
+
panel.add_label_with_title()
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
if __name__ == "__main__":
|
|
31
|
+
test_denoise()
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Distribute on grid application test
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
# pylint: disable=invalid-name # Allows short reference names like x, y, ...
|
|
8
|
+
# guitest: show
|
|
9
|
+
|
|
10
|
+
import numpy as np
|
|
11
|
+
import sigima.params
|
|
12
|
+
from sigima.tests.data import get_test_image
|
|
13
|
+
|
|
14
|
+
from datalab.env import execenv
|
|
15
|
+
from datalab.tests import datalab_test_app_context
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def get_image_origin(obj):
|
|
19
|
+
"""Get image origin (x0, y0) handling both uniform and non-uniform coordinates.
|
|
20
|
+
|
|
21
|
+
Args:
|
|
22
|
+
obj: Image object
|
|
23
|
+
|
|
24
|
+
Returns:
|
|
25
|
+
Tuple (x0, y0)
|
|
26
|
+
"""
|
|
27
|
+
if obj.is_uniform_coords:
|
|
28
|
+
return obj.x0, obj.y0
|
|
29
|
+
return obj.xcoords[0], obj.ycoords[0]
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def test_distribute_on_grid():
|
|
33
|
+
"""Run distribute on grid application test scenario"""
|
|
34
|
+
with execenv.context(unattended=True):
|
|
35
|
+
with datalab_test_app_context(console=False) as win:
|
|
36
|
+
panel = win.imagepanel
|
|
37
|
+
proc = panel.processor
|
|
38
|
+
panel.add_object(get_test_image("flower.npy"))
|
|
39
|
+
proc.compute_all_morphology(sigima.params.MorphologyParam.create(radius=10))
|
|
40
|
+
panel.objview.select_groups()
|
|
41
|
+
|
|
42
|
+
# Distribute on grid
|
|
43
|
+
params = [
|
|
44
|
+
sigima.params.GridParam.create(cols=4),
|
|
45
|
+
sigima.params.GridParam.create(
|
|
46
|
+
rows=3, colspac=20, rowspac=20, direction="row"
|
|
47
|
+
),
|
|
48
|
+
sigima.params.GridParam.create(cols=2, colspac=10, rowspac=10),
|
|
49
|
+
]
|
|
50
|
+
origins = []
|
|
51
|
+
for param in params:
|
|
52
|
+
proc.distribute_on_grid(param)
|
|
53
|
+
objs = panel.objview.get_sel_objects(include_groups=True)
|
|
54
|
+
origins.append([get_image_origin(obj) for obj in objs])
|
|
55
|
+
|
|
56
|
+
# Reset positions
|
|
57
|
+
proc.reset_positions()
|
|
58
|
+
objs = panel.objview.get_sel_objects(include_groups=True)
|
|
59
|
+
origins.append([get_image_origin(obj) for obj in objs])
|
|
60
|
+
|
|
61
|
+
# Verify results with tolerance for floating point comparisons
|
|
62
|
+
tol = 1e-10
|
|
63
|
+
|
|
64
|
+
# First distribution (cols=4)
|
|
65
|
+
assert np.allclose(origins[0][0], (0.0, 0.0), atol=tol)
|
|
66
|
+
assert np.allclose(origins[0][1], (512.0, 0.0), atol=tol)
|
|
67
|
+
assert np.allclose(origins[0][2], (1024.0, 0.0), atol=tol)
|
|
68
|
+
assert np.allclose(origins[0][3], (1536.0, 0.0), atol=tol)
|
|
69
|
+
assert np.allclose(origins[0][4], (0.0, 512.0), atol=tol)
|
|
70
|
+
assert np.allclose(origins[0][5], (512.0, 512.0), atol=tol)
|
|
71
|
+
assert np.allclose(origins[0][6], (1024.0, 512.0), atol=tol)
|
|
72
|
+
|
|
73
|
+
# Second distribution (rows=3, colspac=20, rowspac=20, direction="row")
|
|
74
|
+
assert np.allclose(origins[1][0], (0.0, 0.0), atol=tol)
|
|
75
|
+
assert np.allclose(origins[1][1], (0.0, 532.0), atol=tol)
|
|
76
|
+
assert np.allclose(origins[1][2], (0.0, 1064.0), atol=tol)
|
|
77
|
+
assert np.allclose(origins[1][3], (532.0, 0.0), atol=tol)
|
|
78
|
+
assert np.allclose(origins[1][4], (532.0, 532.0), atol=tol)
|
|
79
|
+
assert np.allclose(origins[1][5], (532.0, 1064.0), atol=tol)
|
|
80
|
+
|
|
81
|
+
# Third distribution (cols=2, colspac=10, rowspac=10)
|
|
82
|
+
assert np.allclose(origins[2][0], (0.0, 0.0), atol=tol)
|
|
83
|
+
assert np.allclose(origins[2][1], (522.0, 0.0), atol=tol)
|
|
84
|
+
assert np.allclose(origins[2][2], (0.0, 522.0), atol=tol)
|
|
85
|
+
assert np.allclose(origins[2][3], (522.0, 522.0), atol=tol)
|
|
86
|
+
assert np.allclose(origins[2][4], (0.0, 1044.0), atol=tol)
|
|
87
|
+
assert np.allclose(origins[2][5], (522.0, 1044.0), atol=tol)
|
|
88
|
+
|
|
89
|
+
# After reset, all should be at origin
|
|
90
|
+
for x0, y0 in origins[3]:
|
|
91
|
+
assert np.allclose([x0, y0], [0.0, 0.0], atol=tol)
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
if __name__ == "__main__":
|
|
95
|
+
test_distribute_on_grid()
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Edges processing application test
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
# pylint: disable=invalid-name # Allows short reference names like x, y, ...
|
|
8
|
+
# guitest: show
|
|
9
|
+
|
|
10
|
+
import sigima.params
|
|
11
|
+
from sigima.tests.data import get_test_image
|
|
12
|
+
|
|
13
|
+
from datalab.tests import datalab_test_app_context
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def test_edges():
|
|
17
|
+
"""Run edges processing application test scenario"""
|
|
18
|
+
with datalab_test_app_context() as win:
|
|
19
|
+
win.showMaximized()
|
|
20
|
+
panel = win.imagepanel
|
|
21
|
+
panel.add_object(get_test_image("flower.npy"))
|
|
22
|
+
proc = panel.processor
|
|
23
|
+
proc.compute_all_edges()
|
|
24
|
+
panel.objview.select_groups()
|
|
25
|
+
param = sigima.params.GridParam.create(cols=4)
|
|
26
|
+
proc.distribute_on_grid(param)
|
|
27
|
+
panel.add_label_with_title()
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
if __name__ == "__main__":
|
|
31
|
+
test_edges()
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
|
|
2
|
+
|
|
3
|
+
"""Image erase application test"""
|
|
4
|
+
|
|
5
|
+
# pylint: disable=invalid-name # Allows short reference names like x, y, ...
|
|
6
|
+
# guitest: show
|
|
7
|
+
|
|
8
|
+
from sigima.tests.data import get_test_image
|
|
9
|
+
|
|
10
|
+
from datalab.tests import datalab_test_app_context
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def test_erase():
|
|
14
|
+
"""Run erase application test scenario"""
|
|
15
|
+
with datalab_test_app_context() as win:
|
|
16
|
+
win.imagepanel.add_object(get_test_image("flower.npy"))
|
|
17
|
+
win.imagepanel.processor.compute_erase()
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
if __name__ == "__main__":
|
|
21
|
+
test_erase()
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Image FFT application test.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
# pylint: disable=invalid-name # Allows short reference names like x, y, ...
|
|
8
|
+
# guitest: show
|
|
9
|
+
|
|
10
|
+
import sigima.objects
|
|
11
|
+
|
|
12
|
+
from datalab.tests import datalab_test_app_context
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def test_fft2d_app() -> None:
|
|
16
|
+
"""FFT application test."""
|
|
17
|
+
with datalab_test_app_context() as win:
|
|
18
|
+
panel = win.imagepanel
|
|
19
|
+
param = sigima.objects.Gauss2DParam.create(width=100, height=100)
|
|
20
|
+
i1 = sigima.objects.create_image_from_param(param)
|
|
21
|
+
panel.add_object(i1)
|
|
22
|
+
panel.processor.run_feature("fft")
|
|
23
|
+
panel.processor.run_feature("ifft")
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
if __name__ == "__main__":
|
|
27
|
+
test_fft2d_app()
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Flat field test
|
|
5
|
+
|
|
6
|
+
Testing the following:
|
|
7
|
+
- Create a gaussian image (raw data)
|
|
8
|
+
- Create a random noised image (flat data)
|
|
9
|
+
- Compute the flat field image
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
# guitest: show
|
|
13
|
+
|
|
14
|
+
from sigima.objects import Gauss2DParam, UniformDistribution2DParam
|
|
15
|
+
from sigima.proc.image import FlatFieldParam
|
|
16
|
+
|
|
17
|
+
from datalab.config import _
|
|
18
|
+
from datalab.tests import datalab_test_app_context
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def test_flatfield():
|
|
22
|
+
"""Run flat field test scenario"""
|
|
23
|
+
with datalab_test_app_context() as win:
|
|
24
|
+
panel = win.imagepanel
|
|
25
|
+
|
|
26
|
+
param0 = Gauss2DParam.create(title=_("Raw data (2D-Gaussian)"))
|
|
27
|
+
ima0 = panel.new_object(param0, edit=False)
|
|
28
|
+
param1 = UniformDistribution2DParam.create(
|
|
29
|
+
title=_("Flat data (Uniform random)"), vmax=5
|
|
30
|
+
)
|
|
31
|
+
ima1 = panel.new_object(param1, edit=False)
|
|
32
|
+
|
|
33
|
+
panel.objview.select_objects([ima0])
|
|
34
|
+
ffp = FlatFieldParam()
|
|
35
|
+
ffp.threshold = 80
|
|
36
|
+
panel.processor.run_feature("flatfield", ima1, ffp)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
if __name__ == "__main__":
|
|
40
|
+
test_flatfield()
|