|
import streamlit as st |
|
import asyncio |
|
from src.core.styles import CUSTOM_CSS |
|
from src.components.header import render_header |
|
from src.components.filters import render_table_filters, render_plot_filters |
|
from src.components.visualizations import ( |
|
render_performance_plots, |
|
render_leaderboard_table, |
|
) |
|
from src.services.api import fetch_leaderboard_data |
|
|
|
|
|
st.set_page_config( |
|
page_title="AI-Phone Leaderboard", |
|
page_icon="src/static/images/favicon.png", |
|
layout="wide", |
|
initial_sidebar_state="expanded", |
|
) |
|
|
|
|
|
st.markdown(CUSTOM_CSS, unsafe_allow_html=True) |
|
|
|
async def main(): |
|
|
|
render_header() |
|
|
|
|
|
full_df = await fetch_leaderboard_data() |
|
if full_df.empty: |
|
st.info("No benchmark data available yet!") |
|
return |
|
|
|
|
|
models = sorted(full_df["Model"].unique()) |
|
benchmarks = sorted(full_df["Benchmark"].unique()) |
|
platforms = sorted(full_df["Platform"].unique()) |
|
devices = sorted(full_df["Normalized Device ID"].unique()) |
|
|
|
|
|
( |
|
selected_model_table, |
|
selected_benchmark_table, |
|
selected_platform_table, |
|
selected_device_table, |
|
) = render_table_filters(models, benchmarks, platforms, devices) |
|
|
|
|
|
table_df = full_df.copy() |
|
if selected_model_table != "All": |
|
table_df = table_df[table_df["Model"] == selected_model_table] |
|
if selected_benchmark_table != "All": |
|
table_df = table_df[table_df["Benchmark"] == selected_benchmark_table] |
|
if selected_platform_table != "All": |
|
table_df = table_df[table_df["Platform"] == selected_platform_table] |
|
if selected_device_table != "All": |
|
table_df = table_df[table_df["Normalized Device ID"] == selected_device_table] |
|
|
|
|
|
render_leaderboard_table(table_df) |
|
|
|
|
|
st.subheader("Performance Comparison") |
|
|
|
|
|
selected_model_plot, selected_benchmark_plot = render_plot_filters( |
|
models, benchmarks |
|
) |
|
|
|
|
|
plot_df = full_df[ |
|
(full_df["Model"] == selected_model_plot) |
|
& (full_df["Benchmark"] == selected_benchmark_plot) |
|
] |
|
|
|
|
|
render_performance_plots(plot_df, selected_model_plot) |
|
|
|
if __name__ == "__main__": |
|
asyncio.run(main()) |