File size: 2,096 Bytes
ec9edcd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
import pandas as pd
import json

from evaluate import get_solution_code


# For now, only evaluate first 9 days
df = pd.read_csv("results.csv")
df = df[df.day < 10]

with open("solutions.json") as f:
    solutions = json.load(f)

def score_submissions(row):
    result = row["result"]
    day = row["day"]
    solution = solutions[str(day)]

    score_1 = solution[0] in result
    score_2 = solution[1] in result
    return [score_1, score_2]


df["scores"] = df.apply(score_submissions, axis=1)
df["code"] = df.apply(lambda x: get_solution_code(day = x["day"], model=x["model"]), axis=1)
df["code_md"] = df.code.apply(lambda x: "```python"+x+"```")

df["part_1"] = df["scores"].apply(lambda x: x[0])
df["part_2"] = df["scores"].apply(lambda x: x[1])


star_summary = {}
for model in df.model.unique():
    df_model = df[df.model == model]
    silver_stars = df_model.part_1.sum()
    gold_stars = df_model.part_2.sum()
    total_stars = silver_stars + gold_stars
    star_summary[model] = {
        "Model": model,
        "Silver Stars ⭐️": silver_stars,
        "Gold Stars ⭐️": gold_stars,
        "Total Stars ⭐️": total_stars,
    }

star_df = pd.DataFrame.from_dict(star_summary, orient="index")

with gr.Blocks() as demo:
    md = gr.Markdown("Hello!")
    with gr.Tab("Stars"):
        gr_star_df = gr.DataFrame(star_df)
    with gr.Tab("Daily"):

        # Parse the info to something more readable
        df_daily = df[["model", "day", "part_1", "part_2", "total_time"]]
        df_daily["Part 1"] = df_daily["part_1"].apply(lambda x: "⭐️" if x else "❌")
        df_daily["Part 2"] = df_daily["part_2"].apply(lambda x: "⭐️" if x else "❌")
        df_daily["Runtime (s)"] = df_daily["total_time"].apply(lambda x: str(x)[0:6])
        df_daily = df_daily[["model", "day", "Part 1", "Part 2", "Runtime (s)"]]

        gr_df_daily = gr.DataFrame(df_daily.sort_values(by="day"))

    # with gr.Tab("Code"):
    #     gr_code_df = gr.DataFrame(df[["model", "day", "code_md", "result"]], datatype=["str", "str", "markdown", "str"])

demo.launch()