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
datalab/control/proxy.py
ADDED
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
# Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Proxy objects (:mod:`datalab.control.proxy`)
|
|
5
|
+
--------------------------------------------
|
|
6
|
+
|
|
7
|
+
The :mod:`datalab.control.proxy` module provides a way to access DataLab features from
|
|
8
|
+
a proxy class.
|
|
9
|
+
|
|
10
|
+
Remote proxy
|
|
11
|
+
^^^^^^^^^^^^
|
|
12
|
+
|
|
13
|
+
The remote proxy is used when DataLab is started from a different process than the
|
|
14
|
+
proxy. In this case, the proxy connects to DataLab XML-RPC server.
|
|
15
|
+
|
|
16
|
+
.. autoclass:: RemoteProxy
|
|
17
|
+
:members:
|
|
18
|
+
:inherited-members:
|
|
19
|
+
|
|
20
|
+
Local proxy
|
|
21
|
+
^^^^^^^^^^^
|
|
22
|
+
|
|
23
|
+
The local proxy is used when DataLab is started from the same process as the proxy.
|
|
24
|
+
In this case, the proxy is directly connected to DataLab main window instance. The
|
|
25
|
+
typical use case is high-level scripting.
|
|
26
|
+
|
|
27
|
+
.. autoclass:: LocalProxy
|
|
28
|
+
:members:
|
|
29
|
+
:inherited-members:
|
|
30
|
+
|
|
31
|
+
Proxy context manager
|
|
32
|
+
^^^^^^^^^^^^^^^^^^^^^
|
|
33
|
+
|
|
34
|
+
The proxy context manager is a convenient way to handle proxy creation and
|
|
35
|
+
destruction. It is used as follows:
|
|
36
|
+
|
|
37
|
+
.. code-block:: python
|
|
38
|
+
|
|
39
|
+
with proxy_context("local") as proxy:
|
|
40
|
+
proxy.add_signal(...)
|
|
41
|
+
|
|
42
|
+
The proxy type can be "local" or "remote". For remote proxy, the port can be
|
|
43
|
+
specified as "remote:port".
|
|
44
|
+
|
|
45
|
+
.. note:: The proxy context manager allows to use the proxy in various contexts
|
|
46
|
+
(Python script, Jupyter notebook, etc.). It also allows to switch seamlessly
|
|
47
|
+
between local and remote proxy, keeping the same code inside the context.
|
|
48
|
+
|
|
49
|
+
.. autofunction:: proxy_context
|
|
50
|
+
|
|
51
|
+
Calling processor methods using proxy objects
|
|
52
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
53
|
+
|
|
54
|
+
All the proxy objects provide access to the DataLab computing methods exposed by
|
|
55
|
+
the processor classes:
|
|
56
|
+
|
|
57
|
+
- :class:`datalab.gui.processor.signal.SignalProcessor`
|
|
58
|
+
- :class:`datalab.gui.processor.image.ImageProcessor`
|
|
59
|
+
|
|
60
|
+
To run a computation feature associated to a processor, you can use the
|
|
61
|
+
:meth:`calc` method of the proxy object:
|
|
62
|
+
|
|
63
|
+
.. code-block:: python
|
|
64
|
+
|
|
65
|
+
# Call a method without parameter
|
|
66
|
+
proxy.calc("average")
|
|
67
|
+
|
|
68
|
+
# Call a method with parameters
|
|
69
|
+
p = sigima.params.MovingAverageParam.create(n=30)
|
|
70
|
+
proxy.calc("moving_average", p)
|
|
71
|
+
|
|
72
|
+
"""
|
|
73
|
+
|
|
74
|
+
from __future__ import annotations
|
|
75
|
+
|
|
76
|
+
from collections.abc import Generator
|
|
77
|
+
from contextlib import contextmanager
|
|
78
|
+
|
|
79
|
+
import guidata.dataset as gds
|
|
80
|
+
import numpy as np
|
|
81
|
+
from sigima import ImageObj, SignalObj
|
|
82
|
+
|
|
83
|
+
from datalab.control.baseproxy import BaseProxy
|
|
84
|
+
from datalab.control.remote import RemoteClient
|
|
85
|
+
from datalab.utils import qthelpers as qth
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
class RemoteProxy(RemoteClient):
|
|
89
|
+
"""DataLab remote proxy class.
|
|
90
|
+
|
|
91
|
+
This class provides access to DataLab features from a proxy class. This is the
|
|
92
|
+
remote version of proxy, which is used when DataLab is started from a different
|
|
93
|
+
process than the proxy.
|
|
94
|
+
|
|
95
|
+
Args:
|
|
96
|
+
autoconnect: Automatically connect to DataLab XML-RPC server.
|
|
97
|
+
|
|
98
|
+
Raises:
|
|
99
|
+
ConnectionRefusedError: Unable to connect to DataLab
|
|
100
|
+
ValueError: Invalid timeout (must be >= 0.0)
|
|
101
|
+
ValueError: Invalid number of retries (must be >= 1)
|
|
102
|
+
|
|
103
|
+
Examples:
|
|
104
|
+
Here is a simple example of how to use RemoteProxy in a Python script
|
|
105
|
+
or in a Jupyter notebook:
|
|
106
|
+
|
|
107
|
+
>>> from datalab.control.proxy import RemoteProxy
|
|
108
|
+
>>> proxy = RemoteProxy()
|
|
109
|
+
Connecting to DataLab XML-RPC server...OK (port: 28867)
|
|
110
|
+
>>> proxy.get_version()
|
|
111
|
+
'1.0.0'
|
|
112
|
+
>>> proxy.add_signal("toto", np.array([1., 2., 3.]), np.array([4., 5., -1.]))
|
|
113
|
+
True
|
|
114
|
+
>>> proxy.get_object_titles()
|
|
115
|
+
['toto']
|
|
116
|
+
>>> proxy["toto"] # from title
|
|
117
|
+
<sigima.objects.signal.SignalObj at 0x7f7f1c0b4a90>
|
|
118
|
+
>>> proxy[1] # from number
|
|
119
|
+
<sigima.objects.signal.SignalObj at 0x7f7f1c0b4a90>
|
|
120
|
+
>>> proxy[1].data
|
|
121
|
+
array([1., 2., 3.])
|
|
122
|
+
>>> proxy.set_current_panel("image")
|
|
123
|
+
"""
|
|
124
|
+
|
|
125
|
+
def __init__(self, autoconnect: bool = True) -> None:
|
|
126
|
+
super().__init__()
|
|
127
|
+
if autoconnect:
|
|
128
|
+
self.connect()
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
class LocalProxy(BaseProxy):
|
|
132
|
+
"""DataLab local proxy class.
|
|
133
|
+
|
|
134
|
+
This class provides access to DataLab features from a proxy class. This is the
|
|
135
|
+
local version of proxy, which is used when DataLab is started from the same
|
|
136
|
+
process as the proxy.
|
|
137
|
+
|
|
138
|
+
Args:
|
|
139
|
+
datalab (DLMainWindow): DLMainWindow instance.
|
|
140
|
+
"""
|
|
141
|
+
|
|
142
|
+
def add_signal(
|
|
143
|
+
self,
|
|
144
|
+
title: str,
|
|
145
|
+
xdata: np.ndarray,
|
|
146
|
+
ydata: np.ndarray,
|
|
147
|
+
xunit: str = "",
|
|
148
|
+
yunit: str = "",
|
|
149
|
+
xlabel: str = "",
|
|
150
|
+
ylabel: str = "",
|
|
151
|
+
group_id: str = "",
|
|
152
|
+
set_current: bool = True,
|
|
153
|
+
) -> bool: # pylint: disable=too-many-arguments
|
|
154
|
+
"""Add signal data to DataLab.
|
|
155
|
+
|
|
156
|
+
Args:
|
|
157
|
+
title: Signal title
|
|
158
|
+
xdata: X data
|
|
159
|
+
ydata: Y data
|
|
160
|
+
xunit: X unit. Defaults to ""
|
|
161
|
+
yunit: Y unit. Defaults to ""
|
|
162
|
+
xlabel: X label. Defaults to ""
|
|
163
|
+
ylabel: Y label. Defaults to ""
|
|
164
|
+
group_id: group id in which to add the signal. Defaults to ""
|
|
165
|
+
set_current: if True, set the added signal as current
|
|
166
|
+
|
|
167
|
+
Returns:
|
|
168
|
+
True if signal was added successfully, False otherwise
|
|
169
|
+
|
|
170
|
+
Raises:
|
|
171
|
+
ValueError: Invalid xdata dtype
|
|
172
|
+
ValueError: Invalid ydata dtype
|
|
173
|
+
"""
|
|
174
|
+
return self._datalab.add_signal(
|
|
175
|
+
title, xdata, ydata, xunit, yunit, xlabel, ylabel, group_id, set_current
|
|
176
|
+
)
|
|
177
|
+
|
|
178
|
+
def add_image(
|
|
179
|
+
self,
|
|
180
|
+
title: str,
|
|
181
|
+
data: np.ndarray,
|
|
182
|
+
xunit: str = "",
|
|
183
|
+
yunit: str = "",
|
|
184
|
+
zunit: str = "",
|
|
185
|
+
xlabel: str = "",
|
|
186
|
+
ylabel: str = "",
|
|
187
|
+
zlabel: str = "",
|
|
188
|
+
group_id: str = "",
|
|
189
|
+
set_current: bool = True,
|
|
190
|
+
) -> bool: # pylint: disable=too-many-arguments
|
|
191
|
+
"""Add image data to DataLab.
|
|
192
|
+
|
|
193
|
+
Args:
|
|
194
|
+
title: Image title
|
|
195
|
+
data: Image data
|
|
196
|
+
xunit: X unit. Defaults to ""
|
|
197
|
+
yunit: Y unit. Defaults to ""
|
|
198
|
+
zunit: Z unit. Defaults to ""
|
|
199
|
+
xlabel: X label. Defaults to ""
|
|
200
|
+
ylabel: Y label. Defaults to ""
|
|
201
|
+
zlabel: Z label. Defaults to ""
|
|
202
|
+
group_id: group id in which to add the image. Defaults to ""
|
|
203
|
+
set_current: if True, set the added image as current
|
|
204
|
+
|
|
205
|
+
Returns:
|
|
206
|
+
True if image was added successfully, False otherwise
|
|
207
|
+
|
|
208
|
+
Raises:
|
|
209
|
+
ValueError: Invalid data dtype
|
|
210
|
+
"""
|
|
211
|
+
return self._datalab.add_image(
|
|
212
|
+
title,
|
|
213
|
+
data,
|
|
214
|
+
xunit,
|
|
215
|
+
yunit,
|
|
216
|
+
zunit,
|
|
217
|
+
xlabel,
|
|
218
|
+
ylabel,
|
|
219
|
+
zlabel,
|
|
220
|
+
group_id,
|
|
221
|
+
set_current,
|
|
222
|
+
)
|
|
223
|
+
|
|
224
|
+
def add_object(
|
|
225
|
+
self, obj: SignalObj | ImageObj, group_id: str = "", set_current: bool = True
|
|
226
|
+
) -> None:
|
|
227
|
+
"""Add object to DataLab.
|
|
228
|
+
|
|
229
|
+
Args:
|
|
230
|
+
obj: Signal or image object
|
|
231
|
+
group_id: group id in which to add the object. Defaults to ""
|
|
232
|
+
set_current: if True, set the added object as current
|
|
233
|
+
"""
|
|
234
|
+
self._datalab.add_object(obj, group_id, set_current)
|
|
235
|
+
|
|
236
|
+
def calc(self, name: str, param: gds.DataSet | None = None) -> None:
|
|
237
|
+
"""Call computation feature ``name``
|
|
238
|
+
|
|
239
|
+
.. note::
|
|
240
|
+
|
|
241
|
+
This calls either the processor's ``compute_<name>`` method (if it exists),
|
|
242
|
+
or the processor's ``<name>`` computation feature (if it is registered,
|
|
243
|
+
using the ``run_feature`` method).
|
|
244
|
+
It looks for the function in all panels, starting with the current one.
|
|
245
|
+
|
|
246
|
+
Args:
|
|
247
|
+
name: Compute function name
|
|
248
|
+
param: Compute function parameter. Defaults to None
|
|
249
|
+
|
|
250
|
+
Raises:
|
|
251
|
+
ValueError: unknown function
|
|
252
|
+
"""
|
|
253
|
+
return self._datalab.calc(name, param)
|
|
254
|
+
|
|
255
|
+
def get_object(
|
|
256
|
+
self, nb_id_title: int | str | None = None, panel: str | None = None
|
|
257
|
+
) -> SignalObj | ImageObj:
|
|
258
|
+
"""Get object (signal/image) from index.
|
|
259
|
+
|
|
260
|
+
Args:
|
|
261
|
+
nb_id_title: Object number, or object id, or object title.
|
|
262
|
+
Defaults to None (current object)
|
|
263
|
+
panel: Panel name. Defaults to None (current panel)
|
|
264
|
+
|
|
265
|
+
Returns:
|
|
266
|
+
Object
|
|
267
|
+
|
|
268
|
+
Raises:
|
|
269
|
+
KeyError: if object not found
|
|
270
|
+
"""
|
|
271
|
+
return self._datalab.get_object(nb_id_title, panel)
|
|
272
|
+
|
|
273
|
+
def get_object_shapes(
|
|
274
|
+
self,
|
|
275
|
+
nb_id_title: int | str | None = None,
|
|
276
|
+
panel: str | None = None,
|
|
277
|
+
) -> list:
|
|
278
|
+
"""Get plot item shapes associated to object (signal/image).
|
|
279
|
+
|
|
280
|
+
Args:
|
|
281
|
+
nb_id_title: Object number, or object id, or object title.
|
|
282
|
+
Defaults to None (current object)
|
|
283
|
+
panel: Panel name. Defaults to None (current panel)
|
|
284
|
+
|
|
285
|
+
Returns:
|
|
286
|
+
List of plot item shapes
|
|
287
|
+
"""
|
|
288
|
+
return self._datalab.get_object_shapes(nb_id_title, panel)
|
|
289
|
+
|
|
290
|
+
def add_annotations_from_items(
|
|
291
|
+
self, items: list, refresh_plot: bool = True, panel: str | None = None
|
|
292
|
+
) -> None:
|
|
293
|
+
"""Add object annotations (annotation plot items).
|
|
294
|
+
|
|
295
|
+
Args:
|
|
296
|
+
itemsTrue: annotation plot items
|
|
297
|
+
refresh_plotTrue: refresh plot. Defaults to True
|
|
298
|
+
panel: panel name (valid values: "signal", "image").
|
|
299
|
+
If None, current panel is used
|
|
300
|
+
"""
|
|
301
|
+
self._datalab.add_annotations_from_items(items, refresh_plot, panel)
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
@contextmanager
|
|
305
|
+
def proxy_context(what: str) -> Generator[LocalProxy | RemoteProxy, None, None]:
|
|
306
|
+
"""Context manager handling DL proxy creation and destruction.
|
|
307
|
+
|
|
308
|
+
Args:
|
|
309
|
+
what: proxy type ("local" or "remote")
|
|
310
|
+
For remote proxy, the port can be specified as "remote:port"
|
|
311
|
+
|
|
312
|
+
Yields:
|
|
313
|
+
proxy
|
|
314
|
+
LocalProxy if what == "local"
|
|
315
|
+
RemoteProxy if what == "remote" or "remote:port"
|
|
316
|
+
|
|
317
|
+
Example:
|
|
318
|
+
with proxy_context("local") as proxy:
|
|
319
|
+
proxy.add_signal(...)
|
|
320
|
+
"""
|
|
321
|
+
assert what == "local" or what.startswith("remote"), "Invalid proxy type"
|
|
322
|
+
port = None
|
|
323
|
+
if ":" in what:
|
|
324
|
+
port = int(what.split(":")[1].strip())
|
|
325
|
+
if what == "local":
|
|
326
|
+
# pylint: disable=import-outside-toplevel, cyclic-import
|
|
327
|
+
from datalab.gui.main import DLMainWindow
|
|
328
|
+
|
|
329
|
+
with qth.datalab_app_context(exec_loop=True):
|
|
330
|
+
try:
|
|
331
|
+
win = DLMainWindow()
|
|
332
|
+
proxy = LocalProxy(win)
|
|
333
|
+
win.show()
|
|
334
|
+
yield proxy
|
|
335
|
+
finally:
|
|
336
|
+
pass
|
|
337
|
+
else:
|
|
338
|
+
try:
|
|
339
|
+
proxy = RemoteProxy(autoconnect=False)
|
|
340
|
+
proxy.connect(port)
|
|
341
|
+
yield proxy
|
|
342
|
+
finally:
|
|
343
|
+
proxy.disconnect()
|