cellprofiler-library-nightly 5.0.0.dev462__tar.gz → 5.0.0.dev466__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 (84) hide show
  1. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/PKG-INFO +1 -1
  2. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/_version.py +3 -3
  3. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/functions/image_processing.py +85 -0
  4. cellprofiler_library_nightly-5.0.0.dev466/cellprofiler_library/modules/_graytocolor.py +58 -0
  5. cellprofiler_library_nightly-5.0.0.dev466/cellprofiler_library/opts/graytocolor.py +20 -0
  6. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library_nightly.egg-info/PKG-INFO +1 -1
  7. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library_nightly.egg-info/SOURCES.txt +2 -0
  8. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/LICENSE +0 -0
  9. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/README.md +0 -0
  10. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/__init__.py +0 -0
  11. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/functions/__init__.py +0 -0
  12. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/functions/file_processing.py +0 -0
  13. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/functions/measurement.py +0 -0
  14. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/functions/object_processing.py +0 -0
  15. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/functions/segmentation.py +0 -0
  16. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/__init__.py +0 -0
  17. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_closing.py +0 -0
  18. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_colortogray.py +0 -0
  19. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_combineobjects.py +0 -0
  20. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_convertimagetoobjects.py +0 -0
  21. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_convertobjectstoimage.py +0 -0
  22. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_correctilluminationapply.py +0 -0
  23. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_crop.py +0 -0
  24. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_dilateimage.py +0 -0
  25. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_dilateobjects.py +0 -0
  26. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_enhanceedges.py +0 -0
  27. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_enhanceorsuppressfeatures.py +0 -0
  28. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_erodeimage.py +0 -0
  29. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_erodeobjects.py +0 -0
  30. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_expandorshrinkobjects.py +0 -0
  31. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_fillobjects.py +0 -0
  32. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_gaussianfilter.py +0 -0
  33. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_identifyprimaryobjects.py +0 -0
  34. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_identifysecondaryobjects.py +0 -0
  35. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_identifytertiaryobjects.py +0 -0
  36. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_imagemath.py +0 -0
  37. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_measureimageoverlap.py +0 -0
  38. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_measureobjectsizeshape.py +0 -0
  39. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_medialaxis.py +0 -0
  40. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_medianfilter.py +0 -0
  41. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_morph.py +0 -0
  42. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_morphologicalskeleton.py +0 -0
  43. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_opening.py +0 -0
  44. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_overlayobjects.py +0 -0
  45. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_overlayoutlines.py +0 -0
  46. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_reducenoise.py +0 -0
  47. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_removeholes.py +0 -0
  48. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_resize.py +0 -0
  49. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_savecroppedobjects.py +0 -0
  50. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_shrinktoobjectcenters.py +0 -0
  51. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_threshold.py +0 -0
  52. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_watershed.py +0 -0
  53. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/__init__.py +0 -0
  54. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/colortogray.py +0 -0
  55. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/convertimagetoobjects.py +0 -0
  56. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/convertobjectstoimage.py +0 -0
  57. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/correctilluminationapply.py +0 -0
  58. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/crop.py +0 -0
  59. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/dilateimage.py +0 -0
  60. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/dilateobjects.py +0 -0
  61. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/enhanceorsuppressfeatures.py +0 -0
  62. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/erodeimage.py +0 -0
  63. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/erodeobjects.py +0 -0
  64. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/identifyprimaryobjects.py +0 -0
  65. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/identifysecondaryobjects.py +0 -0
  66. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/identifytertiaryobjects.py +0 -0
  67. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/imagemath.py +0 -0
  68. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/measureimageoverlap.py +0 -0
  69. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/morph.py +0 -0
  70. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/objectsizeshapefeatures.py +0 -0
  71. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/overlayoutlines.py +0 -0
  72. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/removeholes.py +0 -0
  73. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/resize.py +0 -0
  74. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/shrinktoobjectcenters.py +0 -0
  75. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/structuring_elements.py +0 -0
  76. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/threshold.py +0 -0
  77. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/py.typed +0 -0
  78. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/types.py +0 -0
  79. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library_nightly.egg-info/dependency_links.txt +0 -0
  80. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library_nightly.egg-info/requires.txt +0 -0
  81. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library_nightly.egg-info/top_level.txt +0 -0
  82. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/environment.yml +0 -0
  83. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/pyproject.toml +0 -0
  84. {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/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.dev462
3
+ Version: 5.0.0.dev466
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>
@@ -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.dev462'
32
- __version_tuple__ = version_tuple = (5, 0, 0, 'dev462')
31
+ __version__ = version = '5.0.0.dev466'
32
+ __version_tuple__ = version_tuple = (5, 0, 0, 'dev466')
33
33
 
34
- __commit_id__ = commit_id = 'g8dcb1b2d8'
34
+ __commit_id__ = commit_id = 'ge958a4dc2'
@@ -1854,3 +1854,88 @@ def imagemath_apply_unary_operation(
1854
1854
  "The operation %s has not been implemented" % opval
1855
1855
  )
1856
1856
  return output_pixel_data, output_mask
1857
+
1858
+
1859
+ ###############################################################################
1860
+ # GrayToColor
1861
+ ###############################################################################
1862
+
1863
+ def gray_to_rgb(
1864
+ pixel_data_arr: List[Optional[Image2DGrayscale]],
1865
+ adjustment_factor_array: List[float],
1866
+ intensities: List[Tuple[float, ...]]=[(1.0, 0.0, 0.0), (0.0, 1.0, 0.0), (0.0, 0.0, 1.0)],
1867
+ wants_rescale: bool=True,
1868
+ ) -> Image2DColor:
1869
+ assert(len(pixel_data_arr) == len(adjustment_factor_array)), f"pixel_data_arr and adjustment_factor_array must be the same length. pixel_data_arr has {len(pixel_data_arr)} elements, adjustment_factor_array has {len(adjustment_factor_array)} elements."
1870
+ assert(len(pixel_data_arr) == len(intensities)), f"pixel_data_arr and intensities must be the same length. pixel_data_arr has {len(pixel_data_arr)} elements, intensities has {len(intensities)} elements."
1871
+
1872
+ parent_image = None
1873
+ rgb_pixel_data = None
1874
+ for pixel_data, adjustment_factor, intensity_triplet in zip(pixel_data_arr, adjustment_factor_array, intensities):
1875
+ if pixel_data is None:
1876
+ continue
1877
+ multiplier = numpy.array(intensity_triplet) * adjustment_factor
1878
+ if wants_rescale:
1879
+ pixel_data = pixel_data /numpy.max(pixel_data)
1880
+ if parent_image is not None:
1881
+ if parent_image.shape != pixel_data.shape:
1882
+ raise ValueError(
1883
+ "The input images have different sizes (%s vs %s)"
1884
+ % (
1885
+ parent_image.shape,
1886
+ pixel_data.shape,
1887
+ )
1888
+ )
1889
+ rgb_pixel_data += numpy.dstack([pixel_data] * 3) * multiplier
1890
+ else:
1891
+ parent_image = pixel_data
1892
+ rgb_pixel_data = numpy.dstack([pixel_data] * 3) * multiplier
1893
+ return rgb_pixel_data
1894
+
1895
+ def gray_to_cmyk(*args, **kwargs):
1896
+ # gray to cmyk has the same implementation as gray to rgb but with different intensities
1897
+ return gray_to_rgb(*args, **kwargs)
1898
+
1899
+
1900
+ def gray_to_composite_color(
1901
+ pixel_data_arr: List[Optional[Image2DGrayscale]],
1902
+ color_array: List[Tuple[int, int, int]],
1903
+ weight_array: List[float],
1904
+ wants_rescale: bool,
1905
+ ) -> Image2DColor:
1906
+ source_channels = pixel_data_arr
1907
+ parent_image = pixel_data_arr[0]
1908
+ for idx, pd in enumerate(source_channels):
1909
+ if pd is None:
1910
+ continue
1911
+ if pd.shape != source_channels[0].shape:
1912
+ raise ValueError(
1913
+ "The input images have different sizes (%s vs %s)"
1914
+ % (
1915
+ source_channels[0].shape,
1916
+ pd.shape,
1917
+ )
1918
+ )
1919
+
1920
+ colors: List[NDArray[numpy.float32]] = []
1921
+ pixel_data = parent_image
1922
+ if wants_rescale:
1923
+ pixel_data = pixel_data / numpy.max(pixel_data)
1924
+ for color_tuple, weight in zip(color_array, weight_array):
1925
+ color = (weight * numpy.array(color_tuple).astype(pixel_data.dtype) / 255)
1926
+ colors += [color[numpy.newaxis, numpy.newaxis, :]]
1927
+ rgb_pixel_data = pixel_data[:, :, numpy.newaxis] * colors[0]
1928
+ for image, color in zip(source_channels[1:], colors[1:]):
1929
+ if wants_rescale:
1930
+ image = image / numpy.max(image)
1931
+ rgb_pixel_data = rgb_pixel_data + image[:, :, numpy.newaxis] * color
1932
+
1933
+ return rgb_pixel_data
1934
+
1935
+
1936
+ def gray_to_stacked_color(
1937
+ pixel_data_arr: List[Optional[Image2DGrayscale]]
1938
+ ) -> Image2DColor:
1939
+ source_channels = pixel_data_arr
1940
+ rgb_pixel_data = numpy.dstack(source_channels)
1941
+ return rgb_pixel_data
@@ -0,0 +1,58 @@
1
+ import numpy
2
+ from numpy.typing import NDArray
3
+ from typing import List, Tuple, Optional
4
+ from pydantic import validate_call, ConfigDict
5
+ from cellprofiler_library.opts.graytocolor import Scheme
6
+ from cellprofiler_library.types import Image2DGrayscale, Image2DColor
7
+ from cellprofiler_library.functions.image_processing import gray_to_rgb, gray_to_cmyk, gray_to_composite_color, gray_to_stacked_color
8
+
9
+ @validate_call(config=ConfigDict(arbitrary_types_allowed=True))
10
+ def gray_to_color(
11
+ pixel_data_arr: List[Optional[Image2DGrayscale]],
12
+ scheme: Scheme,
13
+ color_array: Optional[List[Tuple[int, int, int]]] = None,
14
+ weight_array: Optional[List[float]] = None,
15
+ adjustment_factor_array: Optional[List[float]] = None,
16
+ intensities: List[Tuple[float, ...]]=[(1.0, 0.0, 0.0), (0.0, 1.0, 0.0), (0.0, 0.0, 1.0)],
17
+ wants_rescale: bool=True,
18
+ ) -> Image2DColor:
19
+ rgb_pixel_data = None
20
+ if scheme == Scheme.RGB:
21
+ assert adjustment_factor_array is not None, "adjustment_factor_array must be provided for RGB mode"
22
+ assert intensities is not None, "intensities must be provided for RGB mode"
23
+ rgb_pixel_data = gray_to_rgb(
24
+ pixel_data_arr = pixel_data_arr,
25
+ adjustment_factor_array = adjustment_factor_array,
26
+ intensities = intensities,
27
+ wants_rescale = wants_rescale,
28
+ )
29
+ elif scheme == Scheme.CMYK:
30
+ assert adjustment_factor_array is not None, "adjustment_factor_array must be provided for CMYK mode"
31
+ assert intensities is not None, "intensities must be provided for CMYK mode"
32
+ rgb_pixel_data = gray_to_cmyk(
33
+ pixel_data_arr = pixel_data_arr,
34
+ adjustment_factor_array = adjustment_factor_array,
35
+ intensities = intensities,
36
+ wants_rescale = wants_rescale,
37
+ )
38
+ elif scheme == Scheme.COMPOSITE:
39
+ assert color_array is not None, "color_array must be provided for composite mode"
40
+ assert weight_array is not None, "weight_array must be provided for composite mode"
41
+ rgb_pixel_data = gray_to_composite_color(
42
+ pixel_data_arr = pixel_data_arr,
43
+ color_array = color_array,
44
+ weight_array = weight_array,
45
+ wants_rescale = wants_rescale,
46
+ )
47
+ elif scheme == Scheme.STACK:
48
+ assert pixel_data_arr is not None, "pixel_data_arr must be provided for stack mode"
49
+ rgb_pixel_data = gray_to_stacked_color(
50
+ pixel_data_arr = pixel_data_arr,
51
+ )
52
+ else:
53
+ raise ValueError(f"Unimplemented scheme: {scheme}")
54
+ if scheme.value != Scheme.STACK and wants_rescale:
55
+ # If we rescaled, clip values that went out of range after multiplication
56
+ rgb_pixel_data[rgb_pixel_data > 1] = 1
57
+ return rgb_pixel_data
58
+
@@ -0,0 +1,20 @@
1
+ from enum import Enum
2
+
3
+ class Scheme(str, Enum):
4
+ RGB = "RGB"
5
+ CMYK = "CMYK"
6
+ STACK = "Stack"
7
+ COMPOSITE = "Composite"
8
+ LEAVE_THIS_BLACK = "Leave this black"
9
+
10
+ DEFAULT_COLORS = [
11
+ "#%02x%02x%02x" % color
12
+ for color in (
13
+ (255, 0, 0),
14
+ (0, 255, 0),
15
+ (0, 0, 255),
16
+ (128, 128, 0),
17
+ (128, 0, 128),
18
+ (0, 128, 128),
19
+ )
20
+ ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cellprofiler-library-nightly
3
- Version: 5.0.0.dev462
3
+ Version: 5.0.0.dev466
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>
@@ -29,6 +29,7 @@ cellprofiler_library/modules/_erodeobjects.py
29
29
  cellprofiler_library/modules/_expandorshrinkobjects.py
30
30
  cellprofiler_library/modules/_fillobjects.py
31
31
  cellprofiler_library/modules/_gaussianfilter.py
32
+ cellprofiler_library/modules/_graytocolor.py
32
33
  cellprofiler_library/modules/_identifyprimaryobjects.py
33
34
  cellprofiler_library/modules/_identifysecondaryobjects.py
34
35
  cellprofiler_library/modules/_identifytertiaryobjects.py
@@ -60,6 +61,7 @@ cellprofiler_library/opts/dilateobjects.py
60
61
  cellprofiler_library/opts/enhanceorsuppressfeatures.py
61
62
  cellprofiler_library/opts/erodeimage.py
62
63
  cellprofiler_library/opts/erodeobjects.py
64
+ cellprofiler_library/opts/graytocolor.py
63
65
  cellprofiler_library/opts/identifyprimaryobjects.py
64
66
  cellprofiler_library/opts/identifysecondaryobjects.py
65
67
  cellprofiler_library/opts/identifytertiaryobjects.py