gonzalobenegas's picture
Update app.py
7ba6910 verified
import gradio as gr
import pandas as pd
# Expanded dataframe with hidden columns
leaderboard_df = (
pd.read_csv("results.csv", usecols=["dataset", "modality", "model", "score", "se", "metric"])
.rename(columns={"dataset": "Dataset", "modality": "Approach", "model": "Model", "metric": "Metric"})
.round(3)
)
def filter_leaderboard(dataset_choice, approach_choice, metric_choice):
"""Filter dataframe based on selections and drop filter columns"""
filtered_df = leaderboard_df[
(leaderboard_df['Dataset'] == dataset_choice) &
(leaderboard_df['Approach'] == approach_choice) &
(leaderboard_df['Metric'] == metric_choice)
]
return filtered_df.drop(columns=['Dataset', 'Approach', 'Metric']).sort_values('score', ascending=False)
with gr.Blocks(title="TraitGym Leaderboard") as demo:
gr.Markdown("## πŸ† TraitGym Leaderboard")
with gr.Row():
dataset_filter = gr.Radio(
choices=["Mendelian traits", "Complex traits"],
value="Mendelian traits",
label="Select Dataset"
)
approach_filter = gr.Radio(
choices=["Zero-shot", "Linear probing"],
value="Zero-shot",
label="Select Approach"
)
metric_filter = gr.Radio(
choices=["AUPRC", "AUPRC_by_chrom_weighted_average"],
value="AUPRC",
label="Select Metric"
)
leaderboard = gr.Dataframe(
headers=["Model", "score", "se"],
datatype=["str", "number", "number"],
interactive=False,
)
# Connect filters to update the table
for filter in [dataset_filter, approach_filter, metric_filter]:
filter.change(
fn=filter_leaderboard,
inputs=[dataset_filter, approach_filter, metric_filter],
outputs=leaderboard
)
# Initial load
demo.load(
fn=filter_leaderboard,
inputs=[dataset_filter, approach_filter, metric_filter],
outputs=leaderboard
)
demo.launch()