import streamlit as st from PIL import Image import io st.set_page_config(page_title="TGA Graph Interpreter", layout="wide") st.title("TGA Graph Interpreter") st.write("Upload TGA thermograms and record degradation details. The app will generate a structured discussion.") uploaded_files = st.file_uploader( "Upload thermogram(s)", type=["png", "jpg", "jpeg", "pdf"], accept_multiple_files=True ) all_discussions = [] if uploaded_files: for i, uploaded_file in enumerate(uploaded_files): st.subheader(f"Thermogram {i+1}: {uploaded_file.name}") # Display thermogram file_bytes = uploaded_file.read() image = Image.open(io.BytesIO(file_bytes)) st.image(image, use_container_width=True) st.markdown("**Enter analysis details:**") onset_temp = st.number_input(f"Onset temperature (°C) for {uploaded_file.name}", min_value=0, step=1) peak_temp = st.number_input(f"Peak degradation temperature (°C) for {uploaded_file.name}", min_value=0, step=1) weight_loss = st.number_input(f"Total weight loss (%) for {uploaded_file.name}", min_value=0.0, step=0.1) residue = st.number_input(f"Residue at 800 °C (%) for {uploaded_file.name}", min_value=0.0, step=0.1) if st.button(f"Add Discussion for {uploaded_file.name}"): discussion = ( f"**{uploaded_file.name}**:\n" f"- Onset of degradation observed at ~{onset_temp} °C.\n" f"- Major degradation peak at ~{peak_temp} °C.\n" f"- The material shows a total weight loss of ~{weight_loss:.2f}%.\n" f"- Residual mass at 800 °C is ~{residue:.2f}%.\n\n" f"These results indicate thermal stability until {onset_temp} °C, " f"with significant decomposition occurring around {peak_temp} °C. " f"The remaining char (~{residue:.2f}%) suggests potential " f"applications where high-temperature stability is desired." ) all_discussions.append(discussion) if all_discussions: st.header("Discussion") for d in all_discussions: st.markdown(d)