File size: 1,784 Bytes
f1e08ee
 
a56c4ba
e9ee3ac
 
 
a56c4ba
e9ee3ac
 
a56c4ba
2429cdc
a56c4ba
 
 
e9ee3ac
f1e08ee
a56c4ba
 
f87d2ee
2429cdc
f87d2ee
 
a56c4ba
 
60bd8ab
f87d2ee
 
f1e08ee
a56c4ba
d87c759
 
f1e08ee
 
 
e9ee3ac
a56c4ba
e9ee3ac
f1e08ee
 
 
 
e9ee3ac
f1e08ee
 
e9ee3ac
 
f1e08ee
 
 
e9ee3ac
f87d2ee
2429cdc
a56c4ba
 
2429cdc
 
a56c4ba
2429cdc
 
e9ee3ac
 
 
 
 
 
f1e08ee
f87d2ee
a56c4ba
f87d2ee
2429cdc
 
 
f87d2ee
 
 
a56c4ba
 
 
 
60bd8ab
 
f87d2ee
 
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")