CellProfiler-nightly 5.0.0.dev738__tar.gz → 5.0.0.dev745__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.
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/CellProfiler_nightly.egg-info/PKG-INFO +1 -1
- cellprofiler_nightly-5.0.0.dev745/CellProfiler_nightly.egg-info/scm_version.json +8 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/PKG-INFO +1 -1
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/_version.py +3 -3
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/splitormergeobjects.py +103 -280
- cellprofiler_nightly-5.0.0.dev738/CellProfiler_nightly.egg-info/scm_version.json +0 -8
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/CellProfiler_nightly.egg-info/SOURCES.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/CellProfiler_nightly.egg-info/dependency_links.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/CellProfiler_nightly.egg-info/entry_points.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/CellProfiler_nightly.egg-info/requires.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/CellProfiler_nightly.egg-info/scm_file_list.json +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/CellProfiler_nightly.egg-info/top_level.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/LICENSE +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/README.md +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/__main__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/examples/ExampleFly/ExampleFly.cppipe +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/examples/ExampleFly/images/01_POS002_D.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/examples/ExampleFly/images/01_POS002_F.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/examples/ExampleFly/images/01_POS002_R.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/examples/ExampleFly/images/01_POS076_D.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/examples/ExampleFly/images/01_POS076_F.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/examples/ExampleFly/images/01_POS076_R.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/examples/ExampleFly/images/01_POS218_D.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/examples/ExampleFly/images/01_POS218_F.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/examples/ExampleFly/images/01_POS218_R.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/help/display_image_tools.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/help/display_interactive_navigation.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/help/display_menu_bar.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/help/legacy_matlab_image.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/help/navigation_edit_menu.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/help/navigation_file_menu.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/help/navigation_test_menu.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/help/navigation_window_menu.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/help/other_3d_identify.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/help/other_batch.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/help/other_logging.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/help/other_omero.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/help/other_plugins.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/help/other_shell.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/help/other_troubleshooting.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/help/other_widget_inspector.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/help/output_measurements.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/help/output_plateviewer.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/help/output_spreadsheets.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/help/pipelines_building.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/help/pipelines_running.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/help/projects_configure_images.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/help/projects_image_ordering.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/help/projects_image_sequences.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/help/projects_introduction.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/help/projects_selecting_images.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/help/why_use_cellprofiler.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/icons/CellProfiler-favicon-120.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/icons/CellProfiler-favicon-128.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/icons/CellProfiler-favicon-144.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/icons/CellProfiler-favicon-152.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/icons/CellProfiler-favicon-195.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/icons/CellProfiler-favicon-228.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/icons/CellProfiler-favicon-32.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/icons/CellProfiler-favicon-57.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/icons/CellProfiler-favicon-72.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/icons/CellProfiler-favicon-96.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/icons/CellProfiler-favicon.ico +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/icons/CellProfiler.ai +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/icons/CellProfiler.icns +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/icons/CellProfiler.ico +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/icons/CellProfiler.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/icons/CellProfiler.svg +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/icons/CellProfiler_square.svg +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/Align.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/ApplyThreshold.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/CollapseTree.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/ColorToGray.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/CorrectIlluminationApply.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/CorrectIlluminationCalculate.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/Crop.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/ExpandOrShrinkObjects.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/ExpandTree.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/GrayToColor.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/Groups_ExampleDisplayTable.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/IMG_ANALYZED.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/IMG_ANALYZE_16.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/IMG_ANALYZE_24.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/IMG_CLOSED_EYE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/IMG_DISABLED.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/IMG_ERROR.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/IMG_EYE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/IMG_GO.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/IMG_GO_DIM.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/IMG_IMAGE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/IMG_MEASURE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/IMG_OK.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/IMG_PAUSE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/IMG_RUN.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/IMG_SLIDER.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/IMG_SLIDER_ACTIVE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/IMG_STOP.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/IMG_TEST.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/IMG_UNAVAILABLE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/IMG_UPDATE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/IMG_USE_INPUT.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/IMG_USE_OUTPUT.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/IMG_USE_SOURCE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/IMG_WARN.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/IdentifyPrimaryObjects_IntensityDeclumping.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/IdentifyPrimaryObjects_ShapeDeclumping.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/IdentifySecondaryObjects.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/IdentifyTertiaryObjects.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/Images_FilelistPanel.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/Images_FilelistPanel_Blank.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/Images_FilelistPanel_Filled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/Images_UsingRules.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/MeasureGranularity_example.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/MeasureImageAreaOccupied.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/MeasureObjectIntensityDistribution_Edges_Centers.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/MeasureObjectIntensityDistribution_Magnitude_Phase.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/MeasureObjectSizeShape_Eccentricity.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/MeasureTexture.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/Measure_texture_3D_correspondences_1.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/Measure_texture_3D_correspondences_1_highres.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/Measure_texture_3D_correspondences_2.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/Measure_texture_3D_correspondences_2_highres.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/Metadata_ExampleDisplayTable.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/NamesAndTypes_ExampleDisplayTable.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/Tile.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/UnmixColors.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/check.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/color.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/cp_panel_schematic.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/dapi.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/delete.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/downarrow.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/eye-close.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/eye-open.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/ffwd.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/ffwddisabled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/filter.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/folder_browse.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/folder_create.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/gear.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/gfp.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/icon_copyrights.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/illumination_function.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/image_to_object_dataflow.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/image_to_object_dataflow.psd +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/mask.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/microscope-color_16.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/microscope-icon_16.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/microscope-icon_32.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/microscopes_16.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/module_add.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/module_help.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/module_movedown.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/module_moveup.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/module_remove.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/monochrome.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/movie_16.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/next.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/objects.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/pause.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/pausedisabled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/play.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/playdisabled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/previous.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/remove-sign.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/rewind.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/rewinddisabled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/splash-black-text-alpha.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/splash-white-text-alpha.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/splash.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/status_pause.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/status_save.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/status_stop.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/stop.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/stopdisabled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/structuringelement.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/thumb-down.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/thumb-up.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/unchecked.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/wantpony.wav +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/welcome_examples.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/welcome_forum.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/welcome_help.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/welcome_manual.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/welcome_new.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/welcome_pipeline.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/welcome_screen_help.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/welcome_start.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/welcome_tutorial.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/welcomescreen_forum.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/welcomescreen_manual.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/welcomescreen_tutorials.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/window_back.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/window_filesave.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/window_forward.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/window_home.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/window_pan.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/data/images/window_zoom_to_rect.png +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/_tree_checkbox_dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/_welcome_frame.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/_workspace_model.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/addmoduleframe.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/app.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/artist.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/checkupdate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/constants/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/constants/figure.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/constants/module_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/constants/preferences_dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/constants/preferences_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/constants/workspace_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/cpframe.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/editobjectsdlg.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/errordialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/figure/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/figure/_figure.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/figure/_navigation_toolbar.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/figure/_outline_artist.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/gridrenderers.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/help/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/help/content.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/help/menu.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/help/search.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/html/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/html/configure_images_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/html/exporting_results_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/html/getting_started.html +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/html/htmlwindow.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/html/identify_features_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/html/in_app_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/html/making_measurements_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/html/running_pipeline_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/html/selecting_images_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/html/test_mode_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/html/utils.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/html/welcome.html +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/htmldialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/imagesetctrl.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/menu.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/metadatactrl.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/module_view/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/module_view/_binary_matrix_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/module_view/_data_type_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/module_view/_file_collection_display_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/module_view/_filter_panel_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/module_view/_joiner_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/module_view/_module_sizer.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/module_view/_module_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/module_view/_setting_edited_event.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/module_view/_table_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/module_view/_validation_request_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/moduleview.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/namesubscriber.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/omerologin.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/parametersampleframe.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/pathlist.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/pipeline.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/pipelinecontroller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/pipelinelistview.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/plateviewer.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/plugins_menu.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/preferences_dialog/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/preferences_dialog/_integer_preference.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/preferences_dialog/_preferences_dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/preferences_view/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/preferences_view/_preferences_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/preferences_view/_progress_watcher.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/readers_dialog/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/readers_dialog/_readers_dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/regexp_editor.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/tools.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/utilities/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/utilities/figure.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/utilities/icon.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/utilities/module_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/utilities/preferences_dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/utilities/preferences_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/utilities/workspace_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/workspace_view/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/workspace_view/_workspace_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/workspace_view/_workspace_view_figure.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/workspace_view/_workspace_view_image_row.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/workspace_view/_workspace_view_mask_row.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/workspace_view/_workspace_view_measurement_row.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/workspace_view/_workspace_view_objects_row.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/gui/workspace_view/_workspace_view_row.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/icons/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/knime_bridge.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/misc.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/UntangleWorms.xsd +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/_help.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/calculatemath.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/calculatestatistics.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/classifyobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/closing.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/colortogray.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/combineobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/convertimagetoobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/convertobjectstoimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/correctilluminationapply.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/correctilluminationcalculate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/createbatchfiles.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/crop.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/definegrid.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/dilateimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/dilateobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/displaydataonimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/displaydensityplot.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/displayhistogram.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/displayplatemap.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/displayscatterplot.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/editobjectsmanually.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/enhanceedges.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/enhanceorsuppressfeatures.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/erodeimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/erodeobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/expandorshrinkobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/exporttodatabase.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/exporttospreadsheet.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/fillobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/filterobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/findmaxima.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/flagimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/flipandrotate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/gaussianfilter.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/graytocolor.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/identifydeadworms.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/identifyobjectsingrid.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/identifyobjectsmanually.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/identifyprimaryobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/identifysecondaryobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/identifytertiaryobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/imagemath.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/invertforprinting.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/labelimages.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/makeprojection.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/maskimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/maskobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/matchtemplate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/measurecolocalization.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/measuregranularity.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/measureimageareaoccupied.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/measureimageintensity.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/measureimageoverlap.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/measureimagequality.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/measureimageskeleton.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/measureobjectintensity.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/measureobjectintensitydistribution.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/measureobjectneighbors.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/measureobjectoverlap.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/measureobjectsizeshape.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/measureobjectskeleton.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/measuretexture.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/medialaxis.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/medianfilter.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/morph.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/morphologicalskeleton.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/opening.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/overlayobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/overlayoutlines.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/plugins/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/plugins/imagetemplate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/plugins/measurementtemplate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/plugins/segmentationtemplatewithdependencies.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/reducenoise.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/relateobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/removeholes.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/rescaleintensity.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/resize.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/resizeobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/runimagejmacro.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/savecroppedobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/saveimages.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/shrinktoobjectcenters.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/smooth.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/straightenworms.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/threshold.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/tile.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/trackobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/unmixcolors.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/untangleworms.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/modules/watershed.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/utilities/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/utilities/morphology.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/utilities/rules.py +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/environment.yml +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/pyproject.toml +0 -0
- {cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: CellProfiler-nightly
|
|
3
|
-
Version: 5.0.0.
|
|
3
|
+
Version: 5.0.0.dev745
|
|
4
4
|
Summary: CellProfiler is a free open-source software designed to enable biologists without training in computer vision or programming to quantitatively measure phenotypes from thousands of images automatically.
|
|
5
5
|
Author: Anne Carpenter, Thouis (Ray) Jones, Lee Kamentsky, Vebjorn Ljosa, David Logan, Mark Bray, Madison Swain-Bowden, Allen Goodman, Claire McQuinn, Alice Lucas, Callum Tromans-Coia
|
|
6
6
|
Author-email: Beth Cimini <bcimini@broadinstitute.org>, David Stirling <dstirling@glencoesoftware.com>, Nodar Gogoberidze <ngogober@broadinstitute.org>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: CellProfiler-nightly
|
|
3
|
-
Version: 5.0.0.
|
|
3
|
+
Version: 5.0.0.dev745
|
|
4
4
|
Summary: CellProfiler is a free open-source software designed to enable biologists without training in computer vision or programming to quantitatively measure phenotypes from thousands of images automatically.
|
|
5
5
|
Author: Anne Carpenter, Thouis (Ray) Jones, Lee Kamentsky, Vebjorn Ljosa, David Logan, Mark Bray, Madison Swain-Bowden, Allen Goodman, Claire McQuinn, Alice Lucas, Callum Tromans-Coia
|
|
6
6
|
Author-email: Beth Cimini <bcimini@broadinstitute.org>, David Stirling <dstirling@glencoesoftware.com>, Nodar Gogoberidze <ngogober@broadinstitute.org>
|
{cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/_version.py
RENAMED
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '5.0.0.
|
|
22
|
-
__version_tuple__ = version_tuple = (5, 0, 0, '
|
|
21
|
+
__version__ = version = '5.0.0.dev745'
|
|
22
|
+
__version_tuple__ = version_tuple = (5, 0, 0, 'dev745')
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'gc1d642698'
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import centrosome.cpmorphology
|
|
2
1
|
import numpy
|
|
3
|
-
import
|
|
2
|
+
from cellprofiler.modules import _help
|
|
4
3
|
from cellprofiler_core.constants.measurement import (
|
|
5
4
|
C_PARENT,
|
|
6
5
|
FF_CHILDREN_COUNT,
|
|
@@ -14,13 +13,11 @@ from cellprofiler_core.setting import ValidationError
|
|
|
14
13
|
from cellprofiler_core.setting.choice import Choice
|
|
15
14
|
from cellprofiler_core.setting.subscriber import LabelSubscriber, ImageSubscriber
|
|
16
15
|
from cellprofiler_core.setting.text import Integer, Float, LabelName
|
|
17
|
-
from cellprofiler_core.utilities.core.module.identify import
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
)
|
|
16
|
+
from cellprofiler_core.utilities.core.module.identify import get_object_measurement_columns
|
|
17
|
+
from cellprofiler_core.utilities.core.workspace import add_library_measurements_to_workspace_measurements
|
|
18
|
+
from cellprofiler_library.opts.splitormergeobjects import RelabelOption, MergeOption, MergingMethod, ObjectIntensityMethod
|
|
19
|
+
from cellprofiler_library.modules._splitormergeobjects import split_or_merge_objects
|
|
22
20
|
|
|
23
|
-
from cellprofiler.modules import _help
|
|
24
21
|
|
|
25
22
|
__doc__ = """\
|
|
26
23
|
SplitOrMergeObjects
|
|
@@ -94,19 +91,6 @@ reassignment.
|
|
|
94
91
|
**{"HELP_ON_SAVING_OBJECTS": _help.HELP_ON_SAVING_OBJECTS}
|
|
95
92
|
)
|
|
96
93
|
|
|
97
|
-
OPTION_MERGE = "Merge"
|
|
98
|
-
OPTION_SPLIT = "Split"
|
|
99
|
-
|
|
100
|
-
UNIFY_DISTANCE = "Distance"
|
|
101
|
-
UNIFY_PARENT = "Per-parent"
|
|
102
|
-
|
|
103
|
-
CA_CENTROIDS = "Centroids"
|
|
104
|
-
CA_CLOSEST_POINT = "Closest point"
|
|
105
|
-
|
|
106
|
-
UM_DISCONNECTED = "Disconnected"
|
|
107
|
-
UM_CONVEX_HULL = "Convex hull"
|
|
108
|
-
|
|
109
|
-
|
|
110
94
|
class SplitOrMergeObjects(Module):
|
|
111
95
|
module_name = "SplitOrMergeObjects"
|
|
112
96
|
category = "Object Processing"
|
|
@@ -134,52 +118,59 @@ You can use this name in subsequent modules that take objects as inputs.""",
|
|
|
134
118
|
|
|
135
119
|
self.relabel_option = Choice(
|
|
136
120
|
"Operation",
|
|
137
|
-
[
|
|
121
|
+
[RelabelOption.MERGE.value, RelabelOption.SPLIT.value],
|
|
138
122
|
doc="""\
|
|
139
123
|
You can choose one of the following options:
|
|
140
124
|
|
|
141
|
-
-
|
|
125
|
+
- *{OPTION_MERGE}:* Assign adjacent or nearby objects the same label
|
|
142
126
|
based on certain criteria. It can be useful, for example, to merge
|
|
143
127
|
together touching objects that were incorrectly split into two pieces
|
|
144
128
|
by an **Identify** module.
|
|
145
|
-
-
|
|
129
|
+
- *{OPTION_SPLIT}:* Assign a unique number to separate objects that
|
|
146
130
|
currently share the same label. This can occur if you applied certain
|
|
147
|
-
operations in the **Morph** module to objects."""
|
|
148
|
-
|
|
131
|
+
operations in the **Morph** module to objects.""".format(
|
|
132
|
+
**{"OPTION_MERGE": RelabelOption.MERGE.value, "OPTION_SPLIT": RelabelOption.SPLIT.value}
|
|
133
|
+
),
|
|
149
134
|
)
|
|
150
135
|
|
|
151
136
|
self.merge_option = Choice(
|
|
152
137
|
"Merging method",
|
|
153
|
-
[UNIFY_DISTANCE, UNIFY_PARENT],
|
|
138
|
+
[MergeOption.UNIFY_DISTANCE.value, MergeOption.UNIFY_PARENT.value],
|
|
154
139
|
doc="""\
|
|
155
|
-
*(Used only with the "
|
|
140
|
+
*(Used only with the "{OPTION_MERGE}" option)*
|
|
156
141
|
|
|
157
142
|
You can merge objects in one of two ways:
|
|
158
143
|
|
|
159
|
-
-
|
|
144
|
+
- *{UNIFY_DISTANCE}:* All objects within a certain pixel radius from
|
|
160
145
|
each other will be merged.
|
|
161
|
-
-
|
|
146
|
+
- *{UNIFY_PARENT}:* All objects which share the same parent
|
|
162
147
|
relationship to another object will be merged. This is not to be
|
|
163
148
|
confused with using the **RelateObjects** module, in which the
|
|
164
149
|
related objects remain as individual objects. See **RelateObjects**
|
|
165
|
-
for more details."""
|
|
166
|
-
|
|
150
|
+
for more details.""".format(
|
|
151
|
+
**{
|
|
152
|
+
"OPTION_MERGE": RelabelOption.MERGE.value,
|
|
153
|
+
"UNIFY_DISTANCE": MergeOption.UNIFY_DISTANCE.value,
|
|
154
|
+
"UNIFY_PARENT": MergeOption.UNIFY_PARENT.value
|
|
155
|
+
}
|
|
156
|
+
),
|
|
167
157
|
)
|
|
168
158
|
|
|
169
159
|
self.merging_method = Choice(
|
|
170
160
|
"Output object type",
|
|
171
|
-
[
|
|
161
|
+
[MergingMethod.DISCONNECTED.value, MergingMethod.CONVEX_HULL.value],
|
|
172
162
|
doc="""\
|
|
173
|
-
*(Used only with the "
|
|
163
|
+
*(Used only with the "{UNIFY_PARENT}" merging method)*
|
|
174
164
|
|
|
175
165
|
**SplitOrMergeObjects** can either merge the child objects and keep them
|
|
176
166
|
disconnected or it can find the smallest convex polygon (the convex
|
|
177
167
|
hull) that encloses all of a parent’s child objects. The convex hull
|
|
178
168
|
will be truncated to include only those pixels in the parent - in that
|
|
179
|
-
case it may not truly be convex. Choose
|
|
180
|
-
the children as disconnected pieces. Choose
|
|
181
|
-
create an output object that is the convex hull around them all."""
|
|
182
|
-
|
|
169
|
+
case it may not truly be convex. Choose *{UM_DISCONNECTED}* to leave
|
|
170
|
+
the children as disconnected pieces. Choose *{UM_CONVEX_HULL}* to
|
|
171
|
+
create an output object that is the convex hull around them all.""".format(
|
|
172
|
+
**{"UNIFY_PARENT": MergeOption.UNIFY_PARENT.value, "UM_DISCONNECTED": MergingMethod.DISCONNECTED.value, "UM_CONVEX_HULL": MergingMethod.CONVEX_HULL.value}
|
|
173
|
+
),
|
|
183
174
|
)
|
|
184
175
|
|
|
185
176
|
self.parent_object = Choice(
|
|
@@ -202,32 +193,34 @@ Please note the following:
|
|
|
202
193
|
0,
|
|
203
194
|
minval=0,
|
|
204
195
|
doc="""\
|
|
205
|
-
*(Used only with the "
|
|
196
|
+
*(Used only with the "{OPTION_MERGE}" option and the "{UNIFY_DISTANCE}"
|
|
206
197
|
method)*
|
|
207
198
|
|
|
208
199
|
Objects that are less than or equal to the distance you enter here, in
|
|
209
200
|
pixels, will be merged. If you choose zero (the default), only objects
|
|
210
|
-
that are touching will be merged. Note that
|
|
201
|
+
that are touching will be merged. Note that *{OPTION_MERGE}* will
|
|
211
202
|
not actually connect or bridge the two objects by adding any new pixels;
|
|
212
203
|
it simply assigns the same object number to the portions of the object.
|
|
213
204
|
The new, merged object may therefore consist of two or more unconnected
|
|
214
205
|
components. If you want to add pixels around objects, see
|
|
215
|
-
**ExpandOrShrink** or **Morph**."""
|
|
216
|
-
|
|
206
|
+
**ExpandOrShrink** or **Morph**.""".format(
|
|
207
|
+
**{"OPTION_MERGE": RelabelOption.MERGE.value, "UNIFY_DISTANCE": MergeOption.UNIFY_DISTANCE.value}
|
|
208
|
+
),
|
|
217
209
|
)
|
|
218
210
|
|
|
219
211
|
self.wants_image = Binary(
|
|
220
212
|
"Merge using a grayscale image?",
|
|
221
213
|
False,
|
|
222
214
|
doc="""\
|
|
223
|
-
*(Used only with the "
|
|
215
|
+
*(Used only with the "{OPTION_MERGE}" option)*
|
|
224
216
|
|
|
225
217
|
Select *Yes* to use the objects’ intensity features to determine
|
|
226
218
|
whether two objects should be merged. If you choose to use a grayscale
|
|
227
|
-
image,
|
|
219
|
+
image, *{OPTION_MERGE}* will merge two objects only if they are
|
|
228
220
|
within the distance you have specified *and* certain criteria about the
|
|
229
|
-
objects within the grayscale image are met."""
|
|
230
|
-
|
|
221
|
+
objects within the grayscale image are met.""".format(
|
|
222
|
+
**{"OPTION_MERGE": RelabelOption.MERGE.value}
|
|
223
|
+
),
|
|
231
224
|
)
|
|
232
225
|
|
|
233
226
|
self.image_name = ImageSubscriber(
|
|
@@ -255,7 +248,7 @@ described for the method you choose in the next setting.""",
|
|
|
255
248
|
|
|
256
249
|
self.where_algorithm = Choice(
|
|
257
250
|
"Method to find object intensity",
|
|
258
|
-
[
|
|
251
|
+
[ObjectIntensityMethod.CLOSEST_POINT.value, ObjectIntensityMethod.CENTROIDS.value],
|
|
259
252
|
doc="""\
|
|
260
253
|
*(Used only if a grayscale image is to be used as a guide for
|
|
261
254
|
merging)*
|
|
@@ -264,7 +257,7 @@ You can use one of two methods to determine whether two objects should
|
|
|
264
257
|
merged, assuming they meet the distance criteria (as specified
|
|
265
258
|
above):
|
|
266
259
|
|
|
267
|
-
-
|
|
260
|
+
- *{CA_CENTROIDS}:* When the module considers merging two objects,
|
|
268
261
|
this method identifies the centroid of each object, records the
|
|
269
262
|
intensity value of the dimmer of the two centroids, multiplies this
|
|
270
263
|
value by the *minimum intensity fraction* to generate a threshold,
|
|
@@ -278,7 +271,7 @@ above):
|
|
|
278
271
|
the center of the cell: a single cell that was incorrectly segmented
|
|
279
272
|
into two objects will typically not have a dim line between the
|
|
280
273
|
centroids of the two halves and will be correctly merged.
|
|
281
|
-
-
|
|
274
|
+
- *{CA_CLOSEST_POINT}:* This method is useful for unifying
|
|
282
275
|
irregularly shaped cells that are connected. It starts by assigning
|
|
283
276
|
background pixels in the vicinity of the objects to the nearest
|
|
284
277
|
object. Objects are then merged if each object has background pixels
|
|
@@ -291,8 +284,9 @@ above):
|
|
|
291
284
|
An example of a feature that satisfies the above constraints is a
|
|
292
285
|
line of pixels that connects two neighboring objects and is roughly
|
|
293
286
|
the same intensity as the boundary pixels of both (such as an axon
|
|
294
|
-
connecting two neurons' soma)."""
|
|
295
|
-
|
|
287
|
+
connecting two neurons' soma).""".format(
|
|
288
|
+
**{"CA_CENTROIDS": ObjectIntensityMethod.CENTROIDS.value, "CA_CLOSEST_POINT": ObjectIntensityMethod.CLOSEST_POINT.value}
|
|
289
|
+
),
|
|
296
290
|
)
|
|
297
291
|
|
|
298
292
|
def get_parent_choices(self, pipeline):
|
|
@@ -306,8 +300,8 @@ above):
|
|
|
306
300
|
|
|
307
301
|
def validate_module(self, pipeline):
|
|
308
302
|
if (
|
|
309
|
-
self.relabel_option ==
|
|
310
|
-
and self.merge_option == UNIFY_PARENT
|
|
303
|
+
self.relabel_option == RelabelOption.MERGE.value
|
|
304
|
+
and self.merge_option == MergeOption.UNIFY_PARENT.value
|
|
311
305
|
and self.parent_object.value == "None"
|
|
312
306
|
):
|
|
313
307
|
raise ValidationError(
|
|
@@ -331,9 +325,9 @@ above):
|
|
|
331
325
|
|
|
332
326
|
def visible_settings(self):
|
|
333
327
|
result = [self.objects_name, self.output_objects_name, self.relabel_option]
|
|
334
|
-
if self.relabel_option ==
|
|
328
|
+
if self.relabel_option == RelabelOption.MERGE.value:
|
|
335
329
|
result += [self.merge_option]
|
|
336
|
-
if self.merge_option == UNIFY_DISTANCE:
|
|
330
|
+
if self.merge_option == MergeOption.UNIFY_DISTANCE.value:
|
|
337
331
|
result += [self.distance_threshold, self.wants_image]
|
|
338
332
|
if self.wants_image:
|
|
339
333
|
result += [
|
|
@@ -341,105 +335,72 @@ above):
|
|
|
341
335
|
self.minimum_intensity_fraction,
|
|
342
336
|
self.where_algorithm,
|
|
343
337
|
]
|
|
344
|
-
elif self.merge_option == UNIFY_PARENT:
|
|
338
|
+
elif self.merge_option == MergeOption.UNIFY_PARENT.value:
|
|
345
339
|
result += [self.merging_method, self.parent_object]
|
|
346
340
|
return result
|
|
347
341
|
|
|
348
342
|
def run(self, workspace):
|
|
343
|
+
#
|
|
344
|
+
# Construct arguments for split_or_merge_objects
|
|
345
|
+
#
|
|
349
346
|
objects_name = self.objects_name.value
|
|
350
347
|
objects = workspace.object_set.get_objects(objects_name)
|
|
351
348
|
assert isinstance(objects, Objects)
|
|
352
349
|
labels = objects.segmented
|
|
353
|
-
if self.relabel_option == OPTION_SPLIT:
|
|
354
|
-
output_labels, count = scipy.ndimage.label(
|
|
355
|
-
labels > 0, numpy.ones((3, 3), bool)
|
|
356
|
-
)
|
|
357
|
-
else:
|
|
358
|
-
if self.merge_option == UNIFY_DISTANCE:
|
|
359
|
-
mask = labels > 0
|
|
360
|
-
if self.distance_threshold.value > 0:
|
|
361
|
-
#
|
|
362
|
-
# Take the distance transform of the reverse of the mask
|
|
363
|
-
# and figure out what points are less than 1/2 of the
|
|
364
|
-
# distance from an object.
|
|
365
|
-
#
|
|
366
|
-
d = scipy.ndimage.distance_transform_edt(~mask)
|
|
367
|
-
mask = d < self.distance_threshold.value / 2 + 1
|
|
368
|
-
output_labels, count = scipy.ndimage.label(
|
|
369
|
-
mask, numpy.ones((3, 3), bool)
|
|
370
|
-
)
|
|
371
|
-
output_labels[labels == 0] = 0
|
|
372
|
-
if self.wants_image:
|
|
373
|
-
output_labels = self.filter_using_image(workspace, mask)
|
|
374
|
-
elif self.merge_option == UNIFY_PARENT:
|
|
375
|
-
parents_name = self.parent_object.value
|
|
376
|
-
parents_of = workspace.measurements[
|
|
377
|
-
objects_name, "_".join((C_PARENT, parents_name))
|
|
378
|
-
]
|
|
379
|
-
output_labels = labels.copy().astype(numpy.uint32)
|
|
380
|
-
output_labels[labels > 0] = parents_of[labels[labels > 0] - 1]
|
|
381
|
-
if self.merging_method == UM_CONVEX_HULL:
|
|
382
|
-
ch_pts, n_pts = centrosome.cpmorphology.convex_hull(output_labels)
|
|
383
|
-
ijv = centrosome.cpmorphology.fill_convex_hulls(ch_pts, n_pts)
|
|
384
|
-
output_labels[ijv[:, 0], ijv[:, 1]] = ijv[:, 2]
|
|
385
|
-
|
|
386
|
-
#Renumber to be consecutive
|
|
387
|
-
## Create an array that maps label indexes to their new values
|
|
388
|
-
## All labels to be deleted have a value in this array of zero
|
|
389
|
-
indexes = numpy.unique(output_labels)[1:]
|
|
390
|
-
new_object_count = len(indexes)
|
|
391
|
-
max_label = numpy.max(output_labels)
|
|
392
|
-
label_indexes = numpy.zeros((max_label + 1,), int)
|
|
393
|
-
label_indexes[indexes] = numpy.arange(1, new_object_count + 1)
|
|
394
|
-
|
|
395
|
-
# Reindex the labels of the old source image
|
|
396
|
-
output_labels = label_indexes[output_labels]
|
|
397
350
|
|
|
351
|
+
parents_of = None
|
|
352
|
+
if self.merge_option == MergeOption.UNIFY_PARENT.value:
|
|
353
|
+
feature_name = "_".join((C_PARENT, self.parent_object.value))
|
|
354
|
+
parents_of = workspace.measurements[objects_name, feature_name]
|
|
355
|
+
|
|
356
|
+
image = None
|
|
357
|
+
if self.relabel_option.value != RelabelOption.SPLIT.value and self.merge_option.value == MergeOption.UNIFY_DISTANCE.value and self.wants_image.value:
|
|
358
|
+
image = self.get_image(workspace)
|
|
359
|
+
|
|
360
|
+
#
|
|
361
|
+
# Run split_or_merge_objects
|
|
362
|
+
#
|
|
363
|
+
output_labels, output_small_removed_segmented, output_unedited_segmented, lib_measurements = split_or_merge_objects(
|
|
364
|
+
labels=labels,
|
|
365
|
+
relabel_option=RelabelOption(self.relabel_option.value),
|
|
366
|
+
objects_name=objects_name,
|
|
367
|
+
objects_small_removed_segmented=objects.small_removed_segmented if objects.has_small_removed_segmented else None,
|
|
368
|
+
objects_unedited_segmented=objects.unedited_segmented if objects.has_unedited_segmented else None,
|
|
369
|
+
parent_name=self.parent_object.value,
|
|
370
|
+
merge_option=MergeOption(self.merge_option.value),
|
|
371
|
+
distance_threshold=self.distance_threshold.value,
|
|
372
|
+
parents_of=parents_of,
|
|
373
|
+
merging_method=self.merging_method.value,
|
|
374
|
+
image=image,
|
|
375
|
+
merge_condition=self.where_algorithm.value,
|
|
376
|
+
minimum_intensity_fraction=self.minimum_intensity_fraction.value,
|
|
377
|
+
output_objects_name = self.output_objects_name.value,
|
|
378
|
+
output_object_volumetric=objects.volumetric,
|
|
379
|
+
labels_ijv=objects.ijv,
|
|
380
|
+
return_measurements=True
|
|
381
|
+
)
|
|
382
|
+
|
|
383
|
+
#
|
|
384
|
+
# Add the outputs of the split_or_merge_objects to the workspace
|
|
385
|
+
#
|
|
398
386
|
output_objects = Objects()
|
|
399
387
|
output_objects.segmented = output_labels
|
|
400
|
-
if
|
|
401
|
-
output_objects.small_removed_segmented =
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
if objects.has_unedited_segmented:
|
|
405
|
-
output_objects.unedited_segmented = copy_labels(
|
|
406
|
-
objects.unedited_segmented, output_labels
|
|
407
|
-
)
|
|
388
|
+
if output_small_removed_segmented is not None:
|
|
389
|
+
output_objects.small_removed_segmented = output_small_removed_segmented
|
|
390
|
+
if output_unedited_segmented is not None:
|
|
391
|
+
output_objects.unedited_segmented = output_unedited_segmented
|
|
408
392
|
output_objects.parent_image = objects.parent_image
|
|
409
393
|
workspace.object_set.add_objects(output_objects, self.output_objects_name.value)
|
|
410
394
|
|
|
411
395
|
measurements = workspace.measurements
|
|
412
|
-
|
|
413
|
-
measurements,
|
|
414
|
-
self.output_objects_name.value,
|
|
415
|
-
numpy.max(output_objects.segmented),
|
|
416
|
-
)
|
|
417
|
-
add_object_location_measurements(
|
|
418
|
-
measurements, self.output_objects_name.value, output_objects.segmented
|
|
419
|
-
)
|
|
420
|
-
|
|
421
|
-
#
|
|
422
|
-
# Relate the output objects to the input ones and record
|
|
423
|
-
# the relationship.
|
|
424
|
-
#
|
|
425
|
-
children_per_parent, parents_of_children = objects.relate_children(
|
|
426
|
-
output_objects
|
|
427
|
-
)
|
|
428
|
-
measurements.add_measurement(
|
|
429
|
-
self.objects_name.value,
|
|
430
|
-
FF_CHILDREN_COUNT % self.output_objects_name.value,
|
|
431
|
-
children_per_parent,
|
|
432
|
-
)
|
|
433
|
-
measurements.add_measurement(
|
|
434
|
-
self.output_objects_name.value,
|
|
435
|
-
FF_PARENT % self.objects_name.value,
|
|
436
|
-
parents_of_children,
|
|
437
|
-
)
|
|
396
|
+
add_library_measurements_to_workspace_measurements(measurements, lib_measurements)
|
|
438
397
|
|
|
439
398
|
if self.show_window:
|
|
399
|
+
if image is not None:
|
|
400
|
+
workspace.display_data.image = image
|
|
440
401
|
workspace.display_data.orig_labels = objects.segmented
|
|
441
402
|
workspace.display_data.output_labels = output_objects.segmented
|
|
442
|
-
if self.merge_option == UNIFY_PARENT:
|
|
403
|
+
if self.merge_option == MergeOption.UNIFY_PARENT.value:
|
|
443
404
|
workspace.display_data.parent_labels = workspace.object_set.get_objects(
|
|
444
405
|
self.parent_object.value
|
|
445
406
|
).segmented
|
|
@@ -455,11 +416,11 @@ above):
|
|
|
455
416
|
0, 0, workspace.display_data.orig_labels, title=self.objects_name.value
|
|
456
417
|
)
|
|
457
418
|
|
|
458
|
-
if self.relabel_option ==
|
|
459
|
-
(self.merge_option == UNIFY_DISTANCE and self.wants_image)
|
|
460
|
-
or (self.merge_option == UNIFY_PARENT)
|
|
419
|
+
if self.relabel_option == RelabelOption.MERGE.value and (
|
|
420
|
+
(self.merge_option == MergeOption.UNIFY_DISTANCE.value and self.wants_image)
|
|
421
|
+
or (self.merge_option == MergeOption.UNIFY_PARENT.value)
|
|
461
422
|
):
|
|
462
|
-
if self.merge_option == UNIFY_DISTANCE and self.wants_image:
|
|
423
|
+
if self.merge_option == MergeOption.UNIFY_DISTANCE.value and self.wants_image:
|
|
463
424
|
image = workspace.display_data.image
|
|
464
425
|
cplabels = [
|
|
465
426
|
dict(
|
|
@@ -472,7 +433,7 @@ above):
|
|
|
472
433
|
),
|
|
473
434
|
]
|
|
474
435
|
|
|
475
|
-
elif self.merge_option == UNIFY_PARENT:
|
|
436
|
+
elif self.merge_option == MergeOption.UNIFY_PARENT.value:
|
|
476
437
|
image = numpy.zeros(workspace.display_data.output_labels.shape)
|
|
477
438
|
cplabels = [
|
|
478
439
|
dict(
|
|
@@ -516,132 +477,6 @@ above):
|
|
|
516
477
|
sharexy=ax,
|
|
517
478
|
)
|
|
518
479
|
|
|
519
|
-
def filter_using_image(self, workspace, mask):
|
|
520
|
-
"""Filter out connections using local intensity minima between objects
|
|
521
|
-
|
|
522
|
-
workspace - the workspace for the image set
|
|
523
|
-
mask - mask of background points within the minimum distance
|
|
524
|
-
"""
|
|
525
|
-
#
|
|
526
|
-
# NOTE: This is an efficient implementation and an improvement
|
|
527
|
-
# in accuracy over the Matlab version. It would be faster and
|
|
528
|
-
# more accurate to eliminate the line-connecting and instead
|
|
529
|
-
# do the following:
|
|
530
|
-
# * Distance transform to get the coordinates of the closest
|
|
531
|
-
# point in an object for points in the background that are
|
|
532
|
-
# at most 1/2 of the max distance between objects.
|
|
533
|
-
# * Take the intensity at this closest point and similarly
|
|
534
|
-
# label the background point if the background intensity
|
|
535
|
-
# is at least the minimum intensity fraction
|
|
536
|
-
# * Assume there is a connection between objects if, after this
|
|
537
|
-
# labeling, there are adjacent points in each object.
|
|
538
|
-
#
|
|
539
|
-
# As it is, the algorithm duplicates the Matlab version but suffers
|
|
540
|
-
# for cells whose intensity isn't high in the centroid and clearly
|
|
541
|
-
# suffers when two cells touch at some point that's off of the line
|
|
542
|
-
# between the two.
|
|
543
|
-
#
|
|
544
|
-
objects = workspace.object_set.get_objects(self.objects_name.value)
|
|
545
|
-
labels = objects.segmented
|
|
546
|
-
image = self.get_image(workspace)
|
|
547
|
-
if self.show_window:
|
|
548
|
-
# Save the image for display
|
|
549
|
-
workspace.display_data.image = image
|
|
550
|
-
#
|
|
551
|
-
# Do a distance transform into the background to label points
|
|
552
|
-
# in the background with their closest foreground object
|
|
553
|
-
#
|
|
554
|
-
i, j = scipy.ndimage.distance_transform_edt(
|
|
555
|
-
labels == 0, return_indices=True, return_distances=False
|
|
556
|
-
)
|
|
557
|
-
confluent_labels = labels[i, j]
|
|
558
|
-
confluent_labels[~mask] = 0
|
|
559
|
-
if self.where_algorithm == CA_CLOSEST_POINT:
|
|
560
|
-
#
|
|
561
|
-
# For the closest point method, find the intensity at
|
|
562
|
-
# the closest point in the object (which will be the point itself
|
|
563
|
-
# for points in the object).
|
|
564
|
-
#
|
|
565
|
-
object_intensity = image[i, j] * self.minimum_intensity_fraction.value
|
|
566
|
-
confluent_labels[object_intensity > image] = 0
|
|
567
|
-
count, index, c_j = centrosome.cpmorphology.find_neighbors(confluent_labels)
|
|
568
|
-
if len(c_j) == 0:
|
|
569
|
-
# Nobody touches - return the labels matrix
|
|
570
|
-
return labels
|
|
571
|
-
#
|
|
572
|
-
# Make a row of i matching the touching j
|
|
573
|
-
#
|
|
574
|
-
c_i = numpy.zeros(len(c_j))
|
|
575
|
-
#
|
|
576
|
-
# Eliminate labels without matches
|
|
577
|
-
#
|
|
578
|
-
label_numbers = numpy.arange(1, len(count) + 1)[count > 0]
|
|
579
|
-
index = index[count > 0]
|
|
580
|
-
count = count[count > 0]
|
|
581
|
-
#
|
|
582
|
-
# Get the differences between labels so we can use a cumsum trick
|
|
583
|
-
# to increment to the next label when they change
|
|
584
|
-
#
|
|
585
|
-
label_numbers[1:] = label_numbers[1:] - label_numbers[:-1]
|
|
586
|
-
c_i[index] = label_numbers
|
|
587
|
-
c_i = numpy.cumsum(c_i).astype(int)
|
|
588
|
-
if self.where_algorithm == CA_CENTROIDS:
|
|
589
|
-
#
|
|
590
|
-
# Only connect points > minimum intensity fraction
|
|
591
|
-
#
|
|
592
|
-
center_i, center_j = centrosome.cpmorphology.centers_of_labels(labels)
|
|
593
|
-
indexes, counts, i, j = centrosome.cpmorphology.get_line_pts(
|
|
594
|
-
center_i[c_i - 1],
|
|
595
|
-
center_j[c_i - 1],
|
|
596
|
-
center_i[c_j - 1],
|
|
597
|
-
center_j[c_j - 1],
|
|
598
|
-
)
|
|
599
|
-
#
|
|
600
|
-
# The indexes of the centroids at pt1
|
|
601
|
-
#
|
|
602
|
-
last_indexes = indexes + counts - 1
|
|
603
|
-
#
|
|
604
|
-
# The minimum of the intensities at pt0 and pt1
|
|
605
|
-
#
|
|
606
|
-
centroid_intensities = numpy.minimum(
|
|
607
|
-
image[i[indexes], j[indexes]], image[i[last_indexes], j[last_indexes]]
|
|
608
|
-
)
|
|
609
|
-
#
|
|
610
|
-
# Assign label numbers to each point so we can use
|
|
611
|
-
# scipy.ndimage.minimum. The label numbers are indexes into
|
|
612
|
-
# "connections" above.
|
|
613
|
-
#
|
|
614
|
-
pt_labels = numpy.zeros(len(i), int)
|
|
615
|
-
pt_labels[indexes[1:]] = 1
|
|
616
|
-
pt_labels = numpy.cumsum(pt_labels)
|
|
617
|
-
minima = scipy.ndimage.minimum(
|
|
618
|
-
image[i, j], pt_labels, numpy.arange(len(indexes))
|
|
619
|
-
)
|
|
620
|
-
minima = centrosome.cpmorphology.fixup_scipy_ndimage_result(minima)
|
|
621
|
-
#
|
|
622
|
-
# Filter the connections using the image
|
|
623
|
-
#
|
|
624
|
-
mif = self.minimum_intensity_fraction.value
|
|
625
|
-
i = c_i[centroid_intensities * mif <= minima]
|
|
626
|
-
j = c_j[centroid_intensities * mif <= minima]
|
|
627
|
-
else:
|
|
628
|
-
i = c_i
|
|
629
|
-
j = c_j
|
|
630
|
-
#
|
|
631
|
-
# Add in connections from self to self
|
|
632
|
-
#
|
|
633
|
-
unique_labels = numpy.unique(labels)
|
|
634
|
-
i = numpy.hstack((i, unique_labels))
|
|
635
|
-
j = numpy.hstack((j, unique_labels))
|
|
636
|
-
#
|
|
637
|
-
# Run "all_connected_components" to get a component # for
|
|
638
|
-
# objects identified as same.
|
|
639
|
-
#
|
|
640
|
-
new_indexes = centrosome.cpmorphology.all_connected_components(i, j)
|
|
641
|
-
new_labels = numpy.zeros(labels.shape, int)
|
|
642
|
-
new_labels[labels != 0] = new_indexes[labels[labels != 0]]
|
|
643
|
-
return new_labels
|
|
644
|
-
|
|
645
480
|
def upgrade_settings(self, setting_values, variable_revision_number, module_name):
|
|
646
481
|
if variable_revision_number == 1:
|
|
647
482
|
# Added outline options
|
|
@@ -650,11 +485,11 @@ above):
|
|
|
650
485
|
|
|
651
486
|
if variable_revision_number == 1:
|
|
652
487
|
# Added per-parent unification
|
|
653
|
-
setting_values += [UNIFY_DISTANCE, "None"]
|
|
488
|
+
setting_values += [MergeOption.UNIFY_DISTANCE.value, "None"]
|
|
654
489
|
variable_revision_number = 3
|
|
655
490
|
|
|
656
491
|
if variable_revision_number == 3:
|
|
657
|
-
setting_values = setting_values + [
|
|
492
|
+
setting_values = setting_values + [MergingMethod.DISCONNECTED.value]
|
|
658
493
|
variable_revision_number = 4
|
|
659
494
|
|
|
660
495
|
if variable_revision_number == 4:
|
|
@@ -726,15 +561,3 @@ above):
|
|
|
726
561
|
return ["%s_Count" % self.output_objects_name.value]
|
|
727
562
|
return []
|
|
728
563
|
|
|
729
|
-
|
|
730
|
-
def copy_labels(labels, segmented):
|
|
731
|
-
"""Carry differences between orig_segmented and new_segmented into "labels"
|
|
732
|
-
|
|
733
|
-
labels - labels matrix similarly segmented to "segmented"
|
|
734
|
-
segmented - the newly numbered labels matrix (a subset of pixels are labeled)
|
|
735
|
-
"""
|
|
736
|
-
max_labels = len(numpy.unique(segmented))
|
|
737
|
-
seglabel = scipy.ndimage.minimum(labels, segmented, numpy.arange(1, max_labels + 1))
|
|
738
|
-
labels_new = labels.copy()
|
|
739
|
-
labels_new[segmented != 0] = seglabel[segmented[segmented != 0] - 1]
|
|
740
|
-
return labels_new
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/__init__.py
RENAMED
|
File without changes
|
{cellprofiler_nightly-5.0.0.dev738 → cellprofiler_nightly-5.0.0.dev745}/cellprofiler/__main__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|