File size: 3,589 Bytes
c76f18f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
92
93
94
95
96
97
98
import gradio as gr
import pandas as pd
import os
from datetime import datetime, timezone 
import pytz

csv_folder = "data"

setups = ["CulturalBench_Hard","CulturalBench_Easy"]
data_types = ["average","per_continent"]

with open("markdown/aboutus.md", "r") as f:
    ABOUT_MD = f.read()

with open("markdown/header.md", "r") as f:
    HEADER_MD = f.read()

def make_full_leaderboard_md():
    leaderboard_md = """
    We evaluate models by the same dataset but with in two setup: CulturalBench-Easy and CulturalBench-Hard.

    See more detail on our [Paper](https://arxiv.org)
    """
    leaderboard_md += f'''Human baseline: 92.4% on CulturalBench-Easy and 92.5% on CulturalBench-Hard'''
    return leaderboard_md

def display_leaderboard(setup, data_type):
    file_name = f"{setup}_{data_type}.csv"
    file_path = os.path.join(csv_folder, file_name)
    df = pd.read_csv(file_path)
    return df

def build_leaderboard():
    with gr.Row():
        with gr.Column():
            setup_radio = gr.Radio(choices=setups, label="Select Evaluation Setup:", value="CulturalBench_Hard", elem_id="setup_radio")
        
        with gr.Column():
            data_type_radio = gr.Radio(choices=data_types, label="Average or per continent:", value="average", elem_id="data_type_radio")

    leaderboard_viewer = gr.DataFrame(
        value=display_leaderboard("CulturalBench_Hard", "average"), 
        elem_id="leaderboard_viewer"
    )

    setup_radio.change(display_leaderboard, 
                    inputs=[setup_radio, data_type_radio], 
                    outputs=leaderboard_viewer)
    data_type_radio.change(display_leaderboard, 
                        inputs=[setup_radio, data_type_radio], 
                        outputs=leaderboard_viewer) 

LAST_UPDATED = datetime.now(pytz.timezone('US/Pacific')).strftime("%Y-%m-%d %H:%M:%S")
header_md_text = HEADER_MD.replace("{LAST_UPDATED}", str(LAST_UPDATED))


theme = gr.themes.Default.load("static/theme.json")
text_size = gr.themes.sizes.text_lg
font = [gr.themes.GoogleFont("Inconsolata"), "Arial", "sans-serif"]
theme.text_size = text_size
theme.font = font
theme.set(
    button_large_text_size="30px",
    button_small_text_size="30px",
    button_large_text_weight="1000",
    button_small_text_weight="1000",
    button_shadow="*shadow_drop_lg",
    button_shadow_hover="*shadow_drop_lg",
    checkbox_label_shadow="*shadow_drop_lg",
    button_shadow_active="*shadow_inset",
    button_secondary_background_fill="*color_green",
    button_secondary_background_fill_dark="*color_green",
    button_secondary_background_fill_hover="*color_green_darker",
    button_secondary_background_fill_hover_dark="*color_green_darker",       
    button_secondary_text_color="white",
    button_secondary_text_color_dark="white",
)

with gr.Blocks(theme=theme) as demo:
    
    leaderboard_md = make_full_leaderboard_md()
    with gr.Row():
        with gr.Column(scale=4):
            LAST_UPDATED = datetime.now(pytz.timezone('US/Pacific')).strftime("%Y-%m-%d %H:%M:%S")
            header_md_text = HEADER_MD.replace("{LAST_UPDATED}", str(LAST_UPDATED))
            gr.Markdown(header_md_text, elem_classes="markdown-text") 
    text_size = gr.themes.sizes.text_lg

    gr.Markdown("<hr style='margin: 20px 0;'>", elem_id="divider")

    with gr.Tabs() as tabs:
        with gr.Tab("🥇 Leaderboard", id=0):
            md_3 = gr.Markdown(leaderboard_md, elem_id="markdown")
            build_leaderboard()
        with gr.Tab("ℹ️ About Us", id=1):
            gr.Markdown(ABOUT_MD, elem_classes="markdown-text")

demo.launch()