|
|
import streamlit as st |
|
|
import pandas as pd |
|
|
|
|
|
|
|
|
@st.cache |
|
|
def load_data(): |
|
|
|
|
|
data = pd.read_csv('materials_properties.csv') |
|
|
return data |
|
|
|
|
|
|
|
|
st.title("Material Selector App") |
|
|
st.sidebar.title("Material Filters") |
|
|
|
|
|
|
|
|
data = load_data() |
|
|
|
|
|
|
|
|
st.sidebar.header("Filter by Class") |
|
|
material_class = st.sidebar.selectbox("Select Material Class", data['Class'].unique()) |
|
|
|
|
|
st.sidebar.header("Filter by Properties") |
|
|
property_filter = st.sidebar.multiselect("Select Properties to Filter", data.columns[2:], default=[]) |
|
|
|
|
|
|
|
|
filtered_data = data[data['Class'] == material_class] |
|
|
if property_filter: |
|
|
filtered_data = filtered_data[property_filter + ['Material', 'Class']] |
|
|
|
|
|
|
|
|
st.subheader("Filtered Materials") |
|
|
st.write(filtered_data) |
|
|
|
|
|
|
|
|
st.sidebar.download_button( |
|
|
label="Download Filtered Data as CSV", |
|
|
data=filtered_data.to_csv(index=False), |
|
|
file_name='filtered_materials.csv', |
|
|
mime='text/csv', |
|
|
) |
|
|
|
|
|
|
|
|
st.markdown("Powered by Streamlit and designed for Hugging Face deployment.") |
|
|
|