File size: 1,637 Bytes
6c9ff9d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from .s3_utils import read_from_s3
from config import MODELS
import pandas as pd

async def generate_leaderboard(criteria : str) -> pd.DataFrame:
    """
    Generate the leaderboard from saved data.

    Args:
        criteria (str): The criteria corresponding to the leaderboard.
    
    Returns:
        pd.DataFrame: The leaderboard.
    """
    try:
        leaderboard = await read_from_s3(f'leaderboard_{criteria}.csv')
        if leaderboard is None:
            raise Exception
    except:
        leaderboard = pd.DataFrame({
            'Model': pd.Series(dtype='str'),
            'Elo': pd.Series(dtype='int'),
            'Wins': pd.Series(dtype='int'),
            'Matches': pd.Series(dtype='int'),
            'Win Rate': pd.Series(dtype='float')
        })

    for model in MODELS:
        if model not in leaderboard['Model'].values:
            leaderboard = pd.concat([leaderboard, pd.DataFrame([{'Model': model, 'Elo': 1500, 'Wins': 0, 'Matches': 0, 'Win Rate': 0.0}])], ignore_index=True)
    leaderboard = leaderboard.sort_values('Elo', ascending=False).reset_index(drop=True)
    leaderboard['Win Rate'] = leaderboard['Win Rate'].apply(lambda x: round(x, 2))

    return leaderboard

async def generate_data() -> pd.DataFrame:
    """
    Generate the data for the matches.

    Returns:
        pd.DataFrame: The data for the matches.
    """
    try :
        data = await read_from_s3('data.csv')
        if data is None:
            raise Exception
    except:
        data = pd.DataFrame(columns=['Criteria', 'Model', 'Opponent', 'Won', 'Elo', 'Win Rate', 'Matches', 'Timestamp', 'UUID'])
    return data