Sample_GUI_pfe / app.py
ArkenB's picture
Create app.py
feb751a verified
import streamlit as st
import pandas as pd
import requests
# FastAPI endpoints
GET_API_URL = "http://127.0.0.1:8000/get_s_matrix/"
POST_API_URL = "http://127.0.0.1:8000/process_s_matrix/"
# Streamlit app setup
st.set_page_config(page_title="S-Matrix to RLC Converter", layout="wide")
st.title("S-Matrix to RLC Converter")
st.markdown("""
<style>
.stButton>button {
background-color: #4CAF50;
color: white;
border: none;
padding: 10px 20px;
font-size: 16px;
border-radius: 5px;
}
.stButton>button:hover {
background-color: #45a049;
}
</style>
""", unsafe_allow_html=True)
# Fetch S-matrix data
st.header("1. Fetch S-Matrix Data")
col1, col2 = st.columns(2)
with col1:
if st.button("Fetch as JSON"):
response = requests.get(GET_API_URL, params={"format": "json"})
if response.status_code == 200:
s_matrix = response.json()["s_matrix"]
st.success("Data fetched successfully!")
st.write(pd.DataFrame(s_matrix, columns=["S11", "S12"]))
else:
st.error("Failed to fetch data.")
with col2:
if st.button("Fetch as CSV"):
response = requests.get(GET_API_URL, params={"format": "csv"})
if response.status_code == 200:
st.success("CSV downloaded. Check your downloads folder!")
st.download_button("Download CSV", response.content, file_name="s_matrix.csv")
else:
st.error("Failed to fetch data.")
# Process S-matrix
if "s_matrix" in locals():
st.header("2. Process S-Matrix")
if st.button("Calculate RLC"):
payload = {"s_matrix": s_matrix}
response = requests.post(POST_API_URL, json=payload)
if response.status_code == 200:
rlc_values = response.json()["rlc_values"]
rlc_df = pd.DataFrame(rlc_values)
st.write("RLC Results✅")
st.dataframe(rlc_df)
# Copy-to-clipboard button
st.write("Copy Results")
st.code(rlc_df.to_csv(index=False), language="plaintext")
st.download_button("Copy to Clipboard", rlc_df.to_csv(index=False), file_name="rlc_results.csv")
else:
st.error("Failed to process data.")