from pathlib import Path import sys import streamlit as st try: from data_store import load_metric_store except ModuleNotFoundError: sys.path.append(str(Path(__file__).resolve().parents[1])) from data_store import load_metric_store st.set_page_config(page_title="Raw Data", page_icon="๐Ÿงพ", layout="wide") # Sidebar navigation st.sidebar.title("Navigation") st.sidebar.page_link("streamlit_app.py", label="Home", icon="๐Ÿ ") st.sidebar.page_link("pages/OptimizationLeaderboard.py", label="Optimization Leaderboard", icon="๐Ÿ“Š") st.sidebar.page_link("pages/UQLeaderboard.py", label="UQ Leaderboard", icon="๐ŸŽฏ") st.sidebar.page_link("pages/MethodDetails.py", label="Methods", icon="๐Ÿ“˜") st.sidebar.page_link("pages/RawData.py", label="Get Data", icon="๐Ÿงพ") st.title("Raw Averaged Forward Model Runs") st.caption("All rows are averaged over random seeds during ingestion; `metric` represents forward model runs") metric_store = load_metric_store() if metric_store.empty: st.warning("No metric data found. Expected NetCDF files in `data/` with a `metric` variable.") st.stop() benchmark_options = sorted(metric_store["benchmark"].unique().tolist()) default_benchmark_index = benchmark_options.index("L63") if "L63" in benchmark_options else 0 selected_benchmark = str(st.selectbox("Benchmark", options=benchmark_options, index=default_benchmark_index)) filtered = metric_store[metric_store["benchmark"] == selected_benchmark].copy() filtered = filtered.sort_values(["abbreviation", "rmse_target", "ensemble_size"]) st.dataframe( filtered[ [ "benchmark", "abbreviation", "Method", "parallelism", "update_type", "method_goal", "emulator_use", "algorithm_type", "algorithm_alias", "rmse_target", "ensemble_size", "metric", ] ], hide_index=True, use_container_width=True, column_config={ "benchmark": st.column_config.TextColumn("Benchmark"), "abbreviation": st.column_config.TextColumn("Abbrev."), "Method": st.column_config.TextColumn("Method"), "parallelism": st.column_config.TextColumn("Parallelism"), "update_type": st.column_config.TextColumn("Update Type"), "method_goal": st.column_config.TextColumn("Method Goal"), "emulator_use": st.column_config.TextColumn("Emulator Use"), "algorithm_type": st.column_config.TextColumn("Canonical Type"), "algorithm_alias": st.column_config.TextColumn("Source Alias"), "rmse_target": st.column_config.TextColumn("RMSE Target"), "ensemble_size": st.column_config.NumberColumn("Ensemble Size"), "metric": st.column_config.NumberColumn("Mean Forward Model Runs", format="%.6f"), }, ) csv_data = filtered.to_csv(index=False).encode("utf-8") st.download_button( label=f"Download {selected_benchmark} averaged metrics (CSV)", data=csv_data, file_name=f"{selected_benchmark.lower()}_averaged_metrics.csv", mime="text/csv", ) st.page_link("pages/OptimizationLeaderboard.py", label="โฌ… Back to Optimization Leaderboard", icon="โ†ฉ๏ธ")