Coverage for credoai/modules/metric_utils.py: 25%

24 statements  

« prev     ^ index     » next       coverage.py v6.5.0, created at 2022-12-08 07:32 +0000

1import textwrap 

2from collections import defaultdict 

3 

4from pandas import DataFrame 

5 

6from credoai.modules.metrics import ( 

7 ALL_METRICS, 

8 METRIC_CATEGORIES, 

9 METRIC_NAMES, 

10 MODEL_METRIC_CATEGORIES, 

11) 

12 

13 

14def list_metrics(verbose=True): 

15 metrics = defaultdict(set) 

16 for metric in ALL_METRICS: 

17 if metric.metric_category in MODEL_METRIC_CATEGORIES: 

18 metrics[metric.metric_category] |= metric.equivalent_names 

19 if verbose: 

20 for key, val in metrics.items(): 

21 metric_str = textwrap.fill( 

22 ", ".join(sorted(list(val))), 

23 width=50, 

24 initial_indent="\t", 

25 subsequent_indent="\t", 

26 ) 

27 print(key) 

28 print(metric_str) 

29 print("") 

30 return metrics 

31 

32 

33def table_metrics(): 

34 output = DataFrame( 

35 [ 

36 [ 

37 metric.name, 

38 metric.metric_category, 

39 list(metric.equivalent_names), 

40 metric.get_fun_doc, 

41 ] 

42 for metric in ALL_METRICS 

43 ], 

44 columns=["metric_name", "metric_category", "synonyms", "doc"], 

45 ) 

46 

47 def remove(list1, str1): 

48 list1 = [x for x in list1 if x != str1] 

49 return list1 

50 

51 output["synonyms"] = output.apply( 

52 lambda row: remove(row.synonyms, row.metric_name), axis=1 

53 ) 

54 output["synonyms"] = output.synonyms.apply(lambda x: ", ".join(x)) 

55 return output