PoVisLE / views /leaderboard_task.py
gamemeine's picture
Optimize search
1158e2e
Raw
History Blame Contribute Delete
3.68 kB
from __future__ import annotations
import gradio as gr
import pandas as pd
from .leaderboard_category import (
filter_leaderboard,
style_leaderboard,
)
TASK_DISPLAY_COLUMNS = ["Org", "Model", "Size", "Overall", "MCQ", "Y/N", "Open"]
def render_task_leaderboard(
leaderboard_df: pd.DataFrame,
search_query: str,
selected_split: str,
selected_types: list[str],
selected_size_ranges: list[str],
selected_families: list[str],
):
filtered = filter_leaderboard(
leaderboard_df,
TASK_DISPLAY_COLUMNS,
search_query,
selected_split,
selected_types,
selected_size_ranges,
selected_families,
)
return style_leaderboard(filtered, TASK_DISPLAY_COLUMNS)
def update_split_task_leaderboards(
leaderboard_df: pd.DataFrame,
search_query: str,
selected_types: list[str],
selected_size_ranges: list[str],
selected_families: list[str],
):
return (
render_task_leaderboard(
leaderboard_df,
search_query,
"Test",
selected_types,
selected_size_ranges,
selected_families,
),
render_task_leaderboard(
leaderboard_df,
search_query,
"Validation",
selected_types,
selected_size_ranges,
selected_families,
),
)
def render_leaderboard_task_tab(
leaderboard_df: pd.DataFrame,
search_box,
type_filter,
size_filter,
family_filter,
) -> None:
initial_test_table_value = render_task_leaderboard(
leaderboard_df,
"",
"Test",
[],
[],
[],
)
initial_validation_table_value = render_task_leaderboard(
leaderboard_df,
"",
"Validation",
[],
[],
[],
)
with gr.Tabs(elem_id="leaderboard-task-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 search_query, selected_type, selected_size, selected_family: update_split_task_leaderboards(
leaderboard_df,
search_query,
selected_type,
selected_size,
selected_family,
),
inputs=[search_box, type_filter, size_filter, family_filter],
outputs=[test_leaderboard_table, validation_leaderboard_table],
)
for component in (type_filter, size_filter, family_filter):
component.change(
fn=lambda search_query, selected_type, selected_size, selected_family: update_split_task_leaderboards(
leaderboard_df,
search_query,
selected_type,
selected_size,
selected_family,
),
inputs=[search_box, type_filter, size_filter, family_filter],
outputs=[test_leaderboard_table, validation_leaderboard_table],
)