Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
| import streamlit as st | |
| from tiger import tiger_exhibit, TARGET_LEN, NUCLEOTIDE_TOKENS | |
| 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( | |
| label='Enter a target transcript:', | |
| # value='ATGCAGGACGCGGAGAACGTGGCGGTGCCCGAGGCGGCCGAGGAGCGCGC', | |
| placeholder='Upper or lower case') | |
| # input is too short | |
| if len(st.session_state['userInput']) < TARGET_LEN: | |
| transcript_len = len(st.session_state['userInput']) | |
| st.write('Transcript length ({:d}) must be at least {:d} bases.'.format(transcript_len, TARGET_LEN)) | |
| # valid input | |
| elif all([True if nt.upper() in NUCLEOTIDE_TOKENS.keys() else False for nt in st.session_state['userInput']]): | |
| on_target, off_target = tiger_exhibit(st.session_state['userInput']) | |
| st.write('On-target predictions: ', on_target) | |
| st.download_button(label='Download', data=convert_df(on_target), file_name='on_target.csv', mime='text/csv') | |
| if len(off_target) > 0: | |
| st.write('Off-target predictions: ', off_target) | |
| st.download_button(label='Download', data=convert_df(off_target), file_name='off_target.csv', mime='text/csv') | |
| else: | |
| st.write('We did not find any off-target effects!') | |
| # invalid input | |
| else: | |
| st.write('Nucleotides other than ACGT detected!') | |