Skip to content

Commit f613512

Browse files
committed
Adding function to list all data qualities
1 parent 461814d commit f613512

File tree

3 files changed

+33
-0
lines changed

3 files changed

+33
-0
lines changed

doc/api.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ Modules
7272
get_dataset
7373
get_datasets
7474
list_datasets
75+
list_qualities
7576
status_update
7677

7778
:mod:`openml.evaluations`: Evaluation Functions

openml/datasets/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
get_datasets,
77
list_datasets,
88
status_update,
9+
list_qualities
910
)
1011
from .dataset import OpenMLDataset
1112
from .data_feature import OpenMLDataFeature
@@ -20,4 +21,5 @@
2021
'OpenMLDataset',
2122
'OpenMLDataFeature',
2223
'status_update',
24+
'list_qualities'
2325
]

openml/datasets/functions.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,36 @@ def _get_cache_directory(dataset: OpenMLDataset) -> str:
165165
return _create_cache_directory_for_id(DATASETS_CACHE_DIR_NAME, dataset.dataset_id)
166166

167167

168+
def list_qualities(verbose=False):
169+
""" Return list of data qualities available
170+
171+
The function performs an API call to retrieve the entire list of
172+
data qualities that are available are computed on the datasets uploaded.
173+
174+
Parameters
175+
----------
176+
verbose : bool (default=False)
177+
If True, prints out the list with an index
178+
179+
"""
180+
api_call = "data/qualities/list"
181+
xml_string = openml._api_calls._perform_api_call(api_call, 'get')
182+
qualities = xmltodict.parse(xml_string)
183+
# Minimalistic check if the XML is useful
184+
if 'oml:data_qualities_list' not in qualities:
185+
raise ValueError('Error in return XML, does not contain '
186+
'"oml:data_qualities_list"')
187+
assert type(qualities['oml:data_qualities_list']['oml:quality']) == list
188+
qualities = qualities['oml:data_qualities_list']['oml:quality']
189+
if verbose:
190+
header = "List of available data qualities:"
191+
print(header)
192+
print("=" * len(header))
193+
for i, quality in enumerate(qualities):
194+
print("{:>3}....{}".format(i + 1, quality))
195+
return qualities
196+
197+
168198
def list_datasets(
169199
offset: Optional[int] = None,
170200
size: Optional[int] = None,

0 commit comments

Comments
 (0)