cellprofiler-core-nightly 5.0.0.dev643__tar.gz → 5.0.0.dev649__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 (319) hide show
  1. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/PKG-INFO +1 -1
  2. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/_version.py +3 -3
  3. cellprofiler_core_nightly-5.0.0.dev649/cellprofiler_core/modules/align.py +439 -0
  4. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core_nightly.egg-info/PKG-INFO +1 -1
  5. cellprofiler_core_nightly-5.0.0.dev643/cellprofiler_core/modules/align.py +0 -833
  6. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/LICENSE +0 -0
  7. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/README.md +0 -0
  8. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/__init__.py +0 -0
  9. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/__main__.py +0 -0
  10. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/__init__.py +0 -0
  11. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/_analysis.py +0 -0
  12. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/_runner.py +0 -0
  13. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/event/__init__.py +0 -0
  14. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/event/_finished.py +0 -0
  15. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/event/_paused.py +0 -0
  16. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/event/_progress.py +0 -0
  17. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/event/_resumed.py +0 -0
  18. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/event/_started.py +0 -0
  19. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/reply/__init__.py +0 -0
  20. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/reply/_ack.py +0 -0
  21. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/reply/_debug_cancel.py +0 -0
  22. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/reply/_dictionary_request.py +0 -0
  23. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/reply/_exception_please_debug.py +0 -0
  24. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/reply/_image_set_success.py +0 -0
  25. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/reply/_image_set_success_with_dictionary.py +0 -0
  26. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/reply/_interaction.py +0 -0
  27. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/reply/_no_work.py +0 -0
  28. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/reply/_omero_login.py +0 -0
  29. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/reply/_server_exited.py +0 -0
  30. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/reply/_shared_dictionary.py +0 -0
  31. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/reply/_work.py +0 -0
  32. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/request/__init__.py +0 -0
  33. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/request/_analysis_cancel.py +0 -0
  34. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/request/_debug_complete.py +0 -0
  35. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/request/_debug_waiting.py +0 -0
  36. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/request/_display.py +0 -0
  37. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/request/_display_post_group.py +0 -0
  38. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/request/_display_post_run.py +0 -0
  39. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/request/_exception_report.py +0 -0
  40. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/request/_initial_measurements.py +0 -0
  41. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/request/_interaction.py +0 -0
  42. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/request/_measurements_report.py +0 -0
  43. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/request/_omero_login.py +0 -0
  44. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/request/_pipeline_preferences.py +0 -0
  45. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/request/_shared_dictionary.py +0 -0
  46. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/analysis/request/_work.py +0 -0
  47. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/bioformats/__init__.py +0 -0
  48. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/bioformats/formatreader.py +0 -0
  49. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/bioformats/formatwriter.py +0 -0
  50. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/bioformats/omexml.py +0 -0
  51. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/commands/__init__.py +0 -0
  52. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/commands/_pipeline_command.py +0 -0
  53. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/commands/_worker_command.py +0 -0
  54. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/constants/__init__.py +0 -0
  55. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/constants/image.py +0 -0
  56. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/constants/measurement.py +0 -0
  57. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/constants/module/__init__.py +0 -0
  58. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/constants/module/_identify.py +0 -0
  59. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/constants/modules/__init__.py +0 -0
  60. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/constants/modules/images.py +0 -0
  61. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/constants/modules/load_data.py +0 -0
  62. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/constants/modules/metadata.py +0 -0
  63. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/constants/modules/namesandtypes.py +0 -0
  64. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/constants/object.py +0 -0
  65. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/constants/pipeline.py +0 -0
  66. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/constants/preferences.py +0 -0
  67. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/constants/reader/__init__.py +0 -0
  68. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/constants/setting.py +0 -0
  69. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/constants/worker.py +0 -0
  70. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/constants/workspace.py +0 -0
  71. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/image/__init__.py +0 -0
  72. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/image/_grayscale_image.py +0 -0
  73. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/image/_image.py +0 -0
  74. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/image/_image_set.py +0 -0
  75. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/image/_image_set_list.py +0 -0
  76. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/image/_rgb_image.py +0 -0
  77. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/image/abstract_image/__init__.py +0 -0
  78. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/image/abstract_image/_abstract_image.py +0 -0
  79. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/image/abstract_image/_callback_image.py +0 -0
  80. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/image/abstract_image/_vanilla_image.py +0 -0
  81. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/image/abstract_image/file/__init__.py +0 -0
  82. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/image/abstract_image/file/_file_image.py +0 -0
  83. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/image/abstract_image/file/_flex_frame_image.py +0 -0
  84. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/image/abstract_image/file/_movie_frame_image.py +0 -0
  85. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/image/abstract_image/file/_stk_frame_image.py +0 -0
  86. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/image/abstract_image/file/url/__init__.py +0 -0
  87. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/image/abstract_image/file/url/_color_image.py +0 -0
  88. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/image/abstract_image/file/url/_mask_image.py +0 -0
  89. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/image/abstract_image/file/url/_monochrome_image.py +0 -0
  90. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/image/abstract_image/file/url/_objects_image.py +0 -0
  91. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/image/abstract_image/file/url/_url_image.py +0 -0
  92. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/measurement/__init__.py +0 -0
  93. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/measurement/_measurements.py +0 -0
  94. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/measurement/_metadata_group.py +0 -0
  95. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/measurement/_relationship_key.py +0 -0
  96. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/module/__init__.py +0 -0
  97. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/module/_identify.py +0 -0
  98. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/module/_image_processing.py +0 -0
  99. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/module/_module.py +0 -0
  100. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/module/_plugin_importer.py +0 -0
  101. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/module/image_segmentation/__init__.py +0 -0
  102. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/module/image_segmentation/_image_segmentation.py +0 -0
  103. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/module/image_segmentation/_object_processing.py +0 -0
  104. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/modules/__init__.py +0 -0
  105. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/modules/groups.py +0 -0
  106. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/modules/images.py +0 -0
  107. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/modules/inject_objects.py +0 -0
  108. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/modules/injectimage.py +0 -0
  109. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/modules/loaddata.py +0 -0
  110. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/modules/measurementfixture.py +0 -0
  111. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/modules/metadata.py +0 -0
  112. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/modules/namesandtypes.py +0 -0
  113. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/modules/setting_validation.py +0 -0
  114. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/object/__init__.py +0 -0
  115. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/object/_object_set.py +0 -0
  116. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/object/_objects.py +0 -0
  117. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/object/_segmentation.py +0 -0
  118. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/__init__.py +0 -0
  119. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/_image_file.py +0 -0
  120. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/_image_plane.py +0 -0
  121. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/_image_set_channel_descriptor.py +0 -0
  122. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/_listener.py +0 -0
  123. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/_pipeline.py +0 -0
  124. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/dependency/__init__.py +0 -0
  125. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/dependency/_dependency.py +0 -0
  126. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/dependency/_image_dependency.py +0 -0
  127. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/dependency/_measurement_dependency.py +0 -0
  128. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/dependency/_object_dependency.py +0 -0
  129. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/event/__init__.py +0 -0
  130. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/event/_end_run.py +0 -0
  131. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/event/_event.py +0 -0
  132. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/event/_file_walk_ended.py +0 -0
  133. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/event/_file_walk_started.py +0 -0
  134. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/event/_ipd_load_exception.py +0 -0
  135. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/event/_load_exception.py +0 -0
  136. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/event/_module_added.py +0 -0
  137. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/event/_module_disabled.py +0 -0
  138. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/event/_module_edited.py +0 -0
  139. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/event/_module_enabled.py +0 -0
  140. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/event/_module_moved.py +0 -0
  141. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/event/_module_removed.py +0 -0
  142. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/event/_module_show_window.py +0 -0
  143. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/event/_pipeline_cleared.py +0 -0
  144. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/event/_pipeline_loaded.py +0 -0
  145. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/event/_prepare_run_error.py +0 -0
  146. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/event/_urls_added.py +0 -0
  147. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/event/_urls_cleared.py +0 -0
  148. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/event/_urls_removed.py +0 -0
  149. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/event/run_exception/__init__.py +0 -0
  150. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/event/run_exception/_post_run_exception.py +0 -0
  151. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/event/run_exception/_prepare_run_exception.py +0 -0
  152. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/event/run_exception/_run_exception.py +0 -0
  153. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/io/__init__.py +0 -0
  154. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/io/_v5.py +0 -0
  155. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/pipeline/io/_v6.py +0 -0
  156. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/preferences/__init__.py +0 -0
  157. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/preferences/_headless_configuration.py +0 -0
  158. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/reader/__init__.py +0 -0
  159. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/reader/_reader.py +0 -0
  160. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/readers/__init__.py +0 -0
  161. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/readers/bioformats_reader.py +0 -0
  162. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/readers/gcs_reader.py +0 -0
  163. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/readers/imageio_reader.py +0 -0
  164. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/readers/imageio_reader_v3.py +0 -0
  165. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/readers/ngff_reader.py +0 -0
  166. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/__init__.py +0 -0
  167. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/_binary.py +0 -0
  168. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/_binary_matrix.py +0 -0
  169. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/_color.py +0 -0
  170. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/_coordinates.py +0 -0
  171. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/_data_types.py +0 -0
  172. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/_delete_setting_event.py +0 -0
  173. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/_divider.py +0 -0
  174. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/_do_things.py +0 -0
  175. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/_figure_subscriber.py +0 -0
  176. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/_file_collection_display.py +0 -0
  177. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/_hidden_count.py +0 -0
  178. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/_html_text.py +0 -0
  179. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/_image_plane.py +0 -0
  180. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/_joiner.py +0 -0
  181. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/_measurement.py +0 -0
  182. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/_path_list_display.py +0 -0
  183. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/_regexp_text.py +0 -0
  184. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/_setting.py +0 -0
  185. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/_settings_group.py +0 -0
  186. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/_structuring_element.py +0 -0
  187. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/_table.py +0 -0
  188. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/_tree_choice.py +0 -0
  189. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/_validation_error.py +0 -0
  190. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/change_setting_event/__init__.py +0 -0
  191. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/change_setting_event/_after_change_setting_event.py +0 -0
  192. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/change_setting_event/_before_change_setting_event.py +0 -0
  193. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/change_setting_event/_change_setting_event.py +0 -0
  194. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/choice/__init__.py +0 -0
  195. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/choice/_choice.py +0 -0
  196. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/choice/_colormap.py +0 -0
  197. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/choice/_custom_choice.py +0 -0
  198. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/do_something/__init__.py +0 -0
  199. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/do_something/_do_something.py +0 -0
  200. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/do_something/_image_set_display.py +0 -0
  201. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/do_something/_path_list_extract_button.py +0 -0
  202. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/do_something/_path_list_refresh_button.py +0 -0
  203. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/do_something/_remove_setting_button.py +0 -0
  204. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/filter/__init__.py +0 -0
  205. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/filter/_compound_filter_predicate.py +0 -0
  206. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/filter/_directory_predicate.py +0 -0
  207. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/filter/_does_not_predicate.py +0 -0
  208. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/filter/_does_predicate.py +0 -0
  209. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/filter/_extension_predicate.py +0 -0
  210. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/filter/_file_predicate.py +0 -0
  211. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/filter/_filter.py +0 -0
  212. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/filter/_filter_predicate.py +0 -0
  213. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/filter/_image_predicate.py +0 -0
  214. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/filter/_metadata_predicate.py +0 -0
  215. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/filter/_regexp_filter_predicate.py +0 -0
  216. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/multichoice/__init__.py +0 -0
  217. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/multichoice/_image_name_subscriber_multichoice.py +0 -0
  218. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/multichoice/_measurement_multichoice.py +0 -0
  219. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/multichoice/_multichoice.py +0 -0
  220. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/multichoice/_object_subscriber_multichoice.py +0 -0
  221. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/multichoice/_subdirectory_filter.py +0 -0
  222. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/multichoice/_subscriber_multichoice.py +0 -0
  223. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/range/__init__.py +0 -0
  224. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/range/_float_range.py +0 -0
  225. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/range/_range.py +0 -0
  226. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/range/integer_range/__init__.py +0 -0
  227. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/range/integer_range/_integer_or_unbounded_range.py +0 -0
  228. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/range/integer_range/_integer_range.py +0 -0
  229. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/subscriber/__init__.py +0 -0
  230. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/subscriber/_grid_subscriber.py +0 -0
  231. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/subscriber/_label_subscriber.py +0 -0
  232. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/subscriber/_subscriber.py +0 -0
  233. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/subscriber/image_subscriber/__init__.py +0 -0
  234. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/subscriber/image_subscriber/_crop_image_subscriber.py +0 -0
  235. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/subscriber/image_subscriber/_file_image_subscriber.py +0 -0
  236. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/subscriber/image_subscriber/_image_subscriber.py +0 -0
  237. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/subscriber/image_subscriber/_outline_image_subscriber.py +0 -0
  238. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/subscriber/list_subscriber/__init__.py +0 -0
  239. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/subscriber/list_subscriber/_image_list_subscriber.py +0 -0
  240. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/subscriber/list_subscriber/_label_list_subscriber.py +0 -0
  241. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/subscriber/list_subscriber/_list_subscriber.py +0 -0
  242. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/text/__init__.py +0 -0
  243. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/text/_directory.py +0 -0
  244. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/text/_filename.py +0 -0
  245. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/text/_text.py +0 -0
  246. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/text/alphanumeric/__init__.py +0 -0
  247. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/text/alphanumeric/_alphanumeric.py +0 -0
  248. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/text/alphanumeric/_character.py +0 -0
  249. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/text/alphanumeric/name/__init__.py +0 -0
  250. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/text/alphanumeric/name/_grid_name.py +0 -0
  251. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/text/alphanumeric/name/_label_name.py +0 -0
  252. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/text/alphanumeric/name/_name.py +0 -0
  253. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/text/alphanumeric/name/image_name/__init__.py +0 -0
  254. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/text/alphanumeric/name/image_name/_crop_image_name.py +0 -0
  255. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/text/alphanumeric/name/image_name/_external_image_name.py +0 -0
  256. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/text/alphanumeric/name/image_name/_file_image_name.py +0 -0
  257. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/text/alphanumeric/name/image_name/_image_name.py +0 -0
  258. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/text/alphanumeric/name/image_name/_outline_image_name.py +0 -0
  259. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/text/number/__init__.py +0 -0
  260. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/text/number/_float.py +0 -0
  261. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/text/number/_number.py +0 -0
  262. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/text/number/integer/__init__.py +0 -0
  263. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/text/number/integer/_integer.py +0 -0
  264. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/text/number/integer/_odd_integer.py +0 -0
  265. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/text/pathname/__init__.py +0 -0
  266. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/text/pathname/_pathname.py +0 -0
  267. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/setting/text/pathname/_url.py +0 -0
  268. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/__init__.py +0 -0
  269. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/analysis.py +0 -0
  270. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/channel_hasher.py +0 -0
  271. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/core/__init__.py +0 -0
  272. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/core/module/__init__.py +0 -0
  273. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/core/module/identify.py +0 -0
  274. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/core/modules/__init__.py +0 -0
  275. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/core/modules/load_data.py +0 -0
  276. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/core/modules.py +0 -0
  277. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/core/object.py +0 -0
  278. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/core/pipeline.py +0 -0
  279. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/core/plugins.py +0 -0
  280. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/core/workspace.py +0 -0
  281. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/grid.py +0 -0
  282. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/hdf5_dict.py +0 -0
  283. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/image.py +0 -0
  284. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/java.py +0 -0
  285. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/legacy.py +0 -0
  286. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/logging.py +0 -0
  287. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/measurement.py +0 -0
  288. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/pathname.py +0 -0
  289. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/utf16encode.py +0 -0
  290. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/zmq/__init__.py +0 -0
  291. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/zmq/_analysis_context.py +0 -0
  292. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/zmq/_boundary.py +0 -0
  293. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/zmq/_event.py +0 -0
  294. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/zmq/communicable/__init__.py +0 -0
  295. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/zmq/communicable/_communicable.py +0 -0
  296. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/zmq/communicable/reply/__init__.py +0 -0
  297. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/zmq/communicable/reply/_lock_status_reply.py +0 -0
  298. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/zmq/communicable/reply/_reply.py +0 -0
  299. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/zmq/communicable/reply/_upstream_exit.py +0 -0
  300. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/zmq/communicable/reply/upstream_exit/__init__.py +0 -0
  301. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/zmq/communicable/reply/upstream_exit/_boundary_exited.py +0 -0
  302. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/zmq/communicable/reply/upstream_exit/_upstream_exit.py +0 -0
  303. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/zmq/communicable/request/__init__.py +0 -0
  304. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/zmq/communicable/request/_analysis_request.py +0 -0
  305. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/zmq/communicable/request/_lock_status_request.py +0 -0
  306. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/utilities/zmq/communicable/request/_request.py +0 -0
  307. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/worker/__init__.py +0 -0
  308. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/worker/_pipeline_event_listener.py +0 -0
  309. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/worker/_worker.py +0 -0
  310. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/workspace/__init__.py +0 -0
  311. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/workspace/_disposition_changed_event.py +0 -0
  312. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core/workspace/_workspace.py +0 -0
  313. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core_nightly.egg-info/SOURCES.txt +0 -0
  314. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core_nightly.egg-info/dependency_links.txt +0 -0
  315. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core_nightly.egg-info/requires.txt +0 -0
  316. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/cellprofiler_core_nightly.egg-info/top_level.txt +0 -0
  317. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/environment.yml +0 -0
  318. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/pyproject.toml +0 -0
  319. {cellprofiler_core_nightly-5.0.0.dev643 → cellprofiler_core_nightly-5.0.0.dev649}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cellprofiler-core-nightly
3
- Version: 5.0.0.dev643
3
+ Version: 5.0.0.dev649
4
4
  Summary: cellprofiler-core implements the bulk of CellProfiler's non-gui functionality
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.dev643'
32
- __version_tuple__ = version_tuple = (5, 0, 0, 'dev643')
31
+ __version__ = version = '5.0.0.dev649'
32
+ __version_tuple__ = version_tuple = (5, 0, 0, 'dev649')
33
33
 
34
- __commit_id__ = commit_id = 'g229e6671e'
34
+ __commit_id__ = commit_id = 'g6fe7b0942'
@@ -0,0 +1,439 @@
1
+ # coding=utf-8
2
+
3
+ """
4
+ Align
5
+ =====
6
+
7
+ **Align** aligns images relative to each other, for example, to correct
8
+ shifts in the optical path of a microscope in each channel of a
9
+ multi-channel set of images.
10
+
11
+ For two or more input images, this module determines the optimal
12
+ alignment among them. Aligning images is useful to obtain proper
13
+ measurements of the intensities in one channel based on objects
14
+ identified in another channel, for example. Alignment is often needed
15
+ when the microscope is not perfectly calibrated. It can also be useful
16
+ to align images in a time-lapse series of images. The module stores the
17
+ amount of shift between images as a measurement, which can be useful for
18
+ quality control purposes.
19
+
20
+ Note that the second image (and others following) is always aligned with
21
+ respect to the first image. That is, the X/Y offsets indicate how much
22
+ the second image needs to be shifted by to match the first.
23
+
24
+ This module does not perform warping or rotation, it simply shifts images
25
+ in X and Y. For more complex registration tasks, you might preprocess
26
+ images using a plugin for that purpose in FIJI/ImageJ.
27
+
28
+ |
29
+
30
+ ============ ============ ===============
31
+ Supports 2D? Supports 3D? Respects masks?
32
+ ============ ============ ===============
33
+ YES NO YES
34
+ ============ ============ ===============
35
+
36
+
37
+
38
+ Measurements made by this module
39
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
40
+
41
+ - *Xshift, Yshift:* The pixel shift in X and Y of the aligned image
42
+ with respect to the original image.
43
+
44
+ References
45
+ ^^^^^^^^^^
46
+
47
+ - Lewis JP. (1995) “Fast normalized cross-correlation.” *Vision
48
+ Interface*, 1-7.
49
+ """
50
+
51
+ import numpy as np
52
+
53
+ from ..constants.measurement import COLTYPE_INTEGER
54
+ from ..image import Image
55
+ from ..module import Module
56
+ from ..setting import Divider, SettingsGroup
57
+ from ..setting.choice import Choice
58
+ from ..setting.do_something import DoSomething, RemoveSettingButton
59
+ from ..setting.subscriber import ImageSubscriber
60
+ from ..setting.text import ImageName
61
+
62
+ from cellprofiler_library.opts.align import AlignmentMethod, CropMode, AdditionalAlignmentChoice, MEASUREMENT_FORMAT, M_ALL, C_ALIGN
63
+ from cellprofiler_library.modules._align import align_images
64
+
65
+
66
+ class Align(Module):
67
+ module_name = "Align"
68
+ category = "Image Processing"
69
+ variable_revision_number = 3
70
+
71
+ def create_settings(self):
72
+ self.first_input_image = ImageSubscriber(
73
+ "Select the first input image",
74
+ "None",
75
+ doc="""\
76
+ Specify the name of the first image to align.""",
77
+ )
78
+
79
+ self.first_output_image = ImageName(
80
+ "Name the first output image",
81
+ "AlignedRed",
82
+ doc="""\
83
+ Enter the name of the first aligned image.""",
84
+ )
85
+
86
+ self.separator_1 = Divider(line=False)
87
+ self.second_input_image = ImageSubscriber(
88
+ "Select the second input image",
89
+ "None",
90
+ doc="""\
91
+ Specify the name of the second image to align.""",
92
+ )
93
+
94
+ self.second_output_image = ImageName(
95
+ "Name the second output image",
96
+ "AlignedGreen",
97
+ doc="""\
98
+ Enter the name of the second aligned image.""",
99
+ )
100
+
101
+ self.separator_2 = Divider(line=False)
102
+ self.additional_images = []
103
+ self.add_button = DoSomething("", "Add another image", self.add_image)
104
+
105
+ self.alignment_method = Choice(
106
+ "Select the alignment method",
107
+ M_ALL,
108
+ doc="""\
109
+ Two options for the alignment method are available:
110
+
111
+ - *%(M_MUTUAL_INFORMATION)s:* This more general method works well for
112
+ aligning images from different modalities that contain the same
113
+ information, but are expressed differently. However, this method
114
+ performs better than %(M_CROSS_CORRELATION)s, even in the same
115
+ modality, if the images are not highly correlated. It is iterative,
116
+ and thus tends to be slower than other methods, but is more likely to
117
+ be correct. Essentially, alignment is performed by measuring how well
118
+ one image “explains” the other. For example, a fluorescent image can
119
+ be aligned to a brightfield image by this method since the relevant
120
+ features are bright in one modality where they are dim in the other.
121
+ - *%(M_CROSS_CORRELATION)s:* This is a good means of alignment in the
122
+ case of images acquired with the same modality (e.g., all images to
123
+ be aligned are fluorescent). It is fast, however it can be highly
124
+ influenced by a particular, possibly spurious, feature and in turn
125
+ generate anomalously large shifts. It allows for a linear
126
+ relationship between the intensities of the two images, i.e., the
127
+ relevant features in the images to be aligned all have varying
128
+ degrees of brightness.
129
+
130
+ """.format(
131
+ **{
132
+ "M_MUTUAL_INFORMATION": AlignmentMethod.MUTUAL_INFORMATION.value,
133
+ "M_CROSS_CORRELATION": AlignmentMethod.CROSS_CORRELATION.value,
134
+ }
135
+ )
136
+ )
137
+
138
+ self.crop_mode = Choice(
139
+ "Crop mode",
140
+ [CropMode.CROP.value, CropMode.PAD.value, CropMode.SAME_SIZE.value],
141
+ doc="""\
142
+ The crop mode determines how the output images are either cropped or
143
+ padded after alignment. The alignment phase calculates the areas in each
144
+ image that are found to be overlapping. In almost all cases, there will
145
+ be portions of some or all of the images that don’t overlap with any
146
+ other aligned image. These portions have no counterpart and will be
147
+ excluded from analysis. There are three choices for cropping:
148
+
149
+ - *%(C_CROP)s:* Crop every image to the region that overlaps in all
150
+ images. This makes downstream analysis simpler because all of the
151
+ output images have authentic pixel data at all positions, however it
152
+ discards parts of images. Also, the output images may not be the same
153
+ size as the input images which may cause problems if downstream
154
+ modules use aligned and unaligned images (which may be of differing
155
+ sizes) in combination.
156
+ - *%(C_PAD)s:* Align every image and pad with masked black pixels to
157
+ make each image the same size. This results in larger images, but
158
+ preserves all information in each of the images. This may be the best
159
+ choice if images undergo an operation such as smoothing that could
160
+ use the information that would otherwise be cropped.
161
+ - *%(C_SAME_SIZE)s:* Maintain the sizes of the images but align them,
162
+ masking the unaligned portions with black pixels. **Align** aligns
163
+ all images relative to the first. This is a reasonable option for
164
+ alignments with small displacements since it maintains a consistent
165
+ image size which may be useful if output images from different image
166
+ sets will be compared against each other after processing. The
167
+ reference image can also be used across image sets. For example, the
168
+ reference image could be loaded for all image sets in a group to
169
+ align the entire group’s images similarly, then the aligned images
170
+ could be combined in a module such as **MakeProjection**.
171
+ """.format(
172
+ **{
173
+ "C_CROP": CropMode.CROP.value,
174
+ "C_PAD": CropMode.PAD.value,
175
+ "C_SAME_SIZE": CropMode.SAME_SIZE.value,
176
+ }
177
+ ),
178
+ )
179
+
180
+
181
+
182
+ def add_image(self, can_remove=True):
183
+ """Add an image + associated questions and buttons"""
184
+ group = SettingsGroup()
185
+ if can_remove:
186
+ group.append("divider", Divider(line=False))
187
+
188
+ group.append(
189
+ "input_image_name",
190
+ ImageSubscriber(
191
+ "Select the additional image",
192
+ "None",
193
+ doc="""
194
+ Select the additional image to align?""",
195
+ ),
196
+ )
197
+
198
+ group.append(
199
+ "output_image_name",
200
+ ImageName(
201
+ "Name the output image",
202
+ "AlignedBlue",
203
+ doc="""
204
+ Enter the name of the aligned image?""",
205
+ ),
206
+ )
207
+
208
+ group.append(
209
+ "align_choice",
210
+ Choice(
211
+ "Select how the alignment is to be applied",
212
+ [AdditionalAlignmentChoice.SIMILARLY.value, AdditionalAlignmentChoice.SEPARATELY.value],
213
+ doc="""\
214
+ An additional image can either be aligned similarly to the second one or
215
+ a separate alignment to the first image can be calculated:
216
+
217
+ - *%(A_SIMILARLY)s:* The same alignment measurements obtained from the
218
+ first two input images are applied to this additional image.
219
+ - *%(A_SEPARATELY)s:* A new set of alignment measurements are
220
+ calculated for this additional image using the alignment method
221
+ specified with respect to the first input image.
222
+ """.format(
223
+ **{
224
+ "A_SIMILARLY": AdditionalAlignmentChoice.SIMILARLY.value,
225
+ "A_SEPARATELY": AdditionalAlignmentChoice.SEPARATELY.value,
226
+ }
227
+ ),
228
+ ),
229
+ )
230
+
231
+ if can_remove:
232
+ group.append(
233
+ "remover",
234
+ RemoveSettingButton(
235
+ "", "Remove above image", self.additional_images, group
236
+ ),
237
+ )
238
+ self.additional_images.append(group)
239
+
240
+ def settings(self):
241
+
242
+ result = [self.alignment_method, self.crop_mode]
243
+
244
+ result += [
245
+ self.first_input_image,
246
+ self.first_output_image,
247
+ self.second_input_image,
248
+ self.second_output_image,
249
+ ]
250
+ for additional in self.additional_images:
251
+ result += [
252
+ additional.input_image_name,
253
+ additional.output_image_name,
254
+ additional.align_choice,
255
+ ]
256
+ return result
257
+
258
+ def prepare_settings(self, setting_values):
259
+ assert (len(setting_values) - 6) % 3 == 0
260
+ n_additional = (len(setting_values) - 6) / 3
261
+ del self.additional_images[:]
262
+ while len(self.additional_images) < n_additional:
263
+ self.add_image()
264
+
265
+ def visible_settings(self):
266
+ result = [self.alignment_method, self.crop_mode]
267
+
268
+ result += [
269
+ self.first_input_image,
270
+ self.first_output_image,
271
+ self.separator_1,
272
+ self.second_input_image,
273
+ self.second_output_image,
274
+ ]
275
+ for additional in self.additional_images:
276
+ result += additional.visible_settings()
277
+ result += [self.add_button]
278
+ return result
279
+
280
+ def run(self, workspace):
281
+ input_image_names = [
282
+ self.first_input_image.value,
283
+ self.second_input_image.value,
284
+ ]
285
+ output_image_names = [
286
+ self.first_output_image.value,
287
+ self.second_output_image.value,
288
+ ]
289
+ align_choices = []
290
+ for additional in self.additional_images:
291
+ input_image_names.append(additional.input_image_name.value)
292
+ output_image_names.append(additional.output_image_name.value)
293
+ align_choices.append(additional.align_choice)
294
+
295
+ input_images = [workspace.image_set.get_image(im_name) for im_name in input_image_names]
296
+ # TODO: 5045 - is astype(float) necessary? why?
297
+ input_image_pixels = [img.pixel_data.astype(float) for img in input_images]
298
+ input_image_masks = [img.mask for img in input_images]
299
+
300
+ res = align_images(
301
+ input_image_pixels[0],
302
+ input_image_masks[0],
303
+ input_image_pixels[1],
304
+ input_image_masks[1],
305
+ self.alignment_method.value,
306
+ self.crop_mode.value,
307
+ input_image_pixels[2:],
308
+ input_image_masks[2:],
309
+ align_choices,
310
+ input_image_names,
311
+ output_image_names,
312
+ self.show_window
313
+ )
314
+ if self.show_window:
315
+ lib_data, lib_display = res
316
+ output_image_pixels, output_image_masks, crop_masks, lib_measurements = lib_data
317
+ else:
318
+ output_image_pixels, output_image_masks, crop_masks, lib_measurements = res
319
+
320
+ for i in range(len(output_image_pixels)):
321
+ output_image = Image(
322
+ output_image_pixels[i], mask=output_image_masks[i], crop_mask=crop_masks[i], parent_image=input_images[i]
323
+ )
324
+ workspace.image_set.add(output_image_names[i], output_image)
325
+
326
+ for feature_name, value in lib_measurements.image.items():
327
+ workspace.measurements.add_image_measurement(feature_name, value)
328
+
329
+ if self.show_window:
330
+ workspace.display_data.image_info = lib_display.image_info
331
+
332
+ def display(self, workspace, figure):
333
+ """Display the overlaid images
334
+
335
+ workspace - the workspace being run, with display_data holding:
336
+ image_info - a list of lists:
337
+ input image name of image being aligned
338
+ input image data
339
+ output image name of image being aligned
340
+ output image data
341
+ x offset
342
+ y offset
343
+ """
344
+ image_info = workspace.display_data.image_info
345
+ first_input_name = self.first_input_image.value
346
+ first_output_name = self.first_output_image.value
347
+ figure.set_subplots((2, len(image_info) - 1))
348
+
349
+ first_input_pixels = image_info[0][1]
350
+ first_output_pixels = image_info[0][3]
351
+ for (
352
+ j,
353
+ (input_name, input_pixels, output_name, output_pixels, off_x, off_y, shape),
354
+ ) in enumerate(image_info[1:]):
355
+ unaligned_title = "Unaligned images: %s and %s" % (
356
+ first_input_name,
357
+ input_name,
358
+ )
359
+ #
360
+ # Make them grayscale if needed
361
+ #
362
+ first_pixels, other_pixels = [
363
+ img if img.ndim == 2 else np.mean(img, 2)
364
+ for img in (first_input_pixels, input_pixels)
365
+ ]
366
+ max_shape = np.maximum(first_pixels.shape, other_pixels.shape)
367
+ img = np.zeros((max_shape[0], max_shape[1], 3))
368
+ img[: first_pixels.shape[0], : first_pixels.shape[1], 0] = first_pixels
369
+ img[: other_pixels.shape[0], : other_pixels.shape[1], 1] = other_pixels
370
+ figure.subplot_imshow(
371
+ 0, j, img, unaligned_title, sharexy=figure.subplot(0, 0)
372
+ )
373
+
374
+ aligned_title = "Aligned images: %s and %s\nX offset: %d, Y offset: %d" % (
375
+ first_output_name,
376
+ output_name,
377
+ -off_x,
378
+ -off_y,
379
+ )
380
+ first_pixels, other_pixels = [
381
+ img if img.ndim == 2 else np.mean(img, 2)
382
+ for img in (first_output_pixels, output_pixels)
383
+ ]
384
+ max_shape = np.maximum(first_pixels.shape, other_pixels.shape)
385
+ img = np.zeros((max_shape[0], max_shape[1], 3))
386
+ img[: first_pixels.shape[0], : first_pixels.shape[1], 0] = first_pixels
387
+ img[: other_pixels.shape[0], : other_pixels.shape[1], 1] = other_pixels
388
+ figure.subplot_imshow(
389
+ 1, j, img, aligned_title, sharexy=figure.subplot(0, 0)
390
+ )
391
+
392
+ def get_categories(self, pipeline, object_name):
393
+ if object_name == "Image":
394
+ return [C_ALIGN]
395
+ return []
396
+
397
+ def get_measurements(self, pipeline, object_name, category):
398
+ if object_name == "Image" and category == C_ALIGN:
399
+ return ["Xshift", "Yshift"]
400
+ return []
401
+
402
+ def get_measurement_images(self, pipeline, object_name, category, measurement):
403
+ if measurement in self.get_measurements(pipeline, object_name, category):
404
+ return [self.first_output_image.value, self.second_output_image.value] + [
405
+ additional.output_image_name.value
406
+ for additional in self.additional_images
407
+ ]
408
+ return []
409
+
410
+ def get_measurement_columns(self, pipeline):
411
+ """return the offset measurements"""
412
+
413
+ targets = [self.first_output_image.value, self.second_output_image.value] + [
414
+ additional.output_image_name.value for additional in self.additional_images
415
+ ]
416
+ columns = []
417
+ for axis in ("X", "Y"):
418
+ columns += [
419
+ ("Image", MEASUREMENT_FORMAT % (axis, target), COLTYPE_INTEGER,)
420
+ for target in targets
421
+ ]
422
+ return columns
423
+
424
+ def upgrade_settings(self, setting_values, variable_revision_number, module_name):
425
+ if variable_revision_number == 1:
426
+ # Moved final settings (alignment method, cropping) to the top
427
+ setting_values = setting_values[-2:] + setting_values[:-2]
428
+ variable_revision_number = 2
429
+
430
+ if variable_revision_number == 2:
431
+ # wants_cropping changed to crop_mode
432
+ setting_values = (
433
+ setting_values[:1]
434
+ + [CropMode.CROP.value if setting_values[1] == "Yes" else CropMode.SAME_SIZE.value]
435
+ + setting_values[2:]
436
+ )
437
+ variable_revision_number = 3
438
+
439
+ return setting_values, variable_revision_number
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cellprofiler-core-nightly
3
- Version: 5.0.0.dev643
3
+ Version: 5.0.0.dev649
4
4
  Summary: cellprofiler-core implements the bulk of CellProfiler's non-gui functionality
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>