import gradio as gr import pandas as pd from about import ABOUT_TEXT, INTRO_TEXT, SUBMISSION_TEXT, TITLE from utils import load_results_dataframe, submit_zip EMPTY_COLUMNS = [ "rank", "model_name", "team_name", "avg_vrmse", "density_vrmse", "pressure_vrmse", "velocity_x_vrmse", "velocity_y_vrmse", "submitted_at", "status", ] def refresh_leaderboard(): try: df = load_results_dataframe() if df is None or not isinstance(df, pd.DataFrame): df = pd.DataFrame(columns=EMPTY_COLUMNS) return df, "Leaderboard loaded." except Exception as exc: return pd.DataFrame(columns=EMPTY_COLUMNS), f"Error loading leaderboard: {exc}" def handle_submit(zip_file): try: return submit_zip(zip_file) except Exception as exc: return f"Submission failed: {exc}" with gr.Blocks(title="The Well Leaderboard MVP") as demo: gr.Markdown(TITLE) gr.Markdown(INTRO_TEXT) with gr.Tab("Leaderboard"): leaderboard_status = gr.Markdown("Loading leaderboard...") leaderboard = gr.Dataframe( headers=EMPTY_COLUMNS, value=pd.DataFrame(columns=EMPTY_COLUMNS), label="Ranked results", wrap=True, interactive=False, ) refresh_button = gr.Button("Refresh leaderboard") refresh_button.click( fn=refresh_leaderboard, outputs=[leaderboard, leaderboard_status], api_name=False, ) with gr.Tab("Submit"): gr.Markdown(SUBMISSION_TEXT) zip_file = gr.File( label="Submission zip", file_count="single", file_types=[".zip"], ) submit_button = gr.Button("Submit") submission_status = gr.Markdown() submit_button.click( fn=handle_submit, inputs=zip_file, outputs=submission_status, api_name=False, ) with gr.Tab("About"): gr.Markdown(ABOUT_TEXT) demo.load( fn=refresh_leaderboard, outputs=[leaderboard, leaderboard_status], api_name=False, ) demo.launch()