dclab 0.62.11__cp39-cp39-macosx_11_0_arm64.whl → 2.18.0__cp39-cp39-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.

@@ -224,7 +224,6 @@ class Export(object):
224
224
  skip_checks: bool
225
225
  Disable checking whether all features have the same length.
226
226
 
227
-
228
227
  .. versionchanged:: 0.58.0
229
228
 
230
229
  The ``basins`` keyword argument was added, and it is now possible
@@ -319,21 +318,18 @@ class Export(object):
319
318
 
320
319
  # write export log
321
320
  hw.store_log(time.strftime("dclab-export_%Y-%m-%d_%H.%M.%S"),
322
- json.dumps(
323
- {"dclab version": version_tuple,
324
- "kwargs": {
325
- "features": features,
326
- "filtered": filtered,
327
- "logs": logs,
328
- "tables": tables,
329
- "basins": basins,
330
- "meta_prefix": meta_prefix,
331
- "skip_checks": skip_checks
332
- }
333
- },
334
- indent=2,
335
- sort_keys=True,
336
- ).split("\n"))
321
+ json.dumps({
322
+ "dclab version": version_tuple,
323
+ "kwargs": {
324
+ "features": features,
325
+ "filtered": filtered,
326
+ "logs": logs,
327
+ "tables": tables,
328
+ "basins": basins,
329
+ "meta_prefix": meta_prefix,
330
+ "skip_checks": skip_checks
331
+ }
332
+ }).split("\n"))
337
333
 
338
334
  if logs:
339
335
  # write logs
@@ -9,18 +9,11 @@ import abc
9
9
  import numbers
10
10
  import threading
11
11
  from typing import Dict, List, Literal
12
- import uuid
13
12
  import warnings
14
13
  import weakref
15
14
 
16
15
  import numpy as np
17
16
 
18
- from ..util import copy_if_needed
19
-
20
-
21
- class BasinFeatureMissingWarning(UserWarning):
22
- """Used when a badin feature is defined but not stored"""
23
-
24
17
 
25
18
  class CyclicBasinDependencyFoundWarning(UserWarning):
26
19
  """Used when a basin is defined in one of its sub-basins"""
@@ -75,7 +68,6 @@ class Basin(abc.ABC):
75
68
  ] = "same",
76
69
  mapping_referrer: Dict = None,
77
70
  ignored_basins: List[str] = None,
78
- key: str = None,
79
71
  **kwargs):
80
72
  """
81
73
 
@@ -111,10 +103,6 @@ class Basin(abc.ABC):
111
103
  :class:`.RTDCBase`.
112
104
  ignored_basins: list of str
113
105
  List of basins to ignore in subsequent basin instantiations
114
- key: str
115
- Unique key to identify this basin; normally computed from
116
- a JSON dump of the basin definition. A random string is used
117
- if None is specified.
118
106
  kwargs:
119
107
  Additional keyword arguments passed to the `load_dataset`
120
108
  method of the `Basin` subclass.
@@ -130,8 +118,6 @@ class Basin(abc.ABC):
130
118
  self.name = name
131
119
  #: lengthy description of the basin
132
120
  self.description = description
133
- # defining key of the basin
134
- self.key = key or str(uuid.uuid4())
135
121
  # features this basin provides
136
122
  self._features = features
137
123
  #: measurement identifier of the referencing dataset
@@ -375,7 +361,6 @@ class BasinProxy:
375
361
  dataset to the downstream dataset
376
362
  """
377
363
  self.ds = ds
378
- self.basins_get_dicts = ds.basins_get_dicts
379
364
  self.basinmap = basinmap
380
365
  self._features = {}
381
366
 
@@ -420,7 +405,7 @@ class BasinProxyFeature(np.lib.mixins.NDArrayOperatorsMixin):
420
405
  self._cache = None
421
406
  self.is_scalar = bool(len(self.feat_obj.shape) == 1)
422
407
 
423
- def __array__(self, dtype=None, copy=copy_if_needed, *args, **kwargs):
408
+ def __array__(self, dtype=None, copy=False, *args, **kwargs):
424
409
  if self._cache is None and self.is_scalar:
425
410
  self._cache = self.feat_obj[:][self.basinmap]
426
411
  else:
@@ -511,19 +496,6 @@ class InternalH5DatasetBasin(Basin):
511
496
  if self._features is None:
512
497
  raise ValueError("You must specify features when defining "
513
498
  "internal basins.")
514
- # Redefine the features if necessary
515
- h5root = self._basinmap_referrer().h5file
516
- available_features = []
517
- for feat in self._features:
518
- if self.location in h5root and feat in h5root[self.location]:
519
- available_features.append(feat)
520
- else:
521
- warnings.warn(
522
- f"Feature '{feat}' is defined as an internal basin, "
523
- f"but it cannot be found in '{self.location}'.",
524
- BasinFeatureMissingWarning)
525
- self._features.clear()
526
- self._features += available_features
527
499
 
528
500
  def _load_dataset(self, location, **kwargs):
529
501
  from .fmt_dict import RTDC_Dict
@@ -535,7 +507,8 @@ class InternalH5DatasetBasin(Basin):
535
507
  return RTDC_Dict(ds_dict)
536
508
 
537
509
  def is_available(self):
538
- return bool(self._features)
510
+ h5root = self._basinmap_referrer().h5file
511
+ return self.location in h5root
539
512
 
540
513
  def verify_basin(self, *args, **kwargs):
541
514
  """It's not necessary to verify internal basins"""
@@ -30,13 +30,11 @@ 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)})
33
35
  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
36
+ rec_arr = np.rec.array(tab_data, dtype=ds_dt)
37
+ tables[key] = rec_arr
40
38
 
41
39
  self._tables_cache = tables
42
40
  return self._tables_cache
@@ -175,15 +175,10 @@ class RTDC_HDF5(RTDCBase):
175
175
 
176
176
  def basins_get_dicts(self):
177
177
  """Return list of dicts for all basins defined in `self.h5file`"""
178
- return self.basin_get_dicts_from_h5file(self.h5file)
179
-
180
- @staticmethod
181
- def basin_get_dicts_from_h5file(h5file):
182
- """Return list of dicts for all basins defined in `h5file`"""
183
178
  basins = []
184
179
  # Do not sort anything here, sorting is done in `RTDCBase`.
185
- for bk in h5file.get("basins", []):
186
- bdat = list(h5file["basins"][bk])
180
+ for bk in self.h5file.get("basins", []):
181
+ bdat = list(self.h5file["basins"][bk])
187
182
  if isinstance(bdat[0], bytes):
188
183
  bdat = [bi.decode("utf") for bi in bdat]
189
184
  bdict = json.loads(" ".join(bdat))
@@ -7,7 +7,7 @@ import numbers
7
7
  import numpy as np
8
8
 
9
9
  from ... import definitions as dfn
10
- from ...util import copy_if_needed
10
+
11
11
 
12
12
  from . import feat_defect
13
13
 
@@ -140,7 +140,7 @@ class H5MaskEvent:
140
140
  self.identifier = (self.h5dataset.file.filename, self.h5dataset.name)
141
141
  self.dtype = np.dtype(bool)
142
142
 
143
- def __array__(self, dtype=np.bool_, copy=copy_if_needed, *args, **kwargs):
143
+ def __array__(self, dtype=np.bool_, copy=False, *args, **kwargs):
144
144
  if dtype is not np.uint8:
145
145
  warnings.warn("Please avoid calling the `__array__` method of the "
146
146
  "`H5MaskEvent`. It may consume a lot of memory.",
@@ -180,7 +180,7 @@ class H5ScalarEvent(np.lib.mixins.NDArrayOperatorsMixin):
180
180
  # attrs
181
181
  self._ufunc_attrs = dict(self.h5ds.attrs)
182
182
 
183
- def __array__(self, dtype=None, copy=copy_if_needed, *args, **kwargs):
183
+ def __array__(self, dtype=None, copy=False, *args, **kwargs):
184
184
  if self._array is None:
185
185
  self._array = np.asarray(self.h5ds, *args, **kwargs)
186
186
  return np.array(self._array, dtype=dtype, copy=copy)
@@ -60,6 +60,7 @@ class RTDC_Hierarchy(RTDCBase):
60
60
 
61
61
  self._events = {}
62
62
 
63
+ #: hierarchy parent
63
64
  self.hparent = hparent
64
65
 
65
66
  self.config = self._create_config() # init config
@@ -3,7 +3,6 @@ import warnings
3
3
 
4
4
  import numpy as np
5
5
 
6
- from ...util import copy_if_needed
7
6
  from .mapper import map_indices_child2parent
8
7
 
9
8
 
@@ -38,7 +37,7 @@ class ChildNDArray(ChildBase):
38
37
  super(ChildNDArray, self).__init__(child)
39
38
  self.feat = feat
40
39
 
41
- def __array__(self, dtype=None, copy=copy_if_needed, *args, **kwargs):
40
+ def __array__(self, dtype=None, copy=False, *args, **kwargs):
42
41
  warnings.warn("Please avoid calling the `__array__` method of the "
43
42
  "`ChildNDArray`. It may consume a lot of memory. "
44
43
  "Consider using a generator instead.",
@@ -70,7 +69,7 @@ class ChildScalar(np.lib.mixins.NDArrayOperatorsMixin):
70
69
  self._ufunc_attrs = {}
71
70
  self.ndim = 1 # matplotlib might expect this from an array
72
71
 
73
- def __array__(self, dtype=None, copy=copy_if_needed, *args, **kwargs):
72
+ def __array__(self, dtype=None, copy=False, *args, **kwargs):
74
73
  if self._array is None:
75
74
  hparent = self.child.hparent
76
75
  filt_arr = hparent.filter.all
@@ -122,7 +121,7 @@ class ChildTraceItem(ChildBase):
122
121
  super(ChildTraceItem, self).__init__(child)
123
122
  self.flname = flname
124
123
 
125
- def __array__(self, dtype=None, copy=copy_if_needed, *args, **kwargs):
124
+ def __array__(self, dtype=None, copy=False, *args, **kwargs):
126
125
  warnings.warn("Please avoid calling the `__array__` method of the "
127
126
  "`ChildTraceItem`. It may consume a lot of memory. "
128
127
  "Consider using a generator instead.",
@@ -0,0 +1,124 @@
1
+ """Tools for linking HDF5 datasets across files"""
2
+ from __future__ import annotations
3
+
4
+ import io
5
+ import pathlib
6
+ from typing import BinaryIO, Literal
7
+
8
+ import h5py
9
+
10
+
11
+ class ExternalDataForbiddenError(BaseException):
12
+ """Raised when a dataset contains external data
13
+
14
+ External data are a security risk, because they could be
15
+ used to access data that are not supposed to be accessed.
16
+ This is especially critical when the data are accessed within
17
+ a web server process (e.g. in DCOR).
18
+ """
19
+ pass
20
+
21
+
22
+ def assert_no_external(h5):
23
+ """Raise ExternalDataForbiddenError if `h5` refers to external data"""
24
+ has_ext, path_ext = check_external(h5)
25
+ if has_ext:
26
+ raise ExternalDataForbiddenError(
27
+ f"Dataset {h5.file.filename} contains external data, but these "
28
+ f"are not permitted for security reasons ({path_ext})!")
29
+
30
+
31
+ def check_external(h5):
32
+ """Check recursively, whether an h5py object contains external data
33
+
34
+ External data includes binary data in external files, virtual
35
+ datasets, and external links.
36
+
37
+ Returns a tuple of either
38
+
39
+ - `(True, path_ext)` if the object contains external data
40
+ - `(False, None)` if this is not the case
41
+
42
+ where `path_ext` is the path to the group or dataset in `h5`.
43
+
44
+ .. versionadded:: 0.51.0
45
+
46
+ """
47
+ for key in h5:
48
+ obj = h5[key]
49
+ if (obj.file != h5.file # not in same file
50
+ or (isinstance(obj, h5py.Dataset)
51
+ and (obj.is_virtual # virtual dataset
52
+ or obj.external))): # external dataset
53
+ # These are external data
54
+ return True, f"{h5.name}/{key}".replace("//", "/")
55
+ elif isinstance(obj, h5py.Group):
56
+ # Perform recursive check for external data
57
+ has_ext, path_ext = check_external(obj)
58
+ if has_ext:
59
+ return True, path_ext
60
+ else:
61
+ return False, None
62
+
63
+
64
+ def combine_h5files(
65
+ paths: list,
66
+ external: Literal["follow", "raise"] = "follow"
67
+ ) -> BinaryIO:
68
+ """Create an in-memory file that combines multiple .rtdc files
69
+
70
+ The .rtdc files must have the same number of events. The in-memory
71
+ file is populated with the "events" data from `paths` according to
72
+ the order that `paths` are given in. Metadata, including logs, basins,
73
+ and tables are only taken from the first path.
74
+
75
+ .. versionadded:: 0.51.0
76
+
77
+ Parameters
78
+ ----------
79
+ paths: list of str or pathlib.Path
80
+ Paths of the input .rtdc files. The first input file is always
81
+ used as a source for the metadata. The other files only complement
82
+ the features.
83
+ external: str
84
+ Defines how external (links, binary, virtual) data in `paths`
85
+ should be handled. The default is to "follow" external datasets or
86
+ links to external data. In a zero-trust context, you can set this
87
+ to "raise" which will cause an :class:`.ExternalDataForbiddenError`
88
+ exception when external data are encountered.
89
+
90
+ Returns
91
+ -------
92
+ fd: BinaryIO
93
+ seekable, file-like object representing an HDF5 file opened in
94
+ binary mode; This can be passed to `:class:h5py.File`
95
+ """
96
+ fd = io.BytesIO()
97
+ with h5py.File(fd, "w", libver="latest") as hv:
98
+ for ii, pp in enumerate(paths):
99
+ pp = pathlib.Path(pp).resolve()
100
+ with h5py.File(pp, libver="latest") as h5:
101
+ if external == "raise":
102
+ # Check for external data
103
+ assert_no_external(h5)
104
+ if ii == 0:
105
+ # Only write attributes once.
106
+ # Interestingly, writing the attributes takes
107
+ # the most time. Maybe there is some shortcut
108
+ # that can be taken (since e.g. we know we don't have to
109
+ # check for existing attributes).
110
+ # https://github.com/h5py/h5py/blob/master/
111
+ # h5py/_hl/attrs.py
112
+ hv.attrs.update(h5.attrs)
113
+ # Also, write basins/logs/tables/... (anything that is
114
+ # not events) only once.
115
+ for group in h5:
116
+ if group != "events":
117
+ hv[group] = h5py.ExternalLink(str(pp), group)
118
+ # Append features
119
+ hve = hv.require_group("events")
120
+ for feat in h5["events"]:
121
+ if feat not in hve:
122
+ hve[feat] = h5py.ExternalLink(str(pp),
123
+ f"/events/{feat}")
124
+ return fd
@@ -389,7 +389,7 @@ class RTDCWriter:
389
389
  flocs.append(str(pp.resolve()))
390
390
  # Also store the relative path for user convenience.
391
391
  # Don't use pathlib.Path.relative_to, because that
392
- # only has `walk_up` since Python 3.12.
392
+ # is deprecated in Python 3.12.
393
393
  # Also, just look in subdirectories which simplifies
394
394
  # path resolution.
395
395
  this_parent = str(self.path.parent) + os.sep
@@ -408,7 +408,7 @@ class RTDCWriter:
408
408
  else:
409
409
  raise ValueError(f"Unknown basin type '{basin_type}'")
410
410
 
411
- b_lines = json.dumps(b_data, indent=2, sort_keys=True).split("\n")
411
+ b_lines = json.dumps(b_data, indent=2).split("\n")
412
412
  basins = self.h5file.require_group("basins")
413
413
  key = hashobj(b_lines)
414
414
  if key not in basins:
@@ -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, h5_attrs=None):
619
+ def store_table(self, name, cmp_array):
620
620
  """Store a compound array table
621
621
 
622
622
  Tables are semi-metadata. They may contain information collected
@@ -629,33 +629,16 @@ class RTDCWriter:
629
629
  ----------
630
630
  name: str
631
631
  Name of the table
632
- cmp_array: np.recarray, h5py.Dataset, np.ndarray, or dict
632
+ cmp_array: np.recarray, h5py.Dataset, 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
640
636
  """
641
- if h5_attrs is None:
642
- h5_attrs = {}
643
-
644
- if isinstance(cmp_array, np.recarray):
637
+ if isinstance(cmp_array, (np.recarray, h5py.Dataset)):
645
638
  # A table is a compound array (np.recarray). If we are here,
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
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
650
641
  # 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')
659
642
  pass
660
643
  elif isinstance(cmp_array, dict):
661
644
  # The user passed a dict which we now have to convert to a
@@ -676,18 +659,16 @@ class RTDCWriter:
676
659
  else:
677
660
  raise NotImplementedError(
678
661
  f"Cannot convert {type(cmp_array)} to table!")
679
-
680
- # data
681
662
  group = self.h5file.require_group("tables")
682
663
  tab = group.create_dataset(
683
664
  name,
684
665
  data=cmp_array,
685
666
  fletcher32=True,
686
667
  **self.compression_kwargs)
687
-
688
- # metadata
689
- if h5_attrs:
690
- tab.attrs.update(h5_attrs)
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]
691
672
 
692
673
  def version_brand(self, old_version=None, write_attribute=True):
693
674
  """Perform version branding
dclab/util.py CHANGED
@@ -10,12 +10,6 @@ import numpy as np
10
10
  from .rtdc_dataset.config import Configuration, ConfigurationDict
11
11
 
12
12
 
13
- if np.lib.NumpyVersion(np.__version__) >= "2.0.0":
14
- copy_if_needed = None
15
- else:
16
- copy_if_needed = False
17
-
18
-
19
13
  class file_monitoring_lru_cache:
20
14
  """Decorator for caching data extracted from files
21
15
 
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.1
2
2
  Name: dclab
3
- Version: 0.62.11
3
+ Version: 2.18.0
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>
@@ -23,7 +23,7 @@ Requires-Dist: importlib-resources>=6.0
23
23
  Requires-Dist: numpy<3,>=1.21
24
24
  Requires-Dist: scipy<2,>=1.10.0
25
25
  Provides-Extra: all
26
- Requires-Dist: dclab[dcor,export,http,s3,tdms]; extra == "all"
26
+ Requires-Dist: dclab[dcor,export,http,lme4,s3,tdms]; extra == "all"
27
27
  Provides-Extra: dcor
28
28
  Requires-Dist: requests<3,>=2.31.0; extra == "dcor"
29
29
  Provides-Extra: export
@@ -31,6 +31,8 @@ Requires-Dist: fcswrite>=0.5.0; extra == "export"
31
31
  Requires-Dist: imageio[ffmpeg]; extra == "export"
32
32
  Provides-Extra: http
33
33
  Requires-Dist: requests<3,>=2.31.0; extra == "http"
34
+ Provides-Extra: lme4
35
+ Requires-Dist: rpy2>=2.9.4; extra == "lme4"
34
36
  Provides-Extra: s3
35
37
  Requires-Dist: boto3>=1.34.31; extra == "s3"
36
38
  Provides-Extra: tdms
@@ -1,13 +1,13 @@
1
1
  dclab/kde_methods.py,sha256=awlqkj819VRJzArG6Fx6myDa6qGpLoZ8S9IJ1J1YECA,9206
2
- dclab/_version.py,sha256=6RN4LVuzVUBmwpWRGtSDrQrJ0GhR_RYa4tyvcOaVVUg,415
3
- dclab/util.py,sha256=nLL5jwG14h1YFJ_d0L-5DwsWgyfst5hVndaiLbTkYH4,5253
2
+ dclab/_version.py,sha256=QyMxKDzFsqXDA7bVrQozJznaASbsECKe57aBBNAljsA,413
3
+ dclab/util.py,sha256=FcRsWcyKkKkfX2nZCShjJ5wPccr7U7NHsIDd_WEws6w,5141
4
4
  dclab/downsampling.pyx,sha256=OK7zbgGLl5gVyoU8ZBHo9EWwb8C9ChavmLNEvQvC9T0,7258
5
5
  dclab/__init__.py,sha256=1mskJAUo8HbvDhJRJFbcFB6HccFeqoRUCEHLuS64t_g,812
6
6
  dclab/warn.py,sha256=MjJvyQeuvIXFQ2-fHDzbmXJ0scnHqqRJlIxfuLI_utE,523
7
7
  dclab/cached.py,sha256=eWTYBiI-HQM7JuPH-oxa5LLnhAX32GpRwlYg2kQ3sTA,2917
8
- dclab/http_utils.py,sha256=YtZHEwB-BBBo2fCvwhlJvlnWvfWFMHclqol3OIJ7atM,10910
8
+ dclab/http_utils.py,sha256=TGqgiaUV-Z6Wiae__Yze-uHRWX57846ZnlV10ajzv2E,10562
9
9
  dclab/polygon_filter.py,sha256=qexmo-rXe06CUPZhN6EMJy4y4B5gXZeqejdvIB2arOE,13480
10
- dclab/downsampling.cpython-39-darwin.so,sha256=2ix5-wLq-gofGpmUsaC3iZ7ak2FAQsIioQknSKbl0jc,258416
10
+ dclab/downsampling.cpython-39-darwin.so,sha256=p0NgLD140J39RVPkIcyC85teASyFbYVKF0l9q8xCDqA,258416
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
@@ -34,10 +34,10 @@ dclab/features/emodulus/scale_linear.py,sha256=5tZfOpG4QSSEMlwSoA_3XRQuY0tiZ3CSm
34
34
  dclab/features/emodulus/lut_HE-3D-FEM-22.txt,sha256=1Sg4ys0ykT7Q_jFM28XS0uJ85nZd_ha7BDXdN2rsPIA,47248
35
35
  dclab/features/emodulus/load.py,sha256=Q9rII-7Om-f0m183VNeJUxNno7at1reigKtbzdrWgjE,8557
36
36
  dclab/features/emodulus/viscosity.py,sha256=aBm1pQa9cFAOBnO07UWMj87bw6fQpmW1IlWWD0MEtgw,9438
37
- dclab/lme4/lme4_template.R,sha256=CEXQIquvYCla9dCvRYgiBemI6fiVgAKnJTetJA2LAtk,2570
38
- dclab/lme4/__init__.py,sha256=5WPFMTK-Yia3NJuwZEEBQ3fCyW3DiFgpZFrAwU33TV4,272
39
- dclab/lme4/rsetup.py,sha256=kH9VFtcK83ZaF9jvh1n5kcmGmPLLsmCPia_ElEHBLes,5890
40
- dclab/lme4/wrapr.py,sha256=rdIc2hS8GhgdU9WFA6pLzohJGlBga-mkm60qqqk6VO4,15017
37
+ dclab/lme4/__init__.py,sha256=Y_oqYEqNnHCjxfdzkoP0ZXPCQx6XSKqwt1pAgdGF2dA,235
38
+ dclab/lme4/rsetup.py,sha256=siVWXt0niXAqD20d2quOjVzaZc4-zF0i81G_HRZE6q0,6951
39
+ dclab/lme4/wrapr.py,sha256=MzJDUZ7L_5xDWVtl5vrDgTJoum2vrxfP0dYwPMcHIPY,16977
40
+ dclab/lme4/rlibs.py,sha256=3oHSrSykeQB9ldvrV4Ite9EffIURUwCo3bn4uBpVeSk,2539
41
41
  dclab/cli/task_tdms2rtdc.py,sha256=u0L1Fq9rXIeQG9b72SuUIh_qYC6fG2xXxht9_rcdCao,8283
42
42
  dclab/cli/__init__.py,sha256=84YzzV6aE_NY-o7wvqgvUoxBLvIOEXpSUbkVcGRyzQ0,483
43
43
  dclab/cli/task_condense.py,sha256=uNZzm04VuQOXJi6uXPmaLdQCk0g8ONueiO4p67yJv0k,8546
@@ -61,52 +61,53 @@ dclab/external/statsmodels/nonparametric/kernel_density.py,sha256=3UyzLuZS68TkNT
61
61
  dclab/external/statsmodels/nonparametric/__init__.py,sha256=-GEWgwsF27ems5WTBvR1zo4SWJ0pRTWyHVagnIYer3g,43
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
- dclab/external/skimage/_find_contours_cy.cpython-39-darwin.so,sha256=W_JhGQUFjTgYMCKav2Gi6siCbW8KPH0fgkVLhLiMv7k,204152
64
+ dclab/external/skimage/_find_contours_cy.cpython-39-darwin.so,sha256=mbbVAIjkayiIBDhsGKg9Aq87fdoFHJEWWB-Lgg1owQs,204152
65
65
  dclab/external/skimage/LICENSE,sha256=ivsSBvn3c0R9mOctWRRdza7C7wdZSRYgCVxlVqUdlB8,1452
66
66
  dclab/external/skimage/pnpoly.py,sha256=r8hFNiTz5XlUoNZjosqA0iyv1FPn0l7ewbplgFgkdaw,1347
67
67
  dclab/external/skimage/_find_contours.py,sha256=16v5eeTZBmevG8SSuXtJ6yUpVPhwfSmtc8pDD0nuuOU,9340
68
68
  dclab/external/skimage/__init__.py,sha256=-B2QUKHAFzQuBWuuKvPDC5JIl0Zb-x3OGmbwPaE9VwQ,72
69
69
  dclab/external/skimage/_pnpoly.pyx,sha256=Qdn6xPazDschBqbr46DzB75MB2MnqvdnoTSBMK7kUGE,2504
70
70
  dclab/external/skimage/_find_contours_cy.pyx,sha256=pZJOBhMHzYEMkcz4WQVyjn7jDNrdjCfet47FU1hRAxk,7161
71
- dclab/external/skimage/_pnpoly.cpython-39-darwin.so,sha256=yhndZoAGT8Ou40t0FpkWi4QnTukPONPsze3LN3NvJT8,221872
71
+ dclab/external/skimage/_pnpoly.cpython-39-darwin.so,sha256=hUnNOnjTM_SFRIb0kYbZotulkCcgM3vQ570Smt3bsOA,221872
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-39-darwin.so,sha256=tE4mn9G6EYe6dlAM0AK7LK3y_7qZRDo7ZKn_8nCAOEY,55872
74
+ dclab/external/skimage/_shared/geometry.cpython-39-darwin.so,sha256=iwpZ95HtYCxIRUTW9ES8_w1Yj33q9TFyM_q7GpKzUuQ,55872
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
78
78
  dclab/definitions/__init__.py,sha256=56VL7rNTjP61gpGgN2GEUKicds2aBz_nWNwzfNxO_l8,2781
79
- dclab/definitions/meta_const.py,sha256=zqE-SrD2tJMCFWdtp_IenwnbIQg0lulvbQAw9dK0Gho,13125
79
+ dclab/definitions/meta_const.py,sha256=Nci-QFl6cxe2p8tvfGVIWsRO8NArFOyiA2jPFUIY23M,12399
80
80
  dclab/definitions/feat_const.py,sha256=3zii5bXN0d0lMtkiI8dR9ivNlNQYosZASAlOg1UKKPA,9634
81
81
  dclab/definitions/meta_logic.py,sha256=wCgb7DPRHaR8DCWw_VbwNkpslUnazzWfgX0iS8oEe90,4194
82
82
  dclab/rtdc_dataset/config.py,sha256=MvBteFya3R6Ch3U6UgTakCsJoBgVykTxS_Z25STWPHU,17432
83
- dclab/rtdc_dataset/check.py,sha256=lJNaz4QTe2WNlxik6zSohRHTiAYuP_bKOzSDjPGTUS0,35006
84
- dclab/rtdc_dataset/feat_basin.py,sha256=ViKdvJcwFM8joysnrBYdZbA5t_wZix-6xn_FsvzpYsQ,21072
83
+ dclab/rtdc_dataset/check.py,sha256=6l9E2amboqgU9go1BaPtOJgeDgl4GSUuGteF1B2M2X8,32406
84
+ dclab/rtdc_dataset/feat_basin.py,sha256=nxcFjhQiFqsdW0wucEjOMyvZFjCNdS7fFFVrvKvI0EE,19997
85
85
  dclab/rtdc_dataset/fmt_s3.py,sha256=OavOOGa2oOyG-VSfehFf6JVNs2k5iZalRm6ZTBu6sY4,10642
86
86
  dclab/rtdc_dataset/feat_temp.py,sha256=XbDIS1iUUkRH0Zp9uVlwvK_untJ7hkOnKshK1Drsnt8,3694
87
87
  dclab/rtdc_dataset/__init__.py,sha256=MUHSGVQJ4Zc0IyU2lf01dpDWyOyNveHip-UjSkmPNvQ,486
88
- dclab/rtdc_dataset/core.py,sha256=hho2XD4-s-mag8xtaukf7NC-_XyE8W0dql2wAoGuS3A,37998
89
- dclab/rtdc_dataset/export.py,sha256=F_HgQUlK9ywINFgYrigPXLxcG-8qgSR5aalHjxNNeMs,29614
88
+ dclab/rtdc_dataset/core.py,sha256=DEaN6-w0she-ylE6ZuNRLmB4Q77fiv7xC01IzUTz-jk,37672
89
+ dclab/rtdc_dataset/export.py,sha256=OxixysUUAlAoOnqip_GtkDSeLPenMQVNeO8zDipxjgo,29484
90
90
  dclab/rtdc_dataset/fmt_dict.py,sha256=gumVQOiVVDFUKow_483PY7cxInqo-NiBBnBhIU8s4lg,3009
91
- dclab/rtdc_dataset/writer.py,sha256=KVane_1X2fHJCJjLJ6kAWWHxnKOabO2Akb_54ANu1aU,41172
91
+ dclab/rtdc_dataset/linker.py,sha256=vp2yaqcbb5LESu8MO9WG9--NJor2MWkNcCfoAvlEKq0,4629
92
+ dclab/rtdc_dataset/writer.py,sha256=tOL-Hn9qC9bhJgJvQQgE8sTwS3DV5IB1mCd1M79qK7o,40427
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
95
- dclab/rtdc_dataset/copier.py,sha256=-2ISiOs4ytxN_ttXQGhaepuD2Ppy80G9UlDSZVyEoOU,14175
96
+ dclab/rtdc_dataset/copier.py,sha256=8xSogZ73SU7y2HaTRY1zCml5Q8pZSJsDLiUozCDzwfY,11990
96
97
  dclab/rtdc_dataset/feat_anc_plugin/__init__.py,sha256=Em8nKxzex6M46Q86pRoSdrzb02XBiTY9u-npODvwrwk,119
97
98
  dclab/rtdc_dataset/feat_anc_plugin/plugin_feature.py,sha256=ED7vAtHgMXoanbeoUdklDAocj0Pq_cpckmCJ-YWqwr8,12381
98
- dclab/rtdc_dataset/fmt_hierarchy/events.py,sha256=pRqiFJpBoTwL2krG3asmLw4Fyp7O-vZDzbUIBpWx7QQ,4547
99
+ dclab/rtdc_dataset/fmt_hierarchy/events.py,sha256=tr4S0_chhQidxWmcTook6fXJNtmtfdFfhkTjtl4rwV4,4485
99
100
  dclab/rtdc_dataset/fmt_hierarchy/mapper.py,sha256=dgGLO1ki2upV9QP6h7DCyNGgcMw45bzFbXc1CyyFAGw,4210
100
101
  dclab/rtdc_dataset/fmt_hierarchy/__init__.py,sha256=0e0lmGjeb9e7skZy1ksfEOFkwKLIu1N6MnuY1aUWkWA,355
101
102
  dclab/rtdc_dataset/fmt_hierarchy/hfilter.py,sha256=niYjYz6R-D2S2zurgmmIqrmsSFJ3tVgAS-UxweImAEU,5852
102
- dclab/rtdc_dataset/fmt_hierarchy/base.py,sha256=TaDFysJYhRMDDKwVpQn9qcpfmPZofHkvpu46TyHGht4,9440
103
+ dclab/rtdc_dataset/fmt_hierarchy/base.py,sha256=PLmqx-ExfJqVfgVjQNGM6jQ5r9b-zA-t4NwWzrk1ank,9468
103
104
  dclab/rtdc_dataset/fmt_hdf5/feat_defect.py,sha256=MeIxPz799x-sljbmSb0n40eVLw_iPnbCfOm07_lTBxo,6540
104
105
  dclab/rtdc_dataset/fmt_hdf5/basin.py,sha256=mJZR92Qoa71EwDVDYAP9KtOcjvRyjtA2wO1DkCBfBQc,792
105
- dclab/rtdc_dataset/fmt_hdf5/events.py,sha256=JUuPviS4lEXMjfNgJE-jkeArAwUVkdA1bmAszJGjPvc,8231
106
+ dclab/rtdc_dataset/fmt_hdf5/events.py,sha256=uJFMSkP8f-cmNdzC4X2LDayw2Q1P1k9qV252TmzC5h8,8179
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
109
  dclab/rtdc_dataset/fmt_hdf5/tables.py,sha256=G226awNz7NA2V9l1F6jCeyVcJ8V4AJgLYhOfG1Q_5t8,872
109
- dclab/rtdc_dataset/fmt_hdf5/base.py,sha256=_PgmDq2K7RGCuhV9J4YZwg9noW1hi2w14ZP8ooRR8Lw,6391
110
+ dclab/rtdc_dataset/fmt_hdf5/base.py,sha256=bwbbdt2FXniYANsR1dUF_zeUqT5ByGVv5KfEarnDEhw,6206
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
112
113
  dclab/rtdc_dataset/feat_anc_core/__init__.py,sha256=hEWMqg2rmbxW86Fe-dkTD4b0Zmp-dJe6gPsMjspPGXA,464
@@ -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=CNDnzhVlz83jDAXe4DagTGH6_U7Vvv2W8QrqbhJr8e0,1069
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.11.dist-info/RECORD,,
133
- dclab-0.62.11.dist-info/LICENSE,sha256=1mLfjOTOaeiMSGPJiF5hHnMQfKX88QVeZpCCXwJGj3k,18131
134
- dclab-0.62.11.dist-info/WHEEL,sha256=md3JO_ifs5j508p3TDNMgtQVtnQblpGEt_Wo4W56l8Y,107
135
- dclab-0.62.11.dist-info/entry_points.txt,sha256=eOpjgznu-eW-9utUpLU-77O5098YyUEgGF3ksGMdtec,273
136
- dclab-0.62.11.dist-info/top_level.txt,sha256=irvwZMgs1edY1Zj60ZFk7Almb9Zhk4k6E6aC4YPFnnM,6
137
- dclab-0.62.11.dist-info/METADATA,sha256=ldFV7htY9AHLU56II3PuY7fWKKYcqRPfh819DEa0NcQ,4755
133
+ dclab-2.18.0.dist-info/RECORD,,
134
+ dclab-2.18.0.dist-info/LICENSE,sha256=1mLfjOTOaeiMSGPJiF5hHnMQfKX88QVeZpCCXwJGj3k,18131
135
+ dclab-2.18.0.dist-info/WHEEL,sha256=ivZiYbV7UW2V9O45eOEv1Q7_vy1G1C3RUsz-H7JDooI,107
136
+ dclab-2.18.0.dist-info/entry_points.txt,sha256=eOpjgznu-eW-9utUpLU-77O5098YyUEgGF3ksGMdtec,273
137
+ dclab-2.18.0.dist-info/top_level.txt,sha256=irvwZMgs1edY1Zj60ZFk7Almb9Zhk4k6E6aC4YPFnnM,6
138
+ dclab-2.18.0.dist-info/METADATA,sha256=WTNyL58XdjHtE11bxXQWGntyi981Fv5pWGaxXshj1Iw,4824
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.0)
2
+ Generator: setuptools (74.1.2)
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp39-cp39-macosx_11_0_arm64
5
5