dataeval 0.75.0__py3-none-any.whl → 0.76.0__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 (43) hide show
  1. dataeval/__init__.py +3 -3
  2. dataeval/detectors/drift/base.py +2 -2
  3. dataeval/detectors/drift/ks.py +2 -1
  4. dataeval/detectors/drift/mmd.py +3 -2
  5. dataeval/detectors/drift/uncertainty.py +2 -2
  6. dataeval/detectors/drift/updates.py +1 -1
  7. dataeval/detectors/linters/clusterer.py +3 -2
  8. dataeval/detectors/linters/duplicates.py +4 -4
  9. dataeval/detectors/linters/outliers.py +96 -3
  10. dataeval/detectors/ood/__init__.py +1 -1
  11. dataeval/detectors/ood/base.py +1 -17
  12. dataeval/detectors/ood/output.py +1 -1
  13. dataeval/interop.py +1 -1
  14. dataeval/metrics/__init__.py +1 -1
  15. dataeval/metrics/bias/__init__.py +1 -1
  16. dataeval/metrics/bias/balance.py +3 -3
  17. dataeval/metrics/bias/coverage.py +1 -1
  18. dataeval/metrics/bias/diversity.py +14 -10
  19. dataeval/metrics/bias/parity.py +5 -5
  20. dataeval/metrics/estimators/ber.py +4 -3
  21. dataeval/metrics/estimators/divergence.py +3 -3
  22. dataeval/metrics/estimators/uap.py +3 -3
  23. dataeval/metrics/stats/__init__.py +1 -1
  24. dataeval/metrics/stats/base.py +24 -8
  25. dataeval/metrics/stats/boxratiostats.py +5 -5
  26. dataeval/metrics/stats/datasetstats.py +39 -6
  27. dataeval/metrics/stats/dimensionstats.py +4 -4
  28. dataeval/metrics/stats/hashstats.py +2 -2
  29. dataeval/metrics/stats/labelstats.py +89 -6
  30. dataeval/metrics/stats/pixelstats.py +7 -5
  31. dataeval/metrics/stats/visualstats.py +6 -4
  32. dataeval/output.py +23 -14
  33. dataeval/utils/__init__.py +2 -2
  34. dataeval/utils/dataset/read.py +1 -1
  35. dataeval/utils/dataset/split.py +1 -1
  36. dataeval/utils/metadata.py +42 -44
  37. dataeval/utils/plot.py +129 -6
  38. dataeval/workflows/sufficiency.py +2 -2
  39. {dataeval-0.75.0.dist-info → dataeval-0.76.0.dist-info}/LICENSE.txt +2 -2
  40. {dataeval-0.75.0.dist-info → dataeval-0.76.0.dist-info}/METADATA +18 -17
  41. dataeval-0.76.0.dist-info/RECORD +67 -0
  42. dataeval-0.75.0.dist-info/RECORD +0 -67
  43. {dataeval-0.75.0.dist-info → dataeval-0.76.0.dist-info}/WHEEL +0 -0
dataeval/utils/plot.py CHANGED
@@ -3,6 +3,7 @@ from __future__ import annotations
3
3
  __all__ = []
4
4
 
5
5
  import contextlib
6
+ from typing import Any
6
7
 
7
8
  import numpy as np
8
9
  from numpy.typing import ArrayLike
@@ -70,12 +71,17 @@ def heatmap(
70
71
  # Rotate the tick labels and set their alignment.
71
72
  plt.setp(ax.get_xticklabels(), rotation=45, ha="right", rotation_mode="anchor")
72
73
 
73
- # Turn spines off and create white grid.
74
- ax.spines[:].set_visible(False)
75
-
76
- ax.set_xticks(np.arange(np_data.shape[1] + 1) - 0.5, minor=True)
77
- ax.set_yticks(np.arange(np_data.shape[0] + 1) - 0.5, minor=True)
78
- ax.grid(which="minor", color="w", linestyle="-", linewidth=3)
74
+ light_gray = "0.9"
75
+ # Turn spines on and create light gray easily visible grid.
76
+ for spine in ax.spines.values():
77
+ spine.set_visible(True)
78
+ spine.set_color(light_gray)
79
+
80
+ xticks = np.arange(np_data.shape[1] + 1) - 0.5
81
+ yticks = np.arange(np_data.shape[0] + 1) - 0.5
82
+ ax.set_xticks(xticks, minor=True)
83
+ ax.set_yticks(yticks, minor=True)
84
+ ax.grid(which="minor", color=light_gray, linestyle="-", linewidth=3)
79
85
  ax.tick_params(which="minor", bottom=False, left=False)
80
86
 
81
87
  if xlabel:
@@ -124,3 +130,120 @@ def format_text(*args: str) -> str:
124
130
  """
125
131
  x = args[0]
126
132
  return f"{x:.2f}".replace("0.00", "0").replace("0.", ".").replace("nan", "")
133
+
134
+
135
+ def histogram_plot(
136
+ data_dict: dict[str, Any],
137
+ log: bool = True,
138
+ xlabel: str = "values",
139
+ ylabel: str = "counts",
140
+ ) -> Figure:
141
+ """
142
+ Plots a formatted histogram
143
+
144
+ Parameters
145
+ ----------
146
+ data_dict : dict
147
+ Dictionary containing the metrics and their value arrays
148
+ log : bool, default True
149
+ If True, plots the histogram on a semi-log scale (y axis)
150
+ xlabel : str, default "values"
151
+ X-axis label
152
+ ylabel : str, default "counts"
153
+ Y-axis label
154
+
155
+ Returns
156
+ -------
157
+ matplotlib.figure.Figure
158
+ Formatted plot of histograms
159
+ """
160
+ import matplotlib.pyplot as plt
161
+
162
+ num_metrics = len(data_dict)
163
+ if num_metrics > 2:
164
+ rows = int(len(data_dict) / 3)
165
+ fig, axs = plt.subplots(rows, 3, figsize=(10, rows * 2.5))
166
+ else:
167
+ fig, axs = plt.subplots(1, num_metrics, figsize=(4 * num_metrics, 4))
168
+
169
+ for ax, metric in zip(
170
+ axs.flat,
171
+ data_dict,
172
+ ):
173
+ # Plot the histogram for the chosen metric
174
+ ax.hist(data_dict[metric], bins=20, log=log)
175
+
176
+ # Add labels to the histogram
177
+ ax.set_title(metric)
178
+ ax.set_ylabel(ylabel)
179
+ ax.set_xlabel(xlabel)
180
+
181
+ fig.tight_layout()
182
+ return fig
183
+
184
+
185
+ def channel_histogram_plot(
186
+ data_dict: dict[str, Any],
187
+ log: bool = True,
188
+ max_channels: int = 3,
189
+ ch_mask: list[bool] | None = None,
190
+ xlabel: str = "values",
191
+ ylabel: str = "counts",
192
+ ) -> Figure:
193
+ """
194
+ Plots a formatted heatmap
195
+
196
+ Parameters
197
+ ----------
198
+ data_dict : dict
199
+ Dictionary containing the metrics and their value arrays
200
+ log : bool, default True
201
+ If True, plots the histogram on a semi-log scale (y axis)
202
+ xlabel : str, default "values"
203
+ X-axis label
204
+ ylabel : str, default "counts"
205
+ Y-axis label
206
+
207
+ Returns
208
+ -------
209
+ matplotlib.figure.Figure
210
+ Formatted plot of histograms
211
+ """
212
+ import matplotlib.pyplot as plt
213
+
214
+ channelwise_metrics = ["mean", "std", "var", "skew", "zeros", "brightness", "contrast", "darkness", "entropy"]
215
+ data_keys = [key for key in data_dict if key in channelwise_metrics]
216
+ label_kwargs = {"label": [f"Channel {i}" for i in range(max_channels)]}
217
+
218
+ num_metrics = len(data_keys)
219
+ if num_metrics > 2:
220
+ rows = int(len(data_keys) / 3)
221
+ fig, axs = plt.subplots(rows, 3, figsize=(10, rows * 2.5))
222
+ else:
223
+ fig, axs = plt.subplots(1, num_metrics, figsize=(4 * num_metrics, 4))
224
+
225
+ for ax, metric in zip(
226
+ axs.flat,
227
+ data_keys,
228
+ ):
229
+ # Plot the histogram for the chosen metric
230
+ data = data_dict[metric][ch_mask].reshape(-1, max_channels)
231
+ ax.hist(
232
+ data,
233
+ bins=20,
234
+ density=True,
235
+ log=log,
236
+ **label_kwargs,
237
+ )
238
+ # Only plot the labels once for channels
239
+ if label_kwargs:
240
+ ax.legend()
241
+ label_kwargs = {}
242
+
243
+ # Add labels to the histogram
244
+ ax.set_title(metric)
245
+ ax.set_ylabel(ylabel)
246
+ ax.set_xlabel(xlabel)
247
+
248
+ fig.tight_layout()
249
+ return fig
@@ -24,7 +24,7 @@ with contextlib.suppress(ImportError):
24
24
  @dataclass(frozen=True)
25
25
  class SufficiencyOutput(Output):
26
26
  """
27
- Output class for :class:`Sufficiency` workflow
27
+ Output class for :class:`Sufficiency` workflow.
28
28
 
29
29
  Attributes
30
30
  ----------
@@ -378,7 +378,7 @@ T = TypeVar("T")
378
378
 
379
379
  class Sufficiency(Generic[T]):
380
380
  """
381
- Project dataset :term:`sufficiency<Sufficiency>` using given a model and evaluation criteria
381
+ Project dataset :term:`sufficiency<Sufficiency>` using given a model and evaluation criteria.
382
382
 
383
383
  Parameters
384
384
  ----------
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2024 ARiA
3
+ Copyright (c) 2025 ARiA
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
18
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
21
+ SOFTWARE.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dataeval
3
- Version: 0.75.0
3
+ Version: 0.76.0
4
4
  Summary: DataEval provides a simple interface to characterize image data and its impact on model performance across classification and object-detection tasks
5
5
  Home-page: https://dataeval.ai/
6
6
  License: MIT
@@ -22,7 +22,7 @@ Classifier: Programming Language :: Python :: 3 :: Only
22
22
  Classifier: Topic :: Scientific/Engineering
23
23
  Provides-Extra: all
24
24
  Requires-Dist: matplotlib ; extra == "all"
25
- Requires-Dist: numpy (>=1.24.3)
25
+ Requires-Dist: numpy (>=1.24.2)
26
26
  Requires-Dist: pillow (>=10.3.0)
27
27
  Requires-Dist: requests
28
28
  Requires-Dist: scikit-learn (>=1.5.0)
@@ -52,7 +52,7 @@ DataEval curates datasets to train and test performant, robust, unbiased and rel
52
52
 
53
53
  <!-- start needs -->
54
54
 
55
- DataEval is an effective, powerful, and reliable set of tools for any T&E engineer. Throughout all stages of the machine learning lifecycle, DataEval supports **model development, data analysis, and monitoring with state-of-the-art algorithms to help you solve difficult problems. With a focus on computer vision tasks, DataEval provides simple, but effective metrics for performance estimation, bias detection, and dataset linting.
55
+ DataEval is an effective, powerful, and reliable set of tools for any T&E engineer. Throughout all stages of the machine learning lifecycle, DataEval supports model development, data analysis, and monitoring with state-of-the-art algorithms to help you solve difficult problems. With a focus on computer vision tasks, DataEval provides simple, but effective metrics for performance estimation, bias detection, and dataset linting.
56
56
 
57
57
  <!-- end needs -->
58
58
 
@@ -74,9 +74,10 @@ Choose your preferred method of installation below or follow our [installation g
74
74
  * [Installing from GitHub](#installing-from-github)
75
75
 
76
76
  ### **Installing with pip**
77
+
77
78
  You can install DataEval directly from pypi.org using the following command. The optional dependencies of DataEval are `all`.
78
79
 
79
- ```
80
+ ```bash
80
81
  pip install dataeval[all]
81
82
  ```
82
83
 
@@ -85,7 +86,7 @@ pip install dataeval[all]
85
86
  DataEval can be installed in a Conda/Mamba environment using the provided `environment.yaml` file. As some dependencies
86
87
  are installed from the `pytorch` channel, the channel is specified in the below example.
87
88
 
88
- ```
89
+ ```bash
89
90
  micromamba create -f environment\environment.yaml -c pytorch
90
91
  ```
91
92
 
@@ -93,24 +94,27 @@ micromamba create -f environment\environment.yaml -c pytorch
93
94
 
94
95
  To install DataEval from source locally on Ubuntu, you will need `git-lfs` to download larger, binary source files and `poetry` for project dependency management.
95
96
 
96
- ```
97
+ ```bash
97
98
  sudo apt-get install git-lfs
98
99
  pip install poetry
99
100
  ```
100
101
 
101
102
  Pull the source down and change to the DataEval project directory.
102
- ```
103
+
104
+ ```bash
103
105
  git clone https://github.com/aria-ml/dataeval.git
104
106
  cd dataeval
105
107
  ```
106
108
 
107
109
  Install DataEval with optional dependencies for development.
108
- ```
110
+
111
+ ```bash
109
112
  poetry install --all-extras --with dev
110
113
  ```
111
114
 
112
115
  Now that DataEval is installed, you can run commands in the poetry virtual environment by prefixing shell commands with `poetry run`, or activate the virtual environment directly in the shell.
113
- ```
116
+
117
+ ```bash
114
118
  poetry shell
115
119
  ```
116
120
 
@@ -118,19 +122,16 @@ poetry shell
118
122
 
119
123
  If you have any questions, feel free to reach out to the people below:
120
124
 
121
- - **POC**: Scott Swan @scott.swan
122
- - **DPOC**: Andrew Weng @aweng
125
+ * **POC**: Scott Swan @scott.swan
126
+ * **DPOC**: Andrew Weng @aweng
123
127
 
124
128
  ## Acknowledgement
125
129
 
126
- <!-- start attribution -->
127
-
128
- ### Alibi-Detect
129
- This project uses code from the [Alibi-Detect](https://github.com/SeldonIO/alibi-detect) Python library developed by SeldonIO.\
130
- Additional documentation from their developers is available on the [Alibi-Detect documentation page](https://docs.seldon.io/projects/alibi-detect/en/stable/).
130
+ <!-- start acknowledgement -->
131
131
 
132
132
  ### CDAO Funding Acknowledgement
133
+
133
134
  This material is based upon work supported by the Chief Digital and Artificial Intelligence Office under Contract No. W519TC-23-9-2033. The views and conclusions contained herein are those of the author(s) and should not be interpreted as necessarily representing the official policies or endorsements, either expressed or implied, of the U.S. Government.
134
135
 
135
- <!-- end attribution -->
136
+ <!-- end acknowledgement -->
136
137
 
@@ -0,0 +1,67 @@
1
+ dataeval/__init__.py,sha256=TSINwIPlGIGiYd66kY8gnBnEpBhcgWm7_029htFBgv8,1474
2
+ dataeval/detectors/__init__.py,sha256=iifG-Z08mH5B4QhkKtAieDGJBKldKvmCXpDQJD9qVY8,206
3
+ dataeval/detectors/drift/__init__.py,sha256=wO294Oz--l0GuZTAkBpyGwZphbQsot57HoiEX6kjNOc,652
4
+ dataeval/detectors/drift/base.py,sha256=8zHUnUpmgpWMzDv5C-tUX61lbpDjhJ-eAIiNxaNvWP8,14469
5
+ dataeval/detectors/drift/cvm.py,sha256=TATS6IOE0INO1pkyRkesgrhDawD_kITsRsOOGVRs420,4132
6
+ dataeval/detectors/drift/ks.py,sha256=SAd2T9CdytXD7DegCzAX1pWYJdPuttyL97KAQYF4j7Y,4265
7
+ dataeval/detectors/drift/mmd.py,sha256=z7JPFbW4fmHJhR-Qe1OQ4mM8kW6dNxnd3uHD9oXMETE,7599
8
+ dataeval/detectors/drift/torch.py,sha256=ykD-Nggys5T9FTGXXbYYOi2WRKwEzEjXhL8ZueVmTxU,7659
9
+ dataeval/detectors/drift/uncertainty.py,sha256=zkrqz5euJJtYFKsDiRqFfTnDjVOTbqpZWgZiGMrYxvI,5351
10
+ dataeval/detectors/drift/updates.py,sha256=nKsF4xrMFZd2X84GJ5XnGylUuketX_RcH7UpcdlonIo,1781
11
+ dataeval/detectors/linters/__init__.py,sha256=CZV5naeYQYL3sHXO_CXB26AXkyTeKHI-TMaewtEs8Ag,483
12
+ dataeval/detectors/linters/clusterer.py,sha256=V-bNs4ut2E6SIqU4MR1Y96WBZcs4cavQhvXBB0vFZPw,20937
13
+ dataeval/detectors/linters/duplicates.py,sha256=Ba-Nmbjqg_HDMlEBqlWW1aFO_BA-HSc-uWHc3cmI394,5620
14
+ dataeval/detectors/linters/merged_stats.py,sha256=X-bDTwjyR8RuVmzxLaHZmQ5nI3oOWvsqVlitdSncapk,1355
15
+ dataeval/detectors/linters/outliers.py,sha256=aGGGOJKs0FTObQtj1m-ench0MHADOhrhC8idf1wRB0s,13786
16
+ dataeval/detectors/ood/__init__.py,sha256=Ws6_un4pFWNknki7Bp7qjrslZVB9pYNE-K72u2lF65k,291
17
+ dataeval/detectors/ood/ae.py,sha256=SL8oKTERhMwaZTQWwDhQQ6H07UKj8ozXqEWO3TaOAos,2151
18
+ dataeval/detectors/ood/base.py,sha256=-ApcC9lyZJAgk-joMpLXF20sJqtvlAugg-W18TcAsEw,3010
19
+ dataeval/detectors/ood/metadata_ks_compare.py,sha256=-hEhDNXFC7X8wmFeoigO7A7Qn90vRLroN_nKDwNgjnE,5204
20
+ dataeval/detectors/ood/metadata_least_likely.py,sha256=rb8GOgsrlrEzc6fxccdmyZQ5PC7HtTsTY8U97D-h5OU,5088
21
+ dataeval/detectors/ood/metadata_ood_mi.py,sha256=7_Sdzf7-x1TlrIQvSyOIB98C8_UQhUwmwFQmZ9_q1Uc,4042
22
+ dataeval/detectors/ood/mixin.py,sha256=Ia-rJF6rtGhE8uavijdbzOha3ueFk2CFfA0Ah_mnF40,4976
23
+ dataeval/detectors/ood/output.py,sha256=yygnsjaIQB6v6sXh7glqX2aoqWdf3_YLINqx7BGKMtk,1710
24
+ dataeval/interop.py,sha256=P9Kwe-vOVgbn1ng60y4giCnJYmHjIOpyGpccuIA7P1g,2322
25
+ dataeval/log.py,sha256=Mn5bRWO0cgtAYd5VGYSFiPgu57ta3zoktrtHAZ1m3dU,357
26
+ dataeval/metrics/__init__.py,sha256=OMntcHmmrsOfIlRsJTZQQaF5qXEuP61Li-ElKy7Ysbk,240
27
+ dataeval/metrics/bias/__init__.py,sha256=SIg4Qxza9BqXyKNQLIY0bpqoFvZfK5-GaejpTH6efVc,601
28
+ dataeval/metrics/bias/balance.py,sha256=B1sPackyodiBct9Hs88BR4nJde_R61JyjwSBIG_CFug,9171
29
+ dataeval/metrics/bias/coverage.py,sha256=igVDWJSrO2MvaTEiDUhVzVWPGNB1QOZvngCi8UF0RwA,5746
30
+ dataeval/metrics/bias/diversity.py,sha256=nF1y2FaQIU0yHQtckoddjqoty2hsVVMqwaXWHRdGfqA,8521
31
+ dataeval/metrics/bias/parity.py,sha256=rzi7Z0Z6injCaj2vkbSsZvbKMfk1EN648oKinv5y5Dk,12760
32
+ dataeval/metrics/estimators/__init__.py,sha256=oY_9jX7V-Kg7-4KpvMNB4rUhsk8QTA0DIoM8d2VtVIg,380
33
+ dataeval/metrics/estimators/ber.py,sha256=vcndXr0PNLRlYz7u7K74f-B5g3DnUkaTO_WigGdj0cg,5012
34
+ dataeval/metrics/estimators/divergence.py,sha256=joqqlH0AQFibJkHCCb7i7dMJIGF28fmZIR-tGupQQJQ,4247
35
+ dataeval/metrics/estimators/uap.py,sha256=ZAQUjJCbdulftWk6yjILCbnXGOE8RuDqEINZRtMW3tc,2143
36
+ dataeval/metrics/stats/__init__.py,sha256=pUT84sOxDiCHW6xz6Ml1Mf1bFszQrtd3qPG0Ja3boxA,1088
37
+ dataeval/metrics/stats/base.py,sha256=1ejjwlA0FmllcAw7J9Yv1r7GMmBYKvuGPzmDk9ktASM,12613
38
+ dataeval/metrics/stats/boxratiostats.py,sha256=PS1wvWwhTCMJX56erfPW-BZymXrevvXnKl2PkE0qmLk,6315
39
+ dataeval/metrics/stats/datasetstats.py,sha256=mt5t5WhlVI7mo56dmhqgnk1eH8oBV7dahgmqkFDcKo0,7387
40
+ dataeval/metrics/stats/dimensionstats.py,sha256=AlPor23dUH718jFNiVNedHQVaQzN-6OKQEVDQbnGE50,4027
41
+ dataeval/metrics/stats/hashstats.py,sha256=5nNSJ3Tl8gPqpYlWpxl7EHfW6pJd1BtbXYUiuGgH4Eo,5070
42
+ dataeval/metrics/stats/labelstats.py,sha256=v9EAg-9h0OtuoU0r3K5TJbHj87fjmnWnNdtg0EPp8co,7030
43
+ dataeval/metrics/stats/pixelstats.py,sha256=tfvu0tYPgDS0jCCSY2sZ2Ice5r1nNuKx-LYXxZQCw7s,4220
44
+ dataeval/metrics/stats/visualstats.py,sha256=pEQnAPFg-zQ1U5orwF0-U7kfHuZGjMJDsdEMAoDZd4I,4634
45
+ dataeval/output.py,sha256=Dyfv1xlrwSbCe7HdDyq8t-kiIRJbBeaMEmMROr1FrVQ,4034
46
+ dataeval/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
+ dataeval/utils/__init__.py,sha256=WW9e_1RbtkvLDRqu1NpDw3-V4su4mA8yJ_P3bgd_7Ho,283
48
+ dataeval/utils/dataset/__init__.py,sha256=IvRauQaa0CzJ5nZrfTSjGoaaKelyJcQDe3OPRw0-NXs,332
49
+ dataeval/utils/dataset/datasets.py,sha256=7tSqN3d8UncqmXh4eiEwarXgVxc4sMuIKPTqBCE0pN8,15080
50
+ dataeval/utils/dataset/read.py,sha256=Q_RaNTFXhkMsx3PrgJEIySdHAA-QxGuih6eq6mnJv-4,1524
51
+ dataeval/utils/dataset/split.py,sha256=1vNy5I1zZx-LIf8B0y57dUaO_UdVd1hyJggUANkwNtM,18958
52
+ dataeval/utils/image.py,sha256=AQljELyMFkYsf2AoNOH5dZG8DYE4hPw0MCk85eIXqAw,1926
53
+ dataeval/utils/metadata.py,sha256=SjYPXvM7x_3OyQbdfn4WsViqMplEjRxTdz8tjSJEP3E,22497
54
+ dataeval/utils/plot.py,sha256=YyFL1KoJgnl2Bip7m73WVBJa6zbsBnn5c1b3skFfUrA,7068
55
+ dataeval/utils/shared.py,sha256=xvF3VLfyheVwJtdtDrneOobkKf7t-JTmf_w91FWXmqo,3616
56
+ dataeval/utils/torch/__init__.py,sha256=dn5mjCrFp0b1aL_UEURhONU0Ag0cmXoTOBSGagpkTiA,325
57
+ dataeval/utils/torch/blocks.py,sha256=HVhBTMMD5NA4qheMUgyol1KWiKZDIuc8k5j4RcMKmhk,1466
58
+ dataeval/utils/torch/gmm.py,sha256=fQ8CBO4Bf6i9N1CZdeJ8VJP25fsPjgMextQkondwgvo,3693
59
+ dataeval/utils/torch/internal.py,sha256=qAzQTwTI9Qy6f01Olw3d1TIJ4HoWGf0gQzgWVcdD2x4,6653
60
+ dataeval/utils/torch/models.py,sha256=Df3B_9x5uu-Y5ZOyhRZYpKJnDvxt0hgMeJLy1E4oxpU,8519
61
+ dataeval/utils/torch/trainer.py,sha256=Qay0LK63RuyoGYiJ5zI2C5BVym309ORvp6shhpcrIU4,5589
62
+ dataeval/workflows/__init__.py,sha256=L9yfBipNFGnYuN2JbMknIHDvziwfa2XAGFnOwifZbls,216
63
+ dataeval/workflows/sufficiency.py,sha256=jf53J1PAlfRHSjGpMCWRJzImitLtCQvTMCaMm28ZuPM,18675
64
+ dataeval-0.76.0.dist-info/LICENSE.txt,sha256=uAooygKWvX6NbU9Ran9oG2msttoG8aeTeHSTe5JeCnY,1061
65
+ dataeval-0.76.0.dist-info/METADATA,sha256=zk12Bkp0R6Glx-VSrG7ip45aTU4y6i_P_mPw2c_SQ6w,5140
66
+ dataeval-0.76.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
67
+ dataeval-0.76.0.dist-info/RECORD,,
@@ -1,67 +0,0 @@
1
- dataeval/__init__.py,sha256=yESctPswyAJ01Hr9k4QUoGZp8D0RtvoQ26k4AFE2vs4,1472
2
- dataeval/detectors/__init__.py,sha256=iifG-Z08mH5B4QhkKtAieDGJBKldKvmCXpDQJD9qVY8,206
3
- dataeval/detectors/drift/__init__.py,sha256=wO294Oz--l0GuZTAkBpyGwZphbQsot57HoiEX6kjNOc,652
4
- dataeval/detectors/drift/base.py,sha256=sX46grnr4DV0WMofLTI2a_tDHR4OLZEUCQrMLePouqg,14468
5
- dataeval/detectors/drift/cvm.py,sha256=TATS6IOE0INO1pkyRkesgrhDawD_kITsRsOOGVRs420,4132
6
- dataeval/detectors/drift/ks.py,sha256=3Jgh5W7pC1hO1yZPCiXc47snlSdXv5BIG8sCyRRz-Ec,4220
7
- dataeval/detectors/drift/mmd.py,sha256=lD__AouWlYWCJOD0eNNEhmLTnUPwNTBU6OCgITcpw40,7592
8
- dataeval/detectors/drift/torch.py,sha256=ykD-Nggys5T9FTGXXbYYOi2WRKwEzEjXhL8ZueVmTxU,7659
9
- dataeval/detectors/drift/uncertainty.py,sha256=Pdim80_-ainvOX5-7fhH9cvblYI2d-zocEwZO-JfCg4,5345
10
- dataeval/detectors/drift/updates.py,sha256=UJ0z5hlunRi7twnkLABfdJG3tT2EqX4y9IGx8_USYvo,1780
11
- dataeval/detectors/linters/__init__.py,sha256=CZV5naeYQYL3sHXO_CXB26AXkyTeKHI-TMaewtEs8Ag,483
12
- dataeval/detectors/linters/clusterer.py,sha256=1qIQo5NuJkx-phKFWuXkUpUJLcqTt92L8Cpv3AmO3xQ,20929
13
- dataeval/detectors/linters/duplicates.py,sha256=pcCRN27IuGa6ASkiFG73kYdI8_X0j12INbkD9GOlWPs,5614
14
- dataeval/detectors/linters/merged_stats.py,sha256=X-bDTwjyR8RuVmzxLaHZmQ5nI3oOWvsqVlitdSncapk,1355
15
- dataeval/detectors/linters/outliers.py,sha256=Fn6R_7mGOrWlTRCXFrjHvIFNELN6CTosoJgzDr8cVr0,10253
16
- dataeval/detectors/ood/__init__.py,sha256=hTeR-Aqt6SKWsqFusaKiw_TlnFPe_sV3fQ7NKUTzZrU,292
17
- dataeval/detectors/ood/ae.py,sha256=SL8oKTERhMwaZTQWwDhQQ6H07UKj8ozXqEWO3TaOAos,2151
18
- dataeval/detectors/ood/base.py,sha256=6gUkbGE6PbKmA899rXOTOIeT8u_gaD0DNDQV8Wyfk5Y,3421
19
- dataeval/detectors/ood/metadata_ks_compare.py,sha256=-hEhDNXFC7X8wmFeoigO7A7Qn90vRLroN_nKDwNgjnE,5204
20
- dataeval/detectors/ood/metadata_least_likely.py,sha256=rb8GOgsrlrEzc6fxccdmyZQ5PC7HtTsTY8U97D-h5OU,5088
21
- dataeval/detectors/ood/metadata_ood_mi.py,sha256=7_Sdzf7-x1TlrIQvSyOIB98C8_UQhUwmwFQmZ9_q1Uc,4042
22
- dataeval/detectors/ood/mixin.py,sha256=Ia-rJF6rtGhE8uavijdbzOha3ueFk2CFfA0Ah_mnF40,4976
23
- dataeval/detectors/ood/output.py,sha256=8UQbtudQ0gSeq_hQV67IE5SfHednaiGUHv9MideETdk,1710
24
- dataeval/interop.py,sha256=GLziERWQQGwUO4Nb-uHpbLlvBOT2WF2GVilTHmsDq8w,2279
25
- dataeval/log.py,sha256=Mn5bRWO0cgtAYd5VGYSFiPgu57ta3zoktrtHAZ1m3dU,357
26
- dataeval/metrics/__init__.py,sha256=p-lRjm0oVHD3cXZeEajTfuGTuQOCCVHbJ8CqAI_GHVY,238
27
- dataeval/metrics/bias/__init__.py,sha256=knYgCdeHredaHI6KGdjiYM6ViPfDf8NW35xkKiiGlVM,599
28
- dataeval/metrics/bias/balance.py,sha256=od3gcejOqJDDymy09OWSxzqkBNyh7Vf3aXN9o6IPKHY,9151
29
- dataeval/metrics/bias/coverage.py,sha256=k8TJAsUWlLgn_-JEtRWIOwhtMRwXmyGzLDndGxNTsAU,5745
30
- dataeval/metrics/bias/diversity.py,sha256=upj-Gx_4-bBF-4dDaUSuURIbP98Ghk-BSCK5ZJNGMEg,8318
31
- dataeval/metrics/bias/parity.py,sha256=wVMfzKFqzHkp3SNUJFjRH_Eej9DIg-xAhHkShIAek68,12755
32
- dataeval/metrics/estimators/__init__.py,sha256=oY_9jX7V-Kg7-4KpvMNB4rUhsk8QTA0DIoM8d2VtVIg,380
33
- dataeval/metrics/estimators/ber.py,sha256=p3KaY-rnK45CUDaqx-55wWG6yHcDnH6Kkkt9r6FkmZY,5003
34
- dataeval/metrics/estimators/divergence.py,sha256=QYkOs7In9un0tYHztwZ5kNqiWVNS3Lgmxn1716H8HG4,4243
35
- dataeval/metrics/estimators/uap.py,sha256=ELa5MixMOJZoW5rUuVLOXynfLMbVjxb-r7VYF5qqXrw,2139
36
- dataeval/metrics/stats/__init__.py,sha256=Js_mklHJbHwOXJtMFo9NIyePZLwLZL-jruwmcjoLsZc,1086
37
- dataeval/metrics/stats/base.py,sha256=U0yPaRSHuPGZk3A7hl8ghJCki7iBtW5wM1eZvElu1_w,12038
38
- dataeval/metrics/stats/boxratiostats.py,sha256=fNzHT_nZX0MYeHkWRdcfEz2mtRC2d1JxpoK3l4EBrQc,6301
39
- dataeval/metrics/stats/datasetstats.py,sha256=krOm48yjyzYOWKLaWFqHAQPmuhiN4manif7ZXh2Ohhg,5828
40
- dataeval/metrics/stats/dimensionstats.py,sha256=_mN7wHencHh4UNd9XUflhq0sIa9yLPk3yHqmossDEGk,3985
41
- dataeval/metrics/stats/hashstats.py,sha256=_zZOwnQDlpMoPyqbOV2v9V_Uqox0c4vX2Khv5u_fAk8,5068
42
- dataeval/metrics/stats/labelstats.py,sha256=mLH02Xy_uT-qN7HXuXEgs786T2Xr0BMudweBDeEWd5I,4065
43
- dataeval/metrics/stats/pixelstats.py,sha256=t8abfenA79x87CMqPuKtddglD3l_LA6nXS4K_FlL4-k,4148
44
- dataeval/metrics/stats/visualstats.py,sha256=UU0oa5BWuIOTDM1H1ZnlhYyu8ruVEnaLPCDOsbm-q1c,4546
45
- dataeval/output.py,sha256=hR5TJ67f7FgrZO9Du46aw-jvRpMjOimSgJSau4ZNK44,3565
46
- dataeval/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
- dataeval/utils/__init__.py,sha256=fBpXVWzNaXySTuZWsD8Jg9LLHzb23nz_PfdxPD_gc8c,279
48
- dataeval/utils/dataset/__init__.py,sha256=IvRauQaa0CzJ5nZrfTSjGoaaKelyJcQDe3OPRw0-NXs,332
49
- dataeval/utils/dataset/datasets.py,sha256=7tSqN3d8UncqmXh4eiEwarXgVxc4sMuIKPTqBCE0pN8,15080
50
- dataeval/utils/dataset/read.py,sha256=tt-9blXzYLRb4Vgv6DrFj2ikUSvBF0-qTSnvvYec_2U,1523
51
- dataeval/utils/dataset/split.py,sha256=FpxHxmewjqIj6hikCsamNQTq877qu4HfKnzArOyvmyY,18957
52
- dataeval/utils/image.py,sha256=AQljELyMFkYsf2AoNOH5dZG8DYE4hPw0MCk85eIXqAw,1926
53
- dataeval/utils/metadata.py,sha256=mhMhBgb7nAIIljDdecOqiZ1zsYagE6h8DKxE_DFDW-E,22270
54
- dataeval/utils/plot.py,sha256=jQSiqDArFOlKZaIbv4Viso_ShU3LnZE-Y2qXKuKsa8M,3790
55
- dataeval/utils/shared.py,sha256=xvF3VLfyheVwJtdtDrneOobkKf7t-JTmf_w91FWXmqo,3616
56
- dataeval/utils/torch/__init__.py,sha256=dn5mjCrFp0b1aL_UEURhONU0Ag0cmXoTOBSGagpkTiA,325
57
- dataeval/utils/torch/blocks.py,sha256=HVhBTMMD5NA4qheMUgyol1KWiKZDIuc8k5j4RcMKmhk,1466
58
- dataeval/utils/torch/gmm.py,sha256=fQ8CBO4Bf6i9N1CZdeJ8VJP25fsPjgMextQkondwgvo,3693
59
- dataeval/utils/torch/internal.py,sha256=qAzQTwTI9Qy6f01Olw3d1TIJ4HoWGf0gQzgWVcdD2x4,6653
60
- dataeval/utils/torch/models.py,sha256=Df3B_9x5uu-Y5ZOyhRZYpKJnDvxt0hgMeJLy1E4oxpU,8519
61
- dataeval/utils/torch/trainer.py,sha256=Qay0LK63RuyoGYiJ5zI2C5BVym309ORvp6shhpcrIU4,5589
62
- dataeval/workflows/__init__.py,sha256=L9yfBipNFGnYuN2JbMknIHDvziwfa2XAGFnOwifZbls,216
63
- dataeval/workflows/sufficiency.py,sha256=nL99iDlu2bF_9VGu3ioLFDJBgBBJEdwEXROxXm_0sfY,18673
64
- dataeval-0.75.0.dist-info/LICENSE.txt,sha256=Kpzcfobf1HlqafF-EX6dQLw9TlJiaJzfgvLQFukyXYw,1060
65
- dataeval-0.75.0.dist-info/METADATA,sha256=6m2O6vreJR3Lq1_BXEU6DHnK2C5L_q5YAPofIl4kxCw,5410
66
- dataeval-0.75.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
67
- dataeval-0.75.0.dist-info/RECORD,,