File size: 3,736 Bytes
c2a02c6
 
 
 
 
 
 
 
 
 
 
8a2e1bf
c2a02c6
c8b993f
 
 
0d7f3a7
 
 
9e2f96b
0d7f3a7
c2a02c6
8a2e1bf
 
 
c2a02c6
8a2e1bf
c2a02c6
 
 
 
 
e5bafbe
744531f
43efedb
 
 
 
 
 
 
c2a02c6
b27ef4c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9e2f96b
c8b993f
 
 
 
806931d
c8b993f
 
7da329c
c8b993f
7da329c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
efb78a7
a0f4539
 
 
 
 
 
281885a
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
85
86
87
88
89
90
91
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


    
# Check if 'key' already exists in session_state
# If not, then initialize it
if 'visibility' not in st.session_state:
    st.session_state['visibility'] = 'hidden'
    st.session_state.disabled = False

original_title = '<p style="font-family:Trebuchet MS; color:#FD7456; 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:#FD7456; 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('')

selected_df = pd.DataFrame()
with st.form('mform', clear_on_submit=False):
    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)', "P13637-T-613-M, Q9Y4W6-N-432-T",label_visibility=st.session_state.visibility,
            disabled=st.session_state.disabled,
            placeholder=st.session_state.visibility,
            )
    

    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 idenfiers (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()
    
                st.write(selected_df)
            except:
                selected_df = pd.DataFrame()
                pass
        st.success('Feature vector successfully created.')

def convert_df(df):
   return df.to_csv(index=False).encode('utf-8')


csv = convert_df(selected_df)

st.download_button("Press to Download the Feature Vector", csv,"ASCARIS_SAV_rep.csv","text/csv",key='download-csv')