Skip to content

Commit c4f4313

Browse files
committed
Merge branch 'fix_merging_issues' of github.com:JeeH-K/FLASHViewer into fix_merging_issues
2 parents 5dd0b22 + 21fb32b commit c4f4313

File tree

1 file changed

+33
-7
lines changed

1 file changed

+33
-7
lines changed

pages/SequenceInput.py

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import streamlit as st
22
import re
3-
from src.common import page_setup, save_params
3+
from src.common import page_setup, save_params, v_space
44

55
fixed_mod_cysteine = ['No modification',
66
'Carbamidomethyl (+57)',
@@ -24,14 +24,29 @@ def validateSequenceInput(input_seq):
2424
pattern = re.compile("^[ac-ik-wyAC-IK-WY]+$") # only alphabet except for BJXZ
2525
if not pattern.match(seq):
2626
return False
27-
2827
return True
2928

3029

30+
def emptySequenceInput():
31+
for key in ['input_sequence', 'fixed_mod_cysteine', 'fixed_mod_methionine']:
32+
if key in st.session_state:
33+
del st.session_state[key]
34+
st.session_state['reset_sequence_input'] = True
35+
36+
3137
# page initialization
3238
params = page_setup()
3339

34-
st.title("Proteoform Sequence Input")
40+
# for resetting the form (cannot be done after form is instantiated)
41+
if 'reset_sequence_input' not in st.session_state:
42+
st.session_state['reset_sequence_input'] = False
43+
44+
# title and reset buttons
45+
c1, c2 = st.columns([8, 1])
46+
c1.title("Proteoform Sequence Input")
47+
v_space(1, c2)
48+
if c2.button('Reset'):
49+
emptySequenceInput()
3550

3651
# if any sequence was submitted before
3752
if 'input_sequence' in st.session_state and st.session_state.input_sequence \
@@ -45,6 +60,13 @@ def validateSequenceInput(input_seq):
4560
and 'selected_fixed_mod_methionine' not in st.session_state:
4661
st.session_state['selected_fixed_mod_methionine'] = st.session_state.fixed_mod_methionine
4762

63+
# clean up the entries of form, if needed
64+
if st.session_state['reset_sequence_input']:
65+
st.session_state['sequence_text'] = ''
66+
st.session_state['selected_fixed_mod_cysteine'] = 'No modification'
67+
st.session_state['selected_fixed_mod_methionine'] = 'No modification'
68+
st.session_state['reset_sequence_input'] = False
69+
4870
with st.form('sequence_input'):
4971
# sequence
5072
st.text_area('Proteoform sequence', key='sequence_text')
@@ -55,11 +77,16 @@ def validateSequenceInput(input_seq):
5577
key='selected_fixed_mod_cysteine', placeholder='No modification')
5678
c2.selectbox('Fixed modification: Methionine', fixed_mod_methionine,
5779
key='selected_fixed_mod_methionine', placeholder='No modification')
58-
_, c2 = st.columns([9, 1])
80+
_, c2 = st.columns([8, 1])
5981
submitted = c2.form_submit_button("Save")
6082
if submitted:
61-
if 'sequence_text' in st.session_state and validateSequenceInput(st.session_state['sequence_text']):
62-
st.success('Proteoform sequence is submitted')
83+
if 'input_sequence' in st.session_state: # initialize
84+
del st.session_state['input_sequence']
85+
if st.session_state['sequence_text'] == '':
86+
emptySequenceInput()
87+
st.rerun()
88+
elif validateSequenceInput(st.session_state['sequence_text']):
89+
st.success('Proteoform sequence is submitted: ' + st.session_state['sequence_text'])
6390
# save information for sequence view
6491
st.session_state['input_sequence'] = ''.join(st.session_state['sequence_text'].split()).upper()
6592

@@ -70,7 +97,6 @@ def validateSequenceInput(input_seq):
7097
if 'selected_fixed_mod_methionine' in st.session_state \
7198
and st.session_state['selected_fixed_mod_methionine'] != 'No modification':
7299
st.session_state['fixed_mod_methionine'] = st.session_state.selected_fixed_mod_methionine
73-
del st.session_state['sequence_text']
74100
else:
75101
st.error('Error: sequence input is not valid')
76102

0 commit comments

Comments
 (0)