astirn commited on
Commit
97f8ff7
·
1 Parent(s): 1a609dc
Files changed (1) hide show
  1. app.py +46 -20
app.py CHANGED
@@ -11,6 +11,7 @@ ENTRY_METHODS = dict(
11
  DOCUMENTATION = st.container()
12
  MODE_SELECTION = st.container()
13
  TRANSCRIPT_ENTRY = st.container()
 
14
  RESULTS = st.container()
15
 
16
 
@@ -90,12 +91,18 @@ if __name__ == '__main__':
90
  if 'mode' not in st.session_state:
91
  st.session_state.mode = tiger.RUN_MODES['all']
92
  st.session_state.disable_off_target_checkbox = True
 
 
93
  if 'entry_method' not in st.session_state:
94
  st.session_state.entry_method = ENTRY_METHODS['manual']
95
  st.session_state.manual_entry_disabled = False
96
  st.session_state.fasta_entry_disabled = True
97
  if 'run' not in st.session_state:
98
  st.session_state.run = False
 
 
 
 
99
 
100
  # title and documentation
101
  with DOCUMENTATION:
@@ -139,31 +146,50 @@ if __name__ == '__main__':
139
  )
140
  st.button(label='Get predictions!', on_click=process_input)
141
 
142
- with RESULTS:
 
143
  if st.session_state.run:
144
  st.session_state.run = False
145
- on_target, off_target = tiger.tiger_exhibit(
 
 
 
 
146
  transcripts=st.session_state.transcripts,
147
  mode={v: k for k, v in tiger.RUN_MODES.items()}[st.session_state.mode],
148
  status=st.empty(),
149
  progress_bar=st.progress(0),
150
- check_off_targets=st.session_state.check_off_targets
151
  )
 
152
 
153
- # # valid input
154
- # if src_seq and all([True if nt.upper() in NUCLEOTIDE_TOKENS.keys() else False for nt in src_seq]):
155
- # on_target, off_target = tiger_exhibit(pd.DataFrame(dict(id=['ManualEntry'], seq=[src_seq])),
156
- # status_bar, status_text, check_off_targets=option == 'On and Off Target')
157
- # on_target.rename(columns={'Guide': '23 nt guide sequence'}, inplace=True)
158
- # if len(on_target) > 0:
159
- # if on_target.iloc[0]['On-target ID'] == 0:
160
- # on_target.drop(['On-target ID'], axis=1, inplace=True)
161
- # st.write('On-target predictions: ', on_target)
162
- # st.download_button(label='Download', data=convert_df(on_target), file_name='on_target.csv', mime='text/csv')
163
- # if option == 'On and Off Target' and len(off_target) > 0:
164
- # off_target.rename(columns={'Guide': '23 nt guide sequence'}, inplace=True)
165
- # st.write('Off-target predictions: ', off_target)
166
- # st.download_button(label='Download', data=convert_df(off_target), file_name='off_target.csv', mime='text/csv')
167
- # elif option == 'On and Off Target' and len(off_target) == 0:
168
- # st.write('We did not find any off-target effects!')
169
- #
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  DOCUMENTATION = st.container()
12
  MODE_SELECTION = st.container()
13
  TRANSCRIPT_ENTRY = st.container()
14
+ RUNTIME = st.container()
15
  RESULTS = st.container()
16
 
17
 
 
91
  if 'mode' not in st.session_state:
92
  st.session_state.mode = tiger.RUN_MODES['all']
93
  st.session_state.disable_off_target_checkbox = True
94
+ if 'off_targets_checked' not in st.session_state:
95
+ st.session_state.off_targets_checked = False
96
  if 'entry_method' not in st.session_state:
97
  st.session_state.entry_method = ENTRY_METHODS['manual']
98
  st.session_state.manual_entry_disabled = False
99
  st.session_state.fasta_entry_disabled = True
100
  if 'run' not in st.session_state:
101
  st.session_state.run = False
102
+ if 'results_ready' not in st.session_state:
103
+ st.session_state.results_ready = False
104
+ st.session_state.on_target = pd.DataFrame()
105
+ st.session_state.off_target = pd.DataFrame()
106
 
107
  # title and documentation
108
  with DOCUMENTATION:
 
146
  )
147
  st.button(label='Get predictions!', on_click=process_input)
148
 
149
+ with RUNTIME:
150
+ # check and clear run signal and existing results
151
  if st.session_state.run:
152
  st.session_state.run = False
153
+ st.session_state.results_ready = False
154
+
155
+ # run model and signal results are ready
156
+ st.session_state.off_targets_checked = st.session_state.check_off_targets
157
+ st.session_state.on_target, st.session_state.off_target = tiger.tiger_exhibit(
158
  transcripts=st.session_state.transcripts,
159
  mode={v: k for k, v in tiger.RUN_MODES.items()}[st.session_state.mode],
160
  status=st.empty(),
161
  progress_bar=st.progress(0),
162
+ check_off_targets=st.session_state.off_targets_checked
163
  )
164
+ st.session_state.results_ready = True
165
 
166
+ with RESULTS:
167
+ on_target_results = st.empty()
168
+ off_target_results = st.empty()
169
+
170
+ # display results if they are ready
171
+ if st.session_state.results_ready:
172
+ with on_target_results:
173
+ st.write('On-target predictions:', st.session_state.on_target)
174
+ st.download_button(
175
+ label='Download on-target predictions',
176
+ data=convert_df(st.session_state.on_target),
177
+ file_name='on_target.csv',
178
+ mime='text/csv'
179
+ )
180
+ with off_target_results:
181
+ if st.session_state.off_targets_checked and len(st.session_state.off_target) > 0:
182
+ st.write('Off-target predictions:', st.session_state.off_target)
183
+ st.download_button(
184
+ label='Download off-target predictions',
185
+ data=convert_df(st.session_state.off_target),
186
+ file_name='off_target.csv',
187
+ mime='text/csv'
188
+ )
189
+ elif st.session_state.off_targets_checked and len(st.session_state.off_target) == 0:
190
+ st.write('We did not find any off-target effects!')
191
+
192
+ # otherwise, clear our results
193
+ else:
194
+ on_target_results.empty()
195
+ off_target_results.empty()