dcnum 0.20.4__tar.gz → 0.21.1__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.

Potentially problematic release.


This version of dcnum might be problematic. Click here for more details.

Files changed (105) hide show
  1. {dcnum-0.20.4 → dcnum-0.21.1}/CHANGELOG +6 -0
  2. {dcnum-0.20.4/src/dcnum.egg-info → dcnum-0.21.1}/PKG-INFO +1 -1
  3. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/_version.py +2 -2
  4. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/meta/ppid.py +1 -1
  5. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/segm/segmenter.py +9 -3
  6. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/segm/segmenter_gpu.py +0 -1
  7. {dcnum-0.20.4 → dcnum-0.21.1/src/dcnum.egg-info}/PKG-INFO +1 -1
  8. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_segm_base.py +6 -0
  9. {dcnum-0.20.4 → dcnum-0.21.1}/.github/workflows/check.yml +0 -0
  10. {dcnum-0.20.4 → dcnum-0.21.1}/.github/workflows/deploy_pypi.yml +0 -0
  11. {dcnum-0.20.4 → dcnum-0.21.1}/.gitignore +0 -0
  12. {dcnum-0.20.4 → dcnum-0.21.1}/.readthedocs.yml +0 -0
  13. {dcnum-0.20.4 → dcnum-0.21.1}/LICENSE +0 -0
  14. {dcnum-0.20.4 → dcnum-0.21.1}/README.rst +0 -0
  15. {dcnum-0.20.4 → dcnum-0.21.1}/docs/conf.py +0 -0
  16. {dcnum-0.20.4 → dcnum-0.21.1}/docs/extensions/github_changelog.py +0 -0
  17. {dcnum-0.20.4 → dcnum-0.21.1}/docs/index.rst +0 -0
  18. {dcnum-0.20.4 → dcnum-0.21.1}/docs/requirements.txt +0 -0
  19. {dcnum-0.20.4 → dcnum-0.21.1}/pyproject.toml +0 -0
  20. {dcnum-0.20.4 → dcnum-0.21.1}/setup.cfg +0 -0
  21. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/__init__.py +0 -0
  22. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/feat/__init__.py +0 -0
  23. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/feat/event_extractor_manager_thread.py +0 -0
  24. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/feat/feat_background/__init__.py +0 -0
  25. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/feat/feat_background/base.py +0 -0
  26. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/feat/feat_background/bg_copy.py +0 -0
  27. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/feat/feat_background/bg_roll_median.py +0 -0
  28. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/feat/feat_background/bg_sparse_median.py +0 -0
  29. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/feat/feat_brightness/__init__.py +0 -0
  30. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/feat/feat_brightness/bright_all.py +0 -0
  31. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/feat/feat_brightness/common.py +0 -0
  32. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/feat/feat_contour/__init__.py +0 -0
  33. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/feat/feat_contour/contour.py +0 -0
  34. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/feat/feat_contour/moments.py +0 -0
  35. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/feat/feat_contour/volume.py +0 -0
  36. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/feat/feat_texture/__init__.py +0 -0
  37. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/feat/feat_texture/common.py +0 -0
  38. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/feat/feat_texture/tex_all.py +0 -0
  39. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/feat/gate.py +0 -0
  40. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/feat/queue_event_extractor.py +0 -0
  41. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/logic/__init__.py +0 -0
  42. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/logic/ctrl.py +0 -0
  43. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/logic/job.py +0 -0
  44. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/logic/json_encoder.py +0 -0
  45. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/meta/__init__.py +0 -0
  46. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/meta/paths.py +0 -0
  47. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/read/__init__.py +0 -0
  48. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/read/cache.py +0 -0
  49. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/read/const.py +0 -0
  50. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/read/hdf5_data.py +0 -0
  51. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/read/mapped.py +0 -0
  52. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/segm/__init__.py +0 -0
  53. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/segm/segm_thresh.py +0 -0
  54. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/segm/segmenter_cpu.py +0 -0
  55. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/segm/segmenter_manager_thread.py +0 -0
  56. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/write/__init__.py +0 -0
  57. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/write/deque_writer_thread.py +0 -0
  58. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/write/queue_collector_thread.py +0 -0
  59. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum/write/writer.py +0 -0
  60. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum.egg-info/SOURCES.txt +0 -0
  61. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum.egg-info/dependency_links.txt +0 -0
  62. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum.egg-info/requires.txt +0 -0
  63. {dcnum-0.20.4 → dcnum-0.21.1}/src/dcnum.egg-info/top_level.txt +0 -0
  64. {dcnum-0.20.4 → dcnum-0.21.1}/tests/conftest.py +0 -0
  65. {dcnum-0.20.4 → dcnum-0.21.1}/tests/data/fmt-hdf5_cytoshot_extended-moments-features.zip +0 -0
  66. {dcnum-0.20.4 → dcnum-0.21.1}/tests/data/fmt-hdf5_cytoshot_full-features_2023.zip +0 -0
  67. {dcnum-0.20.4 → dcnum-0.21.1}/tests/data/fmt-hdf5_cytoshot_full-features_2024.zip +0 -0
  68. {dcnum-0.20.4 → dcnum-0.21.1}/tests/data/fmt-hdf5_cytoshot_full-features_legacy_allev_2023.zip +0 -0
  69. {dcnum-0.20.4 → dcnum-0.21.1}/tests/data/fmt-hdf5_shapein_empty.zip +0 -0
  70. {dcnum-0.20.4 → dcnum-0.21.1}/tests/data/fmt-hdf5_shapein_raw-with-variable-length-logs.zip +0 -0
  71. {dcnum-0.20.4 → dcnum-0.21.1}/tests/helper_methods.py +0 -0
  72. {dcnum-0.20.4 → dcnum-0.21.1}/tests/requirements.txt +0 -0
  73. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_feat_background_base.py +0 -0
  74. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_feat_background_bg_copy.py +0 -0
  75. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_feat_background_bg_roll_median.py +0 -0
  76. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_feat_background_bg_sparsemed.py +0 -0
  77. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_feat_brightness.py +0 -0
  78. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_feat_event_extractor_manager.py +0 -0
  79. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_feat_gate.py +0 -0
  80. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_feat_haralick.py +0 -0
  81. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_feat_moments_based.py +0 -0
  82. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_feat_moments_based_extended.py +0 -0
  83. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_feat_volume.py +0 -0
  84. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_init.py +0 -0
  85. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_logic_job.py +0 -0
  86. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_logic_join.py +0 -0
  87. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_logic_json.py +0 -0
  88. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_logic_pipeline.py +0 -0
  89. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_meta_paths.py +0 -0
  90. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_meta_ppid_base.py +0 -0
  91. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_meta_ppid_bg.py +0 -0
  92. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_meta_ppid_data.py +0 -0
  93. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_meta_ppid_feat.py +0 -0
  94. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_meta_ppid_gate.py +0 -0
  95. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_meta_ppid_segm.py +0 -0
  96. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_read_basin.py +0 -0
  97. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_read_concat_hdf5.py +0 -0
  98. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_read_hdf5.py +0 -0
  99. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_read_hdf5_basins.py +0 -0
  100. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_read_hdf5_index_mapping.py +0 -0
  101. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_segm_no_mask_proc.py +0 -0
  102. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_segm_thresh.py +0 -0
  103. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_write_deque_writer_thread.py +0 -0
  104. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_write_queue_collector_thread.py +0 -0
  105. {dcnum-0.20.4 → dcnum-0.21.1}/tests/test_write_writer.py +0 -0
@@ -1,3 +1,9 @@
1
+ 0.21.1
2
+ - enh: support boolean images in mask postprocessing
3
+ 0.21.0
4
+ - fix: GPUSegmenter did not perform mask postprocessing
5
+ - ref: enable mask postprocessing by default for all segmenters
6
+ - ref: increment DCNUM_PPID_GENERATION to 9
1
7
  0.20.4
2
8
  - fix: slot_chunks were not performed in increasing order, making it
3
9
  impossible for writer to continue writing and consequent OOM
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dcnum
3
- Version: 0.20.4
3
+ Version: 0.21.1
4
4
  Summary: numerics toolbox for imaging deformability cytometry
5
5
  Author: Maximilian Schlögel, Paul Müller
6
6
  Maintainer-email: Paul Müller <dev@craban.de>
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.20.4'
16
- __version_tuple__ = version_tuple = (0, 20, 4)
15
+ __version__ = version = '0.21.1'
16
+ __version_tuple__ = version_tuple = (0, 21, 1)
@@ -10,7 +10,7 @@ import warnings
10
10
 
11
11
  #: Increment this string if there are breaking changes that make
12
12
  #: previous pipelines unreproducible.
13
- DCNUM_PPID_GENERATION = "8"
13
+ DCNUM_PPID_GENERATION = "9"
14
14
 
15
15
 
16
16
  class ClassWithPPIDCapabilities(Protocol):
@@ -19,7 +19,7 @@ class Segmenter(abc.ABC):
19
19
  #: Whether to enable mask post-processing. If disabled, you should
20
20
  #: make sure that your mask is properly defined and cleaned or you
21
21
  #: have to call `process_mask` in your `segment_approach` implementation.
22
- mask_postprocessing = False
22
+ mask_postprocessing = True
23
23
  #: Default keyword arguments for mask post-processing. See `process_mask`
24
24
  #: for available options.
25
25
  mask_default_kwargs = {}
@@ -184,8 +184,8 @@ class Segmenter(abc.ABC):
184
184
 
185
185
  Parameters
186
186
  ----------
187
- labels: 2d integer ndarray
188
- Labeled input (contains blobs with same number)
187
+ labels: 2d integer or boolean ndarray
188
+ Labeled input (contains blobs consisting of unique numbers)
189
189
  clear_border: bool
190
190
  clear the image boarder using
191
191
  :func:`skimage.segmentation.clear_border`
@@ -196,6 +196,12 @@ class Segmenter(abc.ABC):
196
196
  if > 0, perform a binary closing with a disk
197
197
  of that radius in pixels
198
198
  """
199
+ if labels.dtype == np.bool_:
200
+ # Convert mask image to labels
201
+ labels, _ = ndi.label(
202
+ input=labels,
203
+ structure=ndi.generate_binary_structure(2, 2))
204
+
199
205
  if clear_border:
200
206
  #
201
207
  # from skimage import segmentation
@@ -10,7 +10,6 @@ from .segmenter import Segmenter
10
10
 
11
11
  class GPUSegmenter(Segmenter, abc.ABC):
12
12
  hardware_processor = "gpu"
13
- mask_postprocessing = False
14
13
 
15
14
  def __init__(self,
16
15
  *,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dcnum
3
- Version: 0.20.4
3
+ Version: 0.21.1
4
4
  Summary: numerics toolbox for imaging deformability cytometry
5
5
  Author: Maximilian Schlögel, Paul Müller
6
6
  Maintainer-email: Paul Müller <dev@craban.de>
@@ -37,6 +37,12 @@ class MockImageData:
37
37
  return chunk
38
38
 
39
39
 
40
+ def test_segmenter_properties():
41
+ assert segm.CPUSegmenter.mask_postprocessing # sanity check
42
+ assert segm.GPUSegmenter.mask_postprocessing # fixed in 0.21.0
43
+ assert segm.Segmenter.mask_postprocessing # new default in 0.21.0
44
+
45
+
40
46
  def test_segmenter_labeled_mask():
41
47
  mask = np.array([
42
48
  [0, 0, 0, 0, 0, 0, 0, 0],
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