import gradio as gr import pandas as pd from constants import * def get_data(verified, dataset, ipc, label_type): data = pd.read_csv("data.csv") data["verified"] = data["verified"].apply(lambda x: bool(x)) data["dataset"] = data["dataset"].apply(lambda x: DATASET_LIST[x]) data["ipc"] = data["ipc"].apply(lambda x: IPC_LIST[x]) data["label_type"] = data["label_type"].apply(lambda x: LABEL_TYPE_LIST[x]) if verified: data = data[data["verified"] == verified] data = data[data["dataset"] == dataset] data = data[data["ipc"] == ipc] data = data[data["label_type"] == label_type] data = data.sort_values(by="score", ascending=False) # formatting data["method"] = "[" + data["method"] + "](" + data["method_reference"] + ")" data["verified"] = data["verified"].apply(lambda x: "✅" if x else "") data = data.drop(columns=["method_reference", "dataset", "ipc", "label_type"]) if label_type == "Hard Label": data = data.rename(columns={"method": "Method", "date": "Date", "recovery": "Hard Recovery", "improvement": "Hard Improvement", "score": "Score", "verified": "Verified"}) else: data = data.rename(columns={"method": "Method", "date": "Date", "recovery": "Hard Recovery", "improvement": "Soft Improvement", "score": "Score", "verified": "Verified"}) return data with gr.Blocks() as leaderboard: gr.Markdown(LEADERBOARD_INTRODUCTION) verified = gr.Checkbox( label="Verified by DD-Ranking Team (Uncheck to view all submissions)", value=True, interactive=True ) dataset = gr.Radio( label="Dataset", choices=DATASET_LIST, value=DATASET_LIST[0], interactive=True, ) ipc = gr.Radio( label="IPC", choices=IPC_LIST, value=IPC_LIST[0], interactive=True, info=IPC_INFO ) label = gr.Radio( label="Label Type", choices=LABEL_TYPE_LIST, value=LABEL_TYPE_LIST[0], interactive=True, info=LABEL_TYPE_INFO ) board = gr.components.Dataframe( value=get_data(verified.value, dataset.value, ipc.value, label.value), headers=COLUMN_NAMES, type="pandas", datatype=DATA_TITLE_TYPE, interactive=False, visible=True, max_height=500, ) for component in [verified, dataset, ipc, label]: component.change(fn=lambda v, d, i, l: gr.components.Dataframe( value=get_data(v, d, i, l), headers=COLUMN_NAMES, type="pandas", datatype=DATA_TITLE_TYPE, interactive=False, visible=True, max_height=500, ), inputs=[verified, dataset, ipc, label], outputs=board) citation_button = gr.Textbox( value=CITATION_BUTTON_TEXT, label=CITATION_BUTTON_LABEL, elem_id="citation-button", lines=6, show_copy_button=True, ) leaderboard.launch()