| 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() |