CellProfiler-nightly 5.0.0.dev466__tar.gz → 5.0.0.dev509__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 (390) hide show
  1. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/CellProfiler_nightly.egg-info/PKG-INFO +1 -1
  2. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/PKG-INFO +1 -1
  3. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/_version.py +3 -3
  4. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/enhanceedges.py +71 -60
  5. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/flipandrotate.py +96 -158
  6. cellprofiler_nightly-5.0.0.dev509/cellprofiler/modules/measurecolocalization.py +1144 -0
  7. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/measuregranularity.py +46 -210
  8. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/smooth.py +51 -77
  9. cellprofiler_nightly-5.0.0.dev466/cellprofiler/modules/measurecolocalization.py +0 -2060
  10. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/CellProfiler_nightly.egg-info/SOURCES.txt +0 -0
  11. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/CellProfiler_nightly.egg-info/dependency_links.txt +0 -0
  12. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/CellProfiler_nightly.egg-info/entry_points.txt +0 -0
  13. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/CellProfiler_nightly.egg-info/requires.txt +0 -0
  14. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/CellProfiler_nightly.egg-info/top_level.txt +0 -0
  15. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/LICENSE +0 -0
  16. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/README.md +0 -0
  17. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/__init__.py +0 -0
  18. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/__main__.py +0 -0
  19. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/examples/ExampleFly/ExampleFly.cppipe +0 -0
  20. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/examples/ExampleFly/images/01_POS002_D.TIF +0 -0
  21. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/examples/ExampleFly/images/01_POS002_F.TIF +0 -0
  22. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/examples/ExampleFly/images/01_POS002_R.TIF +0 -0
  23. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/examples/ExampleFly/images/01_POS076_D.TIF +0 -0
  24. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/examples/ExampleFly/images/01_POS076_F.TIF +0 -0
  25. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/examples/ExampleFly/images/01_POS076_R.TIF +0 -0
  26. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/examples/ExampleFly/images/01_POS218_D.TIF +0 -0
  27. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/examples/ExampleFly/images/01_POS218_F.TIF +0 -0
  28. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/examples/ExampleFly/images/01_POS218_R.TIF +0 -0
  29. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/help/display_image_tools.rst +0 -0
  30. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/help/display_interactive_navigation.rst +0 -0
  31. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/help/display_menu_bar.rst +0 -0
  32. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/help/legacy_matlab_image.rst +0 -0
  33. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/help/navigation_edit_menu.rst +0 -0
  34. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/help/navigation_file_menu.rst +0 -0
  35. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/help/navigation_test_menu.rst +0 -0
  36. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/help/navigation_window_menu.rst +0 -0
  37. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/help/other_3d_identify.rst +0 -0
  38. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/help/other_batch.rst +0 -0
  39. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/help/other_logging.rst +0 -0
  40. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/help/other_omero.rst +0 -0
  41. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/help/other_plugins.rst +0 -0
  42. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/help/other_shell.rst +0 -0
  43. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/help/other_troubleshooting.rst +0 -0
  44. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/help/other_widget_inspector.rst +0 -0
  45. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/help/output_measurements.rst +0 -0
  46. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/help/output_plateviewer.rst +0 -0
  47. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/help/output_spreadsheets.rst +0 -0
  48. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/help/pipelines_building.rst +0 -0
  49. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/help/pipelines_running.rst +0 -0
  50. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/help/projects_configure_images.rst +0 -0
  51. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/help/projects_image_ordering.rst +0 -0
  52. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/help/projects_image_sequences.rst +0 -0
  53. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/help/projects_introduction.rst +0 -0
  54. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/help/projects_selecting_images.rst +0 -0
  55. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/help/why_use_cellprofiler.rst +0 -0
  56. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/icons/CellProfiler-favicon-120.png +0 -0
  57. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/icons/CellProfiler-favicon-128.png +0 -0
  58. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/icons/CellProfiler-favicon-144.png +0 -0
  59. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/icons/CellProfiler-favicon-152.png +0 -0
  60. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/icons/CellProfiler-favicon-195.png +0 -0
  61. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/icons/CellProfiler-favicon-228.png +0 -0
  62. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/icons/CellProfiler-favicon-32.png +0 -0
  63. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/icons/CellProfiler-favicon-57.png +0 -0
  64. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/icons/CellProfiler-favicon-72.png +0 -0
  65. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/icons/CellProfiler-favicon-96.png +0 -0
  66. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/icons/CellProfiler-favicon.ico +0 -0
  67. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/icons/CellProfiler.ai +0 -0
  68. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/icons/CellProfiler.icns +0 -0
  69. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/icons/CellProfiler.ico +0 -0
  70. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/icons/CellProfiler.png +0 -0
  71. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/icons/CellProfiler.svg +0 -0
  72. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/icons/CellProfiler_square.svg +0 -0
  73. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/Align.png +0 -0
  74. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/ApplyThreshold.png +0 -0
  75. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/CollapseTree.png +0 -0
  76. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/ColorToGray.png +0 -0
  77. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/CorrectIlluminationApply.png +0 -0
  78. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/CorrectIlluminationCalculate.png +0 -0
  79. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/Crop.png +0 -0
  80. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/ExpandOrShrinkObjects.png +0 -0
  81. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/ExpandTree.png +0 -0
  82. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/GrayToColor.png +0 -0
  83. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/Groups_ExampleDisplayTable.png +0 -0
  84. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/IMG_ANALYZED.png +0 -0
  85. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/IMG_ANALYZE_16.png +0 -0
  86. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/IMG_ANALYZE_24.png +0 -0
  87. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/IMG_CLOSED_EYE.png +0 -0
  88. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/IMG_DISABLED.png +0 -0
  89. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/IMG_ERROR.png +0 -0
  90. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/IMG_EYE.png +0 -0
  91. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/IMG_GO.png +0 -0
  92. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/IMG_GO_DIM.png +0 -0
  93. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/IMG_IMAGE.png +0 -0
  94. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/IMG_MEASURE.png +0 -0
  95. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/IMG_OK.png +0 -0
  96. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/IMG_PAUSE.png +0 -0
  97. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/IMG_RUN.png +0 -0
  98. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/IMG_SLIDER.png +0 -0
  99. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/IMG_SLIDER_ACTIVE.png +0 -0
  100. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/IMG_STOP.png +0 -0
  101. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/IMG_TEST.png +0 -0
  102. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/IMG_UNAVAILABLE.png +0 -0
  103. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/IMG_UPDATE.png +0 -0
  104. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/IMG_USE_INPUT.png +0 -0
  105. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/IMG_USE_OUTPUT.png +0 -0
  106. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/IMG_USE_SOURCE.png +0 -0
  107. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/IMG_WARN.png +0 -0
  108. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/IdentifyPrimaryObjects_IntensityDeclumping.png +0 -0
  109. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/IdentifyPrimaryObjects_ShapeDeclumping.png +0 -0
  110. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/IdentifySecondaryObjects.png +0 -0
  111. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/IdentifyTertiaryObjects.png +0 -0
  112. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/Images_FilelistPanel.png +0 -0
  113. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/Images_FilelistPanel_Blank.png +0 -0
  114. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/Images_FilelistPanel_Filled.png +0 -0
  115. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/Images_UsingRules.png +0 -0
  116. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/MeasureGranularity_example.png +0 -0
  117. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/MeasureImageAreaOccupied.png +0 -0
  118. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/MeasureObjectIntensityDistribution_Edges_Centers.png +0 -0
  119. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/MeasureObjectIntensityDistribution_Magnitude_Phase.png +0 -0
  120. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/MeasureObjectSizeShape_Eccentricity.png +0 -0
  121. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/MeasureTexture.png +0 -0
  122. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/Measure_texture_3D_correspondences_1.png +0 -0
  123. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/Measure_texture_3D_correspondences_1_highres.png +0 -0
  124. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/Measure_texture_3D_correspondences_2.png +0 -0
  125. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/Measure_texture_3D_correspondences_2_highres.png +0 -0
  126. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/Metadata_ExampleDisplayTable.png +0 -0
  127. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/NamesAndTypes_ExampleDisplayTable.png +0 -0
  128. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/Tile.png +0 -0
  129. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/UnmixColors.png +0 -0
  130. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/check.png +0 -0
  131. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/color.png +0 -0
  132. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/cp_panel_schematic.png +0 -0
  133. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/dapi.png +0 -0
  134. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/delete.png +0 -0
  135. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/downarrow.png +0 -0
  136. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/eye-close.png +0 -0
  137. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/eye-open.png +0 -0
  138. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/ffwd.png +0 -0
  139. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/ffwddisabled.png +0 -0
  140. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/filter.png +0 -0
  141. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/folder_browse.png +0 -0
  142. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/folder_create.png +0 -0
  143. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/gear.png +0 -0
  144. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/gfp.png +0 -0
  145. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/icon_copyrights.txt +0 -0
  146. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/illumination_function.png +0 -0
  147. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/image_to_object_dataflow.png +0 -0
  148. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/image_to_object_dataflow.psd +0 -0
  149. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/mask.png +0 -0
  150. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/microscope-color_16.png +0 -0
  151. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/microscope-icon_16.png +0 -0
  152. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/microscope-icon_32.png +0 -0
  153. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/microscopes_16.png +0 -0
  154. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/module_add.png +0 -0
  155. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/module_help.png +0 -0
  156. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/module_movedown.png +0 -0
  157. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/module_moveup.png +0 -0
  158. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/module_remove.png +0 -0
  159. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/monochrome.png +0 -0
  160. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/movie_16.png +0 -0
  161. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/next.png +0 -0
  162. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/objects.png +0 -0
  163. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/pause.png +0 -0
  164. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/pausedisabled.png +0 -0
  165. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/play.png +0 -0
  166. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/playdisabled.png +0 -0
  167. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/previous.png +0 -0
  168. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/remove-sign.png +0 -0
  169. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/rewind.png +0 -0
  170. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/rewinddisabled.png +0 -0
  171. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/splash-black-text-alpha.png +0 -0
  172. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/splash-white-text-alpha.png +0 -0
  173. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/splash.png +0 -0
  174. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/status_pause.png +0 -0
  175. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/status_save.png +0 -0
  176. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/status_stop.png +0 -0
  177. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/stop.png +0 -0
  178. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/stopdisabled.png +0 -0
  179. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/structuringelement.png +0 -0
  180. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/thumb-down.png +0 -0
  181. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/thumb-up.png +0 -0
  182. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/unchecked.png +0 -0
  183. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/wantpony.wav +0 -0
  184. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/welcome_examples.png +0 -0
  185. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/welcome_forum.png +0 -0
  186. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/welcome_help.png +0 -0
  187. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/welcome_manual.png +0 -0
  188. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/welcome_new.png +0 -0
  189. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/welcome_pipeline.png +0 -0
  190. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/welcome_screen_help.png +0 -0
  191. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/welcome_start.png +0 -0
  192. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/welcome_tutorial.png +0 -0
  193. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/welcomescreen_forum.png +0 -0
  194. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/welcomescreen_manual.png +0 -0
  195. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/welcomescreen_tutorials.png +0 -0
  196. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/window_back.png +0 -0
  197. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/window_filesave.png +0 -0
  198. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/window_forward.png +0 -0
  199. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/window_home.png +0 -0
  200. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/window_pan.png +0 -0
  201. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/data/images/window_zoom_to_rect.png +0 -0
  202. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/__init__.py +0 -0
  203. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/_tree_checkbox_dialog.py +0 -0
  204. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/_welcome_frame.py +0 -0
  205. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/_workspace_model.py +0 -0
  206. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/addmoduleframe.py +0 -0
  207. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/app.py +0 -0
  208. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/artist.py +0 -0
  209. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/checkupdate.py +0 -0
  210. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/constants/__init__.py +0 -0
  211. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/constants/figure.py +0 -0
  212. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/constants/module_view.py +0 -0
  213. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/constants/preferences_dialog.py +0 -0
  214. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/constants/preferences_view.py +0 -0
  215. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/constants/workspace_view.py +0 -0
  216. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/cpframe.py +0 -0
  217. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/dialog.py +0 -0
  218. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/editobjectsdlg.py +0 -0
  219. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/errordialog.py +0 -0
  220. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/figure/__init__.py +0 -0
  221. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/figure/_figure.py +0 -0
  222. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/figure/_navigation_toolbar.py +0 -0
  223. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/figure/_outline_artist.py +0 -0
  224. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/gridrenderers.py +0 -0
  225. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/help/__init__.py +0 -0
  226. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/help/content.py +0 -0
  227. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/help/menu.py +0 -0
  228. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/help/search.py +0 -0
  229. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/html/__init__.py +0 -0
  230. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/html/configure_images_help.html +0 -0
  231. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/html/exporting_results_help.html +0 -0
  232. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/html/getting_started.html +0 -0
  233. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/html/htmlwindow.py +0 -0
  234. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/html/identify_features_help.html +0 -0
  235. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/html/in_app_help.html +0 -0
  236. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/html/making_measurements_help.html +0 -0
  237. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/html/running_pipeline_help.html +0 -0
  238. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/html/selecting_images_help.html +0 -0
  239. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/html/test_mode_help.html +0 -0
  240. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/html/utils.py +0 -0
  241. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/html/welcome.html +0 -0
  242. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/htmldialog.py +0 -0
  243. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/imagesetctrl.py +0 -0
  244. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/menu.py +0 -0
  245. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/metadatactrl.py +0 -0
  246. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/module_view/__init__.py +0 -0
  247. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/module_view/_binary_matrix_controller.py +0 -0
  248. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/module_view/_data_type_controller.py +0 -0
  249. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/module_view/_file_collection_display_controller.py +0 -0
  250. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/module_view/_filter_panel_controller.py +0 -0
  251. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/module_view/_joiner_controller.py +0 -0
  252. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/module_view/_module_sizer.py +0 -0
  253. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/module_view/_module_view.py +0 -0
  254. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/module_view/_setting_edited_event.py +0 -0
  255. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/module_view/_table_controller.py +0 -0
  256. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/module_view/_validation_request_controller.py +0 -0
  257. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/moduleview.py +0 -0
  258. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/namesubscriber.py +0 -0
  259. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/omerologin.py +0 -0
  260. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/parametersampleframe.py +0 -0
  261. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/pathlist.py +0 -0
  262. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/pipeline.py +0 -0
  263. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/pipelinecontroller.py +0 -0
  264. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/pipelinelistview.py +0 -0
  265. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/plateviewer.py +0 -0
  266. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/plugins_menu.py +0 -0
  267. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/preferences_dialog/__init__.py +0 -0
  268. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/preferences_dialog/_integer_preference.py +0 -0
  269. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/preferences_dialog/_preferences_dialog.py +0 -0
  270. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/preferences_view/__init__.py +0 -0
  271. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/preferences_view/_preferences_view.py +0 -0
  272. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/preferences_view/_progress_watcher.py +0 -0
  273. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/readers_dialog/__init__.py +0 -0
  274. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/readers_dialog/_readers_dialog.py +0 -0
  275. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/regexp_editor.py +0 -0
  276. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/tools.py +0 -0
  277. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/utilities/__init__.py +0 -0
  278. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/utilities/figure.py +0 -0
  279. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/utilities/icon.py +0 -0
  280. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/utilities/module_view.py +0 -0
  281. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/utilities/preferences_dialog.py +0 -0
  282. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/utilities/preferences_view.py +0 -0
  283. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/utilities/workspace_view.py +0 -0
  284. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/workspace_view/__init__.py +0 -0
  285. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/workspace_view/_workspace_view.py +0 -0
  286. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/workspace_view/_workspace_view_figure.py +0 -0
  287. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/workspace_view/_workspace_view_image_row.py +0 -0
  288. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/workspace_view/_workspace_view_mask_row.py +0 -0
  289. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/workspace_view/_workspace_view_measurement_row.py +0 -0
  290. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/workspace_view/_workspace_view_objects_row.py +0 -0
  291. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/gui/workspace_view/_workspace_view_row.py +0 -0
  292. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/icons/__init__.py +0 -0
  293. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/knime_bridge.py +0 -0
  294. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/misc.py +0 -0
  295. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/UntangleWorms.xsd +0 -0
  296. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/__init__.py +0 -0
  297. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/_help.py +0 -0
  298. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/calculatemath.py +0 -0
  299. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/calculatestatistics.py +0 -0
  300. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/classifyobjects.py +0 -0
  301. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/closing.py +0 -0
  302. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/colortogray.py +0 -0
  303. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/combineobjects.py +0 -0
  304. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/convertimagetoobjects.py +0 -0
  305. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/convertobjectstoimage.py +0 -0
  306. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/correctilluminationapply.py +0 -0
  307. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/correctilluminationcalculate.py +0 -0
  308. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/createbatchfiles.py +0 -0
  309. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/crop.py +0 -0
  310. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/definegrid.py +0 -0
  311. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/dilateimage.py +0 -0
  312. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/dilateobjects.py +0 -0
  313. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/displaydataonimage.py +0 -0
  314. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/displaydensityplot.py +0 -0
  315. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/displayhistogram.py +0 -0
  316. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/displayplatemap.py +0 -0
  317. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/displayscatterplot.py +0 -0
  318. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/editobjectsmanually.py +0 -0
  319. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/enhanceorsuppressfeatures.py +0 -0
  320. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/erodeimage.py +0 -0
  321. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/erodeobjects.py +0 -0
  322. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/expandorshrinkobjects.py +0 -0
  323. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/exporttodatabase.py +0 -0
  324. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/exporttospreadsheet.py +0 -0
  325. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/fillobjects.py +0 -0
  326. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/filterobjects.py +0 -0
  327. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/findmaxima.py +0 -0
  328. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/flagimage.py +0 -0
  329. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/gaussianfilter.py +0 -0
  330. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/graytocolor.py +0 -0
  331. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/identifydeadworms.py +0 -0
  332. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/identifyobjectsingrid.py +0 -0
  333. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/identifyobjectsmanually.py +0 -0
  334. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/identifyprimaryobjects.py +0 -0
  335. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/identifysecondaryobjects.py +0 -0
  336. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/identifytertiaryobjects.py +0 -0
  337. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/imagemath.py +0 -0
  338. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/invertforprinting.py +0 -0
  339. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/labelimages.py +0 -0
  340. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/makeprojection.py +0 -0
  341. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/maskimage.py +0 -0
  342. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/maskobjects.py +0 -0
  343. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/matchtemplate.py +0 -0
  344. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/measureimageareaoccupied.py +0 -0
  345. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/measureimageintensity.py +0 -0
  346. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/measureimageoverlap.py +0 -0
  347. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/measureimagequality.py +0 -0
  348. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/measureimageskeleton.py +0 -0
  349. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/measureobjectintensity.py +0 -0
  350. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/measureobjectintensitydistribution.py +0 -0
  351. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/measureobjectneighbors.py +0 -0
  352. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/measureobjectoverlap.py +0 -0
  353. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/measureobjectsizeshape.py +0 -0
  354. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/measureobjectskeleton.py +0 -0
  355. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/measuretexture.py +0 -0
  356. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/medialaxis.py +0 -0
  357. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/medianfilter.py +0 -0
  358. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/morph.py +0 -0
  359. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/morphologicalskeleton.py +0 -0
  360. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/opening.py +0 -0
  361. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/overlayobjects.py +0 -0
  362. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/overlayoutlines.py +0 -0
  363. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/plugins/__init__.py +0 -0
  364. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/plugins/imagetemplate.py +0 -0
  365. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/plugins/measurementtemplate.py +0 -0
  366. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/plugins/segmentationtemplatewithdependencies.py +0 -0
  367. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/reducenoise.py +0 -0
  368. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/relateobjects.py +0 -0
  369. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/removeholes.py +0 -0
  370. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/rescaleintensity.py +0 -0
  371. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/resize.py +0 -0
  372. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/resizeobjects.py +0 -0
  373. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/runimagejmacro.py +0 -0
  374. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/savecroppedobjects.py +0 -0
  375. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/saveimages.py +0 -0
  376. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/shrinktoobjectcenters.py +0 -0
  377. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/splitormergeobjects.py +0 -0
  378. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/straightenworms.py +0 -0
  379. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/threshold.py +0 -0
  380. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/tile.py +0 -0
  381. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/trackobjects.py +0 -0
  382. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/unmixcolors.py +0 -0
  383. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/untangleworms.py +0 -0
  384. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/modules/watershed.py +0 -0
  385. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/utilities/__init__.py +0 -0
  386. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/utilities/morphology.py +0 -0
  387. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/cellprofiler/utilities/rules.py +0 -0
  388. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/environment.yml +0 -0
  389. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/pyproject.toml +0 -0
  390. {cellprofiler_nightly-5.0.0.dev466 → cellprofiler_nightly-5.0.0.dev509}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: CellProfiler-nightly
3
- Version: 5.0.0.dev466
3
+ Version: 5.0.0.dev509
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.dev466
3
+ Version: 5.0.0.dev509
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>
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '5.0.0.dev466'
32
- __version_tuple__ = version_tuple = (5, 0, 0, 'dev466')
31
+ __version__ = version = '5.0.0.dev509'
32
+ __version_tuple__ = version_tuple = (5, 0, 0, 'dev509')
33
33
 
34
- __commit_id__ = commit_id = 'ge958a4dc2'
34
+ __commit_id__ = commit_id = 'gc5c07ce88'
@@ -23,9 +23,6 @@ YES NO YES
23
23
 
24
24
  """
25
25
 
26
- import centrosome.filter
27
- import centrosome.kirsch
28
- import centrosome.otsu
29
26
  import numpy
30
27
  from cellprofiler_core.image import Image
31
28
  from cellprofiler_core.module import Module
@@ -35,21 +32,8 @@ from cellprofiler_core.setting.subscriber import ImageSubscriber
35
32
  from cellprofiler_core.setting.text import Float
36
33
  from cellprofiler_core.setting.text import ImageName
37
34
  from cellprofiler_library.modules import enhanceedges
38
-
39
- M_SOBEL = "Sobel"
40
- M_PREWITT = "Prewitt"
41
- M_ROBERTS = "Roberts"
42
- M_LOG = "LoG"
43
- M_CANNY = "Canny"
44
- M_KIRSCH = "Kirsch"
45
-
46
- O_BINARY = "Binary"
47
- O_GRAYSCALE = "Grayscale"
48
-
49
- E_ALL = "All"
50
- E_HORIZONTAL = "Horizontal"
51
- E_VERTICAL = "Vertical"
52
-
35
+ from cellprofiler_library.opts.enhanceedges import EdgeFindingMethod, EdgeDirection
36
+ from cellprofiler_library.functions.image_processing import stretched_rgb_from_components
53
37
 
54
38
  class EnhanceEdges(Module):
55
39
  module_name = "EnhanceEdges"
@@ -71,52 +55,63 @@ class EnhanceEdges(Module):
71
55
 
72
56
  self.method = Choice(
73
57
  "Select an edge-finding method",
74
- [M_SOBEL, M_PREWITT, M_ROBERTS, M_LOG, M_CANNY, M_KIRSCH],
58
+ [EdgeFindingMethod.SOBEL, EdgeFindingMethod.PREWITT, EdgeFindingMethod.ROBERTS, EdgeFindingMethod.LOG, EdgeFindingMethod.CANNY, EdgeFindingMethod.KIRSCH],
75
59
  doc="""\
76
60
  There are several methods that can be used to enhance edges. Often, it
77
61
  is best to test them against each other empirically:
78
62
 
79
- - *%(M_SOBEL)s:* Finds edges using the %(M_SOBEL)s approximation to
80
- the derivative. The %(M_SOBEL)s method derives a horizontal and
63
+ - *{M_SOBEL}:* Finds edges using the {M_SOBEL} approximation to
64
+ the derivative. The {M_SOBEL} method derives a horizontal and
81
65
  vertical gradient measure and returns the square-root of the sum of
82
66
  the two squared signals.
83
- - *%(M_PREWITT)s:* Finds edges using the %(M_PREWITT)s approximation
67
+ - *{M_PREWITT}:* Finds edges using the {M_PREWITT} approximation
84
68
  to the derivative. It returns edges at those points where the
85
69
  gradient of the image is maximum.
86
- - *%(M_ROBERTS)s:* Finds edges using the Roberts approximation to the
87
- derivative. The %(M_ROBERTS)s method looks for gradients in the
70
+ - *{M_ROBERTS}:* Finds edges using the Roberts approximation to the
71
+ derivative. The {M_ROBERTS} method looks for gradients in the
88
72
  diagonal and anti-diagonal directions and returns the square-root of
89
73
  the sum of the two squared signals. This method is fast, but it
90
74
  creates diagonal artifacts that may need to be removed by smoothing.
91
- - *%(M_LOG)s:* Applies a Laplacian of Gaussian filter to the image and
75
+ - *{M_LOG}:* Applies a Laplacian of Gaussian filter to the image and
92
76
  finds zero crossings.
93
- - *%(M_CANNY)s:* Finds edges by looking for local maxima of the
77
+ - *{M_CANNY}:* Finds edges by looking for local maxima of the
94
78
  gradient of the image. The gradient is calculated using the
95
79
  derivative of a Gaussian filter. The method uses two thresholds to
96
80
  detect strong and weak edges, and includes the weak edges in the
97
81
  output only if they are connected to strong edges. This method is
98
82
  therefore less likely than the others to be fooled by noise, and more
99
83
  likely to detect true weak edges.
100
- - *%(M_KIRSCH)s:* Finds edges by calculating the gradient among the 8
84
+ - *{M_KIRSCH}:* Finds edges by calculating the gradient among the 8
101
85
  compass points (North, North-east, etc.) and selecting the maximum as
102
86
  the pixel’s value.
103
- """
104
- % globals(),
87
+ """.format(
88
+ **{
89
+ "M_SOBEL": EdgeFindingMethod.SOBEL.value,
90
+ "M_PREWITT": EdgeFindingMethod.PREWITT.value,
91
+ "M_ROBERTS": EdgeFindingMethod.ROBERTS.value,
92
+ "M_LOG": EdgeFindingMethod.LOG.value,
93
+ "M_CANNY": EdgeFindingMethod.CANNY.value,
94
+ "M_KIRSCH": EdgeFindingMethod.KIRSCH.value,
95
+ }
96
+ ),
105
97
  )
106
98
 
107
99
  self.wants_automatic_threshold = Binary(
108
100
  "Automatically calculate the threshold?",
109
101
  True,
110
102
  doc="""\
111
- *(Used only with the "%(M_CANNY)s" option and automatic thresholding)*
103
+ *(Used only with the "{M_CANNY}" option and automatic thresholding)*
112
104
 
113
105
  Select *Yes* to automatically calculate the threshold using a
114
106
  three-category Otsu algorithm performed on the Sobel transform of the
115
107
  image.
116
108
 
117
109
  Select *No* to manually enter the threshold value.
118
- """
119
- % globals(),
110
+ """.format(
111
+ **{
112
+ "M_CANNY": EdgeFindingMethod.CANNY.value,
113
+ }
114
+ ),
120
115
  )
121
116
 
122
117
  self.manual_threshold = Float(
@@ -125,39 +120,49 @@ Select *No* to manually enter the threshold value.
125
120
  0,
126
121
  1,
127
122
  doc="""\
128
- *(Used only with the "%(M_CANNY)s" option and manual thresholding)*
123
+ *(Used only with the "{M_CANNY}" option and manual thresholding)*
129
124
 
130
125
  The upper cutoff for Canny edges. All Sobel-transformed pixels with this
131
126
  value or higher will be marked as an edge. You can enter a threshold
132
127
  between 0 and 1.
133
- """
134
- % globals(),
128
+ """.format(
129
+ **{
130
+ "M_CANNY": EdgeFindingMethod.CANNY.value,
131
+ }
132
+ ),
135
133
  )
136
134
 
137
135
  self.threshold_adjustment_factor = Float(
138
136
  "Threshold adjustment factor",
139
137
  1,
140
138
  doc="""\
141
- *(Used only with the "%(M_CANNY)s" option and automatic thresholding)*
139
+ *(Used only with the "{M_CANNY}" option and automatic thresholding)*
142
140
 
143
141
  This threshold adjustment factor is a multiplier that is applied to both
144
142
  the lower and upper Canny thresholds if they are calculated
145
143
  automatically. An adjustment factor of 1 indicates no adjustment. The
146
144
  adjustment factor has no effect on any threshold entered manually.
147
- """
148
- % globals(),
145
+ """.format(
146
+ **{
147
+ "M_CANNY": EdgeFindingMethod.CANNY.value,
148
+ }
149
+ ),
149
150
  )
150
151
 
151
152
  self.direction = Choice(
152
153
  "Select edge direction to enhance",
153
- [E_ALL, E_HORIZONTAL, E_VERTICAL],
154
+ [EdgeDirection.ALL, EdgeDirection.HORIZONTAL, EdgeDirection.VERTICAL],
154
155
  doc="""\
155
- *(Used only with "%(M_PREWITT)s" and "%(M_SOBEL)s" methods)*
156
+ *(Used only with "{M_PREWITT}" and "{M_SOBEL}" methods)*
156
157
 
157
158
  Select the direction of the edges you aim to identify in the image
158
159
  (predominantly horizontal, predominantly vertical, or both).
159
- """
160
- % globals(),
160
+ """.format(
161
+ **{
162
+ "M_PREWITT": EdgeFindingMethod.PREWITT.value,
163
+ "M_SOBEL": EdgeFindingMethod.SOBEL.value,
164
+ }
165
+ ),
161
166
  )
162
167
 
163
168
  self.wants_automatic_sigma = Binary(
@@ -179,14 +184,17 @@ Select *No* to manually enter the value.
179
184
  "Calculate value for low threshold automatically?",
180
185
  True,
181
186
  doc="""\
182
- *(Used only with the "%(M_CANNY)s" option and automatic thresholding)*
187
+ *(Used only with the "{M_CANNY}" option and automatic thresholding)*
183
188
 
184
189
  Select *Yes* to automatically calculate the low / soft threshold
185
- cutoff for the %(M_CANNY)s method.
190
+ cutoff for the {M_CANNY} method.
186
191
 
187
192
  Select *No* to manually enter the low threshold value.
188
- """
189
- % globals(),
193
+ """.format(
194
+ **{
195
+ "M_CANNY": EdgeFindingMethod.CANNY.value,
196
+ }
197
+ ),
190
198
  )
191
199
 
192
200
  self.low_threshold = Float(
@@ -195,13 +203,17 @@ Select *No* to manually enter the low threshold value.
195
203
  0,
196
204
  1,
197
205
  doc="""\
198
- *(Used only with the "%(M_CANNY)s" option and manual thresholding)*
206
+ *(Used only with the "{M_CANNY}" option and manual thresholding)*
199
207
 
200
- Enter the soft threshold cutoff for the %(M_CANNY)s method. The
201
- %(M_CANNY)s method will mark all %(M_SOBEL)s-transformed pixels with
208
+ Enter the soft threshold cutoff for the {M_CANNY} method. The
209
+ {M_CANNY} method will mark all {M_SOBEL}-transformed pixels with
202
210
  values below this threshold as not being edges.
203
- """
204
- % globals(),
211
+ """.format(
212
+ **{
213
+ "M_CANNY": EdgeFindingMethod.CANNY.value,
214
+ "M_SOBEL": EdgeFindingMethod.SOBEL.value,
215
+ }
216
+ ),
205
217
  )
206
218
 
207
219
  def settings(self):
@@ -237,13 +249,13 @@ values below this threshold as not being edges.
237
249
  def visible_settings(self):
238
250
  settings = [self.image_name, self.output_image_name]
239
251
  settings += [self.method]
240
- if self.method in (M_SOBEL, M_PREWITT):
252
+ if self.method in (EdgeFindingMethod.SOBEL, EdgeFindingMethod.PREWITT):
241
253
  settings += [self.direction]
242
- if self.method in (M_LOG, M_CANNY):
254
+ if self.method in (EdgeFindingMethod.LOG, EdgeFindingMethod.CANNY):
243
255
  settings += [self.wants_automatic_sigma]
244
256
  if not self.wants_automatic_sigma.value:
245
257
  settings += [self.sigma]
246
- if self.method == M_CANNY:
258
+ if self.method == EdgeFindingMethod.CANNY:
247
259
  settings += [self.wants_automatic_threshold]
248
260
  if not self.wants_automatic_threshold.value:
249
261
  settings += [self.manual_threshold]
@@ -287,7 +299,7 @@ values below this threshold as not being edges.
287
299
  figure.subplot_imshow_grayscale(
288
300
  0, 0, orig_pixels, "Original: %s" % self.image_name.value
289
301
  )
290
- if self.method == M_CANNY:
302
+ if self.method == EdgeFindingMethod.CANNY:
291
303
  # Canny is binary
292
304
  figure.subplot_imshow_bw(
293
305
  0,
@@ -304,18 +316,17 @@ values below this threshold as not being edges.
304
316
  self.output_image_name.value,
305
317
  sharexy=figure.subplot(0, 0),
306
318
  )
307
- color_image = numpy.zeros((output_pixels.shape[0], output_pixels.shape[1], 3))
308
- color_image[:, :, 0] = centrosome.filter.stretch(orig_pixels)
309
- color_image[:, :, 1] = centrosome.filter.stretch(output_pixels)
319
+
320
+ color_image = stretched_rgb_from_components(r=orig_pixels, g=output_pixels)
310
321
  figure.subplot_imshow(
311
322
  1, 0, color_image, "Composite image", sharexy=figure.subplot(0, 0)
312
323
  )
313
324
 
314
325
  def get_sigma(self):
315
326
  """'Automatic' sigma is only available for Cany and Log methods"""
316
- if self.wants_automatic_sigma.value and self.method == M_CANNY:
327
+ if self.wants_automatic_sigma.value and self.method == EdgeFindingMethod.CANNY:
317
328
  return 1.0
318
- elif self.wants_automatic_sigma.value and self.method == M_LOG:
329
+ elif self.wants_automatic_sigma.value and self.method == EdgeFindingMethod.LOG:
319
330
  return 2.0
320
331
  else:
321
332
  return self.sigma.value
@@ -20,6 +20,7 @@ Measurements made by this module
20
20
 
21
21
  import numpy
22
22
  import scipy.ndimage
23
+ from enum import Enum
23
24
  from cellprofiler_core.constants.measurement import IMAGE, COLTYPE_FLOAT
24
25
  from cellprofiler_core.image import Image
25
26
  from cellprofiler_core.module import Module
@@ -28,34 +29,20 @@ from cellprofiler_core.setting import Coordinates
28
29
  from cellprofiler_core.setting.choice import Choice
29
30
  from cellprofiler_core.setting.subscriber import ImageSubscriber
30
31
  from cellprofiler_core.setting.text import ImageName, Float
32
+ from cellprofiler_library.modules._flipandrotate import flip_and_rotate, flip_image, rotate_image
33
+ from cellprofiler_library.opts.flipandrotate import RotateMethod, D_ANGLE, M_ROTATION_CATEGORY, M_ROTATION_F, FLIP_ALL, ROTATE_ALL, C_ALL
31
34
 
32
- FLIP_NONE = "Do not flip"
33
- FLIP_LEFT_TO_RIGHT = "Left to right"
34
- FLIP_TOP_TO_BOTTOM = "Top to bottom"
35
- FLIP_BOTH = "Left to right and top to bottom"
36
- FLIP_ALL = [FLIP_NONE, FLIP_LEFT_TO_RIGHT, FLIP_TOP_TO_BOTTOM, FLIP_BOTH]
37
35
 
38
- ROTATE_NONE = "Do not rotate"
39
- ROTATE_ANGLE = "Enter angle"
40
- ROTATE_COORDINATES = "Enter coordinates"
41
- ROTATE_MOUSE = "Use mouse"
42
- ROTATE_ALL = [ROTATE_NONE, ROTATE_ANGLE, ROTATE_COORDINATES, ROTATE_MOUSE]
36
+ class GUIRotateMethod(str, Enum):
37
+ MOUSE = "Use mouse"
43
38
 
44
- IO_INDIVIDUALLY = "Individually"
45
- IO_ONCE = "Only Once"
46
- IO_ALL = [IO_INDIVIDUALLY, IO_ONCE]
39
+ GUI_ROTATE_ALL = ROTATE_ALL + [GUIRotateMethod.MOUSE]
47
40
 
48
- C_HORIZONTALLY = "horizontally"
49
- C_VERTICALLY = "vertically"
50
- C_ALL = [C_HORIZONTALLY, C_VERTICALLY]
51
-
52
- D_ANGLE = "angle"
53
-
54
- """Rotation measurement category"""
55
- M_ROTATION_CATEGORY = "Rotation"
56
- """Rotation measurement format (+ image name)"""
57
- M_ROTATION_F = "%s_%%s" % M_ROTATION_CATEGORY
41
+ class RotationCycle(str, Enum):
42
+ INDIVIDUALLY = "Individually"
43
+ ONCE = "Only Once"
58
44
 
45
+ IO_ALL = [RotationCycle.INDIVIDUALLY, RotationCycle.ONCE]
59
46
 
60
47
  class FlipAndRotate(Module):
61
48
  category = "Image Processing"
@@ -84,22 +71,28 @@ Select how the image is to be flipped.""",
84
71
 
85
72
  self.rotate_choice = Choice(
86
73
  "Select method to rotate image",
87
- ROTATE_ALL,
74
+ GUI_ROTATE_ALL,
88
75
  doc="""\
89
- - *%(ROTATE_NONE)s:* Leave the image unrotated. This should be used if
76
+ - *{ROTATE_NONE}:* Leave the image unrotated. This should be used if
90
77
  you want to flip the image only.
91
- - *%(ROTATE_ANGLE)s:* Provide the numerical angle by which the image
78
+ - *{ROTATE_ANGLE}:* Provide the numerical angle by which the image
92
79
  should be rotated.
93
- - *%(ROTATE_COORDINATES)s:* Provide the X,Y pixel locations of two
80
+ - *{ROTATE_COORDINATES}:* Provide the X,Y pixel locations of two
94
81
  points in the image that should be aligned horizontally or
95
82
  vertically.
96
- - *%(ROTATE_MOUSE)s:* CellProfiler will pause so you can select the
83
+ - *{ROTATE_MOUSE}:* CellProfiler will pause so you can select the
97
84
  rotation interactively. When prompted during the analysis run, grab
98
85
  the image by clicking the left mouse button, rotate the image by
99
86
  dragging with the mouse, then release the mouse button. Press the
100
87
  *Done* button on the image after rotating the image appropriately.
101
- """
102
- % globals(),
88
+ """.format(
89
+ **{
90
+ "ROTATE_NONE": RotateMethod.NONE.value,
91
+ "ROTATE_ANGLE": RotateMethod.ANGLE.value,
92
+ "ROTATE_COORDINATES": RotateMethod.COORDINATES.value,
93
+ "ROTATE_MOUSE": GUIRotateMethod.MOUSE.value,
94
+ }
95
+ ),
103
96
  )
104
97
 
105
98
  self.wants_crop = Binary(
@@ -122,14 +115,19 @@ the original, which may affect downstream modules.
122
115
  "Calculate rotation",
123
116
  IO_ALL,
124
117
  doc="""\
125
- *(Used only when using “%(ROTATE_MOUSE)s” to rotate images)*
118
+ *(Used only when using “{ROTATE_MOUSE}” to rotate images)*
126
119
 
127
120
  Select the cycle(s) at which the calculation is requested and
128
121
  calculated.
129
- - *%(IO_INDIVIDUALLY)s:* Determine the amount of rotation for each image individually, e.g., for each cycle.
130
- - *%(IO_ONCE)s:* Define the rotation only once (on the first image), then apply it to all images.
131
- """
132
- % globals(),
122
+ - *{IO_INDIVIDUALLY}:* Determine the amount of rotation for each image individually, e.g., for each cycle.
123
+ - *{IO_ONCE}:* Define the rotation only once (on the first image), then apply it to all images.
124
+ """.format(
125
+ **{
126
+ "ROTATE_MOUSE": GUIRotateMethod.MOUSE.value,
127
+ "IO_INDIVIDUALLY": RotationCycle.INDIVIDUALLY.value,
128
+ "IO_ONCE": RotationCycle.ONCE.value,
129
+ }
130
+ ),
133
131
  )
134
132
 
135
133
  self.first_pixel = Coordinates(
@@ -142,7 +140,7 @@ After rotation, if the specified points are aligned horizontally, this point on
142
140
  left of the other point. If the specified points are aligned vertically, this point of the image will be positioned
143
141
  above the other point.
144
142
  """.format(
145
- **{"ROTATE_COORDINATES": ROTATE_COORDINATES}
143
+ **{"ROTATE_COORDINATES": RotateMethod.COORDINATES.value}
146
144
  ),
147
145
  )
148
146
 
@@ -156,7 +154,7 @@ After rotation, if the specified points are aligned horizontally, this point on
156
154
  right of the other point. If the specified points are aligned vertically, this point of the image will be positioned
157
155
  below the other point.
158
156
  """.format(
159
- **{"ROTATE_COORDINATES": ROTATE_COORDINATES}
157
+ **{"ROTATE_COORDINATES": RotateMethod.COORDINATES.value}
160
158
  ),
161
159
  )
162
160
 
@@ -164,23 +162,25 @@ below the other point.
164
162
  "Select how the specified points should be aligned",
165
163
  C_ALL,
166
164
  doc="""\
167
- *(Used only when using “%(ROTATE_COORDINATES)s” to rotate images)*
165
+ *(Used only when using “{ROTATE_COORDINATES}” to rotate images)*
168
166
 
169
167
  Specify whether you would like the coordinate points that you entered to
170
- be horizontally or vertically aligned after the rotation is complete."""
171
- % globals(),
168
+ be horizontally or vertically aligned after the rotation is complete.""".format(
169
+ **{"ROTATE_COORDINATES": RotateMethod.COORDINATES.value}
170
+ ),
172
171
  )
173
172
 
174
173
  self.angle = Float(
175
174
  "Enter angle of rotation",
176
175
  0,
177
176
  doc="""\
178
- *(Used only when using “%(ROTATE_ANGLE)s” to rotate images)*
177
+ *(Used only when using “{ROTATE_ANGLE}” to rotate images)*
179
178
 
180
179
  Enter the angle you would like to rotate the image. This setting is in
181
180
  degrees, with positive angles corresponding to counterclockwise and
182
- negative as clockwise."""
183
- % globals(),
181
+ negative as clockwise.""".format(
182
+ **{"ROTATE_ANGLE": RotateMethod.ANGLE.value}
183
+ ),
184
184
  )
185
185
 
186
186
  def settings(self):
@@ -204,18 +204,18 @@ negative as clockwise."""
204
204
  self.flip_choice,
205
205
  self.rotate_choice,
206
206
  ]
207
- if self.rotate_choice == ROTATE_NONE:
207
+ if self.rotate_choice == RotateMethod.NONE:
208
208
  pass
209
- elif self.rotate_choice == ROTATE_ANGLE:
209
+ elif self.rotate_choice == RotateMethod.ANGLE:
210
210
  result += [self.wants_crop, self.angle]
211
- elif self.rotate_choice == ROTATE_COORDINATES:
211
+ elif self.rotate_choice == RotateMethod.COORDINATES:
212
212
  result += [
213
213
  self.wants_crop,
214
214
  self.first_pixel,
215
215
  self.second_pixel,
216
216
  self.horiz_or_vert,
217
217
  ]
218
- elif self.rotate_choice == ROTATE_MOUSE:
218
+ elif self.rotate_choice == GUIRotateMethod.MOUSE:
219
219
  result += [self.wants_crop, self.how_often]
220
220
  else:
221
221
  raise NotImplementedError(
@@ -225,7 +225,7 @@ negative as clockwise."""
225
225
 
226
226
  def prepare_group(self, workspace, grouping, image_numbers):
227
227
  """Initialize the angle if appropriate"""
228
- if self.rotate_choice == ROTATE_MOUSE and self.how_often == IO_ONCE:
228
+ if self.rotate_choice == GUIRotateMethod.MOUSE and self.how_often == RotationCycle.ONCE:
229
229
  self.get_dictionary(workspace.image_set_list)[D_ANGLE] = None
230
230
 
231
231
  def run(self, workspace):
@@ -234,115 +234,53 @@ negative as clockwise."""
234
234
  pixel_data = image.pixel_data.copy()
235
235
  mask = image.mask
236
236
 
237
- if self.flip_choice != FLIP_NONE:
238
- if self.flip_choice == FLIP_LEFT_TO_RIGHT:
239
- i, j = numpy.mgrid[
240
- 0 : pixel_data.shape[0], pixel_data.shape[1] - 1 : -1 : -1
241
- ]
242
- elif self.flip_choice == FLIP_TOP_TO_BOTTOM:
243
- i, j = numpy.mgrid[
244
- pixel_data.shape[0] - 1 : -1 : -1, 0 : pixel_data.shape[1]
245
- ]
246
- elif self.flip_choice == FLIP_BOTH:
247
- i, j = numpy.mgrid[
248
- pixel_data.shape[0] - 1 : -1 : -1, pixel_data.shape[1] - 1 : -1 : -1
249
- ]
250
- else:
251
- raise NotImplementedError(
252
- "Unknown flipping operation: %s" % self.flip_choice.value
253
- )
254
- mask = mask[i, j]
255
- if pixel_data.ndim == 2:
256
- pixel_data = pixel_data[i, j]
257
- else:
258
- pixel_data = pixel_data[i, j, :]
259
-
260
- if self.rotate_choice != ROTATE_NONE:
261
- if self.rotate_choice == ROTATE_ANGLE:
262
- angle = self.angle.value
263
- elif self.rotate_choice == ROTATE_COORDINATES:
264
- xdiff = self.second_pixel.x - self.first_pixel.x
265
- ydiff = self.second_pixel.y - self.first_pixel.y
266
- if self.horiz_or_vert == C_VERTICALLY:
267
- angle = -numpy.arctan2(ydiff, xdiff) * 180.0 / numpy.pi
268
- elif self.horiz_or_vert == C_HORIZONTALLY:
269
- angle = numpy.arctan2(xdiff, ydiff) * 180.0 / numpy.pi
270
- else:
271
- raise NotImplementedError(
272
- "Unknown axis: %s" % self.horiz_or_vert.value
273
- )
274
- elif self.rotate_choice == ROTATE_MOUSE:
275
- d = self.get_dictionary()
276
- if (
277
- self.how_often == IO_ONCE
278
- and D_ANGLE in d
279
- and d[D_ANGLE] is not None
280
- ):
281
- angle = d[D_ANGLE]
282
- else:
283
- angle = workspace.interaction_request(
284
- self, pixel_data, workspace.measurements.image_set_number
285
- )
286
- if self.how_often == IO_ONCE:
287
- d[D_ANGLE] = angle
237
+
238
+ ######
239
+ rotate_angle = self.angle.value
240
+ state_dict_for_mouse_mode = self.get_dictionary()
241
+ mouse_mode_cycle = self.how_often.value
242
+
243
+ if self.rotate_choice == GUIRotateMethod.MOUSE:
244
+ # perform flip and rotate separately
245
+ pixel_data, mask = flip_image(pixel_data, mask, self.flip_choice.value)
246
+ # state_dict_for_mouse_mode = self.get_dictionary()
247
+ assert state_dict_for_mouse_mode is not None, "state_dict_for_mouse_mode must be provided for rotate_choice == GUIRotateMethod.MOUSE"
248
+ assert mouse_mode_cycle is not None, "mouse_mode_cycle must be provided for rotate_choice == GUIRotateMethod.MOUSE"
249
+ if (
250
+ mouse_mode_cycle == RotationCycle.ONCE
251
+ and D_ANGLE in state_dict_for_mouse_mode
252
+ and state_dict_for_mouse_mode[D_ANGLE] is not None
253
+ ):
254
+ angle = state_dict_for_mouse_mode[D_ANGLE]
288
255
  else:
289
- raise NotImplementedError(
290
- "Unknown rotation method: %s" % self.rotate_choice.value
291
- )
292
- rangle = angle * numpy.pi / 180.0
293
- mask = scipy.ndimage.rotate(mask.astype(float), angle, reshape=True) > 0.50
294
- crop = (
295
- scipy.ndimage.rotate(
296
- numpy.ones(pixel_data.shape[:2]), angle, reshape=True
297
- )
298
- > 0.50
256
+ angle = workspace.interaction_request(
257
+ self, pixel_data, workspace.measurements.image_set_number
299
258
  )
300
- mask = mask & crop
301
- pixel_data = scipy.ndimage.rotate(pixel_data, angle, reshape=True)
302
- if self.wants_crop.value:
303
- #
304
- # We want to find the largest rectangle that fits inside
305
- # the crop. The cumulative sum in the i and j direction gives
306
- # the length of the rectangle in each direction and
307
- # multiplying them gives you the area.
308
- #
309
- # The left and right halves are symmetric, so we compute
310
- # on just two of the quadrants.
311
- #
312
- half = (numpy.array(crop.shape) / 2).astype(int)
313
- #
314
- # Operate on the lower right
315
- #
316
- quartercrop = crop[half[0] :, half[1] :]
317
- ci = numpy.cumsum(quartercrop, 0)
318
- cj = numpy.cumsum(quartercrop, 1)
319
- carea_d = ci * cj
320
- carea_d[quartercrop == 0] = 0
321
- #
322
- # Operate on the upper right by flipping I
323
- #
324
- quartercrop = crop[crop.shape[0] - half[0] - 1 :: -1, half[1] :]
325
- ci = numpy.cumsum(quartercrop, 0)
326
- cj = numpy.cumsum(quartercrop, 1)
327
- carea_u = ci * cj
328
- carea_u[quartercrop == 0] = 0
329
- carea = carea_d + carea_u
330
- max_carea = numpy.max(carea)
331
- max_area = numpy.argwhere(carea == max_carea)[0] + half
332
- min_i = max(crop.shape[0] - max_area[0] - 1, 0)
333
- max_i = max_area[0] + 1
334
- min_j = max(crop.shape[1] - max_area[1] - 1, 0)
335
- max_j = max_area[1] + 1
336
- ii = numpy.index_exp[min_i:max_i, min_j:max_j]
337
- crop = numpy.zeros(pixel_data.shape, bool)
338
- crop[ii] = True
339
- mask = mask[ii]
340
- pixel_data = pixel_data[ii]
341
- else:
342
- crop = None
259
+ if mouse_mode_cycle == RotationCycle.ONCE:
260
+ state_dict_for_mouse_mode[D_ANGLE] = angle
261
+ pixel_data, mask, crop, angle = rotate_image(
262
+ pixel_data,
263
+ mask,
264
+ RotateMethod.ANGLE,
265
+ angle,
266
+ None,
267
+ None,
268
+ None,
269
+ wants_crop=self.wants_crop.value,
270
+ )
271
+
343
272
  else:
344
- crop = None
345
- angle = 0
273
+ pixel_data, mask, crop, angle = flip_and_rotate(
274
+ pixel_data,
275
+ mask,
276
+ self.flip_choice.value,
277
+ self.rotate_choice.value,
278
+ rotate_angle,
279
+ (self.first_pixel.x, self.first_pixel.y),
280
+ (self.second_pixel.x, self.second_pixel.y),
281
+ self.horiz_or_vert,
282
+ wants_crop=self.wants_crop.value,
283
+ )
346
284
  output_image = Image(pixel_data, mask, crop, image)
347
285
  image_set.add(self.output_name.value, output_image)
348
286
  workspace.measurements.add_image_measurement(
@@ -567,13 +505,13 @@ negative as clockwise."""
567
505
  if variable_revision_number == 1:
568
506
  # Text for ROTATE_MOUSE changed from "mouse" to "Use mouse"
569
507
  if setting_values[3] == "Mouse":
570
- setting_values[3] = ROTATE_MOUSE
508
+ setting_values[3] = GUIRotateMethod.MOUSE
571
509
  elif setting_values[3] == "None":
572
- setting_values[3] = ROTATE_NONE
510
+ setting_values[3] = RotateMethod.NONE
573
511
  elif setting_values[3] == "Coordinates":
574
- setting_values[3] = ROTATE_COORDINATES
512
+ setting_values[3] = RotateMethod.COORDINATES
575
513
  elif setting_values[3] == "Angle":
576
- setting_values[3] = ROTATE_ANGLE
514
+ setting_values[3] = RotateMethod.ANGLE
577
515
  variable_revision_number = 2
578
516
  return setting_values, variable_revision_number
579
517