File size: 2,983 Bytes
0b1b527
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
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()