CellProfiler-nightly 5.0.0.dev243__tar.gz → 5.0.0.dev259__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.dev243 → cellprofiler_nightly-5.0.0.dev259}/CellProfiler_nightly.egg-info/PKG-INFO +1 -1
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/PKG-INFO +1 -1
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/_version.py +2 -2
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/identifytertiaryobjects.py +14 -0
- cellprofiler_nightly-5.0.0.dev259/cellprofiler/modules/measureobjectsizeshape.py +425 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/measuretexture.py +5 -8
- cellprofiler_nightly-5.0.0.dev243/cellprofiler/modules/measureobjectsizeshape.py +0 -920
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/CellProfiler_nightly.egg-info/SOURCES.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/CellProfiler_nightly.egg-info/dependency_links.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/CellProfiler_nightly.egg-info/entry_points.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/CellProfiler_nightly.egg-info/requires.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/CellProfiler_nightly.egg-info/top_level.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/LICENSE +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/README.md +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/__main__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/examples/ExampleFly/ExampleFly.cppipe +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/examples/ExampleFly/images/01_POS002_D.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/examples/ExampleFly/images/01_POS002_F.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/examples/ExampleFly/images/01_POS002_R.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/examples/ExampleFly/images/01_POS076_D.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/examples/ExampleFly/images/01_POS076_F.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/examples/ExampleFly/images/01_POS076_R.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/examples/ExampleFly/images/01_POS218_D.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/examples/ExampleFly/images/01_POS218_F.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/examples/ExampleFly/images/01_POS218_R.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/help/display_image_tools.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/help/display_interactive_navigation.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/help/display_menu_bar.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/help/legacy_matlab_image.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/help/navigation_edit_menu.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/help/navigation_file_menu.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/help/navigation_test_menu.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/help/navigation_window_menu.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/help/other_3d_identify.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/help/other_batch.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/help/other_logging.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/help/other_omero.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/help/other_plugins.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/help/other_shell.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/help/other_troubleshooting.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/help/other_widget_inspector.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/help/output_measurements.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/help/output_plateviewer.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/help/output_spreadsheets.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/help/pipelines_building.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/help/pipelines_running.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/help/projects_configure_images.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/help/projects_image_ordering.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/help/projects_image_sequences.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/help/projects_introduction.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/help/projects_selecting_images.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/help/why_use_cellprofiler.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/icons/CellProfiler-favicon-120.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/icons/CellProfiler-favicon-128.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/icons/CellProfiler-favicon-144.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/icons/CellProfiler-favicon-152.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/icons/CellProfiler-favicon-195.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/icons/CellProfiler-favicon-228.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/icons/CellProfiler-favicon-32.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/icons/CellProfiler-favicon-57.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/icons/CellProfiler-favicon-72.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/icons/CellProfiler-favicon-96.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/icons/CellProfiler-favicon.ico +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/icons/CellProfiler.ai +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/icons/CellProfiler.icns +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/icons/CellProfiler.ico +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/icons/CellProfiler.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/icons/CellProfiler.svg +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/Align.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/ApplyThreshold.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/CollapseTree.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/ColorToGray.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/CorrectIlluminationApply.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/CorrectIlluminationCalculate.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/Crop.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/ExpandOrShrinkObjects.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/ExpandTree.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/GrayToColor.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/Groups_ExampleDisplayTable.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/IMG_ANALYZED.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/IMG_ANALYZE_16.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/IMG_ANALYZE_24.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/IMG_CLOSED_EYE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/IMG_DISABLED.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/IMG_ERROR.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/IMG_EYE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/IMG_GO.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/IMG_GO_DIM.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/IMG_IMAGE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/IMG_MEASURE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/IMG_OK.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/IMG_PAUSE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/IMG_RUN.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/IMG_SLIDER.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/IMG_SLIDER_ACTIVE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/IMG_STOP.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/IMG_TEST.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/IMG_UNAVAILABLE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/IMG_UPDATE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/IMG_USE_INPUT.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/IMG_USE_OUTPUT.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/IMG_USE_SOURCE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/IMG_WARN.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/IdentifyPrimaryObjects_IntensityDeclumping.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/IdentifyPrimaryObjects_ShapeDeclumping.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/IdentifySecondaryObjects.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/IdentifyTertiaryObjects.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/Images_FilelistPanel.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/Images_FilelistPanel_Blank.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/Images_FilelistPanel_Filled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/Images_UsingRules.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/MeasureGranularity_example.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/MeasureImageAreaOccupied.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/MeasureObjectIntensityDistribution_Edges_Centers.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/MeasureObjectIntensityDistribution_Magnitude_Phase.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/MeasureObjectSizeShape_Eccentricity.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/MeasureTexture.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/Measure_texture_3D_correspondences_1.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/Measure_texture_3D_correspondences_1_highres.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/Measure_texture_3D_correspondences_2.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/Measure_texture_3D_correspondences_2_highres.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/Metadata_ExampleDisplayTable.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/NamesAndTypes_ExampleDisplayTable.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/Tile.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/UnmixColors.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/check.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/color.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/cp_panel_schematic.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/dapi.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/delete.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/downarrow.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/eye-close.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/eye-open.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/ffwd.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/ffwddisabled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/filter.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/folder_browse.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/folder_create.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/gear.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/gfp.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/icon_copyrights.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/illumination_function.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/image_to_object_dataflow.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/image_to_object_dataflow.psd +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/mask.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/microscope-color_16.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/microscope-icon_16.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/microscope-icon_32.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/microscopes_16.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/module_add.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/module_help.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/module_movedown.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/module_moveup.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/module_remove.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/monochrome.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/movie_16.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/next.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/objects.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/pause.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/pausedisabled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/play.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/playdisabled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/previous.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/remove-sign.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/rewind.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/rewinddisabled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/splash-black-text-alpha.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/splash-white-text-alpha.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/splash.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/status_pause.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/status_save.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/status_stop.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/stop.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/stopdisabled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/structuringelement.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/thumb-down.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/thumb-up.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/unchecked.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/wantpony.wav +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/welcome_examples.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/welcome_forum.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/welcome_help.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/welcome_manual.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/welcome_new.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/welcome_pipeline.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/welcome_screen_help.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/welcome_start.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/welcome_tutorial.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/welcomescreen_forum.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/welcomescreen_manual.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/welcomescreen_tutorials.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/window_back.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/window_filesave.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/window_forward.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/window_home.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/window_pan.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/data/images/window_zoom_to_rect.png +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/_tree_checkbox_dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/_welcome_frame.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/_workspace_model.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/addmoduleframe.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/app.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/artist.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/checkupdate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/constants/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/constants/figure.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/constants/module_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/constants/preferences_dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/constants/preferences_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/constants/workspace_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/cpframe.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/editobjectsdlg.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/errordialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/figure/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/figure/_figure.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/figure/_navigation_toolbar.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/figure/_outline_artist.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/gridrenderers.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/help/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/help/content.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/help/menu.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/help/search.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/html/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/html/configure_images_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/html/exporting_results_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/html/getting_started.html +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/html/htmlwindow.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/html/identify_features_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/html/in_app_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/html/making_measurements_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/html/running_pipeline_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/html/selecting_images_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/html/test_mode_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/html/utils.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/html/welcome.html +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/htmldialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/imagesetctrl.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/menu.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/metadatactrl.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/module_view/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/module_view/_binary_matrix_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/module_view/_data_type_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/module_view/_file_collection_display_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/module_view/_filter_panel_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/module_view/_joiner_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/module_view/_module_sizer.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/module_view/_module_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/module_view/_setting_edited_event.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/module_view/_table_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/module_view/_validation_request_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/moduleview.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/namesubscriber.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/omerologin.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/parametersampleframe.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/pathlist.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/pipeline.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/pipelinecontroller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/pipelinelistview.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/plateviewer.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/plugins_menu.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/preferences_dialog/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/preferences_dialog/_integer_preference.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/preferences_dialog/_preferences_dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/preferences_view/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/preferences_view/_preferences_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/preferences_view/_progress_watcher.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/readers_dialog/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/readers_dialog/_readers_dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/regexp_editor.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/tools.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/utilities/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/utilities/figure.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/utilities/icon.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/utilities/module_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/utilities/preferences_dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/utilities/preferences_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/utilities/workspace_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/workspace_view/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/workspace_view/_workspace_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/workspace_view/_workspace_view_figure.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/workspace_view/_workspace_view_image_row.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/workspace_view/_workspace_view_mask_row.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/workspace_view/_workspace_view_measurement_row.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/workspace_view/_workspace_view_objects_row.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/gui/workspace_view/_workspace_view_row.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/icons/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/knime_bridge.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/misc.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/UntangleWorms.xsd +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/_help.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/calculatemath.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/calculatestatistics.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/classifyobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/closing.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/colortogray.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/combineobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/convertimagetoobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/convertobjectstoimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/correctilluminationapply.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/correctilluminationcalculate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/createbatchfiles.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/crop.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/definegrid.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/dilateimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/dilateobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/displaydataonimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/displaydensityplot.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/displayhistogram.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/displayplatemap.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/displayscatterplot.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/editobjectsmanually.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/enhanceedges.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/enhanceorsuppressfeatures.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/erodeimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/erodeobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/expandorshrinkobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/exporttodatabase.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/exporttospreadsheet.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/fillobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/filterobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/findmaxima.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/flagimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/flipandrotate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/gaussianfilter.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/graytocolor.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/identifydeadworms.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/identifyobjectsingrid.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/identifyobjectsmanually.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/identifyprimaryobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/identifysecondaryobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/imagemath.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/invertforprinting.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/labelimages.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/makeprojection.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/maskimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/maskobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/matchtemplate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/measurecolocalization.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/measuregranularity.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/measureimageareaoccupied.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/measureimageintensity.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/measureimageoverlap.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/measureimagequality.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/measureimageskeleton.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/measureobjectintensity.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/measureobjectintensitydistribution.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/measureobjectneighbors.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/measureobjectoverlap.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/measureobjectskeleton.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/medialaxis.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/medianfilter.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/morph.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/morphologicalskeleton.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/opening.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/overlayobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/overlayoutlines.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/plugins/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/plugins/imagetemplate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/plugins/measurementtemplate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/plugins/segmentationtemplatewithdependencies.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/reducenoise.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/relateobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/removeholes.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/rescaleintensity.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/resize.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/resizeobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/runimagejmacro.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/savecroppedobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/saveimages.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/shrinktoobjectcenters.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/smooth.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/splitormergeobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/straightenworms.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/threshold.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/tile.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/trackobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/unmixcolors.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/untangleworms.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/modules/watershed.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/utilities/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/utilities/morphology.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/utilities/rules.py +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/environment.yml +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/pyproject.toml +0 -0
- {cellprofiler_nightly-5.0.0.dev243 → cellprofiler_nightly-5.0.0.dev259}/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.dev259
|
|
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.dev259
|
|
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.dev243 → cellprofiler_nightly-5.0.0.dev259}/cellprofiler/_version.py
RENAMED
|
@@ -17,5 +17,5 @@ __version__: str
|
|
|
17
17
|
__version_tuple__: VERSION_TUPLE
|
|
18
18
|
version_tuple: VERSION_TUPLE
|
|
19
19
|
|
|
20
|
-
__version__ = version = '5.0.0.
|
|
21
|
-
__version_tuple__ = version_tuple = (5, 0, 0, '
|
|
20
|
+
__version__ = version = '5.0.0.dev259'
|
|
21
|
+
__version_tuple__ = version_tuple = (5, 0, 0, 'dev259')
|
|
@@ -289,6 +289,19 @@ but the results will be zero or not-a-number (NaN).
|
|
|
289
289
|
primary_mask = primary_labels == 0
|
|
290
290
|
tertiary_labels[primary_mask == False] = 0
|
|
291
291
|
#
|
|
292
|
+
# Check if a label was deleted as a result of the subtraction
|
|
293
|
+
#
|
|
294
|
+
secondary_unique_labels, secondary_unique_indices = numpy.unique(secondary_labels, return_index=True)
|
|
295
|
+
tertiary_unique_labels = numpy.unique(tertiary_labels)
|
|
296
|
+
missing_labels = numpy.setdiff1d(secondary_unique_labels, tertiary_unique_labels)
|
|
297
|
+
for missing_label in missing_labels:
|
|
298
|
+
# If a label was deleted, manually add a pixel to the tertiary_labels.
|
|
299
|
+
# This workaround ensures that ghost objects do not get created by identifytertiaryobjects.
|
|
300
|
+
|
|
301
|
+
# first non-zero (top-left) coodrinate of the secondary object is used to add a pixel to the tertiary_labels
|
|
302
|
+
first_row, first_col = numpy.unravel_index(secondary_unique_indices[missing_label], secondary_labels.shape)
|
|
303
|
+
tertiary_labels[first_row, first_col] = missing_label
|
|
304
|
+
#
|
|
292
305
|
# Get the outlines of the tertiary image
|
|
293
306
|
#
|
|
294
307
|
tertiary_outlines = outline(tertiary_labels) != 0
|
|
@@ -304,6 +317,7 @@ but the results will be zero or not-a-number (NaN).
|
|
|
304
317
|
child_count_of_secondary, secondary_parents = secondary_objects.relate_children(
|
|
305
318
|
tertiary_objects
|
|
306
319
|
)
|
|
320
|
+
|
|
307
321
|
if self.shrink_primary:
|
|
308
322
|
child_count_of_primary, primary_parents = primary_objects.relate_children(
|
|
309
323
|
tertiary_objects
|
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
import centrosome.cpmorphology
|
|
2
|
+
import centrosome.zernike
|
|
3
|
+
import numpy
|
|
4
|
+
import scipy.ndimage
|
|
5
|
+
import skimage.measure
|
|
6
|
+
from cellprofiler_core.constants.measurement import COLTYPE_FLOAT
|
|
7
|
+
from cellprofiler_core.module import Module
|
|
8
|
+
from cellprofiler_core.object import Objects
|
|
9
|
+
from cellprofiler_core.setting import Divider, Binary, ValidationError
|
|
10
|
+
from cellprofiler_core.setting.subscriber import LabelListSubscriber
|
|
11
|
+
|
|
12
|
+
import cellprofiler.gui.help.content
|
|
13
|
+
import cellprofiler.icons
|
|
14
|
+
|
|
15
|
+
from cellprofiler_library.modules import measureobjectsizeshape
|
|
16
|
+
from cellprofiler_library.opts.objectsizeshapefeatures import ObjectSizeShapeFeatures
|
|
17
|
+
|
|
18
|
+
__doc__ = """\
|
|
19
|
+
MeasureObjectSizeShape
|
|
20
|
+
======================
|
|
21
|
+
|
|
22
|
+
**MeasureObjectSizeShape** measures several area and shape features
|
|
23
|
+
of identified objects.
|
|
24
|
+
|
|
25
|
+
Given an image with identified objects (e.g., nuclei or cells), this
|
|
26
|
+
module extracts area and shape features of each one. Note that these
|
|
27
|
+
features are only reliable for objects that are completely inside the
|
|
28
|
+
image borders, so you may wish to exclude objects touching the edge of
|
|
29
|
+
the image using **Identify** settings for 2D objects, or by applying
|
|
30
|
+
**FilterObjects** downstream.
|
|
31
|
+
|
|
32
|
+
The display window for this module shows per-image
|
|
33
|
+
aggregates for the per-object measurements. If you want to view the
|
|
34
|
+
per-object measurements themselves, you will need to use an
|
|
35
|
+
**Export** module to export them, or use **DisplayDataOnImage** to
|
|
36
|
+
display the object measurements of choice overlaid on an image of
|
|
37
|
+
choice.
|
|
38
|
+
|
|
39
|
+
|
|
|
40
|
+
|
|
41
|
+
============ ============ ===============
|
|
42
|
+
Supports 2D? Supports 3D? Respects masks?
|
|
43
|
+
============ ============ ===============
|
|
44
|
+
YES YES NO
|
|
45
|
+
============ ============ ===============
|
|
46
|
+
|
|
47
|
+
See also
|
|
48
|
+
^^^^^^^^
|
|
49
|
+
|
|
50
|
+
See also **MeasureImageAreaOccupied**.
|
|
51
|
+
|
|
52
|
+
Measurements made by this module
|
|
53
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
54
|
+
Some measurements are available for 3D and 2D objects, while some are 2D
|
|
55
|
+
only.
|
|
56
|
+
|
|
57
|
+
See the *Technical Notes* below for an explanation of a key step
|
|
58
|
+
underlying many of the following metrics: creating an
|
|
59
|
+
ellipse with the same second-moments as each object.
|
|
60
|
+
|
|
61
|
+
- *Area:* *(2D only)* The number of pixels in the region.
|
|
62
|
+
- *Volume:* *(3D only)* The number of voxels in the region.
|
|
63
|
+
- *Perimeter:* *(2D only)* The total number of pixels around the boundary of each
|
|
64
|
+
region in the image.
|
|
65
|
+
- *SurfaceArea:* *(3D only)* The total number of voxels around the boundary of
|
|
66
|
+
each region in the image.
|
|
67
|
+
- *FormFactor:* *(2D only)* Calculated as 4\*π\*Area/Perimeter\ :sup:`2`. Equals 1
|
|
68
|
+
for a perfectly circular object.
|
|
69
|
+
- *Convex Area:* The area of a convex polygon containing the whole object.
|
|
70
|
+
Best imagined as a rubber band stretched around the object.
|
|
71
|
+
- *Solidity:* The proportion of the pixels in the convex hull that are
|
|
72
|
+
also in the object, i.e., *ObjectArea/ConvexHullArea*.
|
|
73
|
+
- *Extent:* The proportion of the pixels (2D) or voxels (3D) in the bounding box
|
|
74
|
+
that are also in the region. Computed as the area/volume of the object divided
|
|
75
|
+
by the area/volume of the bounding box.
|
|
76
|
+
- *EulerNumber:* The number of objects in the region minus the number
|
|
77
|
+
of holes in those objects, assuming 8-connectivity.
|
|
78
|
+
- *Center\_X, Center\_Y, Center\_Z:* The *x*-, *y*-, and (for 3D objects) *z-*
|
|
79
|
+
coordinates of the point farthest away from any object edge (the *centroid*).
|
|
80
|
+
Note that this is not the same as the *Location-X* and *-Y* measurements
|
|
81
|
+
produced by the **Identify** or **Watershed**
|
|
82
|
+
modules or the *Location-Z* measurement produced by the **Watershed** module.
|
|
83
|
+
- *BoundingBoxMinimum/Maximum\_X/Y/Z:* The minimum/maximum *x*-, *y*-, and (for 3D objects)
|
|
84
|
+
*z-* coordinates of the object.
|
|
85
|
+
- *BoundingBoxArea:* *(2D only)* The area of a box containing the object.
|
|
86
|
+
- *BoundingBoxVolume:* *(3D only)* The volume of a box containing the object.
|
|
87
|
+
- *Eccentricity:* *(2D only)* The eccentricity of the ellipse that has the same
|
|
88
|
+
second-moments as the region. The eccentricity is the ratio of the
|
|
89
|
+
distance between the foci of the ellipse and its major axis length.
|
|
90
|
+
The value is between 0 and 1. (0 and 1 are degenerate cases; an
|
|
91
|
+
ellipse whose eccentricity is 0 is actually a circle, while an
|
|
92
|
+
ellipse whose eccentricity is 1 is a line segment.)
|
|
93
|
+
|
|
94
|
+
|MOSS_image0|
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
- *MajorAxisLength:* The length (in pixels) of the major axis of the
|
|
98
|
+
ellipse that has the same normalized second central moments as the
|
|
99
|
+
region.
|
|
100
|
+
- *MinorAxisLength:* The length (in pixels) of the minor axis of the
|
|
101
|
+
ellipse that has the same normalized second central moments as the
|
|
102
|
+
region.
|
|
103
|
+
- *EquivalentDiameter:* The diameter of a circle or sphere with the same area
|
|
104
|
+
as the object.
|
|
105
|
+
- *Orientation:* *(2D only)* The angle (in degrees ranging from -90 to 90 degrees)
|
|
106
|
+
between the x-axis and the major axis of the ellipse that has the
|
|
107
|
+
same second-moments as the region.
|
|
108
|
+
- *Compactness:* *(2D only)* Calculated as Perimeter\ :sup:`2`/4\*π\*Area, related to
|
|
109
|
+
Form Factor. A filled circle will have a compactness of 1, with irregular objects or
|
|
110
|
+
objects with holes having a value greater than 1.
|
|
111
|
+
- *MaximumRadius:* *(2D only)* The maximum distance of any pixel in the object to
|
|
112
|
+
the closest pixel outside of the object. For skinny objects, this is
|
|
113
|
+
1/2 of the maximum width of the object.
|
|
114
|
+
- *MedianRadius:* *(2D only)* The median distance of any pixel in the object to the
|
|
115
|
+
closest pixel outside of the object.
|
|
116
|
+
- *MeanRadius:* *(2D only)* The mean distance of any pixel in the object to the
|
|
117
|
+
closest pixel outside of the object.
|
|
118
|
+
- *MinFeretDiameter, MaxFeretDiameter:* *(2D only)* The Feret diameter is the
|
|
119
|
+
distance between two parallel lines tangent on either side of the
|
|
120
|
+
object (imagine taking a caliper and measuring the object at various
|
|
121
|
+
angles). The minimum and maximum Feret diameters are the smallest and
|
|
122
|
+
largest possible diameters, rotating the calipers along all possible
|
|
123
|
+
angles.
|
|
124
|
+
- *Zernike shape features:* *(2D only)* These metrics of shape describe a binary object
|
|
125
|
+
(or more precisely, a patch with background and an object in the
|
|
126
|
+
center) in a basis of Zernike polynomials, using the coefficients as
|
|
127
|
+
features (*Boland et al., 1998*). Currently, Zernike polynomials from
|
|
128
|
+
order 0 to order 9 are calculated, giving in total 30 measurements.
|
|
129
|
+
While there is no limit to the order which can be calculated (and
|
|
130
|
+
indeed you could add more by adjusting the code), the higher order
|
|
131
|
+
polynomials carry less information.
|
|
132
|
+
- *Spatial Moment features:* *(2D only)* A series of weighted averages
|
|
133
|
+
representing the shape, size, rotation and location of the object.
|
|
134
|
+
- *Central Moment features:* *(2D only)* Similar to spatial moments, but
|
|
135
|
+
normalized to the object's centroid. These are therefore not influenced
|
|
136
|
+
by an object's location within an image.
|
|
137
|
+
- *Normalized Moment features:* *(2D only)* Similar to central moments,
|
|
138
|
+
but further normalized to be scale invariant. These moments are therefore
|
|
139
|
+
not impacted by an object's size (or location).
|
|
140
|
+
- *Hu Moment features:* *(2D only)* Hu's set of image moment features. These
|
|
141
|
+
are not altered by the object's location, size or rotation. This means that
|
|
142
|
+
they primarily describe the shape of the object.
|
|
143
|
+
- *Inertia Tensor features:* *(2D only)* A representation of rotational
|
|
144
|
+
inertia of the object relative to it's center.
|
|
145
|
+
- *Inertia Tensor Eigenvalues features:* *(2D only)* Values describing
|
|
146
|
+
the movement of the Inertia Tensor array.
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
Technical notes
|
|
151
|
+
^^^^^^^^^^^^^^^
|
|
152
|
+
|
|
153
|
+
A number of the object measurements are generated by creating an ellipse
|
|
154
|
+
with the same second-moments as the original object region. This is
|
|
155
|
+
essentially the best-fitting ellipse for a given object with the same
|
|
156
|
+
statistical properties. Furthermore, they are not affected by the
|
|
157
|
+
translation or uniform scaling of a region.
|
|
158
|
+
|
|
159
|
+
Following computer vision conventions, the origin of the X and Y axes is at the top
|
|
160
|
+
left of the image rather than the bottom left; the orientation of objects whose topmost point
|
|
161
|
+
is on their right (or are rotated counter-clockwise from the horizontal) will therefore
|
|
162
|
+
have a negative orientation, while objects whose topmost point is on their left
|
|
163
|
+
(or are rotated clockwise from the horizontal) will have a positive orientation.
|
|
164
|
+
|
|
165
|
+
The Zernike features are computed within the minimum enclosing circle of
|
|
166
|
+
the object, i.e., the circle of the smallest diameter that contains all
|
|
167
|
+
of the object’s pixels.
|
|
168
|
+
|
|
169
|
+
References
|
|
170
|
+
^^^^^^^^^^
|
|
171
|
+
|
|
172
|
+
- Rocha L, Velho L, Carvalho PCP, “Image moments-based structuring and
|
|
173
|
+
tracking of objects”, Proceedings from XV Brazilian Symposium on
|
|
174
|
+
Computer Graphics and Image Processing, 2002. `(pdf)`_
|
|
175
|
+
- Principles of Digital Image Processing: Core Algorithms
|
|
176
|
+
(Undergraduate Topics in Computer Science): `Section 2.4.3 -
|
|
177
|
+
Statistical shape properties`_
|
|
178
|
+
- Chrystal P (1885), “On the problem to construct the minimum circle
|
|
179
|
+
enclosing n given points in a plane”, *Proceedings of the Edinburgh
|
|
180
|
+
Mathematical Society*, vol 3, p. 30
|
|
181
|
+
- Hu MK (1962), “Visual pattern recognition by moment invariants”, *IRE
|
|
182
|
+
transactions on information theory*, 8(2), pp.179-187 `(link)`_
|
|
183
|
+
|
|
184
|
+
.. _(pdf): http://sibgrapi.sid.inpe.br/col/sid.inpe.br/banon/2002/10.23.11.34/doc/35.pdf
|
|
185
|
+
.. _Section 2.4.3 - Statistical shape properties: http://www.scribd.com/doc/58004056/Principles-of-Digital-Image-Processing#page=49
|
|
186
|
+
.. _(link): https://ieeexplore.ieee.org/abstract/document/1057692
|
|
187
|
+
.. |MOSS_image0| image:: {ECCENTRICITY_ICON}
|
|
188
|
+
""".format(
|
|
189
|
+
**{
|
|
190
|
+
"ECCENTRICITY_ICON": cellprofiler.gui.help.content.image_resource(
|
|
191
|
+
"MeasureObjectSizeShape_Eccentricity.png"
|
|
192
|
+
)
|
|
193
|
+
}
|
|
194
|
+
)
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
class MeasureObjectSizeShape(Module):
|
|
198
|
+
module_name = "MeasureObjectSizeShape"
|
|
199
|
+
variable_revision_number = 3
|
|
200
|
+
category = "Measurement"
|
|
201
|
+
|
|
202
|
+
def create_settings(self):
|
|
203
|
+
"""Create the settings for the module at startup and set the module name
|
|
204
|
+
|
|
205
|
+
The module allows for an unlimited number of measured objects, each
|
|
206
|
+
of which has an entry in self.object_groups.
|
|
207
|
+
"""
|
|
208
|
+
self.objects_list = LabelListSubscriber(
|
|
209
|
+
"Select object sets to measure",
|
|
210
|
+
[],
|
|
211
|
+
doc="""Select the object sets whose size and shape you want to measure.""",
|
|
212
|
+
)
|
|
213
|
+
self.spacer = Divider(line=True)
|
|
214
|
+
|
|
215
|
+
self.calculate_advanced = Binary(
|
|
216
|
+
text="Calculate the advanced features?",
|
|
217
|
+
value=False,
|
|
218
|
+
doc="""\
|
|
219
|
+
Select *{YES}* to calculate additional statistics for object moments
|
|
220
|
+
and intertia tensors in **2D mode**. These features should not require much additional time
|
|
221
|
+
to calculate, but do add many additional columns to the resulting output
|
|
222
|
+
files.
|
|
223
|
+
|
|
224
|
+
In **3D mode** this setting enables the Solidity measurement, which can be time-consuming
|
|
225
|
+
to calculate.""".format(
|
|
226
|
+
**{"YES": "Yes"}
|
|
227
|
+
),
|
|
228
|
+
)
|
|
229
|
+
|
|
230
|
+
self.calculate_zernikes = Binary(
|
|
231
|
+
text="Calculate the Zernike features?",
|
|
232
|
+
value=True,
|
|
233
|
+
doc="""\
|
|
234
|
+
Select *{YES}* to calculate the Zernike shape features. Because the
|
|
235
|
+
first 10 Zernike polynomials (from order 0 to order 9) are calculated,
|
|
236
|
+
this operation can be time consuming if the image contains a lot of
|
|
237
|
+
objects. Select *{NO}* if you are measuring 3D objects with this
|
|
238
|
+
module.""".format(
|
|
239
|
+
**{"YES": "Yes", "NO": "No"}
|
|
240
|
+
),
|
|
241
|
+
)
|
|
242
|
+
|
|
243
|
+
def settings(self):
|
|
244
|
+
"""The settings as they appear in the save file"""
|
|
245
|
+
result = [self.objects_list, self.calculate_zernikes, self.calculate_advanced]
|
|
246
|
+
return result
|
|
247
|
+
|
|
248
|
+
def visible_settings(self):
|
|
249
|
+
"""The settings as they appear in the module viewer"""
|
|
250
|
+
result = [
|
|
251
|
+
self.objects_list,
|
|
252
|
+
self.spacer,
|
|
253
|
+
self.calculate_zernikes,
|
|
254
|
+
self.calculate_advanced,
|
|
255
|
+
]
|
|
256
|
+
return result
|
|
257
|
+
|
|
258
|
+
def validate_module(self, pipeline):
|
|
259
|
+
"""Make sure chosen objects are selected only once"""
|
|
260
|
+
objects = set()
|
|
261
|
+
if len(self.objects_list.value) == 0:
|
|
262
|
+
raise ValidationError("No object sets selected", self.objects_list)
|
|
263
|
+
|
|
264
|
+
for object_name in self.objects_list.value:
|
|
265
|
+
if object_name in objects:
|
|
266
|
+
raise ValidationError(
|
|
267
|
+
"%s has already been selected" % object_name, object_name
|
|
268
|
+
)
|
|
269
|
+
objects.add(object_name)
|
|
270
|
+
|
|
271
|
+
def get_categories(self, pipeline, object_name):
|
|
272
|
+
"""Get the categories of measurements supplied for the given object name
|
|
273
|
+
|
|
274
|
+
pipeline - pipeline being run
|
|
275
|
+
object_name - name of labels in question (or 'Images')
|
|
276
|
+
returns a list of category names
|
|
277
|
+
"""
|
|
278
|
+
for object_set in self.objects_list.value:
|
|
279
|
+
if object_set == object_name:
|
|
280
|
+
return [ObjectSizeShapeFeatures.AREA_SHAPE.value]
|
|
281
|
+
else:
|
|
282
|
+
return []
|
|
283
|
+
|
|
284
|
+
def get_zernike_numbers(self):
|
|
285
|
+
"""The Zernike numbers measured by this module"""
|
|
286
|
+
if self.calculate_zernikes.value:
|
|
287
|
+
return centrosome.zernike.get_zernike_indexes(
|
|
288
|
+
ObjectSizeShapeFeatures.ZERNIKE_N.value + 1
|
|
289
|
+
)
|
|
290
|
+
else:
|
|
291
|
+
return []
|
|
292
|
+
|
|
293
|
+
def get_zernike_name(self, zernike_index):
|
|
294
|
+
"""Return the name of a Zernike feature, given a (N,M) 2-tuple
|
|
295
|
+
|
|
296
|
+
zernike_index - a 2 element sequence organized as N,M
|
|
297
|
+
"""
|
|
298
|
+
return "Zernike_%d_%d" % (zernike_index[0], zernike_index[1])
|
|
299
|
+
|
|
300
|
+
def get_feature_names(self, pipeline):
|
|
301
|
+
"""Return the names of the features measured"""
|
|
302
|
+
feature_names = list(ObjectSizeShapeFeatures.F_STANDARD.value)
|
|
303
|
+
|
|
304
|
+
if pipeline.volumetric():
|
|
305
|
+
feature_names += list(ObjectSizeShapeFeatures.F_STD_3D.value)
|
|
306
|
+
if self.calculate_advanced.value:
|
|
307
|
+
feature_names += list(ObjectSizeShapeFeatures.F_ADV_3D.value)
|
|
308
|
+
else:
|
|
309
|
+
feature_names += list(ObjectSizeShapeFeatures.F_STD_2D.value)
|
|
310
|
+
if self.calculate_zernikes.value:
|
|
311
|
+
feature_names += [
|
|
312
|
+
self.get_zernike_name(index) for index in self.get_zernike_numbers()
|
|
313
|
+
]
|
|
314
|
+
if self.calculate_advanced.value:
|
|
315
|
+
feature_names += list(get_feature_names.F_ADV_2D.values)
|
|
316
|
+
|
|
317
|
+
return feature_names
|
|
318
|
+
|
|
319
|
+
def get_measurements(self, pipeline, object_name, category):
|
|
320
|
+
"""Return the measurements that this module produces
|
|
321
|
+
|
|
322
|
+
object_name - return measurements made on this object
|
|
323
|
+
(or 'Image' for image measurements)
|
|
324
|
+
category - return measurements made in this category
|
|
325
|
+
"""
|
|
326
|
+
if (
|
|
327
|
+
category == ObjectSizeShapeFeatures.AREA_SHAPE.value
|
|
328
|
+
and self.get_categories(pipeline, object_name)
|
|
329
|
+
):
|
|
330
|
+
return self.get_feature_names(pipeline)
|
|
331
|
+
return []
|
|
332
|
+
|
|
333
|
+
def run(self, workspace):
|
|
334
|
+
"""Run, computing the area measurements for the objects"""
|
|
335
|
+
|
|
336
|
+
if self.show_window:
|
|
337
|
+
workspace.display_data.col_labels = (
|
|
338
|
+
"Object",
|
|
339
|
+
"Feature",
|
|
340
|
+
"Mean",
|
|
341
|
+
"Median",
|
|
342
|
+
"STD",
|
|
343
|
+
)
|
|
344
|
+
|
|
345
|
+
workspace.display_data.statistics = []
|
|
346
|
+
for object_name in self.objects_list.value:
|
|
347
|
+
|
|
348
|
+
objects = workspace.get_objects(object_name)
|
|
349
|
+
|
|
350
|
+
features_to_record = measureobjectsizeshape(
|
|
351
|
+
objects=objects.dense,
|
|
352
|
+
calculate_advanced=self.calculate_advanced.value,
|
|
353
|
+
calculate_zernikes=self.calculate_zernikes.value,
|
|
354
|
+
volumetric=workspace.pipeline.volumetric(),
|
|
355
|
+
spacing=objects.parent_image.spacing
|
|
356
|
+
if objects.has_parent_image
|
|
357
|
+
else (1.0,) * objects.dimensions, # TODO: Check this change is OK
|
|
358
|
+
)
|
|
359
|
+
|
|
360
|
+
for f, m in features_to_record.items():
|
|
361
|
+
self.record_measurement(workspace, object_name, f, m)
|
|
362
|
+
|
|
363
|
+
def display(self, workspace, figure):
|
|
364
|
+
figure.set_subplots((1, 1))
|
|
365
|
+
figure.subplot_table(
|
|
366
|
+
0,
|
|
367
|
+
0,
|
|
368
|
+
workspace.display_data.statistics,
|
|
369
|
+
col_labels=workspace.display_data.col_labels,
|
|
370
|
+
title="default",
|
|
371
|
+
)
|
|
372
|
+
|
|
373
|
+
def record_measurement(self, workspace, object_name, feature_name, result):
|
|
374
|
+
"""Record the result of a measurement in the workspace's measurements"""
|
|
375
|
+
data = centrosome.cpmorphology.fixup_scipy_ndimage_result(result)
|
|
376
|
+
workspace.add_measurement(
|
|
377
|
+
object_name,
|
|
378
|
+
"%s_%s" % (ObjectSizeShapeFeatures.AREA_SHAPE.value, feature_name),
|
|
379
|
+
data,
|
|
380
|
+
)
|
|
381
|
+
if self.show_window and numpy.any(numpy.isfinite(data)) > 0:
|
|
382
|
+
data = data[numpy.isfinite(data)]
|
|
383
|
+
workspace.display_data.statistics.append(
|
|
384
|
+
(
|
|
385
|
+
object_name,
|
|
386
|
+
feature_name,
|
|
387
|
+
"%.2f" % numpy.mean(data),
|
|
388
|
+
"%.2f" % numpy.median(data),
|
|
389
|
+
"%.2f" % numpy.std(data),
|
|
390
|
+
)
|
|
391
|
+
)
|
|
392
|
+
|
|
393
|
+
def get_measurement_columns(self, pipeline):
|
|
394
|
+
"""Return measurement column definitions.
|
|
395
|
+
All cols returned as float even though "Area" will only ever be int"""
|
|
396
|
+
measurement_names = self.get_feature_names(pipeline)
|
|
397
|
+
cols = []
|
|
398
|
+
for oname in self.objects_list.value:
|
|
399
|
+
for mname in measurement_names:
|
|
400
|
+
cols += [
|
|
401
|
+
(
|
|
402
|
+
oname,
|
|
403
|
+
ObjectSizeShapeFeatures.AREA_SHAPE.value + "_" + mname,
|
|
404
|
+
COLTYPE_FLOAT,
|
|
405
|
+
)
|
|
406
|
+
]
|
|
407
|
+
return cols
|
|
408
|
+
|
|
409
|
+
def upgrade_settings(self, setting_values, variable_revision_number, module_name):
|
|
410
|
+
"""Adjust the setting_values for older save file versions"""
|
|
411
|
+
if variable_revision_number == 1:
|
|
412
|
+
objects_list = setting_values[:-1]
|
|
413
|
+
setting_values = [", ".join(map(str, objects_list)), setting_values[-1]]
|
|
414
|
+
variable_revision_number = 2
|
|
415
|
+
if variable_revision_number == 2:
|
|
416
|
+
# Add advanced features toggle
|
|
417
|
+
setting_values.append("No")
|
|
418
|
+
variable_revision_number = 3
|
|
419
|
+
return setting_values, variable_revision_number
|
|
420
|
+
|
|
421
|
+
def volumetric(self):
|
|
422
|
+
return True
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
MeasureObjectAreaShape = MeasureObjectSizeShape
|
|
@@ -547,9 +547,7 @@ measured and will result in a undefined value in the output file.
|
|
|
547
547
|
|
|
548
548
|
gray_levels = int(self.gray_levels.value)
|
|
549
549
|
|
|
550
|
-
unique_labels =
|
|
551
|
-
if unique_labels[0] == 0:
|
|
552
|
-
unique_labels = unique_labels[1:]
|
|
550
|
+
unique_labels = objects.indices
|
|
553
551
|
|
|
554
552
|
n_directions = 13 if objects.volumetric else 4
|
|
555
553
|
|
|
@@ -594,17 +592,16 @@ measured and will result in a undefined value in the output file.
|
|
|
594
592
|
pixel_data, in_range=(0, 255), out_range=(0, gray_levels - 1)
|
|
595
593
|
).astype(numpy.uint8)
|
|
596
594
|
props = skimage.measure.regionprops(labels, pixel_data)
|
|
595
|
+
features = numpy.empty((n_directions, 13, max(unique_labels)))
|
|
597
596
|
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
for index, prop in enumerate(props):
|
|
597
|
+
for prop in props:
|
|
601
598
|
label_data = prop["intensity_image"]
|
|
602
599
|
try:
|
|
603
|
-
features[:, :,
|
|
600
|
+
features[:, :, prop.label-1] = mahotas.features.haralick(
|
|
604
601
|
label_data, distance=scale, ignore_zeros=True
|
|
605
602
|
)
|
|
606
603
|
except ValueError:
|
|
607
|
-
features[:, :,
|
|
604
|
+
features[:, :, prop.label-1] = numpy.nan
|
|
608
605
|
|
|
609
606
|
for direction, direction_features in enumerate(features):
|
|
610
607
|
for feature_name, feature in zip(F_HARALICK, direction_features):
|