datalab-platform 0.0.1.dev0__py3-none-any.whl → 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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.0.dist-info/METADATA +121 -0
- datalab_platform-1.0.0.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.0.dist-info}/WHEEL +0 -0
- {datalab_platform-0.0.1.dev0.dist-info → datalab_platform-1.0.0.dist-info}/entry_points.txt +0 -0
- {datalab_platform-0.0.1.dev0.dist-info → datalab_platform-1.0.0.dist-info}/licenses/LICENSE +0 -0
- {datalab_platform-0.0.1.dev0.dist-info → datalab_platform-1.0.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Image file formats Plugin for DataLab
|
|
5
|
+
-------------------------------------
|
|
6
|
+
|
|
7
|
+
This plugin is an example of DataLab plugin.
|
|
8
|
+
It provides image file formats from cameras, scanners, and other acquisition devices.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
import struct
|
|
12
|
+
|
|
13
|
+
import numpy as np
|
|
14
|
+
from sigima.io.base import FormatInfo
|
|
15
|
+
from sigima.io.image.base import SingleImageFormatBase
|
|
16
|
+
|
|
17
|
+
# ==============================================================================
|
|
18
|
+
# Thales Pixium FXD file format
|
|
19
|
+
# ==============================================================================
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class FXDFile:
|
|
23
|
+
"""Class implementing Thales Pixium FXD Image file reading feature
|
|
24
|
+
|
|
25
|
+
Args:
|
|
26
|
+
fname (str): path to FXD file
|
|
27
|
+
debug (bool): debug mode
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
HEADER = "<llllllffl"
|
|
31
|
+
|
|
32
|
+
def __init__(self, fname: str = None, debug: bool = False) -> None:
|
|
33
|
+
self.__debug = debug
|
|
34
|
+
self.file_format = None # long
|
|
35
|
+
self.nbcols = None # long
|
|
36
|
+
self.nbrows = None # long
|
|
37
|
+
self.nbframes = None # long
|
|
38
|
+
self.pixeltype = None # long
|
|
39
|
+
self.quantlevels = None # long
|
|
40
|
+
self.maxlevel = None # float
|
|
41
|
+
self.minlevel = None # float
|
|
42
|
+
self.comment_length = None # long
|
|
43
|
+
self.fname = None
|
|
44
|
+
self.data = None
|
|
45
|
+
if fname is not None:
|
|
46
|
+
self.load(fname)
|
|
47
|
+
|
|
48
|
+
def __repr__(self) -> str:
|
|
49
|
+
"""Return a string representation of the object"""
|
|
50
|
+
info = (
|
|
51
|
+
("Image width", f"{self.nbcols:d}"),
|
|
52
|
+
("Image Height", f"{self.nbrows:d}"),
|
|
53
|
+
("Frame number", f"{self.nbframes:d}"),
|
|
54
|
+
("File format", f"{self.file_format:d}"),
|
|
55
|
+
("Pixel type", f"{self.pixeltype:d}"),
|
|
56
|
+
("Quantlevels", f"{self.quantlevels:d}"),
|
|
57
|
+
("Min. level", f"{self.minlevel:f}"),
|
|
58
|
+
("Max. level", f"{self.maxlevel:f}"),
|
|
59
|
+
("Comment length", f"{self.comment_length:d}"),
|
|
60
|
+
)
|
|
61
|
+
desc_len = max(len(d) for d in list(zip(*info))[0]) + 3
|
|
62
|
+
res = ""
|
|
63
|
+
for description, value in info:
|
|
64
|
+
res += ("{:" + str(desc_len) + "}{}\n").format(description + ": ", value)
|
|
65
|
+
|
|
66
|
+
res = object.__repr__(self) + "\n" + res
|
|
67
|
+
return res
|
|
68
|
+
|
|
69
|
+
def load(self, fname: str) -> None:
|
|
70
|
+
"""Load header and image pixel data
|
|
71
|
+
|
|
72
|
+
Args:
|
|
73
|
+
fname (str): path to FXD file
|
|
74
|
+
"""
|
|
75
|
+
with open(fname, "rb") as data_file:
|
|
76
|
+
header_s = struct.Struct(self.HEADER)
|
|
77
|
+
record = data_file.read(9 * 4)
|
|
78
|
+
unpacked_rec = header_s.unpack(record)
|
|
79
|
+
(
|
|
80
|
+
self.file_format,
|
|
81
|
+
self.nbcols,
|
|
82
|
+
self.nbrows,
|
|
83
|
+
self.nbframes,
|
|
84
|
+
self.pixeltype,
|
|
85
|
+
self.quantlevels,
|
|
86
|
+
self.maxlevel,
|
|
87
|
+
self.minlevel,
|
|
88
|
+
self.comment_length,
|
|
89
|
+
) = unpacked_rec
|
|
90
|
+
if self.__debug:
|
|
91
|
+
print(unpacked_rec)
|
|
92
|
+
print(self)
|
|
93
|
+
data_file.seek(128 + self.comment_length)
|
|
94
|
+
if self.pixeltype == 0:
|
|
95
|
+
size, dtype = 4, np.float32
|
|
96
|
+
elif self.pixeltype == 1:
|
|
97
|
+
size, dtype = 2, np.uint16
|
|
98
|
+
elif self.pixeltype == 2:
|
|
99
|
+
size, dtype = 1, np.uint8
|
|
100
|
+
else:
|
|
101
|
+
raise NotImplementedError(f"Unsupported pixel type: {self.pixeltype}")
|
|
102
|
+
block = data_file.read(self.nbrows * self.nbcols * size)
|
|
103
|
+
data = np.frombuffer(block, dtype=dtype)
|
|
104
|
+
self.data = data.reshape(self.nbrows, self.nbcols)
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
class FXDImageFormat(SingleImageFormatBase):
|
|
108
|
+
"""Object representing Thales Pixium (FXD) image file type"""
|
|
109
|
+
|
|
110
|
+
FORMAT_INFO = FormatInfo(
|
|
111
|
+
name="Thales Pixium",
|
|
112
|
+
extensions="*.fxd",
|
|
113
|
+
readable=True,
|
|
114
|
+
writeable=False,
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
@staticmethod
|
|
118
|
+
def read_data(filename: str) -> np.ndarray:
|
|
119
|
+
"""Read data and return it
|
|
120
|
+
|
|
121
|
+
Args:
|
|
122
|
+
filename (str): path to FXD file
|
|
123
|
+
|
|
124
|
+
Returns:
|
|
125
|
+
np.ndarray: image data
|
|
126
|
+
"""
|
|
127
|
+
fxd_file = FXDFile(filename)
|
|
128
|
+
return fxd_file.data
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
# ==============================================================================
|
|
132
|
+
# Dürr NDT XYZ file format
|
|
133
|
+
# ==============================================================================
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
class XYZImageFormat(SingleImageFormatBase):
|
|
137
|
+
"""Object representing Dürr NDT XYZ image file type"""
|
|
138
|
+
|
|
139
|
+
FORMAT_INFO = FormatInfo(
|
|
140
|
+
name="Dürr NDT",
|
|
141
|
+
extensions="*.xyz",
|
|
142
|
+
readable=True,
|
|
143
|
+
writeable=True,
|
|
144
|
+
)
|
|
145
|
+
|
|
146
|
+
@staticmethod
|
|
147
|
+
def read_data(filename: str) -> np.ndarray:
|
|
148
|
+
"""Read data and return it
|
|
149
|
+
|
|
150
|
+
Args:
|
|
151
|
+
filename (str): path to XYZ file
|
|
152
|
+
|
|
153
|
+
Returns:
|
|
154
|
+
np.ndarray: image data
|
|
155
|
+
"""
|
|
156
|
+
with open(filename, "rb") as fdesc:
|
|
157
|
+
cols = int(np.fromfile(fdesc, dtype=np.uint16, count=1)[0])
|
|
158
|
+
rows = int(np.fromfile(fdesc, dtype=np.uint16, count=1)[0])
|
|
159
|
+
arr = np.fromfile(fdesc, dtype=np.uint16, count=cols * rows)
|
|
160
|
+
arr = arr.reshape((rows, cols))
|
|
161
|
+
return np.fliplr(arr)
|
|
162
|
+
|
|
163
|
+
@staticmethod
|
|
164
|
+
def write_data(filename: str, data: np.ndarray) -> None:
|
|
165
|
+
"""Write data to file
|
|
166
|
+
|
|
167
|
+
Args:
|
|
168
|
+
filename: File name
|
|
169
|
+
data: Image array data
|
|
170
|
+
"""
|
|
171
|
+
data = np.fliplr(data)
|
|
172
|
+
with open(filename, "wb") as fdesc:
|
|
173
|
+
fdesc.write(np.array(data.shape[1], dtype=np.uint16).tobytes())
|
|
174
|
+
fdesc.write(np.array(data.shape[0], dtype=np.uint16).tobytes())
|
|
175
|
+
fdesc.write(data.tobytes())
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
# Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Test Data Plugin for DataLab
|
|
5
|
+
----------------------------
|
|
6
|
+
|
|
7
|
+
This plugin is an example of DataLab plugin. It provides test data samples
|
|
8
|
+
and some actions to test DataLab functionalities.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
import sigima.tests.data as test_data
|
|
14
|
+
from sigima.io.image import ImageIORegistry
|
|
15
|
+
from sigima.io.signal import SignalIORegistry
|
|
16
|
+
from sigima.tests import helpers
|
|
17
|
+
|
|
18
|
+
from datalab.config import _
|
|
19
|
+
from datalab.plugins import PluginBase, PluginInfo
|
|
20
|
+
from datalab.utils.qthelpers import create_progress_bar
|
|
21
|
+
|
|
22
|
+
# ------------------------------------------------------------------------------
|
|
23
|
+
# All computation functions must be defined as global functions, otherwise
|
|
24
|
+
# they cannot be pickled and sent to the worker process
|
|
25
|
+
# ------------------------------------------------------------------------------
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class PluginTestData(PluginBase):
|
|
29
|
+
"""DataLab Test Data Plugin"""
|
|
30
|
+
|
|
31
|
+
PLUGIN_INFO = PluginInfo(
|
|
32
|
+
name=_("Test data"),
|
|
33
|
+
version="1.0.0",
|
|
34
|
+
description=_("Testing DataLab functionalities"),
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
def load_test_objs(
|
|
38
|
+
self, registry_class: type[SignalIORegistry | ImageIORegistry], title: str
|
|
39
|
+
) -> None:
|
|
40
|
+
"""Load all test objects from a given registry class
|
|
41
|
+
|
|
42
|
+
Args:
|
|
43
|
+
registry_class: Registry class (SignalIORegistry or ImageIORegistry)
|
|
44
|
+
title: Progress bar title
|
|
45
|
+
|
|
46
|
+
Returns:
|
|
47
|
+
List of (filename, object) tuples
|
|
48
|
+
"""
|
|
49
|
+
test_objs = list(helpers.read_test_objects(registry_class))
|
|
50
|
+
with create_progress_bar(self.signalpanel, title, max_=len(test_objs)) as prog:
|
|
51
|
+
for i_obj, (_fname, obj) in enumerate(test_objs):
|
|
52
|
+
prog.setValue(i_obj + 1)
|
|
53
|
+
if prog.wasCanceled():
|
|
54
|
+
break
|
|
55
|
+
if obj is not None:
|
|
56
|
+
self.proxy.add_object(obj)
|
|
57
|
+
|
|
58
|
+
# Signal processing features ------------------------------------------------
|
|
59
|
+
def create_paracetamol_signal(self) -> None:
|
|
60
|
+
"""Create paracetamol signal"""
|
|
61
|
+
obj = test_data.create_paracetamol_signal()
|
|
62
|
+
self.proxy.add_object(obj)
|
|
63
|
+
|
|
64
|
+
# Image processing features ------------------------------------------------
|
|
65
|
+
def create_peak_image(self) -> None:
|
|
66
|
+
"""Create 2D peak image"""
|
|
67
|
+
obj = self.imagepanel.new_object(add_to_panel=False)
|
|
68
|
+
if obj is not None:
|
|
69
|
+
param = test_data.PeakDataParam.create(size=max(obj.data.shape))
|
|
70
|
+
self.imagepanel.processor.update_param_defaults(param)
|
|
71
|
+
if param.edit(self.main):
|
|
72
|
+
obj.data, _coords = test_data.get_peak2d_data(param)
|
|
73
|
+
self.proxy.add_object(obj)
|
|
74
|
+
|
|
75
|
+
def create_sincos_image(self) -> None:
|
|
76
|
+
"""Create 2D sin cos image"""
|
|
77
|
+
newparam = self.edit_new_image_parameters(hide_type=True)
|
|
78
|
+
if newparam is not None:
|
|
79
|
+
obj = test_data.create_sincos_image(newparam)
|
|
80
|
+
self.proxy.add_object(obj)
|
|
81
|
+
|
|
82
|
+
def create_noisy_gaussian_image(self) -> None:
|
|
83
|
+
"""Create 2D noisy gauss image"""
|
|
84
|
+
newparam = self.edit_new_image_parameters(hide_height=True, hide_type=True)
|
|
85
|
+
if newparam is not None:
|
|
86
|
+
obj = test_data.create_noisy_gaussian_image(newparam, add_annotations=False)
|
|
87
|
+
self.proxy.add_object(obj)
|
|
88
|
+
|
|
89
|
+
def create_multigaussian_image(self) -> None:
|
|
90
|
+
"""Create 2D multi gauss image"""
|
|
91
|
+
newparam = self.edit_new_image_parameters(hide_height=True, hide_type=True)
|
|
92
|
+
if newparam is not None:
|
|
93
|
+
obj = test_data.create_multigaussian_image(newparam)
|
|
94
|
+
self.proxy.add_object(obj)
|
|
95
|
+
|
|
96
|
+
def create_2dstep_image(self) -> None:
|
|
97
|
+
"""Create 2D step image"""
|
|
98
|
+
newparam = self.edit_new_image_parameters(hide_type=True)
|
|
99
|
+
if newparam is not None:
|
|
100
|
+
obj = test_data.create_2dstep_image(newparam)
|
|
101
|
+
self.proxy.add_object(obj)
|
|
102
|
+
|
|
103
|
+
def create_ring_image(self) -> None:
|
|
104
|
+
"""Create 2D ring image"""
|
|
105
|
+
param = test_data.RingParam(_("Ring"))
|
|
106
|
+
if param.edit(self.main):
|
|
107
|
+
obj = test_data.create_ring_image(param)
|
|
108
|
+
self.proxy.add_object(obj)
|
|
109
|
+
|
|
110
|
+
def create_annotated_image(self) -> None:
|
|
111
|
+
"""Create annotated image"""
|
|
112
|
+
obj = test_data.create_annotated_image()
|
|
113
|
+
self.proxy.add_object(obj)
|
|
114
|
+
|
|
115
|
+
def create_grid_gaussian_image(self) -> None:
|
|
116
|
+
"""Create image with a grid of gaussian spots"""
|
|
117
|
+
param = test_data.GridOfGaussianImages(_("Grid of Gaussian Images"))
|
|
118
|
+
if param.edit(self.main):
|
|
119
|
+
obj = test_data.create_grid_of_gaussian_images(param)
|
|
120
|
+
self.proxy.add_object(obj)
|
|
121
|
+
|
|
122
|
+
# Plugin menu entries ------------------------------------------------------
|
|
123
|
+
def create_actions(self) -> None:
|
|
124
|
+
"""Create actions"""
|
|
125
|
+
# Signal Panel ----------------------------------------------------------
|
|
126
|
+
sah = self.signalpanel.acthandler
|
|
127
|
+
with sah.new_menu(_("Test data")):
|
|
128
|
+
sah.new_action(
|
|
129
|
+
_("Load spectrum of paracetamol"),
|
|
130
|
+
triggered=self.create_paracetamol_signal,
|
|
131
|
+
select_condition="always",
|
|
132
|
+
)
|
|
133
|
+
sah.new_action(
|
|
134
|
+
_("Load all test signals"),
|
|
135
|
+
triggered=lambda regclass=SignalIORegistry,
|
|
136
|
+
title=_("Load all test signals"): self.load_test_objs(regclass, title),
|
|
137
|
+
select_condition="always",
|
|
138
|
+
separator=True,
|
|
139
|
+
)
|
|
140
|
+
# Image Panel -----------------------------------------------------------
|
|
141
|
+
iah = self.imagepanel.acthandler
|
|
142
|
+
with iah.new_menu(_("Test data")):
|
|
143
|
+
iah.new_action(
|
|
144
|
+
_("Create image with peaks"),
|
|
145
|
+
triggered=self.create_peak_image,
|
|
146
|
+
select_condition="always",
|
|
147
|
+
separator=True,
|
|
148
|
+
)
|
|
149
|
+
iah.new_action(
|
|
150
|
+
_("Create 2D sin cos image"),
|
|
151
|
+
triggered=self.create_sincos_image,
|
|
152
|
+
select_condition="always",
|
|
153
|
+
)
|
|
154
|
+
iah.new_action(
|
|
155
|
+
_("Create 2D noisy gaussian image"),
|
|
156
|
+
triggered=self.create_noisy_gaussian_image,
|
|
157
|
+
select_condition="always",
|
|
158
|
+
)
|
|
159
|
+
iah.new_action(
|
|
160
|
+
_("Create 2D multi gaussian image"),
|
|
161
|
+
triggered=self.create_multigaussian_image,
|
|
162
|
+
select_condition="always",
|
|
163
|
+
)
|
|
164
|
+
iah.new_action(
|
|
165
|
+
_("Create annotated image"),
|
|
166
|
+
triggered=self.create_annotated_image,
|
|
167
|
+
select_condition="always",
|
|
168
|
+
)
|
|
169
|
+
iah.new_action(
|
|
170
|
+
_("Create 2D step image"),
|
|
171
|
+
triggered=self.create_2dstep_image,
|
|
172
|
+
select_condition="always",
|
|
173
|
+
)
|
|
174
|
+
iah.new_action(
|
|
175
|
+
_("Create ring image"),
|
|
176
|
+
triggered=self.create_ring_image,
|
|
177
|
+
select_condition="always",
|
|
178
|
+
)
|
|
179
|
+
iah.new_action(
|
|
180
|
+
_("Create image with a grid of gaussian spots"),
|
|
181
|
+
triggered=self.create_grid_gaussian_image,
|
|
182
|
+
select_condition="always",
|
|
183
|
+
)
|
|
184
|
+
iah.new_action(
|
|
185
|
+
_("Load all test images"),
|
|
186
|
+
triggered=lambda regclass=ImageIORegistry,
|
|
187
|
+
title=_("Load all test images"): self.load_test_objs(regclass, title),
|
|
188
|
+
select_condition="always",
|
|
189
|
+
separator=True,
|
|
190
|
+
)
|