from __future__ import annotations
import gradio as gr
import pandas as pd
ALL_OPTION = "All"
CATEGORY_HEADER_LABELS = {
"Art & Entertainment": "Art &\nEntert.",
"Art And Entertainment": "Art &\nEntert.",
"Culture & Tradition": "Culture &\nTrad.",
"Culture And Tradition": "Culture &\nTrad.",
"Geography & Nature": "Geogr. &\nNature",
"Geography And Nature": "Geogr. &\nNature",
"History & Society": "History &\nSociety",
"History And Society": "History &\nSociety",
"Image Understanding": "Image\nUnd.",
"Visual Reasoning": "Visual\nReas.",
}
def score_cell_style(value: object) -> str:
if not isinstance(value, (int, float)) or pd.isna(value) or value < 50:
return ""
ratio = min((float(value) - 50.0) / 50.0, 1.0)
if ratio < 0.2:
background = "#edf7c2"
color = "#0f172a"
elif ratio < 0.4:
background = "#d7ef7a"
color = "#0f172a"
elif ratio < 0.6:
background = "#b5d94c"
color = "#0f172a"
elif ratio < 0.8:
background = "#7fae2e"
color = "#ffffff"
else:
background = "#4f7f18"
color = "#ffffff"
return f"background-color: {background}; color: {color}; font-weight: 600;"
def format_metric_value(value: object) -> str:
if isinstance(value, (int, float)) and pd.notna(value):
return f"{float(value):.2f}"
return ""
def style_leaderboard(frame: pd.DataFrame, display_columns: list[str]):
metric_columns = [column for column in display_columns if column not in {"Org", "Model", "Size"}]
styled_frame = frame[display_columns].copy()
return styled_frame.style.format({column: format_metric_value for column in metric_columns}, na_rep="").map(
score_cell_style, subset=metric_columns
)
def visible_columns_for_category(
category_columns: list[str],
subcategory_groups: dict[str, list[tuple[str, str]]],
selected_category: str,
) -> tuple[list[str], dict[str, str]]:
base_columns = ["Org", "Model", "Size", "Overall"]
if selected_category == "Overall":
renamed_columns = {
column: CATEGORY_HEADER_LABELS[column]
for column in category_columns
if column in CATEGORY_HEADER_LABELS
}
return base_columns + category_columns, renamed_columns
subcategory_columns = subcategory_groups.get(selected_category, [])
display_columns = base_columns.copy()
renamed_columns: dict[str, str] = {}
for column_key, column_label in subcategory_columns:
if column_label == "Unknown":
display_columns.append(selected_category)
renamed_columns[selected_category] = selected_category
continue
display_columns.append(column_key)
renamed_columns[column_key] = column_label
return display_columns, renamed_columns
def filter_leaderboard(
leaderboard_df: pd.DataFrame,
display_columns: list[str],
search_query: str,
selected_split: str,
selected_types: list[str],
selected_size_ranges: list[str],
selected_families: list[str],
) -> pd.DataFrame:
filtered = leaderboard_df.drop(columns=["Rank"], errors="ignore").copy()
selected_types = selected_filter_values(selected_types)
selected_size_ranges = selected_filter_values(selected_size_ranges)
selected_families = selected_filter_values(selected_families)
query = (search_query or "").strip().lower()
if query:
filtered = filtered[filtered["Model"].str.lower().str.contains(query, na=False)]
if selected_split:
filtered = filtered[filtered["Split"] == selected_split]
if selected_types:
filtered = filtered[filtered["Type"].isin(selected_types)]
if selected_size_ranges:
filtered = filtered[filtered["Size range"].isin(selected_size_ranges)]
if selected_families:
filtered = filtered[filtered["Family"].isin(selected_families)]
metric_columns = [column for column in display_columns if column not in {"Split", "Org", "Model", "Size"}]
filtered = filtered.sort_values(by=metric_columns, ascending=False).reset_index(drop=True)
return filtered
def selected_filter_values(values: list[str] | None) -> list[str]:
if not values:
return []
return [value for value in values if value != ALL_OPTION]
def render_leaderboard_filters(leaderboard_df: pd.DataFrame):
type_options = ["Open-weight", "Proprietary", "Random"]
size_options = [
size_range
for size_range in ["1-10B", "10-20B", "20-40B", "30-100B", ">100B"]
if size_range in set(leaderboard_df["Size range"].dropna().astype(str))
]
family_options = sorted(leaderboard_df["Family"].dropna().astype(str).unique().tolist())
available_types = [option for option in type_options if option in set(leaderboard_df["Type"].dropna().astype(str))]
with gr.Row(elem_id="leaderboard-search-row"):
search_box = gr.Textbox(
value="",
placeholder="Search by model name...",
show_label=False,
scale=3,
elem_id="leaderboard-search",
)
filter_label_style = (
"color: #181416; font-size: 0.86rem; font-weight: 700; "
"line-height: 1.2; margin: 0 0 8px;"
)
with gr.Row(elem_id="leaderboard-filter-row"):
with gr.Column(elem_classes=["povisle-filter-field"]):
gr.HTML(f'
Model Type
')
type_filter = gr.Dropdown(
choices=[ALL_OPTION, *available_types],
value=[ALL_OPTION],
multiselect=True,
allow_custom_value=False,
label="Model Type",
show_label=False,
elem_id="type-filter",
)
with gr.Column(elem_classes=["povisle-filter-field"]):
gr.HTML(f'Size
')
size_filter = gr.Dropdown(
choices=[ALL_OPTION, *size_options],
value=[ALL_OPTION],
multiselect=True,
allow_custom_value=False,
label="Size",
show_label=False,
elem_id="size-filter",
)
with gr.Column(elem_classes=["povisle-filter-field"]):
gr.HTML(f'Family
')
family_filter = gr.Dropdown(
choices=[ALL_OPTION, *family_options],
value=[ALL_OPTION],
multiselect=True,
allow_custom_value=False,
label="Family",
show_label=False,
elem_id="family-filter",
)
return search_box, type_filter, size_filter, family_filter
def render_leaderboard(
leaderboard_df: pd.DataFrame,
category_columns: list[str],
subcategory_groups: dict[str, list[tuple[str, str]]],
selected_category: str,
search_query: str,
selected_split: str,
selected_types: list[str],
selected_size_ranges: list[str],
selected_families: list[str],
) -> tuple[object, list[str]]:
display_columns, renamed_columns = visible_columns_for_category(
category_columns,
subcategory_groups,
selected_category,
)
filtered = filter_leaderboard(
leaderboard_df,
display_columns,
search_query,
selected_split,
selected_types,
selected_size_ranges,
selected_families,
)
styled = style_leaderboard(
filtered.rename(columns=renamed_columns),
[renamed_columns.get(column, column) for column in display_columns],
)
return styled
def update_leaderboard(
leaderboard_df: pd.DataFrame,
category_columns: list[str],
subcategory_groups: dict[str, list[tuple[str, str]]],
selected_category: str,
search_query: str,
selected_split: str,
selected_types: list[str],
selected_size_ranges: list[str],
selected_families: list[str],
):
styled = render_leaderboard(
leaderboard_df,
category_columns,
subcategory_groups,
selected_category,
search_query,
selected_split,
selected_types,
selected_size_ranges,
selected_families,
)
return styled
def update_split_leaderboards(
leaderboard_df: pd.DataFrame,
category_columns: list[str],
subcategory_groups: dict[str, list[tuple[str, str]]],
selected_category: str,
search_query: str,
selected_types: list[str],
selected_size_ranges: list[str],
selected_families: list[str],
):
return (
render_leaderboard(
leaderboard_df,
category_columns,
subcategory_groups,
selected_category,
search_query,
"Test",
selected_types,
selected_size_ranges,
selected_families,
),
render_leaderboard(
leaderboard_df,
category_columns,
subcategory_groups,
selected_category,
search_query,
"Validation",
selected_types,
selected_size_ranges,
selected_families,
),
)
def render_leaderboard_category_tab(
leaderboard_df: pd.DataFrame,
category_columns: list[str],
subcategory_groups: dict[str, list[tuple[str, str]]],
search_box,
type_filter,
size_filter,
family_filter,
) -> None:
with gr.Row(elem_id="leaderboard-category-row"):
category_view_select = gr.Radio(
choices=["Overall", *[category for category in category_columns if subcategory_groups.get(category)]],
value="Overall",
show_label=False,
container=True,
elem_id="category-view-select",
)
initial_test_table_value = render_leaderboard(
leaderboard_df,
category_columns,
subcategory_groups,
"Overall",
"",
"Test",
[],
[],
[],
)
initial_validation_table_value = render_leaderboard(
leaderboard_df,
category_columns,
subcategory_groups,
"Overall",
"",
"Validation",
[],
[],
[],
)
with gr.Tabs(elem_id="leaderboard-category-split-tabs", elem_classes=["leaderboard-split-tabs"]):
with gr.Tab("Test"):
test_leaderboard_table = gr.Dataframe(
value=initial_test_table_value,
max_height=760,
interactive=False,
wrap=True,
buttons=[],
elem_id="leaderboard-table-test",
elem_classes=["leaderboard-table"],
)
with gr.Tab("Validation"):
validation_leaderboard_table = gr.Dataframe(
value=initial_validation_table_value,
max_height=760,
interactive=False,
wrap=True,
buttons=[],
elem_id="leaderboard-table-validation",
elem_classes=["leaderboard-table"],
)
search_box.submit(
fn=lambda selected_category, search_query, selected_type, selected_size, selected_family: update_split_leaderboards(
leaderboard_df,
category_columns,
subcategory_groups,
selected_category,
search_query,
selected_type,
selected_size,
selected_family,
),
inputs=[category_view_select, search_box, type_filter, size_filter, family_filter],
outputs=[test_leaderboard_table, validation_leaderboard_table],
)
for component in (type_filter, size_filter, family_filter, category_view_select):
component.change(
fn=lambda selected_category, search_query, selected_type, selected_size, selected_family: update_split_leaderboards(
leaderboard_df,
category_columns,
subcategory_groups,
selected_category,
search_query,
selected_type,
selected_size,
selected_family,
),
inputs=[category_view_select, search_box, type_filter, size_filter, family_filter],
outputs=[test_leaderboard_table, validation_leaderboard_table],
)