Sunmarinup's picture
Update table view (#2)
1498561 verified
raw
history blame
3.17 kB
from datetime import datetime, timezone
import gradio as gr
import pandas as pd
from src.about import INTRODUCTION_TEXT, TITLE
from src.display.css_html_js import custom_css
from src.leaderboard.columns import DisplayColumns, RequiredInputColumns
from src.leaderboard.input import load_csv_from_github
from src.leaderboard.output import format_output_df
LEADERBOARD_GITHUB_URL = "https://github.com/upgini/mle-bench/blob/main/rankings/low/tabular/overall_ranks.csv"
def load_leaderboard() -> pd.DataFrame:
"""Download the remote leaderboard CSV from GitHub (handles Git LFS).
Returns a processed DataFrame ready for display.
"""
df = load_csv_from_github()
# Process dates
df["Date"] = pd.to_datetime(df["Date"], errors="coerce").dt.strftime("%Y-%m-%d")
# Sort by mean_normalized_score descending before formatting
df = df.sort_values(by="mean_normalized_score", ascending=False, ignore_index=True)
# Format columns for display
result_df = format_output_df(df)
return result_df
def refresh_leaderboard():
"""Fetch the leaderboard and build the status message for the UI."""
df = apply_styling(load_leaderboard())
status = (
f"Showing data from [GitHub]({LEADERBOARD_GITHUB_URL}). "
f"Last refreshed: {datetime.now(timezone.utc):%Y-%m-%d %H:%M UTC}."
)
return df, status
def apply_styling(df: pd.DataFrame):
"""Apply styling to the leaderboard table."""
if df.empty:
return pd.DataFrame(columns=DisplayColumns.values())
display_df = df[DisplayColumns.values()]
style = (
display_df.style.background_gradient(
subset=[DisplayColumns.NORMALIZED_SCORE],
high=0.5,
low=0.0,
cmap="Greens",
gmap=df[RequiredInputColumns.MEAN_NORMALIZED_SCORE],
)
.background_gradient(
subset=[DisplayColumns.ANY_MEDAL_SCORE],
high=1.2,
low=0.0,
cmap="Oranges",
gmap=df[RequiredInputColumns.MEAN_MEDAL_PCT],
)
.format(
subset=(
df[RequiredInputColumns.MEAN_NORMALIZED_SCORE] == df[RequiredInputColumns.MEAN_NORMALIZED_SCORE].max(),
DisplayColumns.NORMALIZED_SCORE,
),
formatter=lambda x: f"**{x}**",
)
)
return style
def create_app():
"""Create and configure the Gradio app without launching it."""
with gr.Blocks(title="Upgini MLE-Bench Leaderboard", css=custom_css) as demo:
gr.HTML(TITLE)
gr.Markdown(INTRODUCTION_TEXT)
leaderboard_table = gr.DataFrame(
value=pd.DataFrame(columns=DisplayColumns.values()),
wrap=True,
interactive=False,
type="pandas",
datatype="markdown",
label="Leaderboard",
elem_id="leaderboard-table",
show_search="search",
)
status_text = gr.Markdown()
demo.load(refresh_leaderboard, outputs=[leaderboard_table, status_text])
return demo
if __name__ == "__main__":
demo = create_app()
demo.queue(default_concurrency_limit=8).launch()