File size: 1,784 Bytes
3d3e872
 
dae6339
30d9523
 
 
dae6339
30d9523
 
dae6339
dad7dd9
dae6339
 
 
30d9523
3d3e872
dae6339
 
3d3e872
dad7dd9
3d3e872
 
dae6339
 
3d3e872
 
 
 
dae6339
30d9523
 
3d3e872
 
 
dae6339
 
 
3d3e872
 
 
 
30d9523
3d3e872
 
30d9523
 
3d3e872
 
 
30d9523
3d3e872
dad7dd9
dae6339
 
dad7dd9
 
dae6339
dad7dd9
 
30d9523
 
 
 
 
 
3d3e872
 
dae6339
3d3e872
dad7dd9
 
 
3d3e872
 
 
dae6339
 
 
 
3d3e872
 
 
 
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
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",
    )


# Load data
data = fetch_data()

# Extract models
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")