File size: 1,580 Bytes
c8e874d 49c5855 f132523 7c87bff c8e874d 49c5855 7c87bff 49c5855 88dbd92 49c5855 88dbd92 49c5855 88dbd92 7c87bff 88dbd92 7c87bff 88dbd92 49c5855 7c87bff 49c5855 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
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()
|