test3 / app.py
basilboy's picture
Update app.py
7c87bff verified
raw
history blame
1.58 kB
import streamlit as st
from utils import validate_sequence, predict
from model import models
import pandas as pd
def main():
st.title("AA Property Inference Demo", anchor=None)
# Apply monospace font to the entire app
st.markdown("""
<style>
.reportview-container {
font-family: 'Courier New', monospace;
}
</style>
""", unsafe_allow_html=True)
# User input: Text and CSV
sequence = st.text_input("Enter your amino acid sequence:")
uploaded_file = st.file_uploader("Or upload a CSV file with amino acid sequences", type="csv")
if st.button("Analyze Sequence"):
sequences = [sequence] if sequence else []
if uploaded_file:
df = pd.read_csv(uploaded_file)
sequences.extend(df['sequence'].tolist())
results = []
for seq in sequences:
if validate_sequence(seq):
model_results = {}
for model_name, model in models.items():
prediction, confidence = predict(model, seq)
model_results[f"{model_name}_prediction"] = prediction
model_results[f"{model_name}_confidence"] = round(confidence, 3)
results.append({"Sequence": seq, **model_results})
else:
st.error(f"Invalid sequence: {seq}")
if results:
st.write("### Results")
results_df = pd.DataFrame(results)
st.dataframe(results_df.style.format(precision=3))
if __name__ == "__main__":
main()