import streamlit as st from components import ( buildings_view, models_view, performance_view, computation_view, logos, model_selector, header, overview_view, ) import utils PAGES = [ "Overview", "Buildings", "Models", "Performance", "Computational Resources", ] st.set_page_config(page_title="Gas Demand Dashboard", layout="wide") @st.cache_data(ttl=86400) def fetch_data(): return utils.get_wandb_data( entity=st.secrets["wandb_entity"], project="enfobench-gas-demand", 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 == "Performance" or view == "Computational Resources": models_to_plot = model_selector(models) if view == "Overview": st.header("Sources") st.link_button("GitHub Repository", url="https://github.com/attila-balint-kul/energy-forecast-benchmark-toolkit", use_container_width=True) st.link_button("Documentation", url="https://attila-balint-kul.github.io/energy-forecast-benchmark-toolkit/", use_container_width=True) st.link_button("Electricity Demand Dataset", url="https://huggingface.co/datasets/EDS-lab/electricity-demand", use_container_width=True) st.link_button("HuggingFace Organization", url="https://huggingface.co/EDS-lab", use_container_width=True) st.header("Other Dashboards") st.link_button("Electricity Demand", url="https://huggingface.co/spaces/EDS-lab/EnFoBench-ElectricityDemand", use_container_width=True) st.link_button("PV Generation", url="https://huggingface.co/spaces/EDS-lab/EnFoBench-PVGeneration", use_container_width=True) 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() if view == "Overview": overview_view(data) elif view == "Buildings": buildings_view(data) elif view == "Models": models_view(data) elif view == "Performance": performance_view(data, models_to_plot) elif view == "Computational Resources": computation_view(data, models_to_plot) else: st.write("Not implemented yet")