cellprofiler-library-nightly 5.0.0.dev324__tar.gz → 5.0.0.dev332__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 (60) hide show
  1. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/PKG-INFO +1 -1
  2. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/_version.py +3 -3
  3. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/functions/image_processing.py +34 -0
  4. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/functions/object_processing.py +99 -2
  5. cellprofiler_library_nightly-5.0.0.dev332/cellprofiler_library/modules/_dilateimage.py +37 -0
  6. cellprofiler_library_nightly-5.0.0.dev332/cellprofiler_library/modules/_erodeobjects.py +50 -0
  7. cellprofiler_library_nightly-5.0.0.dev332/cellprofiler_library/opts/dilateimage.py +15 -0
  8. cellprofiler_library_nightly-5.0.0.dev332/cellprofiler_library/opts/erodeobjects.py +15 -0
  9. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library_nightly.egg-info/PKG-INFO +1 -1
  10. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library_nightly.egg-info/SOURCES.txt +4 -0
  11. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/LICENSE +0 -0
  12. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/README.md +0 -0
  13. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/__init__.py +0 -0
  14. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/functions/__init__.py +0 -0
  15. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/functions/file_processing.py +0 -0
  16. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/functions/measurement.py +0 -0
  17. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/functions/segmentation.py +0 -0
  18. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/modules/__init__.py +0 -0
  19. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/modules/_closing.py +0 -0
  20. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/modules/_colortogray.py +0 -0
  21. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/modules/_combineobjects.py +0 -0
  22. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/modules/_convertimagetoobjects.py +0 -0
  23. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/modules/_convertobjectstoimage.py +0 -0
  24. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/modules/_correctilluminationapply.py +0 -0
  25. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/modules/_crop.py +0 -0
  26. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/modules/_enhanceedges.py +0 -0
  27. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/modules/_erodeimage.py +0 -0
  28. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/modules/_expandorshrinkobjects.py +0 -0
  29. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/modules/_fillobjects.py +0 -0
  30. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/modules/_gaussianfilter.py +0 -0
  31. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/modules/_measureimageoverlap.py +0 -0
  32. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/modules/_measureobjectsizeshape.py +0 -0
  33. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/modules/_medialaxis.py +0 -0
  34. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/modules/_medianfilter.py +0 -0
  35. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/modules/_morphologicalskeleton.py +0 -0
  36. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/modules/_opening.py +0 -0
  37. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/modules/_overlayobjects.py +0 -0
  38. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/modules/_reducenoise.py +0 -0
  39. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/modules/_savecroppedobjects.py +0 -0
  40. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/modules/_threshold.py +0 -0
  41. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/modules/_watershed.py +0 -0
  42. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/opts/__init__.py +0 -0
  43. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/opts/colortogray.py +0 -0
  44. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/opts/convertimagetoobjects.py +0 -0
  45. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/opts/convertobjectstoimage.py +0 -0
  46. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/opts/correctilluminationapply.py +0 -0
  47. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/opts/crop.py +0 -0
  48. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/opts/erodeimage.py +0 -0
  49. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/opts/measureimageoverlap.py +0 -0
  50. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/opts/objectsizeshapefeatures.py +0 -0
  51. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/opts/structuring_elements.py +0 -0
  52. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/opts/threshold.py +0 -0
  53. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/py.typed +0 -0
  54. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library/types.py +0 -0
  55. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library_nightly.egg-info/dependency_links.txt +0 -0
  56. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library_nightly.egg-info/requires.txt +0 -0
  57. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/cellprofiler_library_nightly.egg-info/top_level.txt +0 -0
  58. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/environment.yml +0 -0
  59. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/pyproject.toml +0 -0
  60. {cellprofiler_library_nightly-5.0.0.dev324 → cellprofiler_library_nightly-5.0.0.dev332}/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.dev324
3
+ Version: 5.0.0.dev332
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.dev324'
32
- __version_tuple__ = version_tuple = (5, 0, 0, 'dev324')
31
+ __version__ = version = '5.0.0.dev332'
32
+ __version_tuple__ = version_tuple = (5, 0, 0, 'dev332')
33
33
 
34
- __commit_id__ = commit_id = 'g3b394eae0'
34
+ __commit_id__ = commit_id = 'g13c77e82d'
@@ -161,6 +161,40 @@ def morphology_erosion(image: ImageAny, structuring_element: StructuringElement)
161
161
  return y_data
162
162
 
163
163
 
164
+ ################################################################################
165
+ # DilateImage
166
+ ################################################################################
167
+
168
+ def morphology_dilation(image: ImageAny, structuring_element: StructuringElement) -> ImageAny:
169
+ """Apply morphological dilation to an image.
170
+
171
+ Args:
172
+ image: Input image (2D or 3D)
173
+ structuring_element: Structuring element for dilation
174
+
175
+ Returns:
176
+ Dilated image with same dimensions as input
177
+ """
178
+ is_strel_2d = structuring_element.ndim == 2
179
+ is_img_2d = image.ndim == 2
180
+
181
+ if is_strel_2d and not is_img_2d:
182
+ # Apply 2D structuring element to 3D image planewise
183
+ y_data = numpy.zeros_like(image)
184
+ for index, plane in enumerate(image):
185
+ y_data[index] = skimage.morphology.dilation(plane, structuring_element)
186
+ return y_data
187
+
188
+ if not is_strel_2d and is_img_2d:
189
+ raise NotImplementedError(
190
+ "A 3D structuring element cannot be applied to a 2D image."
191
+ )
192
+
193
+ # Apply dilation directly for matching dimensions
194
+ y_data = skimage.morphology.dilation(image, structuring_element)
195
+ return y_data
196
+
197
+
164
198
  def median_filter(image, window_size, mode):
165
199
  return scipy.ndimage.median_filter(image, size=window_size, mode=mode)
166
200
 
@@ -3,12 +3,12 @@ import centrosome.cpmorphology
3
3
  import numpy
4
4
  import scipy.ndimage
5
5
  import skimage.morphology
6
+ import cellprofiler.utilities.morphology
6
7
  import mahotas
7
8
  import matplotlib.cm
8
9
  from numpy.typing import NDArray
9
10
  from typing import Optional, Literal, Tuple
10
- from cellprofiler_library.types import ObjectSegmentation, ImageAnyMask, ObjectLabel, ImageColor, ImageGrayscale, ImageBinary
11
-
11
+ from cellprofiler_library.types import ImageAnyMask, ObjectLabel, ImageColor, ImageGrayscale, ImageBinary, ObjectSegmentation, StructuringElement
12
12
 
13
13
  def shrink_to_point(labels, fill):
14
14
  """
@@ -532,3 +532,100 @@ def image_mode_uint16(
532
532
  alpha[mask] = 1
533
533
  return pixel_data, alpha
534
534
 
535
+
536
+ ################################################################################
537
+ # Morphological Operations Helpers
538
+ ################################################################################
539
+
540
+ def morphological_gradient(x_data: ObjectSegmentation, structuring_element: StructuringElement) -> ObjectSegmentation:
541
+ is_strel_2d = structuring_element.ndim == 2
542
+
543
+ is_img_2d = x_data.ndim == 2
544
+
545
+ if is_strel_2d and not is_img_2d:
546
+ y_data = numpy.zeros_like(x_data)
547
+
548
+ for index, plane in enumerate(x_data):
549
+ y_data[index] = scipy.ndimage.morphological_gradient(
550
+ plane, footprint=structuring_element
551
+ )
552
+
553
+ return y_data
554
+
555
+ if not is_strel_2d and is_img_2d:
556
+ raise NotImplementedError(
557
+ "A 3D structuring element cannot be applied to a 2D image."
558
+ )
559
+
560
+ y_data = scipy.ndimage.morphological_gradient(x_data, footprint=structuring_element)
561
+
562
+ return y_data
563
+
564
+
565
+ ################################################################################
566
+ # ErodeObjects
567
+ ################################################################################
568
+
569
+ def erode_objects_with_structuring_element(
570
+ labels: ObjectSegmentation,
571
+ structuring_element: StructuringElement,
572
+ preserve_midpoints: bool = True,
573
+ relabel_objects: bool = False
574
+ ) -> ObjectSegmentation:
575
+ """Erode objects based on the structuring element provided.
576
+
577
+ This function is similar to the "Shrink" function of ExpandOrShrinkObjects,
578
+ with two major distinctions:
579
+ 1. ErodeObjects supports 3D objects
580
+ 2. An object smaller than the structuring element will be removed entirely
581
+ unless preserve_midpoints is enabled.
582
+
583
+ Args:
584
+ labels: Input labeled objects array
585
+ structuring_element: Structuring element for erosion operation
586
+ preserve_midpoints: If True, preserve central pixels to prevent object removal
587
+ relabel_objects: If True, assign new label numbers to resulting objects
588
+
589
+ Returns:
590
+ Eroded objects array with same dimensions as input
591
+ """
592
+
593
+
594
+ # Calculate morphological gradient to identify object boundaries
595
+ contours = morphological_gradient(
596
+ labels, structuring_element
597
+ )
598
+
599
+ # Erode by removing pixels at object boundaries (where contours != 0)
600
+ y_data = labels * (contours == 0)
601
+
602
+ # Preserve midpoints if requested to prevent object removal
603
+ if preserve_midpoints:
604
+ missing_labels = numpy.setxor1d(labels, y_data)
605
+
606
+ # Check if structuring element is disk with size 1 (special case optimization)
607
+ # Check based on the actual array properties since we're dealing with numpy array
608
+ is_simple_disk = (
609
+ structuring_element.ndim == 2 and
610
+ structuring_element.shape == (3, 3) and
611
+ numpy.array_equal(structuring_element, skimage.morphology.disk(1))
612
+ )
613
+
614
+ if is_simple_disk:
615
+ # For simple disk,1 case, restore missing pixels directly
616
+ y_data += labels * numpy.isin(labels, missing_labels)
617
+ else:
618
+ # For other structuring elements, find and preserve the most central pixels
619
+ for label in missing_labels:
620
+ binary = labels == label
621
+ # Find pixels furthest from the object's edge using distance transform
622
+ midpoint = scipy.ndimage.morphology.distance_transform_edt(binary)
623
+ # Preserve pixels at maximum distance (most central)
624
+ y_data[midpoint == numpy.max(midpoint)] = label
625
+
626
+ # Relabel objects if requested
627
+ if relabel_objects:
628
+ y_data = skimage.morphology.label(y_data)
629
+
630
+ return y_data
631
+
@@ -0,0 +1,37 @@
1
+ # coding=utf-8
2
+
3
+ """
4
+ DilateImage module for the CellProfiler library.
5
+
6
+ This module contains the core algorithms for morphological dilation operations.
7
+ """
8
+
9
+ from pydantic import validate_call, ConfigDict, Field
10
+ from typing import Union, Tuple, Annotated
11
+ from cellprofiler_library.types import ImageAny, StructuringElement
12
+ from cellprofiler_library.functions.image_processing import morphology_dilation, get_structuring_element
13
+ from cellprofiler_library.opts.structuring_elements import StructuringElementShape2D, StructuringElementShape3D
14
+
15
+ StructuringElementSize = Annotated[int, Field(description="Size of structuring element", gt=0)]
16
+ StructuringElementParameters = Tuple[Union[StructuringElementShape2D, StructuringElementShape3D], StructuringElementSize]
17
+
18
+ @validate_call(config=ConfigDict(arbitrary_types_allowed=True))
19
+ def dilate_image(
20
+ image: Annotated[ImageAny, Field(description="Input image to perform dilation on")],
21
+ structuring_element: Annotated[Union[StructuringElement, StructuringElementParameters], Field(description="Structuring element for dilation operation as either an NDArray or a tuple of (StructuringElement[N]D, size)")]
22
+ ) -> ImageAny:
23
+ """Apply morphological dilation to an image.
24
+
25
+ Args:
26
+ image: Input image (2D or 3D grayscale)
27
+ structuring_element: Structuring element for dilation operation as an NDArray or a tuple of (StructuringElement[N]D, size)
28
+
29
+ Returns:
30
+ Dilated image with same dimensions and type as input
31
+
32
+ Raises:
33
+ NotImplementedError: If trying to apply 3D structuring element to 2D image
34
+ """
35
+ if isinstance(structuring_element, tuple):
36
+ structuring_element = get_structuring_element(structuring_element[0], structuring_element[1])
37
+ return morphology_dilation(image, structuring_element)
@@ -0,0 +1,50 @@
1
+ # coding=utf-8
2
+
3
+ """
4
+ ErodeObjects module for the CellProfiler library.
5
+
6
+ This module contains the core algorithms for object erosion operations.
7
+ """
8
+
9
+ from pydantic import validate_call, ConfigDict, Field
10
+ from typing import Union, Tuple, Annotated
11
+ from cellprofiler_library.types import StructuringElement, ObjectSegmentation
12
+ from cellprofiler_library.functions.object_processing import erode_objects_with_structuring_element
13
+ from cellprofiler_library.functions.image_processing import get_structuring_element
14
+ from cellprofiler_library.opts.structuring_elements import StructuringElementShape2D, StructuringElementShape3D
15
+
16
+ StructuringElementSize = Annotated[int, Field(description="Size of structuring element", gt=0)]
17
+ StructuringElementParameters = Tuple[Union[StructuringElementShape2D, StructuringElementShape3D], StructuringElementSize]
18
+
19
+ @validate_call(config=ConfigDict(arbitrary_types_allowed=True))
20
+ def erode_objects(
21
+ labels: Annotated[ObjectSegmentation, Field(description="Input object segmentations")],
22
+ structuring_element: Annotated[Union[StructuringElement, StructuringElementParameters], Field(description="Structuring element for erosion operation as either an NDArray or a tuple of (StructuringElement[N]D, size)")],
23
+ preserve_midpoints: Annotated[bool, Field(description="If set to True, the central pixels for each object will not be eroded. This ensures that objects are not lost.")] = False,
24
+ relabel_objects: Annotated[bool, Field(description="Selecting True will assign new label numbers to resulting objects")] = False
25
+ ) -> ObjectSegmentation:
26
+ """Erode objects based on the structuring element provided.
27
+
28
+ This function is similar to the "Shrink" function of ExpandOrShrinkObjects,
29
+ with two major distinctions:
30
+ 1. ErodeObjects supports 3D objects, unlike ExpandOrShrinkObjects.
31
+ 2. An object smaller than the structuring element will be removed entirely
32
+ unless preserve_midpoints is enabled.
33
+
34
+ Args:
35
+ labels: Input labeled objects array
36
+ structuring_element: Structuring element for erosion operation
37
+ preserve_midpoints: If set to True, the central pixels for each object will not be eroded. This ensures that objects are not lost.
38
+ relabel_objects: If set to True, the resulting objects will be relabeled with new label numbers
39
+
40
+ Returns:
41
+ Eroded objects array with same dimensions as input
42
+ """
43
+ if isinstance(structuring_element, tuple):
44
+ structuring_element = get_structuring_element(structuring_element[0], structuring_element[1])
45
+ return erode_objects_with_structuring_element(
46
+ labels=labels,
47
+ structuring_element=structuring_element,
48
+ preserve_midpoints=preserve_midpoints,
49
+ relabel_objects=relabel_objects
50
+ )
@@ -0,0 +1,15 @@
1
+ # coding=utf-8
2
+
3
+ """
4
+ Options and enums for DilateImage module
5
+ """
6
+
7
+ # Note: DilateImage is a simple morphological operation module that doesn't require
8
+ # complex enums. The main configuration is handled through the StructuringElement
9
+ # setting which is managed by the core framework. This file is created for
10
+ # consistency with the refactoring pattern but may be minimal.
11
+
12
+ # Currently no custom enums needed for DilateImage as it uses standard
13
+ # StructuringElement configuration from cellprofiler_core. For structuring element shapes,
14
+ # see cellprofiler_library.opts.structuring_elements
15
+
@@ -0,0 +1,15 @@
1
+ # coding=utf-8
2
+
3
+ """
4
+ Options and enums for ErodeObjects module
5
+ """
6
+
7
+ # Note: ErodeObjects is a simple morphological operation module that doesn't require
8
+ # complex enums. The main configuration is handled through the StructuringElement
9
+ # setting which is managed by the core framework. This file is created for
10
+ # consistency with the refactoring pattern but may be minimal.
11
+
12
+ # Currently no custom enums needed for ErodeObjects as it uses standard
13
+ # StructuringElement configuration from cellprofiler_core. For structuring element shapes,
14
+ # see cellprofiler_library.opts.structuring_elements
15
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cellprofiler-library-nightly
3
- Version: 5.0.0.dev324
3
+ Version: 5.0.0.dev332
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>
@@ -20,8 +20,10 @@ cellprofiler_library/modules/_convertimagetoobjects.py
20
20
  cellprofiler_library/modules/_convertobjectstoimage.py
21
21
  cellprofiler_library/modules/_correctilluminationapply.py
22
22
  cellprofiler_library/modules/_crop.py
23
+ cellprofiler_library/modules/_dilateimage.py
23
24
  cellprofiler_library/modules/_enhanceedges.py
24
25
  cellprofiler_library/modules/_erodeimage.py
26
+ cellprofiler_library/modules/_erodeobjects.py
25
27
  cellprofiler_library/modules/_expandorshrinkobjects.py
26
28
  cellprofiler_library/modules/_fillobjects.py
27
29
  cellprofiler_library/modules/_gaussianfilter.py
@@ -42,7 +44,9 @@ cellprofiler_library/opts/convertimagetoobjects.py
42
44
  cellprofiler_library/opts/convertobjectstoimage.py
43
45
  cellprofiler_library/opts/correctilluminationapply.py
44
46
  cellprofiler_library/opts/crop.py
47
+ cellprofiler_library/opts/dilateimage.py
45
48
  cellprofiler_library/opts/erodeimage.py
49
+ cellprofiler_library/opts/erodeobjects.py
46
50
  cellprofiler_library/opts/measureimageoverlap.py
47
51
  cellprofiler_library/opts/objectsizeshapefeatures.py
48
52
  cellprofiler_library/opts/structuring_elements.py