File size: 2,626 Bytes
ed2eb44
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""
Main entry point for the Model Capability Leaderboard application.
"""
import streamlit as st

# Import configuration
from src.utils.config import app_config, metrics_config

# Import data functions
from src.utils.data_loader import (
    load_metric_data, 
    process_data, 
    filter_and_prepare_data,
    format_display_dataframe
)

# Import styles
from src.styles.base import load_all_styles

# Import components
from src.components.header import render_page_header, render_footer
from src.components.filters import (
    initialize_session_state, 
    render_metric_selection, 
    render_task_selection, 
    render_model_type_selection
)
from src.components.leaderboard import render_leaderboard_table, render_empty_state
from src.components.tasks import render_task_descriptions

def setup_page():
    """
    Set up the Streamlit page configuration
    """
    st.set_page_config(
        page_title=app_config['title'],
        layout=app_config['layout'],
        initial_sidebar_state=app_config['initial_sidebar_state']
    )
    
    # Load all styles
    load_all_styles()

def main():
    """
    Main application function
    """
    # Set up page
    setup_page()
    
    # Render header
    render_page_header()
    
    # Load data
    current_metric = list(metrics_config.keys())[0]
    metric_data = load_metric_data(metrics_config[current_metric]["file"])
    df = process_data(metric_data)
    
    # Initialize session state
    initialize_session_state(df)
    
    # Create tabs
    tabs = st.tabs(["📊 Leaderboard", "📑 Benchmark Details"])
    
    # Tab 1: Leaderboard
    with tabs[0]:
        # Render filter components
        selected_metric = render_metric_selection()
        selected_tasks = render_task_selection(df)
        selected_model_types = render_model_type_selection(df)
        
        # Render leaderboard if selections are valid
        if selected_tasks and selected_model_types:
            # Filter and prepare data
            filtered_df = filter_and_prepare_data(df, selected_tasks, selected_model_types)
            
            # Format data for display
            display_df, metric_columns = format_display_dataframe(filtered_df, selected_tasks)
            
            # Render the leaderboard table
            render_leaderboard_table(display_df, metric_columns)
        else:
            # Show empty state
            render_empty_state()
    
    # Tab 2: Benchmark Details
    with tabs[1]:
        # Render task descriptions
        render_task_descriptions()
    
    # Render footer
    render_footer()

if __name__ == "__main__":
    main()