dataeval 0.87.0__py3-none-any.whl → 0.88.1__py3-none-any.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.
Files changed (56) hide show
  1. dataeval/_log.py +1 -1
  2. dataeval/_version.py +2 -2
  3. dataeval/data/_embeddings.py +78 -35
  4. dataeval/data/_images.py +41 -8
  5. dataeval/data/_metadata.py +294 -41
  6. dataeval/data/_selection.py +22 -7
  7. dataeval/data/_split.py +2 -1
  8. dataeval/data/selections/_classfilter.py +4 -3
  9. dataeval/data/selections/_indices.py +2 -1
  10. dataeval/data/selections/_shuffle.py +3 -2
  11. dataeval/detectors/drift/_base.py +2 -1
  12. dataeval/detectors/drift/_mmd.py +2 -1
  13. dataeval/detectors/drift/_nml/_base.py +1 -1
  14. dataeval/detectors/drift/_nml/_chunk.py +2 -1
  15. dataeval/detectors/drift/_nml/_result.py +3 -2
  16. dataeval/detectors/drift/_nml/_thresholds.py +6 -5
  17. dataeval/detectors/drift/_uncertainty.py +2 -1
  18. dataeval/detectors/linters/duplicates.py +2 -1
  19. dataeval/detectors/linters/outliers.py +4 -3
  20. dataeval/detectors/ood/ae.py +1 -1
  21. dataeval/detectors/ood/base.py +2 -1
  22. dataeval/detectors/ood/mixin.py +2 -1
  23. dataeval/metadata/_utils.py +1 -1
  24. dataeval/metrics/bias/_balance.py +1 -1
  25. dataeval/metrics/stats/_base.py +3 -29
  26. dataeval/metrics/stats/_boxratiostats.py +2 -1
  27. dataeval/metrics/stats/_dimensionstats.py +2 -1
  28. dataeval/metrics/stats/_hashstats.py +2 -1
  29. dataeval/metrics/stats/_pixelstats.py +2 -1
  30. dataeval/metrics/stats/_visualstats.py +2 -1
  31. dataeval/outputs/_base.py +2 -3
  32. dataeval/outputs/_bias.py +2 -1
  33. dataeval/outputs/_estimators.py +1 -1
  34. dataeval/outputs/_linters.py +3 -3
  35. dataeval/outputs/_stats.py +3 -3
  36. dataeval/outputs/_utils.py +1 -1
  37. dataeval/outputs/_workflows.py +85 -30
  38. dataeval/typing.py +11 -9
  39. dataeval/utils/_array.py +3 -2
  40. dataeval/utils/_bin.py +2 -1
  41. dataeval/utils/_method.py +2 -3
  42. dataeval/utils/_multiprocessing.py +34 -0
  43. dataeval/utils/_plot.py +2 -1
  44. dataeval/utils/data/__init__.py +4 -5
  45. dataeval/utils/data/{metadata.py → _merge.py} +3 -2
  46. dataeval/utils/data/_validate.py +2 -1
  47. dataeval/utils/data/collate.py +2 -1
  48. dataeval/utils/torch/_internal.py +2 -1
  49. dataeval/utils/torch/trainer.py +1 -1
  50. dataeval/workflows/sufficiency.py +12 -9
  51. {dataeval-0.87.0.dist-info → dataeval-0.88.1.dist-info}/METADATA +4 -5
  52. dataeval-0.88.1.dist-info/RECORD +105 -0
  53. dataeval/utils/data/_dataset.py +0 -253
  54. dataeval-0.87.0.dist-info/RECORD +0 -105
  55. {dataeval-0.87.0.dist-info → dataeval-0.88.1.dist-info}/WHEEL +0 -0
  56. {dataeval-0.87.0.dist-info → dataeval-0.88.1.dist-info}/licenses/LICENSE +0 -0
@@ -1,253 +0,0 @@
1
- from __future__ import annotations
2
-
3
- __all__ = []
4
-
5
- from typing import Any, Generic, Iterable, Literal, Sequence, SupportsFloat, SupportsInt, TypeVar, cast
6
-
7
- from dataeval.typing import (
8
- Array,
9
- ArrayLike,
10
- DatasetMetadata,
11
- ImageClassificationDataset,
12
- ObjectDetectionDataset,
13
- )
14
- from dataeval.utils._array import as_numpy
15
-
16
-
17
- def _ensure_id(index: int, metadata: dict[str, Any]) -> dict[str, Any]:
18
- return {"id": index, **metadata} if "id" not in metadata else metadata
19
-
20
-
21
- def _validate_data(
22
- datum_type: Literal["ic", "od"],
23
- images: Array | Sequence[Array],
24
- labels: Array | Sequence[int] | Sequence[Array] | Sequence[Sequence[int]],
25
- bboxes: Array | Sequence[Array] | Sequence[Sequence[Array]] | Sequence[Sequence[Sequence[float]]] | None,
26
- metadata: Sequence[dict[str, Any]] | dict[str, Sequence[Any]] | None,
27
- ) -> None:
28
- # Validate inputs
29
- dataset_len = len(images)
30
-
31
- if not isinstance(images, (Sequence, Array)) or len(images[0].shape) != 3:
32
- raise ValueError("Images must be a sequence or array of 3 dimensional arrays (H, W, C).")
33
- if len(labels) != dataset_len:
34
- raise ValueError(f"Number of labels ({len(labels)}) does not match number of images ({dataset_len}).")
35
- if bboxes is not None and len(bboxes) != dataset_len:
36
- raise ValueError(f"Number of bboxes ({len(bboxes)}) does not match number of images ({dataset_len}).")
37
- if metadata is not None and (
38
- len(metadata) != dataset_len
39
- if isinstance(metadata, Sequence)
40
- else any(
41
- not isinstance(metadatum, Sequence) or len(metadatum) != dataset_len for metadatum in metadata.values()
42
- )
43
- ):
44
- raise ValueError(f"Number of metadata ({len(metadata)}) does not match number of images ({dataset_len}).")
45
-
46
- if datum_type == "ic":
47
- if not isinstance(labels, (Sequence, Array)) or not isinstance(labels[0], (int, SupportsInt)):
48
- raise TypeError("Labels must be a sequence of integers for image classification.")
49
- elif datum_type == "od":
50
- if (
51
- not isinstance(labels, (Sequence, Array))
52
- or not isinstance(labels[0], (Sequence, Array))
53
- or not isinstance(cast(Sequence[Any], labels[0])[0], (int, SupportsInt))
54
- ):
55
- raise TypeError("Labels must be a sequence of sequences of integers for object detection.")
56
- if (
57
- bboxes is None
58
- or not isinstance(bboxes, (Sequence, Array))
59
- or not isinstance(bboxes[0], (Sequence, Array))
60
- or not isinstance(bboxes[0][0], (Sequence, Array))
61
- or not isinstance(bboxes[0][0][0], (float, SupportsFloat))
62
- or not len(bboxes[0][0]) == 4
63
- ):
64
- raise TypeError("Boxes must be a sequence of sequences of (x0, y0, x1, y1) for object detection.")
65
- else:
66
- raise ValueError(f"Unknown datum type '{datum_type}'. Must be 'ic' or 'od'.")
67
-
68
-
69
- def _listify_metadata(
70
- metadata: Sequence[dict[str, Any]] | dict[str, Sequence[Any]] | None,
71
- ) -> Sequence[dict[str, Any]] | None:
72
- if isinstance(metadata, dict):
73
- return [{k: v[i] for k, v in metadata.items()} for i in range(len(next(iter(metadata.values()))))]
74
- return metadata
75
-
76
-
77
- def _find_max(arr: ArrayLike) -> Any:
78
- if not isinstance(arr, (bytes, str)) and isinstance(arr, (Iterable, Sequence, Array)):
79
- nested = [x for x in [_find_max(x) for x in arr] if x is not None]
80
- return max(nested) if len(nested) > 0 else None
81
- return arr
82
-
83
-
84
- _TLabels = TypeVar("_TLabels", Sequence[int], Sequence[Sequence[int]])
85
-
86
-
87
- class BaseAnnotatedDataset(Generic[_TLabels]):
88
- def __init__(
89
- self,
90
- datum_type: Literal["ic", "od"],
91
- images: Array | Sequence[Array],
92
- labels: _TLabels,
93
- metadata: Sequence[dict[str, Any]] | None,
94
- classes: Sequence[str] | None,
95
- name: str | None = None,
96
- ) -> None:
97
- self._classes = classes if classes is not None else [str(i) for i in range(_find_max(labels) + 1)]
98
- self._index2label = dict(enumerate(self._classes))
99
- self._images = images
100
- self._labels = labels
101
- self._metadata = metadata
102
- self._id = name or f"{len(self._images)}_image_{len(self._index2label)}_class_{datum_type}_dataset"
103
-
104
- @property
105
- def metadata(self) -> DatasetMetadata:
106
- return DatasetMetadata(id=self._id, index2label=self._index2label)
107
-
108
- def __len__(self) -> int:
109
- return len(self._images)
110
-
111
-
112
- class CustomImageClassificationDataset(BaseAnnotatedDataset[Sequence[int]], ImageClassificationDataset):
113
- def __init__(
114
- self,
115
- images: Array | Sequence[Array],
116
- labels: Array | Sequence[int],
117
- metadata: Sequence[dict[str, Any]] | None,
118
- classes: Sequence[str] | None,
119
- name: str | None = None,
120
- ) -> None:
121
- super().__init__(
122
- "ic", images, as_numpy(labels).tolist() if isinstance(labels, Array) else labels, metadata, classes
123
- )
124
- if name is not None:
125
- self.__name__ = name
126
- self.__class__.__name__ = name
127
- self.__class__.__qualname__ = name
128
-
129
- def __getitem__(self, idx: int, /) -> tuple[Array, Array, dict[str, Any]]:
130
- one_hot = [0.0] * len(self._index2label)
131
- one_hot[self._labels[idx]] = 1.0
132
- return (
133
- self._images[idx],
134
- as_numpy(one_hot),
135
- _ensure_id(idx, self._metadata[idx] if self._metadata is not None else {}),
136
- )
137
-
138
-
139
- class CustomObjectDetectionDataset(BaseAnnotatedDataset[Sequence[Sequence[int]]], ObjectDetectionDataset):
140
- class ObjectDetectionTarget:
141
- def __init__(self, labels: Sequence[int], bboxes: Sequence[Sequence[float]], class_count: int) -> None:
142
- self._labels = labels
143
- self._bboxes = bboxes
144
- one_hot = [[0.0] * class_count] * len(labels)
145
- for i, label in enumerate(labels):
146
- one_hot[i][label] = 1.0
147
- self._scores = one_hot
148
-
149
- @property
150
- def labels(self) -> Sequence[int]:
151
- return self._labels
152
-
153
- @property
154
- def boxes(self) -> Sequence[Sequence[float]]:
155
- return self._bboxes
156
-
157
- @property
158
- def scores(self) -> Sequence[Sequence[float]]:
159
- return self._scores
160
-
161
- def __init__(
162
- self,
163
- images: Array | Sequence[Array],
164
- labels: Array | Sequence[Array] | Sequence[Sequence[int]],
165
- bboxes: Array | Sequence[Array] | Sequence[Sequence[Array]] | Sequence[Sequence[Sequence[float]]],
166
- metadata: Sequence[dict[str, Any]] | None,
167
- classes: Sequence[str] | None,
168
- name: str | None = None,
169
- ) -> None:
170
- super().__init__(
171
- "od",
172
- images,
173
- [as_numpy(label).tolist() if isinstance(label, Array) else label for label in labels],
174
- metadata,
175
- classes,
176
- )
177
- if name is not None:
178
- self.__name__ = name
179
- self.__class__.__name__ = name
180
- self.__class__.__qualname__ = name
181
- self._bboxes = [[as_numpy(box).tolist() if isinstance(box, Array) else box for box in bbox] for bbox in bboxes]
182
-
183
- @property
184
- def metadata(self) -> DatasetMetadata:
185
- return DatasetMetadata(id=self._id, index2label=self._index2label)
186
-
187
- def __getitem__(self, idx: int, /) -> tuple[Array, ObjectDetectionTarget, dict[str, Any]]:
188
- return (
189
- self._images[idx],
190
- self.ObjectDetectionTarget(self._labels[idx], self._bboxes[idx], len(self._classes)),
191
- _ensure_id(idx, self._metadata[idx] if self._metadata is not None else {}),
192
- )
193
-
194
-
195
- def to_image_classification_dataset(
196
- images: Array | Sequence[Array],
197
- labels: Array | Sequence[int],
198
- metadata: Sequence[dict[str, Any]] | dict[str, Sequence[Any]] | None,
199
- classes: Sequence[str] | None,
200
- name: str | None = None,
201
- ) -> ImageClassificationDataset:
202
- """
203
- Helper function to create custom ImageClassificationDataset classes.
204
-
205
- Parameters
206
- ----------
207
- images : Array | Sequence[Array]
208
- The images to use in the dataset.
209
- labels : Array | Sequence[int]
210
- The labels to use in the dataset.
211
- metadata : Sequence[dict[str, Any]] | dict[str, Sequence[Any]] | None
212
- The metadata to use in the dataset.
213
- classes : Sequence[str] | None
214
- The classes to use in the dataset.
215
-
216
- Returns
217
- -------
218
- ImageClassificationDataset
219
- """
220
- _validate_data("ic", images, labels, None, metadata)
221
- return CustomImageClassificationDataset(images, labels, _listify_metadata(metadata), classes, name)
222
-
223
-
224
- def to_object_detection_dataset(
225
- images: Array | Sequence[Array],
226
- labels: Array | Sequence[Array] | Sequence[Sequence[int]],
227
- bboxes: Array | Sequence[Array] | Sequence[Sequence[Array]] | Sequence[Sequence[Sequence[float]]],
228
- metadata: Sequence[dict[str, Any]] | dict[str, Sequence[Any]] | None,
229
- classes: Sequence[str] | None,
230
- name: str | None = None,
231
- ) -> ObjectDetectionDataset:
232
- """
233
- Helper function to create custom ObjectDetectionDataset classes.
234
-
235
- Parameters
236
- ----------
237
- images : Array | Sequence[Array]
238
- The images to use in the dataset.
239
- labels : Array | Sequence[Array] | Sequence[Sequence[int]]
240
- The labels to use in the dataset.
241
- bboxes : Array | Sequence[Array] | Sequence[Sequence[Array]] | Sequence[Sequence[Sequence[float]]]
242
- The bounding boxes (x0,y0,x1,y0) to use in the dataset.
243
- metadata : Sequence[dict[str, Any]] | dict[str, Sequence[Any]] | None
244
- The metadata to use in the dataset.
245
- classes : Sequence[str] | None
246
- The classes to use in the dataset.
247
-
248
- Returns
249
- -------
250
- ObjectDetectionDataset
251
- """
252
- _validate_data("od", images, labels, bboxes, metadata)
253
- return CustomObjectDetectionDataset(images, labels, bboxes, _listify_metadata(metadata), classes, name)
@@ -1,105 +0,0 @@
1
- dataeval/__init__.py,sha256=aFzX3SLx8wgc763RY772P41ZLqeHcUHRKW9XAN0KfHQ,1793
2
- dataeval/_log.py,sha256=C7AGkIRzymvYJ0LQXtnShiy3i5Xrp8T58JzIHHguk_Q,365
3
- dataeval/_version.py,sha256=17MAD7hlEBqgdl5YlmaM4PJXKdgvw_hAzlX52HDAwlU,513
4
- dataeval/config.py,sha256=lL73s_xa9pBxHHCnBKi59D_tl4vS7ig1rfWbIYkM_ac,3839
5
- dataeval/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- dataeval/typing.py,sha256=si4ZosMrHG-eYKSLCErAEI7Oo1giFRvWkaNK7EhRr1w,7513
7
- dataeval/data/__init__.py,sha256=wzQ6uUFLNB3VJR0a2QnRBYwEmwXT93q0WpHu7FmFW1E,486
8
- dataeval/data/_embeddings.py,sha256=PFjpdV9bfusCB4taTIYSzx1hP8nJb_KCkZTN8kMw-Hs,12885
9
- dataeval/data/_images.py,sha256=Rc_59CuU4zfN7Xm7an1XUx8ZghQg6a56VJWMZD9edRw,2654
10
- dataeval/data/_metadata.py,sha256=jr6W0aC_fKMYPwRjSHkXl02QTZ63QgqOnbvVOCoLLsg,15250
11
- dataeval/data/_selection.py,sha256=r06xeiyK8nTWPLyItkoPQRWZI1i6LATSue_cuEbCdc4,4463
12
- dataeval/data/_split.py,sha256=0WOKwOxMBfzimo_VQUU0dbc4zQleA4OQFO4ho9W57hE,16732
13
- dataeval/data/selections/__init__.py,sha256=2m8ZB53wXzqLcqmc6p5atO6graB6ZyiRSNJFxf11X_g,613
14
- dataeval/data/selections/_classbalance.py,sha256=AqExg-QnYBcfBNzS1Ygsz3Cgb2cqcgGXE0-cseD8_vA,1580
15
- dataeval/data/selections/_classfilter.py,sha256=oYTsqxwOV_mos4_BoNqhHOAKUWFMAXczjrJfEkusLIY,4422
16
- dataeval/data/selections/_indices.py,sha256=5TqKyMJmFRoNfJT5T9yIMx-p5VeJmSmCl2Qxzwi0pPE,628
17
- dataeval/data/selections/_limit.py,sha256=JG4GmEiNKt3sk4PbOUbBnGGzNlyz72H-kQrt8COMm4Y,512
18
- dataeval/data/selections/_prioritize.py,sha256=ss_GZ5MB2ohdNuB55C69TYNwV3PUSmk715gDJI6qfYA,20140
19
- dataeval/data/selections/_reverse.py,sha256=FqYlpPg-0Vz75kbEhGFrJlzIGELSmDZxPlBMY18a57I,365
20
- dataeval/data/selections/_shuffle.py,sha256=nZG1kxc7TfiznaPnDYqWTWnFBf2gWb8koCmEWnf8TWE,1242
21
- dataeval/detectors/__init__.py,sha256=3Sg-XWlwr75zEEH3hZKA4nWMtGvaRlnfzTWvZG_Ak6U,189
22
- dataeval/detectors/drift/__init__.py,sha256=Jqv98oOVeC2tvHlNGxQ8RJ6De2q4SyS5lTpaYlb4ocM,756
23
- dataeval/detectors/drift/_base.py,sha256=6aNF1LzG3w1sNUrmSBbsvuN5IkQnoRikRacqobYge84,7592
24
- dataeval/detectors/drift/_cvm.py,sha256=cS33zWJmFY1fft1XcANcP2jSD5ou7TxvIU2AldhTynM,3004
25
- dataeval/detectors/drift/_ks.py,sha256=uMc5-NA-lSV1IODrY8uJe87ll3uRJT_oXLJFXy95M1w,3186
26
- dataeval/detectors/drift/_mmd.py,sha256=uw8axM6dWxTBrCaXwkbldIDcdhe4hmim9yrsbuOwA-0,11523
27
- dataeval/detectors/drift/_mvdc.py,sha256=WMN6aDOWCh1q1MtdRXFIZlFcfnVi4XgBHsS0A6L5UuY,2942
28
- dataeval/detectors/drift/_uncertainty.py,sha256=BHlykJ-r7TGLJxdPfoazXnoAJ1qVDzbk5HjAMdsnHz8,5847
29
- dataeval/detectors/drift/updates.py,sha256=L1PnrPlIE1x6ujCc5mCwjcAZwadVTn-Zjb6MnTDvzJQ,2251
30
- dataeval/detectors/drift/_nml/__init__.py,sha256=MNyKyZlfTjr5uQql2uBBfRkUdsuduie_WJdn09GYmqg,137
31
- dataeval/detectors/drift/_nml/_base.py,sha256=o34LcCsD9p1A6u8UdQn-dxIVwC2CMr6uCpC0vq16JX0,2663
32
- dataeval/detectors/drift/_nml/_chunk.py,sha256=xF3U-CAobzoKX-20yjWjGVD14IOcAV6rPaIrqCMwGdQ,13564
33
- dataeval/detectors/drift/_nml/_domainclassifier.py,sha256=n7Ttq5Ej7sAY9Jn2iagaGj4IIWiG8gmA3wwFizlBqes,7292
34
- dataeval/detectors/drift/_nml/_result.py,sha256=TMK17bnlgSdL0MCRHtQZJO8YoWWe4C2kh_akESrlP1g,3269
35
- dataeval/detectors/drift/_nml/_thresholds.py,sha256=WGdkLei9w_EvvsRHQzWdDyFVoZHIwM78k_aB3eoh31Q,12060
36
- dataeval/detectors/linters/__init__.py,sha256=xn2zPwUcmsuf-Jd9uw6AVI11C9z1b1Y9fYtuFnXenZ0,404
37
- dataeval/detectors/linters/duplicates.py,sha256=X5WSEvI_BHkLoXjkaHK6wTnSkx4IjpO_exMRjSlhc70,4963
38
- dataeval/detectors/linters/outliers.py,sha256=GaM9n8yPgBPzVOL_bxJCj0eCwobEEP4JHKHD9liRdlw,10130
39
- dataeval/detectors/ood/__init__.py,sha256=qDoDdQetJY1xZB43dNzcOIO_8NiEuEU0z1QNU4QkEXs,341
40
- dataeval/detectors/ood/ae.py,sha256=cJ7nq4iwTvW8uihHCUhGfTlKsAlthJ2tOhgSsB27cOY,2941
41
- dataeval/detectors/ood/base.py,sha256=fsjQ7wHRNJNPLGFw_6jvygkFFbv2G1ydwp8Zh1ncVlA,4374
42
- dataeval/detectors/ood/knn.py,sha256=Fu77geQFHPYNOn81VIXUJ3yC3t5Ylv0ZgvwMeA2JX6I,3782
43
- dataeval/detectors/ood/mixin.py,sha256=0_o-1HPvgf3-Lf1MSOIfjj5UB8LTLEBGYtJJfyCCzwc,5431
44
- dataeval/metadata/__init__.py,sha256=XDDmJbOZBNM6pL0r6Nbu6oMRoyAh22IDkPYGndNlkZU,316
45
- dataeval/metadata/_distance.py,sha256=MbXM9idsooNWnGLaTKg8j4ZqavUeJUjuW7EPW3-UQyg,4234
46
- dataeval/metadata/_ood.py,sha256=lNPHouj_9WfM_uTtsaiRaPn46RcVy3YebD1c32vDj-c,8981
47
- dataeval/metadata/_utils.py,sha256=BcGoYVfA4AkAWpInY5txOc3QBpsGf6cnnUAsHOQTJAE,1210
48
- dataeval/metrics/__init__.py,sha256=8VC8q3HuJN3o_WN51Ae2_wXznl3RMXIvA5GYVcy7vr8,225
49
- dataeval/metrics/bias/__init__.py,sha256=329S1_3WnWqeU4-qVcbe0fMy4lDrj9uKslWHIQf93yg,839
50
- dataeval/metrics/bias/_balance.py,sha256=Yf0WNw9DxluFPNP-_wA1BcRRs-PRwocnHp0HScXS6t4,5719
51
- dataeval/metrics/bias/_completeness.py,sha256=2cvOXe7fhtxZGH_4QBuiCafIeamxFBarMiUBuEP7QGI,4596
52
- dataeval/metrics/bias/_coverage.py,sha256=v2x2hbOf2za9jFcSVSJUAoJ2BJfzzlCzt0mFIGtBL0A,3639
53
- dataeval/metrics/bias/_diversity.py,sha256=Z7UQzKp9bsmB-hC3_sY6HIJUJRkLHb5cVEoU79cNDzc,5800
54
- dataeval/metrics/bias/_parity.py,sha256=ZIKc5OK6wQ4moleBJzGDfOPvyNzj03-KoHAGBZnO4pk,11433
55
- dataeval/metrics/estimators/__init__.py,sha256=Pnds8uIyAovt2fKqZjiHCIP_kVoBWlVllekYuK5UmmU,568
56
- dataeval/metrics/estimators/_ber.py,sha256=7noeRyOJJYqrJ_jt90nRHtR2t2u5MIvTCmWt0_rd4EU,5370
57
- dataeval/metrics/estimators/_clusterer.py,sha256=1HrpihGTJ63IkNSOy4Ibw633Gllkm1RxKmoKT5MOgt0,1434
58
- dataeval/metrics/estimators/_divergence.py,sha256=t-Z_7Bq4V4FunxKlq7G4ThtgLany8n4iEU0n0afr7F8,3991
59
- dataeval/metrics/estimators/_uap.py,sha256=BULEBbJ9BQ1IcTeZf0x7iI60QHAWCccBOM97FIu9VXA,1928
60
- dataeval/metrics/stats/__init__.py,sha256=6tA_9nbbM5ObJ6cds8Y1VBtTQiTOxrpGQSFLu_lWGGA,1098
61
- dataeval/metrics/stats/_base.py,sha256=R-hxoEPLreZcxYxBfyjbKfdoGMMTPiqJ5g2zSO-1UYM,12541
62
- dataeval/metrics/stats/_boxratiostats.py,sha256=ROZrlqgbowkGfCR5PJ5TL7Og40iMOdUqJnsCtaz_Xek,6450
63
- dataeval/metrics/stats/_dimensionstats.py,sha256=s2Juca8GG501nZd2SWL_YtXWkTfxUrUIAl53PO3_VeA,2876
64
- dataeval/metrics/stats/_hashstats.py,sha256=8C4EgzmBd3HMNsSATTriLVcvaWfoSasTLYizONqUDf4,5388
65
- dataeval/metrics/stats/_imagestats.py,sha256=gUPNgN5Zwzdr7WnSwbve1NXNsyxd5dy3cSnlR_7guCg,3007
66
- dataeval/metrics/stats/_labelstats.py,sha256=_dXt3p8_-SHEtHvJWbL0rnQvO2g30zxX42mG2LGJepU,3195
67
- dataeval/metrics/stats/_pixelstats.py,sha256=N9e7RXuzSHtlJtWU7l5IcTTIXe2kOmWiuj6lnJpZWq0,3312
68
- dataeval/metrics/stats/_visualstats.py,sha256=b6jMq36_UlKduMrkwfq2i0fXNalDEcMdqPgoynXl5hI,3713
69
- dataeval/outputs/__init__.py,sha256=geHB5M3QOiFFaQGV4ZwDTTKpqZPvPePbqG7lzaPhaXQ,1741
70
- dataeval/outputs/_base.py,sha256=-Wa0gFcBVLbfWPMZyCql7x4vGsnkLP4pecsQIeUZ2_Y,5904
71
- dataeval/outputs/_bias.py,sha256=1OZpKncYTryjPLRHb4d6NlhE27uPT57gCob_5jtjKDI,10456
72
- dataeval/outputs/_drift.py,sha256=hXILED_soY8ppIQZgftQvmumtwDrTnABbYl-flIGEU4,4588
73
- dataeval/outputs/_estimators.py,sha256=IQgSbOPHYzzxn1X64XF2XxQhDlWy6jwy6RNyoyvsipE,3111
74
- dataeval/outputs/_linters.py,sha256=k8lkd8EZ23q0m-HOD-FgqMcLQFy1UH7vws2ucLPyn08,6697
75
- dataeval/outputs/_metadata.py,sha256=ffZgpX8KWURPHXpOWjbvJ2KRqWQkS2nWuIjKUzoHhMI,1710
76
- dataeval/outputs/_ood.py,sha256=suLKVXULGtXH0rq9eXHI1d3d2jhGmItJtz4QiQd47A4,1718
77
- dataeval/outputs/_stats.py,sha256=_ItGjs9YaMHqjivkR1YBcSErD5ICfa_-iV9nq0l8bTM,17451
78
- dataeval/outputs/_utils.py,sha256=NfhYaGT2PZlhIs8ICKUsPWHZXjhWYDkEJqBDdqMeaOM,929
79
- dataeval/outputs/_workflows.py,sha256=_0U9VzCvqLIOlxqpngPhmPcUZMk57bF9qnnrkLUMoGY,11450
80
- dataeval/utils/__init__.py,sha256=sjelzMPaTImF6isiRcp8UGDE3tppEpWS5GoR8WKPZ1k,242
81
- dataeval/utils/_array.py,sha256=bIDbnv15_hNzFn2Uc4WV1qRyFzubQj2nNYsFUDIdwT0,6335
82
- dataeval/utils/_bin.py,sha256=KpAnhzLBgh6PxMlM9dPPvuic0S1KNKwlcM1Vg-d4dGI,7364
83
- dataeval/utils/_clusterer.py,sha256=rUvEdyMwp95lffmt6xKMEwsjRXNoBS0n5mAS_HNOnck,5656
84
- dataeval/utils/_fast_mst.py,sha256=pv42flr1Uf5RBa9qDG0YLDXWH7Mr7a9zpauO1HqZXaY,8061
85
- dataeval/utils/_image.py,sha256=4uxTIOYZZlRJOfNmdA3ek3no3FrLWCK5un48kStMDt8,3578
86
- dataeval/utils/_method.py,sha256=9B9JQbgqWJBRhQJb7glajUtWaQzUTIUuvrZ9_bisxsM,394
87
- dataeval/utils/_mst.py,sha256=bLmJmu_1Dtj3hC5gQp3oAiJ_7TKtEjahTqusVRRU4eI,2168
88
- dataeval/utils/_plot.py,sha256=1rnMkBRvTFLoTAHqXwF7c7GJ5_5iqlgarZKAzmYciLk,7225
89
- dataeval/utils/data/__init__.py,sha256=AD7o2rllEdq4BVvlxljYKRXrXNer39XdGNuaRMbvH4Y,414
90
- dataeval/utils/data/_dataset.py,sha256=901qUUcLg_HPg07N5uNabAZ00MGFCdOr7o6VbIEk2_I,9870
91
- dataeval/utils/data/_validate.py,sha256=sea8B7DLbbxTqTjAQ5Vhs5XNRZWE5wBBqDgcKNVQBRA,6923
92
- dataeval/utils/data/collate.py,sha256=5egEEKhNNCGeNLChO1p6dZ4Wg6x51VEaMNHz7hEZUxI,3936
93
- dataeval/utils/data/metadata.py,sha256=L1c2bCiMj0aR0QCoKkjwBujIftJDEMgW_3ZbgeS8WHo,14703
94
- dataeval/utils/torch/__init__.py,sha256=dn5mjCrFp0b1aL_UEURhONU0Ag0cmXoTOBSGagpkTiA,325
95
- dataeval/utils/torch/_blocks.py,sha256=HVhBTMMD5NA4qheMUgyol1KWiKZDIuc8k5j4RcMKmhk,1466
96
- dataeval/utils/torch/_gmm.py,sha256=XM68GNEP97EjaB1U49-ZXRb81d0CEFnPS910alrcB3g,3740
97
- dataeval/utils/torch/_internal.py,sha256=9rzlMeM8i3p-ctulh9WDQATMXtlp-Jk2pBX7NGC8l2I,4146
98
- dataeval/utils/torch/models.py,sha256=1idpXyjrYcCBSsbxxRUOto8xr4MJNjDEqQHiIXVU5Zc,9700
99
- dataeval/utils/torch/trainer.py,sha256=DRyPScGdE4o5Xo3BmD9p2PGOApzi1E-QfsBRNZ5IXW8,5544
100
- dataeval/workflows/__init__.py,sha256=ou8y0KO-d6W5lgmcyLjKlf-J_ckP3vilW7wHkgiDlZ4,255
101
- dataeval/workflows/sufficiency.py,sha256=UAPjowFrmM6IJJaOk9GkH3nfQTyDy2_zOY55o2g3G1M,10072
102
- dataeval-0.87.0.dist-info/METADATA,sha256=xhp28LbYD7FWbfhFfDgVzS_pi-E2TFgl-X33seCD2cE,5674
103
- dataeval-0.87.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
104
- dataeval-0.87.0.dist-info/licenses/LICENSE,sha256=uAooygKWvX6NbU9Ran9oG2msttoG8aeTeHSTe5JeCnY,1061
105
- dataeval-0.87.0.dist-info/RECORD,,