Spaces:
Running
Running
import gradio as gr | |
import pandas as pd | |
import matplotlib.pyplot as plt | |
# Function to load data from a given CSV file | |
def load_data(version): | |
file_path = f'versions/{version}.csv' # Replace with your file paths | |
return pd.read_csv(file_path) | |
# Function for searching in the leaderboard | |
def search_leaderboard(df, query): | |
if query == "": | |
return df | |
else: | |
return df[df['Method'].str.contains(query)] | |
# Function to change the version of the leaderboard | |
def change_version(version): | |
new_df = load_data(version) | |
return new_df | |
# Function to create plots | |
from plotter import create_plots | |
# Initialize Gradio app | |
demo = gr.Blocks() | |
with demo: | |
gr.Markdown("## π₯ TOFU Leaderboard") | |
with gr.Tabs(): | |
with gr.TabItem("Leaderboard"): | |
with gr.Row(): | |
version_dropdown = gr.Dropdown( | |
choices=["llama", "phi", "stable-lm"], | |
label="π Select Base Model", | |
value="llama", | |
) | |
with gr.Row(): | |
search_bar = gr.Textbox( | |
placeholder="Search for methods...", | |
show_label=False, | |
) | |
leaderboard_table = gr.components.Dataframe( | |
value=load_data("llama"), | |
interactive=True, | |
visible=True, | |
) | |
version_dropdown.change( | |
change_version, | |
inputs=version_dropdown, | |
outputs=leaderboard_table | |
) | |
search_bar.change( | |
search_leaderboard, | |
inputs=[leaderboard_table, search_bar], | |
outputs=leaderboard_table | |
) | |
with gr.TabItem("Plots"): | |
version_dropdown_plots = gr.Dropdown( | |
choices=["llama", "phi", "stable-lm"], | |
label="π Select Base Model", | |
value="llama", | |
) | |
with gr.Row(): | |
methods_checkbox = gr.CheckboxGroup( | |
label="Select Methods", | |
choices=list(load_data("llama")['Method'].unique()), # To be populated dynamically | |
) | |
plot_output = gr.Plot() | |
# Dynamically update the choices for the methods checkbox | |
def update_method_choices(version): | |
df = load_data(version) | |
methods = df['Method'].unique() | |
methods_checkbox.update(choices=methods) | |
return df | |
version_dropdown_plots.change( | |
update_method_choices, | |
inputs=version_dropdown_plots, | |
outputs=[methods_checkbox, plot_output] | |
) | |
methods_checkbox.change( | |
create_plots, | |
inputs=[methods_checkbox, leaderboard_table], | |
outputs=plot_output | |
) | |
# Launch the app | |
demo.launch() | |