dclab 0.62.11__tar.gz → 0.62.13__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 (323) hide show
  1. {dclab-0.62.11 → dclab-0.62.13}/.readthedocs.yml +2 -0
  2. {dclab-0.62.11 → dclab-0.62.13}/CHANGELOG +4 -0
  3. {dclab-0.62.11 → dclab-0.62.13}/PKG-INFO +1 -1
  4. {dclab-0.62.11 → dclab-0.62.13}/dclab/_version.py +2 -2
  5. {dclab-0.62.11 → dclab-0.62.13}/dclab/features/emodulus/viscosity.py +4 -0
  6. dclab-0.62.13/dclab/rtdc_dataset/fmt_dcor/tables.py +64 -0
  7. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/fmt_hdf5/tables.py +28 -1
  8. {dclab-0.62.11 → dclab-0.62.13}/dclab.egg-info/PKG-INFO +1 -1
  9. {dclab-0.62.11 → dclab-0.62.13}/tests/test_feat_emodulus_viscosity.py +17 -0
  10. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_export_hdf5.py +16 -2
  11. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_fmt_tdms.py +5 -1
  12. dclab-0.62.11/dclab/rtdc_dataset/fmt_dcor/tables.py +0 -42
  13. {dclab-0.62.11 → dclab-0.62.13}/.gitignore +0 -0
  14. {dclab-0.62.11 → dclab-0.62.13}/LICENSE +0 -0
  15. {dclab-0.62.11 → dclab-0.62.13}/MANIFEST.in +0 -0
  16. {dclab-0.62.11 → dclab-0.62.13}/README.rst +0 -0
  17. {dclab-0.62.11 → dclab-0.62.13}/dclab/__init__.py +0 -0
  18. {dclab-0.62.11 → dclab-0.62.13}/dclab/cached.py +0 -0
  19. {dclab-0.62.11 → dclab-0.62.13}/dclab/cli/__init__.py +0 -0
  20. {dclab-0.62.11 → dclab-0.62.13}/dclab/cli/common.py +0 -0
  21. {dclab-0.62.11 → dclab-0.62.13}/dclab/cli/task_compress.py +0 -0
  22. {dclab-0.62.11 → dclab-0.62.13}/dclab/cli/task_condense.py +0 -0
  23. {dclab-0.62.11 → dclab-0.62.13}/dclab/cli/task_join.py +0 -0
  24. {dclab-0.62.11 → dclab-0.62.13}/dclab/cli/task_repack.py +0 -0
  25. {dclab-0.62.11 → dclab-0.62.13}/dclab/cli/task_split.py +0 -0
  26. {dclab-0.62.11 → dclab-0.62.13}/dclab/cli/task_tdms2rtdc.py +0 -0
  27. {dclab-0.62.11 → dclab-0.62.13}/dclab/cli/task_verify_dataset.py +0 -0
  28. {dclab-0.62.11 → dclab-0.62.13}/dclab/definitions/__init__.py +0 -0
  29. {dclab-0.62.11 → dclab-0.62.13}/dclab/definitions/feat_const.py +0 -0
  30. {dclab-0.62.11 → dclab-0.62.13}/dclab/definitions/feat_logic.py +0 -0
  31. {dclab-0.62.11 → dclab-0.62.13}/dclab/definitions/meta_const.py +0 -0
  32. {dclab-0.62.11 → dclab-0.62.13}/dclab/definitions/meta_logic.py +0 -0
  33. {dclab-0.62.11 → dclab-0.62.13}/dclab/definitions/meta_parse.py +0 -0
  34. {dclab-0.62.11 → dclab-0.62.13}/dclab/downsampling.pyx +0 -0
  35. {dclab-0.62.11 → dclab-0.62.13}/dclab/external/__init__.py +0 -0
  36. {dclab-0.62.11 → dclab-0.62.13}/dclab/external/packaging/LICENSE +0 -0
  37. {dclab-0.62.11 → dclab-0.62.13}/dclab/external/packaging/LICENSE.APACHE +0 -0
  38. {dclab-0.62.11 → dclab-0.62.13}/dclab/external/packaging/LICENSE.BSD +0 -0
  39. {dclab-0.62.11 → dclab-0.62.13}/dclab/external/packaging/__init__.py +0 -0
  40. {dclab-0.62.11 → dclab-0.62.13}/dclab/external/packaging/_structures.py +0 -0
  41. {dclab-0.62.11 → dclab-0.62.13}/dclab/external/packaging/version.py +0 -0
  42. {dclab-0.62.11 → dclab-0.62.13}/dclab/external/skimage/LICENSE +0 -0
  43. {dclab-0.62.11 → dclab-0.62.13}/dclab/external/skimage/__init__.py +0 -0
  44. {dclab-0.62.11 → dclab-0.62.13}/dclab/external/skimage/_find_contours.py +0 -0
  45. {dclab-0.62.11 → dclab-0.62.13}/dclab/external/skimage/_find_contours_cy.pyx +0 -0
  46. {dclab-0.62.11 → dclab-0.62.13}/dclab/external/skimage/_pnpoly.pyx +0 -0
  47. {dclab-0.62.11 → dclab-0.62.13}/dclab/external/skimage/_shared/__init__.py +0 -0
  48. {dclab-0.62.11 → dclab-0.62.13}/dclab/external/skimage/_shared/geometry.pxd +0 -0
  49. {dclab-0.62.11 → dclab-0.62.13}/dclab/external/skimage/_shared/geometry.pyx +0 -0
  50. {dclab-0.62.11 → dclab-0.62.13}/dclab/external/skimage/measure.py +0 -0
  51. {dclab-0.62.11 → dclab-0.62.13}/dclab/external/skimage/pnpoly.py +0 -0
  52. {dclab-0.62.11 → dclab-0.62.13}/dclab/external/statsmodels/LICENSE +0 -0
  53. {dclab-0.62.11 → dclab-0.62.13}/dclab/external/statsmodels/__init__.py +0 -0
  54. {dclab-0.62.11 → dclab-0.62.13}/dclab/external/statsmodels/nonparametric/__init__.py +0 -0
  55. {dclab-0.62.11 → dclab-0.62.13}/dclab/external/statsmodels/nonparametric/_kernel_base.py +0 -0
  56. {dclab-0.62.11 → dclab-0.62.13}/dclab/external/statsmodels/nonparametric/kernel_density.py +0 -0
  57. {dclab-0.62.11 → dclab-0.62.13}/dclab/external/statsmodels/nonparametric/kernels.py +0 -0
  58. {dclab-0.62.11 → dclab-0.62.13}/dclab/features/__init__.py +0 -0
  59. {dclab-0.62.11 → dclab-0.62.13}/dclab/features/bright.py +0 -0
  60. {dclab-0.62.11 → dclab-0.62.13}/dclab/features/bright_bc.py +0 -0
  61. {dclab-0.62.11 → dclab-0.62.13}/dclab/features/bright_perc.py +0 -0
  62. {dclab-0.62.11 → dclab-0.62.13}/dclab/features/contour.py +0 -0
  63. {dclab-0.62.11 → dclab-0.62.13}/dclab/features/emodulus/__init__.py +0 -0
  64. {dclab-0.62.11 → dclab-0.62.13}/dclab/features/emodulus/load.py +0 -0
  65. {dclab-0.62.11 → dclab-0.62.13}/dclab/features/emodulus/lut_HE-2D-FEM-22.txt +0 -0
  66. {dclab-0.62.11 → dclab-0.62.13}/dclab/features/emodulus/lut_HE-3D-FEM-22.txt +0 -0
  67. {dclab-0.62.11 → dclab-0.62.13}/dclab/features/emodulus/lut_LE-2D-FEM-19.txt +0 -0
  68. {dclab-0.62.11 → dclab-0.62.13}/dclab/features/emodulus/pxcorr.py +0 -0
  69. {dclab-0.62.11 → dclab-0.62.13}/dclab/features/emodulus/scale_linear.py +0 -0
  70. {dclab-0.62.11 → dclab-0.62.13}/dclab/features/fl_crosstalk.py +0 -0
  71. {dclab-0.62.11 → dclab-0.62.13}/dclab/features/inert_ratio.py +0 -0
  72. {dclab-0.62.11 → dclab-0.62.13}/dclab/features/volume.py +0 -0
  73. {dclab-0.62.11 → dclab-0.62.13}/dclab/http_utils.py +0 -0
  74. {dclab-0.62.11 → dclab-0.62.13}/dclab/isoelastics/__init__.py +0 -0
  75. {dclab-0.62.11 → dclab-0.62.13}/dclab/isoelastics/iso_HE-2D-FEM-22-area_um-deform.txt +0 -0
  76. {dclab-0.62.11 → dclab-0.62.13}/dclab/isoelastics/iso_HE-2D-FEM-22-volume-deform.txt +0 -0
  77. {dclab-0.62.11 → dclab-0.62.13}/dclab/isoelastics/iso_HE-3D-FEM-22-area_um-deform.txt +0 -0
  78. {dclab-0.62.11 → dclab-0.62.13}/dclab/isoelastics/iso_HE-3D-FEM-22-volume-deform.txt +0 -0
  79. {dclab-0.62.11 → dclab-0.62.13}/dclab/isoelastics/iso_LE-2D-FEM-19-area_um-deform.txt +0 -0
  80. {dclab-0.62.11 → dclab-0.62.13}/dclab/isoelastics/iso_LE-2D-FEM-19-volume-deform.txt +0 -0
  81. {dclab-0.62.11 → dclab-0.62.13}/dclab/isoelastics/iso_LE-2D-ana-18-area_um-deform.txt +0 -0
  82. {dclab-0.62.11 → dclab-0.62.13}/dclab/kde_contours.py +0 -0
  83. {dclab-0.62.11 → dclab-0.62.13}/dclab/kde_methods.py +0 -0
  84. {dclab-0.62.11 → dclab-0.62.13}/dclab/lme4/__init__.py +0 -0
  85. {dclab-0.62.11 → dclab-0.62.13}/dclab/lme4/lme4_template.R +0 -0
  86. {dclab-0.62.11 → dclab-0.62.13}/dclab/lme4/rsetup.py +0 -0
  87. {dclab-0.62.11 → dclab-0.62.13}/dclab/lme4/wrapr.py +0 -0
  88. {dclab-0.62.11 → dclab-0.62.13}/dclab/polygon_filter.py +0 -0
  89. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/__init__.py +0 -0
  90. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/check.py +0 -0
  91. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/config.py +0 -0
  92. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/copier.py +0 -0
  93. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/core.py +0 -0
  94. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/export.py +0 -0
  95. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/feat_anc_core/__init__.py +0 -0
  96. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/feat_anc_core/af_basic.py +0 -0
  97. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/feat_anc_core/af_emodulus.py +0 -0
  98. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/feat_anc_core/af_fl_max_ctc.py +0 -0
  99. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/feat_anc_core/af_image_contour.py +0 -0
  100. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/feat_anc_core/af_ml_class.py +0 -0
  101. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/feat_anc_core/ancillary_feature.py +0 -0
  102. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/feat_anc_ml/__init__.py +0 -0
  103. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/feat_anc_plugin/__init__.py +0 -0
  104. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/feat_anc_plugin/plugin_feature.py +0 -0
  105. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/feat_basin.py +0 -0
  106. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/feat_temp.py +0 -0
  107. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/filter.py +0 -0
  108. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/fmt_dcor/__init__.py +0 -0
  109. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/fmt_dcor/access_token.py +0 -0
  110. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/fmt_dcor/api.py +0 -0
  111. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/fmt_dcor/base.py +0 -0
  112. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/fmt_dcor/basin.py +0 -0
  113. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/fmt_dcor/logs.py +0 -0
  114. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/fmt_dict.py +0 -0
  115. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/fmt_hdf5/__init__.py +0 -0
  116. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/fmt_hdf5/base.py +0 -0
  117. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/fmt_hdf5/basin.py +0 -0
  118. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/fmt_hdf5/events.py +0 -0
  119. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/fmt_hdf5/feat_defect.py +0 -0
  120. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/fmt_hdf5/logs.py +0 -0
  121. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/fmt_hierarchy/__init__.py +0 -0
  122. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/fmt_hierarchy/base.py +0 -0
  123. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/fmt_hierarchy/events.py +0 -0
  124. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/fmt_hierarchy/hfilter.py +0 -0
  125. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/fmt_hierarchy/mapper.py +0 -0
  126. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/fmt_http.py +0 -0
  127. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/fmt_s3.py +0 -0
  128. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/fmt_tdms/__init__.py +0 -0
  129. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/fmt_tdms/event_contour.py +0 -0
  130. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/fmt_tdms/event_image.py +0 -0
  131. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/fmt_tdms/event_mask.py +0 -0
  132. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/fmt_tdms/event_trace.py +0 -0
  133. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/fmt_tdms/exc.py +0 -0
  134. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/fmt_tdms/naming.py +0 -0
  135. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/load.py +0 -0
  136. {dclab-0.62.11 → dclab-0.62.13}/dclab/rtdc_dataset/writer.py +0 -0
  137. {dclab-0.62.11 → dclab-0.62.13}/dclab/statistics.py +0 -0
  138. {dclab-0.62.11 → dclab-0.62.13}/dclab/util.py +0 -0
  139. {dclab-0.62.11 → dclab-0.62.13}/dclab/warn.py +0 -0
  140. {dclab-0.62.11 → dclab-0.62.13}/dclab.egg-info/SOURCES.txt +0 -0
  141. {dclab-0.62.11 → dclab-0.62.13}/dclab.egg-info/dependency_links.txt +0 -0
  142. {dclab-0.62.11 → dclab-0.62.13}/dclab.egg-info/entry_points.txt +0 -0
  143. {dclab-0.62.11 → dclab-0.62.13}/dclab.egg-info/requires.txt +0 -0
  144. {dclab-0.62.11 → dclab-0.62.13}/dclab.egg-info/top_level.txt +0 -0
  145. {dclab-0.62.11 → dclab-0.62.13}/docs/.gitignore +0 -0
  146. {dclab-0.62.11 → dclab-0.62.13}/docs/README.md +0 -0
  147. {dclab-0.62.11 → dclab-0.62.13}/docs/conf.py +0 -0
  148. {dclab-0.62.11 → dclab-0.62.13}/docs/data/example.poly +0 -0
  149. {dclab-0.62.11 → dclab-0.62.13}/docs/data/example.rtdc +0 -0
  150. {dclab-0.62.11 → dclab-0.62.13}/docs/data/example_plugin.py +0 -0
  151. {dclab-0.62.11 → dclab-0.62.13}/docs/data/example_plugin_metadata.py +0 -0
  152. {dclab-0.62.11 → dclab-0.62.13}/docs/data/example_traces.rtdc +0 -0
  153. {dclab-0.62.11 → dclab-0.62.13}/docs/data/example_video.rtdc +0 -0
  154. {dclab-0.62.11 → dclab-0.62.13}/docs/dclab.bib +0 -0
  155. {dclab-0.62.11 → dclab-0.62.13}/docs/extensions/dclab_defs.py +0 -0
  156. {dclab-0.62.11 → dclab-0.62.13}/docs/extensions/fancy_include.py +0 -0
  157. {dclab-0.62.11 → dclab-0.62.13}/docs/extensions/github_changelog.py +0 -0
  158. {dclab-0.62.11 → dclab-0.62.13}/docs/extensions/simple_argparse.py +0 -0
  159. {dclab-0.62.11 → dclab-0.62.13}/docs/figures/DCOR_API_Token_website.png +0 -0
  160. {dclab-0.62.11 → dclab-0.62.13}/docs/index.rst +0 -0
  161. {dclab-0.62.11 → dclab-0.62.13}/docs/logo/dc_logo.png +0 -0
  162. {dclab-0.62.11 → dclab-0.62.13}/docs/logo/dc_logo.svg +0 -0
  163. {dclab-0.62.11 → dclab-0.62.13}/docs/logo/dclab.png +0 -0
  164. {dclab-0.62.11 → dclab-0.62.13}/docs/logo/dclab.svg +0 -0
  165. {dclab-0.62.11 → dclab-0.62.13}/docs/logo/dclab_large_white.png +0 -0
  166. {dclab-0.62.11 → dclab-0.62.13}/docs/logo/dclab_large_white.svg +0 -0
  167. {dclab-0.62.11 → dclab-0.62.13}/docs/logo/favicon.ico +0 -0
  168. {dclab-0.62.11 → dclab-0.62.13}/docs/logo/favicon.svg +0 -0
  169. {dclab-0.62.11 → dclab-0.62.13}/docs/requirements.txt +0 -0
  170. {dclab-0.62.11 → dclab-0.62.13}/docs/sec_advanced_usage.rst +0 -0
  171. {dclab-0.62.11 → dclab-0.62.13}/docs/sec_av_basins/index.rst +0 -0
  172. {dclab-0.62.11 → dclab-0.62.13}/docs/sec_av_dc_io.rst +0 -0
  173. {dclab-0.62.11 → dclab-0.62.13}/docs/sec_av_dc_usage.rst +0 -0
  174. {dclab-0.62.11 → dclab-0.62.13}/docs/sec_av_dcor.rst +0 -0
  175. {dclab-0.62.11 → dclab-0.62.13}/docs/sec_av_emodulus/figures_emodulus/.gitignore +0 -0
  176. {dclab-0.62.11 → dclab-0.62.13}/docs/sec_av_emodulus/figures_emodulus/emodulus_20um_HE-2D-FEM-22.png +0 -0
  177. {dclab-0.62.11 → dclab-0.62.13}/docs/sec_av_emodulus/figures_emodulus/emodulus_20um_HE-3D-FEM-22.png +0 -0
  178. {dclab-0.62.11 → dclab-0.62.13}/docs/sec_av_emodulus/figures_emodulus/emodulus_20um_LE-2D-FEM-19.png +0 -0
  179. {dclab-0.62.11 → dclab-0.62.13}/docs/sec_av_emodulus/figures_emodulus/plot_emodulus_lut.py +0 -0
  180. {dclab-0.62.11 → dclab-0.62.13}/docs/sec_av_emodulus/figures_emodulus/requirements.txt +0 -0
  181. {dclab-0.62.11 → dclab-0.62.13}/docs/sec_av_emodulus/figures_viscosity/LICENSE +0 -0
  182. {dclab-0.62.11 → dclab-0.62.13}/docs/sec_av_emodulus/figures_viscosity/buyukurganci_22_fig3a.jpg +0 -0
  183. {dclab-0.62.11 → dclab-0.62.13}/docs/sec_av_emodulus/figures_viscosity/buyukurganci_22_fig3a.pdf +0 -0
  184. {dclab-0.62.11 → dclab-0.62.13}/docs/sec_av_emodulus/index.rst +0 -0
  185. {dclab-0.62.11 → dclab-0.62.13}/docs/sec_av_feat_plugin.rst +0 -0
  186. {dclab-0.62.11 → dclab-0.62.13}/docs/sec_av_feat_temp.rst +0 -0
  187. {dclab-0.62.11 → dclab-0.62.13}/docs/sec_av_fluorescence.rst +0 -0
  188. {dclab-0.62.11 → dclab-0.62.13}/docs/sec_av_lme4.rst +0 -0
  189. {dclab-0.62.11 → dclab-0.62.13}/docs/sec_av_notation.rst +0 -0
  190. {dclab-0.62.11 → dclab-0.62.13}/docs/sec_av_s3.rst +0 -0
  191. {dclab-0.62.11 → dclab-0.62.13}/docs/sec_av_scatter.rst +0 -0
  192. {dclab-0.62.11 → dclab-0.62.13}/docs/sec_changelog.rst +0 -0
  193. {dclab-0.62.11 → dclab-0.62.13}/docs/sec_cli.rst +0 -0
  194. {dclab-0.62.11 → dclab-0.62.13}/docs/sec_code_reference.rst +0 -0
  195. {dclab-0.62.11 → dclab-0.62.13}/docs/sec_examples.rst +0 -0
  196. {dclab-0.62.11 → dclab-0.62.13}/docs/sec_getting_started.rst +0 -0
  197. {dclab-0.62.11 → dclab-0.62.13}/docs/sec_z_bib.rst +0 -0
  198. {dclab-0.62.11 → dclab-0.62.13}/examples/emodulus_dcor.jpg +0 -0
  199. {dclab-0.62.11 → dclab-0.62.13}/examples/emodulus_dcor.py +0 -0
  200. {dclab-0.62.11 → dclab-0.62.13}/examples/generate_example_images.py +0 -0
  201. {dclab-0.62.11 → dclab-0.62.13}/examples/isoelastics.jpg +0 -0
  202. {dclab-0.62.11 → dclab-0.62.13}/examples/isoelastics.py +0 -0
  203. {dclab-0.62.11 → dclab-0.62.13}/examples/isoelastics_custom.jpg +0 -0
  204. {dclab-0.62.11 → dclab-0.62.13}/examples/isoelastics_custom.py +0 -0
  205. {dclab-0.62.11 → dclab-0.62.13}/examples/lme4_glmer_diff.py +0 -0
  206. {dclab-0.62.11 → dclab-0.62.13}/examples/lme4_lmer.jpg +0 -0
  207. {dclab-0.62.11 → dclab-0.62.13}/examples/lme4_lmer.py +0 -0
  208. {dclab-0.62.11 → dclab-0.62.13}/examples/overview_plot.jpg +0 -0
  209. {dclab-0.62.11 → dclab-0.62.13}/examples/overview_plot.py +0 -0
  210. {dclab-0.62.11 → dclab-0.62.13}/examples/plugin_example.py +0 -0
  211. {dclab-0.62.11 → dclab-0.62.13}/examples/plugin_usage.jpg +0 -0
  212. {dclab-0.62.11 → dclab-0.62.13}/examples/plugin_usage.py +0 -0
  213. {dclab-0.62.11 → dclab-0.62.13}/examples/viscosity_models.jpg +0 -0
  214. {dclab-0.62.11 → dclab-0.62.13}/examples/viscosity_models.py +0 -0
  215. {dclab-0.62.11 → dclab-0.62.13}/pyproject.toml +0 -0
  216. {dclab-0.62.11 → dclab-0.62.13}/scripts/.gitignore +0 -0
  217. {dclab-0.62.11 → dclab-0.62.13}/scripts/README.md +0 -0
  218. {dclab-0.62.11 → dclab-0.62.13}/scripts/fem2iso_volume.py +0 -0
  219. {dclab-0.62.11 → dclab-0.62.13}/scripts/fem2lutiso_std.py +0 -0
  220. {dclab-0.62.11 → dclab-0.62.13}/scripts/fem2rtdc.py +0 -0
  221. {dclab-0.62.11 → dclab-0.62.13}/scripts/lut_recipes/__init__.py +0 -0
  222. {dclab-0.62.11 → dclab-0.62.13}/scripts/lut_recipes/hooks/LUT_analytical_linear-elastic_2Daxis.txt +0 -0
  223. {dclab-0.62.11 → dclab-0.62.13}/scripts/lut_recipes/hooks/README.md +0 -0
  224. {dclab-0.62.11 → dclab-0.62.13}/scripts/lut_recipes/hooks/__init__.py +0 -0
  225. {dclab-0.62.11 → dclab-0.62.13}/scripts/lut_recipes/hooks/common.py +0 -0
  226. {dclab-0.62.11 → dclab-0.62.13}/scripts/lut_recipes/hooks/he_2d_fem_22.py +0 -0
  227. {dclab-0.62.11 → dclab-0.62.13}/scripts/lut_recipes/hooks/he_3d_fem_22.py +0 -0
  228. {dclab-0.62.11 → dclab-0.62.13}/scripts/lut_recipes/hooks/le_2d_fem_19.py +0 -0
  229. {dclab-0.62.11 → dclab-0.62.13}/scripts/lut_recipes/lut_processor.py +0 -0
  230. {dclab-0.62.11 → dclab-0.62.13}/scripts/pixelation_correction.py +0 -0
  231. {dclab-0.62.11 → dclab-0.62.13}/scripts/pixelation_correction_2020.png +0 -0
  232. {dclab-0.62.11 → dclab-0.62.13}/scripts/pixelation_correction_2022.png +0 -0
  233. {dclab-0.62.11 → dclab-0.62.13}/scripts/requirements.txt +0 -0
  234. {dclab-0.62.11 → dclab-0.62.13}/setup.cfg +0 -0
  235. {dclab-0.62.11 → dclab-0.62.13}/setup.py +0 -0
  236. {dclab-0.62.11 → dclab-0.62.13}/tests/README.md +0 -0
  237. {dclab-0.62.11 → dclab-0.62.13}/tests/conftest.py +0 -0
  238. {dclab-0.62.11 → dclab-0.62.13}/tests/data/README.md +0 -0
  239. {dclab-0.62.11 → dclab-0.62.13}/tests/data/example_access_token.dcor-access +0 -0
  240. {dclab-0.62.11 → dclab-0.62.13}/tests/data/example_isoelastics.txt +0 -0
  241. {dclab-0.62.11 → dclab-0.62.13}/tests/data/feat_anc_plugin_creative.py +0 -0
  242. {dclab-0.62.11 → dclab-0.62.13}/tests/data/fmt-hdf5_fl-no-contour_2019.zip +0 -0
  243. {dclab-0.62.11 → dclab-0.62.13}/tests/data/fmt-hdf5_fl_2017.zip +0 -0
  244. {dclab-0.62.11 → dclab-0.62.13}/tests/data/fmt-hdf5_fl_2018.zip +0 -0
  245. {dclab-0.62.11 → dclab-0.62.13}/tests/data/fmt-hdf5_fl_wide-channel_2023.zip +0 -0
  246. {dclab-0.62.11 → dclab-0.62.13}/tests/data/fmt-hdf5_image-bg_2020.zip +0 -0
  247. {dclab-0.62.11 → dclab-0.62.13}/tests/data/fmt-hdf5_image-mask-blood_2021.zip +0 -0
  248. {dclab-0.62.11 → dclab-0.62.13}/tests/data/fmt-hdf5_mask-contour_2018.zip +0 -0
  249. {dclab-0.62.11 → dclab-0.62.13}/tests/data/fmt-hdf5_polygon_gate_2021.zip +0 -0
  250. {dclab-0.62.11 → dclab-0.62.13}/tests/data/fmt-hdf5_raw-cytoshot-exported.zip +0 -0
  251. {dclab-0.62.11 → dclab-0.62.13}/tests/data/fmt-hdf5_segfault-compound_2023.zip +0 -0
  252. {dclab-0.62.11 → dclab-0.62.13}/tests/data/fmt-hdf5_wide-channel_2023.zip +0 -0
  253. {dclab-0.62.11 → dclab-0.62.13}/tests/data/fmt-tdms_2fl-no-image_2017.zip +0 -0
  254. {dclab-0.62.11 → dclab-0.62.13}/tests/data/fmt-tdms_fl-image-bright_2017.zip +0 -0
  255. {dclab-0.62.11 → dclab-0.62.13}/tests/data/fmt-tdms_fl-image-large-fov_2017.zip +0 -0
  256. {dclab-0.62.11 → dclab-0.62.13}/tests/data/fmt-tdms_fl-image_2016.zip +0 -0
  257. {dclab-0.62.11 → dclab-0.62.13}/tests/data/fmt-tdms_fl_2015.zip +0 -0
  258. {dclab-0.62.11 → dclab-0.62.13}/tests/data/fmt-tdms_minimal_2016.zip +0 -0
  259. {dclab-0.62.11 → dclab-0.62.13}/tests/data/fmt-tdms_shapein-2.0.1-no-image_2017.zip +0 -0
  260. {dclab-0.62.11 → dclab-0.62.13}/tests/helper_methods.py +0 -0
  261. {dclab-0.62.11 → dclab-0.62.13}/tests/requirements.txt +0 -0
  262. {dclab-0.62.11 → dclab-0.62.13}/tests/test_cache.py +0 -0
  263. {dclab-0.62.11 → dclab-0.62.13}/tests/test_cli.py +0 -0
  264. {dclab-0.62.11 → dclab-0.62.13}/tests/test_cli_argparse.py +0 -0
  265. {dclab-0.62.11 → dclab-0.62.13}/tests/test_cli_compress.py +0 -0
  266. {dclab-0.62.11 → dclab-0.62.13}/tests/test_cli_condense.py +0 -0
  267. {dclab-0.62.11 → dclab-0.62.13}/tests/test_cli_join.py +0 -0
  268. {dclab-0.62.11 → dclab-0.62.13}/tests/test_cli_repack.py +0 -0
  269. {dclab-0.62.11 → dclab-0.62.13}/tests/test_cli_split.py +0 -0
  270. {dclab-0.62.11 → dclab-0.62.13}/tests/test_config_value_mapping.py +0 -0
  271. {dclab-0.62.11 → dclab-0.62.13}/tests/test_dfn.py +0 -0
  272. {dclab-0.62.11 → dclab-0.62.13}/tests/test_downsampling.py +0 -0
  273. {dclab-0.62.11 → dclab-0.62.13}/tests/test_feat_bright.py +0 -0
  274. {dclab-0.62.11 → dclab-0.62.13}/tests/test_feat_bright_bc.py +0 -0
  275. {dclab-0.62.11 → dclab-0.62.13}/tests/test_feat_bright_perc.py +0 -0
  276. {dclab-0.62.11 → dclab-0.62.13}/tests/test_feat_contour.py +0 -0
  277. {dclab-0.62.11 → dclab-0.62.13}/tests/test_feat_emodulus.py +0 -0
  278. {dclab-0.62.11 → dclab-0.62.13}/tests/test_feat_fl_crosstalk.py +0 -0
  279. {dclab-0.62.11 → dclab-0.62.13}/tests/test_feat_inert_ratio.py +0 -0
  280. {dclab-0.62.11 → dclab-0.62.13}/tests/test_feat_volume.py +0 -0
  281. {dclab-0.62.11 → dclab-0.62.13}/tests/test_http_utils.py +0 -0
  282. {dclab-0.62.11 → dclab-0.62.13}/tests/test_isoelastics.py +0 -0
  283. {dclab-0.62.11 → dclab-0.62.13}/tests/test_kde_contours.py +0 -0
  284. {dclab-0.62.11 → dclab-0.62.13}/tests/test_kde_methods.py +0 -0
  285. {dclab-0.62.11 → dclab-0.62.13}/tests/test_lme4.py +0 -0
  286. {dclab-0.62.11 → dclab-0.62.13}/tests/test_lut_he_2d_fem_22.py +0 -0
  287. {dclab-0.62.11 → dclab-0.62.13}/tests/test_lut_he_3d_fem_22.py +0 -0
  288. {dclab-0.62.11 → dclab-0.62.13}/tests/test_polygon_contains.py +0 -0
  289. {dclab-0.62.11 → dclab-0.62.13}/tests/test_polygon_filter.py +0 -0
  290. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_check_dataset.py +0 -0
  291. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_config.py +0 -0
  292. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_copier.py +0 -0
  293. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_core_feat.py +0 -0
  294. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_downsampling.py +0 -0
  295. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_export.py +0 -0
  296. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_export_avi.py +0 -0
  297. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_export_fcs.py +0 -0
  298. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_export_tsv.py +0 -0
  299. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_feat_anc_core.py +0 -0
  300. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_feat_anc_ml.py +0 -0
  301. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_feat_anc_plugin.py +0 -0
  302. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_feat_basin.py +0 -0
  303. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_feat_basin_mapped.py +0 -0
  304. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_feat_temp.py +0 -0
  305. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_filter.py +0 -0
  306. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_fmt_dcor.py +0 -0
  307. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_fmt_dcor_access_token.py +0 -0
  308. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_fmt_dcor_basin.py +0 -0
  309. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_fmt_dict.py +0 -0
  310. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_fmt_hdf5.py +0 -0
  311. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_fmt_hdf5_basins.py +0 -0
  312. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_fmt_hdf5_basins_internal.py +0 -0
  313. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_fmt_hierarchy.py +0 -0
  314. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_fmt_http.py +0 -0
  315. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_fmt_http_basin.py +0 -0
  316. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_fmt_s3.py +0 -0
  317. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_fmt_s3_basin.py +0 -0
  318. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_hash.py +0 -0
  319. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_kde.py +0 -0
  320. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_limit_events.py +0 -0
  321. {dclab-0.62.11 → dclab-0.62.13}/tests/test_rtdc_writer.py +0 -0
  322. {dclab-0.62.11 → dclab-0.62.13}/tests/test_statistics.py +0 -0
  323. {dclab-0.62.11 → dclab-0.62.13}/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.13
2
+ - ref: add custom table class for `hdf5` and `dcor` formats
3
+ 0.62.12
4
+ - fix: viscosity computation for MP-PBS at zero flow rate should be NaN
1
5
  0.62.11
2
6
  - enh: support plain `numpy.array` tables
3
7
  0.62.10
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: dclab
3
- Version: 0.62.11
3
+ Version: 0.62.13
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.11'
16
- __version_tuple__ = version_tuple = (0, 62, 11)
15
+ __version__ = version = '0.62.13'
16
+ __version_tuple__ = version_tuple = (0, 62, 13)
@@ -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,
@@ -0,0 +1,64 @@
1
+ import numpy as np
2
+
3
+
4
+ class DCORTables:
5
+ def __init__(self, api):
6
+ self.api = api
7
+ self._tables_cache = None
8
+
9
+ def __contains__(self, key):
10
+ return key in self.keys()
11
+
12
+ def __getitem__(self, key):
13
+ return self._tables[key]
14
+
15
+ def __iter__(self):
16
+ for key in self.keys():
17
+ yield key
18
+
19
+ def __len__(self):
20
+ return len(self._tables)
21
+
22
+ def keys(self):
23
+ return self._tables.keys()
24
+
25
+ @property
26
+ def _tables(self):
27
+ if self._tables_cache is None:
28
+ table_data = self.api.get(query="tables")
29
+ # assemble the tables
30
+ tables = {}
31
+ for key in table_data:
32
+ tables[key] = DCORTable(table_data[key])
33
+
34
+ self._tables_cache = tables
35
+ return self._tables_cache
36
+
37
+
38
+ class DCORTable:
39
+ def __init__(self, table_content):
40
+ self._columns, data = table_content
41
+ self._tab_data = np.asarray(data)
42
+ if self._columns is not None:
43
+ # We have a rec-array (named columns)
44
+
45
+ ds_dt = np.dtype({'names': self._columns,
46
+ 'formats': [np.float64] * len(self._columns)})
47
+ self._tab_data = np.rec.array(self._tab_data, dtype=ds_dt)
48
+
49
+ def __array__(self, *args, **kwargs):
50
+ return self._tab_data.__array__(*args, **kwargs)
51
+
52
+ @property
53
+ def meta(self):
54
+ # TODO: Implement metadata sending from DCOR.
55
+ return {}
56
+
57
+ def has_graphs(self):
58
+ return self._columns is not None
59
+
60
+ def keys(self):
61
+ return self._columns
62
+
63
+ def __getitem__(self, key):
64
+ return self._tab_data[key]
@@ -5,7 +5,7 @@ class H5Tables:
5
5
 
6
6
  def __getitem__(self, key):
7
7
  if key in self.keys():
8
- tab = self.h5file["tables"][key]
8
+ tab = H5Table(self.h5file["tables"][key])
9
9
  else:
10
10
  raise KeyError(f"Table '{key}' not found or empty "
11
11
  f"in {self.h5file.file.filename}!")
@@ -28,3 +28,30 @@ class H5Tables:
28
28
  names.append(key)
29
29
  self._cache_keys = names
30
30
  return self._cache_keys
31
+
32
+
33
+ class H5Table:
34
+ def __init__(self, h5_ds):
35
+ self._h5_ds = h5_ds
36
+ self._keys = None
37
+ self._meta = None
38
+
39
+ def __array__(self, *args, **kwargs):
40
+ return self._h5_ds.__array__(*args, **kwargs)
41
+
42
+ @property
43
+ def meta(self):
44
+ if self._meta is None:
45
+ self._meta = dict(self._h5_ds.attrs)
46
+ return self._meta
47
+
48
+ def has_graphs(self):
49
+ return self.keys() is not None
50
+
51
+ def keys(self):
52
+ if self._keys is None:
53
+ self._keys = self._h5_ds.dtype.names
54
+ return self._keys
55
+
56
+ def __getitem__(self, key):
57
+ return self._h5_ds[key]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: dclab
3
- Version: 0.62.11
3
+ Version: 0.62.13
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
@@ -582,7 +582,7 @@ def test_hdf5_override():
582
582
  def test_hdf5_tables(tables):
583
583
  keys = ["area_um", "deform", "time", "frame", "index_online"]
584
584
  ddict = example_data_dict(size=10, keys=keys)
585
- ds1 = dclab.new_dataset(ddict)
585
+ ds1 = new_dataset(ddict)
586
586
  ds1.config["experiment"]["sample"] = "test"
587
587
  ds1.config["experiment"]["run index"] = 1
588
588
  ds1.config["imaging"]["frame rate"] = 2000
@@ -608,11 +608,18 @@ def test_hdf5_tables(tables):
608
608
  else:
609
609
  assert "src_iratrax" not in h5.get("tables", {})
610
610
 
611
+ if tables:
612
+ # reading the file with dclab
613
+ with new_dataset(f1) as ds:
614
+ assert "src_iratrax" in ds.tables
615
+ assert ds.tables["src_iratrax"].has_graphs()
616
+ assert np.all(ds.tables["src_iratrax"] == rec_arr)
617
+
611
618
 
612
619
  def test_hdf5_tables_array_only():
613
620
  keys = ["area_um", "deform", "time", "frame", "index_online"]
614
621
  ddict = example_data_dict(size=10, keys=keys)
615
- ds1 = dclab.new_dataset(ddict)
622
+ ds1 = new_dataset(ddict)
616
623
  ds1.config["experiment"]["sample"] = "test"
617
624
  ds1.config["experiment"]["run index"] = 1
618
625
  ds1.config["imaging"]["frame rate"] = 2000
@@ -629,6 +636,13 @@ def test_hdf5_tables_array_only():
629
636
  assert np.all(h5["tables"]["src_iratrax"] == tab_data)
630
637
  assert h5["tables"]["src_iratrax"].attrs["CLASS"] == np.bytes_("IMAGE")
631
638
 
639
+ # reading the file with dclab
640
+ with new_dataset(f1) as ds:
641
+ assert "src_iratrax" in ds.tables
642
+ assert not ds.tables["src_iratrax"].has_graphs()
643
+ assert np.all(ds.tables["src_iratrax"] == tab_data)
644
+ assert ds.tables["src_iratrax"].meta["CLASS"] == np.bytes_("IMAGE")
645
+
632
646
 
633
647
  def test_hdf5_trace_from_tdms():
634
648
  pytest.importorskip("nptdms")
@@ -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(
@@ -1,42 +0,0 @@
1
- import numpy as np
2
-
3
-
4
- class DCORTables:
5
- def __init__(self, api):
6
- self.api = api
7
- self._tables_cache = None
8
-
9
- def __contains__(self, key):
10
- return key in self.keys()
11
-
12
- def __getitem__(self, key):
13
- return self._tables[key]
14
-
15
- def __iter__(self):
16
- for key in self.keys():
17
- yield key
18
-
19
- def __len__(self):
20
- return len(self._tables)
21
-
22
- def keys(self):
23
- return self._tables.keys()
24
-
25
- @property
26
- def _tables(self):
27
- if self._tables_cache is None:
28
- table_data = self.api.get(query="tables")
29
- # assemble the tables
30
- tables = {}
31
- for key in table_data:
32
- columns, data = table_data[key]
33
- tab_data = np.asarray(data)
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
40
-
41
- self._tables_cache = tables
42
- return self._tables_cache
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