UFPs-Deploy / app.py
Chayanat's picture
Update app.py
bbce220 verified
import streamlit as st
import torch
import numpy as np
import pandas as pd
import time
import json
import io
import base64
import pickle
import matplotlib.pyplot as plt
from model import GRUModel, load_model, save_model_info
from utils import (init_firebase, get_data_from_firebase, save_data_to_firebase,
preprocess_data, create_sequences, load_scalers_and_encoders,
prepare_input_data, get_file_download_link,
save_scaler_to_bytes, save_encoders_to_bytes,
create_default_scaler, create_default_encoders)
# ตั้งค่าหน้าเว็บ
st.set_page_config(page_title="GRU Model for PM0.1 Prediction", layout="wide")
st.title("GRU Model for PM0.1 Prediction")
# สร้าง session state สำหรับเก็บข้อมูลระหว่าง rerun
if 'prediction_history' not in st.session_state:
st.session_state.prediction_history = []
st.session_state.timestamp_history = []
st.session_state.initialized = False
st.session_state.model_loaded = False
st.session_state.firebase_connected = False
# โหลดโมเดลและ hyperparameters
@st.cache_resource
def load_model_resources():
model_path = "model.pth"
try:
model, hyperparams = load_model(model_path)
numeric_scaler, label_encoders, y_scaler = load_scalers_and_encoders(model_path)
# บันทึกข้อมูลโมเดลเป็น JSON สำหรับการตรวจสอบ
if model is not None and hyperparams is not None:
save_model_info(model, hyperparams, "model_info.json")
return model, hyperparams, numeric_scaler, label_encoders, y_scaler
except Exception as e:
st.error(f"เกิดข้อผิดพลาดในการโหลดโมเดล: {str(e)}")
return None, None, None, None, None
# ส่วนของ sidebar สำหรับการตั้งค่า
with st.sidebar:
st.header("การตั้งค่า")
# การตั้งค่า Firebase
st.subheader("Firebase Configuration")
# ใช้ secrets หรือป้อนข้อมูลโดยตรง
use_secrets = st.checkbox("ใช้ Secrets", value=True,
help="เลือกว่าจะใช้ค่า Secrets หรือป้อนข้อมูลโดยตรง")
if use_secrets:
firebase_credentials = st.secrets.get("firebase_credentials", "{}")
firebase_url = st.secrets.get("firebase_url", "https://your-project-id.firebaseio.com")
else:
firebase_credentials = st.text_area("Firebase Service Account JSON",
value="", height=100,
help="ใส่ข้อมูล JSON ของ Service Account สำหรับเชื่อมต่อกับ Firebase")
firebase_url = st.text_input("Firebase Database URL",
value="https://your-project-id.firebaseio.com",
help="URL ของ Firebase Realtime Database")
input_path = st.text_input("Firebase Input Path",
value="input_data",
help="พาธสำหรับดึงข้อมูลจาก Firebase")
output_path = st.text_input("Firebase Output Path",
value="prediction_results",
help="พาธสำหรับบันทึกผลลัพธ์ลงใน Firebase")
# การตั้งค่าการทำนาย
st.subheader("Prediction Configuration")
auto_predict = st.checkbox("Auto-predict", value=False,
help="เปิดใช้การทำนายอัตโนมัติตามระยะเวลาที่กำหนด")
if auto_predict:
predict_interval = st.number_input("Prediction Interval (seconds)",
min_value=10, max_value=3600, value=60,
help="ความถี่ในการทำนายอัตโนมัติ (วินาที)")
# โหลดโมเดลและ hyperparameters
model, hyperparams, numeric_scaler, label_