import os import tempfile import traceback import streamlit as st import xarray as xr from typing import List import numpy as np @st.cache_resource def save_uploaded_files(uploaded_files): if 'temp_file_paths' not in st.session_state: st.session_state.temp_file_paths = [] for uploaded_file in uploaded_files: suffix = os.path.splitext(uploaded_file.name)[1] temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=suffix) temp_file.write(uploaded_file.read()) temp_file.close() st.session_state.temp_file_paths.append(temp_file.name) @st.cache_resource def load_dataset(file_paths: List[str]): try: ds = xr.open_mfdataset(file_paths, combine='by_coords').load() return ds except Exception: st.error("Error loading dataset:") st.error(traceback.format_exc()) return None @st.cache_resource def load_dataset_pangu(file_path: str): try: ds = np.load(file_path) return ds except Exception: st.error("Error loading dataset:") st.error(traceback.format_exc()) return None