File size: 3,453 Bytes
c2a02c6
 
 
 
 
 
84bc25a
c2a02c6
 
 
 
8a2e1bf
754deb7
728e884
ec06c4b
84bc25a
754deb7
84bc25a
 
 
0d7f3a7
b68774d
9abc2e6
c2a02c6
082f385
 
 
8a2e1bf
082f385
c2a02c6
082f385
 
c2a02c6
 
 
 
38ea622
082f385
ee0298f
c241227
082f385
 
 
 
65d977a
84bc25a
65d977a
84bc25a
65d977a
9e2f96b
c8b993f
 
 
84bc25a
 
806931d
fa82089
082f385
 
8f90700
 
84bc25a
 
 
 
 
 
 
38ea622
9cffd28
84bc25a
da9bcac
 
e52de1a
d6a723e
84bc25a
e52de1a
84bc25a
e52de1a
e3df29c
05e0ac4
e52de1a
84bc25a
 
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
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


showWarningOnDirectExecution = False
original_title = '<p style="font-family:Trebuchet MS; color:#000000; font-size: 25px; font-weight:bold; text-align:center">ASCARIS</p>'
st.markdown(original_title, unsafe_allow_html=True)
original_title = '<p style="font-family:Trebuchet MS; color:#000000; font-size: 25px; font-weight:bold; text-align:center">(Annotation and StruCture-bAsed RepresentatIon of Single amino acid variations)</p>'
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: P04217-E-20-A or O43556-I-40-A,P57737-W-372-A')
            
    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('No feature vector is created. Check the log file.')

    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. Check log file.')