import streamlit as st import pandas as pd from os import path import sys import streamlit.components.v1 as components sys.path.append('code/') #sys.path.append('ASCARIS/code/') import pdb_featureVector import alphafold_featureVector import argparse from st_aggrid import AgGrid, GridOptionsBuilder, JsCode,GridUpdateMode import base64 showWarningOnDirectExecution = False def convert_df(df): return df.to_csv(index=False).encode('utf-8') # Check if 'key' already exists in session_state # If not, then initialize it if 'visibility' not in st.session_state: st.session_state['visibility'] = 'visible' st.session_state.disabled = False original_title = '

ASCARIS

' st.markdown(original_title, unsafe_allow_html=True) original_title = '

(Annotation and StruCture-bAsed RepresentatIon of Single amino acid variations)

' st.markdown(original_title, unsafe_allow_html=True) st.write('') st.write('') st.write('') st.write('') selected_df = pd.DataFrame() with st.form('mform', clear_on_submit=True): source = st.selectbox('Select the protein structure resource (1: PDB-SwissModel-Modbase, 2: AlphaFold)',[1,2]) impute = st.selectbox('Imputation',[True, False]) input_data = st.text_input('Enter SAV data points (Format Provided Below)', "Q9Y4W6-N-432-T", label_visibility=st.session_state.visibility, disabled=st.session_state.disabled, ) parser = argparse.ArgumentParser(description='ASCARIS') parser.add_argument('-s', '--source_option', help='Selection of input structure data.\n 1: PDB Structures (default), 2: AlphaFold Structures', default=1) parser.add_argument('-i', '--input_datapoint', help='Input file or query datapoint\n Option 1: Comma-separated list of identifiers (UniProt ID-wt residue-position-mutated residue (e.g. Q9Y4W6-N-432-T or Q9Y4W6-N-432-T, Q9Y4W6-N-432-T)) \n Option 2: Enter comma-separated file path') parser.add_argument('-impute', '--imputation_state', default='True', help='Whether resulting feature vector should be imputed or not. Default True.') args = parser.parse_args() input_set = input_data mode = source impute = impute submitted = st.form_submit_button(label="Submit", help=None, on_click=None, args=None, kwargs=None, type="secondary", disabled=False, use_container_width=False) print('*****************************************') print('Feature vector generation is in progress. \nPlease check log file for updates..') print('*****************************************') mode = int(mode) if submitted: with st.spinner('In progress...This may take a while...'): try: if mode == 1: selected_df = pdb_featureVector.pdb(input_set, mode, impute) elif mode == 2: selected_df = alphafold_featureVector.alphafold(input_set, mode, impute) else: selected_df = pd.DataFrame() except: selected_df = pd.DataFrame() pass if selected_df != None: if len(selected_df) != 0 : st.success('Feature vector successfully created.') csv = convert_df(selected_df) st.download_button("Press to Download the Feature Vector", csv,"ASCARIS_SAV_rep.csv","text/csv",key='download-csv') else: st.success('Feature vector failed.') else: st.success('Feature vector failed. Check log file.')