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, sep='\t').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 showWarningOnDirectExecution = 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('') with st.form('mform', clear_on_submit=False): source = st.selectbox('Select the protein structure resource (1: PDB-SwissModel-Modbase, 2: AlphaFold)',[1,2]) #source = 1 impute = st.selectbox('Missing value imputation (mostly for the cases where the corresponding annotation does not exist in the protein)',[True, False]) input_data = st.text_input('Enter SAV data points (format: "UniProt/Swiss-Prot human protein accession" – "wild type a.a." – "position on the sequence" – "mutated a.a."). Example: Q9BTP7-S-126-F or P04217-A-493-S, Q00889-G-2-L') parser = argparse.ArgumentParser(description='ASCARIS') 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) selected_df = pd.DataFrame() st.write('The online tool may be slow, especially while processing multiple SAVs and with multiple PDB matches. To address this, please consider using the programmatic version at https://github.com/HUBioDataLab/ASCARIS/') 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() if selected_df is None: st.success('Feature vector failed.') else: if len(selected_df) != 0 : st.write(selected_df) st.success('Feature vector successfully created.') csv = convert_df(selected_df) st.download_button("Press to Download the Feature Vector", csv,f"ASCARIS_SAV_rep_{input_set}.csv","text/csv",key='download-csv') else: st.success('Feature vector failed.')