CellProfiler-nightly 5.0.0.dev538__tar.gz → 5.0.0.dev548__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.dev538 → cellprofiler_nightly-5.0.0.dev548}/CellProfiler_nightly.egg-info/PKG-INFO +1 -1
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/PKG-INFO +1 -1
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/_version.py +3 -3
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/measureimageskeleton.py +15 -107
- cellprofiler_nightly-5.0.0.dev548/cellprofiler/modules/measureobjectoverlap.py +344 -0
- cellprofiler_nightly-5.0.0.dev538/cellprofiler/modules/measureobjectoverlap.py +0 -984
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/CellProfiler_nightly.egg-info/SOURCES.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/CellProfiler_nightly.egg-info/dependency_links.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/CellProfiler_nightly.egg-info/entry_points.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/CellProfiler_nightly.egg-info/requires.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/CellProfiler_nightly.egg-info/top_level.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/LICENSE +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/README.md +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/__main__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/examples/ExampleFly/ExampleFly.cppipe +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/examples/ExampleFly/images/01_POS002_D.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/examples/ExampleFly/images/01_POS002_F.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/examples/ExampleFly/images/01_POS002_R.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/examples/ExampleFly/images/01_POS076_D.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/examples/ExampleFly/images/01_POS076_F.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/examples/ExampleFly/images/01_POS076_R.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/examples/ExampleFly/images/01_POS218_D.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/examples/ExampleFly/images/01_POS218_F.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/examples/ExampleFly/images/01_POS218_R.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/help/display_image_tools.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/help/display_interactive_navigation.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/help/display_menu_bar.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/help/legacy_matlab_image.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/help/navigation_edit_menu.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/help/navigation_file_menu.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/help/navigation_test_menu.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/help/navigation_window_menu.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/help/other_3d_identify.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/help/other_batch.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/help/other_logging.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/help/other_omero.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/help/other_plugins.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/help/other_shell.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/help/other_troubleshooting.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/help/other_widget_inspector.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/help/output_measurements.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/help/output_plateviewer.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/help/output_spreadsheets.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/help/pipelines_building.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/help/pipelines_running.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/help/projects_configure_images.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/help/projects_image_ordering.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/help/projects_image_sequences.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/help/projects_introduction.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/help/projects_selecting_images.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/help/why_use_cellprofiler.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/icons/CellProfiler-favicon-120.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/icons/CellProfiler-favicon-128.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/icons/CellProfiler-favicon-144.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/icons/CellProfiler-favicon-152.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/icons/CellProfiler-favicon-195.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/icons/CellProfiler-favicon-228.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/icons/CellProfiler-favicon-32.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/icons/CellProfiler-favicon-57.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/icons/CellProfiler-favicon-72.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/icons/CellProfiler-favicon-96.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/icons/CellProfiler-favicon.ico +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/icons/CellProfiler.ai +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/icons/CellProfiler.icns +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/icons/CellProfiler.ico +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/icons/CellProfiler.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/icons/CellProfiler.svg +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/icons/CellProfiler_square.svg +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/Align.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/ApplyThreshold.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/CollapseTree.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/ColorToGray.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/CorrectIlluminationApply.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/CorrectIlluminationCalculate.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/Crop.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/ExpandOrShrinkObjects.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/ExpandTree.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/GrayToColor.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/Groups_ExampleDisplayTable.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/IMG_ANALYZED.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/IMG_ANALYZE_16.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/IMG_ANALYZE_24.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/IMG_CLOSED_EYE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/IMG_DISABLED.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/IMG_ERROR.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/IMG_EYE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/IMG_GO.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/IMG_GO_DIM.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/IMG_IMAGE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/IMG_MEASURE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/IMG_OK.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/IMG_PAUSE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/IMG_RUN.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/IMG_SLIDER.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/IMG_SLIDER_ACTIVE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/IMG_STOP.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/IMG_TEST.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/IMG_UNAVAILABLE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/IMG_UPDATE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/IMG_USE_INPUT.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/IMG_USE_OUTPUT.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/IMG_USE_SOURCE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/IMG_WARN.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/IdentifyPrimaryObjects_IntensityDeclumping.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/IdentifyPrimaryObjects_ShapeDeclumping.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/IdentifySecondaryObjects.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/IdentifyTertiaryObjects.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/Images_FilelistPanel.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/Images_FilelistPanel_Blank.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/Images_FilelistPanel_Filled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/Images_UsingRules.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/MeasureGranularity_example.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/MeasureImageAreaOccupied.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/MeasureObjectIntensityDistribution_Edges_Centers.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/MeasureObjectIntensityDistribution_Magnitude_Phase.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/MeasureObjectSizeShape_Eccentricity.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/MeasureTexture.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/Measure_texture_3D_correspondences_1.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/Measure_texture_3D_correspondences_1_highres.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/Measure_texture_3D_correspondences_2.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/Measure_texture_3D_correspondences_2_highres.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/Metadata_ExampleDisplayTable.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/NamesAndTypes_ExampleDisplayTable.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/Tile.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/UnmixColors.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/check.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/color.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/cp_panel_schematic.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/dapi.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/delete.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/downarrow.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/eye-close.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/eye-open.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/ffwd.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/ffwddisabled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/filter.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/folder_browse.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/folder_create.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/gear.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/gfp.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/icon_copyrights.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/illumination_function.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/image_to_object_dataflow.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/image_to_object_dataflow.psd +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/mask.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/microscope-color_16.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/microscope-icon_16.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/microscope-icon_32.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/microscopes_16.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/module_add.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/module_help.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/module_movedown.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/module_moveup.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/module_remove.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/monochrome.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/movie_16.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/next.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/objects.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/pause.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/pausedisabled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/play.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/playdisabled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/previous.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/remove-sign.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/rewind.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/rewinddisabled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/splash-black-text-alpha.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/splash-white-text-alpha.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/splash.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/status_pause.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/status_save.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/status_stop.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/stop.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/stopdisabled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/structuringelement.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/thumb-down.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/thumb-up.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/unchecked.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/wantpony.wav +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/welcome_examples.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/welcome_forum.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/welcome_help.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/welcome_manual.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/welcome_new.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/welcome_pipeline.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/welcome_screen_help.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/welcome_start.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/welcome_tutorial.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/welcomescreen_forum.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/welcomescreen_manual.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/welcomescreen_tutorials.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/window_back.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/window_filesave.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/window_forward.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/window_home.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/window_pan.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/data/images/window_zoom_to_rect.png +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/_tree_checkbox_dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/_welcome_frame.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/_workspace_model.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/addmoduleframe.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/app.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/artist.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/checkupdate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/constants/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/constants/figure.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/constants/module_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/constants/preferences_dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/constants/preferences_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/constants/workspace_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/cpframe.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/editobjectsdlg.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/errordialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/figure/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/figure/_figure.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/figure/_navigation_toolbar.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/figure/_outline_artist.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/gridrenderers.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/help/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/help/content.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/help/menu.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/help/search.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/html/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/html/configure_images_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/html/exporting_results_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/html/getting_started.html +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/html/htmlwindow.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/html/identify_features_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/html/in_app_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/html/making_measurements_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/html/running_pipeline_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/html/selecting_images_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/html/test_mode_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/html/utils.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/html/welcome.html +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/htmldialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/imagesetctrl.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/menu.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/metadatactrl.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/module_view/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/module_view/_binary_matrix_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/module_view/_data_type_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/module_view/_file_collection_display_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/module_view/_filter_panel_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/module_view/_joiner_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/module_view/_module_sizer.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/module_view/_module_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/module_view/_setting_edited_event.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/module_view/_table_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/module_view/_validation_request_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/moduleview.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/namesubscriber.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/omerologin.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/parametersampleframe.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/pathlist.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/pipeline.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/pipelinecontroller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/pipelinelistview.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/plateviewer.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/plugins_menu.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/preferences_dialog/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/preferences_dialog/_integer_preference.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/preferences_dialog/_preferences_dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/preferences_view/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/preferences_view/_preferences_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/preferences_view/_progress_watcher.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/readers_dialog/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/readers_dialog/_readers_dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/regexp_editor.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/tools.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/utilities/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/utilities/figure.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/utilities/icon.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/utilities/module_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/utilities/preferences_dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/utilities/preferences_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/utilities/workspace_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/workspace_view/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/workspace_view/_workspace_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/workspace_view/_workspace_view_figure.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/workspace_view/_workspace_view_image_row.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/workspace_view/_workspace_view_mask_row.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/workspace_view/_workspace_view_measurement_row.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/workspace_view/_workspace_view_objects_row.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/gui/workspace_view/_workspace_view_row.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/icons/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/knime_bridge.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/misc.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/UntangleWorms.xsd +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/_help.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/calculatemath.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/calculatestatistics.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/classifyobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/closing.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/colortogray.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/combineobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/convertimagetoobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/convertobjectstoimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/correctilluminationapply.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/correctilluminationcalculate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/createbatchfiles.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/crop.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/definegrid.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/dilateimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/dilateobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/displaydataonimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/displaydensityplot.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/displayhistogram.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/displayplatemap.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/displayscatterplot.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/editobjectsmanually.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/enhanceedges.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/enhanceorsuppressfeatures.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/erodeimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/erodeobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/expandorshrinkobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/exporttodatabase.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/exporttospreadsheet.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/fillobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/filterobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/findmaxima.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/flagimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/flipandrotate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/gaussianfilter.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/graytocolor.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/identifydeadworms.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/identifyobjectsingrid.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/identifyobjectsmanually.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/identifyprimaryobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/identifysecondaryobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/identifytertiaryobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/imagemath.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/invertforprinting.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/labelimages.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/makeprojection.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/maskimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/maskobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/matchtemplate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/measurecolocalization.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/measuregranularity.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/measureimageareaoccupied.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/measureimageintensity.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/measureimageoverlap.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/measureimagequality.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/measureobjectintensity.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/measureobjectintensitydistribution.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/measureobjectneighbors.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/measureobjectsizeshape.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/measureobjectskeleton.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/measuretexture.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/medialaxis.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/medianfilter.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/morph.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/morphologicalskeleton.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/opening.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/overlayobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/overlayoutlines.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/plugins/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/plugins/imagetemplate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/plugins/measurementtemplate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/plugins/segmentationtemplatewithdependencies.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/reducenoise.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/relateobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/removeholes.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/rescaleintensity.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/resize.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/resizeobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/runimagejmacro.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/savecroppedobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/saveimages.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/shrinktoobjectcenters.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/smooth.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/splitormergeobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/straightenworms.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/threshold.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/tile.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/trackobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/unmixcolors.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/untangleworms.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/modules/watershed.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/utilities/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/utilities/morphology.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/utilities/rules.py +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/environment.yml +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/pyproject.toml +0 -0
- {cellprofiler_nightly-5.0.0.dev538 → cellprofiler_nightly-5.0.0.dev548}/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.dev548
|
|
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.dev548
|
|
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.dev538 → cellprofiler_nightly-5.0.0.dev548}/cellprofiler/_version.py
RENAMED
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '5.0.0.
|
|
32
|
-
__version_tuple__ = version_tuple = (5, 0, 0, '
|
|
31
|
+
__version__ = version = '5.0.0.dev548'
|
|
32
|
+
__version_tuple__ = version_tuple = (5, 0, 0, 'dev548')
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'g206f9390a'
|
|
@@ -30,66 +30,9 @@ Measurements made by this module
|
|
|
30
30
|
- *Endpoints*: Total number of pixels with only one neighbor.
|
|
31
31
|
"""
|
|
32
32
|
|
|
33
|
-
import numpy
|
|
34
|
-
import scipy.ndimage
|
|
35
|
-
import skimage.segmentation
|
|
36
|
-
import skimage.util
|
|
37
33
|
from cellprofiler_core.module import Module
|
|
38
34
|
from cellprofiler_core.setting.subscriber import ImageSubscriber
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
def _neighbors(image):
|
|
42
|
-
"""
|
|
43
|
-
|
|
44
|
-
Counts the neighbor pixels for each pixel of an image:
|
|
45
|
-
|
|
46
|
-
x = [
|
|
47
|
-
[0, 1, 0],
|
|
48
|
-
[1, 1, 1],
|
|
49
|
-
[0, 1, 0]
|
|
50
|
-
]
|
|
51
|
-
|
|
52
|
-
_neighbors(x)
|
|
53
|
-
|
|
54
|
-
[
|
|
55
|
-
[0, 3, 0],
|
|
56
|
-
[3, 4, 3],
|
|
57
|
-
[0, 3, 0]
|
|
58
|
-
]
|
|
59
|
-
|
|
60
|
-
:type image: numpy.ndarray
|
|
61
|
-
|
|
62
|
-
:param image: A two-or-three dimensional image
|
|
63
|
-
|
|
64
|
-
:return: neighbor pixels for each pixel of an image
|
|
65
|
-
|
|
66
|
-
"""
|
|
67
|
-
padding = numpy.pad(image, 1, "constant")
|
|
68
|
-
|
|
69
|
-
mask = padding > 0
|
|
70
|
-
|
|
71
|
-
padding = padding.astype(float)
|
|
72
|
-
|
|
73
|
-
if image.ndim == 2:
|
|
74
|
-
response = 3 ** 2 * scipy.ndimage.uniform_filter(padding) - 1
|
|
75
|
-
|
|
76
|
-
labels = (response * mask)[1:-1, 1:-1]
|
|
77
|
-
|
|
78
|
-
return labels.astype(numpy.uint16)
|
|
79
|
-
elif image.ndim == 3:
|
|
80
|
-
response = 3 ** 3 * scipy.ndimage.uniform_filter(padding) - 1
|
|
81
|
-
|
|
82
|
-
labels = (response * mask)[1:-1, 1:-1, 1:-1]
|
|
83
|
-
|
|
84
|
-
return labels.astype(numpy.uint16)
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
def branches(image):
|
|
88
|
-
return _neighbors(image) > 2
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
def endpoints(image):
|
|
92
|
-
return _neighbors(image) == 1
|
|
35
|
+
from cellprofiler_library.modules._measureimageskeleton import measure_image_skeleton
|
|
93
36
|
|
|
94
37
|
|
|
95
38
|
class MeasureImageSkeleton(Module):
|
|
@@ -113,8 +56,6 @@ You can create a morphological skeleton with the
|
|
|
113
56
|
return [self.skeleton_name]
|
|
114
57
|
|
|
115
58
|
def run(self, workspace):
|
|
116
|
-
names = ["Branches", "Endpoints"]
|
|
117
|
-
|
|
118
59
|
input_image_name = self.skeleton_name.value
|
|
119
60
|
|
|
120
61
|
image_set = workspace.image_set
|
|
@@ -125,32 +66,30 @@ You can create a morphological skeleton with the
|
|
|
125
66
|
|
|
126
67
|
pixels = input_image.pixel_data
|
|
127
68
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
69
|
+
result = measure_image_skeleton(
|
|
70
|
+
pixels,
|
|
71
|
+
im_name=self.skeleton_name.value,
|
|
72
|
+
return_visualization_data=self.show_window
|
|
73
|
+
)
|
|
131
74
|
|
|
132
|
-
|
|
75
|
+
if self.show_window:
|
|
76
|
+
lib_measurements, lib_display = result
|
|
77
|
+
else:
|
|
78
|
+
lib_measurements = result
|
|
133
79
|
|
|
134
|
-
|
|
80
|
+
for feature_name, value in lib_measurements.image.items():
|
|
81
|
+
workspace.measurements.add_image_measurement(feature_name, value)
|
|
135
82
|
|
|
136
83
|
if self.show_window:
|
|
137
84
|
workspace.display_data.skeleton = pixels
|
|
138
85
|
|
|
139
|
-
|
|
140
|
-
b = numpy.copy(endpoint_nodes).astype(numpy.uint16)
|
|
141
|
-
|
|
142
|
-
a[a == 1] = 1
|
|
143
|
-
b[b == 1] = 2
|
|
144
|
-
|
|
145
|
-
nodes = skimage.segmentation.join_segmentations(a, b)
|
|
146
|
-
|
|
147
|
-
workspace.display_data.nodes = nodes
|
|
86
|
+
workspace.display_data.nodes = lib_display.nodes
|
|
148
87
|
|
|
149
88
|
workspace.display_data.dimensions = dimensions
|
|
150
89
|
|
|
151
|
-
workspace.display_data.names =
|
|
90
|
+
workspace.display_data.names = ["Branches", "Endpoints"]
|
|
152
91
|
|
|
153
|
-
workspace.display_data.statistics = statistics
|
|
92
|
+
workspace.display_data.statistics = lib_display.statistics
|
|
154
93
|
|
|
155
94
|
def display(self, workspace, figure=None):
|
|
156
95
|
layout = (2, 2)
|
|
@@ -195,8 +134,6 @@ You can create a morphological skeleton with the
|
|
|
195
134
|
return "Skeleton_{}_{}".format(name, image)
|
|
196
135
|
|
|
197
136
|
def get_measurements(self, pipeline, object_name, category):
|
|
198
|
-
name = self.skeleton_name.value
|
|
199
|
-
|
|
200
137
|
if object_name == "Image" and category == "Skeleton":
|
|
201
138
|
return [
|
|
202
139
|
"Branches",
|
|
@@ -228,34 +165,5 @@ You can create a morphological skeleton with the
|
|
|
228
165
|
|
|
229
166
|
return feature
|
|
230
167
|
|
|
231
|
-
def measure(self, image, workspace):
|
|
232
|
-
data = image.pixel_data
|
|
233
|
-
|
|
234
|
-
data = data.astype(bool)
|
|
235
|
-
|
|
236
|
-
measurements = workspace.measurements
|
|
237
|
-
|
|
238
|
-
measurement_name = self.skeleton_name.value
|
|
239
|
-
|
|
240
|
-
statistics = []
|
|
241
|
-
|
|
242
|
-
name = "Skeleton_Branches_{}".format(measurement_name)
|
|
243
|
-
|
|
244
|
-
value = numpy.count_nonzero(branches(data))
|
|
245
|
-
|
|
246
|
-
statistics.append(value)
|
|
247
|
-
|
|
248
|
-
measurements.add_image_measurement(name, value)
|
|
249
|
-
|
|
250
|
-
name = "Skeleton_Endpoints_{}".format(measurement_name)
|
|
251
|
-
|
|
252
|
-
value = numpy.count_nonzero(endpoints(data))
|
|
253
|
-
|
|
254
|
-
statistics.append(value)
|
|
255
|
-
|
|
256
|
-
measurements.add_image_measurement(name, value)
|
|
257
|
-
|
|
258
|
-
return [statistics]
|
|
259
|
-
|
|
260
168
|
def volumetric(self):
|
|
261
169
|
return True
|
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
"""
|
|
2
|
+
MeasureObjectOverlap
|
|
3
|
+
====================
|
|
4
|
+
|
|
5
|
+
**MeasureObjectOverlap** calculates how much overlap occurs between
|
|
6
|
+
objects.
|
|
7
|
+
|
|
8
|
+
This module calculates object overlap by determining a set of statistics
|
|
9
|
+
that measure the closeness of an object to its true value. One
|
|
10
|
+
object is considered the “ground truth” (possibly the result of
|
|
11
|
+
hand-segmentation) and the other is the “test” object; the objects
|
|
12
|
+
are determined to overlap most completely when the test object matches
|
|
13
|
+
the ground truth perfectly. The module requires input to be objects obtained
|
|
14
|
+
after "IdentifyPrimaryObjects", "IdentifySecondaryObjects" or "IdentifyTertiaryObjects".
|
|
15
|
+
If your images have been segmented using other image processing software,
|
|
16
|
+
or you have hand-segmented them in software such as Photoshop, you will
|
|
17
|
+
need to use "Object Processing" modules such as "IdentifyPrimaryObjects" to identify
|
|
18
|
+
"ground truth" objects.
|
|
19
|
+
|
|
20
|
+
Measurements made by this module
|
|
21
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
22
|
+
|
|
23
|
+
- *True positive rate:* Total number of true positive pixels / total number of actual positive pixels.
|
|
24
|
+
|
|
25
|
+
- *False positive rate:* Total number of false positive pixels / total number of actual negative pixels
|
|
26
|
+
|
|
27
|
+
- *True negative rate:* Total number of true negative pixels / total number of actual negative pixels.
|
|
28
|
+
|
|
29
|
+
- *False negative rate:* Total number of false negative pixels / total number of actual positive pixels
|
|
30
|
+
|
|
31
|
+
- *Precision:* Number of true positive pixels / (number of true positive pixels + number of false positive pixels)
|
|
32
|
+
|
|
33
|
+
- *Recall:* Number of true positive pixels/ (number of true positive pixels + number of false negative pixels)
|
|
34
|
+
|
|
35
|
+
- *F-factor:* 2 × (precision × recall)/(precision + recall). Also known as F\ :sub:`1` score, F-score or F-measure.
|
|
36
|
+
|
|
37
|
+
- *Earth mover’s distance:* The minimum distance required to move each foreground
|
|
38
|
+
pixel in the test object to some corresponding foreground pixel in the reference object.
|
|
39
|
+
|
|
40
|
+
- *Rand index:* A measure of the similarity between two data clusterings. Perfectly random clustering
|
|
41
|
+
returns the minimum score of 0, perfect clustering returns the maximum score of 1.
|
|
42
|
+
|
|
43
|
+
- *Adjusted Rand index:* A variation of the Rand index which considers a correction for chance.
|
|
44
|
+
|
|
45
|
+
References
|
|
46
|
+
^^^^^^^^^^
|
|
47
|
+
|
|
48
|
+
- Collins LM, Dent CW (1988) “Omega: A general formulation of the Rand
|
|
49
|
+
Index of cluster recovery suitable for non-disjoint solutions”,
|
|
50
|
+
*Multivariate Behavioral Research*, 23, 231-242 `(link)`_
|
|
51
|
+
|
|
52
|
+
- Pele O, Werman M (2009) “Fast and Robust Earth Mover’s Distances”,
|
|
53
|
+
*2009 IEEE 12th International Conference on Computer Vision*
|
|
54
|
+
|
|
55
|
+
.. _(link): https://doi.org/10.1207/s15327906mbr2302_6
|
|
56
|
+
"""
|
|
57
|
+
|
|
58
|
+
import numpy
|
|
59
|
+
from cellprofiler_core.constants.measurement import COLTYPE_FLOAT
|
|
60
|
+
from cellprofiler_core.module import Module
|
|
61
|
+
from cellprofiler_core.setting import Binary
|
|
62
|
+
from cellprofiler_core.setting.choice import Choice
|
|
63
|
+
from cellprofiler_core.setting.subscriber import LabelSubscriber
|
|
64
|
+
from cellprofiler_core.setting.text import Integer
|
|
65
|
+
|
|
66
|
+
from cellprofiler_library.modules._measureobjectoverlap import measure_object_overlap
|
|
67
|
+
from cellprofiler_library.opts.measureobjectoverlap import Feature, ALL_FEATURES, C_IMAGE_OVERLAP, DecimationMethod
|
|
68
|
+
from cellprofiler.modules import _help
|
|
69
|
+
|
|
70
|
+
O_OBJ = "Segmented objects"
|
|
71
|
+
|
|
72
|
+
L_LOAD = "Loaded from a previous run"
|
|
73
|
+
L_CP = "From this CP pipeline"
|
|
74
|
+
|
|
75
|
+
class MeasureObjectOverlap(Module):
|
|
76
|
+
category = "Measurement"
|
|
77
|
+
variable_revision_number = 2
|
|
78
|
+
module_name = "MeasureObjectOverlap"
|
|
79
|
+
|
|
80
|
+
def create_settings(self):
|
|
81
|
+
self.object_name_GT = LabelSubscriber(
|
|
82
|
+
"Select the objects to be used as the ground truth basis for calculating the amount of overlap",
|
|
83
|
+
"None",
|
|
84
|
+
doc="""\
|
|
85
|
+
Choose which set of objects will used as the “ground truth” objects. It
|
|
86
|
+
can be the product of segmentation performed by hand, or the result of
|
|
87
|
+
another segmentation algorithm whose results you would like to compare.
|
|
88
|
+
See the **Load** modules for more details on loading objects.""",
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
self.object_name_ID = LabelSubscriber(
|
|
92
|
+
"Select the objects to be tested for overlap against the ground truth",
|
|
93
|
+
"None",
|
|
94
|
+
doc="""\
|
|
95
|
+
This set of objects is what you will compare with the ground truth
|
|
96
|
+
objects. It is known as the “test object.”""",
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
self.wants_emd = Binary(
|
|
100
|
+
"Calculate earth mover's distance?",
|
|
101
|
+
False,
|
|
102
|
+
doc="""\
|
|
103
|
+
The earth mover’s distance computes the shortest distance that would
|
|
104
|
+
have to be travelled to move each foreground pixel in the test object to
|
|
105
|
+
some foreground pixel in the reference object. “Earth mover’s” refers to
|
|
106
|
+
an analogy: the pixels are “earth” that has to be moved by some machine
|
|
107
|
+
at the smallest possible cost.
|
|
108
|
+
It would take too much memory and processing time to compute the exact
|
|
109
|
+
earth mover’s distance, so **MeasureObjectOverlap** chooses
|
|
110
|
+
representative foreground pixels in each object and assigns each
|
|
111
|
+
foreground pixel to its closest representative. The earth mover’s
|
|
112
|
+
distance is then computed for moving the foreground pixels associated
|
|
113
|
+
with each representative in the test object to those in the reference
|
|
114
|
+
object.""",
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
self.max_points = Integer(
|
|
118
|
+
"Maximum # of points",
|
|
119
|
+
value=250,
|
|
120
|
+
minval=100,
|
|
121
|
+
doc="""\
|
|
122
|
+
*(Used only when computing the earth mover’s distance)*
|
|
123
|
+
|
|
124
|
+
This is the number of representative points that will be taken from the
|
|
125
|
+
foreground of the test objects and from the foreground of the reference
|
|
126
|
+
objects using the point selection method (see below).""",
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
self.decimation_method = Choice(
|
|
130
|
+
"Point selection method",
|
|
131
|
+
choices=[DecimationMethod.KMEANS, DecimationMethod.SKELETON],
|
|
132
|
+
doc="""\
|
|
133
|
+
*(Used only when computing the earth mover’s distance)*
|
|
134
|
+
|
|
135
|
+
The point selection setting determines how the representative points
|
|
136
|
+
are chosen.
|
|
137
|
+
|
|
138
|
+
- *{DM_KMEANS}:* Select to pick representative points using a K-Means
|
|
139
|
+
clustering technique. The foregrounds of both objects are combined and
|
|
140
|
+
representatives are picked that minimize the distance to the nearest
|
|
141
|
+
representative. The same representatives are then used for the test
|
|
142
|
+
and reference objects.
|
|
143
|
+
- *{DM_SKEL}:* Select to skeletonize the object and pick points
|
|
144
|
+
equidistant along the skeleton.
|
|
145
|
+
|
|
146
|
+
|image0| *{DM_KMEANS}* is a choice that’s generally applicable to all
|
|
147
|
+
images. *{DM_SKEL}* is best suited to long, skinny objects such as
|
|
148
|
+
worms or neurites.
|
|
149
|
+
|
|
150
|
+
.. |image0| image:: {PROTIP_RECOMMEND_ICON}
|
|
151
|
+
""".format(
|
|
152
|
+
**{
|
|
153
|
+
"DM_KMEANS": DecimationMethod.KMEANS.value,
|
|
154
|
+
"DM_SKEL": DecimationMethod.SKELETON.value,
|
|
155
|
+
"PROTIP_RECOMMEND_ICON": _help.PROTIP_RECOMMEND_ICON,
|
|
156
|
+
}
|
|
157
|
+
),
|
|
158
|
+
)
|
|
159
|
+
|
|
160
|
+
self.max_distance = Integer(
|
|
161
|
+
"Maximum distance",
|
|
162
|
+
value=250,
|
|
163
|
+
minval=1,
|
|
164
|
+
doc="""\
|
|
165
|
+
*(Used only when computing the earth mover’s distance)*
|
|
166
|
+
|
|
167
|
+
This setting sets an upper bound to the distance penalty assessed during
|
|
168
|
+
the movement calculation. As an example, the score for moving 10 pixels
|
|
169
|
+
from one location to a location that is 100 pixels away is 10\*100, but
|
|
170
|
+
if the maximum distance were set to 50, the score would be 10\*50
|
|
171
|
+
instead.
|
|
172
|
+
|
|
173
|
+
The maximum distance should be set to the largest reasonable distance
|
|
174
|
+
that pixels could be expected to move from one object to the next.""",
|
|
175
|
+
)
|
|
176
|
+
|
|
177
|
+
self.penalize_missing = Binary(
|
|
178
|
+
"Penalize missing pixels",
|
|
179
|
+
value=False,
|
|
180
|
+
doc="""\
|
|
181
|
+
*(Used only when computing the earth mover’s distance)*
|
|
182
|
+
|
|
183
|
+
If one object has more foreground pixels than the other, the earth
|
|
184
|
+
mover’s distance is not well-defined because there is no destination for
|
|
185
|
+
the extra source pixels or vice-versa. It’s reasonable to assess a
|
|
186
|
+
penalty for the discrepancy when comparing the accuracy of a
|
|
187
|
+
segmentation because the discrepancy represents an error. It’s also
|
|
188
|
+
reasonable to assess no penalty if the goal is to compute the cost of
|
|
189
|
+
movement, for example between two frames in a time-lapse movie, because
|
|
190
|
+
the discrepancy is likely caused by noise or artifacts in segmentation.
|
|
191
|
+
Set this setting to “Yes” to assess a penalty equal to the maximum
|
|
192
|
+
distance times the absolute difference in number of foreground pixels in
|
|
193
|
+
the two objects. Set this setting to “No” to assess no penalty.""",
|
|
194
|
+
)
|
|
195
|
+
|
|
196
|
+
def settings(self):
|
|
197
|
+
return [
|
|
198
|
+
self.object_name_GT,
|
|
199
|
+
self.object_name_ID,
|
|
200
|
+
self.wants_emd,
|
|
201
|
+
self.max_points,
|
|
202
|
+
self.decimation_method,
|
|
203
|
+
self.max_distance,
|
|
204
|
+
self.penalize_missing,
|
|
205
|
+
]
|
|
206
|
+
|
|
207
|
+
def visible_settings(self):
|
|
208
|
+
visible_settings = [self.object_name_GT, self.object_name_ID, self.wants_emd]
|
|
209
|
+
|
|
210
|
+
if self.wants_emd:
|
|
211
|
+
visible_settings += [
|
|
212
|
+
self.max_points,
|
|
213
|
+
self.decimation_method,
|
|
214
|
+
self.max_distance,
|
|
215
|
+
self.penalize_missing,
|
|
216
|
+
]
|
|
217
|
+
|
|
218
|
+
return visible_settings
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
def run(self, workspace):
|
|
223
|
+
object_name_GT = self.object_name_GT.value
|
|
224
|
+
object_name_ID = self.object_name_ID.value
|
|
225
|
+
|
|
226
|
+
objects_GT = workspace.get_objects(object_name_GT)
|
|
227
|
+
objects_ID = workspace.get_objects(object_name_ID)
|
|
228
|
+
|
|
229
|
+
objects_GT_labelset = objects_GT.get_labels()
|
|
230
|
+
objects_ID_labelset = objects_ID.get_labels()
|
|
231
|
+
|
|
232
|
+
result = measure_object_overlap(
|
|
233
|
+
objects_GT_labelset,
|
|
234
|
+
objects_ID_labelset,
|
|
235
|
+
objects_GT.shape,
|
|
236
|
+
objects_ID.shape,
|
|
237
|
+
object_name_GT=object_name_GT,
|
|
238
|
+
object_name_ID=object_name_ID,
|
|
239
|
+
calcualte_emd=self.wants_emd.value,
|
|
240
|
+
decimation_method=self.decimation_method.value,
|
|
241
|
+
max_distance=self.max_distance.value,
|
|
242
|
+
max_points=self.max_points.value,
|
|
243
|
+
penalize_missing=self.penalize_missing.value,
|
|
244
|
+
return_visualization_data=self.show_window
|
|
245
|
+
)
|
|
246
|
+
|
|
247
|
+
# Unpack result based on whether visualization data was requested
|
|
248
|
+
if self.show_window:
|
|
249
|
+
lib_measurements, lib_display = result
|
|
250
|
+
else:
|
|
251
|
+
lib_measurements = result
|
|
252
|
+
|
|
253
|
+
m = workspace.measurements
|
|
254
|
+
for feature_name, value in lib_measurements.image.items():
|
|
255
|
+
m.add_image_measurement(feature_name, value)
|
|
256
|
+
|
|
257
|
+
if self.show_window:
|
|
258
|
+
workspace.display_data.true_positives = lib_display.true_positives
|
|
259
|
+
workspace.display_data.true_negatives = lib_display.true_negatives
|
|
260
|
+
workspace.display_data.false_positives = lib_display.false_positives
|
|
261
|
+
workspace.display_data.false_negatives = lib_display.false_negatives
|
|
262
|
+
workspace.display_data.statistics = lib_display.statistics
|
|
263
|
+
|
|
264
|
+
def get_labels_mask(self, obj_labels, obj_shape):
|
|
265
|
+
labels_mask = numpy.zeros(obj_shape, bool)
|
|
266
|
+
for labels, indexes in obj_labels:
|
|
267
|
+
labels_mask = labels_mask | labels > 0
|
|
268
|
+
return labels_mask
|
|
269
|
+
|
|
270
|
+
def display(self, workspace, figure):
|
|
271
|
+
"""Display the image confusion matrix & statistics"""
|
|
272
|
+
figure.set_subplots((3, 2))
|
|
273
|
+
|
|
274
|
+
for x, y, image, label in (
|
|
275
|
+
(0, 0, workspace.display_data.true_positives, "True positives"),
|
|
276
|
+
(0, 1, workspace.display_data.false_positives, "False positives"),
|
|
277
|
+
(1, 0, workspace.display_data.false_negatives, "False negatives"),
|
|
278
|
+
(1, 1, workspace.display_data.true_negatives, "True negatives"),
|
|
279
|
+
):
|
|
280
|
+
figure.subplot_imshow_bw(
|
|
281
|
+
x, y, image, title=label, sharexy=figure.subplot(0, 0)
|
|
282
|
+
)
|
|
283
|
+
|
|
284
|
+
figure.subplot_table(
|
|
285
|
+
2,
|
|
286
|
+
0,
|
|
287
|
+
workspace.display_data.statistics,
|
|
288
|
+
col_labels=("Measurement", "Value"),
|
|
289
|
+
n_rows=2,
|
|
290
|
+
)
|
|
291
|
+
|
|
292
|
+
def measurement_name(self, feature):
|
|
293
|
+
return "_".join(
|
|
294
|
+
(
|
|
295
|
+
C_IMAGE_OVERLAP,
|
|
296
|
+
feature,
|
|
297
|
+
self.object_name_GT.value,
|
|
298
|
+
self.object_name_ID.value,
|
|
299
|
+
)
|
|
300
|
+
)
|
|
301
|
+
|
|
302
|
+
def get_categories(self, pipeline, object_name):
|
|
303
|
+
if object_name == "Image":
|
|
304
|
+
return [C_IMAGE_OVERLAP]
|
|
305
|
+
|
|
306
|
+
return []
|
|
307
|
+
|
|
308
|
+
def get_measurements(self, pipeline, object_name, category):
|
|
309
|
+
if object_name == "Image" and category == C_IMAGE_OVERLAP:
|
|
310
|
+
return self.all_features()
|
|
311
|
+
|
|
312
|
+
return []
|
|
313
|
+
|
|
314
|
+
def get_measurement_images(self, pipeline, object_name, category, measurement):
|
|
315
|
+
if measurement in self.get_measurements(pipeline, object_name, category):
|
|
316
|
+
return [self.test_img.value]
|
|
317
|
+
|
|
318
|
+
return []
|
|
319
|
+
|
|
320
|
+
def get_measurement_scales(
|
|
321
|
+
self, pipeline, object_name, category, measurement, image_name
|
|
322
|
+
):
|
|
323
|
+
if (
|
|
324
|
+
object_name == "Image"
|
|
325
|
+
and category == C_IMAGE_OVERLAP
|
|
326
|
+
and measurement in ALL_FEATURES
|
|
327
|
+
):
|
|
328
|
+
return ["_".join((self.object_name_GT.value, self.object_name_ID.value))]
|
|
329
|
+
|
|
330
|
+
return []
|
|
331
|
+
|
|
332
|
+
def all_features(self):
|
|
333
|
+
all_features = list(ALL_FEATURES)
|
|
334
|
+
|
|
335
|
+
if self.wants_emd:
|
|
336
|
+
all_features.append(Feature.EARTH_MOVERS_DISTANCE)
|
|
337
|
+
|
|
338
|
+
return all_features
|
|
339
|
+
|
|
340
|
+
def get_measurement_columns(self, pipeline):
|
|
341
|
+
return [
|
|
342
|
+
("Image", self.measurement_name(feature), COLTYPE_FLOAT,)
|
|
343
|
+
for feature in self.all_features()
|
|
344
|
+
]
|