CellProfiler-nightly 5.0.0.dev674__tar.gz → 5.0.0.dev686__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.dev674 → cellprofiler_nightly-5.0.0.dev686}/CellProfiler_nightly.egg-info/PKG-INFO +1 -1
  2. cellprofiler_nightly-5.0.0.dev686/CellProfiler_nightly.egg-info/scm_version.json +8 -0
  3. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/PKG-INFO +1 -1
  4. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/_version.py +3 -3
  5. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/pipelinecontroller.py +56 -0
  6. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/makeprojection.py +81 -245
  7. cellprofiler_nightly-5.0.0.dev674/CellProfiler_nightly.egg-info/scm_version.json +0 -8
  8. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/CellProfiler_nightly.egg-info/SOURCES.txt +0 -0
  9. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/CellProfiler_nightly.egg-info/dependency_links.txt +0 -0
  10. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/CellProfiler_nightly.egg-info/entry_points.txt +0 -0
  11. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/CellProfiler_nightly.egg-info/requires.txt +0 -0
  12. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/CellProfiler_nightly.egg-info/scm_file_list.json +0 -0
  13. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/CellProfiler_nightly.egg-info/top_level.txt +0 -0
  14. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/LICENSE +0 -0
  15. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/README.md +0 -0
  16. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/__init__.py +0 -0
  17. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/__main__.py +0 -0
  18. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/examples/ExampleFly/ExampleFly.cppipe +0 -0
  19. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/examples/ExampleFly/images/01_POS002_D.TIF +0 -0
  20. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/examples/ExampleFly/images/01_POS002_F.TIF +0 -0
  21. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/examples/ExampleFly/images/01_POS002_R.TIF +0 -0
  22. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/examples/ExampleFly/images/01_POS076_D.TIF +0 -0
  23. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/examples/ExampleFly/images/01_POS076_F.TIF +0 -0
  24. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/examples/ExampleFly/images/01_POS076_R.TIF +0 -0
  25. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/examples/ExampleFly/images/01_POS218_D.TIF +0 -0
  26. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/examples/ExampleFly/images/01_POS218_F.TIF +0 -0
  27. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/examples/ExampleFly/images/01_POS218_R.TIF +0 -0
  28. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/help/display_image_tools.rst +0 -0
  29. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/help/display_interactive_navigation.rst +0 -0
  30. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/help/display_menu_bar.rst +0 -0
  31. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/help/legacy_matlab_image.rst +0 -0
  32. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/help/navigation_edit_menu.rst +0 -0
  33. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/help/navigation_file_menu.rst +0 -0
  34. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/help/navigation_test_menu.rst +0 -0
  35. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/help/navigation_window_menu.rst +0 -0
  36. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/help/other_3d_identify.rst +0 -0
  37. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/help/other_batch.rst +0 -0
  38. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/help/other_logging.rst +0 -0
  39. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/help/other_omero.rst +0 -0
  40. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/help/other_plugins.rst +0 -0
  41. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/help/other_shell.rst +0 -0
  42. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/help/other_troubleshooting.rst +0 -0
  43. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/help/other_widget_inspector.rst +0 -0
  44. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/help/output_measurements.rst +0 -0
  45. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/help/output_plateviewer.rst +0 -0
  46. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/help/output_spreadsheets.rst +0 -0
  47. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/help/pipelines_building.rst +0 -0
  48. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/help/pipelines_running.rst +0 -0
  49. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/help/projects_configure_images.rst +0 -0
  50. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/help/projects_image_ordering.rst +0 -0
  51. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/help/projects_image_sequences.rst +0 -0
  52. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/help/projects_introduction.rst +0 -0
  53. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/help/projects_selecting_images.rst +0 -0
  54. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/help/why_use_cellprofiler.rst +0 -0
  55. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/icons/CellProfiler-favicon-120.png +0 -0
  56. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/icons/CellProfiler-favicon-128.png +0 -0
  57. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/icons/CellProfiler-favicon-144.png +0 -0
  58. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/icons/CellProfiler-favicon-152.png +0 -0
  59. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/icons/CellProfiler-favicon-195.png +0 -0
  60. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/icons/CellProfiler-favicon-228.png +0 -0
  61. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/icons/CellProfiler-favicon-32.png +0 -0
  62. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/icons/CellProfiler-favicon-57.png +0 -0
  63. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/icons/CellProfiler-favicon-72.png +0 -0
  64. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/icons/CellProfiler-favicon-96.png +0 -0
  65. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/icons/CellProfiler-favicon.ico +0 -0
  66. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/icons/CellProfiler.ai +0 -0
  67. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/icons/CellProfiler.icns +0 -0
  68. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/icons/CellProfiler.ico +0 -0
  69. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/icons/CellProfiler.png +0 -0
  70. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/icons/CellProfiler.svg +0 -0
  71. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/icons/CellProfiler_square.svg +0 -0
  72. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/Align.png +0 -0
  73. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/ApplyThreshold.png +0 -0
  74. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/CollapseTree.png +0 -0
  75. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/ColorToGray.png +0 -0
  76. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/CorrectIlluminationApply.png +0 -0
  77. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/CorrectIlluminationCalculate.png +0 -0
  78. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/Crop.png +0 -0
  79. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/ExpandOrShrinkObjects.png +0 -0
  80. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/ExpandTree.png +0 -0
  81. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/GrayToColor.png +0 -0
  82. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/Groups_ExampleDisplayTable.png +0 -0
  83. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/IMG_ANALYZED.png +0 -0
  84. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/IMG_ANALYZE_16.png +0 -0
  85. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/IMG_ANALYZE_24.png +0 -0
  86. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/IMG_CLOSED_EYE.png +0 -0
  87. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/IMG_DISABLED.png +0 -0
  88. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/IMG_ERROR.png +0 -0
  89. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/IMG_EYE.png +0 -0
  90. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/IMG_GO.png +0 -0
  91. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/IMG_GO_DIM.png +0 -0
  92. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/IMG_IMAGE.png +0 -0
  93. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/IMG_MEASURE.png +0 -0
  94. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/IMG_OK.png +0 -0
  95. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/IMG_PAUSE.png +0 -0
  96. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/IMG_RUN.png +0 -0
  97. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/IMG_SLIDER.png +0 -0
  98. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/IMG_SLIDER_ACTIVE.png +0 -0
  99. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/IMG_STOP.png +0 -0
  100. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/IMG_TEST.png +0 -0
  101. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/IMG_UNAVAILABLE.png +0 -0
  102. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/IMG_UPDATE.png +0 -0
  103. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/IMG_USE_INPUT.png +0 -0
  104. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/IMG_USE_OUTPUT.png +0 -0
  105. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/IMG_USE_SOURCE.png +0 -0
  106. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/IMG_WARN.png +0 -0
  107. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/IdentifyPrimaryObjects_IntensityDeclumping.png +0 -0
  108. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/IdentifyPrimaryObjects_ShapeDeclumping.png +0 -0
  109. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/IdentifySecondaryObjects.png +0 -0
  110. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/IdentifyTertiaryObjects.png +0 -0
  111. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/Images_FilelistPanel.png +0 -0
  112. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/Images_FilelistPanel_Blank.png +0 -0
  113. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/Images_FilelistPanel_Filled.png +0 -0
  114. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/Images_UsingRules.png +0 -0
  115. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/MeasureGranularity_example.png +0 -0
  116. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/MeasureImageAreaOccupied.png +0 -0
  117. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/MeasureObjectIntensityDistribution_Edges_Centers.png +0 -0
  118. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/MeasureObjectIntensityDistribution_Magnitude_Phase.png +0 -0
  119. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/MeasureObjectSizeShape_Eccentricity.png +0 -0
  120. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/MeasureTexture.png +0 -0
  121. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/Measure_texture_3D_correspondences_1.png +0 -0
  122. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/Measure_texture_3D_correspondences_1_highres.png +0 -0
  123. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/Measure_texture_3D_correspondences_2.png +0 -0
  124. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/Measure_texture_3D_correspondences_2_highres.png +0 -0
  125. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/Metadata_ExampleDisplayTable.png +0 -0
  126. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/NamesAndTypes_ExampleDisplayTable.png +0 -0
  127. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/Tile.png +0 -0
  128. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/UnmixColors.png +0 -0
  129. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/check.png +0 -0
  130. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/color.png +0 -0
  131. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/cp_panel_schematic.png +0 -0
  132. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/dapi.png +0 -0
  133. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/delete.png +0 -0
  134. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/downarrow.png +0 -0
  135. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/eye-close.png +0 -0
  136. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/eye-open.png +0 -0
  137. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/ffwd.png +0 -0
  138. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/ffwddisabled.png +0 -0
  139. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/filter.png +0 -0
  140. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/folder_browse.png +0 -0
  141. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/folder_create.png +0 -0
  142. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/gear.png +0 -0
  143. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/gfp.png +0 -0
  144. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/icon_copyrights.txt +0 -0
  145. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/illumination_function.png +0 -0
  146. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/image_to_object_dataflow.png +0 -0
  147. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/image_to_object_dataflow.psd +0 -0
  148. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/mask.png +0 -0
  149. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/microscope-color_16.png +0 -0
  150. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/microscope-icon_16.png +0 -0
  151. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/microscope-icon_32.png +0 -0
  152. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/microscopes_16.png +0 -0
  153. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/module_add.png +0 -0
  154. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/module_help.png +0 -0
  155. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/module_movedown.png +0 -0
  156. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/module_moveup.png +0 -0
  157. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/module_remove.png +0 -0
  158. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/monochrome.png +0 -0
  159. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/movie_16.png +0 -0
  160. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/next.png +0 -0
  161. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/objects.png +0 -0
  162. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/pause.png +0 -0
  163. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/pausedisabled.png +0 -0
  164. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/play.png +0 -0
  165. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/playdisabled.png +0 -0
  166. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/previous.png +0 -0
  167. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/remove-sign.png +0 -0
  168. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/rewind.png +0 -0
  169. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/rewinddisabled.png +0 -0
  170. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/splash-black-text-alpha.png +0 -0
  171. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/splash-white-text-alpha.png +0 -0
  172. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/splash.png +0 -0
  173. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/status_pause.png +0 -0
  174. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/status_save.png +0 -0
  175. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/status_stop.png +0 -0
  176. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/stop.png +0 -0
  177. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/stopdisabled.png +0 -0
  178. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/structuringelement.png +0 -0
  179. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/thumb-down.png +0 -0
  180. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/thumb-up.png +0 -0
  181. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/unchecked.png +0 -0
  182. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/wantpony.wav +0 -0
  183. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/welcome_examples.png +0 -0
  184. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/welcome_forum.png +0 -0
  185. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/welcome_help.png +0 -0
  186. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/welcome_manual.png +0 -0
  187. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/welcome_new.png +0 -0
  188. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/welcome_pipeline.png +0 -0
  189. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/welcome_screen_help.png +0 -0
  190. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/welcome_start.png +0 -0
  191. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/welcome_tutorial.png +0 -0
  192. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/welcomescreen_forum.png +0 -0
  193. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/welcomescreen_manual.png +0 -0
  194. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/welcomescreen_tutorials.png +0 -0
  195. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/window_back.png +0 -0
  196. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/window_filesave.png +0 -0
  197. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/window_forward.png +0 -0
  198. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/window_home.png +0 -0
  199. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/window_pan.png +0 -0
  200. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/data/images/window_zoom_to_rect.png +0 -0
  201. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/__init__.py +0 -0
  202. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/_tree_checkbox_dialog.py +0 -0
  203. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/_welcome_frame.py +0 -0
  204. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/_workspace_model.py +0 -0
  205. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/addmoduleframe.py +0 -0
  206. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/app.py +0 -0
  207. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/artist.py +0 -0
  208. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/checkupdate.py +0 -0
  209. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/constants/__init__.py +0 -0
  210. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/constants/figure.py +0 -0
  211. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/constants/module_view.py +0 -0
  212. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/constants/preferences_dialog.py +0 -0
  213. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/constants/preferences_view.py +0 -0
  214. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/constants/workspace_view.py +0 -0
  215. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/cpframe.py +0 -0
  216. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/dialog.py +0 -0
  217. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/editobjectsdlg.py +0 -0
  218. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/errordialog.py +0 -0
  219. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/figure/__init__.py +0 -0
  220. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/figure/_figure.py +0 -0
  221. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/figure/_navigation_toolbar.py +0 -0
  222. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/figure/_outline_artist.py +0 -0
  223. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/gridrenderers.py +0 -0
  224. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/help/__init__.py +0 -0
  225. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/help/content.py +0 -0
  226. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/help/menu.py +0 -0
  227. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/help/search.py +0 -0
  228. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/html/__init__.py +0 -0
  229. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/html/configure_images_help.html +0 -0
  230. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/html/exporting_results_help.html +0 -0
  231. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/html/getting_started.html +0 -0
  232. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/html/htmlwindow.py +0 -0
  233. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/html/identify_features_help.html +0 -0
  234. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/html/in_app_help.html +0 -0
  235. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/html/making_measurements_help.html +0 -0
  236. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/html/running_pipeline_help.html +0 -0
  237. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/html/selecting_images_help.html +0 -0
  238. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/html/test_mode_help.html +0 -0
  239. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/html/utils.py +0 -0
  240. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/html/welcome.html +0 -0
  241. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/htmldialog.py +0 -0
  242. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/imagesetctrl.py +0 -0
  243. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/menu.py +0 -0
  244. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/metadatactrl.py +0 -0
  245. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/module_view/__init__.py +0 -0
  246. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/module_view/_binary_matrix_controller.py +0 -0
  247. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/module_view/_data_type_controller.py +0 -0
  248. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/module_view/_file_collection_display_controller.py +0 -0
  249. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/module_view/_filter_panel_controller.py +0 -0
  250. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/module_view/_joiner_controller.py +0 -0
  251. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/module_view/_module_sizer.py +0 -0
  252. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/module_view/_module_view.py +0 -0
  253. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/module_view/_setting_edited_event.py +0 -0
  254. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/module_view/_table_controller.py +0 -0
  255. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/module_view/_validation_request_controller.py +0 -0
  256. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/moduleview.py +0 -0
  257. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/namesubscriber.py +0 -0
  258. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/omerologin.py +0 -0
  259. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/parametersampleframe.py +0 -0
  260. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/pathlist.py +0 -0
  261. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/pipeline.py +0 -0
  262. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/pipelinelistview.py +0 -0
  263. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/plateviewer.py +0 -0
  264. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/plugins_menu.py +0 -0
  265. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/preferences_dialog/__init__.py +0 -0
  266. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/preferences_dialog/_integer_preference.py +0 -0
  267. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/preferences_dialog/_preferences_dialog.py +0 -0
  268. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/preferences_view/__init__.py +0 -0
  269. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/preferences_view/_preferences_view.py +0 -0
  270. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/preferences_view/_progress_watcher.py +0 -0
  271. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/readers_dialog/__init__.py +0 -0
  272. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/readers_dialog/_readers_dialog.py +0 -0
  273. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/regexp_editor.py +0 -0
  274. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/tools.py +0 -0
  275. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/utilities/__init__.py +0 -0
  276. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/utilities/figure.py +0 -0
  277. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/utilities/icon.py +0 -0
  278. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/utilities/module_view.py +0 -0
  279. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/utilities/preferences_dialog.py +0 -0
  280. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/utilities/preferences_view.py +0 -0
  281. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/utilities/workspace_view.py +0 -0
  282. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/workspace_view/__init__.py +0 -0
  283. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/workspace_view/_workspace_view.py +0 -0
  284. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/workspace_view/_workspace_view_figure.py +0 -0
  285. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/workspace_view/_workspace_view_image_row.py +0 -0
  286. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/workspace_view/_workspace_view_mask_row.py +0 -0
  287. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/workspace_view/_workspace_view_measurement_row.py +0 -0
  288. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/workspace_view/_workspace_view_objects_row.py +0 -0
  289. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/gui/workspace_view/_workspace_view_row.py +0 -0
  290. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/icons/__init__.py +0 -0
  291. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/knime_bridge.py +0 -0
  292. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/misc.py +0 -0
  293. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/UntangleWorms.xsd +0 -0
  294. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/__init__.py +0 -0
  295. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/_help.py +0 -0
  296. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/calculatemath.py +0 -0
  297. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/calculatestatistics.py +0 -0
  298. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/classifyobjects.py +0 -0
  299. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/closing.py +0 -0
  300. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/colortogray.py +0 -0
  301. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/combineobjects.py +0 -0
  302. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/convertimagetoobjects.py +0 -0
  303. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/convertobjectstoimage.py +0 -0
  304. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/correctilluminationapply.py +0 -0
  305. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/correctilluminationcalculate.py +0 -0
  306. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/createbatchfiles.py +0 -0
  307. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/crop.py +0 -0
  308. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/definegrid.py +0 -0
  309. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/dilateimage.py +0 -0
  310. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/dilateobjects.py +0 -0
  311. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/displaydataonimage.py +0 -0
  312. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/displaydensityplot.py +0 -0
  313. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/displayhistogram.py +0 -0
  314. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/displayplatemap.py +0 -0
  315. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/displayscatterplot.py +0 -0
  316. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/editobjectsmanually.py +0 -0
  317. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/enhanceedges.py +0 -0
  318. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/enhanceorsuppressfeatures.py +0 -0
  319. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/erodeimage.py +0 -0
  320. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/erodeobjects.py +0 -0
  321. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/expandorshrinkobjects.py +0 -0
  322. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/exporttodatabase.py +0 -0
  323. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/exporttospreadsheet.py +0 -0
  324. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/fillobjects.py +0 -0
  325. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/filterobjects.py +0 -0
  326. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/findmaxima.py +0 -0
  327. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/flagimage.py +0 -0
  328. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/flipandrotate.py +0 -0
  329. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/gaussianfilter.py +0 -0
  330. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/graytocolor.py +0 -0
  331. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/identifydeadworms.py +0 -0
  332. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/identifyobjectsingrid.py +0 -0
  333. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/identifyobjectsmanually.py +0 -0
  334. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/identifyprimaryobjects.py +0 -0
  335. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/identifysecondaryobjects.py +0 -0
  336. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/identifytertiaryobjects.py +0 -0
  337. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/imagemath.py +0 -0
  338. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/invertforprinting.py +0 -0
  339. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/labelimages.py +0 -0
  340. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/maskimage.py +0 -0
  341. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/maskobjects.py +0 -0
  342. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/matchtemplate.py +0 -0
  343. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/measurecolocalization.py +0 -0
  344. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/measuregranularity.py +0 -0
  345. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/measureimageareaoccupied.py +0 -0
  346. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/measureimageintensity.py +0 -0
  347. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/measureimageoverlap.py +0 -0
  348. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/measureimagequality.py +0 -0
  349. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/measureimageskeleton.py +0 -0
  350. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/measureobjectintensity.py +0 -0
  351. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/measureobjectintensitydistribution.py +0 -0
  352. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/measureobjectneighbors.py +0 -0
  353. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/measureobjectoverlap.py +0 -0
  354. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/measureobjectsizeshape.py +0 -0
  355. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/measureobjectskeleton.py +0 -0
  356. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/measuretexture.py +0 -0
  357. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/medialaxis.py +0 -0
  358. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/medianfilter.py +0 -0
  359. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/morph.py +0 -0
  360. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/morphologicalskeleton.py +0 -0
  361. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/opening.py +0 -0
  362. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/overlayobjects.py +0 -0
  363. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/overlayoutlines.py +0 -0
  364. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/plugins/__init__.py +0 -0
  365. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/plugins/imagetemplate.py +0 -0
  366. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/plugins/measurementtemplate.py +0 -0
  367. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/plugins/segmentationtemplatewithdependencies.py +0 -0
  368. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/reducenoise.py +0 -0
  369. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/relateobjects.py +0 -0
  370. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/removeholes.py +0 -0
  371. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/rescaleintensity.py +0 -0
  372. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/resize.py +0 -0
  373. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/resizeobjects.py +0 -0
  374. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/runimagejmacro.py +0 -0
  375. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/savecroppedobjects.py +0 -0
  376. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/saveimages.py +0 -0
  377. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/shrinktoobjectcenters.py +0 -0
  378. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/smooth.py +0 -0
  379. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/splitormergeobjects.py +0 -0
  380. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/straightenworms.py +0 -0
  381. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/threshold.py +0 -0
  382. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/tile.py +0 -0
  383. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/trackobjects.py +0 -0
  384. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/unmixcolors.py +0 -0
  385. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/untangleworms.py +0 -0
  386. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/modules/watershed.py +0 -0
  387. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/utilities/__init__.py +0 -0
  388. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/utilities/morphology.py +0 -0
  389. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/cellprofiler/utilities/rules.py +0 -0
  390. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/environment.yml +0 -0
  391. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/pyproject.toml +0 -0
  392. {cellprofiler_nightly-5.0.0.dev674 → cellprofiler_nightly-5.0.0.dev686}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: CellProfiler-nightly
3
- Version: 5.0.0.dev674
3
+ Version: 5.0.0.dev686
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": 686,
4
+ "node": "g0620ff4c4675ee18c359ed7a4524bb6b185bfa63",
5
+ "dirty": true,
6
+ "branch": "main",
7
+ "node_date": "2026-08-31"
8
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: CellProfiler-nightly
3
- Version: 5.0.0.dev674
3
+ Version: 5.0.0.dev686
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.dev674'
22
- __version_tuple__ = version_tuple = (5, 0, 0, 'dev674')
21
+ __version__ = version = '5.0.0.dev686'
22
+ __version_tuple__ = version_tuple = (5, 0, 0, 'dev686')
23
23
 
24
- __commit_id__ = commit_id = 'g70806405c'
24
+ __commit_id__ = commit_id = 'g0620ff4c4'
@@ -174,6 +174,53 @@ ED_CONTINUE = "Continue"
174
174
  ED_SKIP = "Skip"
175
175
 
176
176
 
177
+ def make_accessible_proxy(button, handler):
178
+ """Overlay an invisible native wx.Button on top of a wx.lib.buttons.Gen* button
179
+
180
+ Gen* buttons (GenBitmapTextButton, etc.) are custom-drawn windows, not native
181
+ controls, so they don't publish themselves to the OS Accessibility API and
182
+ are invisible to tools that hint UI elements via that API. A plain
183
+ wx.Button is backed by a real NSButton and gets picked up automatically, so we
184
+ stack one behind the Gen* button, mirror its geometry/visibility/enabled state,
185
+ and route its click to the same handler.
186
+ """
187
+ proxy = wx.Button(
188
+ button.GetParent(), label=button.GetLabel(), style=wx.BORDER_NONE
189
+ )
190
+ proxy.Bind(wx.EVT_BUTTON, handler)
191
+ proxy.Lower()
192
+ # Keep it out of Tab order: it's a real second control layered behind the
193
+ # visible one, and without this Tab would stop on it and draw its focus
194
+ # ring where nothing appears to be.
195
+ proxy.DisableFocusFromKeyboard()
196
+
197
+ def sync_geometry(event=None):
198
+ proxy.SetSize(button.GetSize())
199
+ proxy.SetPosition(button.GetPosition())
200
+ if event is not None:
201
+ event.Skip()
202
+
203
+ def sync_shown(event):
204
+ proxy.Show(event.IsShown())
205
+ event.Skip()
206
+
207
+ button.Bind(wx.EVT_SIZE, sync_geometry)
208
+ button.Bind(wx.EVT_MOVE, sync_geometry)
209
+ button.Bind(wx.EVT_SHOW, sync_shown)
210
+ sync_geometry()
211
+ proxy.Show(button.IsShown())
212
+
213
+ unproxied_enable = button.Enable
214
+
215
+ def enable(enable=True):
216
+ proxy.Enable(enable)
217
+ return unproxied_enable(enable)
218
+
219
+ button.Enable = enable
220
+
221
+ return proxy
222
+
223
+
177
224
  class PipelineController(object):
178
225
  """Controls the pipeline through the UI
179
226
 
@@ -695,6 +742,7 @@ class PipelineController(object):
695
742
  )
696
743
  self.__test_mode_button.Bind(wx.EVT_BUTTON, self.on_debug_toggle)
697
744
  self.__test_mode_button.SetToolTip(self.ENTER_TEST_MODE_HELP)
745
+ make_accessible_proxy(self.__test_mode_button, self.on_debug_toggle)
698
746
 
699
747
  self.__tcp_launch_sizer.Add(self.__test_mode_button, 1, wx.EXPAND)
700
748
 
@@ -704,6 +752,7 @@ class PipelineController(object):
704
752
  )
705
753
  self.__analyze_images_button.Bind(wx.EVT_BUTTON, self.on_analyze_images)
706
754
  self.__analyze_images_button.SetToolTip(self.ANALYZE_IMAGES_HELP)
755
+ make_accessible_proxy(self.__analyze_images_button, self.on_analyze_images)
707
756
 
708
757
  self.__tcp_launch_sizer.Add(self.__analyze_images_button, 1, wx.EXPAND)
709
758
 
@@ -717,6 +766,7 @@ class PipelineController(object):
717
766
  )
718
767
  self.__pause_button.Bind(wx.EVT_BUTTON, self.on_pause)
719
768
  self.__pause_button.SetToolTip(self.PAUSE_HELP)
769
+ make_accessible_proxy(self.__pause_button, self.on_pause)
720
770
  self.__tcp_analysis_sizer.Add(self.__pause_button, 1, wx.EXPAND)
721
771
 
722
772
  self.__resume_button = wx.lib.buttons.GenBitmapTextButton(
@@ -724,6 +774,7 @@ class PipelineController(object):
724
774
  )
725
775
  self.__resume_button.Bind(wx.EVT_BUTTON, self.on_resume)
726
776
  self.__resume_button.SetToolTip(self.RESUME_HELP)
777
+ make_accessible_proxy(self.__resume_button, self.on_resume)
727
778
  self.__tcp_analysis_sizer.Add(self.__resume_button, 1, wx.EXPAND)
728
779
 
729
780
  self.__stop_analysis_button = wx.lib.buttons.GenBitmapTextButton(
@@ -731,6 +782,7 @@ class PipelineController(object):
731
782
  )
732
783
  self.__stop_analysis_button.Bind(wx.EVT_BUTTON, self.on_stop_running)
733
784
  self.__stop_analysis_button.SetToolTip("Cancel the analysis run")
785
+ make_accessible_proxy(self.__stop_analysis_button, self.on_stop_running)
734
786
  self.__tcp_analysis_sizer.Add(self.__stop_analysis_button, 1, wx.EXPAND)
735
787
  #
736
788
  # Test mode sizer
@@ -745,6 +797,7 @@ class PipelineController(object):
745
797
  )
746
798
  self.__tcp_continue.SetToolTip(wx.ToolTip("Run to next pause"))
747
799
  self.__tcp_continue.Bind(wx.EVT_BUTTON, self.on_debug_continue)
800
+ make_accessible_proxy(self.__tcp_continue, self.on_debug_continue)
748
801
  sub_sizer.Add(self.__tcp_continue, 1, wx.EXPAND)
749
802
 
750
803
  self.__tcp_step = wx.lib.buttons.GenBitmapTextButton(
@@ -752,6 +805,7 @@ class PipelineController(object):
752
805
  )
753
806
  self.__tcp_step.SetToolTip(wx.ToolTip("Step to next module"))
754
807
  self.__tcp_step.Bind(wx.EVT_BUTTON, self.on_debug_step)
808
+ make_accessible_proxy(self.__tcp_step, self.on_debug_step)
755
809
  sub_sizer.Add(self.__tcp_step, 1, wx.EXPAND)
756
810
 
757
811
  sub_sizer = wx.BoxSizer(wx.HORIZONTAL)
@@ -762,6 +816,7 @@ class PipelineController(object):
762
816
  )
763
817
  self.__tcp_stop_testmode.SetToolTip(wx.ToolTip("Exit test mode"))
764
818
  self.__tcp_stop_testmode.Bind(wx.EVT_BUTTON, self.on_debug_stop)
819
+ make_accessible_proxy(self.__tcp_stop_testmode, self.on_debug_stop)
765
820
  sub_sizer.Add(self.__tcp_stop_testmode, 1, wx.EXPAND)
766
821
 
767
822
  next_image_bmp = wx.Bitmap(cellprofiler.icons.get_builtin_image("IMG_IMAGE"))
@@ -770,6 +825,7 @@ class PipelineController(object):
770
825
  )
771
826
  self.__tcp_next_imageset.SetToolTip(wx.ToolTip("Jump to next image set"))
772
827
  self.__tcp_next_imageset.Bind(wx.EVT_BUTTON, self.on_debug_next_image_set)
828
+ make_accessible_proxy(self.__tcp_next_imageset, self.on_debug_next_image_set)
773
829
  sub_sizer.Add(self.__tcp_next_imageset, 1, wx.EXPAND)
774
830
 
775
831
  self.show_launch_controls()
@@ -62,24 +62,8 @@ from cellprofiler_core.setting.subscriber import ImageSubscriber
62
62
  from cellprofiler_core.setting.text import ImageName
63
63
  from cellprofiler_core.setting.text.number import Float
64
64
 
65
- P_AVERAGE = "Average"
66
- P_MAXIMUM = "Maximum"
67
- P_MINIMUM = "Minimum"
68
- P_SUM = "Sum"
69
- P_VARIANCE = "Variance"
70
- P_POWER = "Power"
71
- P_BRIGHTFIELD = "Brightfield"
72
- P_MASK = "Mask"
73
- P_ALL = [
74
- P_AVERAGE,
75
- P_MAXIMUM,
76
- P_MINIMUM,
77
- P_SUM,
78
- P_VARIANCE,
79
- P_POWER,
80
- P_BRIGHTFIELD,
81
- P_MASK,
82
- ]
65
+ from cellprofiler_library.modules._makeprojection import makeprojection
66
+ from cellprofiler_library.opts.makeprojection import ProjectionType, P_ALL
83
67
 
84
68
  K_PROVIDER = "Provider"
85
69
 
@@ -102,18 +86,18 @@ class MakeProjection(Module):
102
86
  doc="""\
103
87
  The final projection image can be created by the following methods:
104
88
 
105
- - *%(P_AVERAGE)s:* Use the average pixel intensity at each pixel
89
+ - *{P_AVERAGE}:* Use the average pixel intensity at each pixel
106
90
  position.
107
- - *%(P_MAXIMUM)s:* Use the maximum pixel value at each pixel position.
108
- - *%(P_MINIMUM)s:* Use the minimum pixel value at each pixel position.
109
- - *%(P_SUM)s:* Add the pixel values at each pixel position.
110
- - *%(P_VARIANCE)s:* Compute the variance at each pixel position.
91
+ - *{P_MAXIMUM}:* Use the maximum pixel value at each pixel position.
92
+ - *{P_MINIMUM}:* Use the minimum pixel value at each pixel position.
93
+ - *{P_SUM}:* Add the pixel values at each pixel position.
94
+ - *{P_VARIANCE}:* Compute the variance at each pixel position.
111
95
  The variance method is described in Selinummi et al (2009). The
112
96
  method is designed to operate on a Z-stack of brightfield images
113
97
  taken at different focus planes. Background pixels will have
114
98
  relatively uniform illumination whereas cytoplasm pixels will have
115
99
  higher variance across the Z-stack.
116
- - *%(P_POWER)s:* Compute the power at a given frequency at each pixel
100
+ - *{P_POWER}:* Compute the power at a given frequency at each pixel
117
101
  position.
118
102
  The power method is experimental. The method computes the power at a
119
103
  given frequency through the Z-stack. It might be used with a phase
@@ -122,7 +106,7 @@ The final projection image can be created by the following methods:
122
106
  and pixels that vary with the given frequency will have a higher
123
107
  score than other pixels with similar variance, but different
124
108
  frequencies.
125
- - *%(P_BRIGHTFIELD)s:* Perform the brightfield projection at each
109
+ - *{P_BRIGHTFIELD}:* Perform the brightfield projection at each
126
110
  pixel position.
127
111
  Artifacts such as dust appear as black spots that are most strongly
128
112
  resolved at their focal plane with gradually increasing signals
@@ -130,7 +114,7 @@ The final projection image can be created by the following methods:
130
114
  appears in the early Z-stacks. These pixels have a high score for the
131
115
  variance method but have a reduced score when using the brightfield
132
116
  method.
133
- - *%(P_MASK)s:* Compute a binary image of the pixels that are masked
117
+ - *{P_MASK}:* Compute a binary image of the pixels that are masked
134
118
  in any of the input images.
135
119
  The mask method operates on any masks that might have been applied to
136
120
  the images in a group. The output is a binary image where the “1”
@@ -151,8 +135,17 @@ References
151
135
  4(10): e7497 `(link)`_.
152
136
 
153
137
  .. _(link): https://doi.org/10.1371/journal.pone.0007497
154
- """
155
- % globals(),
138
+ """.format(
139
+ **{
140
+ "P_AVERAGE": ProjectionType.AVERAGE.value,
141
+ "P_MAXIMUM": ProjectionType.MAXIMUM.value,
142
+ "P_MINIMUM": ProjectionType.MINIMUM.value,
143
+ "P_SUM": ProjectionType.SUM.value,
144
+ "P_VARIANCE": ProjectionType.VARIANCE.value,
145
+ "P_POWER": ProjectionType.POWER.value,
146
+ "P_BRIGHTFIELD": ProjectionType.BRIGHTFIELD.value,
147
+ "P_MASK": ProjectionType.MASK.value,
148
+ })
156
149
  )
157
150
 
158
151
  self.projection_image_name = ImageName(
@@ -166,14 +159,16 @@ References
166
159
  6.0,
167
160
  minval=1.0,
168
161
  doc="""\
169
- *(Used only if "%(P_POWER)s" is selected as the projection method)*
162
+ *(Used only if "{P_PROJECTION}" is selected as the projection method)*
170
163
 
171
164
  This setting controls the frequency at which the power is measured. A
172
165
  frequency of 2 will respond most strongly to pixels that alternate
173
166
  between dark and light in successive z-stack slices. A frequency of N
174
167
  will respond most strongly to pixels whose brightness cycles every N
175
- slices."""
176
- % globals(),
168
+ slices.""".format(**
169
+ {
170
+ "P_PROJECTION": ProjectionType.POWER.value,
171
+ })
177
172
  )
178
173
 
179
174
  def settings(self):
@@ -186,14 +181,14 @@ slices."""
186
181
 
187
182
  def visible_settings(self):
188
183
  result = [self.image_name, self.projection_type, self.projection_image_name]
189
- if self.projection_type == P_POWER:
184
+ if self.projection_type == ProjectionType.POWER.value:
190
185
  result += [self.frequency]
191
186
  return result
192
187
 
193
188
  def prepare_group(self, workspace, grouping, image_numbers):
194
189
  """Reset the aggregate image at the start of group processing"""
195
190
  if len(image_numbers) > 0:
196
- provider = ImageProvider(
191
+ provider = ImageProvider.create(
197
192
  self.projection_image_name.value,
198
193
  self.projection_type.value,
199
194
  self.frequency.value,
@@ -266,69 +261,37 @@ slices."""
266
261
  class ImageProvider(AbstractImage):
267
262
  """Provide the image after averaging but before dilation and smoothing"""
268
263
 
269
- def __init__(self, name, how_to_accumulate, frequency=6):
264
+ D_NAME = "name"
265
+ D_FREQUENCY = "frequency"
266
+ D_METHOD = "method"
267
+ D_LIBRARY_STATE = "library_accumulator"
268
+
269
+ def __init__(self, name, method, frequency=6.0):
270
270
  """Construct using a parent provider that does the real work
271
271
 
272
272
  name - name of the image provided
273
273
  """
274
274
  super(ImageProvider, self).__init__()
275
- self.__name = name
275
+ self._name = name
276
+ self.method = ProjectionType(method)
276
277
  self.frequency = frequency
277
- self.__image = None
278
- self.__how_to_accumulate = how_to_accumulate
279
- self.__image_count = None
280
- self.__cached_image = None
281
- #
282
- # Variance needs image squared as float64, image sum and count
283
- #
284
- self.__vsquared = None
285
- self.__vsum = None
286
- #
287
- # Power needs a running sum (reuse vsum), a power image of the mask
288
- # and a complex-values image
289
- #
290
- self.__power_image = None
291
- self.__power_mask = None
292
- self.__stack_number = 0
293
- #
294
- # Brightfield needs a maximum and minimum image
295
- #
296
- self.__bright_max = None
297
- self.__bright_min = None
298
- self.__norm0 = None
278
+ self.library_accumulator = None
279
+ self._cached_image = None
299
280
 
300
- D_NAME = "name"
301
- D_FREQUENCY = "frequency"
302
- D_IMAGE = "image"
303
- D_HOW_TO_ACCUMULATE = "howtoaccumulate"
304
- D_IMAGE_COUNT = "imagecount"
305
- D_VSQUARED = "vsquared"
306
- D_VSUM = "vsum"
307
- D_POWER_IMAGE = "powerimage"
308
- D_POWER_MASK = "powermask"
309
- D_STACK_NUMBER = "stacknumber"
310
- D_BRIGHT_MAX = "brightmax"
311
- D_BRIGHT_MIN = "brightmin"
312
- D_NORM0 = "norm0"
281
+ @staticmethod
282
+ def create(name, how_to_accumulate, frequency=6.0):
283
+ """Factory method to create the appropriate ImageProvider."""
284
+ return ImageProvider(name, how_to_accumulate, frequency)
313
285
 
314
286
  def save_state(self, d):
315
287
  """Save the provider state to a dictionary
316
288
 
317
289
  d - store state in this dictionary
318
290
  """
319
- d[self.D_NAME] = self.__name
320
- d[self.D_FREQUENCY] = self.frequency
321
- d[self.D_IMAGE] = self.__image
322
- d[self.D_HOW_TO_ACCUMULATE] = self.__how_to_accumulate
323
- d[self.D_IMAGE_COUNT] = self.__image_count
324
- d[self.D_VSQUARED] = self.__vsquared
325
- d[self.D_VSUM] = self.__vsum
326
- d[self.D_POWER_IMAGE] = self.__power_image
327
- d[self.D_POWER_MASK] = self.__power_mask
328
- d[self.D_STACK_NUMBER] = self.__stack_number
329
- d[self.D_BRIGHT_MIN] = self.__bright_min
330
- d[self.D_BRIGHT_MAX] = self.__bright_max
331
- d[self.D_NORM0] = self.__norm0
291
+ d[ImageProvider.D_NAME] = self._name
292
+ d[ImageProvider.D_FREQUENCY] = self.frequency
293
+ d[ImageProvider.D_METHOD] = self.method.value
294
+ d[ImageProvider.D_LIBRARY_STATE] = self.library_accumulator
332
295
 
333
296
  @staticmethod
334
297
  def restore_from_state(d):
@@ -340,183 +303,56 @@ class ImageProvider(AbstractImage):
340
303
  """
341
304
  name = d[ImageProvider.D_NAME]
342
305
  frequency = d[ImageProvider.D_FREQUENCY]
343
- how_to_accumulate = d[ImageProvider.D_HOW_TO_ACCUMULATE]
344
- image_provider = ImageProvider(name, how_to_accumulate, frequency)
345
- image_provider.__image = d[ImageProvider.D_IMAGE]
346
- image_provider.__image_count = d[ImageProvider.D_IMAGE_COUNT]
347
- image_provider.__vsquared = d[ImageProvider.D_VSQUARED]
348
- image_provider.__vsum = d[ImageProvider.D_VSUM]
349
- image_provider.__power_image = d[ImageProvider.D_POWER_IMAGE]
350
- image_provider.__power_mask = d[ImageProvider.D_POWER_MASK]
351
- image_provider.__stack_number = d[ImageProvider.D_STACK_NUMBER]
352
- image_provider.__bright_min = d[ImageProvider.D_BRIGHT_MIN]
353
- image_provider.__bright_max = d[ImageProvider.D_BRIGHT_MAX]
354
- image_provider.__norm0 = d[ImageProvider.D_NORM0]
355
- return image_provider
306
+ method = d[ImageProvider.D_METHOD]
307
+ library_accumulator = d.get(ImageProvider.D_LIBRARY_STATE, None)
308
+
309
+ provider = ImageProvider.create(name, method, frequency)
310
+ provider.library_accumulator = library_accumulator
311
+ return provider
356
312
 
357
313
  def reset(self):
358
314
  """Reset accumulator at start of groups"""
359
- self.__image_count = None
360
- self.__image = None
361
- self.__cached_image = None
362
- self.__vsquared = None
363
- self.__vsum = None
364
- self.__power_image = None
365
- self.__power_mask = None
366
- self.__stack_number = 0
367
- self.__bright_max = None
368
- self.__bright_min = None
315
+ self.library_accumulator = None
316
+ self._cached_image = None
369
317
 
370
318
  @property
371
319
  def has_image(self):
372
- return self.__image_count is not None
373
-
374
- @property
375
- def count(self):
376
- return self.__image_count
320
+ return self.library_accumulator is not None
377
321
 
378
322
  def set_image(self, image):
379
- self.__cached_image = None
380
- if image.has_mask:
381
- self.__image_count = image.mask.astype(int)
382
- else:
383
- self.__image_count = numpy.ones(image.pixel_data.shape[:2], int)
384
-
385
- if self.__how_to_accumulate == P_VARIANCE:
386
- self.__vsum = image.pixel_data.copy()
387
- self.__vsum[~image.mask] = 0
388
- self.__image_count = image.mask.astype(int)
389
- self.__vsquared = self.__vsum.astype(numpy.float64) ** 2.0
390
- return
391
-
392
- if self.__how_to_accumulate == P_POWER:
393
- self.__vsum = image.pixel_data.copy()
394
- self.__vsum[~image.mask] = 0
395
- self.__image_count = image.mask.astype(int)
396
- #
397
- # e**0 = 1, so the first image is always in the real plane
398
- #
399
- self.__power_mask = self.__image_count.astype(numpy.complex128).copy()
400
- self.__power_image = image.pixel_data.astype(numpy.complex128).copy()
401
- self.__stack_number = 1
402
- return
403
- if self.__how_to_accumulate == P_BRIGHTFIELD:
404
- self.__bright_max = image.pixel_data.copy()
405
- self.__bright_min = image.pixel_data.copy()
406
- self.__norm0 = numpy.mean(image.pixel_data)
407
- return
408
-
409
- if self.__how_to_accumulate == P_MASK:
410
- self.__image = image.mask
411
- return
412
-
413
- self.__image = image.pixel_data.copy()
414
- if image.has_mask:
415
- nan_value = 1 if self.__how_to_accumulate == P_MINIMUM else 0
416
- self.__image[~image.mask] = nan_value
323
+ self._cached_image = None
324
+ self.library_accumulator = makeprojection(
325
+ self.method,
326
+ image.pixel_data,
327
+ image.mask,
328
+ self.frequency,
329
+ )
417
330
 
418
331
  def accumulate_image(self, image):
419
- self.__cached_image = None
420
- if image.has_mask:
421
- self.__image_count += image.mask.astype(int)
422
- else:
423
- self.__image_count += 1
424
- if self.__how_to_accumulate in [P_AVERAGE, P_SUM]:
425
- if image.has_mask:
426
- self.__image[image.mask] += image.pixel_data[image.mask]
427
- else:
428
- self.__image += image.pixel_data
429
- elif self.__how_to_accumulate == P_MAXIMUM:
430
- if image.has_mask:
431
- self.__image[image.mask] = numpy.maximum(
432
- self.__image[image.mask], image.pixel_data[image.mask]
433
- )
434
- else:
435
- self.__image = numpy.maximum(image.pixel_data, self.__image)
436
- elif self.__how_to_accumulate == P_MINIMUM:
437
- if image.has_mask:
438
- self.__image[image.mask] = numpy.minimum(
439
- self.__image[image.mask], image.pixel_data[image.mask]
440
- )
441
- else:
442
- self.__image = numpy.minimum(image.pixel_data, self.__image)
443
- elif self.__how_to_accumulate == P_VARIANCE:
444
- mask = image.mask
445
- self.__vsum[mask] += image.pixel_data[mask]
446
- self.__vsquared[mask] += image.pixel_data[mask].astype(numpy.float64) ** 2
447
- elif self.__how_to_accumulate == P_POWER:
448
- multiplier = numpy.exp(
449
- 2j * numpy.pi * float(self.__stack_number) / self.frequency
450
- )
451
- self.__stack_number += 1
452
- mask = image.mask
453
- self.__vsum[mask] += image.pixel_data[mask]
454
- self.__power_image[mask] += multiplier * image.pixel_data[mask]
455
- self.__power_mask[mask] += multiplier
456
- elif self.__how_to_accumulate == P_BRIGHTFIELD:
457
- mask = image.mask
458
- norm = numpy.mean(image.pixel_data)
459
- pixel_data = image.pixel_data * self.__norm0 / norm
460
- max_mask = (self.__bright_max < pixel_data) & mask
461
- min_mask = (self.__bright_min > pixel_data) & mask
462
- self.__bright_min[min_mask] = pixel_data[min_mask]
463
- self.__bright_max[max_mask] = pixel_data[max_mask]
464
- self.__bright_min[max_mask] = self.__bright_max[max_mask]
465
- elif self.__how_to_accumulate == P_MASK:
466
- self.__image = self.__image & image.mask
467
- else:
468
- raise NotImplementedError(
469
- "No such accumulation method: %s" % self.__how_to_accumulate
470
- )
332
+ self._cached_image = None
333
+
334
+ pixels = image.pixel_data
335
+ mask = image.mask if image.has_mask else None
336
+
337
+ self.library_accumulator = self.library_accumulator.accumulate(pixels, mask)
471
338
 
472
339
  def provide_image(self, image_set):
473
- image_count = self.__image_count
474
- mask_2d = image_count > 0
475
- if self.__how_to_accumulate == P_VARIANCE:
476
- ndim_image = self.__vsquared
477
- elif self.__how_to_accumulate == P_POWER:
478
- ndim_image = self.__power_image
479
- elif self.__how_to_accumulate == P_BRIGHTFIELD:
480
- ndim_image = self.__bright_max
481
- else:
482
- ndim_image = self.__image
483
- if ndim_image.ndim == 3:
484
- image_count = numpy.dstack([image_count] * ndim_image.shape[2])
485
- mask = image_count > 0
486
- if self.__cached_image is not None:
487
- return self.__cached_image
488
- if self.__how_to_accumulate == P_AVERAGE:
489
- cached_image = self.__image / image_count
490
- elif self.__how_to_accumulate == P_VARIANCE:
491
- cached_image = numpy.zeros(self.__vsquared.shape, numpy.float32)
492
- cached_image[mask] = self.__vsquared[mask] / image_count[mask]
493
- cached_image[mask] -= self.__vsum[mask] ** 2 / (image_count[mask] ** 2)
494
- elif self.__how_to_accumulate == P_POWER:
495
- cached_image = numpy.zeros(image_count.shape, numpy.complex128)
496
- cached_image[mask] = self.__power_image[mask]
497
- cached_image[mask] -= (
498
- self.__vsum[mask] * self.__power_mask[mask] / image_count[mask]
499
- )
500
- cached_image = (cached_image * numpy.conj(cached_image)).real.astype(
501
- numpy.float32
502
- )
503
- elif self.__how_to_accumulate == P_BRIGHTFIELD:
504
- cached_image = numpy.zeros(image_count.shape, numpy.float32)
505
- cached_image[mask] = self.__bright_max[mask] - self.__bright_min[mask]
506
- elif self.__how_to_accumulate == P_MINIMUM and numpy.any(~mask):
507
- cached_image = self.__image.copy()
508
- cached_image[~mask] = 0
509
- else:
510
- cached_image = self.__image
511
- cached_image[~mask] = 0
512
- if numpy.all(mask) or self.__how_to_accumulate == P_MASK:
513
- self.__cached_image = Image(cached_image)
340
+ """Return the final projected image."""
341
+ if self._cached_image is not None:
342
+ return self._cached_image
343
+
344
+ pixels, mask = self.library_accumulator.finalize()
345
+
346
+ if numpy.all(mask):
347
+ self._cached_image = Image(pixels)
514
348
  else:
515
- self.__cached_image = Image(cached_image, mask=mask_2d)
516
- return self.__cached_image
349
+ self._cached_image = Image(pixels, mask=mask)
350
+
351
+ return self._cached_image
517
352
 
518
353
  def get_name(self):
519
- return self.__name
354
+ """Return the name of the output image."""
355
+ return self._name
520
356
 
521
357
  def release_memory(self):
522
358
  """Don't discard the image at end of image set"""
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "5.0.0.dev0",
3
- "distance": 674,
4
- "node": "g70806405c22aad5d5e470413232c1491aac2661d",
5
- "dirty": true,
6
- "branch": "main",
7
- "node_date": "2026-08-24"
8
- }