cellprofiler-library-nightly 5.0.0.dev690__tar.gz → 5.0.0.dev706__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 (131) hide show
  1. {cellprofiler_library_nightly-5.0.0.dev690/cellprofiler_library_nightly.egg-info → cellprofiler_library_nightly-5.0.0.dev706}/PKG-INFO +1 -1
  2. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/_version.py +3 -3
  3. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/functions/image_processing.py +220 -0
  4. cellprofiler_library_nightly-5.0.0.dev706/cellprofiler_library/modules/_correctilluminationcalculate.py +573 -0
  5. cellprofiler_library_nightly-5.0.0.dev706/cellprofiler_library/opts/correctilluminationcalculate.py +43 -0
  6. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706/cellprofiler_library_nightly.egg-info}/PKG-INFO +1 -1
  7. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library_nightly.egg-info/SOURCES.txt +2 -0
  8. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library_nightly.egg-info/scm_file_list.json +2 -0
  9. cellprofiler_library_nightly-5.0.0.dev706/cellprofiler_library_nightly.egg-info/scm_version.json +8 -0
  10. cellprofiler_library_nightly-5.0.0.dev690/cellprofiler_library_nightly.egg-info/scm_version.json +0 -8
  11. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/LICENSE +0 -0
  12. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/README.md +0 -0
  13. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/__init__.py +0 -0
  14. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/functions/__init__.py +0 -0
  15. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/functions/file_processing.py +0 -0
  16. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/functions/measurement.py +0 -0
  17. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/functions/object_processing.py +0 -0
  18. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/functions/segmentation.py +0 -0
  19. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/measurement_model.py +0 -0
  20. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/__init__.py +0 -0
  21. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_align.py +0 -0
  22. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_closing.py +0 -0
  23. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_colortogray.py +0 -0
  24. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_combineobjects.py +0 -0
  25. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_convertimagetoobjects.py +0 -0
  26. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_convertobjectstoimage.py +0 -0
  27. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_correctilluminationapply.py +0 -0
  28. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_crop.py +0 -0
  29. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_dilateimage.py +0 -0
  30. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_dilateobjects.py +0 -0
  31. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_enhanceedges.py +0 -0
  32. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_enhanceorsuppressfeatures.py +0 -0
  33. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_erodeimage.py +0 -0
  34. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_erodeobjects.py +0 -0
  35. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_expandorshrinkobjects.py +0 -0
  36. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_fillobjects.py +0 -0
  37. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_filterobjects.py +0 -0
  38. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_findmaxima.py +0 -0
  39. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_flipandrotate.py +0 -0
  40. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_gaussianfilter.py +0 -0
  41. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_graytocolor.py +0 -0
  42. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_identifydeadworms.py +0 -0
  43. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_identifyprimaryobjects.py +0 -0
  44. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_identifysecondaryobjects.py +0 -0
  45. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_identifytertiaryobjects.py +0 -0
  46. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_imagemath.py +0 -0
  47. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_makeprojection.py +0 -0
  48. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_measurecolocalization.py +0 -0
  49. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_measuregranularity.py +0 -0
  50. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_measureimageareaoccupied.py +0 -0
  51. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_measureimageintensity.py +0 -0
  52. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_measureimageoverlap.py +0 -0
  53. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_measureimagequality.py +0 -0
  54. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_measureimageskeleton.py +0 -0
  55. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_measureobjectintensity.py +0 -0
  56. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_measureobjectintensitydistribution.py +0 -0
  57. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_measureobjectneighbors.py +0 -0
  58. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_measureobjectoverlap.py +0 -0
  59. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_measureobjectsizeshape.py +0 -0
  60. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_measureobjectskeleton.py +0 -0
  61. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_measuretexture.py +0 -0
  62. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_medialaxis.py +0 -0
  63. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_medianfilter.py +0 -0
  64. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_morph.py +0 -0
  65. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_morphologicalskeleton.py +0 -0
  66. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_opening.py +0 -0
  67. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_overlayobjects.py +0 -0
  68. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_overlayoutlines.py +0 -0
  69. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_reducenoise.py +0 -0
  70. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_removeholes.py +0 -0
  71. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_rescaleintensity.py +0 -0
  72. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_resize.py +0 -0
  73. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_savecroppedobjects.py +0 -0
  74. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_shrinktoobjectcenters.py +0 -0
  75. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_smooth.py +0 -0
  76. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_threshold.py +0 -0
  77. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/modules/_watershed.py +0 -0
  78. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/__init__.py +0 -0
  79. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/align.py +0 -0
  80. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/colortogray.py +0 -0
  81. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/convertimagetoobjects.py +0 -0
  82. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/convertobjectstoimage.py +0 -0
  83. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/correctilluminationapply.py +0 -0
  84. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/crop.py +0 -0
  85. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/dilateimage.py +0 -0
  86. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/dilateobjects.py +0 -0
  87. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/enhanceedges.py +0 -0
  88. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/enhanceorsuppressfeatures.py +0 -0
  89. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/erodeimage.py +0 -0
  90. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/erodeobjects.py +0 -0
  91. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/filterobjects.py +0 -0
  92. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/findmaxima.py +0 -0
  93. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/flipandrotate.py +0 -0
  94. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/graytocolor.py +0 -0
  95. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/identifydeadworms.py +0 -0
  96. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/identifyprimaryobjects.py +0 -0
  97. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/identifysecondaryobjects.py +0 -0
  98. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/identifytertiaryobjects.py +0 -0
  99. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/imagemath.py +0 -0
  100. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/makeprojection.py +0 -0
  101. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/measurecolocalization.py +0 -0
  102. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/measuregranularity.py +0 -0
  103. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/measureimageareaoccupied.py +0 -0
  104. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/measureimageintensity.py +0 -0
  105. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/measureimageoverlap.py +0 -0
  106. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/measureimagequality.py +0 -0
  107. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/measureimageskeleton.py +0 -0
  108. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/measureobjectintensity.py +0 -0
  109. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/measureobjectintensitydistribution.py +0 -0
  110. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/measureobjectneighbors.py +0 -0
  111. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/measureobjectoverlap.py +0 -0
  112. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/measureobjectskeleton.py +0 -0
  113. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/measuretexture.py +0 -0
  114. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/morph.py +0 -0
  115. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/objectsizeshapefeatures.py +0 -0
  116. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/overlayoutlines.py +0 -0
  117. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/removeholes.py +0 -0
  118. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/rescaleintensity.py +0 -0
  119. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/resize.py +0 -0
  120. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/shrinktoobjectcenters.py +0 -0
  121. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/smooth.py +0 -0
  122. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/structuring_elements.py +0 -0
  123. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/opts/threshold.py +0 -0
  124. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/py.typed +0 -0
  125. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library/types.py +0 -0
  126. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library_nightly.egg-info/dependency_links.txt +0 -0
  127. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library_nightly.egg-info/requires.txt +0 -0
  128. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/cellprofiler_library_nightly.egg-info/top_level.txt +0 -0
  129. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/environment.yml +0 -0
  130. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/pyproject.toml +0 -0
  131. {cellprofiler_library_nightly-5.0.0.dev690 → cellprofiler_library_nightly-5.0.0.dev706}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cellprofiler-library-nightly
3
- Version: 5.0.0.dev690
3
+ Version: 5.0.0.dev706
4
4
  Summary: cellprofiler-library implements CellProfiler's image processing and mathematical code, and is usable as a standalone library
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.dev690'
22
- __version_tuple__ = version_tuple = (5, 0, 0, 'dev690')
21
+ __version__ = version = '5.0.0.dev706'
22
+ __version_tuple__ = version_tuple = (5, 0, 0, 'dev706')
23
23
 
24
- __commit_id__ = commit_id = 'g0d30679fc'
24
+ __commit_id__ = commit_id = 'gc01fa20f6'
@@ -12,6 +12,9 @@ import skimage.exposure
12
12
  import centrosome
13
13
  import centrosome.threshold
14
14
  import centrosome.filter
15
+ import centrosome.cpmorphology
16
+ import centrosome.bg_compensate
17
+ import centrosome.smooth
15
18
  import scipy
16
19
  import scipy.interpolate
17
20
  import scipy.sparse
@@ -45,6 +48,11 @@ from cellprofiler_library.opts.imagemath import Operator
45
48
  from cellprofiler_library.opts.flipandrotate import RotationCoordinateAlignmnet
46
49
  from cellprofiler_library.opts.enhanceedges import EdgeDirection
47
50
  from cellprofiler_library.opts.rescaleintensity import MaximumIntensityMethod, MinimumIntensityMethod
51
+ from cellprofiler_library.opts.correctilluminationcalculate import (
52
+ SmoothingFilterSize,
53
+ SmoothingMethod,
54
+ SplineBackgroundMode,
55
+ )
48
56
  invert = cast(Callable[[ImageAny], ImageAny], _invert)
49
57
  isscalar = cast(Callable[[Optional[ImageAny]], bool], _isscalar)
50
58
 
@@ -3105,3 +3113,215 @@ def apply_target_mask(x_data: ImageAny, masking_image: Union[ImageAny,ObjectSegm
3105
3113
  mask = masking_image.astype(bool)
3106
3114
  x_data[~mask] = 0
3107
3115
  return x_data
3116
+
3117
+ ###############################################################################
3118
+ # CorrectIlluminationCalculate
3119
+ ###############################################################################
3120
+
3121
+
3122
+ def get_smoothing_filter_size(
3123
+ automatic_object_width: SmoothingFilterSize,
3124
+ smoothing_filter_size: Optional[int], # default to 10
3125
+ object_width: Optional[int], # default to 10
3126
+ image_shape: Optional[Tuple[int, ...]]
3127
+ ) -> float:
3128
+ """Return the smoothing filter size based on the settings and image size"""
3129
+ filter_size = None
3130
+ if automatic_object_width == SmoothingFilterSize.MANUALLY.value:
3131
+ assert smoothing_filter_size is not None, "Manual smoothing filter size must be provided"
3132
+ # Convert from full-width at half-maximum to standard deviation
3133
+ # (or so says CPsmooth.m)
3134
+ filter_size = smoothing_filter_size
3135
+ elif automatic_object_width == SmoothingFilterSize.OBJECT_SIZE.value:
3136
+ assert object_width is not None, "Object width must be provided"
3137
+ filter_size = object_width * 2.35 / 3.5
3138
+ elif automatic_object_width == SmoothingFilterSize.AUTOMATIC.value:
3139
+ assert image_shape is not None, "Image shape must be provided"
3140
+ filter_size = min(30, float(numpy.max(image_shape)) / 40.0)
3141
+ else:
3142
+ raise ValueError(f"Unknown smoothing filter size: {automatic_object_width}")
3143
+ return filter_size
3144
+
3145
+
3146
+ def smooth_plane(
3147
+ pixel_data: Image2D,
3148
+ mask: Image2DMask,
3149
+ smoothing_method: SmoothingMethod,
3150
+ automatic_object_width: Optional[SmoothingFilterSize],
3151
+ size_of_smoothing_filter: Optional[int],
3152
+ object_width: Optional[int],
3153
+ image_shape: Optional[Tuple[int, ...]],
3154
+ automatic_splines: Optional[bool],
3155
+ spline_bg_mode: Optional[SplineBackgroundMode],
3156
+ spline_points: Optional[int],
3157
+ spline_threshold: Optional[float],
3158
+ spline_convergence: Optional[float],
3159
+ spline_maximum_iterations: Optional[int],
3160
+ spline_rescale: Optional[float],
3161
+ ) -> Image2D:
3162
+ """Smooth one 2-d color plane of an image"""
3163
+ if smoothing_method == SmoothingMethod.FIT_POLYNOMIAL.value:
3164
+ output_pixels = smooth_with_polynomial(pixel_data, mask)
3165
+ elif smoothing_method == SmoothingMethod.GAUSSIAN_FILTER.value:
3166
+ sigma = _get_sigma(automatic_object_width, size_of_smoothing_filter, object_width, image_shape)
3167
+ output_pixels = smooth_with_gaussian(pixel_data, mask, sigma)
3168
+ elif smoothing_method == SmoothingMethod.MEDIAN_FILTER.value:
3169
+ sigma = _get_sigma(automatic_object_width, size_of_smoothing_filter, object_width, image_shape)
3170
+ output_pixels = smooth_with_median(pixel_data, mask, sigma)
3171
+ elif smoothing_method == SmoothingMethod.TO_AVERAGE.value:
3172
+ output_pixels = smooth_to_average(pixel_data, mask)
3173
+ elif smoothing_method == SmoothingMethod.SPLINES.value:
3174
+ assert automatic_splines is not None, "automatic_splines must be provided for spline smoothing"
3175
+ output_pixels = smooth_with_splines(
3176
+ pixel_data = pixel_data,
3177
+ mask = mask,
3178
+ automatic_splines = automatic_splines,
3179
+ spline_bg_mode = spline_bg_mode,
3180
+ spline_points = spline_points,
3181
+ spline_threshold = spline_threshold,
3182
+ spline_convergence = spline_convergence,
3183
+ spline_maximum_iterations = spline_maximum_iterations,
3184
+ spline_rescale = spline_rescale,
3185
+ )
3186
+ elif smoothing_method == SmoothingMethod.CONVEX_HULL.value:
3187
+ output_pixels = smooth_with_convex_hull(pixel_data, mask)
3188
+ else:
3189
+ raise ValueError(
3190
+ "Unimplemented smoothing method: %s:" % smoothing_method.value
3191
+ )
3192
+ return output_pixels
3193
+
3194
+ def _get_sigma(
3195
+ automatic_object_width: Optional[SmoothingFilterSize],
3196
+ size_of_smoothing_filter: Optional[int],
3197
+ object_width: Optional[int],
3198
+ image_shape: Optional[Tuple[int, ...]],
3199
+ ) -> float:
3200
+ assert automatic_object_width is not None, "automatic_object_width must be provided for Gaussian or Median smoothing"
3201
+ assert size_of_smoothing_filter is not None, "size_of_smoothing_filter must be provided for Gaussian or Median smoothing"
3202
+ assert object_width is not None, "object_width must be provided for Gaussian or Median smoothing"
3203
+ assert image_shape is not None, "image_shape must be provided for Gaussian or Median smoothing"
3204
+ sigma = get_smoothing_filter_size(automatic_object_width, size_of_smoothing_filter, object_width, image_shape) / 2.35 # What's up with 2.35?
3205
+ return sigma
3206
+
3207
+
3208
+ def smooth_with_polynomial(
3209
+ pixel_data: Image2D,
3210
+ mask: Image2DMask
3211
+ ) -> Image2D:
3212
+ return centrosome.smooth.fit_polynomial(pixel_data, mask)
3213
+
3214
+ def smooth_with_gaussian(
3215
+ pixel_data: Image2D,
3216
+ mask: Image2DMask,
3217
+ sigma: float
3218
+ ) -> Image2D:
3219
+ #
3220
+ # Smoothing with the mask is good, even if there's no mask
3221
+ # because the mechanism undoes the edge effects that are introduced
3222
+ # by any choice of how to deal with border effects.
3223
+ #
3224
+ def fn(image):
3225
+ return scipy.ndimage.gaussian_filter(
3226
+ image, sigma, mode="constant", cval=0
3227
+ )
3228
+
3229
+ output_pixels = centrosome.smooth.smooth_with_function_and_mask(
3230
+ pixel_data, fn, mask
3231
+ )
3232
+ return output_pixels
3233
+
3234
+ def smooth_with_median(
3235
+ pixel_data: Image2D,
3236
+ mask: Image2DMask,
3237
+ sigma: float
3238
+ ) -> Image2D:
3239
+ filter_sigma = max(1, int(sigma + 0.5))
3240
+ strel = centrosome.cpmorphology.strel_disk(filter_sigma)
3241
+ rescaled_pixel_data = pixel_data * 65535
3242
+ rescaled_pixel_data = rescaled_pixel_data.astype(numpy.uint16)
3243
+ rescaled_pixel_data *= mask
3244
+ output_pixels = skimage.filters.median(rescaled_pixel_data, strel, behavior="rank")
3245
+ # skimage's rank median preserves the uint16 dtype of its input; rescale
3246
+ # back to the [0, 1]-ish float range the rest of the pipeline expects,
3247
+ # matching the input's precision rather than widening it.
3248
+ return (output_pixels / 65535.0).astype(pixel_data.dtype)
3249
+
3250
+ def smooth_to_average(
3251
+ pixel_data: Image2D,
3252
+ mask: Image2DMask
3253
+ ) -> Image2D:
3254
+ mean = numpy.mean(pixel_data[mask])
3255
+ output_pixels = numpy.ones(pixel_data.shape, pixel_data.dtype) * mean
3256
+ return output_pixels
3257
+
3258
+ def smooth_with_convex_hull(
3259
+ pixel_data: Image2D,
3260
+ mask: Image2DMask
3261
+ ) -> Image2D:
3262
+ """Use the convex hull transform to smooth the image"""
3263
+ #
3264
+ # Apply an erosion, then the transform, then a dilation, heuristically
3265
+ # to ignore little spikey noisy things.
3266
+ #
3267
+ image = centrosome.cpmorphology.grey_erosion(pixel_data, 2, mask)
3268
+ image = centrosome.filter.convex_hull_transform(image, mask=mask)
3269
+ image = centrosome.cpmorphology.grey_dilation(image, 2, mask)
3270
+ return image
3271
+
3272
+
3273
+ def smooth_with_splines(
3274
+ pixel_data: Image2D,
3275
+ mask: Image2DMask,
3276
+ automatic_splines: bool,
3277
+ spline_bg_mode: Optional[SplineBackgroundMode],
3278
+ spline_points: Optional[int],
3279
+ spline_threshold: Optional[float],
3280
+ spline_convergence: Optional[float],
3281
+ spline_maximum_iterations: Optional[int],
3282
+ spline_rescale: Optional[float],
3283
+ ) -> Image2D:
3284
+ assert automatic_splines is not None, "automatic_splines must be provided for spline smoothing"
3285
+ if automatic_splines:
3286
+ # Make the image 200 pixels long on its shortest side
3287
+ shortest_side = min(pixel_data.shape)
3288
+ if shortest_side < 200:
3289
+ scale = 1
3290
+ else:
3291
+ scale = float(shortest_side) / 200
3292
+ result = centrosome.bg_compensate.backgr(pixel_data, mask, scale=scale) # type: ignore # scale can be a float
3293
+ else:
3294
+ assert spline_bg_mode is not None, "spline_bg_mode must be provided for spline smoothing"
3295
+ assert spline_points is not None, "spline_points must be provided for spline smoothing"
3296
+ assert spline_threshold is not None, "spline_threshold must be provided for spline smoothing"
3297
+ assert spline_convergence is not None, "spline_convergence must be provided for spline smoothing"
3298
+ assert spline_maximum_iterations is not None, "spline_maximum_iterations must be provided for spline smoothing"
3299
+ assert spline_rescale is not None, "spline_rescale must be provided for spline smoothing"
3300
+ mode = spline_bg_mode
3301
+ spline_points = spline_points
3302
+ threshold = spline_threshold
3303
+ convergence = spline_convergence
3304
+ iterations = spline_maximum_iterations
3305
+ rescale = spline_rescale
3306
+ result = centrosome.bg_compensate.backgr(
3307
+ pixel_data,
3308
+ mask,
3309
+ mode=mode,
3310
+ thresh=threshold, # type: ignore # threshold can be a float
3311
+ splinepoints=spline_points,
3312
+ scale=rescale, # type: ignore # scale can be a float
3313
+ maxiter=iterations,
3314
+ convergence=convergence,
3315
+ )
3316
+ #
3317
+ # The result is a fit to the background intensity, but we
3318
+ # want to normalize the intensity by subtraction, leaving
3319
+ # the mean intensity alone.
3320
+ #
3321
+ if mask is not None:
3322
+ mean_intensity = numpy.mean(result[mask])
3323
+ result[mask] -= mean_intensity
3324
+ else:
3325
+ mean_intensity = numpy.mean(result)
3326
+ result -= mean_intensity
3327
+ return result