CellProfiler-nightly 5.0.0.dev661__tar.gz → 5.0.0.dev669__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.dev661 → cellprofiler_nightly-5.0.0.dev669}/CellProfiler_nightly.egg-info/PKG-INFO +1 -1
- cellprofiler_nightly-5.0.0.dev669/CellProfiler_nightly.egg-info/scm_version.json +8 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/PKG-INFO +1 -1
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/_version.py +3 -3
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/rescaleintensity.py +139 -255
- cellprofiler_nightly-5.0.0.dev661/CellProfiler_nightly.egg-info/scm_version.json +0 -8
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/CellProfiler_nightly.egg-info/SOURCES.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/CellProfiler_nightly.egg-info/dependency_links.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/CellProfiler_nightly.egg-info/entry_points.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/CellProfiler_nightly.egg-info/requires.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/CellProfiler_nightly.egg-info/scm_file_list.json +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/CellProfiler_nightly.egg-info/top_level.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/LICENSE +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/README.md +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/__main__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/examples/ExampleFly/ExampleFly.cppipe +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/examples/ExampleFly/images/01_POS002_D.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/examples/ExampleFly/images/01_POS002_F.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/examples/ExampleFly/images/01_POS002_R.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/examples/ExampleFly/images/01_POS076_D.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/examples/ExampleFly/images/01_POS076_F.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/examples/ExampleFly/images/01_POS076_R.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/examples/ExampleFly/images/01_POS218_D.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/examples/ExampleFly/images/01_POS218_F.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/examples/ExampleFly/images/01_POS218_R.TIF +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/display_image_tools.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/display_interactive_navigation.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/display_menu_bar.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/legacy_matlab_image.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/navigation_edit_menu.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/navigation_file_menu.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/navigation_test_menu.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/navigation_window_menu.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/other_3d_identify.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/other_batch.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/other_logging.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/other_omero.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/other_plugins.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/other_shell.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/other_troubleshooting.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/other_widget_inspector.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/output_measurements.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/output_plateviewer.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/output_spreadsheets.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/pipelines_building.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/pipelines_running.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/projects_configure_images.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/projects_image_ordering.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/projects_image_sequences.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/projects_introduction.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/projects_selecting_images.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/why_use_cellprofiler.rst +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler-favicon-120.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler-favicon-128.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler-favicon-144.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler-favicon-152.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler-favicon-195.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler-favicon-228.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler-favicon-32.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler-favicon-57.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler-favicon-72.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler-favicon-96.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler-favicon.ico +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler.ai +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler.icns +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler.ico +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler.svg +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler_square.svg +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/Align.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/ApplyThreshold.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/CollapseTree.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/ColorToGray.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/CorrectIlluminationApply.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/CorrectIlluminationCalculate.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/Crop.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/ExpandOrShrinkObjects.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/ExpandTree.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/GrayToColor.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/Groups_ExampleDisplayTable.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_ANALYZED.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_ANALYZE_16.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_ANALYZE_24.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_CLOSED_EYE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_DISABLED.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_ERROR.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_EYE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_GO.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_GO_DIM.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_IMAGE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_MEASURE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_OK.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_PAUSE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_RUN.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_SLIDER.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_SLIDER_ACTIVE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_STOP.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_TEST.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_UNAVAILABLE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_UPDATE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_USE_INPUT.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_USE_OUTPUT.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_USE_SOURCE.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_WARN.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IdentifyPrimaryObjects_IntensityDeclumping.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IdentifyPrimaryObjects_ShapeDeclumping.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IdentifySecondaryObjects.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IdentifyTertiaryObjects.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/Images_FilelistPanel.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/Images_FilelistPanel_Blank.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/Images_FilelistPanel_Filled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/Images_UsingRules.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/MeasureGranularity_example.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/MeasureImageAreaOccupied.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/MeasureObjectIntensityDistribution_Edges_Centers.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/MeasureObjectIntensityDistribution_Magnitude_Phase.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/MeasureObjectSizeShape_Eccentricity.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/MeasureTexture.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/Measure_texture_3D_correspondences_1.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/Measure_texture_3D_correspondences_1_highres.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/Measure_texture_3D_correspondences_2.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/Measure_texture_3D_correspondences_2_highres.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/Metadata_ExampleDisplayTable.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/NamesAndTypes_ExampleDisplayTable.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/Tile.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/UnmixColors.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/check.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/color.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/cp_panel_schematic.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/dapi.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/delete.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/downarrow.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/eye-close.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/eye-open.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/ffwd.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/ffwddisabled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/filter.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/folder_browse.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/folder_create.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/gear.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/gfp.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/icon_copyrights.txt +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/illumination_function.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/image_to_object_dataflow.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/image_to_object_dataflow.psd +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/mask.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/microscope-color_16.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/microscope-icon_16.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/microscope-icon_32.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/microscopes_16.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/module_add.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/module_help.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/module_movedown.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/module_moveup.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/module_remove.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/monochrome.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/movie_16.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/next.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/objects.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/pause.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/pausedisabled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/play.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/playdisabled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/previous.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/remove-sign.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/rewind.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/rewinddisabled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/splash-black-text-alpha.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/splash-white-text-alpha.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/splash.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/status_pause.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/status_save.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/status_stop.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/stop.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/stopdisabled.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/structuringelement.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/thumb-down.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/thumb-up.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/unchecked.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/wantpony.wav +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/welcome_examples.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/welcome_forum.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/welcome_help.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/welcome_manual.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/welcome_new.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/welcome_pipeline.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/welcome_screen_help.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/welcome_start.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/welcome_tutorial.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/welcomescreen_forum.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/welcomescreen_manual.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/welcomescreen_tutorials.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/window_back.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/window_filesave.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/window_forward.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/window_home.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/window_pan.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/window_zoom_to_rect.png +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/_tree_checkbox_dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/_welcome_frame.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/_workspace_model.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/addmoduleframe.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/app.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/artist.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/checkupdate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/constants/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/constants/figure.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/constants/module_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/constants/preferences_dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/constants/preferences_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/constants/workspace_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/cpframe.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/editobjectsdlg.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/errordialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/figure/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/figure/_figure.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/figure/_navigation_toolbar.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/figure/_outline_artist.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/gridrenderers.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/help/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/help/content.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/help/menu.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/help/search.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/html/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/html/configure_images_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/html/exporting_results_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/html/getting_started.html +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/html/htmlwindow.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/html/identify_features_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/html/in_app_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/html/making_measurements_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/html/running_pipeline_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/html/selecting_images_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/html/test_mode_help.html +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/html/utils.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/html/welcome.html +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/htmldialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/imagesetctrl.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/menu.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/metadatactrl.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/module_view/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/module_view/_binary_matrix_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/module_view/_data_type_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/module_view/_file_collection_display_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/module_view/_filter_panel_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/module_view/_joiner_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/module_view/_module_sizer.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/module_view/_module_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/module_view/_setting_edited_event.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/module_view/_table_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/module_view/_validation_request_controller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/moduleview.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/namesubscriber.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/omerologin.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/parametersampleframe.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/pathlist.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/pipeline.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/pipelinecontroller.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/pipelinelistview.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/plateviewer.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/plugins_menu.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/preferences_dialog/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/preferences_dialog/_integer_preference.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/preferences_dialog/_preferences_dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/preferences_view/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/preferences_view/_preferences_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/preferences_view/_progress_watcher.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/readers_dialog/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/readers_dialog/_readers_dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/regexp_editor.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/tools.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/utilities/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/utilities/figure.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/utilities/icon.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/utilities/module_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/utilities/preferences_dialog.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/utilities/preferences_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/utilities/workspace_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/workspace_view/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/workspace_view/_workspace_view.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/workspace_view/_workspace_view_figure.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/workspace_view/_workspace_view_image_row.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/workspace_view/_workspace_view_mask_row.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/workspace_view/_workspace_view_measurement_row.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/workspace_view/_workspace_view_objects_row.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/workspace_view/_workspace_view_row.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/icons/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/knime_bridge.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/misc.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/UntangleWorms.xsd +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/_help.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/calculatemath.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/calculatestatistics.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/classifyobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/closing.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/colortogray.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/combineobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/convertimagetoobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/convertobjectstoimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/correctilluminationapply.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/correctilluminationcalculate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/createbatchfiles.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/crop.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/definegrid.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/dilateimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/dilateobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/displaydataonimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/displaydensityplot.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/displayhistogram.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/displayplatemap.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/displayscatterplot.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/editobjectsmanually.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/enhanceedges.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/enhanceorsuppressfeatures.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/erodeimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/erodeobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/expandorshrinkobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/exporttodatabase.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/exporttospreadsheet.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/fillobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/filterobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/findmaxima.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/flagimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/flipandrotate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/gaussianfilter.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/graytocolor.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/identifydeadworms.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/identifyobjectsingrid.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/identifyobjectsmanually.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/identifyprimaryobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/identifysecondaryobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/identifytertiaryobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/imagemath.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/invertforprinting.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/labelimages.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/makeprojection.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/maskimage.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/maskobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/matchtemplate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/measurecolocalization.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/measuregranularity.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/measureimageareaoccupied.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/measureimageintensity.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/measureimageoverlap.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/measureimagequality.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/measureimageskeleton.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/measureobjectintensity.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/measureobjectintensitydistribution.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/measureobjectneighbors.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/measureobjectoverlap.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/measureobjectsizeshape.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/measureobjectskeleton.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/measuretexture.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/medialaxis.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/medianfilter.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/morph.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/morphologicalskeleton.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/opening.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/overlayobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/overlayoutlines.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/plugins/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/plugins/imagetemplate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/plugins/measurementtemplate.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/plugins/segmentationtemplatewithdependencies.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/reducenoise.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/relateobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/removeholes.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/resize.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/resizeobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/runimagejmacro.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/savecroppedobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/saveimages.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/shrinktoobjectcenters.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/smooth.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/splitormergeobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/straightenworms.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/threshold.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/tile.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/trackobjects.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/unmixcolors.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/untangleworms.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/watershed.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/utilities/__init__.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/utilities/morphology.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/utilities/rules.py +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/environment.yml +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/pyproject.toml +0 -0
- {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/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.dev669
|
|
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.dev669
|
|
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.dev661 → cellprofiler_nightly-5.0.0.dev669}/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.dev669'
|
|
22
|
+
__version_tuple__ = version_tuple = (5, 0, 0, 'dev669')
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'g51250caf3'
|
|
@@ -26,7 +26,6 @@ YES YES YES
|
|
|
26
26
|
"""
|
|
27
27
|
|
|
28
28
|
import numpy
|
|
29
|
-
import skimage.exposure
|
|
30
29
|
from cellprofiler_core.image import Image
|
|
31
30
|
from cellprofiler_core.module import ImageProcessing
|
|
32
31
|
from cellprofiler_core.setting import Measurement
|
|
@@ -34,43 +33,9 @@ from cellprofiler_core.setting.choice import Choice
|
|
|
34
33
|
from cellprofiler_core.setting.range import FloatRange
|
|
35
34
|
from cellprofiler_core.setting.subscriber import ImageSubscriber
|
|
36
35
|
from cellprofiler_core.setting.text import Float
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
M_MANUAL_IO_RANGE = "Choose specific values to be reset to a custom range"
|
|
41
|
-
M_DIVIDE_BY_IMAGE_MINIMUM = "Divide by the image's minimum"
|
|
42
|
-
M_DIVIDE_BY_IMAGE_MAXIMUM = "Divide by the image's maximum"
|
|
43
|
-
M_DIVIDE_BY_VALUE = "Divide each image by the same value"
|
|
44
|
-
M_DIVIDE_BY_MEASUREMENT = "Divide each image by a previously calculated value"
|
|
45
|
-
M_SCALE_BY_IMAGE_MAXIMUM = "Match the image's maximum to another image's maximum"
|
|
46
|
-
|
|
47
|
-
M_ALL = [
|
|
48
|
-
M_STRETCH,
|
|
49
|
-
M_MANUAL_INPUT_RANGE,
|
|
50
|
-
M_MANUAL_IO_RANGE,
|
|
51
|
-
M_DIVIDE_BY_IMAGE_MINIMUM,
|
|
52
|
-
M_DIVIDE_BY_IMAGE_MAXIMUM,
|
|
53
|
-
M_DIVIDE_BY_VALUE,
|
|
54
|
-
M_DIVIDE_BY_MEASUREMENT,
|
|
55
|
-
M_SCALE_BY_IMAGE_MAXIMUM,
|
|
56
|
-
]
|
|
57
|
-
|
|
58
|
-
R_SCALE = "Scale similarly to others"
|
|
59
|
-
R_MASK = "Mask pixels"
|
|
60
|
-
R_SET_TO_ZERO = "Set to zero"
|
|
61
|
-
R_SET_TO_CUSTOM = "Set to custom value"
|
|
62
|
-
R_SET_TO_ONE = "Set to one"
|
|
63
|
-
|
|
64
|
-
LOW_ALL_IMAGES = "Minimum of all images"
|
|
65
|
-
LOW_EACH_IMAGE = "Minimum for each image"
|
|
66
|
-
CUSTOM_VALUE = "Custom"
|
|
67
|
-
LOW_ALL = [CUSTOM_VALUE, LOW_EACH_IMAGE, LOW_ALL_IMAGES]
|
|
68
|
-
|
|
69
|
-
HIGH_ALL_IMAGES = "Maximum of all images"
|
|
70
|
-
HIGH_EACH_IMAGE = "Maximum for each image"
|
|
71
|
-
|
|
72
|
-
HIGH_ALL = [CUSTOM_VALUE, HIGH_EACH_IMAGE, HIGH_ALL_IMAGES]
|
|
73
|
-
|
|
36
|
+
from cellprofiler_library.opts.rescaleintensity import RescaleMethod, MinimumIntensityMethod, MaximumIntensityMethod, M_ALL, LOW_ALL, HIGH_ALL
|
|
37
|
+
from cellprofiler_library.modules._rescaleintensity import rescale_intensity
|
|
38
|
+
from cellprofiler_library.functions.image_processing import divide
|
|
74
39
|
|
|
75
40
|
class RescaleIntensity(ImageProcessing):
|
|
76
41
|
module_name = "RescaleIntensity"
|
|
@@ -86,83 +51,105 @@ class RescaleIntensity(ImageProcessing):
|
|
|
86
51
|
doc="""\
|
|
87
52
|
There are a number of options for rescaling the input image:
|
|
88
53
|
|
|
89
|
-
-
|
|
54
|
+
- *{M_STRETCH}:* Find the minimum and maximum values within the
|
|
90
55
|
unmasked part of the image (or the whole image if there is no mask)
|
|
91
56
|
and rescale every pixel so that the minimum has an intensity of zero
|
|
92
57
|
and the maximum has an intensity of one. If performed on color images
|
|
93
58
|
each channel will be considered separately.
|
|
94
|
-
-
|
|
59
|
+
- *{M_MANUAL_INPUT_RANGE}:* Pixels are scaled from an original range
|
|
95
60
|
(which you provide) to the range 0 to 1. Options are
|
|
96
61
|
available to handle values outside of the original range.
|
|
97
62
|
To convert 12-bit images saved in 16-bit format to the correct range,
|
|
98
63
|
use the range 0 to 0.0625. The value 0.0625 is equivalent to
|
|
99
64
|
2\ :sup:`12` divided by 2\ :sup:`16`, so it will convert a 16 bit
|
|
100
65
|
image containing only 12 bits of data to the proper range.
|
|
101
|
-
-
|
|
66
|
+
- *{M_MANUAL_IO_RANGE}:* Pixels are scaled from their original
|
|
102
67
|
range to the new target range. Options are available to handle values
|
|
103
68
|
outside of the original range.
|
|
104
|
-
-
|
|
69
|
+
- *{M_DIVIDE_BY_IMAGE_MINIMUM}:* Divide the intensity value of
|
|
105
70
|
each pixel by the image’s minimum intensity value so that all pixel
|
|
106
71
|
intensities are equal to or greater than 1. The rescaled image can
|
|
107
72
|
serve as an illumination correction function in
|
|
108
73
|
**CorrectIlluminationApply**.
|
|
109
|
-
-
|
|
74
|
+
- *{M_DIVIDE_BY_IMAGE_MAXIMUM}:* Divide the intensity value of
|
|
110
75
|
each pixel by the image’s maximum intensity value so that all pixel
|
|
111
76
|
intensities are less than or equal to 1.
|
|
112
|
-
-
|
|
77
|
+
- *{M_DIVIDE_BY_VALUE}:* Divide the intensity value of each pixel
|
|
113
78
|
by a value that you choose.
|
|
114
|
-
-
|
|
79
|
+
- *{M_DIVIDE_BY_MEASUREMENT}:* The intensity value of each pixel
|
|
115
80
|
is divided by some previously calculated measurement. This
|
|
116
81
|
measurement can be the output of some other module or can be a value
|
|
117
82
|
loaded by the **Metadata** module.
|
|
118
|
-
-
|
|
83
|
+
- *{M_SCALE_BY_IMAGE_MAXIMUM}:* Scale an image so that its
|
|
119
84
|
maximum value is the same as the maximum value within the reference
|
|
120
|
-
image."""
|
|
121
|
-
|
|
85
|
+
image.""".format(
|
|
86
|
+
**{
|
|
87
|
+
"M_STRETCH": RescaleMethod.STRETCH.value,
|
|
88
|
+
"M_MANUAL_INPUT_RANGE": RescaleMethod.MANUAL_INPUT_RANGE.value,
|
|
89
|
+
"M_MANUAL_IO_RANGE": RescaleMethod.MANUAL_IO_RANGE.value,
|
|
90
|
+
"M_DIVIDE_BY_IMAGE_MINIMUM": RescaleMethod.DIVIDE_BY_IMAGE_MINIMUM.value,
|
|
91
|
+
"M_DIVIDE_BY_IMAGE_MAXIMUM": RescaleMethod.DIVIDE_BY_IMAGE_MAXIMUM.value,
|
|
92
|
+
"M_DIVIDE_BY_VALUE": RescaleMethod.DIVIDE_BY_VALUE.value,
|
|
93
|
+
"M_DIVIDE_BY_MEASUREMENT": RescaleMethod.DIVIDE_BY_MEASUREMENT.value,
|
|
94
|
+
"M_SCALE_BY_IMAGE_MAXIMUM": RescaleMethod.SCALE_BY_IMAGE_MAXIMUM.value,
|
|
95
|
+
}
|
|
96
|
+
),
|
|
122
97
|
)
|
|
123
98
|
|
|
124
99
|
self.wants_automatic_low = Choice(
|
|
125
100
|
"Method to calculate the minimum intensity",
|
|
126
101
|
LOW_ALL,
|
|
127
102
|
doc="""\
|
|
128
|
-
*(Used only if
|
|
103
|
+
*(Used only if “{M_MANUAL_IO_RANGE}” is selected)*
|
|
129
104
|
|
|
130
105
|
This setting controls how the minimum intensity is determined.
|
|
131
106
|
|
|
132
|
-
-
|
|
133
|
-
-
|
|
107
|
+
- *{CUSTOM_VALUE}:* Enter the minimum intensity manually below.
|
|
108
|
+
- *{LOW_EACH_IMAGE}*: use the lowest intensity in this image as the
|
|
134
109
|
minimum intensity for rescaling
|
|
135
|
-
-
|
|
110
|
+
- *{LOW_ALL_IMAGES}*: use the lowest intensity from all images in
|
|
136
111
|
the image group or the experiment if grouping is not being used.
|
|
137
112
|
Note that choosing this option may have undesirable results for a
|
|
138
113
|
large ungrouped experiment split into a number of batches. Each batch
|
|
139
114
|
will open all images from the chosen channel at the start of the run.
|
|
140
115
|
This sort of synchronized action may have a severe impact on your
|
|
141
116
|
network file system.
|
|
142
|
-
"""
|
|
143
|
-
|
|
117
|
+
""".format(
|
|
118
|
+
**{
|
|
119
|
+
"M_MANUAL_IO_RANGE": RescaleMethod.MANUAL_IO_RANGE.value,
|
|
120
|
+
"CUSTOM_VALUE": MinimumIntensityMethod.CUSTOM_VALUE.value,
|
|
121
|
+
"LOW_EACH_IMAGE": MinimumIntensityMethod.EACH_IMAGE.value,
|
|
122
|
+
"LOW_ALL_IMAGES": MinimumIntensityMethod.ALL_IMAGES.value,
|
|
123
|
+
}
|
|
124
|
+
),
|
|
144
125
|
)
|
|
145
126
|
|
|
146
127
|
self.wants_automatic_high = Choice(
|
|
147
128
|
"Method to calculate the maximum intensity",
|
|
148
129
|
HIGH_ALL,
|
|
149
130
|
doc="""\
|
|
150
|
-
*(Used only if
|
|
131
|
+
*(Used only if “{M_MANUAL_IO_RANGE}” is selected)*
|
|
151
132
|
|
|
152
133
|
This setting controls how the maximum intensity is determined.
|
|
153
134
|
|
|
154
|
-
-
|
|
155
|
-
-
|
|
135
|
+
- *{CUSTOM_VALUE}*: Enter the maximum intensity manually below.
|
|
136
|
+
- *{HIGH_EACH_IMAGE}*: Use the highest intensity in this image as
|
|
156
137
|
the maximum intensity for rescaling
|
|
157
|
-
-
|
|
138
|
+
- *{HIGH_ALL_IMAGES}*: Use the highest intensity from all images in
|
|
158
139
|
the image group or the experiment if grouping is not being used.
|
|
159
140
|
Note that choosing this option may have undesirable results for a
|
|
160
141
|
large ungrouped experiment split into a number of batches. Each batch
|
|
161
142
|
will open all images from the chosen channel at the start of the run.
|
|
162
143
|
This sort of synchronized action may have a severe impact on your
|
|
163
144
|
network file system.
|
|
164
|
-
"""
|
|
165
|
-
|
|
145
|
+
""".format(
|
|
146
|
+
**{
|
|
147
|
+
"M_MANUAL_IO_RANGE": RescaleMethod.MANUAL_IO_RANGE.value,
|
|
148
|
+
"CUSTOM_VALUE": MaximumIntensityMethod.CUSTOM_VALUE.value,
|
|
149
|
+
"HIGH_EACH_IMAGE": MaximumIntensityMethod.EACH_IMAGE.value,
|
|
150
|
+
"HIGH_ALL_IMAGES": MaximumIntensityMethod.ALL_IMAGES.value,
|
|
151
|
+
}
|
|
152
|
+
),
|
|
166
153
|
)
|
|
167
154
|
|
|
168
155
|
self.source_low = Float(
|
|
@@ -177,9 +164,9 @@ value in the output image. Pixel intensities less than this value in the input i
|
|
|
177
164
|
also rescaled to the minimum pixel value in the output image.
|
|
178
165
|
""".format(
|
|
179
166
|
**{
|
|
180
|
-
"CUSTOM_VALUE": CUSTOM_VALUE,
|
|
181
|
-
"M_MANUAL_INPUT_RANGE":
|
|
182
|
-
"M_MANUAL_IO_RANGE":
|
|
167
|
+
"CUSTOM_VALUE": MinimumIntensityMethod.CUSTOM_VALUE.value,
|
|
168
|
+
"M_MANUAL_INPUT_RANGE": RescaleMethod.MANUAL_INPUT_RANGE.value,
|
|
169
|
+
"M_MANUAL_IO_RANGE": RescaleMethod.MANUAL_IO_RANGE.value,
|
|
183
170
|
"RESCALE_METHOD": self.rescale_method.text,
|
|
184
171
|
"WANTS_AUTOMATIC_LOW": self.wants_automatic_low.text,
|
|
185
172
|
}
|
|
@@ -198,9 +185,9 @@ value in the output image. Pixel intensities less than this value in the input i
|
|
|
198
185
|
also rescaled to the maximum pixel value in the output image.
|
|
199
186
|
""".format(
|
|
200
187
|
**{
|
|
201
|
-
"CUSTOM_VALUE": CUSTOM_VALUE,
|
|
202
|
-
"M_MANUAL_INPUT_RANGE":
|
|
203
|
-
"M_MANUAL_IO_RANGE":
|
|
188
|
+
"CUSTOM_VALUE": MaximumIntensityMethod.CUSTOM_VALUE.value,
|
|
189
|
+
"M_MANUAL_INPUT_RANGE": RescaleMethod.MANUAL_INPUT_RANGE.value,
|
|
190
|
+
"M_MANUAL_IO_RANGE": RescaleMethod.MANUAL_IO_RANGE.value,
|
|
204
191
|
"RESCALE_METHOD": self.rescale_method.text,
|
|
205
192
|
"WANTS_AUTOMATIC_HIGH": self.wants_automatic_high.text,
|
|
206
193
|
}
|
|
@@ -219,9 +206,9 @@ pixel intensities. Pixel intensities outside this range will be clipped to the n
|
|
|
219
206
|
or maximum, respectively.
|
|
220
207
|
""".format(
|
|
221
208
|
**{
|
|
222
|
-
"CUSTOM_VALUE": CUSTOM_VALUE,
|
|
223
|
-
"M_MANUAL_INPUT_RANGE":
|
|
224
|
-
"M_MANUAL_IO_RANGE":
|
|
209
|
+
"CUSTOM_VALUE": MinimumIntensityMethod.CUSTOM_VALUE.value,
|
|
210
|
+
"M_MANUAL_INPUT_RANGE": RescaleMethod.MANUAL_INPUT_RANGE.value,
|
|
211
|
+
"M_MANUAL_IO_RANGE": RescaleMethod.MANUAL_IO_RANGE.value,
|
|
225
212
|
"RESCALE_METHOD": self.rescale_method.text,
|
|
226
213
|
"WANTS_AUTOMATIC_HIGH": self.wants_automatic_high.text,
|
|
227
214
|
"WANTS_AUTOMATIC_LOW": self.wants_automatic_low.text,
|
|
@@ -240,7 +227,7 @@ image will be rescaled to the minimum output image intensity. The maximum pixel
|
|
|
240
227
|
output image will be rescaled to the maximum output image intensity.
|
|
241
228
|
""".format(
|
|
242
229
|
**{
|
|
243
|
-
"M_MANUAL_IO_RANGE":
|
|
230
|
+
"M_MANUAL_IO_RANGE": RescaleMethod.MANUAL_IO_RANGE.value,
|
|
244
231
|
"RESCALE_METHOD": self.rescale_method.text,
|
|
245
232
|
}
|
|
246
233
|
),
|
|
@@ -250,11 +237,14 @@ output image will be rescaled to the maximum output image intensity.
|
|
|
250
237
|
"Select image to match in maximum intensity",
|
|
251
238
|
"None",
|
|
252
239
|
doc="""\
|
|
253
|
-
*(Used only if
|
|
240
|
+
*(Used only if “{M_SCALE_BY_IMAGE_MAXIMUM}” is selected)*
|
|
254
241
|
|
|
255
242
|
Select the image whose maximum you want the rescaled image to match.
|
|
256
|
-
"""
|
|
257
|
-
|
|
243
|
+
""".format(
|
|
244
|
+
**{
|
|
245
|
+
"M_SCALE_BY_IMAGE_MAXIMUM": RescaleMethod.SCALE_BY_IMAGE_MAXIMUM.value,
|
|
246
|
+
}
|
|
247
|
+
),
|
|
258
248
|
)
|
|
259
249
|
|
|
260
250
|
self.divisor_value = Float(
|
|
@@ -262,22 +252,28 @@ Select the image whose maximum you want the rescaled image to match.
|
|
|
262
252
|
1,
|
|
263
253
|
minval=numpy.finfo(float).eps,
|
|
264
254
|
doc="""\
|
|
265
|
-
*(Used only if
|
|
255
|
+
*(Used only if “{M_DIVIDE_BY_VALUE}” is selected)*
|
|
266
256
|
|
|
267
257
|
Enter the value to use as the divisor for the final image.
|
|
268
|
-
"""
|
|
269
|
-
|
|
258
|
+
""".format(
|
|
259
|
+
**{
|
|
260
|
+
"M_DIVIDE_BY_VALUE": RescaleMethod.DIVIDE_BY_VALUE.value,
|
|
261
|
+
}
|
|
262
|
+
),
|
|
270
263
|
)
|
|
271
264
|
|
|
272
265
|
self.divisor_measurement = Measurement(
|
|
273
266
|
"Divisor measurement",
|
|
274
267
|
lambda: "Image",
|
|
275
268
|
doc="""\
|
|
276
|
-
*(Used only if
|
|
269
|
+
*(Used only if “{M_DIVIDE_BY_MEASUREMENT}” is selected)*
|
|
277
270
|
|
|
278
271
|
Select the measurement value to use as the divisor for the final image.
|
|
279
|
-
"""
|
|
280
|
-
|
|
272
|
+
""".format(
|
|
273
|
+
**{
|
|
274
|
+
"M_DIVIDE_BY_MEASUREMENT": RescaleMethod.DIVIDE_BY_MEASUREMENT.value,
|
|
275
|
+
}
|
|
276
|
+
),
|
|
281
277
|
)
|
|
282
278
|
|
|
283
279
|
def settings(self):
|
|
@@ -300,43 +296,43 @@ Select the measurement value to use as the divisor for the final image.
|
|
|
300
296
|
__settings__ = super(RescaleIntensity, self).visible_settings()
|
|
301
297
|
|
|
302
298
|
__settings__ += [self.rescale_method]
|
|
303
|
-
if self.rescale_method in (
|
|
299
|
+
if self.rescale_method in (RescaleMethod.MANUAL_INPUT_RANGE.value, RescaleMethod.MANUAL_IO_RANGE.value):
|
|
304
300
|
__settings__ += [self.wants_automatic_low]
|
|
305
|
-
if self.wants_automatic_low.value == CUSTOM_VALUE:
|
|
306
|
-
if self.wants_automatic_high != CUSTOM_VALUE:
|
|
301
|
+
if self.wants_automatic_low.value == MinimumIntensityMethod.CUSTOM_VALUE.value:
|
|
302
|
+
if self.wants_automatic_high != MaximumIntensityMethod.CUSTOM_VALUE.value:
|
|
307
303
|
__settings__ += [self.source_low, self.wants_automatic_high]
|
|
308
304
|
else:
|
|
309
305
|
__settings__ += [self.wants_automatic_high, self.source_scale]
|
|
310
306
|
else:
|
|
311
307
|
__settings__ += [self.wants_automatic_high]
|
|
312
|
-
if self.wants_automatic_high == CUSTOM_VALUE:
|
|
308
|
+
if self.wants_automatic_high == MaximumIntensityMethod.CUSTOM_VALUE.value:
|
|
313
309
|
__settings__ += [self.source_high]
|
|
314
|
-
if self.rescale_method ==
|
|
310
|
+
if self.rescale_method == RescaleMethod.MANUAL_IO_RANGE.value:
|
|
315
311
|
__settings__ += [self.dest_scale]
|
|
316
312
|
|
|
317
|
-
if self.rescale_method ==
|
|
313
|
+
if self.rescale_method == RescaleMethod.SCALE_BY_IMAGE_MAXIMUM.value:
|
|
318
314
|
__settings__ += [self.matching_image_name]
|
|
319
|
-
elif self.rescale_method ==
|
|
315
|
+
elif self.rescale_method == RescaleMethod.DIVIDE_BY_MEASUREMENT.value:
|
|
320
316
|
__settings__ += [self.divisor_measurement]
|
|
321
|
-
elif self.rescale_method ==
|
|
317
|
+
elif self.rescale_method == RescaleMethod.DIVIDE_BY_VALUE.value:
|
|
322
318
|
__settings__ += [self.divisor_value]
|
|
323
319
|
return __settings__
|
|
324
320
|
|
|
325
321
|
def set_automatic_minimum(self, image_set_list, value):
|
|
326
322
|
d = self.get_dictionary(image_set_list)
|
|
327
|
-
d[
|
|
323
|
+
d[MinimumIntensityMethod.ALL_IMAGES.value] = value
|
|
328
324
|
|
|
329
325
|
def get_automatic_minimum(self, image_set_list):
|
|
330
326
|
d = self.get_dictionary(image_set_list)
|
|
331
|
-
return d[
|
|
327
|
+
return d[MinimumIntensityMethod.ALL_IMAGES.value]
|
|
332
328
|
|
|
333
329
|
def set_automatic_maximum(self, image_set_list, value):
|
|
334
330
|
d = self.get_dictionary(image_set_list)
|
|
335
|
-
d[
|
|
331
|
+
d[MaximumIntensityMethod.ALL_IMAGES.value] = value
|
|
336
332
|
|
|
337
333
|
def get_automatic_maximum(self, image_set_list):
|
|
338
334
|
d = self.get_dictionary(image_set_list)
|
|
339
|
-
return d[
|
|
335
|
+
return d[MaximumIntensityMethod.ALL_IMAGES.value]
|
|
340
336
|
|
|
341
337
|
def prepare_group(self, workspace, grouping, image_numbers):
|
|
342
338
|
"""Handle initialization per-group
|
|
@@ -354,8 +350,8 @@ Select the measurement value to use as the divisor for the final image.
|
|
|
354
350
|
"wants_automatic_[low,high]".
|
|
355
351
|
"""
|
|
356
352
|
if (
|
|
357
|
-
self.wants_automatic_high !=
|
|
358
|
-
and self.wants_automatic_low !=
|
|
353
|
+
self.wants_automatic_high != MaximumIntensityMethod.ALL_IMAGES.value
|
|
354
|
+
and self.wants_automatic_low != MinimumIntensityMethod.ALL_IMAGES.value
|
|
359
355
|
):
|
|
360
356
|
return True
|
|
361
357
|
|
|
@@ -373,50 +369,74 @@ Select the measurement value to use as the divisor for the final image.
|
|
|
373
369
|
image = image_set.get_image(
|
|
374
370
|
self.x_name.value, must_be_grayscale=True, cache=False
|
|
375
371
|
)
|
|
376
|
-
if self.wants_automatic_high ==
|
|
372
|
+
if self.wants_automatic_high == MaximumIntensityMethod.ALL_IMAGES.value:
|
|
377
373
|
if image.has_mask:
|
|
378
374
|
vmax = numpy.max(image.pixel_data[image.mask])
|
|
379
375
|
else:
|
|
380
376
|
vmax = numpy.max(image.pixel_data)
|
|
381
377
|
max_value = vmax if max_value is None else max(max_value, vmax)
|
|
382
378
|
|
|
383
|
-
if self.wants_automatic_low ==
|
|
379
|
+
if self.wants_automatic_low == MinimumIntensityMethod.ALL_IMAGES.value:
|
|
384
380
|
if image.has_mask:
|
|
385
381
|
vmin = numpy.min(image.pixel_data[image.mask])
|
|
386
382
|
else:
|
|
387
383
|
vmin = numpy.min(image.pixel_data)
|
|
388
384
|
min_value = vmin if min_value is None else min(min_value, vmin)
|
|
389
385
|
|
|
390
|
-
if self.wants_automatic_high ==
|
|
386
|
+
if self.wants_automatic_high == MaximumIntensityMethod.ALL_IMAGES.value:
|
|
391
387
|
self.set_automatic_maximum(workspace.image_set_list, max_value)
|
|
392
|
-
if self.wants_automatic_low ==
|
|
388
|
+
if self.wants_automatic_low == MinimumIntensityMethod.ALL_IMAGES.value:
|
|
393
389
|
self.set_automatic_minimum(workspace.image_set_list, min_value)
|
|
394
390
|
|
|
395
391
|
def is_aggregation_module(self):
|
|
396
392
|
"""We scan through all images in a group in some cases"""
|
|
397
|
-
return (self.wants_automatic_high ==
|
|
398
|
-
self.wants_automatic_low ==
|
|
393
|
+
return (self.wants_automatic_high == MaximumIntensityMethod.ALL_IMAGES.value) or (
|
|
394
|
+
self.wants_automatic_low == MinimumIntensityMethod.ALL_IMAGES.value
|
|
399
395
|
)
|
|
400
396
|
|
|
401
397
|
def run(self, workspace):
|
|
402
398
|
input_image = workspace.image_set.get_image(self.x_name.value)
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
elif self.rescale_method == M_MANUAL_IO_RANGE:
|
|
409
|
-
output_image = self.manual_io_range(input_image, workspace)
|
|
410
|
-
elif self.rescale_method == M_DIVIDE_BY_IMAGE_MINIMUM:
|
|
411
|
-
output_image = self.divide_by_image_minimum(input_image)
|
|
412
|
-
elif self.rescale_method == M_DIVIDE_BY_IMAGE_MAXIMUM:
|
|
413
|
-
output_image = self.divide_by_image_maximum(input_image)
|
|
414
|
-
elif self.rescale_method == M_DIVIDE_BY_VALUE:
|
|
415
|
-
output_image = self.divide_by_value(input_image)
|
|
416
|
-
elif self.rescale_method == M_DIVIDE_BY_MEASUREMENT:
|
|
399
|
+
in_pixel_data = input_image.pixel_data
|
|
400
|
+
in_mask = input_image.mask
|
|
401
|
+
input_image_has_mask = input_image.has_mask
|
|
402
|
+
in_multichannel = input_image.multichannel
|
|
403
|
+
if self.rescale_method == RescaleMethod.DIVIDE_BY_MEASUREMENT.value:
|
|
417
404
|
output_image = self.divide_by_measurement(workspace, input_image)
|
|
418
|
-
|
|
419
|
-
|
|
405
|
+
else:
|
|
406
|
+
divisor_value = self.divisor_value.value
|
|
407
|
+
auto_high = self.wants_automatic_high.value
|
|
408
|
+
auto_low = self.wants_automatic_low.value
|
|
409
|
+
source_high = self.source_high.value
|
|
410
|
+
source_low = self.source_low.value
|
|
411
|
+
source_scale_min = self.source_scale.min
|
|
412
|
+
source_scale_max = self.source_scale.max
|
|
413
|
+
shared_dict = self.get_dictionary(workspace.image_set_list)
|
|
414
|
+
reference_image_pixel_data = None
|
|
415
|
+
reference_image_mask = None
|
|
416
|
+
if self.rescale_method == RescaleMethod.SCALE_BY_IMAGE_MAXIMUM.value:
|
|
417
|
+
reference_image = workspace.image_set.get_image(self.matching_image_name.value)
|
|
418
|
+
reference_image_pixel_data = reference_image.pixel_data
|
|
419
|
+
reference_image_mask = reference_image.mask
|
|
420
|
+
output_image = rescale_intensity(
|
|
421
|
+
self.rescale_method.value,
|
|
422
|
+
in_pixel_data,
|
|
423
|
+
in_mask,
|
|
424
|
+
input_image_has_mask,
|
|
425
|
+
in_multichannel,
|
|
426
|
+
divisor_value,
|
|
427
|
+
auto_high,
|
|
428
|
+
auto_low,
|
|
429
|
+
source_high,
|
|
430
|
+
source_low,
|
|
431
|
+
source_scale_min,
|
|
432
|
+
source_scale_max,
|
|
433
|
+
shared_dict.get(MinimumIntensityMethod.ALL_IMAGES.value, None), # global_min
|
|
434
|
+
shared_dict.get(MaximumIntensityMethod.ALL_IMAGES.value, None), # global_max
|
|
435
|
+
self.dest_scale.min,
|
|
436
|
+
self.dest_scale.max,
|
|
437
|
+
reference_image_pixel_data,
|
|
438
|
+
reference_image_mask,
|
|
439
|
+
)
|
|
420
440
|
|
|
421
441
|
rescaled_image = Image(
|
|
422
442
|
output_image,
|
|
@@ -460,147 +480,11 @@ Select the measurement value to use as the divisor for the final image.
|
|
|
460
480
|
y=0,
|
|
461
481
|
)
|
|
462
482
|
|
|
463
|
-
|
|
464
|
-
data = 1.0 * image.pixel_data
|
|
465
|
-
|
|
466
|
-
rescaled = skimage.exposure.rescale_intensity(
|
|
467
|
-
data, in_range=in_range, out_range=out_range
|
|
468
|
-
)
|
|
469
|
-
|
|
470
|
-
return rescaled
|
|
471
|
-
|
|
472
|
-
def stretch(self, input_image):
|
|
473
|
-
data = input_image.pixel_data
|
|
474
|
-
mask = input_image.mask
|
|
475
|
-
|
|
476
|
-
if input_image.multichannel:
|
|
477
|
-
splitaxis = data.ndim - 1
|
|
478
|
-
singlechannels = numpy.split(data, data.shape[-1], splitaxis)
|
|
479
|
-
newchannels = []
|
|
480
|
-
for channel in singlechannels:
|
|
481
|
-
channel = numpy.squeeze(channel, axis=splitaxis)
|
|
482
|
-
if (masked_channel := channel[mask]).size == 0:
|
|
483
|
-
in_range = (0, 1)
|
|
484
|
-
else:
|
|
485
|
-
in_range = (min(masked_channel), max(masked_channel))
|
|
486
|
-
|
|
487
|
-
channelholder = Image(channel, convert=False)
|
|
488
|
-
|
|
489
|
-
rescaled = self.rescale(channelholder, in_range)
|
|
490
|
-
newchannels.append(rescaled)
|
|
491
|
-
full_rescaled = numpy.stack(newchannels, axis=-1)
|
|
492
|
-
return full_rescaled
|
|
493
|
-
if (masked_data := data[mask]).size == 0:
|
|
494
|
-
in_range = (0, 1)
|
|
495
|
-
else:
|
|
496
|
-
in_range = (min(masked_data), max(masked_data))
|
|
497
|
-
return self.rescale(input_image, in_range)
|
|
498
|
-
|
|
499
|
-
def manual_input_range(self, input_image, workspace):
|
|
500
|
-
in_range = self.get_source_range(input_image, workspace)
|
|
501
|
-
|
|
502
|
-
return self.rescale(input_image, in_range)
|
|
503
|
-
|
|
504
|
-
def manual_io_range(self, input_image, workspace):
|
|
505
|
-
in_range = self.get_source_range(input_image, workspace)
|
|
506
|
-
|
|
507
|
-
out_range = (self.dest_scale.min, self.dest_scale.max)
|
|
508
|
-
|
|
509
|
-
return self.rescale(input_image, in_range, out_range)
|
|
510
|
-
|
|
511
|
-
def divide(self, data, value):
|
|
512
|
-
if value == 0.0:
|
|
513
|
-
raise ZeroDivisionError("Cannot divide pixel intensity by 0.")
|
|
514
|
-
|
|
515
|
-
return data / float(value)
|
|
516
|
-
|
|
517
|
-
def divide_by_image_minimum(self, input_image):
|
|
518
|
-
data = input_image.pixel_data
|
|
519
|
-
|
|
520
|
-
if (masked_data := data[input_image.mask]).size == 0:
|
|
521
|
-
src_min = 0
|
|
522
|
-
else:
|
|
523
|
-
src_min = numpy.min(masked_data)
|
|
524
|
-
|
|
525
|
-
return self.divide(data, src_min)
|
|
526
|
-
|
|
527
|
-
def divide_by_image_maximum(self, input_image):
|
|
528
|
-
data = input_image.pixel_data
|
|
529
|
-
|
|
530
|
-
if (masked_data := data[input_image.mask]).size == 0:
|
|
531
|
-
src_max = 1
|
|
532
|
-
else:
|
|
533
|
-
src_max = numpy.max(masked_data)
|
|
534
|
-
|
|
535
|
-
return self.divide(data, src_max)
|
|
536
|
-
|
|
537
|
-
def divide_by_value(self, input_image):
|
|
538
|
-
return self.divide(input_image.pixel_data, self.divisor_value.value)
|
|
539
|
-
|
|
483
|
+
# TODO: 5088 - update this once measurement format is finalized
|
|
540
484
|
def divide_by_measurement(self, workspace, input_image):
|
|
541
485
|
m = workspace.measurements
|
|
542
|
-
|
|
543
486
|
value = m.get_current_image_measurement(self.divisor_measurement.value)
|
|
544
|
-
|
|
545
|
-
return self.divide(input_image.pixel_data, value)
|
|
546
|
-
|
|
547
|
-
def scale_by_image_maximum(self, workspace, input_image):
|
|
548
|
-
###
|
|
549
|
-
# Scale the image by the maximum of another image
|
|
550
|
-
#
|
|
551
|
-
# Find the maximum value within the unmasked region of the input
|
|
552
|
-
# and reference image. Multiply by the reference maximum, divide
|
|
553
|
-
# by the input maximum to scale the input image to the same
|
|
554
|
-
# range as the reference image
|
|
555
|
-
###
|
|
556
|
-
if (masked_input := input_image.pixel_data[input_image.mask]).size == 0:
|
|
557
|
-
return input_image.pixel_data
|
|
558
|
-
else:
|
|
559
|
-
image_max = numpy.max(masked_input)
|
|
560
|
-
|
|
561
|
-
if image_max == 0:
|
|
562
|
-
return input_image.pixel_data
|
|
563
|
-
|
|
564
|
-
reference_image = workspace.image_set.get_image(self.matching_image_name.value)
|
|
565
|
-
|
|
566
|
-
if (masked_ref := reference_image.pixel_data[reference_image.mask]).size == 0:
|
|
567
|
-
reference_max = 1
|
|
568
|
-
else:
|
|
569
|
-
reference_max = numpy.max(masked_ref)
|
|
570
|
-
|
|
571
|
-
return self.divide(input_image.pixel_data * reference_max, image_max)
|
|
572
|
-
|
|
573
|
-
def get_source_range(self, input_image, workspace):
|
|
574
|
-
"""Get the source range, accounting for automatically computed values"""
|
|
575
|
-
if (
|
|
576
|
-
self.wants_automatic_high == CUSTOM_VALUE
|
|
577
|
-
and self.wants_automatic_low == CUSTOM_VALUE
|
|
578
|
-
):
|
|
579
|
-
return self.source_scale.min, self.source_scale.max
|
|
580
|
-
|
|
581
|
-
if (
|
|
582
|
-
self.wants_automatic_low == LOW_EACH_IMAGE
|
|
583
|
-
or self.wants_automatic_high == HIGH_EACH_IMAGE
|
|
584
|
-
):
|
|
585
|
-
input_pixels = input_image.pixel_data
|
|
586
|
-
if input_image.has_mask:
|
|
587
|
-
input_pixels = input_pixels[input_image.mask]
|
|
588
|
-
if input_pixels.size == 0:
|
|
589
|
-
return 0, 1
|
|
590
|
-
|
|
591
|
-
if self.wants_automatic_low == LOW_ALL_IMAGES:
|
|
592
|
-
src_min = self.get_automatic_minimum(workspace.image_set_list)
|
|
593
|
-
elif self.wants_automatic_low == LOW_EACH_IMAGE:
|
|
594
|
-
src_min = numpy.min(input_pixels)
|
|
595
|
-
else:
|
|
596
|
-
src_min = self.source_low.value
|
|
597
|
-
if self.wants_automatic_high.value == HIGH_ALL_IMAGES:
|
|
598
|
-
src_max = self.get_automatic_maximum(workspace.image_set_list)
|
|
599
|
-
elif self.wants_automatic_high == HIGH_EACH_IMAGE:
|
|
600
|
-
src_max = numpy.max(input_pixels)
|
|
601
|
-
else:
|
|
602
|
-
src_max = self.source_high.value
|
|
603
|
-
return src_min, src_max
|
|
487
|
+
return divide(input_image.pixel_data, value)
|
|
604
488
|
|
|
605
489
|
def upgrade_settings(self, setting_values, variable_revision_number, module_name):
|
|
606
490
|
if variable_revision_number == 1:
|
|
@@ -610,11 +494,11 @@ Select the measurement value to use as the divisor for the final image.
|
|
|
610
494
|
#
|
|
611
495
|
setting_values = list(setting_values)
|
|
612
496
|
|
|
613
|
-
for i, automatic in ((3,
|
|
497
|
+
for i, automatic in ((3, MinimumIntensityMethod.EACH_IMAGE.value), (4, MaximumIntensityMethod.EACH_IMAGE.value)):
|
|
614
498
|
if setting_values[i] == "Yes":
|
|
615
499
|
setting_values[i] = automatic
|
|
616
500
|
else:
|
|
617
|
-
setting_values[i] = CUSTOM_VALUE
|
|
501
|
+
setting_values[i] = MaximumIntensityMethod.CUSTOM_VALUE.value
|
|
618
502
|
|
|
619
503
|
variable_revision_number = 2
|
|
620
504
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|