dclab 0.62.12__cp313-cp313-macosx_11_0_arm64.whl → 0.62.14__cp313-cp313-macosx_11_0_arm64.whl

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.

dclab/_version.py CHANGED
@@ -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.12'
16
- __version_tuple__ = version_tuple = (0, 62, 12)
15
+ __version__ = version = '0.62.14'
16
+ __version_tuple__ = version_tuple = (0, 62, 14)
Binary file
@@ -1,5 +1,7 @@
1
1
  import numpy as np
2
2
 
3
+ from ..meta_table import MetaTable
4
+
3
5
 
4
6
  class DCORTables:
5
7
  def __init__(self, api):
@@ -29,14 +31,36 @@ class DCORTables:
29
31
  # assemble the tables
30
32
  tables = {}
31
33
  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
34
+ tables[key] = DCORTable(table_data[key])
40
35
 
41
36
  self._tables_cache = tables
42
37
  return self._tables_cache
38
+
39
+
40
+ class DCORTable(MetaTable):
41
+ def __init__(self, table_content):
42
+ self._columns, data = table_content
43
+ self._tab_data = np.asarray(data)
44
+ if self._columns is not None:
45
+ # We have a rec-array (named columns)
46
+
47
+ ds_dt = np.dtype({'names': self._columns,
48
+ 'formats': [np.float64] * len(self._columns)})
49
+ self._tab_data = np.rec.array(self._tab_data, dtype=ds_dt)
50
+
51
+ def __array__(self, *args, **kwargs):
52
+ return self._tab_data.__array__(*args, **kwargs)
53
+
54
+ @property
55
+ def meta(self):
56
+ # TODO: Implement metadata sending from DCOR.
57
+ return {}
58
+
59
+ def has_graphs(self):
60
+ return self._columns is not None
61
+
62
+ def keys(self):
63
+ return self._columns
64
+
65
+ def __getitem__(self, key):
66
+ return self._tab_data[key]
@@ -1,3 +1,6 @@
1
+ from ..meta_table import MetaTable
2
+
3
+
1
4
  class H5Tables:
2
5
  def __init__(self, h5):
3
6
  self.h5file = h5
@@ -5,7 +8,7 @@ class H5Tables:
5
8
 
6
9
  def __getitem__(self, key):
7
10
  if key in self.keys():
8
- tab = self.h5file["tables"][key]
11
+ tab = H5Table(self.h5file["tables"][key])
9
12
  else:
10
13
  raise KeyError(f"Table '{key}' not found or empty "
11
14
  f"in {self.h5file.file.filename}!")
@@ -28,3 +31,30 @@ class H5Tables:
28
31
  names.append(key)
29
32
  self._cache_keys = names
30
33
  return self._cache_keys
34
+
35
+
36
+ class H5Table(MetaTable):
37
+ def __init__(self, h5_ds):
38
+ self._h5_ds = h5_ds
39
+ self._keys = None
40
+ self._meta = None
41
+
42
+ def __array__(self, *args, **kwargs):
43
+ return self._h5_ds.__array__(*args, **kwargs)
44
+
45
+ @property
46
+ def meta(self):
47
+ if self._meta is None:
48
+ self._meta = dict(self._h5_ds.attrs)
49
+ return self._meta
50
+
51
+ def has_graphs(self):
52
+ return self.keys() is not None
53
+
54
+ def keys(self):
55
+ if self._keys is None:
56
+ self._keys = self._h5_ds.dtype.names
57
+ return self._keys
58
+
59
+ def __getitem__(self, key):
60
+ return self._h5_ds[key]
@@ -0,0 +1,25 @@
1
+ import abc
2
+
3
+
4
+ class MetaTable(abc.ABC):
5
+ @abc.abstractmethod
6
+ def __array__(self, *args, **kwargs):
7
+ """Return array representation of the table"""
8
+
9
+ @property
10
+ @abc.abstractmethod
11
+ def meta(self):
12
+ """Return metadata of the table (e.g. graph colors)"""
13
+
14
+ @abc.abstractmethod
15
+ def has_graphs(self):
16
+ """Return True when the table has key-based graphs"""
17
+
18
+ @abc.abstractmethod
19
+ def keys(self):
20
+ """Return keys of the graphs, None if `not self.has_graphs()`"""
21
+
22
+ @abc.abstractmethod
23
+ def __getitem__(self, key):
24
+ """Return a graph or otherwise part of the data array"""
25
+ pass
@@ -17,6 +17,7 @@ from ..util import hashobj
17
17
  from .._version import version
18
18
 
19
19
  from .feat_anc_plugin import PlugInFeature
20
+ from .meta_table import MetaTable
20
21
 
21
22
  #: DEPRECATED (use `CHUNK_SIZE_BYTES` instead)
22
23
  CHUNK_SIZE = 100
@@ -641,6 +642,12 @@ class RTDCWriter:
641
642
  if h5_attrs is None:
642
643
  h5_attrs = {}
643
644
 
645
+ # Convert MetaTable to numpy data
646
+ if isinstance(cmp_array, MetaTable):
647
+ h5_attrs.update(cmp_array.meta)
648
+ cmp_array = cmp_array.__array__()
649
+
650
+ # Handle individual cases
644
651
  if isinstance(cmp_array, np.recarray):
645
652
  # A table is a compound array (np.recarray). If we are here,
646
653
  # this means that the user passed an instance of np.recarray.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: dclab
3
- Version: 0.62.12
3
+ Version: 0.62.14
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>
@@ -1,5 +1,5 @@
1
1
  dclab/kde_methods.py,sha256=awlqkj819VRJzArG6Fx6myDa6qGpLoZ8S9IJ1J1YECA,9206
2
- dclab/_version.py,sha256=ZyxFiSL0vH8cmNyXHZLYuqV0VUieCH1BYHILmwvoSbM,415
2
+ dclab/_version.py,sha256=XRYJOVRTVlCADg2_TgjmbG5T_76D28phoj0PXxmNXe0,415
3
3
  dclab/util.py,sha256=nLL5jwG14h1YFJ_d0L-5DwsWgyfst5hVndaiLbTkYH4,5253
4
4
  dclab/downsampling.pyx,sha256=OK7zbgGLl5gVyoU8ZBHo9EWwb8C9ChavmLNEvQvC9T0,7258
5
5
  dclab/__init__.py,sha256=1mskJAUo8HbvDhJRJFbcFB6HccFeqoRUCEHLuS64t_g,812
@@ -7,7 +7,7 @@ dclab/warn.py,sha256=MjJvyQeuvIXFQ2-fHDzbmXJ0scnHqqRJlIxfuLI_utE,523
7
7
  dclab/cached.py,sha256=eWTYBiI-HQM7JuPH-oxa5LLnhAX32GpRwlYg2kQ3sTA,2917
8
8
  dclab/http_utils.py,sha256=YtZHEwB-BBBo2fCvwhlJvlnWvfWFMHclqol3OIJ7atM,10910
9
9
  dclab/polygon_filter.py,sha256=qexmo-rXe06CUPZhN6EMJy4y4B5gXZeqejdvIB2arOE,13480
10
- dclab/downsampling.cpython-313-darwin.so,sha256=G_UVPtNatuRI5gBl55-8Nn7gD1TrM1XVF9-x-ZlS8xw,241968
10
+ dclab/downsampling.cpython-313-darwin.so,sha256=ITxrHQOfZa6fa03Wjl2MAEZHgh8k6TtcGaOQ_4QJvzQ,241968
11
11
  dclab/statistics.py,sha256=tJDqPlY_Jw2Hhl-s7ugMBSZAxcRuPu4LQuBAZBXz7t8,6355
12
12
  dclab/kde_contours.py,sha256=5K7PzZz-FtSGvW4IR2tLpbEKKqCSsSTQPsupu7zIsPg,6745
13
13
  dclab/isoelastics/iso_LE-2D-FEM-19-volume-deform.txt,sha256=vTcazOlOXo3BQ0NQtGB_IdHKA0neOLXZ_d3JuMU--RE,83358
@@ -62,16 +62,16 @@ dclab/external/statsmodels/nonparametric/__init__.py,sha256=-GEWgwsF27ems5WTBvR1
62
62
  dclab/external/statsmodels/nonparametric/kernels.py,sha256=fuy4kStFz2ZA9pqgfUb4cly-YBpXLu4TJ9-ZujayuIw,1075
63
63
  dclab/external/skimage/measure.py,sha256=y1idCqD9TUxp3-QnOiWR_d674OKaeqBJ4MN2-gVP6ro,247
64
64
  dclab/external/skimage/LICENSE,sha256=ivsSBvn3c0R9mOctWRRdza7C7wdZSRYgCVxlVqUdlB8,1452
65
- dclab/external/skimage/_find_contours_cy.cpython-313-darwin.so,sha256=1sGwg6UpDhKrn-yxoIvU7G-T1FnjpJvQemh6yrmxpPM,204104
65
+ dclab/external/skimage/_find_contours_cy.cpython-313-darwin.so,sha256=UMH-YKKHZGtPIXB03KM0ZvWtK31Ty9o2HmRzalNa_I8,204104
66
66
  dclab/external/skimage/pnpoly.py,sha256=r8hFNiTz5XlUoNZjosqA0iyv1FPn0l7ewbplgFgkdaw,1347
67
67
  dclab/external/skimage/_find_contours.py,sha256=16v5eeTZBmevG8SSuXtJ6yUpVPhwfSmtc8pDD0nuuOU,9340
68
- dclab/external/skimage/_pnpoly.cpython-313-darwin.so,sha256=DtypG1fPElsdSUzPIVPKe_O5YMtbAP0NmIafy1lrStw,221824
68
+ dclab/external/skimage/_pnpoly.cpython-313-darwin.so,sha256=wtV1gyD53cB5uhCqcAjHIAP_77OHM9vdoED3x8hTGbE,221824
69
69
  dclab/external/skimage/__init__.py,sha256=-B2QUKHAFzQuBWuuKvPDC5JIl0Zb-x3OGmbwPaE9VwQ,72
70
70
  dclab/external/skimage/_pnpoly.pyx,sha256=Qdn6xPazDschBqbr46DzB75MB2MnqvdnoTSBMK7kUGE,2504
71
71
  dclab/external/skimage/_find_contours_cy.pyx,sha256=pZJOBhMHzYEMkcz4WQVyjn7jDNrdjCfet47FU1hRAxk,7161
72
72
  dclab/external/skimage/_shared/geometry.pxd,sha256=kRsu9ifv_rL3kbRIgSLf86p0hn2oTMp6s013lZ9bBZM,346
73
73
  dclab/external/skimage/_shared/__init__.py,sha256=2sHZwTtJSlMTa3Q2YSvQW7jrPLMUSqDJQa-ROe5zfcw,37
74
- dclab/external/skimage/_shared/geometry.cpython-313-darwin.so,sha256=8scK8YBituQ909FUOwiVIvQ0yvEkp4hLYdIN6fcuIvs,55344
74
+ dclab/external/skimage/_shared/geometry.cpython-313-darwin.so,sha256=V55I715_37g9FH0L2CuILpRTrqPplR0qKJVyq_qwuH0,55344
75
75
  dclab/external/skimage/_shared/geometry.pyx,sha256=miCHUh6mBDbRRIoaF_0xAER1MRzsCAzFdlYQZhV7RmE,1667
76
76
  dclab/definitions/feat_logic.py,sha256=SXsSlAusgtE3uXcPu84dQwYZ07zxmV37DmPednA3_dM,5823
77
77
  dclab/definitions/meta_parse.py,sha256=YdaTdM8DAMsIFn5ITH9OHYGTXeAOBGWtx22oVjxXcWk,2393
@@ -81,6 +81,7 @@ dclab/definitions/feat_const.py,sha256=3zii5bXN0d0lMtkiI8dR9ivNlNQYosZASAlOg1UKK
81
81
  dclab/definitions/meta_logic.py,sha256=wCgb7DPRHaR8DCWw_VbwNkpslUnazzWfgX0iS8oEe90,4194
82
82
  dclab/rtdc_dataset/config.py,sha256=MvBteFya3R6Ch3U6UgTakCsJoBgVykTxS_Z25STWPHU,17432
83
83
  dclab/rtdc_dataset/check.py,sha256=lJNaz4QTe2WNlxik6zSohRHTiAYuP_bKOzSDjPGTUS0,35006
84
+ dclab/rtdc_dataset/meta_table.py,sha256=ucqBNrgI6rDAuQFuMRckY8lp1LpnYAoRgEsLObWTJCE,648
84
85
  dclab/rtdc_dataset/feat_basin.py,sha256=ViKdvJcwFM8joysnrBYdZbA5t_wZix-6xn_FsvzpYsQ,21072
85
86
  dclab/rtdc_dataset/fmt_s3.py,sha256=OavOOGa2oOyG-VSfehFf6JVNs2k5iZalRm6ZTBu6sY4,10642
86
87
  dclab/rtdc_dataset/feat_temp.py,sha256=XbDIS1iUUkRH0Zp9uVlwvK_untJ7hkOnKshK1Drsnt8,3694
@@ -88,7 +89,7 @@ dclab/rtdc_dataset/__init__.py,sha256=MUHSGVQJ4Zc0IyU2lf01dpDWyOyNveHip-UjSkmPNv
88
89
  dclab/rtdc_dataset/core.py,sha256=hho2XD4-s-mag8xtaukf7NC-_XyE8W0dql2wAoGuS3A,37998
89
90
  dclab/rtdc_dataset/export.py,sha256=F_HgQUlK9ywINFgYrigPXLxcG-8qgSR5aalHjxNNeMs,29614
90
91
  dclab/rtdc_dataset/fmt_dict.py,sha256=gumVQOiVVDFUKow_483PY7cxInqo-NiBBnBhIU8s4lg,3009
91
- dclab/rtdc_dataset/writer.py,sha256=KVane_1X2fHJCJjLJ6kAWWHxnKOabO2Akb_54ANu1aU,41172
92
+ dclab/rtdc_dataset/writer.py,sha256=jc6ADyxGoujXpoXu1vF2nfZjGFMaO5LbRmoYJZ83JVo,41418
92
93
  dclab/rtdc_dataset/filter.py,sha256=AFPUBzOIi3pqXgUdMQ5CIi9ZeGOKC71rfSZKLMLgtog,10023
93
94
  dclab/rtdc_dataset/fmt_http.py,sha256=vXVxRLXZp2_V1v3xk4lu4VUHYXfNHJdsRkVt3trC1RU,3374
94
95
  dclab/rtdc_dataset/load.py,sha256=wGJuIv7pH1zpBhg6Cj_H0wxHZb-KwHR8TWnyDosCBBA,2473
@@ -105,7 +106,7 @@ dclab/rtdc_dataset/fmt_hdf5/basin.py,sha256=mJZR92Qoa71EwDVDYAP9KtOcjvRyjtA2wO1D
105
106
  dclab/rtdc_dataset/fmt_hdf5/events.py,sha256=JUuPviS4lEXMjfNgJE-jkeArAwUVkdA1bmAszJGjPvc,8231
106
107
  dclab/rtdc_dataset/fmt_hdf5/__init__.py,sha256=yWLYK-Fq0EYnp2eYfl1Ze02RBMOWg-iALJWs4dFSxxY,270
107
108
  dclab/rtdc_dataset/fmt_hdf5/logs.py,sha256=-mDewfv_aOeHaJykuJIWsqr9a7-moKhoGhqw9cR4ebg,1004
108
- dclab/rtdc_dataset/fmt_hdf5/tables.py,sha256=G226awNz7NA2V9l1F6jCeyVcJ8V4AJgLYhOfG1Q_5t8,872
109
+ dclab/rtdc_dataset/fmt_hdf5/tables.py,sha256=9Q-9N52BTtOT_9avGObpe71t6MpLAKQDhbJrcETJ4a8,1553
109
110
  dclab/rtdc_dataset/fmt_hdf5/base.py,sha256=_PgmDq2K7RGCuhV9J4YZwg9noW1hi2w14ZP8ooRR8Lw,6391
110
111
  dclab/rtdc_dataset/feat_anc_core/af_fl_max_ctc.py,sha256=gV3FqM0AoOHzWwhU45e3fvBb2MwGVadLL6piVW0YF1s,3687
111
112
  dclab/rtdc_dataset/feat_anc_core/af_image_contour.py,sha256=39jvhzz2GmfXDYXu1d3kie7tpBzUkUL_JTxfau-2mt8,3531
@@ -120,7 +121,7 @@ dclab/rtdc_dataset/fmt_dcor/basin.py,sha256=tQZ4GumqURjS3eppRrSyUq1zBPD0y_8rwznM
120
121
  dclab/rtdc_dataset/fmt_dcor/__init__.py,sha256=WjO1uM_Vlof15Y7HkhkV5Xv75q9TDIdOBIuS_I38qps,210
121
122
  dclab/rtdc_dataset/fmt_dcor/api.py,sha256=COPRnPfPBcxbQGxHFEbGxp2CjK-Mgnt3cIu20-Zz04M,4245
122
123
  dclab/rtdc_dataset/fmt_dcor/logs.py,sha256=1JsMr_4r5j8rkfrrUsiN42_l92GcvDjapYxopZKimnw,583
123
- dclab/rtdc_dataset/fmt_dcor/tables.py,sha256=XTZlESy4Ht9sqKpROSYJO3msqGw1kyD_41-M5XPlKNY,1181
124
+ dclab/rtdc_dataset/fmt_dcor/tables.py,sha256=NaVEwLKmOg7Mz5iAMe2S8C4xRVC_YO3zeT7g5EbQE1M,1682
124
125
  dclab/rtdc_dataset/fmt_dcor/base.py,sha256=wD127W5LvvhkUy8SvFVVwAR6EEYtzgoWJ4booh45rfA,6588
125
126
  dclab/rtdc_dataset/fmt_tdms/event_mask.py,sha256=eZiDHAGG3MCVckEMHsV-YBbL-pETVLomGk1gmpjc8-k,2175
126
127
  dclab/rtdc_dataset/fmt_tdms/naming.py,sha256=biI9l1EO6BuSYgwZG0deacj4i1fMHQcW78AKXEcm5Wc,5373
@@ -129,9 +130,9 @@ dclab/rtdc_dataset/fmt_tdms/event_image.py,sha256=-jp7Z-N91e4ieumYQ1huMicj7PMJqw
129
130
  dclab/rtdc_dataset/fmt_tdms/event_trace.py,sha256=Vkym0QKSw2mq1XZl5n8wDkgHXmaZwQGiMAV5AuRSJkE,5215
130
131
  dclab/rtdc_dataset/fmt_tdms/exc.py,sha256=WzrMqnyrzp8gsT8Pf7JKqGGv43ewx7d_qgtirURppRI,813
131
132
  dclab/rtdc_dataset/fmt_tdms/event_contour.py,sha256=kjo0wJx9F0gmmOOyR0NoLw6VEtSl3h63WXXkcbfnoS8,9627
132
- dclab-0.62.12.dist-info/RECORD,,
133
- dclab-0.62.12.dist-info/LICENSE,sha256=1mLfjOTOaeiMSGPJiF5hHnMQfKX88QVeZpCCXwJGj3k,18131
134
- dclab-0.62.12.dist-info/WHEEL,sha256=zEwrEM3mH_qOUQ9uk3aZI5DMOaUao9_e1G94mKtHrTY,109
135
- dclab-0.62.12.dist-info/entry_points.txt,sha256=eOpjgznu-eW-9utUpLU-77O5098YyUEgGF3ksGMdtec,273
136
- dclab-0.62.12.dist-info/top_level.txt,sha256=irvwZMgs1edY1Zj60ZFk7Almb9Zhk4k6E6aC4YPFnnM,6
137
- dclab-0.62.12.dist-info/METADATA,sha256=P5b7WOZyRqkLSixZrA7gEs2la5g2Oo39iA8GQ4CEyyo,4755
133
+ dclab-0.62.14.dist-info/RECORD,,
134
+ dclab-0.62.14.dist-info/LICENSE,sha256=1mLfjOTOaeiMSGPJiF5hHnMQfKX88QVeZpCCXwJGj3k,18131
135
+ dclab-0.62.14.dist-info/WHEEL,sha256=zEwrEM3mH_qOUQ9uk3aZI5DMOaUao9_e1G94mKtHrTY,109
136
+ dclab-0.62.14.dist-info/entry_points.txt,sha256=eOpjgznu-eW-9utUpLU-77O5098YyUEgGF3ksGMdtec,273
137
+ dclab-0.62.14.dist-info/top_level.txt,sha256=irvwZMgs1edY1Zj60ZFk7Almb9Zhk4k6E6aC4YPFnnM,6
138
+ dclab-0.62.14.dist-info/METADATA,sha256=XVHDxxvc44fr7hNw7wKreETjqa9utJ6hCHSN08b1h8Q,4755