import gradio as gr import pandas as pd import os import markdown from about.custom_css import custom_css LEADERBOARD_DIR = "leaderboard_files" LEADERBOARD_FILE = os.path.join(LEADERBOARD_DIR, "leaderboard_data.csv") DESCRIPTION_FILE = "about/description.md" def load_leaderboard(): return pd.read_csv(LEADERBOARD_FILE) def load_description(DESCRIPTION_FILE): # Read the markdown file and convert it to HTML with open(DESCRIPTION_FILE, "r") as f: md_text = f.read() html_description = markdown.markdown(md_text, extensions=["tables"]) return html_description columns_fixed = ["Model Name", "Parameters", "Average Label", "Average Record"] df = load_leaderboard() all_columns = list(df.columns) columns_variable = [i for i in all_columns if i not in columns_fixed] shot_options = ["0 shot", "1 shot", "5 shots"] def get_columns_for_shots(selected_shots): if not selected_shots: return [] return [col for col in all_columns if any(shot in col for shot in selected_shots)] def get_columns_for_data(selected_data): if not selected_data: return [] return [col for col in all_columns if any(data in col for data in selected_data)] # data_types = sorted(df["data_type"].dropna().unique()) parameter_options = sorted(df["Parameters"].dropna().unique()) def filter_leaderboard(selected_params, selected_shots, selected_data): filtered = df.copy() print("Selected Shots:", selected_shots) if selected_params: filtered = filtered[filtered["Parameters"].isin(selected_params)] columns_by_shot = get_columns_for_shots(selected_shots) columns_by_data = get_columns_for_data(selected_data) additional_columns = [] for col in all_columns: if any(shot in col for shot in selected_shots) and any(data in col for data in selected_data): additional_columns.append(col) print("additional_columns:", additional_columns) cols_to_show = list(dict.fromkeys(columns_fixed + additional_columns)) print("COLUMNS TO SHOW:", cols_to_show) return filtered[cols_to_show] with gr.Blocks(css = custom_css) as demo: gr.HTML("