dcnum 0.25.4__tar.gz → 0.25.6__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.4 → dcnum-0.25.6}/.github/workflows/check.yml +1 -0
  2. {dcnum-0.25.4 → dcnum-0.25.6}/.readthedocs.yml +2 -0
  3. {dcnum-0.25.4 → dcnum-0.25.6}/CHANGELOG +5 -0
  4. {dcnum-0.25.4 → dcnum-0.25.6}/PKG-INFO +3 -3
  5. {dcnum-0.25.4 → dcnum-0.25.6}/pyproject.toml +2 -1
  6. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/_version.py +9 -4
  7. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/read/hdf5_data.py +11 -5
  8. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum.egg-info/PKG-INFO +3 -3
  9. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum.egg-info/requires.txt +1 -1
  10. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_read_hdf5.py +24 -0
  11. {dcnum-0.25.4 → dcnum-0.25.6}/.github/workflows/deploy_pypi.yml +0 -0
  12. {dcnum-0.25.4 → dcnum-0.25.6}/.gitignore +0 -0
  13. {dcnum-0.25.4 → dcnum-0.25.6}/LICENSE +0 -0
  14. {dcnum-0.25.4 → dcnum-0.25.6}/README.rst +0 -0
  15. {dcnum-0.25.4 → dcnum-0.25.6}/benchmark/.gitignore +0 -0
  16. {dcnum-0.25.4 → dcnum-0.25.6}/benchmark/Readme.md +0 -0
  17. {dcnum-0.25.4 → dcnum-0.25.6}/benchmark/benchmark.py +0 -0
  18. {dcnum-0.25.4 → dcnum-0.25.6}/benchmark/bm_write_deque_writer_thread.py +0 -0
  19. {dcnum-0.25.4 → dcnum-0.25.6}/benchmark/bm_write_queue_collector_thread.py +0 -0
  20. {dcnum-0.25.4 → dcnum-0.25.6}/docs/conf.py +0 -0
  21. {dcnum-0.25.4 → dcnum-0.25.6}/docs/extensions/github_changelog.py +0 -0
  22. {dcnum-0.25.4 → dcnum-0.25.6}/docs/index.rst +0 -0
  23. {dcnum-0.25.4 → dcnum-0.25.6}/docs/requirements.txt +0 -0
  24. {dcnum-0.25.4 → dcnum-0.25.6}/setup.cfg +0 -0
  25. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/__init__.py +0 -0
  26. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/feat/__init__.py +0 -0
  27. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/feat/event_extractor_manager_thread.py +0 -0
  28. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/feat/feat_background/__init__.py +0 -0
  29. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/feat/feat_background/base.py +0 -0
  30. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/feat/feat_background/bg_copy.py +0 -0
  31. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/feat/feat_background/bg_roll_median.py +0 -0
  32. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/feat/feat_background/bg_sparse_median.py +0 -0
  33. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/feat/feat_brightness/__init__.py +0 -0
  34. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/feat/feat_brightness/bright_all.py +0 -0
  35. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/feat/feat_brightness/common.py +0 -0
  36. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/feat/feat_contour/__init__.py +0 -0
  37. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/feat/feat_contour/contour.py +0 -0
  38. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/feat/feat_contour/moments.py +0 -0
  39. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/feat/feat_contour/volume.py +0 -0
  40. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/feat/feat_texture/__init__.py +0 -0
  41. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/feat/feat_texture/common.py +0 -0
  42. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/feat/feat_texture/tex_all.py +0 -0
  43. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/feat/gate.py +0 -0
  44. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/feat/queue_event_extractor.py +0 -0
  45. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/logic/__init__.py +0 -0
  46. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/logic/ctrl.py +0 -0
  47. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/logic/job.py +0 -0
  48. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/logic/json_encoder.py +0 -0
  49. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/meta/__init__.py +0 -0
  50. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/meta/paths.py +0 -0
  51. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/meta/ppid.py +0 -0
  52. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/os_env_st.py +0 -0
  53. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/read/__init__.py +0 -0
  54. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/read/cache.py +0 -0
  55. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/read/const.py +0 -0
  56. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/read/detect_flicker.py +0 -0
  57. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/read/mapped.py +0 -0
  58. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/segm/__init__.py +0 -0
  59. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/segm/segm_thresh.py +0 -0
  60. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/segm/segm_torch/__init__.py +0 -0
  61. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/segm/segm_torch/segm_torch_base.py +0 -0
  62. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/segm/segm_torch/segm_torch_mpo.py +0 -0
  63. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/segm/segm_torch/segm_torch_sto.py +0 -0
  64. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/segm/segm_torch/torch_model.py +0 -0
  65. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/segm/segm_torch/torch_postproc.py +0 -0
  66. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/segm/segm_torch/torch_preproc.py +0 -0
  67. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/segm/segmenter.py +0 -0
  68. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/segm/segmenter_manager_thread.py +0 -0
  69. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/segm/segmenter_mpo.py +0 -0
  70. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/segm/segmenter_sto.py +0 -0
  71. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/write/__init__.py +0 -0
  72. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/write/deque_writer_thread.py +0 -0
  73. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/write/queue_collector_thread.py +0 -0
  74. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum/write/writer.py +0 -0
  75. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum.egg-info/SOURCES.txt +0 -0
  76. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum.egg-info/dependency_links.txt +0 -0
  77. {dcnum-0.25.4 → dcnum-0.25.6}/src/dcnum.egg-info/top_level.txt +0 -0
  78. {dcnum-0.25.4 → dcnum-0.25.6}/tests/conftest.py +0 -0
  79. {dcnum-0.25.4 → dcnum-0.25.6}/tests/data/fmt-hdf5_cytoshot_extended-moments-features.zip +0 -0
  80. {dcnum-0.25.4 → dcnum-0.25.6}/tests/data/fmt-hdf5_cytoshot_full-features_2023.zip +0 -0
  81. {dcnum-0.25.4 → dcnum-0.25.6}/tests/data/fmt-hdf5_cytoshot_full-features_2024.zip +0 -0
  82. {dcnum-0.25.4 → dcnum-0.25.6}/tests/data/fmt-hdf5_cytoshot_full-features_legacy_allev_2023.zip +0 -0
  83. {dcnum-0.25.4 → dcnum-0.25.6}/tests/data/fmt-hdf5_shapein_empty.zip +0 -0
  84. {dcnum-0.25.4 → dcnum-0.25.6}/tests/data/fmt-hdf5_shapein_raw-with-variable-length-logs.zip +0 -0
  85. {dcnum-0.25.4 → dcnum-0.25.6}/tests/data/segm-torch-model_unet-dcnum-test_g1_910c2.zip +0 -0
  86. {dcnum-0.25.4 → dcnum-0.25.6}/tests/data/segm-torch-test-data_unet-dcnum-test_g1_910c2.zip +0 -0
  87. {dcnum-0.25.4 → dcnum-0.25.6}/tests/helper_methods.py +0 -0
  88. {dcnum-0.25.4 → dcnum-0.25.6}/tests/requirements.txt +0 -0
  89. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_feat_background_base.py +0 -0
  90. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_feat_background_bg_copy.py +0 -0
  91. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_feat_background_bg_roll_median.py +0 -0
  92. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_feat_background_bg_sparsemed.py +0 -0
  93. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_feat_brightness.py +0 -0
  94. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_feat_event_extractor_manager.py +0 -0
  95. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_feat_gate.py +0 -0
  96. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_feat_haralick.py +0 -0
  97. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_feat_moments_based.py +0 -0
  98. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_feat_moments_based_extended.py +0 -0
  99. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_feat_volume.py +0 -0
  100. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_init.py +0 -0
  101. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_logic_job.py +0 -0
  102. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_logic_join.py +0 -0
  103. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_logic_json.py +0 -0
  104. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_logic_pipeline.py +0 -0
  105. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_meta_paths.py +0 -0
  106. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_meta_ppid_base.py +0 -0
  107. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_meta_ppid_bg.py +0 -0
  108. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_meta_ppid_data.py +0 -0
  109. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_meta_ppid_feat.py +0 -0
  110. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_meta_ppid_gate.py +0 -0
  111. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_meta_ppid_segm.py +0 -0
  112. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_read_basin.py +0 -0
  113. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_read_concat_hdf5.py +0 -0
  114. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_read_detect_flicker.py +0 -0
  115. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_read_hdf5_basins.py +0 -0
  116. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_read_hdf5_index_mapping.py +0 -0
  117. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_segm_base.py +0 -0
  118. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_segm_mpo.py +0 -0
  119. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_segm_no_mask_proc.py +0 -0
  120. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_segm_sto.py +0 -0
  121. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_segm_thresh.py +0 -0
  122. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_segm_torch.py +0 -0
  123. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_segm_torch_preproc.py +0 -0
  124. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_write_deque_writer_thread.py +0 -0
  125. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_write_queue_collector_thread.py +0 -0
  126. {dcnum-0.25.4 → dcnum-0.25.6}/tests/test_write_writer.py +0 -0
@@ -12,6 +12,7 @@ jobs:
12
12
  matrix:
13
13
  python-version: ['3.10', '3.x']
14
14
  os: [macos-latest, ubuntu-latest, windows-latest]
15
+ fail-fast: false
15
16
  timeout-minutes: 30
16
17
 
17
18
  steps:
@@ -5,6 +5,8 @@ build:
5
5
  os: ubuntu-22.04
6
6
  tools:
7
7
  python: "3.11"
8
+ sphinx:
9
+ configuration: docs/conf.py
8
10
  python:
9
11
  install:
10
12
  - requirements: docs/requirements.txt
@@ -1,3 +1,8 @@
1
+ 0.25.6
2
+ - maintenance release
3
+ 0.25.5
4
+ - enh: support unnamed table data in `HDF5Data`
5
+ - setup: pin scipy<1.15 due to https://github.com/scipy/scipy/issues/22333
1
6
  0.25.4
2
7
  - enh: support passing a single file to `concatenated_hdf5_data`
3
8
  0.25.3
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: dcnum
3
- Version: 0.25.4
3
+ Version: 0.25.6
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
 
@@ -1,8 +1,13 @@
1
- # file generated by setuptools_scm
1
+ # file generated by setuptools-scm
2
2
  # don't change, don't track in version control
3
+
4
+ __all__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
5
+
3
6
  TYPE_CHECKING = False
4
7
  if TYPE_CHECKING:
5
- from typing import Tuple, Union
8
+ from typing import Tuple
9
+ from typing import Union
10
+
6
11
  VERSION_TUPLE = Tuple[Union[int, str], ...]
7
12
  else:
8
13
  VERSION_TUPLE = object
@@ -12,5 +17,5 @@ __version__: str
12
17
  __version_tuple__: VERSION_TUPLE
13
18
  version_tuple: VERSION_TUPLE
14
19
 
15
- __version__ = version = '0.25.4'
16
- __version_tuple__ = version_tuple = (0, 25, 4)
20
+ __version__ = version = '0.25.6'
21
+ __version_tuple__ = version_tuple = (0, 25, 6)
@@ -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"])
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: dcnum
3
- Version: 0.25.4
3
+ Version: 0.25.6
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
@@ -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