import streamlit as st import pandas as pd from run import run, GUIDE_LEN, NUCLEOTIDE_TOKENS # def run_with_input(reset=False): # if reset: # st.write("") # return 0 # returned_x = run(st.session_state["userInput"]) # csv_x = returned_x.to_csv() # st.write("model prediction: ", returned_x) # return csv_x @st.cache def convert_df(df): # IMPORTANT: Cache the conversion to prevent computation on every rerun return df.to_csv().encode('utf-8') # title and instructions st.title('TIGER Cas13 Efficacy Prediction') st.session_state['userInput'] = '' st.session_state['userInput'] = st.text_input('Enter target transcript (or substring):') if len(st.session_state['userInput']) < GUIDE_LEN: st.write('Transcript length must be >= 23 bases. It is {:d} chars'.format(len(st.session_state['userInput']))) st.write("") elif all([True if nt.upper() in NUCLEOTIDE_TOKENS.keys() else False for nt in st.session_state['userInput']]): st.write('This is your sequence', st.session_state['userInput']) predictions = run(st.session_state['userInput']) st.write('Model predictions: ', predictions) csv = convert_df(predictions) st.download_button(label='Download CSV file', data=csv, file_name='tiger_predictions.csv', mime='text/csv') else: st.write('only ACTG is allowed')