CellProfiler-nightly 5.0.0.dev707__tar.gz → 5.0.0.dev718__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.dev707 → cellprofiler_nightly-5.0.0.dev718}/CellProfiler_nightly.egg-info/PKG-INFO +1 -1
- cellprofiler_nightly-5.0.0.dev718/CellProfiler_nightly.egg-info/scm_version.json +8 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/PKG-INFO +1 -1
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/_version.py +3 -3
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/module_view/_module_view.py +4 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/identifytertiaryobjects.py +1 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/relateobjects.py +91 -361
- cellprofiler_nightly-5.0.0.dev707/CellProfiler_nightly.egg-info/scm_version.json +0 -8
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/CellProfiler_nightly.egg-info/SOURCES.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/CellProfiler_nightly.egg-info/dependency_links.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/CellProfiler_nightly.egg-info/entry_points.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/CellProfiler_nightly.egg-info/requires.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/CellProfiler_nightly.egg-info/scm_file_list.json +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/CellProfiler_nightly.egg-info/top_level.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/LICENSE +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/README.md +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/__main__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/examples/ExampleFly/ExampleFly.cppipe +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/examples/ExampleFly/images/01_POS002_D.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/examples/ExampleFly/images/01_POS002_F.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/examples/ExampleFly/images/01_POS002_R.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/examples/ExampleFly/images/01_POS076_D.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/examples/ExampleFly/images/01_POS076_F.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/examples/ExampleFly/images/01_POS076_R.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/examples/ExampleFly/images/01_POS218_D.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/examples/ExampleFly/images/01_POS218_F.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/examples/ExampleFly/images/01_POS218_R.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/help/display_image_tools.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/help/display_interactive_navigation.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/help/display_menu_bar.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/help/legacy_matlab_image.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/help/navigation_edit_menu.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/help/navigation_file_menu.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/help/navigation_test_menu.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/help/navigation_window_menu.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/help/other_3d_identify.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/help/other_batch.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/help/other_logging.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/help/other_omero.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/help/other_plugins.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/help/other_shell.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/help/other_troubleshooting.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/help/other_widget_inspector.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/help/output_measurements.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/help/output_plateviewer.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/help/output_spreadsheets.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/help/pipelines_building.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/help/pipelines_running.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/help/projects_configure_images.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/help/projects_image_ordering.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/help/projects_image_sequences.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/help/projects_introduction.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/help/projects_selecting_images.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/help/why_use_cellprofiler.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/icons/CellProfiler-favicon-120.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/icons/CellProfiler-favicon-128.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/icons/CellProfiler-favicon-144.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/icons/CellProfiler-favicon-152.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/icons/CellProfiler-favicon-195.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/icons/CellProfiler-favicon-228.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/icons/CellProfiler-favicon-32.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/icons/CellProfiler-favicon-57.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/icons/CellProfiler-favicon-72.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/icons/CellProfiler-favicon-96.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/icons/CellProfiler-favicon.ico +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/icons/CellProfiler.ai +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/icons/CellProfiler.icns +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/icons/CellProfiler.ico +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/icons/CellProfiler.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/icons/CellProfiler.svg +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/icons/CellProfiler_square.svg +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/Align.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/ApplyThreshold.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/CollapseTree.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/ColorToGray.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/CorrectIlluminationApply.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/CorrectIlluminationCalculate.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/Crop.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/ExpandOrShrinkObjects.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/ExpandTree.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/GrayToColor.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/Groups_ExampleDisplayTable.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/IMG_ANALYZED.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/IMG_ANALYZE_16.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/IMG_ANALYZE_24.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/IMG_CLOSED_EYE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/IMG_DISABLED.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/IMG_ERROR.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/IMG_EYE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/IMG_GO.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/IMG_GO_DIM.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/IMG_IMAGE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/IMG_MEASURE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/IMG_OK.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/IMG_PAUSE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/IMG_RUN.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/IMG_SLIDER.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/IMG_SLIDER_ACTIVE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/IMG_STOP.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/IMG_TEST.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/IMG_UNAVAILABLE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/IMG_UPDATE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/IMG_USE_INPUT.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/IMG_USE_OUTPUT.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/IMG_USE_SOURCE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/IMG_WARN.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/IdentifyPrimaryObjects_IntensityDeclumping.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/IdentifyPrimaryObjects_ShapeDeclumping.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/IdentifySecondaryObjects.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/IdentifyTertiaryObjects.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/Images_FilelistPanel.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/Images_FilelistPanel_Blank.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/Images_FilelistPanel_Filled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/Images_UsingRules.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/MeasureGranularity_example.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/MeasureImageAreaOccupied.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/MeasureObjectIntensityDistribution_Edges_Centers.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/MeasureObjectIntensityDistribution_Magnitude_Phase.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/MeasureObjectSizeShape_Eccentricity.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/MeasureTexture.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/Measure_texture_3D_correspondences_1.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/Measure_texture_3D_correspondences_1_highres.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/Measure_texture_3D_correspondences_2.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/Measure_texture_3D_correspondences_2_highres.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/Metadata_ExampleDisplayTable.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/NamesAndTypes_ExampleDisplayTable.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/Tile.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/UnmixColors.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/check.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/color.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/cp_panel_schematic.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/dapi.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/delete.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/downarrow.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/eye-close.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/eye-open.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/ffwd.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/ffwddisabled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/filter.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/folder_browse.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/folder_create.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/gear.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/gfp.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/icon_copyrights.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/illumination_function.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/image_to_object_dataflow.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/image_to_object_dataflow.psd +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/mask.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/microscope-color_16.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/microscope-icon_16.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/microscope-icon_32.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/microscopes_16.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/module_add.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/module_help.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/module_movedown.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/module_moveup.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/module_remove.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/monochrome.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/movie_16.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/next.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/objects.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/pause.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/pausedisabled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/play.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/playdisabled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/previous.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/remove-sign.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/rewind.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/rewinddisabled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/splash-black-text-alpha.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/splash-white-text-alpha.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/splash.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/status_pause.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/status_save.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/status_stop.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/stop.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/stopdisabled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/structuringelement.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/thumb-down.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/thumb-up.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/unchecked.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/wantpony.wav +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/welcome_examples.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/welcome_forum.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/welcome_help.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/welcome_manual.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/welcome_new.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/welcome_pipeline.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/welcome_screen_help.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/welcome_start.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/welcome_tutorial.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/welcomescreen_forum.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/welcomescreen_manual.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/welcomescreen_tutorials.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/window_back.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/window_filesave.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/window_forward.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/window_home.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/window_pan.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/data/images/window_zoom_to_rect.png +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/_tree_checkbox_dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/_welcome_frame.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/_workspace_model.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/addmoduleframe.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/app.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/artist.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/checkupdate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/constants/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/constants/figure.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/constants/module_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/constants/preferences_dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/constants/preferences_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/constants/workspace_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/cpframe.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/editobjectsdlg.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/errordialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/figure/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/figure/_figure.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/figure/_navigation_toolbar.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/figure/_outline_artist.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/gridrenderers.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/help/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/help/content.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/help/menu.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/help/search.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/html/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/html/configure_images_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/html/exporting_results_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/html/getting_started.html +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/html/htmlwindow.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/html/identify_features_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/html/in_app_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/html/making_measurements_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/html/running_pipeline_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/html/selecting_images_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/html/test_mode_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/html/utils.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/html/welcome.html +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/htmldialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/imagesetctrl.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/menu.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/metadatactrl.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/module_view/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/module_view/_binary_matrix_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/module_view/_data_type_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/module_view/_file_collection_display_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/module_view/_filter_panel_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/module_view/_joiner_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/module_view/_module_sizer.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/module_view/_setting_edited_event.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/module_view/_table_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/module_view/_validation_request_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/moduleview.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/namesubscriber.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/omerologin.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/parametersampleframe.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/pathlist.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/pipeline.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/pipelinecontroller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/pipelinelistview.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/plateviewer.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/plugins_menu.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/preferences_dialog/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/preferences_dialog/_integer_preference.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/preferences_dialog/_preferences_dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/preferences_view/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/preferences_view/_preferences_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/preferences_view/_progress_watcher.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/readers_dialog/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/readers_dialog/_readers_dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/regexp_editor.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/tools.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/utilities/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/utilities/figure.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/utilities/icon.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/utilities/module_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/utilities/preferences_dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/utilities/preferences_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/utilities/workspace_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/workspace_view/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/workspace_view/_workspace_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/workspace_view/_workspace_view_figure.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/workspace_view/_workspace_view_image_row.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/workspace_view/_workspace_view_mask_row.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/workspace_view/_workspace_view_measurement_row.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/workspace_view/_workspace_view_objects_row.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/gui/workspace_view/_workspace_view_row.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/icons/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/knime_bridge.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/misc.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/UntangleWorms.xsd +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/_help.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/calculatemath.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/calculatestatistics.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/classifyobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/closing.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/colortogray.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/combineobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/convertimagetoobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/convertobjectstoimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/correctilluminationapply.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/correctilluminationcalculate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/createbatchfiles.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/crop.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/definegrid.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/dilateimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/dilateobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/displaydataonimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/displaydensityplot.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/displayhistogram.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/displayplatemap.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/displayscatterplot.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/editobjectsmanually.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/enhanceedges.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/enhanceorsuppressfeatures.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/erodeimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/erodeobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/expandorshrinkobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/exporttodatabase.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/exporttospreadsheet.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/fillobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/filterobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/findmaxima.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/flagimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/flipandrotate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/gaussianfilter.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/graytocolor.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/identifydeadworms.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/identifyobjectsingrid.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/identifyobjectsmanually.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/identifyprimaryobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/identifysecondaryobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/imagemath.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/invertforprinting.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/labelimages.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/makeprojection.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/maskimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/maskobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/matchtemplate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/measurecolocalization.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/measuregranularity.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/measureimageareaoccupied.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/measureimageintensity.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/measureimageoverlap.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/measureimagequality.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/measureimageskeleton.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/measureobjectintensity.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/measureobjectintensitydistribution.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/measureobjectneighbors.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/measureobjectoverlap.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/measureobjectsizeshape.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/measureobjectskeleton.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/measuretexture.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/medialaxis.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/medianfilter.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/morph.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/morphologicalskeleton.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/opening.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/overlayobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/overlayoutlines.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/plugins/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/plugins/imagetemplate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/plugins/measurementtemplate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/plugins/segmentationtemplatewithdependencies.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/reducenoise.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/removeholes.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/rescaleintensity.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/resize.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/resizeobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/runimagejmacro.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/savecroppedobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/saveimages.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/shrinktoobjectcenters.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/smooth.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/splitormergeobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/straightenworms.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/threshold.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/tile.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/trackobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/unmixcolors.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/untangleworms.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/modules/watershed.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/utilities/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/utilities/morphology.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/utilities/rules.py +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/environment.yml +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/pyproject.toml +0 -0
- {cellprofiler_nightly-5.0.0.dev707 → cellprofiler_nightly-5.0.0.dev718}/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.dev718
|
|
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.dev718
|
|
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.dev707 → cellprofiler_nightly-5.0.0.dev718}/cellprofiler/_version.py
RENAMED
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '5.0.0.
|
|
22
|
-
__version_tuple__ = version_tuple = (5, 0, 0, '
|
|
21
|
+
__version__ = version = '5.0.0.dev718'
|
|
22
|
+
__version_tuple__ = version_tuple = (5, 0, 0, 'dev718')
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'ga1fd59b3a'
|
|
@@ -728,6 +728,10 @@ class ModuleView:
|
|
|
728
728
|
v.test_valid(self.__pipeline)
|
|
729
729
|
except:
|
|
730
730
|
pass
|
|
731
|
+
# test_valid for Choice calls its `self.__choice_fn` which may set `v.choices` to a new value
|
|
732
|
+
# since `self.__choice` is being run for the first time since `Choice` instantiation
|
|
733
|
+
# the reason we take `choices` in as an argument is purely for a consistent function signature with other `make_x` functions
|
|
734
|
+
choices = v.choices
|
|
731
735
|
if v.value not in choices and style == wx.CB_READONLY:
|
|
732
736
|
choices = choices + [v.value]
|
|
733
737
|
if not control:
|
|
@@ -478,6 +478,7 @@ but the results will be zero or not-a-number (NaN).
|
|
|
478
478
|
if object_name == self.subregion_objects_name:
|
|
479
479
|
if category == "Location":
|
|
480
480
|
result += ["Center_X", "Center_Y"]
|
|
481
|
+
# TODO: 5116 - should use some constant, probably C_PARENT, same above and below
|
|
481
482
|
elif category == "Parent":
|
|
482
483
|
result += [
|
|
483
484
|
self.primary_objects_name.value,
|
|
@@ -2,15 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import cellprofiler_core.object
|
|
4
4
|
import numpy
|
|
5
|
-
import scipy.ndimage
|
|
6
|
-
import skimage.segmentation
|
|
7
5
|
from cellprofiler_core.constants.measurement import (
|
|
8
|
-
C_PARENT,
|
|
9
|
-
C_CHILDREN,
|
|
10
|
-
FF_PARENT,
|
|
11
|
-
FF_CHILDREN_COUNT,
|
|
12
|
-
R_PARENT,
|
|
13
|
-
R_CHILD,
|
|
14
6
|
MCA_AVAILABLE_EACH_CYCLE,
|
|
15
7
|
C_COUNT,
|
|
16
8
|
C_LOCATION,
|
|
@@ -19,7 +11,6 @@ from cellprofiler_core.constants.measurement import (
|
|
|
19
11
|
FTR_CENTER_Y,
|
|
20
12
|
FTR_CENTER_Z,
|
|
21
13
|
FTR_OBJECT_NUMBER,
|
|
22
|
-
M_NUMBER_OBJECT_NUMBER,
|
|
23
14
|
COLTYPE_FLOAT,
|
|
24
15
|
)
|
|
25
16
|
from cellprofiler_core.module.image_segmentation import ObjectProcessing
|
|
@@ -31,6 +22,16 @@ from cellprofiler_core.setting.text import LabelName
|
|
|
31
22
|
|
|
32
23
|
from cellprofiler.modules import _help
|
|
33
24
|
|
|
25
|
+
from cellprofiler_library.opts.relateobjects import DistanceMethod, TemplateMeasurementFormat, Relationship, C_PARENT, C_CHILDREN
|
|
26
|
+
from cellprofiler_library.modules._relateobjects import (
|
|
27
|
+
relate_objects,
|
|
28
|
+
should_aggregate_feature as _should_aggregate_feature,
|
|
29
|
+
)
|
|
30
|
+
from cellprofiler_library.measurement_model import (
|
|
31
|
+
R_FIRST_OBJECT_NUMBER,
|
|
32
|
+
R_SECOND_OBJECT_NUMBER,
|
|
33
|
+
)
|
|
34
|
+
|
|
34
35
|
__doc__ = """\
|
|
35
36
|
RelateObjects
|
|
36
37
|
=============
|
|
@@ -86,17 +87,6 @@ Measurements made by this module
|
|
|
86
87
|
**{"HELP_ON_SAVING_OBJECTS": _help.HELP_ON_SAVING_OBJECTS}
|
|
87
88
|
)
|
|
88
89
|
|
|
89
|
-
D_NONE = "None"
|
|
90
|
-
D_CENTROID = "Centroid"
|
|
91
|
-
D_MINIMUM = "Minimum"
|
|
92
|
-
D_BOTH = "Both"
|
|
93
|
-
|
|
94
|
-
D_ALL = [D_NONE, D_CENTROID, D_MINIMUM, D_BOTH]
|
|
95
|
-
|
|
96
|
-
C_MEAN = "Mean"
|
|
97
|
-
|
|
98
|
-
FF_MEAN = "%s_%%s_%%s" % C_MEAN
|
|
99
|
-
|
|
100
90
|
"""Distance category"""
|
|
101
91
|
C_DISTANCE = "Distance"
|
|
102
92
|
|
|
@@ -106,12 +96,6 @@ FEAT_CENTROID = "Centroid"
|
|
|
106
96
|
"""Minimum distance feature"""
|
|
107
97
|
FEAT_MINIMUM = "Minimum"
|
|
108
98
|
|
|
109
|
-
"""Centroid distance measurement (FF_DISTANCE % parent)"""
|
|
110
|
-
FF_CENTROID = "%s_%s_%%s" % (C_DISTANCE, FEAT_CENTROID)
|
|
111
|
-
|
|
112
|
-
"""Minimum distance measurement (FF_MINIMUM % parent)"""
|
|
113
|
-
FF_MINIMUM = "%s_%s_%%s" % (C_DISTANCE, FEAT_MINIMUM)
|
|
114
|
-
|
|
115
99
|
FIXED_SETTING_COUNT = 7
|
|
116
100
|
VARIABLE_SETTING_COUNT = 1
|
|
117
101
|
|
|
@@ -142,7 +126,7 @@ speckles to the nuclei that contains them, the speckles are the children.
|
|
|
142
126
|
|
|
143
127
|
self.find_parent_child_distances = Choice(
|
|
144
128
|
"Calculate child-parent distances?",
|
|
145
|
-
|
|
129
|
+
[DistanceMethod.NONE, DistanceMethod.CENTROID, DistanceMethod.MINIMUM, DistanceMethod.BOTH],
|
|
146
130
|
doc="""\
|
|
147
131
|
Choose the method to calculate distances of each child to its parent.
|
|
148
132
|
For example, these measurements can tell you whether nuclear speckles
|
|
@@ -157,10 +141,10 @@ periphery.
|
|
|
157
141
|
- *{D_BOTH}:* Calculate both the *{D_MINIMUM}* and *{D_CENTROID}*
|
|
158
142
|
distances.""".format(
|
|
159
143
|
**{
|
|
160
|
-
"D_NONE":
|
|
161
|
-
"D_MINIMUM":
|
|
162
|
-
"D_CENTROID":
|
|
163
|
-
"D_BOTH":
|
|
144
|
+
"D_NONE": DistanceMethod.NONE,
|
|
145
|
+
"D_MINIMUM": DistanceMethod.MINIMUM,
|
|
146
|
+
"D_CENTROID": DistanceMethod.CENTROID,
|
|
147
|
+
"D_BOTH": DistanceMethod.BOTH,
|
|
164
148
|
}
|
|
165
149
|
),
|
|
166
150
|
)
|
|
@@ -176,7 +160,7 @@ other objects. These objects must be either parents or children of your
|
|
|
176
160
|
parent object in order for this module to determine the distances. For
|
|
177
161
|
instance, you might find “Nuclei” using **IdentifyPrimaryObjects**, find
|
|
178
162
|
“Cells” using **IdentifySecondaryObjects** and find “Cytoplasm” using
|
|
179
|
-
**IdentifyTertiaryObjects**. You can use **
|
|
163
|
+
**IdentifyTertiaryObjects**. You can use **RelateObjects** to relate speckles
|
|
180
164
|
to cells and then measure distances to nuclei and cytoplasm. You could
|
|
181
165
|
not use **RelateObjects** to relate speckles to cytoplasm and then
|
|
182
166
|
measure distances to nuclei, because nuclei are neither a direct parent
|
|
@@ -319,7 +303,7 @@ parents or children of the parent object.""",
|
|
|
319
303
|
if self.wants_child_objects_saved:
|
|
320
304
|
visible_settings += [self.output_child_objects_name]
|
|
321
305
|
|
|
322
|
-
if self.find_parent_child_distances !=
|
|
306
|
+
if self.find_parent_child_distances != DistanceMethod.NONE and self.has_step_parents:
|
|
323
307
|
visible_settings += [self.wants_step_parent_distances]
|
|
324
308
|
|
|
325
309
|
if self.wants_step_parent_distances:
|
|
@@ -334,121 +318,83 @@ parents or children of the parent object.""",
|
|
|
334
318
|
parents = workspace.object_set.get_objects(self.x_name.value)
|
|
335
319
|
|
|
336
320
|
children = workspace.object_set.get_objects(self.y_name.value)
|
|
321
|
+
parent_labels = parents.segmented
|
|
322
|
+
child_labels = children.segmented
|
|
323
|
+
|
|
324
|
+
volumetric = parents.volumetric
|
|
325
|
+
parent_ijv = parents.ijv
|
|
326
|
+
child_ijv = children.ijv
|
|
337
327
|
|
|
338
|
-
|
|
328
|
+
find_centroid = self.find_parent_child_distances in (DistanceMethod.BOTH, DistanceMethod.CENTROID)
|
|
329
|
+
find_minimum = self.find_parent_child_distances in (DistanceMethod.BOTH, DistanceMethod.MINIMUM)
|
|
339
330
|
|
|
340
331
|
m = workspace.measurements
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
332
|
+
all_measurements = m.to_library_measurements()
|
|
333
|
+
step_parent_names = self.get_parent_names()
|
|
334
|
+
|
|
335
|
+
wants_child_objects_saved = self.wants_child_objects_saved.value
|
|
336
|
+
|
|
337
|
+
# Relate Primary
|
|
338
|
+
lib_result = relate_objects(
|
|
339
|
+
parent_labels=parent_labels,
|
|
340
|
+
child_labels=child_labels,
|
|
341
|
+
parent_ijv=parent_ijv,
|
|
342
|
+
child_ijv=child_ijv,
|
|
343
|
+
parent_name=self.x_name.value,
|
|
344
|
+
child_name=self.y_name.value,
|
|
345
|
+
volumetric=volumetric,
|
|
346
|
+
parent_and_step_parent_names=step_parent_names,
|
|
347
|
+
find_centroid=find_centroid,
|
|
348
|
+
find_minimum=find_minimum,
|
|
349
|
+
child_dimensions = children.dimensions,
|
|
350
|
+
wants_per_parent_means=self.wants_per_parent_means.value,
|
|
351
|
+
measurements=all_measurements,
|
|
352
|
+
wants_child_objects_saved=wants_child_objects_saved,
|
|
353
|
+
child_small_removed_segmented=children.small_removed_segmented if wants_child_objects_saved else None,
|
|
344
354
|
)
|
|
355
|
+
if wants_child_objects_saved:
|
|
356
|
+
lib_measurements, child_objects = lib_result
|
|
357
|
+
else:
|
|
358
|
+
lib_measurements = lib_result
|
|
345
359
|
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
360
|
+
# Unpack library measurements
|
|
361
|
+
for obj_name, features in lib_measurements.objects.items():
|
|
362
|
+
for feature_name, values in features.items():
|
|
363
|
+
m.add_measurement(obj_name, feature_name, values)
|
|
349
364
|
|
|
365
|
+
#
|
|
366
|
+
# Add the relationships to core measurements
|
|
367
|
+
#
|
|
368
|
+
# get image_numbers
|
|
369
|
+
parents_of = lib_measurements.get_measurement(
|
|
370
|
+
self.y_name.value,
|
|
371
|
+
TemplateMeasurementFormat.FF_PARENT % self.x_name.value
|
|
372
|
+
)
|
|
350
373
|
good_parents = parents_of[parents_of != 0]
|
|
351
|
-
|
|
352
374
|
image_numbers = numpy.ones(len(good_parents), int) * m.image_set_number
|
|
353
375
|
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
if numpy.any(good_parents):
|
|
376
|
+
# iterate over the relationships and add them to the measurements along with the stateful values like module number and image numbers
|
|
377
|
+
for relationship in lib_measurements.relationships:
|
|
357
378
|
m.add_relate_measurement(
|
|
358
|
-
self.module_num,
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
image_numbers,
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
)
|
|
367
|
-
|
|
368
|
-
m.add_relate_measurement(
|
|
369
|
-
self.module_num,
|
|
370
|
-
R_CHILD,
|
|
371
|
-
self.y_name.value,
|
|
372
|
-
self.x_name.value,
|
|
373
|
-
image_numbers,
|
|
374
|
-
good_children,
|
|
375
|
-
image_numbers,
|
|
376
|
-
good_parents,
|
|
377
|
-
)
|
|
378
|
-
|
|
379
|
-
parent_names = self.get_parent_names()
|
|
380
|
-
|
|
381
|
-
for parent_name in parent_names:
|
|
382
|
-
if self.find_parent_child_distances in (D_BOTH, D_CENTROID):
|
|
383
|
-
self.calculate_centroid_distances(workspace, parent_name)
|
|
384
|
-
|
|
385
|
-
if self.find_parent_child_distances in (D_BOTH, D_MINIMUM):
|
|
386
|
-
self.calculate_minimum_distances(workspace, parent_name)
|
|
387
|
-
|
|
388
|
-
if self.wants_per_parent_means.value:
|
|
389
|
-
parent_indexes = numpy.arange(numpy.max(parents.segmented)) + 1
|
|
390
|
-
|
|
391
|
-
for feature_name in m.get_feature_names(self.y_name.value):
|
|
392
|
-
if not self.should_aggregate_feature(feature_name):
|
|
393
|
-
continue
|
|
394
|
-
|
|
395
|
-
data = m.get_current_measurement(self.y_name.value, feature_name)
|
|
396
|
-
|
|
397
|
-
if data is not None and len(data) > 0:
|
|
398
|
-
if len(parents_of) > 0:
|
|
399
|
-
means = scipy.ndimage.mean(
|
|
400
|
-
data.astype(float), parents_of, parent_indexes
|
|
401
|
-
)
|
|
402
|
-
else:
|
|
403
|
-
means = numpy.zeros((0,))
|
|
404
|
-
else:
|
|
405
|
-
# No child measurements - all NaN
|
|
406
|
-
means = numpy.ones(len(parents_of)) * numpy.nan
|
|
407
|
-
|
|
408
|
-
mean_feature_name = FF_MEAN % (self.y_name.value, feature_name)
|
|
409
|
-
|
|
410
|
-
m.add_measurement(self.x_name.value, mean_feature_name, means)
|
|
411
|
-
|
|
412
|
-
if self.wants_child_objects_saved.value:
|
|
413
|
-
# most of this is lifted wholesale from FilterObjects
|
|
414
|
-
parent_labels = parents.segmented
|
|
415
|
-
|
|
416
|
-
child_labels = children.segmented
|
|
417
|
-
|
|
418
|
-
children_with_parents = numpy.where(parent_labels > 0, child_labels, 0)
|
|
419
|
-
|
|
420
|
-
indexes = numpy.unique(children_with_parents)[1:]
|
|
421
|
-
|
|
422
|
-
# Create an array that maps label indexes to their new values
|
|
423
|
-
# All labels to be deleted have a value in this array of zero
|
|
424
|
-
#
|
|
425
|
-
new_object_count = len(indexes)
|
|
426
|
-
max_label = numpy.max(child_labels)
|
|
427
|
-
label_indexes = numpy.zeros((max_label + 1,), int)
|
|
428
|
-
label_indexes[indexes] = numpy.arange(1, new_object_count + 1)
|
|
429
|
-
|
|
430
|
-
target_labels = children.segmented.copy()
|
|
431
|
-
#
|
|
432
|
-
# Reindex the labels of the old source image
|
|
433
|
-
#
|
|
434
|
-
target_labels[target_labels > max_label] = 0
|
|
435
|
-
target_labels = label_indexes[target_labels]
|
|
379
|
+
module_number=self.module_num,
|
|
380
|
+
relationship=relationship.relationship,
|
|
381
|
+
object_name1=relationship.object_name1,
|
|
382
|
+
object_name2=relationship.object_name2,
|
|
383
|
+
image_numbers1=image_numbers,
|
|
384
|
+
image_numbers2=image_numbers,
|
|
385
|
+
object_numbers1=relationship[R_FIRST_OBJECT_NUMBER],
|
|
386
|
+
object_numbers2=relationship[R_SECOND_OBJECT_NUMBER],
|
|
387
|
+
)
|
|
388
|
+
if wants_child_objects_saved:
|
|
436
389
|
#
|
|
437
390
|
# Make a new set of objects - retain the old set's unedited
|
|
438
391
|
# segmentation for the new and generally try to copy stuff
|
|
439
392
|
# from the old to the new.
|
|
440
393
|
#
|
|
441
394
|
target_objects = cellprofiler_core.object.Objects()
|
|
442
|
-
target_objects.segmented =
|
|
395
|
+
target_objects.segmented = child_objects.segmented
|
|
443
396
|
target_objects.unedited_segmented = children.unedited_segmented
|
|
444
|
-
|
|
445
|
-
# Remove the filtered objects from the small_removed_segmented
|
|
446
|
-
# if present. "small_removed_segmented" should really be
|
|
447
|
-
# "filtered_removed_segmented".
|
|
448
|
-
#
|
|
449
|
-
small_removed = children.small_removed_segmented.copy()
|
|
450
|
-
small_removed[(target_labels == 0) & (children.segmented != 0)] = 0
|
|
451
|
-
target_objects.small_removed_segmented = small_removed
|
|
397
|
+
target_objects.small_removed_segmented = child_objects.small_removed_segmented
|
|
452
398
|
if children.has_parent_image:
|
|
453
399
|
target_objects.parent_image = children.parent_image
|
|
454
400
|
workspace.object_set.add_objects(
|
|
@@ -546,229 +492,13 @@ parents or children of the parent object.""",
|
|
|
546
492
|
|
|
547
493
|
return parent_names
|
|
548
494
|
|
|
549
|
-
def calculate_centroid_distances(self, workspace, parent_name):
|
|
550
|
-
"""Calculate the centroid-centroid distance between parent & child"""
|
|
551
|
-
meas = workspace.measurements
|
|
552
|
-
|
|
553
|
-
sub_object_name = self.y_name.value
|
|
554
|
-
|
|
555
|
-
parents = workspace.object_set.get_objects(parent_name)
|
|
556
|
-
|
|
557
|
-
children = workspace.object_set.get_objects(sub_object_name)
|
|
558
|
-
|
|
559
|
-
parents_of = self.get_parents_of(workspace, parent_name)
|
|
560
|
-
|
|
561
|
-
pcenters = parents.center_of_mass()
|
|
562
|
-
|
|
563
|
-
ccenters = children.center_of_mass()
|
|
564
|
-
|
|
565
|
-
if pcenters.shape[0] == 0 or ccenters.shape[0] == 0:
|
|
566
|
-
dist = numpy.array([numpy.NaN] * len(parents_of))
|
|
567
|
-
else:
|
|
568
|
-
#
|
|
569
|
-
# Make indexing of parents_of be same as pcenters
|
|
570
|
-
#
|
|
571
|
-
parents_of = parents_of - 1
|
|
572
|
-
|
|
573
|
-
mask = (parents_of != -1) | (parents_of > pcenters.shape[0])
|
|
574
|
-
|
|
575
|
-
dist = numpy.array([numpy.NaN] * ccenters.shape[0])
|
|
576
|
-
|
|
577
|
-
dist[mask] = numpy.sqrt(
|
|
578
|
-
numpy.sum((ccenters[mask, :] - pcenters[parents_of[mask], :]) ** 2, 1)
|
|
579
|
-
)
|
|
580
|
-
|
|
581
|
-
meas.add_measurement(sub_object_name, FF_CENTROID % parent_name, dist)
|
|
582
|
-
|
|
583
|
-
def calculate_minimum_distances(self, workspace, parent_name):
|
|
584
|
-
"""Calculate the distance from child center to parent perimeter"""
|
|
585
|
-
meas = workspace.measurements
|
|
586
|
-
|
|
587
|
-
sub_object_name = self.y_name.value
|
|
588
|
-
|
|
589
|
-
parents = workspace.object_set.get_objects(parent_name)
|
|
590
|
-
|
|
591
|
-
children = workspace.object_set.get_objects(sub_object_name)
|
|
592
|
-
|
|
593
|
-
parents_of = self.get_parents_of(workspace, parent_name)
|
|
594
|
-
|
|
595
|
-
if len(parents_of) == 0:
|
|
596
|
-
dist = numpy.zeros((0,))
|
|
597
|
-
elif numpy.all(parents_of == 0):
|
|
598
|
-
dist = numpy.array([numpy.NaN] * len(parents_of))
|
|
599
|
-
else:
|
|
600
|
-
mask = parents_of > 0
|
|
601
|
-
|
|
602
|
-
ccenters = children.center_of_mass()
|
|
603
|
-
|
|
604
|
-
ccenters = ccenters[mask, :]
|
|
605
|
-
|
|
606
|
-
parents_of_masked = parents_of[mask] - 1
|
|
607
|
-
|
|
608
|
-
pperim = (
|
|
609
|
-
skimage.segmentation.find_boundaries(parents.segmented, mode="inner")
|
|
610
|
-
* parents.segmented
|
|
611
|
-
)
|
|
612
|
-
|
|
613
|
-
# Get a list of all points on the perimeter
|
|
614
|
-
perim_loc = numpy.argwhere(pperim != 0)
|
|
615
|
-
|
|
616
|
-
# Get the label # for each point
|
|
617
|
-
# multidimensional indexing with non-tuple values not allowed as of numpy 1.23
|
|
618
|
-
perim_loc_t = tuple(map(tuple, perim_loc.transpose()))
|
|
619
|
-
perim_idx = pperim[perim_loc_t]
|
|
620
|
-
|
|
621
|
-
# Sort the points by label #
|
|
622
|
-
reverse_column_order = list(range(children.dimensions))[::-1]
|
|
623
|
-
|
|
624
|
-
coordinates = perim_loc[:, reverse_column_order].transpose().tolist()
|
|
625
|
-
|
|
626
|
-
coordinates.append(perim_idx)
|
|
627
|
-
|
|
628
|
-
idx = numpy.lexsort(coordinates)
|
|
629
|
-
|
|
630
|
-
perim_loc = perim_loc[idx, :]
|
|
631
|
-
|
|
632
|
-
perim_idx = perim_idx[idx]
|
|
633
|
-
|
|
634
|
-
# Get counts and indexes to each run of perimeter points
|
|
635
|
-
counts = scipy.ndimage.sum(
|
|
636
|
-
numpy.ones(len(perim_idx)),
|
|
637
|
-
perim_idx,
|
|
638
|
-
numpy.arange(1, perim_idx[-1] + 1),
|
|
639
|
-
).astype(numpy.int32)
|
|
640
|
-
|
|
641
|
-
indexes = numpy.cumsum(counts) - counts
|
|
642
|
-
|
|
643
|
-
# For the children, get the index and count of the parent
|
|
644
|
-
ccounts = counts[parents_of_masked]
|
|
645
|
-
|
|
646
|
-
cindexes = indexes[parents_of_masked]
|
|
647
|
-
|
|
648
|
-
# Now make an array that has an element for each of that child's perimeter points
|
|
649
|
-
clabel = numpy.zeros(numpy.sum(ccounts), int)
|
|
650
|
-
|
|
651
|
-
# cfirst is the eventual first index of each child in the clabel array
|
|
652
|
-
cfirst = numpy.cumsum(ccounts) - ccounts
|
|
653
|
-
|
|
654
|
-
clabel[cfirst[1:]] += 1
|
|
655
|
-
|
|
656
|
-
clabel = numpy.cumsum(clabel)
|
|
657
|
-
|
|
658
|
-
# Make an index that runs from 0 to ccounts for each child label.
|
|
659
|
-
cp_index = numpy.arange(len(clabel)) - cfirst[clabel]
|
|
660
|
-
|
|
661
|
-
# then add cindexes to get an index to the perimeter point
|
|
662
|
-
cp_index += cindexes[clabel]
|
|
663
|
-
|
|
664
|
-
# Now, calculate the distance from the centroid of each label to each perimeter point in the parent.
|
|
665
|
-
dist = numpy.sqrt(
|
|
666
|
-
numpy.sum((perim_loc[cp_index, :] - ccenters[clabel, :]) ** 2, 1)
|
|
667
|
-
)
|
|
668
|
-
|
|
669
|
-
# Finally, find the minimum distance per child
|
|
670
|
-
min_dist = scipy.ndimage.minimum(dist, clabel, numpy.arange(len(ccounts)))
|
|
671
|
-
|
|
672
|
-
# Account for unparented children
|
|
673
|
-
dist = numpy.array([numpy.NaN] * len(mask))
|
|
674
|
-
|
|
675
|
-
dist[mask] = min_dist
|
|
676
|
-
|
|
677
|
-
meas.add_measurement(sub_object_name, FF_MINIMUM % parent_name, dist)
|
|
678
|
-
|
|
679
|
-
def get_parents_of(self, workspace, parent_name):
|
|
680
|
-
"""Return the parents_of measurement or equivalent
|
|
681
|
-
parent_name - name of parent objects
|
|
682
|
-
|
|
683
|
-
Return a vector of parent indexes to the given parent name using
|
|
684
|
-
the Parent measurement. Look for a direct parent / child link first
|
|
685
|
-
and then look for relationships between self.parent_name and the
|
|
686
|
-
named parent.
|
|
687
|
-
"""
|
|
688
|
-
meas = workspace.measurements
|
|
689
|
-
|
|
690
|
-
parent_feature = FF_PARENT % parent_name
|
|
691
|
-
|
|
692
|
-
primary_parent = self.x_name.value
|
|
693
|
-
|
|
694
|
-
sub_object_name = self.y_name.value
|
|
695
|
-
|
|
696
|
-
primary_parent_feature = FF_PARENT % primary_parent
|
|
697
|
-
|
|
698
|
-
if parent_feature in meas.get_feature_names(sub_object_name):
|
|
699
|
-
parents_of = meas.get_current_measurement(sub_object_name, parent_feature)
|
|
700
|
-
elif parent_feature in meas.get_feature_names(primary_parent):
|
|
701
|
-
#
|
|
702
|
-
# parent_name is the grandparent of the sub-object via
|
|
703
|
-
# the primary parent.
|
|
704
|
-
#
|
|
705
|
-
primary_parents_of = meas.get_current_measurement(
|
|
706
|
-
sub_object_name, primary_parent_feature
|
|
707
|
-
)
|
|
708
|
-
|
|
709
|
-
grandparents_of = meas.get_current_measurement(
|
|
710
|
-
primary_parent, parent_feature
|
|
711
|
-
)
|
|
712
|
-
|
|
713
|
-
mask = primary_parents_of != 0
|
|
714
|
-
|
|
715
|
-
parents_of = numpy.zeros(primary_parents_of.shape[0], grandparents_of.dtype)
|
|
716
|
-
|
|
717
|
-
if primary_parents_of.shape[0] > 0:
|
|
718
|
-
parents_of[mask] = grandparents_of[primary_parents_of[mask] - 1]
|
|
719
|
-
elif primary_parent_feature in meas.get_feature_names(parent_name):
|
|
720
|
-
primary_parents_of = meas.get_current_measurement(
|
|
721
|
-
sub_object_name, primary_parent_feature
|
|
722
|
-
)
|
|
723
|
-
|
|
724
|
-
primary_parents_of_parent = meas.get_current_measurement(
|
|
725
|
-
parent_name, primary_parent_feature
|
|
726
|
-
)
|
|
727
|
-
|
|
728
|
-
if len(primary_parents_of_parent) == 0:
|
|
729
|
-
return primary_parents_of_parent
|
|
730
|
-
|
|
731
|
-
#
|
|
732
|
-
# There may not be a 1-1 relationship, but we attempt to
|
|
733
|
-
# construct one
|
|
734
|
-
#
|
|
735
|
-
reverse_lookup_len = max(
|
|
736
|
-
numpy.max(primary_parents_of) + 1, len(primary_parents_of_parent)
|
|
737
|
-
)
|
|
738
|
-
|
|
739
|
-
reverse_lookup = numpy.zeros(reverse_lookup_len, int)
|
|
740
|
-
|
|
741
|
-
if primary_parents_of_parent.shape[0] > 0:
|
|
742
|
-
reverse_lookup[primary_parents_of_parent] = numpy.arange(
|
|
743
|
-
1, len(primary_parents_of_parent) + 1
|
|
744
|
-
)
|
|
745
|
-
|
|
746
|
-
if primary_parents_of.shape[0] > 0:
|
|
747
|
-
parents_of = reverse_lookup[primary_parents_of]
|
|
748
|
-
else:
|
|
749
|
-
raise ValueError(
|
|
750
|
-
"Don't know how to relate {} to {}".format(primary_parent, parent_name)
|
|
751
|
-
)
|
|
752
|
-
|
|
753
|
-
return parents_of
|
|
754
|
-
|
|
755
|
-
ignore_features = set(M_NUMBER_OBJECT_NUMBER)
|
|
756
495
|
|
|
757
496
|
def should_aggregate_feature(self, feature_name):
|
|
758
497
|
"""Return True if aggregate measurements should be made on a feature
|
|
759
498
|
|
|
760
499
|
feature_name - name of a measurement, such as Location_Center_X
|
|
761
500
|
"""
|
|
762
|
-
|
|
763
|
-
return False
|
|
764
|
-
|
|
765
|
-
if feature_name.startswith(C_PARENT):
|
|
766
|
-
return False
|
|
767
|
-
|
|
768
|
-
if feature_name in self.ignore_features:
|
|
769
|
-
return False
|
|
770
|
-
|
|
771
|
-
return True
|
|
501
|
+
return _should_aggregate_feature(feature_name)
|
|
772
502
|
|
|
773
503
|
def validate_module(self, pipeline):
|
|
774
504
|
"""Validate the module's settings
|
|
@@ -819,13 +549,13 @@ parents or children of the parent object.""",
|
|
|
819
549
|
|
|
820
550
|
def get_child_measurement_columns(self, pipeline):
|
|
821
551
|
columns = []
|
|
822
|
-
if self.find_parent_child_distances in (
|
|
552
|
+
if self.find_parent_child_distances in (DistanceMethod.BOTH, DistanceMethod.CENTROID):
|
|
823
553
|
for parent_name in self.get_parent_names():
|
|
824
|
-
columns += [(self.y_name.value, FF_CENTROID % parent_name, "integer",)]
|
|
554
|
+
columns += [(self.y_name.value, TemplateMeasurementFormat.FF_CENTROID % parent_name, "integer",)]
|
|
825
555
|
|
|
826
|
-
if self.find_parent_child_distances in (
|
|
556
|
+
if self.find_parent_child_distances in (DistanceMethod.BOTH, DistanceMethod.MINIMUM):
|
|
827
557
|
for parent_name in self.get_parent_names():
|
|
828
|
-
columns += [(self.y_name.value, FF_MINIMUM % parent_name, "integer",)]
|
|
558
|
+
columns += [(self.y_name.value, TemplateMeasurementFormat.FF_MINIMUM % parent_name, "integer",)]
|
|
829
559
|
|
|
830
560
|
return columns
|
|
831
561
|
|
|
@@ -852,8 +582,8 @@ parents or children of the parent object.""",
|
|
|
852
582
|
"""Return the column definitions for this module's measurements"""
|
|
853
583
|
|
|
854
584
|
columns = [
|
|
855
|
-
(self.y_name.value, FF_PARENT % self.x_name.value, "integer",),
|
|
856
|
-
(self.x_name.value, FF_CHILDREN_COUNT % self.y_name.value, "integer",),
|
|
585
|
+
(self.y_name.value, TemplateMeasurementFormat.FF_PARENT % self.x_name.value, "integer",),
|
|
586
|
+
(self.x_name.value, TemplateMeasurementFormat.FF_CHILDREN_COUNT % self.y_name.value, "integer",),
|
|
857
587
|
]
|
|
858
588
|
|
|
859
589
|
if self.wants_child_objects_saved:
|
|
@@ -865,7 +595,7 @@ parents or children of the parent object.""",
|
|
|
865
595
|
columns += [
|
|
866
596
|
(
|
|
867
597
|
self.x_name.value,
|
|
868
|
-
FF_MEAN % (self.y_name.value, column[1]),
|
|
598
|
+
TemplateMeasurementFormat.FF_MEAN % (self.y_name.value, column[1]),
|
|
869
599
|
COLTYPE_FLOAT,
|
|
870
600
|
)
|
|
871
601
|
for column in child_columns
|
|
@@ -882,8 +612,8 @@ parents or children of the parent object.""",
|
|
|
882
612
|
sub_object_name = self.y_name.value
|
|
883
613
|
|
|
884
614
|
return [
|
|
885
|
-
(
|
|
886
|
-
(
|
|
615
|
+
(Relationship.PARENT.value, parent_name, sub_object_name, MCA_AVAILABLE_EACH_CYCLE,),
|
|
616
|
+
(Relationship.CHILD.value, sub_object_name, parent_name, MCA_AVAILABLE_EACH_CYCLE,),
|
|
887
617
|
]
|
|
888
618
|
|
|
889
619
|
def get_categories(self, pipeline, object_name):
|
|
@@ -896,7 +626,7 @@ parents or children of the parent object.""",
|
|
|
896
626
|
elif object_name == self.y_name.value:
|
|
897
627
|
result = ["Parent"]
|
|
898
628
|
|
|
899
|
-
if self.find_parent_child_distances !=
|
|
629
|
+
if self.find_parent_child_distances != DistanceMethod.NONE:
|
|
900
630
|
result += [C_DISTANCE]
|
|
901
631
|
elif object_name == "Image":
|
|
902
632
|
result += [C_COUNT]
|
|
@@ -924,13 +654,13 @@ parents or children of the parent object.""",
|
|
|
924
654
|
elif object_name == self.y_name.value and category == C_DISTANCE:
|
|
925
655
|
result = []
|
|
926
656
|
|
|
927
|
-
if self.find_parent_child_distances in (
|
|
657
|
+
if self.find_parent_child_distances in (DistanceMethod.BOTH, DistanceMethod.CENTROID):
|
|
928
658
|
result += [
|
|
929
659
|
"{}_{}".format(FEAT_CENTROID, parent_name)
|
|
930
660
|
for parent_name in self.get_parent_names()
|
|
931
661
|
]
|
|
932
662
|
|
|
933
|
-
if self.find_parent_child_distances in (
|
|
663
|
+
if self.find_parent_child_distances in (DistanceMethod.BOTH, DistanceMethod.MINIMUM):
|
|
934
664
|
result += [
|
|
935
665
|
"{}_{}".format(FEAT_MINIMUM, parent_name)
|
|
936
666
|
for parent_name in self.get_parent_names()
|
|
@@ -977,7 +707,7 @@ parents or children of the parent object.""",
|
|
|
977
707
|
# Added other distance parents
|
|
978
708
|
#
|
|
979
709
|
if setting_values[2] == "Do not use":
|
|
980
|
-
find_parent_distances =
|
|
710
|
+
find_parent_distances = DistanceMethod.NONE
|
|
981
711
|
else:
|
|
982
712
|
find_parent_distances = setting_values[2]
|
|
983
713
|
|
|
File without changes
|
|
File without changes
|