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.
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/PKG-INFO +1 -1
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/_version.py +3 -3
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/functions/image_processing.py +85 -0
- cellprofiler_library_nightly-5.0.0.dev466/cellprofiler_library/modules/_graytocolor.py +58 -0
- cellprofiler_library_nightly-5.0.0.dev466/cellprofiler_library/opts/graytocolor.py +20 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library_nightly.egg-info/PKG-INFO +1 -1
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library_nightly.egg-info/SOURCES.txt +2 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/LICENSE +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/README.md +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/__init__.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/functions/__init__.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/functions/file_processing.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/functions/measurement.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/functions/object_processing.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/functions/segmentation.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/__init__.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_closing.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_colortogray.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_combineobjects.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_convertimagetoobjects.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_convertobjectstoimage.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_correctilluminationapply.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_crop.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_dilateimage.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_dilateobjects.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_enhanceedges.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_enhanceorsuppressfeatures.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_erodeimage.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_erodeobjects.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_expandorshrinkobjects.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_fillobjects.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_gaussianfilter.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_identifyprimaryobjects.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_identifysecondaryobjects.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_identifytertiaryobjects.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_imagemath.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_measureimageoverlap.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_measureobjectsizeshape.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_medialaxis.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_medianfilter.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_morph.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_morphologicalskeleton.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_opening.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_overlayobjects.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_overlayoutlines.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_reducenoise.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_removeholes.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_resize.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_savecroppedobjects.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_shrinktoobjectcenters.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_threshold.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/modules/_watershed.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/__init__.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/colortogray.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/convertimagetoobjects.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/convertobjectstoimage.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/correctilluminationapply.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/crop.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/dilateimage.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/dilateobjects.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/enhanceorsuppressfeatures.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/erodeimage.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/erodeobjects.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/identifyprimaryobjects.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/identifysecondaryobjects.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/identifytertiaryobjects.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/imagemath.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/measureimageoverlap.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/morph.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/objectsizeshapefeatures.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/overlayoutlines.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/removeholes.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/resize.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/shrinktoobjectcenters.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/structuring_elements.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/opts/threshold.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/py.typed +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library/types.py +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library_nightly.egg-info/dependency_links.txt +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library_nightly.egg-info/requires.txt +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/cellprofiler_library_nightly.egg-info/top_level.txt +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/environment.yml +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/pyproject.toml +0 -0
- {cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/setup.cfg +0 -0
{cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cellprofiler-library-nightly
|
|
3
|
-
Version: 5.0.0.
|
|
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.
|
|
32
|
-
__version_tuple__ = version_tuple = (5, 0, 0, '
|
|
31
|
+
__version__ = version = '5.0.0.dev466'
|
|
32
|
+
__version_tuple__ = version_tuple = (5, 0, 0, 'dev466')
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
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.
|
|
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
|
{cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/LICENSE
RENAMED
|
File without changes
|
{cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cellprofiler_library_nightly-5.0.0.dev462 → cellprofiler_library_nightly-5.0.0.dev466}/setup.cfg
RENAMED
|
File without changes
|