dcnum 0.20.0__tar.gz → 0.20.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.0 → dcnum-0.20.1}/CHANGELOG +3 -0
  2. {dcnum-0.20.0/src/dcnum.egg-info → dcnum-0.20.1}/PKG-INFO +1 -1
  3. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/_version.py +2 -2
  4. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/feat/event_extractor_manager_thread.py +2 -2
  5. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/logic/ctrl.py +1 -1
  6. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/read/const.py +1 -1
  7. {dcnum-0.20.0 → dcnum-0.20.1/src/dcnum.egg-info}/PKG-INFO +1 -1
  8. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_logic_pipeline.py +39 -0
  9. {dcnum-0.20.0 → dcnum-0.20.1}/.github/workflows/check.yml +0 -0
  10. {dcnum-0.20.0 → dcnum-0.20.1}/.github/workflows/deploy_pypi.yml +0 -0
  11. {dcnum-0.20.0 → dcnum-0.20.1}/.gitignore +0 -0
  12. {dcnum-0.20.0 → dcnum-0.20.1}/.readthedocs.yml +0 -0
  13. {dcnum-0.20.0 → dcnum-0.20.1}/LICENSE +0 -0
  14. {dcnum-0.20.0 → dcnum-0.20.1}/README.rst +0 -0
  15. {dcnum-0.20.0 → dcnum-0.20.1}/docs/conf.py +0 -0
  16. {dcnum-0.20.0 → dcnum-0.20.1}/docs/extensions/github_changelog.py +0 -0
  17. {dcnum-0.20.0 → dcnum-0.20.1}/docs/index.rst +0 -0
  18. {dcnum-0.20.0 → dcnum-0.20.1}/docs/requirements.txt +0 -0
  19. {dcnum-0.20.0 → dcnum-0.20.1}/pyproject.toml +0 -0
  20. {dcnum-0.20.0 → dcnum-0.20.1}/setup.cfg +0 -0
  21. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/__init__.py +0 -0
  22. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/feat/__init__.py +0 -0
  23. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/feat/feat_background/__init__.py +0 -0
  24. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/feat/feat_background/base.py +0 -0
  25. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/feat/feat_background/bg_copy.py +0 -0
  26. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/feat/feat_background/bg_roll_median.py +0 -0
  27. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/feat/feat_background/bg_sparse_median.py +0 -0
  28. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/feat/feat_brightness/__init__.py +0 -0
  29. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/feat/feat_brightness/bright_all.py +0 -0
  30. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/feat/feat_brightness/common.py +0 -0
  31. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/feat/feat_contour/__init__.py +0 -0
  32. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/feat/feat_contour/contour.py +0 -0
  33. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/feat/feat_contour/moments.py +0 -0
  34. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/feat/feat_contour/volume.py +0 -0
  35. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/feat/feat_texture/__init__.py +0 -0
  36. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/feat/feat_texture/common.py +0 -0
  37. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/feat/feat_texture/tex_all.py +0 -0
  38. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/feat/gate.py +0 -0
  39. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/feat/queue_event_extractor.py +0 -0
  40. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/logic/__init__.py +0 -0
  41. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/logic/job.py +0 -0
  42. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/logic/json_encoder.py +0 -0
  43. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/meta/__init__.py +0 -0
  44. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/meta/paths.py +0 -0
  45. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/meta/ppid.py +0 -0
  46. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/read/__init__.py +0 -0
  47. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/read/cache.py +0 -0
  48. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/read/hdf5_data.py +0 -0
  49. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/read/mapped.py +0 -0
  50. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/segm/__init__.py +0 -0
  51. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/segm/segm_thresh.py +0 -0
  52. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/segm/segmenter.py +0 -0
  53. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/segm/segmenter_cpu.py +0 -0
  54. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/segm/segmenter_gpu.py +0 -0
  55. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/segm/segmenter_manager_thread.py +0 -0
  56. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/write/__init__.py +0 -0
  57. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/write/deque_writer_thread.py +0 -0
  58. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/write/queue_collector_thread.py +0 -0
  59. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum/write/writer.py +0 -0
  60. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum.egg-info/SOURCES.txt +0 -0
  61. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum.egg-info/dependency_links.txt +0 -0
  62. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum.egg-info/requires.txt +0 -0
  63. {dcnum-0.20.0 → dcnum-0.20.1}/src/dcnum.egg-info/top_level.txt +0 -0
  64. {dcnum-0.20.0 → dcnum-0.20.1}/tests/conftest.py +0 -0
  65. {dcnum-0.20.0 → dcnum-0.20.1}/tests/data/fmt-hdf5_cytoshot_extended-moments-features.zip +0 -0
  66. {dcnum-0.20.0 → dcnum-0.20.1}/tests/data/fmt-hdf5_cytoshot_full-features_2023.zip +0 -0
  67. {dcnum-0.20.0 → dcnum-0.20.1}/tests/data/fmt-hdf5_cytoshot_full-features_2024.zip +0 -0
  68. {dcnum-0.20.0 → dcnum-0.20.1}/tests/data/fmt-hdf5_cytoshot_full-features_legacy_allev_2023.zip +0 -0
  69. {dcnum-0.20.0 → dcnum-0.20.1}/tests/data/fmt-hdf5_shapein_empty.zip +0 -0
  70. {dcnum-0.20.0 → dcnum-0.20.1}/tests/data/fmt-hdf5_shapein_raw-with-variable-length-logs.zip +0 -0
  71. {dcnum-0.20.0 → dcnum-0.20.1}/tests/helper_methods.py +0 -0
  72. {dcnum-0.20.0 → dcnum-0.20.1}/tests/requirements.txt +0 -0
  73. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_feat_background_base.py +0 -0
  74. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_feat_background_bg_copy.py +0 -0
  75. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_feat_background_bg_roll_median.py +0 -0
  76. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_feat_background_bg_sparsemed.py +0 -0
  77. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_feat_brightness.py +0 -0
  78. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_feat_event_extractor_manager.py +0 -0
  79. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_feat_gate.py +0 -0
  80. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_feat_haralick.py +0 -0
  81. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_feat_moments_based.py +0 -0
  82. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_feat_moments_based_extended.py +0 -0
  83. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_feat_volume.py +0 -0
  84. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_init.py +0 -0
  85. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_logic_job.py +0 -0
  86. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_logic_join.py +0 -0
  87. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_logic_json.py +0 -0
  88. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_meta_paths.py +0 -0
  89. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_meta_ppid_base.py +0 -0
  90. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_meta_ppid_bg.py +0 -0
  91. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_meta_ppid_data.py +0 -0
  92. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_meta_ppid_feat.py +0 -0
  93. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_meta_ppid_gate.py +0 -0
  94. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_meta_ppid_segm.py +0 -0
  95. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_read_basin.py +0 -0
  96. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_read_concat_hdf5.py +0 -0
  97. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_read_hdf5.py +0 -0
  98. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_read_hdf5_basins.py +0 -0
  99. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_read_hdf5_index_mapping.py +0 -0
  100. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_segm_base.py +0 -0
  101. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_segm_no_mask_proc.py +0 -0
  102. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_segm_thresh.py +0 -0
  103. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_write_deque_writer_thread.py +0 -0
  104. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_write_queue_collector_thread.py +0 -0
  105. {dcnum-0.20.0 → dcnum-0.20.1}/tests/test_write_writer.py +0 -0
@@ -1,3 +1,6 @@
1
+ 0.20.1
2
+ - fix: relative basin locations not written correctly
3
+ - enh: increase deque size threshold for waiting for writer
1
4
  0.20.0
2
5
  - feat: support reading mapped basins
3
6
  - feat: support writing mapped-basin-based output files
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dcnum
3
- Version: 0.20.0
3
+ Version: 0.20.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.0'
16
- __version_tuple__ = version_tuple = (0, 20, 0)
15
+ __version__ = version = '0.20.1'
16
+ __version_tuple__ = version_tuple = (0, 20, 1)
@@ -96,8 +96,8 @@ class EventExtractorManagerThread(threading.Thread):
96
96
  # If the writer_dq starts filling up, then this could lead to
97
97
  # an oom-kill signal. Stall for the writer to prevent this.
98
98
  ldq = len(self.writer_dq)
99
- if ldq > 100:
100
- stallsec = ldq / 100
99
+ if ldq > 1000:
100
+ stallsec = ldq / 1000
101
101
  self.logger.warning(
102
102
  f"Stalling {stallsec:.1f}s for slow writer")
103
103
  time.sleep(stallsec)
@@ -613,7 +613,7 @@ class DCNumJobRunner(threading.Thread):
613
613
  self.logger.debug(f"Creating basin for {feats}")
614
614
  # Relative and absolute paths.
615
615
  pin = pathlib.Path(hin.filename).resolve()
616
- pout = pathlib.Path(hout.filename).resolve()
616
+ pout = pathlib.Path(hout.filename).resolve().parent
617
617
  paths = [pin, os.path.relpath(pin, pout)]
618
618
  hw.store_basin(name="dcnum basin",
619
619
  features=feats,
@@ -8,7 +8,7 @@ PROTECTED_FEATURES = [
8
8
  "pressure",
9
9
  "temp",
10
10
  "temp_amb",
11
- "time"
11
+ "time",
12
12
  ]
13
13
 
14
14
  # User-defined features may be anything, but if the user needs something
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dcnum
3
- Version: 0.20.0
3
+ Version: 0.20.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>
@@ -88,6 +88,45 @@ def test_basin_strategy_tap():
88
88
  assert "image" in hd
89
89
 
90
90
 
91
+ def test_basin_relative_path():
92
+ path_orig = retrieve_data("fmt-hdf5_cytoshot_full-features_2023.zip")
93
+ path = path_orig.with_name("input.rtdc")
94
+ path_out = path_orig.with_name("out.rtdc")
95
+ with read.concatenated_hdf5_data(5 * [path_orig], path_out=path):
96
+ pass
97
+
98
+ job = logic.DCNumPipelineJob(path_in=path,
99
+ path_out=path_out,
100
+ background_kwargs={"kernel_size": 150},
101
+ basin_strategy="tap",
102
+ debug=True)
103
+ with logic.DCNumJobRunner(job=job) as runner:
104
+ runner.run()
105
+
106
+ dir_new = path_orig.parent / "another_directory"
107
+ dir_new.mkdir()
108
+ path_new = dir_new / path.name
109
+ path_out_new = dir_new / path_out.name
110
+ path.rename(path_new)
111
+ path_out.rename(path_out_new)
112
+
113
+ # Everything should just work, because we have relative paths in the basin.
114
+ with h5py.File(path_out_new) as h5:
115
+ assert h5.attrs["pipeline:dcnum background"] \
116
+ == "sparsemed:k=150^s=1^t=0^f=0.8^o=1"
117
+ assert "image_bg" in h5["events"]
118
+ assert "bg_off" in h5["events"]
119
+ assert "deform" in h5["events"]
120
+ # the rest of the original features are basins!
121
+ assert "time" not in h5["events"]
122
+ assert "image" not in h5["events"]
123
+ for feat in h5["events"]:
124
+ assert len(h5["events"][feat]) == 275
125
+ # The other features are accessed via basins
126
+ hd = read.HDF5Data(h5)
127
+ assert "image" in hd
128
+
129
+
91
130
  def test_chained_pipeline():
92
131
  """Test running two pipelines consecutively"""
93
132
  path_orig = retrieve_data("fmt-hdf5_cytoshot_full-features_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