dclab 0.62.10__tar.gz → 0.62.12__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 dclab might be problematic. Click here for more details.

Files changed (322) hide show
  1. {dclab-0.62.10 → dclab-0.62.12}/.readthedocs.yml +2 -0
  2. {dclab-0.62.10 → dclab-0.62.12}/CHANGELOG +4 -0
  3. {dclab-0.62.10 → dclab-0.62.12}/PKG-INFO +2 -2
  4. {dclab-0.62.10 → dclab-0.62.12}/dclab/_version.py +2 -2
  5. {dclab-0.62.10 → dclab-0.62.12}/dclab/features/emodulus/viscosity.py +4 -0
  6. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_dcor/tables.py +6 -4
  7. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/writer.py +28 -9
  8. {dclab-0.62.10 → dclab-0.62.12}/dclab.egg-info/PKG-INFO +2 -2
  9. {dclab-0.62.10 → dclab-0.62.12}/tests/test_feat_emodulus_viscosity.py +17 -0
  10. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_copier.py +25 -0
  11. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_export_hdf5.py +21 -0
  12. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_fmt_tdms.py +5 -1
  13. {dclab-0.62.10 → dclab-0.62.12}/.gitignore +0 -0
  14. {dclab-0.62.10 → dclab-0.62.12}/LICENSE +0 -0
  15. {dclab-0.62.10 → dclab-0.62.12}/MANIFEST.in +0 -0
  16. {dclab-0.62.10 → dclab-0.62.12}/README.rst +0 -0
  17. {dclab-0.62.10 → dclab-0.62.12}/dclab/__init__.py +0 -0
  18. {dclab-0.62.10 → dclab-0.62.12}/dclab/cached.py +0 -0
  19. {dclab-0.62.10 → dclab-0.62.12}/dclab/cli/__init__.py +0 -0
  20. {dclab-0.62.10 → dclab-0.62.12}/dclab/cli/common.py +0 -0
  21. {dclab-0.62.10 → dclab-0.62.12}/dclab/cli/task_compress.py +0 -0
  22. {dclab-0.62.10 → dclab-0.62.12}/dclab/cli/task_condense.py +0 -0
  23. {dclab-0.62.10 → dclab-0.62.12}/dclab/cli/task_join.py +0 -0
  24. {dclab-0.62.10 → dclab-0.62.12}/dclab/cli/task_repack.py +0 -0
  25. {dclab-0.62.10 → dclab-0.62.12}/dclab/cli/task_split.py +0 -0
  26. {dclab-0.62.10 → dclab-0.62.12}/dclab/cli/task_tdms2rtdc.py +0 -0
  27. {dclab-0.62.10 → dclab-0.62.12}/dclab/cli/task_verify_dataset.py +0 -0
  28. {dclab-0.62.10 → dclab-0.62.12}/dclab/definitions/__init__.py +0 -0
  29. {dclab-0.62.10 → dclab-0.62.12}/dclab/definitions/feat_const.py +0 -0
  30. {dclab-0.62.10 → dclab-0.62.12}/dclab/definitions/feat_logic.py +0 -0
  31. {dclab-0.62.10 → dclab-0.62.12}/dclab/definitions/meta_const.py +0 -0
  32. {dclab-0.62.10 → dclab-0.62.12}/dclab/definitions/meta_logic.py +0 -0
  33. {dclab-0.62.10 → dclab-0.62.12}/dclab/definitions/meta_parse.py +0 -0
  34. {dclab-0.62.10 → dclab-0.62.12}/dclab/downsampling.pyx +0 -0
  35. {dclab-0.62.10 → dclab-0.62.12}/dclab/external/__init__.py +0 -0
  36. {dclab-0.62.10 → dclab-0.62.12}/dclab/external/packaging/LICENSE +0 -0
  37. {dclab-0.62.10 → dclab-0.62.12}/dclab/external/packaging/LICENSE.APACHE +0 -0
  38. {dclab-0.62.10 → dclab-0.62.12}/dclab/external/packaging/LICENSE.BSD +0 -0
  39. {dclab-0.62.10 → dclab-0.62.12}/dclab/external/packaging/__init__.py +0 -0
  40. {dclab-0.62.10 → dclab-0.62.12}/dclab/external/packaging/_structures.py +0 -0
  41. {dclab-0.62.10 → dclab-0.62.12}/dclab/external/packaging/version.py +0 -0
  42. {dclab-0.62.10 → dclab-0.62.12}/dclab/external/skimage/LICENSE +0 -0
  43. {dclab-0.62.10 → dclab-0.62.12}/dclab/external/skimage/__init__.py +0 -0
  44. {dclab-0.62.10 → dclab-0.62.12}/dclab/external/skimage/_find_contours.py +0 -0
  45. {dclab-0.62.10 → dclab-0.62.12}/dclab/external/skimage/_find_contours_cy.pyx +0 -0
  46. {dclab-0.62.10 → dclab-0.62.12}/dclab/external/skimage/_pnpoly.pyx +0 -0
  47. {dclab-0.62.10 → dclab-0.62.12}/dclab/external/skimage/_shared/__init__.py +0 -0
  48. {dclab-0.62.10 → dclab-0.62.12}/dclab/external/skimage/_shared/geometry.pxd +0 -0
  49. {dclab-0.62.10 → dclab-0.62.12}/dclab/external/skimage/_shared/geometry.pyx +0 -0
  50. {dclab-0.62.10 → dclab-0.62.12}/dclab/external/skimage/measure.py +0 -0
  51. {dclab-0.62.10 → dclab-0.62.12}/dclab/external/skimage/pnpoly.py +0 -0
  52. {dclab-0.62.10 → dclab-0.62.12}/dclab/external/statsmodels/LICENSE +0 -0
  53. {dclab-0.62.10 → dclab-0.62.12}/dclab/external/statsmodels/__init__.py +0 -0
  54. {dclab-0.62.10 → dclab-0.62.12}/dclab/external/statsmodels/nonparametric/__init__.py +0 -0
  55. {dclab-0.62.10 → dclab-0.62.12}/dclab/external/statsmodels/nonparametric/_kernel_base.py +0 -0
  56. {dclab-0.62.10 → dclab-0.62.12}/dclab/external/statsmodels/nonparametric/kernel_density.py +0 -0
  57. {dclab-0.62.10 → dclab-0.62.12}/dclab/external/statsmodels/nonparametric/kernels.py +0 -0
  58. {dclab-0.62.10 → dclab-0.62.12}/dclab/features/__init__.py +0 -0
  59. {dclab-0.62.10 → dclab-0.62.12}/dclab/features/bright.py +0 -0
  60. {dclab-0.62.10 → dclab-0.62.12}/dclab/features/bright_bc.py +0 -0
  61. {dclab-0.62.10 → dclab-0.62.12}/dclab/features/bright_perc.py +0 -0
  62. {dclab-0.62.10 → dclab-0.62.12}/dclab/features/contour.py +0 -0
  63. {dclab-0.62.10 → dclab-0.62.12}/dclab/features/emodulus/__init__.py +0 -0
  64. {dclab-0.62.10 → dclab-0.62.12}/dclab/features/emodulus/load.py +0 -0
  65. {dclab-0.62.10 → dclab-0.62.12}/dclab/features/emodulus/lut_HE-2D-FEM-22.txt +0 -0
  66. {dclab-0.62.10 → dclab-0.62.12}/dclab/features/emodulus/lut_HE-3D-FEM-22.txt +0 -0
  67. {dclab-0.62.10 → dclab-0.62.12}/dclab/features/emodulus/lut_LE-2D-FEM-19.txt +0 -0
  68. {dclab-0.62.10 → dclab-0.62.12}/dclab/features/emodulus/pxcorr.py +0 -0
  69. {dclab-0.62.10 → dclab-0.62.12}/dclab/features/emodulus/scale_linear.py +0 -0
  70. {dclab-0.62.10 → dclab-0.62.12}/dclab/features/fl_crosstalk.py +0 -0
  71. {dclab-0.62.10 → dclab-0.62.12}/dclab/features/inert_ratio.py +0 -0
  72. {dclab-0.62.10 → dclab-0.62.12}/dclab/features/volume.py +0 -0
  73. {dclab-0.62.10 → dclab-0.62.12}/dclab/http_utils.py +0 -0
  74. {dclab-0.62.10 → dclab-0.62.12}/dclab/isoelastics/__init__.py +0 -0
  75. {dclab-0.62.10 → dclab-0.62.12}/dclab/isoelastics/iso_HE-2D-FEM-22-area_um-deform.txt +0 -0
  76. {dclab-0.62.10 → dclab-0.62.12}/dclab/isoelastics/iso_HE-2D-FEM-22-volume-deform.txt +0 -0
  77. {dclab-0.62.10 → dclab-0.62.12}/dclab/isoelastics/iso_HE-3D-FEM-22-area_um-deform.txt +0 -0
  78. {dclab-0.62.10 → dclab-0.62.12}/dclab/isoelastics/iso_HE-3D-FEM-22-volume-deform.txt +0 -0
  79. {dclab-0.62.10 → dclab-0.62.12}/dclab/isoelastics/iso_LE-2D-FEM-19-area_um-deform.txt +0 -0
  80. {dclab-0.62.10 → dclab-0.62.12}/dclab/isoelastics/iso_LE-2D-FEM-19-volume-deform.txt +0 -0
  81. {dclab-0.62.10 → dclab-0.62.12}/dclab/isoelastics/iso_LE-2D-ana-18-area_um-deform.txt +0 -0
  82. {dclab-0.62.10 → dclab-0.62.12}/dclab/kde_contours.py +0 -0
  83. {dclab-0.62.10 → dclab-0.62.12}/dclab/kde_methods.py +0 -0
  84. {dclab-0.62.10 → dclab-0.62.12}/dclab/lme4/__init__.py +0 -0
  85. {dclab-0.62.10 → dclab-0.62.12}/dclab/lme4/lme4_template.R +0 -0
  86. {dclab-0.62.10 → dclab-0.62.12}/dclab/lme4/rsetup.py +0 -0
  87. {dclab-0.62.10 → dclab-0.62.12}/dclab/lme4/wrapr.py +0 -0
  88. {dclab-0.62.10 → dclab-0.62.12}/dclab/polygon_filter.py +0 -0
  89. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/__init__.py +0 -0
  90. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/check.py +0 -0
  91. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/config.py +0 -0
  92. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/copier.py +0 -0
  93. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/core.py +0 -0
  94. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/export.py +0 -0
  95. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/feat_anc_core/__init__.py +0 -0
  96. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/feat_anc_core/af_basic.py +0 -0
  97. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/feat_anc_core/af_emodulus.py +0 -0
  98. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/feat_anc_core/af_fl_max_ctc.py +0 -0
  99. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/feat_anc_core/af_image_contour.py +0 -0
  100. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/feat_anc_core/af_ml_class.py +0 -0
  101. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/feat_anc_core/ancillary_feature.py +0 -0
  102. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/feat_anc_ml/__init__.py +0 -0
  103. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/feat_anc_plugin/__init__.py +0 -0
  104. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/feat_anc_plugin/plugin_feature.py +0 -0
  105. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/feat_basin.py +0 -0
  106. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/feat_temp.py +0 -0
  107. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/filter.py +0 -0
  108. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_dcor/__init__.py +0 -0
  109. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_dcor/access_token.py +0 -0
  110. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_dcor/api.py +0 -0
  111. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_dcor/base.py +0 -0
  112. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_dcor/basin.py +0 -0
  113. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_dcor/logs.py +0 -0
  114. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_dict.py +0 -0
  115. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_hdf5/__init__.py +0 -0
  116. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_hdf5/base.py +0 -0
  117. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_hdf5/basin.py +0 -0
  118. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_hdf5/events.py +0 -0
  119. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_hdf5/feat_defect.py +0 -0
  120. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_hdf5/logs.py +0 -0
  121. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_hdf5/tables.py +0 -0
  122. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_hierarchy/__init__.py +0 -0
  123. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_hierarchy/base.py +0 -0
  124. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_hierarchy/events.py +0 -0
  125. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_hierarchy/hfilter.py +0 -0
  126. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_hierarchy/mapper.py +0 -0
  127. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_http.py +0 -0
  128. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_s3.py +0 -0
  129. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_tdms/__init__.py +0 -0
  130. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_tdms/event_contour.py +0 -0
  131. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_tdms/event_image.py +0 -0
  132. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_tdms/event_mask.py +0 -0
  133. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_tdms/event_trace.py +0 -0
  134. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_tdms/exc.py +0 -0
  135. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/fmt_tdms/naming.py +0 -0
  136. {dclab-0.62.10 → dclab-0.62.12}/dclab/rtdc_dataset/load.py +0 -0
  137. {dclab-0.62.10 → dclab-0.62.12}/dclab/statistics.py +0 -0
  138. {dclab-0.62.10 → dclab-0.62.12}/dclab/util.py +0 -0
  139. {dclab-0.62.10 → dclab-0.62.12}/dclab/warn.py +0 -0
  140. {dclab-0.62.10 → dclab-0.62.12}/dclab.egg-info/SOURCES.txt +0 -0
  141. {dclab-0.62.10 → dclab-0.62.12}/dclab.egg-info/dependency_links.txt +0 -0
  142. {dclab-0.62.10 → dclab-0.62.12}/dclab.egg-info/entry_points.txt +0 -0
  143. {dclab-0.62.10 → dclab-0.62.12}/dclab.egg-info/requires.txt +0 -0
  144. {dclab-0.62.10 → dclab-0.62.12}/dclab.egg-info/top_level.txt +0 -0
  145. {dclab-0.62.10 → dclab-0.62.12}/docs/.gitignore +0 -0
  146. {dclab-0.62.10 → dclab-0.62.12}/docs/README.md +0 -0
  147. {dclab-0.62.10 → dclab-0.62.12}/docs/conf.py +0 -0
  148. {dclab-0.62.10 → dclab-0.62.12}/docs/data/example.poly +0 -0
  149. {dclab-0.62.10 → dclab-0.62.12}/docs/data/example.rtdc +0 -0
  150. {dclab-0.62.10 → dclab-0.62.12}/docs/data/example_plugin.py +0 -0
  151. {dclab-0.62.10 → dclab-0.62.12}/docs/data/example_plugin_metadata.py +0 -0
  152. {dclab-0.62.10 → dclab-0.62.12}/docs/data/example_traces.rtdc +0 -0
  153. {dclab-0.62.10 → dclab-0.62.12}/docs/data/example_video.rtdc +0 -0
  154. {dclab-0.62.10 → dclab-0.62.12}/docs/dclab.bib +0 -0
  155. {dclab-0.62.10 → dclab-0.62.12}/docs/extensions/dclab_defs.py +0 -0
  156. {dclab-0.62.10 → dclab-0.62.12}/docs/extensions/fancy_include.py +0 -0
  157. {dclab-0.62.10 → dclab-0.62.12}/docs/extensions/github_changelog.py +0 -0
  158. {dclab-0.62.10 → dclab-0.62.12}/docs/extensions/simple_argparse.py +0 -0
  159. {dclab-0.62.10 → dclab-0.62.12}/docs/figures/DCOR_API_Token_website.png +0 -0
  160. {dclab-0.62.10 → dclab-0.62.12}/docs/index.rst +0 -0
  161. {dclab-0.62.10 → dclab-0.62.12}/docs/logo/dc_logo.png +0 -0
  162. {dclab-0.62.10 → dclab-0.62.12}/docs/logo/dc_logo.svg +0 -0
  163. {dclab-0.62.10 → dclab-0.62.12}/docs/logo/dclab.png +0 -0
  164. {dclab-0.62.10 → dclab-0.62.12}/docs/logo/dclab.svg +0 -0
  165. {dclab-0.62.10 → dclab-0.62.12}/docs/logo/dclab_large_white.png +0 -0
  166. {dclab-0.62.10 → dclab-0.62.12}/docs/logo/dclab_large_white.svg +0 -0
  167. {dclab-0.62.10 → dclab-0.62.12}/docs/logo/favicon.ico +0 -0
  168. {dclab-0.62.10 → dclab-0.62.12}/docs/logo/favicon.svg +0 -0
  169. {dclab-0.62.10 → dclab-0.62.12}/docs/requirements.txt +0 -0
  170. {dclab-0.62.10 → dclab-0.62.12}/docs/sec_advanced_usage.rst +0 -0
  171. {dclab-0.62.10 → dclab-0.62.12}/docs/sec_av_basins/index.rst +0 -0
  172. {dclab-0.62.10 → dclab-0.62.12}/docs/sec_av_dc_io.rst +0 -0
  173. {dclab-0.62.10 → dclab-0.62.12}/docs/sec_av_dc_usage.rst +0 -0
  174. {dclab-0.62.10 → dclab-0.62.12}/docs/sec_av_dcor.rst +0 -0
  175. {dclab-0.62.10 → dclab-0.62.12}/docs/sec_av_emodulus/figures_emodulus/.gitignore +0 -0
  176. {dclab-0.62.10 → dclab-0.62.12}/docs/sec_av_emodulus/figures_emodulus/emodulus_20um_HE-2D-FEM-22.png +0 -0
  177. {dclab-0.62.10 → dclab-0.62.12}/docs/sec_av_emodulus/figures_emodulus/emodulus_20um_HE-3D-FEM-22.png +0 -0
  178. {dclab-0.62.10 → dclab-0.62.12}/docs/sec_av_emodulus/figures_emodulus/emodulus_20um_LE-2D-FEM-19.png +0 -0
  179. {dclab-0.62.10 → dclab-0.62.12}/docs/sec_av_emodulus/figures_emodulus/plot_emodulus_lut.py +0 -0
  180. {dclab-0.62.10 → dclab-0.62.12}/docs/sec_av_emodulus/figures_emodulus/requirements.txt +0 -0
  181. {dclab-0.62.10 → dclab-0.62.12}/docs/sec_av_emodulus/figures_viscosity/LICENSE +0 -0
  182. {dclab-0.62.10 → dclab-0.62.12}/docs/sec_av_emodulus/figures_viscosity/buyukurganci_22_fig3a.jpg +0 -0
  183. {dclab-0.62.10 → dclab-0.62.12}/docs/sec_av_emodulus/figures_viscosity/buyukurganci_22_fig3a.pdf +0 -0
  184. {dclab-0.62.10 → dclab-0.62.12}/docs/sec_av_emodulus/index.rst +0 -0
  185. {dclab-0.62.10 → dclab-0.62.12}/docs/sec_av_feat_plugin.rst +0 -0
  186. {dclab-0.62.10 → dclab-0.62.12}/docs/sec_av_feat_temp.rst +0 -0
  187. {dclab-0.62.10 → dclab-0.62.12}/docs/sec_av_fluorescence.rst +0 -0
  188. {dclab-0.62.10 → dclab-0.62.12}/docs/sec_av_lme4.rst +0 -0
  189. {dclab-0.62.10 → dclab-0.62.12}/docs/sec_av_notation.rst +0 -0
  190. {dclab-0.62.10 → dclab-0.62.12}/docs/sec_av_s3.rst +0 -0
  191. {dclab-0.62.10 → dclab-0.62.12}/docs/sec_av_scatter.rst +0 -0
  192. {dclab-0.62.10 → dclab-0.62.12}/docs/sec_changelog.rst +0 -0
  193. {dclab-0.62.10 → dclab-0.62.12}/docs/sec_cli.rst +0 -0
  194. {dclab-0.62.10 → dclab-0.62.12}/docs/sec_code_reference.rst +0 -0
  195. {dclab-0.62.10 → dclab-0.62.12}/docs/sec_examples.rst +0 -0
  196. {dclab-0.62.10 → dclab-0.62.12}/docs/sec_getting_started.rst +0 -0
  197. {dclab-0.62.10 → dclab-0.62.12}/docs/sec_z_bib.rst +0 -0
  198. {dclab-0.62.10 → dclab-0.62.12}/examples/emodulus_dcor.jpg +0 -0
  199. {dclab-0.62.10 → dclab-0.62.12}/examples/emodulus_dcor.py +0 -0
  200. {dclab-0.62.10 → dclab-0.62.12}/examples/generate_example_images.py +0 -0
  201. {dclab-0.62.10 → dclab-0.62.12}/examples/isoelastics.jpg +0 -0
  202. {dclab-0.62.10 → dclab-0.62.12}/examples/isoelastics.py +0 -0
  203. {dclab-0.62.10 → dclab-0.62.12}/examples/isoelastics_custom.jpg +0 -0
  204. {dclab-0.62.10 → dclab-0.62.12}/examples/isoelastics_custom.py +0 -0
  205. {dclab-0.62.10 → dclab-0.62.12}/examples/lme4_glmer_diff.py +0 -0
  206. {dclab-0.62.10 → dclab-0.62.12}/examples/lme4_lmer.jpg +0 -0
  207. {dclab-0.62.10 → dclab-0.62.12}/examples/lme4_lmer.py +0 -0
  208. {dclab-0.62.10 → dclab-0.62.12}/examples/overview_plot.jpg +0 -0
  209. {dclab-0.62.10 → dclab-0.62.12}/examples/overview_plot.py +0 -0
  210. {dclab-0.62.10 → dclab-0.62.12}/examples/plugin_example.py +0 -0
  211. {dclab-0.62.10 → dclab-0.62.12}/examples/plugin_usage.jpg +0 -0
  212. {dclab-0.62.10 → dclab-0.62.12}/examples/plugin_usage.py +0 -0
  213. {dclab-0.62.10 → dclab-0.62.12}/examples/viscosity_models.jpg +0 -0
  214. {dclab-0.62.10 → dclab-0.62.12}/examples/viscosity_models.py +0 -0
  215. {dclab-0.62.10 → dclab-0.62.12}/pyproject.toml +0 -0
  216. {dclab-0.62.10 → dclab-0.62.12}/scripts/.gitignore +0 -0
  217. {dclab-0.62.10 → dclab-0.62.12}/scripts/README.md +0 -0
  218. {dclab-0.62.10 → dclab-0.62.12}/scripts/fem2iso_volume.py +0 -0
  219. {dclab-0.62.10 → dclab-0.62.12}/scripts/fem2lutiso_std.py +0 -0
  220. {dclab-0.62.10 → dclab-0.62.12}/scripts/fem2rtdc.py +0 -0
  221. {dclab-0.62.10 → dclab-0.62.12}/scripts/lut_recipes/__init__.py +0 -0
  222. {dclab-0.62.10 → dclab-0.62.12}/scripts/lut_recipes/hooks/LUT_analytical_linear-elastic_2Daxis.txt +0 -0
  223. {dclab-0.62.10 → dclab-0.62.12}/scripts/lut_recipes/hooks/README.md +0 -0
  224. {dclab-0.62.10 → dclab-0.62.12}/scripts/lut_recipes/hooks/__init__.py +0 -0
  225. {dclab-0.62.10 → dclab-0.62.12}/scripts/lut_recipes/hooks/common.py +0 -0
  226. {dclab-0.62.10 → dclab-0.62.12}/scripts/lut_recipes/hooks/he_2d_fem_22.py +0 -0
  227. {dclab-0.62.10 → dclab-0.62.12}/scripts/lut_recipes/hooks/he_3d_fem_22.py +0 -0
  228. {dclab-0.62.10 → dclab-0.62.12}/scripts/lut_recipes/hooks/le_2d_fem_19.py +0 -0
  229. {dclab-0.62.10 → dclab-0.62.12}/scripts/lut_recipes/lut_processor.py +0 -0
  230. {dclab-0.62.10 → dclab-0.62.12}/scripts/pixelation_correction.py +0 -0
  231. {dclab-0.62.10 → dclab-0.62.12}/scripts/pixelation_correction_2020.png +0 -0
  232. {dclab-0.62.10 → dclab-0.62.12}/scripts/pixelation_correction_2022.png +0 -0
  233. {dclab-0.62.10 → dclab-0.62.12}/scripts/requirements.txt +0 -0
  234. {dclab-0.62.10 → dclab-0.62.12}/setup.cfg +0 -0
  235. {dclab-0.62.10 → dclab-0.62.12}/setup.py +0 -0
  236. {dclab-0.62.10 → dclab-0.62.12}/tests/README.md +0 -0
  237. {dclab-0.62.10 → dclab-0.62.12}/tests/conftest.py +0 -0
  238. {dclab-0.62.10 → dclab-0.62.12}/tests/data/README.md +0 -0
  239. {dclab-0.62.10 → dclab-0.62.12}/tests/data/example_access_token.dcor-access +0 -0
  240. {dclab-0.62.10 → dclab-0.62.12}/tests/data/example_isoelastics.txt +0 -0
  241. {dclab-0.62.10 → dclab-0.62.12}/tests/data/feat_anc_plugin_creative.py +0 -0
  242. {dclab-0.62.10 → dclab-0.62.12}/tests/data/fmt-hdf5_fl-no-contour_2019.zip +0 -0
  243. {dclab-0.62.10 → dclab-0.62.12}/tests/data/fmt-hdf5_fl_2017.zip +0 -0
  244. {dclab-0.62.10 → dclab-0.62.12}/tests/data/fmt-hdf5_fl_2018.zip +0 -0
  245. {dclab-0.62.10 → dclab-0.62.12}/tests/data/fmt-hdf5_fl_wide-channel_2023.zip +0 -0
  246. {dclab-0.62.10 → dclab-0.62.12}/tests/data/fmt-hdf5_image-bg_2020.zip +0 -0
  247. {dclab-0.62.10 → dclab-0.62.12}/tests/data/fmt-hdf5_image-mask-blood_2021.zip +0 -0
  248. {dclab-0.62.10 → dclab-0.62.12}/tests/data/fmt-hdf5_mask-contour_2018.zip +0 -0
  249. {dclab-0.62.10 → dclab-0.62.12}/tests/data/fmt-hdf5_polygon_gate_2021.zip +0 -0
  250. {dclab-0.62.10 → dclab-0.62.12}/tests/data/fmt-hdf5_raw-cytoshot-exported.zip +0 -0
  251. {dclab-0.62.10 → dclab-0.62.12}/tests/data/fmt-hdf5_segfault-compound_2023.zip +0 -0
  252. {dclab-0.62.10 → dclab-0.62.12}/tests/data/fmt-hdf5_wide-channel_2023.zip +0 -0
  253. {dclab-0.62.10 → dclab-0.62.12}/tests/data/fmt-tdms_2fl-no-image_2017.zip +0 -0
  254. {dclab-0.62.10 → dclab-0.62.12}/tests/data/fmt-tdms_fl-image-bright_2017.zip +0 -0
  255. {dclab-0.62.10 → dclab-0.62.12}/tests/data/fmt-tdms_fl-image-large-fov_2017.zip +0 -0
  256. {dclab-0.62.10 → dclab-0.62.12}/tests/data/fmt-tdms_fl-image_2016.zip +0 -0
  257. {dclab-0.62.10 → dclab-0.62.12}/tests/data/fmt-tdms_fl_2015.zip +0 -0
  258. {dclab-0.62.10 → dclab-0.62.12}/tests/data/fmt-tdms_minimal_2016.zip +0 -0
  259. {dclab-0.62.10 → dclab-0.62.12}/tests/data/fmt-tdms_shapein-2.0.1-no-image_2017.zip +0 -0
  260. {dclab-0.62.10 → dclab-0.62.12}/tests/helper_methods.py +0 -0
  261. {dclab-0.62.10 → dclab-0.62.12}/tests/requirements.txt +0 -0
  262. {dclab-0.62.10 → dclab-0.62.12}/tests/test_cache.py +0 -0
  263. {dclab-0.62.10 → dclab-0.62.12}/tests/test_cli.py +0 -0
  264. {dclab-0.62.10 → dclab-0.62.12}/tests/test_cli_argparse.py +0 -0
  265. {dclab-0.62.10 → dclab-0.62.12}/tests/test_cli_compress.py +0 -0
  266. {dclab-0.62.10 → dclab-0.62.12}/tests/test_cli_condense.py +0 -0
  267. {dclab-0.62.10 → dclab-0.62.12}/tests/test_cli_join.py +0 -0
  268. {dclab-0.62.10 → dclab-0.62.12}/tests/test_cli_repack.py +0 -0
  269. {dclab-0.62.10 → dclab-0.62.12}/tests/test_cli_split.py +0 -0
  270. {dclab-0.62.10 → dclab-0.62.12}/tests/test_config_value_mapping.py +0 -0
  271. {dclab-0.62.10 → dclab-0.62.12}/tests/test_dfn.py +0 -0
  272. {dclab-0.62.10 → dclab-0.62.12}/tests/test_downsampling.py +0 -0
  273. {dclab-0.62.10 → dclab-0.62.12}/tests/test_feat_bright.py +0 -0
  274. {dclab-0.62.10 → dclab-0.62.12}/tests/test_feat_bright_bc.py +0 -0
  275. {dclab-0.62.10 → dclab-0.62.12}/tests/test_feat_bright_perc.py +0 -0
  276. {dclab-0.62.10 → dclab-0.62.12}/tests/test_feat_contour.py +0 -0
  277. {dclab-0.62.10 → dclab-0.62.12}/tests/test_feat_emodulus.py +0 -0
  278. {dclab-0.62.10 → dclab-0.62.12}/tests/test_feat_fl_crosstalk.py +0 -0
  279. {dclab-0.62.10 → dclab-0.62.12}/tests/test_feat_inert_ratio.py +0 -0
  280. {dclab-0.62.10 → dclab-0.62.12}/tests/test_feat_volume.py +0 -0
  281. {dclab-0.62.10 → dclab-0.62.12}/tests/test_http_utils.py +0 -0
  282. {dclab-0.62.10 → dclab-0.62.12}/tests/test_isoelastics.py +0 -0
  283. {dclab-0.62.10 → dclab-0.62.12}/tests/test_kde_contours.py +0 -0
  284. {dclab-0.62.10 → dclab-0.62.12}/tests/test_kde_methods.py +0 -0
  285. {dclab-0.62.10 → dclab-0.62.12}/tests/test_lme4.py +0 -0
  286. {dclab-0.62.10 → dclab-0.62.12}/tests/test_lut_he_2d_fem_22.py +0 -0
  287. {dclab-0.62.10 → dclab-0.62.12}/tests/test_lut_he_3d_fem_22.py +0 -0
  288. {dclab-0.62.10 → dclab-0.62.12}/tests/test_polygon_contains.py +0 -0
  289. {dclab-0.62.10 → dclab-0.62.12}/tests/test_polygon_filter.py +0 -0
  290. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_check_dataset.py +0 -0
  291. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_config.py +0 -0
  292. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_core_feat.py +0 -0
  293. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_downsampling.py +0 -0
  294. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_export.py +0 -0
  295. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_export_avi.py +0 -0
  296. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_export_fcs.py +0 -0
  297. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_export_tsv.py +0 -0
  298. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_feat_anc_core.py +0 -0
  299. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_feat_anc_ml.py +0 -0
  300. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_feat_anc_plugin.py +0 -0
  301. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_feat_basin.py +0 -0
  302. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_feat_basin_mapped.py +0 -0
  303. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_feat_temp.py +0 -0
  304. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_filter.py +0 -0
  305. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_fmt_dcor.py +0 -0
  306. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_fmt_dcor_access_token.py +0 -0
  307. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_fmt_dcor_basin.py +0 -0
  308. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_fmt_dict.py +0 -0
  309. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_fmt_hdf5.py +0 -0
  310. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_fmt_hdf5_basins.py +0 -0
  311. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_fmt_hdf5_basins_internal.py +0 -0
  312. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_fmt_hierarchy.py +0 -0
  313. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_fmt_http.py +0 -0
  314. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_fmt_http_basin.py +0 -0
  315. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_fmt_s3.py +0 -0
  316. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_fmt_s3_basin.py +0 -0
  317. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_hash.py +0 -0
  318. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_kde.py +0 -0
  319. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_limit_events.py +0 -0
  320. {dclab-0.62.10 → dclab-0.62.12}/tests/test_rtdc_writer.py +0 -0
  321. {dclab-0.62.10 → dclab-0.62.12}/tests/test_statistics.py +0 -0
  322. {dclab-0.62.10 → dclab-0.62.12}/tests/test_util.py +0 -0
@@ -8,6 +8,8 @@ build:
8
8
  jobs:
9
9
  post_checkout:
10
10
  - git fetch --unshallow || true
11
+ sphinx:
12
+ configuration: docs/conf.py
11
13
  python:
12
14
  install:
13
15
  - requirements: docs/requirements.txt
@@ -1,3 +1,7 @@
1
+ 0.62.12
2
+ - fix: viscosity computation for MP-PBS at zero flow rate should be NaN
3
+ 0.62.11
4
+ - enh: support plain `numpy.array` tables
1
5
  0.62.10
2
6
  - fix: `basin_definition_copy` failed when more than one basins defined
3
7
  due to redundant loop
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: dclab
3
- Version: 0.62.10
3
+ Version: 0.62.12
4
4
  Summary: Library for real-time deformability cytometry (RT-DC)
5
5
  Author: Benedikt Hartmann, Eoghan O'Connell, Maik Herbig, Maximilian Schlögel, Nadia Sbaa, Paul Müller, Philipp Rosendahl, Raghava Alajangi
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.62.10'
16
- __version_tuple__ = version_tuple = (0, 62, 10)
15
+ __version__ = version = '0.62.12'
16
+ __version_tuple__ = version_tuple = (0, 62, 12)
@@ -120,6 +120,10 @@ def get_viscosity(medium: str = "0.49% MC-PBS",
120
120
  if medium == "water":
121
121
  # We ignore the `model`, because it's user convenient.
122
122
  eta = get_viscosity_water_kestin_1978(temperature=temperature)
123
+ elif not flow_rate:
124
+ # When flow rate is zero, we cannot compute the viscosity for
125
+ # anything other than water above.
126
+ eta = np.nan
123
127
  elif medium in ["0.49% MC-PBS", "0.59% MC-PBS", "0.83% MC-PBS"]:
124
128
  kwargs = {"medium": medium,
125
129
  "temperature": temperature,
@@ -30,11 +30,13 @@ class DCORTables:
30
30
  tables = {}
31
31
  for key in table_data:
32
32
  columns, data = table_data[key]
33
- ds_dt = np.dtype({'names': columns,
34
- 'formats': [np.float64] * len(columns)})
35
33
  tab_data = np.asarray(data)
36
- rec_arr = np.rec.array(tab_data, dtype=ds_dt)
37
- tables[key] = rec_arr
34
+ if columns is not None:
35
+ # We have a rec-array (named columns)
36
+ ds_dt = np.dtype({'names': columns,
37
+ 'formats': [np.float64] * len(columns)})
38
+ tab_data = np.rec.array(tab_data, dtype=ds_dt)
39
+ tables[key] = tab_data
38
40
 
39
41
  self._tables_cache = tables
40
42
  return self._tables_cache
@@ -616,7 +616,7 @@ class RTDCWriter:
616
616
  convfunc = dfn.get_config_value_func(sec, ck)
617
617
  self.h5file.attrs[idk] = convfunc(value)
618
618
 
619
- def store_table(self, name, cmp_array):
619
+ def store_table(self, name, cmp_array, h5_attrs=None):
620
620
  """Store a compound array table
621
621
 
622
622
  Tables are semi-metadata. They may contain information collected
@@ -629,16 +629,33 @@ class RTDCWriter:
629
629
  ----------
630
630
  name: str
631
631
  Name of the table
632
- cmp_array: np.recarray, h5py.Dataset, or dict
632
+ cmp_array: np.recarray, h5py.Dataset, np.ndarray, or dict
633
633
  If a np.recarray or h5py.Dataset are provided, then they
634
634
  are written as-is to the file. If a dictionary is provided,
635
635
  then the dictionary is converted into a numpy recarray.
636
+ If a numpy array is provided, then the array is written
637
+ as a raw table (no column names) to the file.
638
+ h5_attrs: dict, optional
639
+ Attributes to store alongside the corresponding HDF5 dataset
636
640
  """
637
- if isinstance(cmp_array, (np.recarray, h5py.Dataset)):
641
+ if h5_attrs is None:
642
+ h5_attrs = {}
643
+
644
+ if isinstance(cmp_array, np.recarray):
638
645
  # A table is a compound array (np.recarray). If we are here,
639
- # this means that the user passed an instance of np.recarray
640
- # or an instance h5py.Dataset (which we trust to be a proper
646
+ # this means that the user passed an instance of np.recarray.
647
+ pass
648
+ elif isinstance(cmp_array, h5py.Dataset):
649
+ # An instance of h5py.Dataset (which we trust to be a proper
641
650
  # compound dataset at this point). No additional steps needed.
651
+ h5_attrs.update(cmp_array.attrs)
652
+ pass
653
+ elif isinstance(cmp_array, np.ndarray):
654
+ # A numpy array was passed. This usually means we have something
655
+ # that we can look at, so we add image tags.
656
+ h5_attrs['CLASS'] = np.bytes_('IMAGE')
657
+ h5_attrs['IMAGE_VERSION'] = np.bytes_('1.2')
658
+ h5_attrs['IMAGE_SUBCLASS'] = np.bytes_('IMAGE_GRAYSCALE')
642
659
  pass
643
660
  elif isinstance(cmp_array, dict):
644
661
  # The user passed a dict which we now have to convert to a
@@ -659,16 +676,18 @@ class RTDCWriter:
659
676
  else:
660
677
  raise NotImplementedError(
661
678
  f"Cannot convert {type(cmp_array)} to table!")
679
+
680
+ # data
662
681
  group = self.h5file.require_group("tables")
663
682
  tab = group.create_dataset(
664
683
  name,
665
684
  data=cmp_array,
666
685
  fletcher32=True,
667
686
  **self.compression_kwargs)
668
- # Also store metadata
669
- if hasattr(cmp_array, "attrs"):
670
- for key in cmp_array.attrs:
671
- tab.attrs[key] = cmp_array.attrs[key]
687
+
688
+ # metadata
689
+ if h5_attrs:
690
+ tab.attrs.update(h5_attrs)
672
691
 
673
692
  def version_brand(self, old_version=None, write_attribute=True):
674
693
  """Perform version branding
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: dclab
3
- Version: 0.62.10
3
+ Version: 0.62.12
4
4
  Summary: Library for real-time deformability cytometry (RT-DC)
5
5
  Author: Benedikt Hartmann, Eoghan O'Connell, Maik Herbig, Maximilian Schlögel, Nadia Sbaa, Paul Müller, Philipp Rosendahl, Raghava Alajangi
6
6
  Maintainer-email: Paul Müller <dev@craban.de>
@@ -62,6 +62,15 @@ def test_buyukurganci_cell_carrier():
62
62
  assert np.allclose(eta, b)
63
63
 
64
64
 
65
+ def test_buyukurganci_cell_carrier_zero_flow_rate():
66
+ eta = emodulus.viscosity.get_viscosity(medium="0.59% MC-PBS",
67
+ channel_width=20,
68
+ flow_rate=0,
69
+ temperature=21.5,
70
+ model='buyukurganci-2022')
71
+ assert np.isnan(eta)
72
+
73
+
65
74
  @pytest.mark.parametrize("medium", ["0.49% MC-PBS", "0.59% MC-PBS"])
66
75
  def test_buyukurganci_mcpbs_range(medium):
67
76
  # test values
@@ -166,6 +175,14 @@ def test_kestin_water():
166
175
  temperature=ref[:, 0])
167
176
  assert np.allclose(res, ref[:, 1], rtol=8e-5, atol=0)
168
177
 
178
+ # Since water viscosity is not dependent on flow rate, setting
179
+ # flow rate to zero should still work.
180
+ res2 = emodulus.viscosity.get_viscosity(medium="water",
181
+ temperature=ref[:, 0],
182
+ flow_rate=0,
183
+ )
184
+ assert np.allclose(res2, ref[:, 1], rtol=8e-5, atol=0)
185
+
169
186
 
170
187
  def test_kestin_water_range():
171
188
  # test values
@@ -457,6 +457,31 @@ def test_copy_tables():
457
457
  np.pi, 2 * np.pi, 10))
458
458
 
459
459
 
460
+ def test_copy_tables_array_only():
461
+ path = retrieve_data("fmt-hdf5_image-bg_2020.zip")
462
+ path_copy = path.with_name("test_copy.rtdc")
463
+
464
+ # generate a table that consists of an array, not a dict-like object
465
+ tab_data = np.random.random((1000, 300))
466
+
467
+ # add table to source file
468
+ with h5py.File(path, "a") as h5:
469
+ h5tab = h5.require_group("tables")
470
+ h5tab.create_dataset(name="random_data",
471
+ data=tab_data)
472
+ assert not is_properly_compressed(h5["tables/random_data"])
473
+
474
+ # copy
475
+ with h5py.File(path) as h5, h5py.File(path_copy, "w") as hc:
476
+ rtdc_copy(src_h5file=h5,
477
+ dst_h5file=hc)
478
+
479
+ # Make sure this worked
480
+ with h5py.File(path_copy) as hc:
481
+ assert is_properly_compressed(hc["tables/random_data"])
482
+ assert np.all(tab_data == hc["tables/random_data"])
483
+
484
+
460
485
  def test_copy_tables_hdf5_issue_3214():
461
486
  """Checks for a bug in HDF5
462
487
 
@@ -609,6 +609,27 @@ def test_hdf5_tables(tables):
609
609
  assert "src_iratrax" not in h5.get("tables", {})
610
610
 
611
611
 
612
+ def test_hdf5_tables_array_only():
613
+ keys = ["area_um", "deform", "time", "frame", "index_online"]
614
+ ddict = example_data_dict(size=10, keys=keys)
615
+ ds1 = dclab.new_dataset(ddict)
616
+ ds1.config["experiment"]["sample"] = "test"
617
+ ds1.config["experiment"]["run index"] = 1
618
+ ds1.config["imaging"]["frame rate"] = 2000
619
+
620
+ # generate a table that consists of an array, not a dict-like object
621
+ tab_data = np.random.random((1000, 300))
622
+ ds1.tables["iratrax"] = tab_data
623
+
624
+ edest = pathlib.Path(tempfile.mkdtemp())
625
+ f1 = edest / "dclab_test_export_hdf5_1.rtdc"
626
+ ds1.export.hdf5(f1, keys, tables=True)
627
+ with h5py.File(f1, "r") as h5:
628
+ assert "src_iratrax" in h5.get("tables", {})
629
+ assert np.all(h5["tables"]["src_iratrax"] == tab_data)
630
+ assert h5["tables"]["src_iratrax"].attrs["CLASS"] == np.bytes_("IMAGE")
631
+
632
+
612
633
  def test_hdf5_trace_from_tdms():
613
634
  pytest.importorskip("nptdms")
614
635
  ds = new_dataset(retrieve_data("fmt-tdms_2fl-no-image_2017.zip"))
@@ -263,7 +263,11 @@ def test_image_basic():
263
263
  # Transition image
264
264
  assert np.allclose(ds["image"][0], 0)
265
265
  # Real image
266
- assert np.allclose(np.average(ds["image"][1]), 45.1490478515625)
266
+ # 2025-01-23: paulmueller added the atol value, because CI was failing
267
+ # on macOS. Possible reason is underlying ffmpeg build
268
+ # for M1 etc. arm processors :zany_face:
269
+ assert np.allclose(np.average(ds["image"][1]), 45.1490478515625,
270
+ atol=0.5)
267
271
 
268
272
 
269
273
  @pytest.mark.filterwarnings(
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