dclab 0.62.16__cp39-cp39-macosx_11_0_arm64.whl → 0.63.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.
- dclab/__init__.py +23 -5
- dclab/_version.py +2 -2
- dclab/downsampling.cpython-39-darwin.so +0 -0
- dclab/external/skimage/_find_contours_cy.cpython-39-darwin.so +0 -0
- dclab/external/skimage/_pnpoly.cpython-39-darwin.so +0 -0
- dclab/external/skimage/_shared/geometry.cpython-39-darwin.so +0 -0
- dclab/kde/__init__.py +1 -0
- dclab/kde/base.py +238 -0
- dclab/kde/contours.py +222 -0
- dclab/kde/methods.py +303 -0
- dclab/kde_contours.py +7 -219
- dclab/kde_methods.py +9 -301
- dclab/rtdc_dataset/core.py +30 -146
- dclab/rtdc_dataset/export.py +129 -37
- dclab/util.py +20 -0
- {dclab-0.62.16.dist-info → dclab-0.63.0.dist-info}/METADATA +4 -4
- {dclab-0.62.16.dist-info → dclab-0.63.0.dist-info}/RECORD +21 -17
- {dclab-0.62.16.dist-info → dclab-0.63.0.dist-info}/WHEEL +1 -1
- {dclab-0.62.16.dist-info → dclab-0.63.0.dist-info}/licenses/LICENSE +1 -61
- {dclab-0.62.16.dist-info → dclab-0.63.0.dist-info}/entry_points.txt +0 -0
- {dclab-0.62.16.dist-info → dclab-0.63.0.dist-info}/top_level.txt +0 -0
dclab/rtdc_dataset/export.py
CHANGED
|
@@ -13,11 +13,11 @@ import h5py
|
|
|
13
13
|
import hdf5plugin
|
|
14
14
|
|
|
15
15
|
try:
|
|
16
|
-
import
|
|
16
|
+
import av
|
|
17
17
|
except ModuleNotFoundError:
|
|
18
|
-
|
|
18
|
+
PYAV_AVAILABLE = False
|
|
19
19
|
else:
|
|
20
|
-
|
|
20
|
+
PYAV_AVAILABLE = True
|
|
21
21
|
|
|
22
22
|
try:
|
|
23
23
|
import fcswrite
|
|
@@ -44,32 +44,51 @@ class Export(object):
|
|
|
44
44
|
"""Export functionalities for RT-DC datasets"""
|
|
45
45
|
self.rtdc_ds = rtdc_ds
|
|
46
46
|
|
|
47
|
-
def avi(self,
|
|
48
|
-
|
|
47
|
+
def avi(self,
|
|
48
|
+
path: str | pathlib.Path,
|
|
49
|
+
filtered: bool = True,
|
|
50
|
+
override: bool = False,
|
|
51
|
+
pixel_format: str = "yuv420p",
|
|
52
|
+
codec: str = "rawvideo",
|
|
53
|
+
codec_options: dict[str, str] = None,
|
|
54
|
+
progress_callback: callable = None,
|
|
55
|
+
):
|
|
56
|
+
"""Exports filtered event images to a video file
|
|
49
57
|
|
|
50
58
|
Parameters
|
|
51
59
|
----------
|
|
52
60
|
path: str
|
|
53
|
-
Path to a
|
|
61
|
+
Path to a video file. The container is (.avi, .mkv, ...) is
|
|
62
|
+
deduced from the file suffix.
|
|
54
63
|
filtered: bool
|
|
55
64
|
If set to `True`, only the filtered data
|
|
56
65
|
(index in ds.filter.all) are used.
|
|
57
66
|
override: bool
|
|
58
67
|
If set to `True`, an existing file ``path`` will be overridden.
|
|
59
68
|
If set to `False`, raises `OSError` if ``path`` exists.
|
|
69
|
+
pixel_format: str
|
|
70
|
+
Which pixel format to give to ffmpeg.
|
|
71
|
+
codec: str
|
|
72
|
+
Codec name; e.g. "rawvideo" or "libx264"
|
|
73
|
+
codec_options:
|
|
74
|
+
Additional arguments to give to the codec using ffmpeg,
|
|
75
|
+
e.g. `{'preset': 'slow', 'crf': '0'}` for "libx264" codec.
|
|
76
|
+
progress_callback: callable
|
|
77
|
+
Function that takes at least two arguments: float between 0 and
|
|
78
|
+
1 for monitoring progress and a string describing what is being
|
|
79
|
+
done.
|
|
60
80
|
|
|
61
81
|
Notes
|
|
62
82
|
-----
|
|
63
83
|
Raises OSError if current dataset does not contain image data
|
|
64
84
|
"""
|
|
65
|
-
if not
|
|
85
|
+
if not PYAV_AVAILABLE:
|
|
66
86
|
raise ModuleNotFoundError(
|
|
67
|
-
"Package `
|
|
87
|
+
"Package `av` required for avi export!")
|
|
68
88
|
path = pathlib.Path(path)
|
|
89
|
+
if len(path.suffix) != 4:
|
|
90
|
+
path = path.with_suffix(".avi")
|
|
69
91
|
ds = self.rtdc_ds
|
|
70
|
-
# Make sure that path ends with .avi
|
|
71
|
-
if path.suffix != ".avi":
|
|
72
|
-
path = path.with_name(path.name + ".avi")
|
|
73
92
|
# Check if file already exist
|
|
74
93
|
if not override and path.exists():
|
|
75
94
|
raise OSError("File already exists: {}\n".format(
|
|
@@ -78,29 +97,50 @@ class Export(object):
|
|
|
78
97
|
# Start exporting
|
|
79
98
|
if "image" in ds:
|
|
80
99
|
# Open video for writing
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
#
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
100
|
+
with av.open(path, mode="w") as container:
|
|
101
|
+
stream = container.add_stream(codec_name=codec,
|
|
102
|
+
rate=25)
|
|
103
|
+
stream.pix_fmt = pixel_format
|
|
104
|
+
stream.height = ds["image"].shape[1]
|
|
105
|
+
stream.width = ds["image"].shape[2]
|
|
106
|
+
if codec_options:
|
|
107
|
+
stream.codec_context.options = codec_options
|
|
108
|
+
|
|
109
|
+
# write the filtered frames to the video file
|
|
110
|
+
for evid in np.arange(len(ds)):
|
|
111
|
+
|
|
112
|
+
if progress_callback is not None and evid % 10_000 == 0:
|
|
113
|
+
progress_callback(evid / len(ds), "exporting video")
|
|
114
|
+
|
|
115
|
+
# skip frames that were filtered out
|
|
116
|
+
if filtered and not ds.filter.all[evid]:
|
|
117
|
+
continue
|
|
118
|
+
image = ds["image"][evid]
|
|
119
|
+
# Convert to RGB
|
|
120
|
+
image = image.reshape(image.shape[0], image.shape[1], 1)
|
|
121
|
+
image = np.repeat(image, 3, axis=2)
|
|
122
|
+
|
|
123
|
+
av_frame = av.VideoFrame.from_ndarray(image,
|
|
124
|
+
format="rgb24")
|
|
125
|
+
|
|
126
|
+
for packet in stream.encode(av_frame):
|
|
127
|
+
container.mux(packet)
|
|
128
|
+
|
|
129
|
+
if progress_callback is not None:
|
|
130
|
+
progress_callback(1.0, "video export complete")
|
|
131
|
+
|
|
98
132
|
else:
|
|
99
133
|
msg = "No image data to export: dataset {} !".format(ds.title)
|
|
100
134
|
raise OSError(msg)
|
|
101
135
|
|
|
102
|
-
def fcs(self,
|
|
103
|
-
|
|
136
|
+
def fcs(self,
|
|
137
|
+
path: pathlib.Path | str,
|
|
138
|
+
features: list[str],
|
|
139
|
+
meta_data: dict = None,
|
|
140
|
+
filtered: bool = True,
|
|
141
|
+
override: bool = False,
|
|
142
|
+
progress_callback: callable = None,
|
|
143
|
+
):
|
|
104
144
|
"""Export the data of an RT-DC dataset to an .fcs file
|
|
105
145
|
|
|
106
146
|
Parameters
|
|
@@ -121,6 +161,10 @@ class Export(object):
|
|
|
121
161
|
override: bool
|
|
122
162
|
If set to `True`, an existing file ``path`` will be overridden.
|
|
123
163
|
If set to `False`, raises `OSError` if ``path`` exists.
|
|
164
|
+
progress_callback: callable
|
|
165
|
+
Function that takes at least two arguments: float between 0 and
|
|
166
|
+
1 for monitoring progress and a string describing what is being
|
|
167
|
+
done.
|
|
124
168
|
|
|
125
169
|
Notes
|
|
126
170
|
-----
|
|
@@ -154,12 +198,18 @@ class Export(object):
|
|
|
154
198
|
# Collect the header
|
|
155
199
|
chn_names = [dfn.get_feature_label(c, rtdc_ds=ds) for c in features]
|
|
156
200
|
|
|
201
|
+
if progress_callback is not None:
|
|
202
|
+
progress_callback(0.0, "collecting data")
|
|
203
|
+
|
|
157
204
|
# Collect the data
|
|
158
205
|
if filtered:
|
|
159
206
|
data = [ds[c][ds.filter.all] for c in features]
|
|
160
207
|
else:
|
|
161
208
|
data = [ds[c] for c in features]
|
|
162
209
|
|
|
210
|
+
if progress_callback is not None:
|
|
211
|
+
progress_callback(0.5, "exporting data")
|
|
212
|
+
|
|
163
213
|
data = np.array(data).transpose()
|
|
164
214
|
meta_data["dclab version"] = version
|
|
165
215
|
fcswrite.write_fcs(filename=str(path),
|
|
@@ -168,6 +218,9 @@ class Export(object):
|
|
|
168
218
|
text_kw_pr=meta_data,
|
|
169
219
|
)
|
|
170
220
|
|
|
221
|
+
if progress_callback is not None:
|
|
222
|
+
progress_callback(1.0, "export complete")
|
|
223
|
+
|
|
171
224
|
def hdf5(self,
|
|
172
225
|
path: str | pathlib.Path,
|
|
173
226
|
features: List[str] = None,
|
|
@@ -179,7 +232,9 @@ class Export(object):
|
|
|
179
232
|
override: bool = False,
|
|
180
233
|
compression_kwargs: Dict = None,
|
|
181
234
|
compression: str = "deprecated",
|
|
182
|
-
skip_checks: bool = False
|
|
235
|
+
skip_checks: bool = False,
|
|
236
|
+
progress_callback: callable = None,
|
|
237
|
+
):
|
|
183
238
|
"""Export the data of the current instance to an HDF5 file
|
|
184
239
|
|
|
185
240
|
Parameters
|
|
@@ -223,7 +278,10 @@ class Export(object):
|
|
|
223
278
|
Use `compression_kwargs` instead.
|
|
224
279
|
skip_checks: bool
|
|
225
280
|
Disable checking whether all features have the same length.
|
|
226
|
-
|
|
281
|
+
progress_callback: callable
|
|
282
|
+
Function that takes at least two arguments: float between 0 and
|
|
283
|
+
1 for monitoring progress and a string describing what is being
|
|
284
|
+
done.
|
|
227
285
|
|
|
228
286
|
.. versionchanged:: 0.58.0
|
|
229
287
|
|
|
@@ -314,6 +372,8 @@ class Export(object):
|
|
|
314
372
|
with RTDCWriter(path,
|
|
315
373
|
mode="append",
|
|
316
374
|
compression_kwargs=compression_kwargs) as hw:
|
|
375
|
+
if progress_callback is not None:
|
|
376
|
+
progress_callback(0.0, "writing metadata")
|
|
317
377
|
# write meta data
|
|
318
378
|
hw.store_metadata(meta)
|
|
319
379
|
|
|
@@ -348,7 +408,10 @@ class Export(object):
|
|
|
348
408
|
ds.tables[tab])
|
|
349
409
|
|
|
350
410
|
# write each feature individually
|
|
351
|
-
for feat in features:
|
|
411
|
+
for ii, feat in enumerate(features):
|
|
412
|
+
if progress_callback is not None:
|
|
413
|
+
progress_callback(ii / len(features), f"exporting {feat}")
|
|
414
|
+
|
|
352
415
|
if (filter_arr is None or
|
|
353
416
|
# This does not work for the .tdms file format
|
|
354
417
|
# (and probably also not for DCOR).
|
|
@@ -372,6 +435,10 @@ class Export(object):
|
|
|
372
435
|
filtarr=filter_arr)
|
|
373
436
|
|
|
374
437
|
if basins:
|
|
438
|
+
if progress_callback:
|
|
439
|
+
progress_callback(1 - 1 / (len(features) or 1),
|
|
440
|
+
"writing basins")
|
|
441
|
+
|
|
375
442
|
# We have to store basins. There are three options:
|
|
376
443
|
# - filtering disabled: just copy basins
|
|
377
444
|
# - filtering enabled
|
|
@@ -451,9 +518,17 @@ class Export(object):
|
|
|
451
518
|
|
|
452
519
|
# Do not verify basins, it takes too long.
|
|
453
520
|
hw.store_basin(**bn_dict, verify=False)
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
521
|
+
if progress_callback is not None:
|
|
522
|
+
progress_callback(1.0, "export complete")
|
|
523
|
+
|
|
524
|
+
def tsv(self,
|
|
525
|
+
path: pathlib.Path | str,
|
|
526
|
+
features: list[str],
|
|
527
|
+
meta_data: dict = None,
|
|
528
|
+
filtered: bool = True,
|
|
529
|
+
override: bool = False,
|
|
530
|
+
progress_callback: callable = None,
|
|
531
|
+
):
|
|
457
532
|
"""Export the data of the current instance to a .tsv file
|
|
458
533
|
|
|
459
534
|
Parameters
|
|
@@ -475,6 +550,10 @@ class Export(object):
|
|
|
475
550
|
override: bool
|
|
476
551
|
If set to `True`, an existing file ``path`` will be overridden.
|
|
477
552
|
If set to `False`, raises `OSError` if ``path`` exists.
|
|
553
|
+
progress_callback: callable
|
|
554
|
+
Function that takes at least two arguments: float between 0 and
|
|
555
|
+
1 for monitoring progress and a string describing what is being
|
|
556
|
+
done.
|
|
478
557
|
"""
|
|
479
558
|
if meta_data is None:
|
|
480
559
|
meta_data = {}
|
|
@@ -495,6 +574,10 @@ class Export(object):
|
|
|
495
574
|
if c not in ds.features_scalar:
|
|
496
575
|
raise ValueError("Invalid feature name {}".format(c))
|
|
497
576
|
meta_data["dclab version"] = version
|
|
577
|
+
|
|
578
|
+
if progress_callback is not None:
|
|
579
|
+
progress_callback(0.0, "writing metadata")
|
|
580
|
+
|
|
498
581
|
# Write BOM header
|
|
499
582
|
with path.open("wb") as fd:
|
|
500
583
|
fd.write(codecs.BOM_UTF8)
|
|
@@ -518,17 +601,26 @@ class Export(object):
|
|
|
518
601
|
fd.write("# "+header2+"\n")
|
|
519
602
|
|
|
520
603
|
with path.open("ab") as fd:
|
|
521
|
-
|
|
604
|
+
if progress_callback is not None:
|
|
605
|
+
progress_callback(0.1, "collecting data")
|
|
606
|
+
|
|
607
|
+
# collect data
|
|
522
608
|
if filtered:
|
|
523
609
|
data = [ds[c][ds.filter.all] for c in features]
|
|
524
610
|
else:
|
|
525
611
|
data = [ds[c] for c in features]
|
|
526
612
|
|
|
613
|
+
if progress_callback is not None:
|
|
614
|
+
progress_callback(0.5, "writing data")
|
|
615
|
+
|
|
527
616
|
np.savetxt(fd,
|
|
528
617
|
np.array(data).transpose(),
|
|
529
618
|
fmt=str("%.10e"),
|
|
530
619
|
delimiter="\t")
|
|
531
620
|
|
|
621
|
+
if progress_callback is not None:
|
|
622
|
+
progress_callback(1.0, "export complete")
|
|
623
|
+
|
|
532
624
|
|
|
533
625
|
def yield_filtered_array_stacks(data, indices):
|
|
534
626
|
"""Generator returning chunks with the filtered feature data
|
dclab/util.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""Utility methods"""
|
|
2
2
|
import functools
|
|
3
3
|
import hashlib
|
|
4
|
+
import importlib
|
|
4
5
|
import numbers
|
|
5
6
|
import pathlib
|
|
6
7
|
import warnings
|
|
@@ -60,6 +61,25 @@ class file_monitoring_lru_cache:
|
|
|
60
61
|
return wrapper
|
|
61
62
|
|
|
62
63
|
|
|
64
|
+
class LazyLoader():
|
|
65
|
+
"""Lazy load a module on first attribute access"""
|
|
66
|
+
|
|
67
|
+
def __init__(self, modname):
|
|
68
|
+
self._modname = modname
|
|
69
|
+
self._mod = None
|
|
70
|
+
|
|
71
|
+
def __getattr__(self, attr):
|
|
72
|
+
"""Get attribute from module, load module if not loaded yet"""
|
|
73
|
+
|
|
74
|
+
if self._mod is None:
|
|
75
|
+
# module is unset, load it
|
|
76
|
+
self._mod = importlib.import_module(self._modname)
|
|
77
|
+
|
|
78
|
+
# retry getattr if module was just loaded for first time
|
|
79
|
+
# call this outside exception handler in case it raises new exception
|
|
80
|
+
return getattr(self._mod, attr)
|
|
81
|
+
|
|
82
|
+
|
|
63
83
|
@file_monitoring_lru_cache(maxsize=100)
|
|
64
84
|
def hashfile(fname, blocksize=65536, count=0, constructor=hashlib.md5,
|
|
65
85
|
hasher_class=None):
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dclab
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.63.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>
|
|
7
|
-
License: GPL
|
|
7
|
+
License: GPL-2.0-or-later
|
|
8
8
|
Project-URL: source, https://github.com/DC-Analysis/dclab
|
|
9
9
|
Project-URL: tracker, https://github.com/DC-Analysis/dclab/issues
|
|
10
10
|
Project-URL: documentation, https://dclab.readthedocs.io/en/stable/
|
|
@@ -27,8 +27,8 @@ Requires-Dist: dclab[dcor,export,http,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
|
|
30
|
-
Requires-Dist: fcswrite>=0.5.
|
|
31
|
-
Requires-Dist:
|
|
30
|
+
Requires-Dist: fcswrite>=0.5.1; extra == "export"
|
|
31
|
+
Requires-Dist: av; extra == "export"
|
|
32
32
|
Provides-Extra: http
|
|
33
33
|
Requires-Dist: requests<3,>=2.31.0; extra == "http"
|
|
34
34
|
Provides-Extra: s3
|
|
@@ -1,21 +1,15 @@
|
|
|
1
|
-
dclab
|
|
2
|
-
dclab
|
|
3
|
-
dclab
|
|
4
|
-
dclab-0.62.16.dist-info/top_level.txt,sha256=irvwZMgs1edY1Zj60ZFk7Almb9Zhk4k6E6aC4YPFnnM,6
|
|
5
|
-
dclab-0.62.16.dist-info/METADATA,sha256=SvElgJ9evzAOSPVf9kfRkP1d-GR_6EBvQdYi56R9aIo,4777
|
|
6
|
-
dclab-0.62.16.dist-info/licenses/LICENSE,sha256=1mLfjOTOaeiMSGPJiF5hHnMQfKX88QVeZpCCXwJGj3k,18131
|
|
7
|
-
dclab/kde_methods.py,sha256=awlqkj819VRJzArG6Fx6myDa6qGpLoZ8S9IJ1J1YECA,9206
|
|
8
|
-
dclab/_version.py,sha256=MI0jKDrd2fFPrMvMv71SRYVo2YigN9lk8o441qHDsfg,515
|
|
9
|
-
dclab/util.py,sha256=nLL5jwG14h1YFJ_d0L-5DwsWgyfst5hVndaiLbTkYH4,5253
|
|
1
|
+
dclab/kde_methods.py,sha256=f0-zDN7ETintvGB3gSzxwgBb53YtT9jZtzI70EAX50g,365
|
|
2
|
+
dclab/_version.py,sha256=qUSHtJyrJO2OA6sjDKJf6cdVDtLAdHTblziUfydgBcY,513
|
|
3
|
+
dclab/util.py,sha256=HFT5ZQV6AW8GIIruVMldukbVVdlMyKH50GUfOogAcxI,5860
|
|
10
4
|
dclab/downsampling.pyx,sha256=OK7zbgGLl5gVyoU8ZBHo9EWwb8C9ChavmLNEvQvC9T0,7258
|
|
11
|
-
dclab/__init__.py,sha256=
|
|
5
|
+
dclab/__init__.py,sha256=wyJWhElQRPcq09vUqUnuquTU_KHgHxv6wQxuxQ988Iw,1583
|
|
12
6
|
dclab/warn.py,sha256=MjJvyQeuvIXFQ2-fHDzbmXJ0scnHqqRJlIxfuLI_utE,523
|
|
13
7
|
dclab/cached.py,sha256=eWTYBiI-HQM7JuPH-oxa5LLnhAX32GpRwlYg2kQ3sTA,2917
|
|
14
8
|
dclab/http_utils.py,sha256=YtZHEwB-BBBo2fCvwhlJvlnWvfWFMHclqol3OIJ7atM,10910
|
|
15
9
|
dclab/polygon_filter.py,sha256=qexmo-rXe06CUPZhN6EMJy4y4B5gXZeqejdvIB2arOE,13480
|
|
16
|
-
dclab/downsampling.cpython-39-darwin.so,sha256=
|
|
10
|
+
dclab/downsampling.cpython-39-darwin.so,sha256=_vmCrJfOtnZjYGLIkYsa8UuqoSaN_rM_nx1lLL52Q3w,258416
|
|
17
11
|
dclab/statistics.py,sha256=tJDqPlY_Jw2Hhl-s7ugMBSZAxcRuPu4LQuBAZBXz7t8,6355
|
|
18
|
-
dclab/kde_contours.py,sha256=
|
|
12
|
+
dclab/kde_contours.py,sha256=UlU64lrzMQUZH11oZndW7xf7NFCzwP3FcVujwuqXDCI,278
|
|
19
13
|
dclab/isoelastics/iso_LE-2D-FEM-19-volume-deform.txt,sha256=vTcazOlOXo3BQ0NQtGB_IdHKA0neOLXZ_d3JuMU--RE,83358
|
|
20
14
|
dclab/isoelastics/iso_HE-3D-FEM-22-area_um-deform.txt,sha256=IjULG1KO-hClaYPoJJnwPbF2TkS9i9jxF1tbhhQTClY,71350
|
|
21
15
|
dclab/isoelastics/iso_HE-2D-FEM-22-volume-deform.txt,sha256=aLOWxev_hvyP2yWquomcogn3Ze4SBfvqz-qmTOOibNw,97512
|
|
@@ -53,6 +47,10 @@ dclab/cli/common.py,sha256=uY0IexcvmScB-5AVIQhM9qMutUcSf7CM9tUrgtuawgU,7224
|
|
|
53
47
|
dclab/cli/task_join.py,sha256=R04ZmXG2-O82E8le0ywZpy9NzOYoErw8hLx8m4q76ms,9464
|
|
54
48
|
dclab/cli/task_split.py,sha256=dqW3GWkwi4ceDqRVrQx8ADGk4--KSsD3Q1knkD3ZXI4,6060
|
|
55
49
|
dclab/cli/task_compress.py,sha256=LH3j41aKq5regAH-ZFdOgnXImf5DrReDJ7ITwUObUSQ,4100
|
|
50
|
+
dclab/kde/contours.py,sha256=WoRqBj_xK-23FZjtaYly7E2Q8sGZ16q2ILq-DmrlmC8,6742
|
|
51
|
+
dclab/kde/methods.py,sha256=SYlAjoST66hEZnRmsdZ6izMmgfebxQxTfBR5PHhzDkE,9208
|
|
52
|
+
dclab/kde/__init__.py,sha256=_WSLPMfxE2su6tmO5mJxUE_9ON16-pqQUQCUlzRtyKI,55
|
|
53
|
+
dclab/kde/base.py,sha256=i6bNYYeQSFlq03Z5CZjhBE-V3xpY6YLWivL3guscsnE,7683
|
|
56
54
|
dclab/external/__init__.py,sha256=gb0UdzoMymEURPsTXRqVTT1ZJedJ2ubH3jApBIRkwjk,93
|
|
57
55
|
dclab/external/packaging/version.py,sha256=9MLL6_EYHvGA1yCGndwL5ZmmDA_wqQsW15GyKrI6siQ,14685
|
|
58
56
|
dclab/external/packaging/LICENSE,sha256=ytHvW9NA1z4HS6YU0m996spceUDD2MNIUuZcSQlobEg,197
|
|
@@ -67,17 +65,17 @@ dclab/external/statsmodels/nonparametric/kernel_density.py,sha256=3UyzLuZS68TkNT
|
|
|
67
65
|
dclab/external/statsmodels/nonparametric/__init__.py,sha256=-GEWgwsF27ems5WTBvR1zo4SWJ0pRTWyHVagnIYer3g,43
|
|
68
66
|
dclab/external/statsmodels/nonparametric/kernels.py,sha256=fuy4kStFz2ZA9pqgfUb4cly-YBpXLu4TJ9-ZujayuIw,1075
|
|
69
67
|
dclab/external/skimage/measure.py,sha256=y1idCqD9TUxp3-QnOiWR_d674OKaeqBJ4MN2-gVP6ro,247
|
|
70
|
-
dclab/external/skimage/_find_contours_cy.cpython-39-darwin.so,sha256=
|
|
68
|
+
dclab/external/skimage/_find_contours_cy.cpython-39-darwin.so,sha256=oFCr6dYmWuUQGo3G1CEdGuHC7dHoKA54JAmM8JrbLC8,204152
|
|
71
69
|
dclab/external/skimage/LICENSE,sha256=ivsSBvn3c0R9mOctWRRdza7C7wdZSRYgCVxlVqUdlB8,1452
|
|
72
70
|
dclab/external/skimage/pnpoly.py,sha256=r8hFNiTz5XlUoNZjosqA0iyv1FPn0l7ewbplgFgkdaw,1347
|
|
73
71
|
dclab/external/skimage/_find_contours.py,sha256=16v5eeTZBmevG8SSuXtJ6yUpVPhwfSmtc8pDD0nuuOU,9340
|
|
74
72
|
dclab/external/skimage/__init__.py,sha256=-B2QUKHAFzQuBWuuKvPDC5JIl0Zb-x3OGmbwPaE9VwQ,72
|
|
75
73
|
dclab/external/skimage/_pnpoly.pyx,sha256=Qdn6xPazDschBqbr46DzB75MB2MnqvdnoTSBMK7kUGE,2504
|
|
76
74
|
dclab/external/skimage/_find_contours_cy.pyx,sha256=pZJOBhMHzYEMkcz4WQVyjn7jDNrdjCfet47FU1hRAxk,7161
|
|
77
|
-
dclab/external/skimage/_pnpoly.cpython-39-darwin.so,sha256=
|
|
75
|
+
dclab/external/skimage/_pnpoly.cpython-39-darwin.so,sha256=x15yDbF5LgiT2B0WHtd22xgyoLI2Ino2PuTsq1OkGE4,221872
|
|
78
76
|
dclab/external/skimage/_shared/geometry.pxd,sha256=kRsu9ifv_rL3kbRIgSLf86p0hn2oTMp6s013lZ9bBZM,346
|
|
79
77
|
dclab/external/skimage/_shared/__init__.py,sha256=2sHZwTtJSlMTa3Q2YSvQW7jrPLMUSqDJQa-ROe5zfcw,37
|
|
80
|
-
dclab/external/skimage/_shared/geometry.cpython-39-darwin.so,sha256=
|
|
78
|
+
dclab/external/skimage/_shared/geometry.cpython-39-darwin.so,sha256=MlcLP13xmJTulANkIG6d4oS2GB0gaZ_UF1DrfdMOZcs,55872
|
|
81
79
|
dclab/external/skimage/_shared/geometry.pyx,sha256=miCHUh6mBDbRRIoaF_0xAER1MRzsCAzFdlYQZhV7RmE,1667
|
|
82
80
|
dclab/definitions/feat_logic.py,sha256=SXsSlAusgtE3uXcPu84dQwYZ07zxmV37DmPednA3_dM,5823
|
|
83
81
|
dclab/definitions/meta_parse.py,sha256=YdaTdM8DAMsIFn5ITH9OHYGTXeAOBGWtx22oVjxXcWk,2393
|
|
@@ -92,8 +90,8 @@ dclab/rtdc_dataset/feat_basin.py,sha256=ViKdvJcwFM8joysnrBYdZbA5t_wZix-6xn_Fsvzp
|
|
|
92
90
|
dclab/rtdc_dataset/fmt_s3.py,sha256=FVw0q3CwiPwDKmz37EsjK2T5CLr4MsH3pvscu-gToVM,11278
|
|
93
91
|
dclab/rtdc_dataset/feat_temp.py,sha256=XbDIS1iUUkRH0Zp9uVlwvK_untJ7hkOnKshK1Drsnt8,3694
|
|
94
92
|
dclab/rtdc_dataset/__init__.py,sha256=MUHSGVQJ4Zc0IyU2lf01dpDWyOyNveHip-UjSkmPNvQ,486
|
|
95
|
-
dclab/rtdc_dataset/core.py,sha256=
|
|
96
|
-
dclab/rtdc_dataset/export.py,sha256=
|
|
93
|
+
dclab/rtdc_dataset/core.py,sha256=EjNWk9SV-2xBTRtf34XosLCOS164vGWKP5dKKLSOSq4,34441
|
|
94
|
+
dclab/rtdc_dataset/export.py,sha256=NarfazGkPasyRpnhQ2H_riUP-oUq5QL7lG9WwvLCL2o,33121
|
|
97
95
|
dclab/rtdc_dataset/fmt_dict.py,sha256=gumVQOiVVDFUKow_483PY7cxInqo-NiBBnBhIU8s4lg,3009
|
|
98
96
|
dclab/rtdc_dataset/writer.py,sha256=jc6ADyxGoujXpoXu1vF2nfZjGFMaO5LbRmoYJZ83JVo,41418
|
|
99
97
|
dclab/rtdc_dataset/filter.py,sha256=AFPUBzOIi3pqXgUdMQ5CIi9ZeGOKC71rfSZKLMLgtog,10023
|
|
@@ -136,3 +134,9 @@ dclab/rtdc_dataset/fmt_tdms/event_image.py,sha256=-jp7Z-N91e4ieumYQ1huMicj7PMJqw
|
|
|
136
134
|
dclab/rtdc_dataset/fmt_tdms/event_trace.py,sha256=Vkym0QKSw2mq1XZl5n8wDkgHXmaZwQGiMAV5AuRSJkE,5215
|
|
137
135
|
dclab/rtdc_dataset/fmt_tdms/exc.py,sha256=WzrMqnyrzp8gsT8Pf7JKqGGv43ewx7d_qgtirURppRI,813
|
|
138
136
|
dclab/rtdc_dataset/fmt_tdms/event_contour.py,sha256=kjo0wJx9F0gmmOOyR0NoLw6VEtSl3h63WXXkcbfnoS8,9627
|
|
137
|
+
dclab-0.63.0.dist-info/RECORD,,
|
|
138
|
+
dclab-0.63.0.dist-info/WHEEL,sha256=HO9mXbqgM4Go8g994JGCRqzrGrswAcuXl8i0pdN2UG8,134
|
|
139
|
+
dclab-0.63.0.dist-info/entry_points.txt,sha256=eOpjgznu-eW-9utUpLU-77O5098YyUEgGF3ksGMdtec,273
|
|
140
|
+
dclab-0.63.0.dist-info/top_level.txt,sha256=irvwZMgs1edY1Zj60ZFk7Almb9Zhk4k6E6aC4YPFnnM,6
|
|
141
|
+
dclab-0.63.0.dist-info/METADATA,sha256=fyrdF3EWf6KgMaS-36SPHc-kW4d6W-O7GBuDVNzbhs4,4755
|
|
142
|
+
dclab-0.63.0.dist-info/licenses/LICENSE,sha256=gLDaVZWRrlnLdyfOrR0qfWjLbOVcjvoJ-kCLUK0fyXA,15360
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Unless otherwise specified by LICENSE files in individual
|
|
2
|
-
directories, all code is
|
|
2
|
+
directories, all code is licensed under the following license.
|
|
3
3
|
|
|
4
4
|
GNU GENERAL PUBLIC LICENSE
|
|
5
5
|
Version 2, June 1991
|
|
@@ -281,63 +281,3 @@ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
|
|
281
281
|
POSSIBILITY OF SUCH DAMAGES.
|
|
282
282
|
|
|
283
283
|
END OF TERMS AND CONDITIONS
|
|
284
|
-
|
|
285
|
-
How to Apply These Terms to Your New Programs
|
|
286
|
-
|
|
287
|
-
If you develop a new program, and you want it to be of the greatest
|
|
288
|
-
possible use to the public, the best way to achieve this is to make it
|
|
289
|
-
free software which everyone can redistribute and change under these terms.
|
|
290
|
-
|
|
291
|
-
To do so, attach the following notices to the program. It is safest
|
|
292
|
-
to attach them to the start of each source file to most effectively
|
|
293
|
-
convey the exclusion of warranty; and each file should have at least
|
|
294
|
-
the "copyright" line and a pointer to where the full notice is found.
|
|
295
|
-
|
|
296
|
-
{description}
|
|
297
|
-
Copyright (C) {year} {fullname}
|
|
298
|
-
|
|
299
|
-
This program is free software; you can redistribute it and/or modify
|
|
300
|
-
it under the terms of the GNU General Public License as published by
|
|
301
|
-
the Free Software Foundation; either version 2 of the License, or
|
|
302
|
-
(at your option) any later version.
|
|
303
|
-
|
|
304
|
-
This program is distributed in the hope that it will be useful,
|
|
305
|
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
306
|
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
307
|
-
GNU General Public License for more details.
|
|
308
|
-
|
|
309
|
-
You should have received a copy of the GNU General Public License along
|
|
310
|
-
with this program; if not, write to the Free Software Foundation, Inc.,
|
|
311
|
-
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
312
|
-
|
|
313
|
-
Also add information on how to contact you by electronic and paper mail.
|
|
314
|
-
|
|
315
|
-
If the program is interactive, make it output a short notice like this
|
|
316
|
-
when it starts in an interactive mode:
|
|
317
|
-
|
|
318
|
-
Gnomovision version 69, Copyright (C) year name of author
|
|
319
|
-
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
|
320
|
-
This is free software, and you are welcome to redistribute it
|
|
321
|
-
under certain conditions; type `show c' for details.
|
|
322
|
-
|
|
323
|
-
The hypothetical commands `show w' and `show c' should show the appropriate
|
|
324
|
-
parts of the General Public License. Of course, the commands you use may
|
|
325
|
-
be called something other than `show w' and `show c'; they could even be
|
|
326
|
-
mouse-clicks or menu items--whatever suits your program.
|
|
327
|
-
|
|
328
|
-
You should also get your employer (if you work as a programmer) or your
|
|
329
|
-
school, if any, to sign a "copyright disclaimer" for the program, if
|
|
330
|
-
necessary. Here is a sample; alter the names:
|
|
331
|
-
|
|
332
|
-
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
|
333
|
-
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
|
334
|
-
|
|
335
|
-
{signature of Ty Coon}, 1 April 1989
|
|
336
|
-
Ty Coon, President of Vice
|
|
337
|
-
|
|
338
|
-
This General Public License does not permit incorporating your program into
|
|
339
|
-
proprietary programs. If your program is a subroutine library, you may
|
|
340
|
-
consider it more useful to permit linking proprietary applications with the
|
|
341
|
-
library. If this is what you want to do, use the GNU Lesser General
|
|
342
|
-
Public License instead of this License.
|
|
343
|
-
|
|
File without changes
|
|
File without changes
|