CRRA_optimisation_tool / utils /data_utils.py
CarlyneB's picture
[FEAT] Possibility to choose between running the optimization with manually entered values or by adding a pre-existing scenario (JSON) -> in this case, the values are automatically populated in all other input tabs
fbd166f
Raw History Blame
1.28 kB
import json
import pandas as pd
import streamlit as st
@st.cache_data
def load_slider_data():
"""Load slider data from a JSON file and cache it for performance."""
with open("data/cost_sliders.json") as f:
data = json.load(f)
return data
def render_resource_input(name_clean, r, tooltip=None):
if tooltip:
st.markdown(
f"""<span title="{tooltip}" style="font-weight: 500;">{name_clean} <sup style="color:#999;">ℹ️</sup></span>""",
unsafe_allow_html=True
)
else:
st.markdown(f"**{name_clean}**")
widget_key = f"cap_{r}"
if widget_key not in st.session_state:
st.session_state[widget_key] = st.session_state.resource_caps.get(r, 0.0)
cap = st.number_input(
label="label",
label_visibility="collapsed",
min_value=0.0,
format="%.2f",
key=widget_key,
)
st.session_state.resource_caps[r] = cap
def is_valid_scenario(scenario):
return (
isinstance(scenario, dict)
and "allocations" in scenario
and "resource_caps" in scenario
and "method_costs" in scenario
and "method_constraints" in scenario
and "summary" in scenario
)