agressin's picture
++
b6fd6ce
from dataclasses import dataclass, make_dataclass
def fields(raw_class):
return [v for k, v in raw_class.__dict__.items() if k[:2] != "__" and k[-2:] != "__"]
# These classes are for user facing column names,
# to avoid having to change them all around the code
# when a modif is needed
@dataclass
class ColumnContent:
name: str
type: str
displayed_by_default: bool
hidden: bool = False
never_hidden: bool = False
## Leaderboard columns
# Init
auto_eval_column_dict = [
["eval_name", ColumnContent, ColumnContent("Eval Name", "str", True)],
["result_name", ColumnContent, ColumnContent("Result Name", "str", False)],
["date", ColumnContent, ColumnContent("Submission Date", "str", True)],
["miou", ColumnContent, ColumnContent("mIoU ⬆️", "number", True)],
["accuracy", ColumnContent, ColumnContent("Accuracy ⬆️", "number", False)],
# ["precision_score", ColumnContent, ColumnContent("Precision ⬆️", "number", False)],
# ["recall", ColumnContent, ColumnContent("Recall ⬆️", "number", False)],
# ["f1", ColumnContent, ColumnContent("F1 ⬆️", "number", False)],
# ["producer_accuracy", ColumnContent, ColumnContent("Producer Accuracy", "list", False)],
# ["user_accuracy", ColumnContent, ColumnContent("User Accuracy", "list", False)],
# ["confusion_matrix", ColumnContent, ColumnContent("Confusion Matrix", "matrix", False)],
# ["num_classes", ColumnContent, ColumnContent("Number of classes", "number", False)],
]
# We use make dataclass to dynamically fill the scores from Tasks
AutoEvalColumn = make_dataclass("AutoEvalColumn", auto_eval_column_dict, frozen=True)
# Column selection
COLS = [c.name for c in fields(AutoEvalColumn) if not c.hidden]