dcnum 0.25.3__tar.gz → 0.25.5__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 (126) hide show
  1. {dcnum-0.25.3 → dcnum-0.25.5}/CHANGELOG +5 -0
  2. {dcnum-0.25.3 → dcnum-0.25.5}/PKG-INFO +3 -3
  3. {dcnum-0.25.3 → dcnum-0.25.5}/pyproject.toml +2 -1
  4. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/_version.py +2 -2
  5. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/read/hdf5_data.py +16 -7
  6. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum.egg-info/PKG-INFO +3 -3
  7. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum.egg-info/requires.txt +1 -1
  8. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_read_concat_hdf5.py +8 -2
  9. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_read_hdf5.py +24 -0
  10. {dcnum-0.25.3 → dcnum-0.25.5}/.github/workflows/check.yml +0 -0
  11. {dcnum-0.25.3 → dcnum-0.25.5}/.github/workflows/deploy_pypi.yml +0 -0
  12. {dcnum-0.25.3 → dcnum-0.25.5}/.gitignore +0 -0
  13. {dcnum-0.25.3 → dcnum-0.25.5}/.readthedocs.yml +0 -0
  14. {dcnum-0.25.3 → dcnum-0.25.5}/LICENSE +0 -0
  15. {dcnum-0.25.3 → dcnum-0.25.5}/README.rst +0 -0
  16. {dcnum-0.25.3 → dcnum-0.25.5}/benchmark/.gitignore +0 -0
  17. {dcnum-0.25.3 → dcnum-0.25.5}/benchmark/Readme.md +0 -0
  18. {dcnum-0.25.3 → dcnum-0.25.5}/benchmark/benchmark.py +0 -0
  19. {dcnum-0.25.3 → dcnum-0.25.5}/benchmark/bm_write_deque_writer_thread.py +0 -0
  20. {dcnum-0.25.3 → dcnum-0.25.5}/benchmark/bm_write_queue_collector_thread.py +0 -0
  21. {dcnum-0.25.3 → dcnum-0.25.5}/docs/conf.py +0 -0
  22. {dcnum-0.25.3 → dcnum-0.25.5}/docs/extensions/github_changelog.py +0 -0
  23. {dcnum-0.25.3 → dcnum-0.25.5}/docs/index.rst +0 -0
  24. {dcnum-0.25.3 → dcnum-0.25.5}/docs/requirements.txt +0 -0
  25. {dcnum-0.25.3 → dcnum-0.25.5}/setup.cfg +0 -0
  26. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/__init__.py +0 -0
  27. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/feat/__init__.py +0 -0
  28. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/feat/event_extractor_manager_thread.py +0 -0
  29. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/feat/feat_background/__init__.py +0 -0
  30. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/feat/feat_background/base.py +0 -0
  31. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/feat/feat_background/bg_copy.py +0 -0
  32. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/feat/feat_background/bg_roll_median.py +0 -0
  33. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/feat/feat_background/bg_sparse_median.py +0 -0
  34. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/feat/feat_brightness/__init__.py +0 -0
  35. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/feat/feat_brightness/bright_all.py +0 -0
  36. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/feat/feat_brightness/common.py +0 -0
  37. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/feat/feat_contour/__init__.py +0 -0
  38. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/feat/feat_contour/contour.py +0 -0
  39. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/feat/feat_contour/moments.py +0 -0
  40. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/feat/feat_contour/volume.py +0 -0
  41. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/feat/feat_texture/__init__.py +0 -0
  42. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/feat/feat_texture/common.py +0 -0
  43. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/feat/feat_texture/tex_all.py +0 -0
  44. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/feat/gate.py +0 -0
  45. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/feat/queue_event_extractor.py +0 -0
  46. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/logic/__init__.py +0 -0
  47. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/logic/ctrl.py +0 -0
  48. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/logic/job.py +0 -0
  49. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/logic/json_encoder.py +0 -0
  50. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/meta/__init__.py +0 -0
  51. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/meta/paths.py +0 -0
  52. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/meta/ppid.py +0 -0
  53. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/os_env_st.py +0 -0
  54. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/read/__init__.py +0 -0
  55. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/read/cache.py +0 -0
  56. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/read/const.py +0 -0
  57. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/read/detect_flicker.py +0 -0
  58. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/read/mapped.py +0 -0
  59. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/segm/__init__.py +0 -0
  60. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/segm/segm_thresh.py +0 -0
  61. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/segm/segm_torch/__init__.py +0 -0
  62. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/segm/segm_torch/segm_torch_base.py +0 -0
  63. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/segm/segm_torch/segm_torch_mpo.py +0 -0
  64. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/segm/segm_torch/segm_torch_sto.py +0 -0
  65. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/segm/segm_torch/torch_model.py +0 -0
  66. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/segm/segm_torch/torch_postproc.py +0 -0
  67. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/segm/segm_torch/torch_preproc.py +0 -0
  68. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/segm/segmenter.py +0 -0
  69. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/segm/segmenter_manager_thread.py +0 -0
  70. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/segm/segmenter_mpo.py +0 -0
  71. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/segm/segmenter_sto.py +0 -0
  72. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/write/__init__.py +0 -0
  73. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/write/deque_writer_thread.py +0 -0
  74. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/write/queue_collector_thread.py +0 -0
  75. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum/write/writer.py +0 -0
  76. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum.egg-info/SOURCES.txt +0 -0
  77. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum.egg-info/dependency_links.txt +0 -0
  78. {dcnum-0.25.3 → dcnum-0.25.5}/src/dcnum.egg-info/top_level.txt +0 -0
  79. {dcnum-0.25.3 → dcnum-0.25.5}/tests/conftest.py +0 -0
  80. {dcnum-0.25.3 → dcnum-0.25.5}/tests/data/fmt-hdf5_cytoshot_extended-moments-features.zip +0 -0
  81. {dcnum-0.25.3 → dcnum-0.25.5}/tests/data/fmt-hdf5_cytoshot_full-features_2023.zip +0 -0
  82. {dcnum-0.25.3 → dcnum-0.25.5}/tests/data/fmt-hdf5_cytoshot_full-features_2024.zip +0 -0
  83. {dcnum-0.25.3 → dcnum-0.25.5}/tests/data/fmt-hdf5_cytoshot_full-features_legacy_allev_2023.zip +0 -0
  84. {dcnum-0.25.3 → dcnum-0.25.5}/tests/data/fmt-hdf5_shapein_empty.zip +0 -0
  85. {dcnum-0.25.3 → dcnum-0.25.5}/tests/data/fmt-hdf5_shapein_raw-with-variable-length-logs.zip +0 -0
  86. {dcnum-0.25.3 → dcnum-0.25.5}/tests/data/segm-torch-model_unet-dcnum-test_g1_910c2.zip +0 -0
  87. {dcnum-0.25.3 → dcnum-0.25.5}/tests/data/segm-torch-test-data_unet-dcnum-test_g1_910c2.zip +0 -0
  88. {dcnum-0.25.3 → dcnum-0.25.5}/tests/helper_methods.py +0 -0
  89. {dcnum-0.25.3 → dcnum-0.25.5}/tests/requirements.txt +0 -0
  90. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_feat_background_base.py +0 -0
  91. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_feat_background_bg_copy.py +0 -0
  92. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_feat_background_bg_roll_median.py +0 -0
  93. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_feat_background_bg_sparsemed.py +0 -0
  94. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_feat_brightness.py +0 -0
  95. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_feat_event_extractor_manager.py +0 -0
  96. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_feat_gate.py +0 -0
  97. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_feat_haralick.py +0 -0
  98. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_feat_moments_based.py +0 -0
  99. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_feat_moments_based_extended.py +0 -0
  100. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_feat_volume.py +0 -0
  101. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_init.py +0 -0
  102. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_logic_job.py +0 -0
  103. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_logic_join.py +0 -0
  104. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_logic_json.py +0 -0
  105. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_logic_pipeline.py +0 -0
  106. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_meta_paths.py +0 -0
  107. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_meta_ppid_base.py +0 -0
  108. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_meta_ppid_bg.py +0 -0
  109. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_meta_ppid_data.py +0 -0
  110. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_meta_ppid_feat.py +0 -0
  111. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_meta_ppid_gate.py +0 -0
  112. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_meta_ppid_segm.py +0 -0
  113. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_read_basin.py +0 -0
  114. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_read_detect_flicker.py +0 -0
  115. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_read_hdf5_basins.py +0 -0
  116. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_read_hdf5_index_mapping.py +0 -0
  117. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_segm_base.py +0 -0
  118. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_segm_mpo.py +0 -0
  119. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_segm_no_mask_proc.py +0 -0
  120. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_segm_sto.py +0 -0
  121. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_segm_thresh.py +0 -0
  122. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_segm_torch.py +0 -0
  123. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_segm_torch_preproc.py +0 -0
  124. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_write_deque_writer_thread.py +0 -0
  125. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_write_queue_collector_thread.py +0 -0
  126. {dcnum-0.25.3 → dcnum-0.25.5}/tests/test_write_writer.py +0 -0
@@ -1,3 +1,8 @@
1
+ 0.25.5
2
+ - enh: support unnamed table data in `HDF5Data`
3
+ - setup: pin scipy<1.15 due to https://github.com/scipy/scipy/issues/22333
4
+ 0.25.4
5
+ - enh: support passing a single file to `concatenated_hdf5_data`
1
6
  0.25.3
2
7
  - enh: request single threaded operations when going into mp.Process (#17)
3
8
  - enh: new module `dcnum.single_thread_osenv`
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: dcnum
3
- Version: 0.25.3
3
+ Version: 0.25.5
4
4
  Summary: numerics toolbox for imaging deformability cytometry
5
5
  Author: Maximilian Schlögel, Paul Müller, Raghava Alajangi
6
6
  Maintainer-email: Paul Müller <dev@craban.de>
@@ -24,7 +24,7 @@ Requires-Dist: numba<1,>=0.60
24
24
  Requires-Dist: numpy<3,>=1.21
25
25
  Requires-Dist: opencv-python-headless<5,>=4
26
26
  Requires-Dist: scikit-image<1,>=0.24
27
- Requires-Dist: scipy<2,>=1.8.0
27
+ Requires-Dist: scipy<1.15.0,>=1.8.0
28
28
  Provides-Extra: torch
29
29
  Requires-Dist: torch>=2.2; extra == "torch"
30
30
 
@@ -32,7 +32,8 @@ dependencies = [
32
32
  "numpy>=1.21, <3", # BSD
33
33
  "opencv-python-headless>=4, <5", # Apache 2.0
34
34
  "scikit-image>=0.24, <1", # BSD
35
- "scipy>=1.8.0, <2", # BSD
35
+ # https://github.com/scipy/scipy/issues/22333
36
+ "scipy>=1.8.0, <1.15.0", # BSD
36
37
  ]
37
38
  dynamic = ["version"]
38
39
 
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.25.3'
16
- __version_tuple__ = version_tuple = (0, 25, 3)
15
+ __version__ = version = '0.25.5'
16
+ __version_tuple__ = version_tuple = (0, 25, 5)
@@ -198,11 +198,17 @@ class HDF5Data:
198
198
  self.logs[key] = alog
199
199
  # tables
200
200
  for tab in sorted(h5.get("tables", {}).keys()):
201
- tabdict = {}
202
- for tkey in h5["tables"][tab].dtype.fields.keys():
203
- tabdict[tkey] = \
204
- np.array(h5["tables"][tab][tkey]).reshape(-1)
205
- self.tables[tab] = tabdict
201
+ fields = h5["tables"][tab].dtype.fields
202
+ if fields is None:
203
+ # No individual curves, but an image array
204
+ self.tables[tab] = h5["tables"][tab][:]
205
+ else:
206
+ # List of curves with predefined dtypes
207
+ tabdict = {}
208
+ for tkey in fields.keys():
209
+ tabdict[tkey] = \
210
+ np.array(h5["tables"][tab][tkey]).reshape(-1)
211
+ self.tables[tab] = tabdict
206
212
  # basins
207
213
  basins = self.extract_basin_dicts(h5)
208
214
  self.basins = sorted(basins, key=lambda x: x["name"])
@@ -593,8 +599,11 @@ def concatenated_hdf5_data(paths: List[pathlib.Path],
593
599
  raise ValueError(
594
600
  f"Invalid type for `path_out`: {type(path_out)} ({path_out}")
595
601
 
596
- if len(paths) <= 1:
597
- raise ValueError("Please specify at least two files in `paths`!")
602
+ if len(paths) == 0:
603
+ raise ValueError("Please specify at least one file in `paths`!")
604
+ elif len(paths) == 1:
605
+ warnings.warn("Only one file passed to `concatenated_hdf5_data`; this "
606
+ "is equivalent to using `HDF5Data`, but slower.")
598
607
 
599
608
  frames = []
600
609
 
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: dcnum
3
- Version: 0.25.3
3
+ Version: 0.25.5
4
4
  Summary: numerics toolbox for imaging deformability cytometry
5
5
  Author: Maximilian Schlögel, Paul Müller, Raghava Alajangi
6
6
  Maintainer-email: Paul Müller <dev@craban.de>
@@ -24,7 +24,7 @@ Requires-Dist: numba<1,>=0.60
24
24
  Requires-Dist: numpy<3,>=1.21
25
25
  Requires-Dist: opencv-python-headless<5,>=4
26
26
  Requires-Dist: scikit-image<1,>=0.24
27
- Requires-Dist: scipy<2,>=1.8.0
27
+ Requires-Dist: scipy<1.15.0,>=1.8.0
28
28
  Provides-Extra: torch
29
29
  Requires-Dist: torch>=2.2; extra == "torch"
30
30
 
@@ -5,7 +5,7 @@ numba<1,>=0.60
5
5
  numpy<3,>=1.21
6
6
  opencv-python-headless<5,>=4
7
7
  scikit-image<1,>=0.24
8
- scipy<2,>=1.8.0
8
+ scipy<1.15.0,>=1.8.0
9
9
 
10
10
  [torch]
11
11
  torch>=2.2
@@ -89,9 +89,15 @@ def test_concat_invalid_input_path():
89
89
 
90
90
 
91
91
  def test_concat_invalid_input_path_number():
92
+ with pytest.raises(ValueError, match="Please specify at least one"):
93
+ read.concatenated_hdf5_data([])
94
+
95
+
96
+ def test_concat_invalid_input_path_number_warn():
92
97
  path = retrieve_data("fmt-hdf5_cytoshot_full-features_2023.zip")
93
- with pytest.raises(ValueError, match="Please specify at least two"):
94
- read.concatenated_hdf5_data([path])
98
+ with pytest.warns(UserWarning, match="is equivalent to using"):
99
+ hd = read.concatenated_hdf5_data([path])
100
+ assert len(hd) == 40
95
101
 
96
102
 
97
103
  def test_concat_specify_input_feature_number():
@@ -306,6 +306,30 @@ def test_pickling_state_tables():
306
306
  h5d2.tables["sample_table"][lk])
307
307
 
308
308
 
309
+ def test_pickling_state_tables_unnamed():
310
+ path = retrieve_data(
311
+ "fmt-hdf5_cytoshot_full-features_legacy_allev_2023.zip")
312
+ # The original file does not contain any tables, so we write
313
+ # generate a table
314
+ tab_data = np.random.random((400,200))
315
+
316
+ # add table to source file
317
+ with h5py.File(path, "a") as h5:
318
+ h5tab = h5.require_group("tables")
319
+ h5tab.create_dataset(name="unnamed_table",
320
+ data=tab_data)
321
+
322
+ h5d1 = read.HDF5Data(path)
323
+ h5d1.pixel_size = 0.124
324
+ pstate = pickle.dumps(h5d1)
325
+ h5d2 = pickle.loads(pstate)
326
+ assert h5d1.tables
327
+ table = h5d1.tables["unnamed_table"]
328
+ table2 = h5d2.tables["unnamed_table"]
329
+ assert np.all(table[:] == tab_data)
330
+ assert np.all(table2[:] == tab_data)
331
+
332
+
309
333
  def test_read_empty_logs():
310
334
  path = retrieve_data(
311
335
  "fmt-hdf5_cytoshot_full-features_legacy_allev_2023.zip")
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