celldetective 1.5.0b1__tar.gz → 1.5.0b2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/PKG-INFO +1 -1
- celldetective-1.5.0b2/celldetective/_version.py +1 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/InitWindow.py +23 -1
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/base/components.py +20 -1
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/base_annotator.py +11 -7
- celldetective-1.5.0b2/celldetective/gui/event_annotator.py +1037 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/interactions_block.py +55 -25
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/interactive_timeseries_viewer.py +11 -1
- celldetective-1.5.0b2/celldetective/gui/measure_annotator.py +968 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/process_block.py +88 -34
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/viewers/base_viewer.py +134 -3
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/viewers/contour_viewer.py +4 -4
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/workers.py +25 -10
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/measure.py +3 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/napari/utils.py +29 -19
- celldetective-1.5.0b2/celldetective/processes/load_table.py +55 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/processes/measure_cells.py +107 -81
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/processes/track_cells.py +39 -39
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/segmentation.py +1 -1
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/tracking.py +9 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/utils/data_loaders.py +21 -1
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/utils/maths.py +14 -1
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective.egg-info/PKG-INFO +1 -1
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective.egg-info/SOURCES.txt +2 -0
- celldetective-1.5.0b1/celldetective/_version.py +0 -1
- celldetective-1.5.0b1/celldetective/gui/event_annotator.py +0 -2046
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/LICENSE +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/README.md +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/__init__.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/__main__.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/datasets/segmentation_annotations/blank +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/datasets/signal_annotations/blank +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/events.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/exceptions.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/extra_properties.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/filters.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/__init__.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/about.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/analyze_block.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/base/__init__.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/base/channel_norm_generator.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/base/feature_choice.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/base/figure_canvas.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/base/list_widget.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/base/styles.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/base/utils.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/classifier_widget.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/configure_new_exp.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/control_panel.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/dynamic_progress.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/generic_signal_plot.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/gui_utils.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/help/DL-segmentation-strategy.json +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/help/Threshold-vs-DL.json +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/help/cell-populations.json +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/help/exp-structure.json +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/help/feature-btrack.json +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/help/neighborhood.json +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/help/prefilter-for-segmentation.json +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/help/preprocessing.json +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/help/propagate-classification.json +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/help/track-postprocessing.json +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/help/tracking.json +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/json_readers.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/layouts/__init__.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/layouts/background_model_free_layout.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/layouts/channel_offset_layout.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/layouts/local_correction_layout.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/layouts/model_fit_layout.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/layouts/operation_layout.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/layouts/protocol_designer_layout.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/pair_event_annotator.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/plot_measurements.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/plot_signals_ui.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/preprocessing_block.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/seg_model_loader.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/settings/__init__.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/settings/_cellpose_model_params.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/settings/_event_detection_model_params.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/settings/_segmentation_model_params.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/settings/_settings_base.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/settings/_settings_event_model_training.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/settings/_settings_measurements.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/settings/_settings_neighborhood.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/settings/_settings_segmentation.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/settings/_settings_segmentation_model_training.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/settings/_settings_signal_annotator.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/settings/_settings_tracking.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/settings/_stardist_model_params.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/survival_ui.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/tableUI.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/table_ops/__init__.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/table_ops/_maths.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/table_ops/_merge_groups.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/table_ops/_merge_one_hot.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/table_ops/_query_table.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/table_ops/_rename_col.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/thresholds_gui.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/viewers/__init__.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/viewers/channel_offset_viewer.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/viewers/size_viewer.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/viewers/spot_detection_viewer.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/gui/viewers/threshold_viewer.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/icons/logo-large.png +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/icons/logo.png +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/icons/signals_icon.png +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/icons/splash-test.png +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/icons/splash.png +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/icons/splash0.png +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/icons/survival2.png +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/icons/vignette_signals2.png +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/icons/vignette_signals2.svg +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/links/zenodo.json +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/log_manager.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/models/pair_signal_detection/blank +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/models/segmentation_effectors/blank +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/models/segmentation_generic/blank +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/models/segmentation_targets/blank +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/models/signal_detection/blank +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/models/tracking_configs/biased_motion.json +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/models/tracking_configs/mcf7.json +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/models/tracking_configs/no_z_motion.json +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/models/tracking_configs/ricm.json +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/models/tracking_configs/ricm2.json +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/napari/__init__.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/neighborhood.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/preprocessing.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/processes/__init__.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/processes/background_correction.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/processes/compute_neighborhood.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/processes/detect_events.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/processes/downloader.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/processes/segment_cells.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/processes/train_segmentation_model.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/processes/train_signal_model.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/processes/unified_process.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/regionprops/__init__.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/regionprops/_regionprops.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/regionprops/props.json +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/relative_measurements.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/scripts/analyze_signals.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/scripts/measure_cells.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/scripts/measure_relative.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/scripts/segment_cells.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/scripts/segment_cells_thresholds.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/scripts/track_cells.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/scripts/train_segmentation_model.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/scripts/train_signal_model.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/signals.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/utils/__init__.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/utils/cellpose_utils/__init__.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/utils/color_mappings.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/utils/data_cleaning.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/utils/dataset_helpers.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/utils/downloaders.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/utils/event_detection/__init__.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/utils/experiment.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/utils/image_augmenters.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/utils/image_cleaning.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/utils/image_loaders.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/utils/image_transforms.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/utils/io.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/utils/mask_cleaning.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/utils/mask_transforms.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/utils/masks.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/utils/model_getters.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/utils/model_loaders.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/utils/normalization.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/utils/parsing.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/utils/plots/__init__.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/utils/plots/regression.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/utils/resources.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/utils/stardist_utils/__init__.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/utils/stats.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective/utils/types.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective.egg-info/dependency_links.txt +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective.egg-info/entry_points.txt +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective.egg-info/not-zip-safe +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective.egg-info/requires.txt +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/celldetective.egg-info/top_level.txt +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/setup.cfg +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/setup.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/tests/__init__.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/tests/gui/__init__.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/tests/gui/test_new_project.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/tests/gui/test_project.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/tests/test_events.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/tests/test_filters.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/tests/test_io.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/tests/test_measure.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/tests/test_neighborhood.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/tests/test_notebooks.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/tests/test_preprocessing.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/tests/test_segmentation.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/tests/test_signals.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/tests/test_tracking.py +0 -0
- {celldetective-1.5.0b1 → celldetective-1.5.0b2}/tests/test_utils.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "1.5.0b2"
|
|
@@ -21,6 +21,7 @@ from PyQt5.QtWidgets import (
|
|
|
21
21
|
QPushButton,
|
|
22
22
|
QMessageBox,
|
|
23
23
|
QVBoxLayout,
|
|
24
|
+
QProgressDialog,
|
|
24
25
|
)
|
|
25
26
|
from fonticon_mdi6 import MDI6
|
|
26
27
|
from psutil import cpu_count
|
|
@@ -57,6 +58,8 @@ class BackgroundLoader(QThread):
|
|
|
57
58
|
import scipy.ndimage
|
|
58
59
|
import tifffile
|
|
59
60
|
import numpy
|
|
61
|
+
import napari
|
|
62
|
+
from celldetective.napari.utils import launch_napari_viewer
|
|
60
63
|
except Exception:
|
|
61
64
|
logger.error("Background packages not loaded...")
|
|
62
65
|
logger.info("Background packages loaded...")
|
|
@@ -337,14 +340,33 @@ class AppInitWindow(CelldetectiveMainWindow):
|
|
|
337
340
|
)
|
|
338
341
|
|
|
339
342
|
def correct_seg_annotation(self):
|
|
343
|
+
|
|
340
344
|
from celldetective.napari.utils import correct_annotation
|
|
341
345
|
|
|
342
346
|
self.filename, _ = QFileDialog.getOpenFileName(
|
|
343
347
|
self, "Open Image", "/home/", "TIF Files (*.tif)"
|
|
344
348
|
)
|
|
349
|
+
|
|
345
350
|
if self.filename != "":
|
|
351
|
+
# 2. Show progress bar for opening the image in Napari
|
|
352
|
+
progress_open = QProgressDialog(
|
|
353
|
+
f"Opening {os.path.basename(self.filename)} in napari...",
|
|
354
|
+
None,
|
|
355
|
+
0,
|
|
356
|
+
0,
|
|
357
|
+
self,
|
|
358
|
+
)
|
|
359
|
+
progress_open.setWindowTitle("Please wait")
|
|
360
|
+
progress_open.setWindowModality(Qt.WindowModal)
|
|
361
|
+
progress_open.setMinimumDuration(0)
|
|
362
|
+
progress_open.show()
|
|
363
|
+
QApplication.processEvents()
|
|
364
|
+
|
|
346
365
|
logger.info(f"Opening {self.filename} in napari...")
|
|
347
|
-
|
|
366
|
+
try:
|
|
367
|
+
correct_annotation(self.filename)
|
|
368
|
+
finally:
|
|
369
|
+
progress_open.close()
|
|
348
370
|
else:
|
|
349
371
|
return None
|
|
350
372
|
|
|
@@ -11,11 +11,13 @@ from PyQt5.QtWidgets import (
|
|
|
11
11
|
QStylePainter,
|
|
12
12
|
QStyleOptionComboBox,
|
|
13
13
|
QStyle,
|
|
14
|
-
QFrame,
|
|
15
14
|
QSizePolicy,
|
|
16
15
|
QProgressDialog,
|
|
16
|
+
QPushButton,
|
|
17
|
+
QFrame,
|
|
17
18
|
)
|
|
18
19
|
from PyQt5.QtCore import Qt, pyqtSignal, QEvent
|
|
20
|
+
from superqt.fonticon import icon
|
|
19
21
|
from celldetective.gui.base.styles import Styles
|
|
20
22
|
|
|
21
23
|
|
|
@@ -247,3 +249,20 @@ class QHSeperationLine(QFrame):
|
|
|
247
249
|
self.setFrameShape(QFrame.HLine)
|
|
248
250
|
self.setFrameShadow(QFrame.Sunken)
|
|
249
251
|
self.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Minimum)
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
class HoverButton(QPushButton):
|
|
255
|
+
def __init__(self, text, icon_enum, default_color="black", hover_color="white"):
|
|
256
|
+
super().__init__(text)
|
|
257
|
+
self.icon_enum = icon_enum
|
|
258
|
+
self.default_color = default_color
|
|
259
|
+
self.hover_color = hover_color
|
|
260
|
+
self.setIcon(icon(self.icon_enum, color=self.default_color))
|
|
261
|
+
|
|
262
|
+
def enterEvent(self, event):
|
|
263
|
+
self.setIcon(icon(self.icon_enum, color=self.hover_color))
|
|
264
|
+
super().enterEvent(event)
|
|
265
|
+
|
|
266
|
+
def leaveEvent(self, event):
|
|
267
|
+
self.setIcon(icon(self.icon_enum, color=self.default_color))
|
|
268
|
+
super().leaveEvent(event)
|
|
@@ -47,6 +47,9 @@ from celldetective.gui.gui_utils import (
|
|
|
47
47
|
from celldetective.gui.base.figure_canvas import FigureCanvas
|
|
48
48
|
from celldetective.gui.base.utils import center_window
|
|
49
49
|
import gc
|
|
50
|
+
from celldetective import get_logger
|
|
51
|
+
|
|
52
|
+
logger = get_logger(__name__)
|
|
50
53
|
|
|
51
54
|
|
|
52
55
|
class BaseAnnotator(CelldetectiveMainWindow, Styles):
|
|
@@ -364,7 +367,7 @@ class BaseAnnotator(CelldetectiveMainWindow, Styles):
|
|
|
364
367
|
self.correct_btn.disconnect()
|
|
365
368
|
self.correct_btn.clicked.connect(self.show_annotation_buttons)
|
|
366
369
|
|
|
367
|
-
|
|
370
|
+
logger.info(f"{self.selection=}")
|
|
368
371
|
|
|
369
372
|
ind = event.ind
|
|
370
373
|
|
|
@@ -711,7 +714,7 @@ class BaseAnnotator(CelldetectiveMainWindow, Styles):
|
|
|
711
714
|
try:
|
|
712
715
|
self.df_tracks = self.df_tracks.drop([c], axis=1)
|
|
713
716
|
except Exception as e:
|
|
714
|
-
|
|
717
|
+
logger.error(e)
|
|
715
718
|
item_idx = self.class_choice_cb.findText(class_to_delete)
|
|
716
719
|
self.class_choice_cb.removeItem(item_idx)
|
|
717
720
|
|
|
@@ -755,7 +758,7 @@ class BaseAnnotator(CelldetectiveMainWindow, Styles):
|
|
|
755
758
|
self.log_btn.setIcon(icon(MDI6.math_log, color="black"))
|
|
756
759
|
self.log_scale = False
|
|
757
760
|
except Exception as e:
|
|
758
|
-
|
|
761
|
+
logger.error(e)
|
|
759
762
|
|
|
760
763
|
# self.cell_ax.autoscale()
|
|
761
764
|
self.cell_fcanvas.canvas.draw_idle()
|
|
@@ -839,9 +842,9 @@ class BaseAnnotator(CelldetectiveMainWindow, Styles):
|
|
|
839
842
|
pathsave += ".npy"
|
|
840
843
|
try:
|
|
841
844
|
np.save(pathsave, training_set)
|
|
842
|
-
|
|
845
|
+
logger.info(f"File successfully written in {pathsave}.")
|
|
843
846
|
except Exception as e:
|
|
844
|
-
|
|
847
|
+
logger.error(f"Error {e}...")
|
|
845
848
|
|
|
846
849
|
def create_new_event_class(self):
|
|
847
850
|
|
|
@@ -897,10 +900,11 @@ class BaseAnnotator(CelldetectiveMainWindow, Styles):
|
|
|
897
900
|
|
|
898
901
|
def save_trajectories(self):
|
|
899
902
|
# specific to signal/static annotator
|
|
900
|
-
|
|
903
|
+
logger.info(
|
|
904
|
+
"Save trajectory function not implemented for BaseAnnotator class..."
|
|
905
|
+
)
|
|
901
906
|
|
|
902
907
|
def cancel_selection(self):
|
|
903
|
-
print("we are in cancel selection...")
|
|
904
908
|
self.hide_annotation_buttons()
|
|
905
909
|
self.correct_btn.setEnabled(False)
|
|
906
910
|
self.correct_btn.setText("correct")
|