|
import streamlit as st |
|
|
|
import utils |
|
from components import ( |
|
buildings_view, |
|
computation_view, |
|
header, |
|
logos, |
|
model_selector, |
|
models_view, |
|
overview_view, |
|
accuracy_view, |
|
relative_performance_view, |
|
links, |
|
) |
|
|
|
|
|
USE_CASE = st.secrets["enfobench_usecase"] |
|
PAGES = [ |
|
"Overview", |
|
"Buildings", |
|
"Models", |
|
"Accuracy", |
|
"Relative Performance", |
|
"Computational Resources", |
|
] |
|
|
|
|
|
st.set_page_config(page_title=f"{USE_CASE} Dashboard", layout="wide") |
|
|
|
|
|
@st.cache_data(ttl=86400) |
|
def fetch_data(): |
|
return utils.get_wandb_data( |
|
entity=st.secrets["wandb_entity"], |
|
project=st.secrets["wandb_project"], |
|
api_key=st.secrets["wandb_api_key"], |
|
job_type="metrics", |
|
) |
|
|
|
|
|
|
|
data = fetch_data() |
|
|
|
|
|
models = sorted(data["model"].unique().tolist()) |
|
|
|
|
|
with st.sidebar: |
|
logos() |
|
view = st.selectbox("View", PAGES, index=0) |
|
|
|
if view in ["Accuracy", "Relative Performance", "Computational Resources"]: |
|
models_to_plot = model_selector(models, data) |
|
|
|
if view == "Overview": |
|
links(current=USE_CASE) |
|
|
|
st.header("Refresh data") |
|
refresh = st.button( |
|
"Refresh", use_container_width=True, help="Fetch the latest data from W&B" |
|
) |
|
if refresh: |
|
fetch_data.clear() |
|
st.rerun() |
|
|
|
|
|
header(f"EnFoBench - {USE_CASE}") |
|
|
|
if view == "Overview": |
|
overview_view(data) |
|
elif view == "Buildings": |
|
buildings_view(data) |
|
elif view == "Models": |
|
models_view(data) |
|
elif view == "Accuracy": |
|
accuracy_view(data, models_to_plot) |
|
elif view == "Relative Performance": |
|
relative_performance_view(data, models_to_plot) |
|
elif view == "Computational Resources": |
|
computation_view(data, models_to_plot) |
|
else: |
|
st.write("Not implemented yet") |
|
|