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.
Files changed (392) hide show
  1. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/CellProfiler_nightly.egg-info/PKG-INFO +1 -1
  2. cellprofiler_nightly-5.0.0.dev669/CellProfiler_nightly.egg-info/scm_version.json +8 -0
  3. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/PKG-INFO +1 -1
  4. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/_version.py +3 -3
  5. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/rescaleintensity.py +139 -255
  6. cellprofiler_nightly-5.0.0.dev661/CellProfiler_nightly.egg-info/scm_version.json +0 -8
  7. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/CellProfiler_nightly.egg-info/SOURCES.txt +0 -0
  8. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/CellProfiler_nightly.egg-info/dependency_links.txt +0 -0
  9. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/CellProfiler_nightly.egg-info/entry_points.txt +0 -0
  10. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/CellProfiler_nightly.egg-info/requires.txt +0 -0
  11. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/CellProfiler_nightly.egg-info/scm_file_list.json +0 -0
  12. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/CellProfiler_nightly.egg-info/top_level.txt +0 -0
  13. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/LICENSE +0 -0
  14. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/README.md +0 -0
  15. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/__init__.py +0 -0
  16. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/__main__.py +0 -0
  17. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/examples/ExampleFly/ExampleFly.cppipe +0 -0
  18. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/examples/ExampleFly/images/01_POS002_D.TIF +0 -0
  19. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/examples/ExampleFly/images/01_POS002_F.TIF +0 -0
  20. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/examples/ExampleFly/images/01_POS002_R.TIF +0 -0
  21. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/examples/ExampleFly/images/01_POS076_D.TIF +0 -0
  22. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/examples/ExampleFly/images/01_POS076_F.TIF +0 -0
  23. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/examples/ExampleFly/images/01_POS076_R.TIF +0 -0
  24. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/examples/ExampleFly/images/01_POS218_D.TIF +0 -0
  25. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/examples/ExampleFly/images/01_POS218_F.TIF +0 -0
  26. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/examples/ExampleFly/images/01_POS218_R.TIF +0 -0
  27. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/display_image_tools.rst +0 -0
  28. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/display_interactive_navigation.rst +0 -0
  29. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/display_menu_bar.rst +0 -0
  30. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/legacy_matlab_image.rst +0 -0
  31. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/navigation_edit_menu.rst +0 -0
  32. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/navigation_file_menu.rst +0 -0
  33. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/navigation_test_menu.rst +0 -0
  34. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/navigation_window_menu.rst +0 -0
  35. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/other_3d_identify.rst +0 -0
  36. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/other_batch.rst +0 -0
  37. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/other_logging.rst +0 -0
  38. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/other_omero.rst +0 -0
  39. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/other_plugins.rst +0 -0
  40. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/other_shell.rst +0 -0
  41. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/other_troubleshooting.rst +0 -0
  42. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/other_widget_inspector.rst +0 -0
  43. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/output_measurements.rst +0 -0
  44. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/output_plateviewer.rst +0 -0
  45. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/output_spreadsheets.rst +0 -0
  46. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/pipelines_building.rst +0 -0
  47. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/pipelines_running.rst +0 -0
  48. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/projects_configure_images.rst +0 -0
  49. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/projects_image_ordering.rst +0 -0
  50. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/projects_image_sequences.rst +0 -0
  51. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/projects_introduction.rst +0 -0
  52. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/projects_selecting_images.rst +0 -0
  53. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/help/why_use_cellprofiler.rst +0 -0
  54. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler-favicon-120.png +0 -0
  55. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler-favicon-128.png +0 -0
  56. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler-favicon-144.png +0 -0
  57. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler-favicon-152.png +0 -0
  58. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler-favicon-195.png +0 -0
  59. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler-favicon-228.png +0 -0
  60. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler-favicon-32.png +0 -0
  61. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler-favicon-57.png +0 -0
  62. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler-favicon-72.png +0 -0
  63. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler-favicon-96.png +0 -0
  64. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler-favicon.ico +0 -0
  65. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler.ai +0 -0
  66. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler.icns +0 -0
  67. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler.ico +0 -0
  68. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler.png +0 -0
  69. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler.svg +0 -0
  70. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/icons/CellProfiler_square.svg +0 -0
  71. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/Align.png +0 -0
  72. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/ApplyThreshold.png +0 -0
  73. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/CollapseTree.png +0 -0
  74. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/ColorToGray.png +0 -0
  75. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/CorrectIlluminationApply.png +0 -0
  76. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/CorrectIlluminationCalculate.png +0 -0
  77. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/Crop.png +0 -0
  78. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/ExpandOrShrinkObjects.png +0 -0
  79. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/ExpandTree.png +0 -0
  80. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/GrayToColor.png +0 -0
  81. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/Groups_ExampleDisplayTable.png +0 -0
  82. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_ANALYZED.png +0 -0
  83. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_ANALYZE_16.png +0 -0
  84. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_ANALYZE_24.png +0 -0
  85. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_CLOSED_EYE.png +0 -0
  86. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_DISABLED.png +0 -0
  87. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_ERROR.png +0 -0
  88. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_EYE.png +0 -0
  89. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_GO.png +0 -0
  90. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_GO_DIM.png +0 -0
  91. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_IMAGE.png +0 -0
  92. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_MEASURE.png +0 -0
  93. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_OK.png +0 -0
  94. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_PAUSE.png +0 -0
  95. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_RUN.png +0 -0
  96. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_SLIDER.png +0 -0
  97. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_SLIDER_ACTIVE.png +0 -0
  98. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_STOP.png +0 -0
  99. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_TEST.png +0 -0
  100. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_UNAVAILABLE.png +0 -0
  101. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_UPDATE.png +0 -0
  102. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_USE_INPUT.png +0 -0
  103. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_USE_OUTPUT.png +0 -0
  104. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_USE_SOURCE.png +0 -0
  105. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IMG_WARN.png +0 -0
  106. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IdentifyPrimaryObjects_IntensityDeclumping.png +0 -0
  107. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IdentifyPrimaryObjects_ShapeDeclumping.png +0 -0
  108. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IdentifySecondaryObjects.png +0 -0
  109. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/IdentifyTertiaryObjects.png +0 -0
  110. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/Images_FilelistPanel.png +0 -0
  111. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/Images_FilelistPanel_Blank.png +0 -0
  112. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/Images_FilelistPanel_Filled.png +0 -0
  113. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/Images_UsingRules.png +0 -0
  114. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/MeasureGranularity_example.png +0 -0
  115. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/MeasureImageAreaOccupied.png +0 -0
  116. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/MeasureObjectIntensityDistribution_Edges_Centers.png +0 -0
  117. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/MeasureObjectIntensityDistribution_Magnitude_Phase.png +0 -0
  118. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/MeasureObjectSizeShape_Eccentricity.png +0 -0
  119. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/MeasureTexture.png +0 -0
  120. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/Measure_texture_3D_correspondences_1.png +0 -0
  121. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/Measure_texture_3D_correspondences_1_highres.png +0 -0
  122. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/Measure_texture_3D_correspondences_2.png +0 -0
  123. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/Measure_texture_3D_correspondences_2_highres.png +0 -0
  124. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/Metadata_ExampleDisplayTable.png +0 -0
  125. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/NamesAndTypes_ExampleDisplayTable.png +0 -0
  126. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/Tile.png +0 -0
  127. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/UnmixColors.png +0 -0
  128. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/check.png +0 -0
  129. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/color.png +0 -0
  130. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/cp_panel_schematic.png +0 -0
  131. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/dapi.png +0 -0
  132. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/delete.png +0 -0
  133. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/downarrow.png +0 -0
  134. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/eye-close.png +0 -0
  135. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/eye-open.png +0 -0
  136. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/ffwd.png +0 -0
  137. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/ffwddisabled.png +0 -0
  138. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/filter.png +0 -0
  139. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/folder_browse.png +0 -0
  140. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/folder_create.png +0 -0
  141. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/gear.png +0 -0
  142. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/gfp.png +0 -0
  143. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/icon_copyrights.txt +0 -0
  144. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/illumination_function.png +0 -0
  145. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/image_to_object_dataflow.png +0 -0
  146. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/image_to_object_dataflow.psd +0 -0
  147. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/mask.png +0 -0
  148. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/microscope-color_16.png +0 -0
  149. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/microscope-icon_16.png +0 -0
  150. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/microscope-icon_32.png +0 -0
  151. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/microscopes_16.png +0 -0
  152. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/module_add.png +0 -0
  153. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/module_help.png +0 -0
  154. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/module_movedown.png +0 -0
  155. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/module_moveup.png +0 -0
  156. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/module_remove.png +0 -0
  157. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/monochrome.png +0 -0
  158. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/movie_16.png +0 -0
  159. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/next.png +0 -0
  160. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/objects.png +0 -0
  161. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/pause.png +0 -0
  162. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/pausedisabled.png +0 -0
  163. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/play.png +0 -0
  164. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/playdisabled.png +0 -0
  165. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/previous.png +0 -0
  166. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/remove-sign.png +0 -0
  167. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/rewind.png +0 -0
  168. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/rewinddisabled.png +0 -0
  169. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/splash-black-text-alpha.png +0 -0
  170. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/splash-white-text-alpha.png +0 -0
  171. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/splash.png +0 -0
  172. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/status_pause.png +0 -0
  173. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/status_save.png +0 -0
  174. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/status_stop.png +0 -0
  175. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/stop.png +0 -0
  176. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/stopdisabled.png +0 -0
  177. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/structuringelement.png +0 -0
  178. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/thumb-down.png +0 -0
  179. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/thumb-up.png +0 -0
  180. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/unchecked.png +0 -0
  181. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/wantpony.wav +0 -0
  182. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/welcome_examples.png +0 -0
  183. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/welcome_forum.png +0 -0
  184. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/welcome_help.png +0 -0
  185. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/welcome_manual.png +0 -0
  186. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/welcome_new.png +0 -0
  187. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/welcome_pipeline.png +0 -0
  188. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/welcome_screen_help.png +0 -0
  189. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/welcome_start.png +0 -0
  190. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/welcome_tutorial.png +0 -0
  191. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/welcomescreen_forum.png +0 -0
  192. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/welcomescreen_manual.png +0 -0
  193. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/welcomescreen_tutorials.png +0 -0
  194. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/window_back.png +0 -0
  195. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/window_filesave.png +0 -0
  196. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/window_forward.png +0 -0
  197. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/window_home.png +0 -0
  198. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/window_pan.png +0 -0
  199. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/data/images/window_zoom_to_rect.png +0 -0
  200. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/__init__.py +0 -0
  201. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/_tree_checkbox_dialog.py +0 -0
  202. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/_welcome_frame.py +0 -0
  203. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/_workspace_model.py +0 -0
  204. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/addmoduleframe.py +0 -0
  205. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/app.py +0 -0
  206. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/artist.py +0 -0
  207. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/checkupdate.py +0 -0
  208. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/constants/__init__.py +0 -0
  209. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/constants/figure.py +0 -0
  210. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/constants/module_view.py +0 -0
  211. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/constants/preferences_dialog.py +0 -0
  212. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/constants/preferences_view.py +0 -0
  213. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/constants/workspace_view.py +0 -0
  214. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/cpframe.py +0 -0
  215. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/dialog.py +0 -0
  216. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/editobjectsdlg.py +0 -0
  217. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/errordialog.py +0 -0
  218. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/figure/__init__.py +0 -0
  219. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/figure/_figure.py +0 -0
  220. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/figure/_navigation_toolbar.py +0 -0
  221. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/figure/_outline_artist.py +0 -0
  222. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/gridrenderers.py +0 -0
  223. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/help/__init__.py +0 -0
  224. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/help/content.py +0 -0
  225. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/help/menu.py +0 -0
  226. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/help/search.py +0 -0
  227. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/html/__init__.py +0 -0
  228. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/html/configure_images_help.html +0 -0
  229. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/html/exporting_results_help.html +0 -0
  230. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/html/getting_started.html +0 -0
  231. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/html/htmlwindow.py +0 -0
  232. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/html/identify_features_help.html +0 -0
  233. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/html/in_app_help.html +0 -0
  234. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/html/making_measurements_help.html +0 -0
  235. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/html/running_pipeline_help.html +0 -0
  236. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/html/selecting_images_help.html +0 -0
  237. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/html/test_mode_help.html +0 -0
  238. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/html/utils.py +0 -0
  239. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/html/welcome.html +0 -0
  240. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/htmldialog.py +0 -0
  241. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/imagesetctrl.py +0 -0
  242. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/menu.py +0 -0
  243. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/metadatactrl.py +0 -0
  244. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/module_view/__init__.py +0 -0
  245. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/module_view/_binary_matrix_controller.py +0 -0
  246. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/module_view/_data_type_controller.py +0 -0
  247. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/module_view/_file_collection_display_controller.py +0 -0
  248. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/module_view/_filter_panel_controller.py +0 -0
  249. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/module_view/_joiner_controller.py +0 -0
  250. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/module_view/_module_sizer.py +0 -0
  251. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/module_view/_module_view.py +0 -0
  252. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/module_view/_setting_edited_event.py +0 -0
  253. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/module_view/_table_controller.py +0 -0
  254. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/module_view/_validation_request_controller.py +0 -0
  255. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/moduleview.py +0 -0
  256. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/namesubscriber.py +0 -0
  257. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/omerologin.py +0 -0
  258. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/parametersampleframe.py +0 -0
  259. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/pathlist.py +0 -0
  260. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/pipeline.py +0 -0
  261. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/pipelinecontroller.py +0 -0
  262. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/pipelinelistview.py +0 -0
  263. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/plateviewer.py +0 -0
  264. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/plugins_menu.py +0 -0
  265. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/preferences_dialog/__init__.py +0 -0
  266. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/preferences_dialog/_integer_preference.py +0 -0
  267. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/preferences_dialog/_preferences_dialog.py +0 -0
  268. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/preferences_view/__init__.py +0 -0
  269. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/preferences_view/_preferences_view.py +0 -0
  270. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/preferences_view/_progress_watcher.py +0 -0
  271. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/readers_dialog/__init__.py +0 -0
  272. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/readers_dialog/_readers_dialog.py +0 -0
  273. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/regexp_editor.py +0 -0
  274. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/tools.py +0 -0
  275. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/utilities/__init__.py +0 -0
  276. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/utilities/figure.py +0 -0
  277. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/utilities/icon.py +0 -0
  278. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/utilities/module_view.py +0 -0
  279. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/utilities/preferences_dialog.py +0 -0
  280. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/utilities/preferences_view.py +0 -0
  281. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/utilities/workspace_view.py +0 -0
  282. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/workspace_view/__init__.py +0 -0
  283. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/workspace_view/_workspace_view.py +0 -0
  284. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/workspace_view/_workspace_view_figure.py +0 -0
  285. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/workspace_view/_workspace_view_image_row.py +0 -0
  286. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/workspace_view/_workspace_view_mask_row.py +0 -0
  287. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/workspace_view/_workspace_view_measurement_row.py +0 -0
  288. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/workspace_view/_workspace_view_objects_row.py +0 -0
  289. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/gui/workspace_view/_workspace_view_row.py +0 -0
  290. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/icons/__init__.py +0 -0
  291. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/knime_bridge.py +0 -0
  292. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/misc.py +0 -0
  293. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/UntangleWorms.xsd +0 -0
  294. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/__init__.py +0 -0
  295. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/_help.py +0 -0
  296. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/calculatemath.py +0 -0
  297. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/calculatestatistics.py +0 -0
  298. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/classifyobjects.py +0 -0
  299. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/closing.py +0 -0
  300. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/colortogray.py +0 -0
  301. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/combineobjects.py +0 -0
  302. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/convertimagetoobjects.py +0 -0
  303. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/convertobjectstoimage.py +0 -0
  304. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/correctilluminationapply.py +0 -0
  305. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/correctilluminationcalculate.py +0 -0
  306. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/createbatchfiles.py +0 -0
  307. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/crop.py +0 -0
  308. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/definegrid.py +0 -0
  309. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/dilateimage.py +0 -0
  310. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/dilateobjects.py +0 -0
  311. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/displaydataonimage.py +0 -0
  312. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/displaydensityplot.py +0 -0
  313. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/displayhistogram.py +0 -0
  314. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/displayplatemap.py +0 -0
  315. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/displayscatterplot.py +0 -0
  316. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/editobjectsmanually.py +0 -0
  317. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/enhanceedges.py +0 -0
  318. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/enhanceorsuppressfeatures.py +0 -0
  319. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/erodeimage.py +0 -0
  320. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/erodeobjects.py +0 -0
  321. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/expandorshrinkobjects.py +0 -0
  322. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/exporttodatabase.py +0 -0
  323. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/exporttospreadsheet.py +0 -0
  324. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/fillobjects.py +0 -0
  325. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/filterobjects.py +0 -0
  326. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/findmaxima.py +0 -0
  327. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/flagimage.py +0 -0
  328. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/flipandrotate.py +0 -0
  329. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/gaussianfilter.py +0 -0
  330. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/graytocolor.py +0 -0
  331. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/identifydeadworms.py +0 -0
  332. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/identifyobjectsingrid.py +0 -0
  333. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/identifyobjectsmanually.py +0 -0
  334. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/identifyprimaryobjects.py +0 -0
  335. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/identifysecondaryobjects.py +0 -0
  336. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/identifytertiaryobjects.py +0 -0
  337. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/imagemath.py +0 -0
  338. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/invertforprinting.py +0 -0
  339. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/labelimages.py +0 -0
  340. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/makeprojection.py +0 -0
  341. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/maskimage.py +0 -0
  342. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/maskobjects.py +0 -0
  343. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/matchtemplate.py +0 -0
  344. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/measurecolocalization.py +0 -0
  345. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/measuregranularity.py +0 -0
  346. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/measureimageareaoccupied.py +0 -0
  347. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/measureimageintensity.py +0 -0
  348. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/measureimageoverlap.py +0 -0
  349. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/measureimagequality.py +0 -0
  350. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/measureimageskeleton.py +0 -0
  351. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/measureobjectintensity.py +0 -0
  352. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/measureobjectintensitydistribution.py +0 -0
  353. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/measureobjectneighbors.py +0 -0
  354. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/measureobjectoverlap.py +0 -0
  355. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/measureobjectsizeshape.py +0 -0
  356. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/measureobjectskeleton.py +0 -0
  357. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/measuretexture.py +0 -0
  358. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/medialaxis.py +0 -0
  359. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/medianfilter.py +0 -0
  360. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/morph.py +0 -0
  361. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/morphologicalskeleton.py +0 -0
  362. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/opening.py +0 -0
  363. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/overlayobjects.py +0 -0
  364. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/overlayoutlines.py +0 -0
  365. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/plugins/__init__.py +0 -0
  366. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/plugins/imagetemplate.py +0 -0
  367. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/plugins/measurementtemplate.py +0 -0
  368. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/plugins/segmentationtemplatewithdependencies.py +0 -0
  369. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/reducenoise.py +0 -0
  370. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/relateobjects.py +0 -0
  371. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/removeholes.py +0 -0
  372. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/resize.py +0 -0
  373. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/resizeobjects.py +0 -0
  374. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/runimagejmacro.py +0 -0
  375. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/savecroppedobjects.py +0 -0
  376. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/saveimages.py +0 -0
  377. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/shrinktoobjectcenters.py +0 -0
  378. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/smooth.py +0 -0
  379. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/splitormergeobjects.py +0 -0
  380. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/straightenworms.py +0 -0
  381. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/threshold.py +0 -0
  382. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/tile.py +0 -0
  383. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/trackobjects.py +0 -0
  384. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/unmixcolors.py +0 -0
  385. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/untangleworms.py +0 -0
  386. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/modules/watershed.py +0 -0
  387. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/utilities/__init__.py +0 -0
  388. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/utilities/morphology.py +0 -0
  389. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/cellprofiler/utilities/rules.py +0 -0
  390. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/environment.yml +0 -0
  391. {cellprofiler_nightly-5.0.0.dev661 → cellprofiler_nightly-5.0.0.dev669}/pyproject.toml +0 -0
  392. {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.dev661
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>
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "5.0.0.dev0",
3
+ "distance": 669,
4
+ "node": "g51250caf343cdf434f15b90b277ba794c7510c79",
5
+ "dirty": true,
6
+ "branch": "main",
7
+ "node_date": "2026-08-21"
8
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: CellProfiler-nightly
3
- Version: 5.0.0.dev661
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>
@@ -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.dev661'
22
- __version_tuple__ = version_tuple = (5, 0, 0, 'dev661')
21
+ __version__ = version = '5.0.0.dev669'
22
+ __version_tuple__ = version_tuple = (5, 0, 0, 'dev669')
23
23
 
24
- __commit_id__ = commit_id = 'g222155826'
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
- M_STRETCH = "Stretch each image to use the full intensity range"
39
- M_MANUAL_INPUT_RANGE = "Choose specific values to be reset to the full intensity range"
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
- - *%(M_STRETCH)s:* Find the minimum and maximum values within the
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
- - *%(M_MANUAL_INPUT_RANGE)s:* Pixels are scaled from an original range
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
- - *%(M_MANUAL_IO_RANGE)s:* Pixels are scaled from their original
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
- - *%(M_DIVIDE_BY_IMAGE_MINIMUM)s:* Divide the intensity value of
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
- - *%(M_DIVIDE_BY_IMAGE_MAXIMUM)s:* Divide the intensity value of
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
- - *%(M_DIVIDE_BY_VALUE)s:* Divide the intensity value of each pixel
77
+ - *{M_DIVIDE_BY_VALUE}:* Divide the intensity value of each pixel
113
78
  by a value that you choose.
114
- - *%(M_DIVIDE_BY_MEASUREMENT)s:* The intensity value of each pixel
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
- - *%(M_SCALE_BY_IMAGE_MAXIMUM)s:* Scale an image so that its
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
- % globals(),
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 “%(M_MANUAL_IO_RANGE)s” is selected)*
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
- - *%(CUSTOM_VALUE)s:* Enter the minimum intensity manually below.
133
- - *%(LOW_EACH_IMAGE)s*: use the lowest intensity in this image as the
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
- - *%(LOW_ALL_IMAGES)s*: use the lowest intensity from all images in
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
- % globals(),
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 “%(M_MANUAL_IO_RANGE)s” is selected)*
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
- - *%(CUSTOM_VALUE)s*: Enter the maximum intensity manually below.
155
- - *%(HIGH_EACH_IMAGE)s*: Use the highest intensity in this image as
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
- - *%(HIGH_ALL_IMAGES)s*: Use the highest intensity from all images in
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
- % globals(),
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": M_MANUAL_INPUT_RANGE,
182
- "M_MANUAL_IO_RANGE": 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": M_MANUAL_INPUT_RANGE,
203
- "M_MANUAL_IO_RANGE": 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": M_MANUAL_INPUT_RANGE,
224
- "M_MANUAL_IO_RANGE": 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": 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 “%(M_SCALE_BY_IMAGE_MAXIMUM)s” is selected)*
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
- % globals(),
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 “%(M_DIVIDE_BY_VALUE)s” is selected)*
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
- % globals(),
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 “%(M_DIVIDE_BY_MEASUREMENT)s” is selected)*
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
- % globals(),
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 (M_MANUAL_INPUT_RANGE, M_MANUAL_IO_RANGE):
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 == M_MANUAL_IO_RANGE:
310
+ if self.rescale_method == RescaleMethod.MANUAL_IO_RANGE.value:
315
311
  __settings__ += [self.dest_scale]
316
312
 
317
- if self.rescale_method == M_SCALE_BY_IMAGE_MAXIMUM:
313
+ if self.rescale_method == RescaleMethod.SCALE_BY_IMAGE_MAXIMUM.value:
318
314
  __settings__ += [self.matching_image_name]
319
- elif self.rescale_method == M_DIVIDE_BY_MEASUREMENT:
315
+ elif self.rescale_method == RescaleMethod.DIVIDE_BY_MEASUREMENT.value:
320
316
  __settings__ += [self.divisor_measurement]
321
- elif self.rescale_method == M_DIVIDE_BY_VALUE:
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[LOW_ALL_IMAGES] = value
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[LOW_ALL_IMAGES]
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[HIGH_ALL_IMAGES] = value
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[HIGH_ALL_IMAGES]
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 != HIGH_ALL_IMAGES
358
- and self.wants_automatic_low != LOW_ALL_IMAGES
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 == HIGH_ALL_IMAGES:
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 == LOW_ALL_IMAGES:
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 == HIGH_ALL_IMAGES:
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 == LOW_ALL_IMAGES:
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 == HIGH_ALL_IMAGES) or (
398
- self.wants_automatic_low == LOW_ALL_IMAGES
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
- if self.rescale_method == M_STRETCH:
405
- output_image = self.stretch(input_image)
406
- elif self.rescale_method == M_MANUAL_INPUT_RANGE:
407
- output_image = self.manual_input_range(input_image, workspace)
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
- elif self.rescale_method == M_SCALE_BY_IMAGE_MAXIMUM:
419
- output_image = self.scale_by_image_maximum(workspace, input_image)
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
- def rescale(self, image, in_range, out_range=(0.0, 1.0)):
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, LOW_EACH_IMAGE), (4, HIGH_EACH_IMAGE)):
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
 
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "5.0.0.dev0",
3
- "distance": 661,
4
- "node": "g222155826b53073e015588d1def75edb54970ad2",
5
- "dirty": true,
6
- "branch": "main",
7
- "node_date": "2026-08-19"
8
- }