Ryan commited on
Commit
ce0a41c
Β·
1 Parent(s): 6aa7fe7
Files changed (1) hide show
  1. app.py +123 -53
app.py CHANGED
@@ -100,27 +100,26 @@ def create_app():
100
  analysis_options, analysis_params, run_analysis_btn, analysis_output, bow_top_slider = create_analysis_screen()
101
 
102
  # Pre-create visualization components (initially hidden)
103
- with gr.Column(visible=False) as visualization_area:
104
- analysis_title = gr.Markdown("## Analysis Results")
105
- prompt_title = gr.Markdown()
106
- models_compared = gr.Markdown()
107
-
108
- # Container for model 1 words
109
- with gr.Column() as model1_words_container:
110
- model1_title = gr.Markdown()
111
- model1_words = gr.Markdown()
112
-
113
- # Container for model 2 words
114
- with gr.Column() as model2_words_container:
115
- model2_title = gr.Markdown()
116
- model2_words = gr.Markdown()
117
-
118
- # Similarity metrics
119
- similarity_metrics_title = gr.Markdown("### Similarity Metrics")
120
- similarity_metrics = gr.Markdown()
121
-
122
- # Status or error message area
123
- status_message = gr.Markdown(visible=False)
124
 
125
  # Define a helper function to extract parameter values and run the analysis
126
  def run_analysis(dataset, selected_analyses, bow_top):
@@ -129,16 +128,18 @@ def create_app():
129
  return (
130
  {}, # analysis_results_state
131
  False, # analysis_output visibility
132
- False, # visualization_area visibility
133
- "", # prompt_title
134
- "", # models_compared
135
- "", # model1_title
136
- "", # model1_words
137
- "", # model2_title
138
- "", # model2_words
139
- "", # similarity_metrics
140
- True, # status_message visibility
141
- "❌ **Error:** No dataset loaded. Please create or load a dataset first." # status_message
 
 
142
  )
143
 
144
  parameters = {
@@ -155,9 +156,17 @@ def create_app():
155
  analysis_results,
156
  False,
157
  False,
158
- "", "", "", "", "", "", "",
 
 
 
 
 
 
 
 
159
  True,
160
- "❌ **No results found.** Try different analysis options."
161
  )
162
 
163
  # Extract information to display in components
@@ -169,9 +178,17 @@ def create_app():
169
  analysis_results,
170
  False,
171
  False,
172
- "", "", "", "", "", "", "",
 
 
 
 
 
 
 
 
173
  True,
174
- "❌ **No Bag of Words analysis found.** Make sure to select it in the options."
175
  )
176
 
177
  bow_results = analyses["bag_of_words"]
@@ -182,9 +199,17 @@ def create_app():
182
  analysis_results,
183
  False,
184
  False,
185
- "", "", "", "", "", "", "",
 
 
 
 
 
 
 
 
186
  True,
187
- "❌ **Not enough models to compare.** Please ensure you have two model responses."
188
  )
189
 
190
  # Extract and format information for display
@@ -225,16 +250,18 @@ def create_app():
225
  return (
226
  analysis_results, # analysis_results_state
227
  False, # analysis_output visibility
228
- True, # visualization_area visibility
229
- f"## Analysis of Prompt: \"{prompt[:100]}...\"", # prompt_title
230
- f"### Comparing responses from {model1_name} and {model2_name}", # models_compared
231
- f"#### Top Words Used by {model1_name}", # model1_title
232
- model1_words_text, # model1_words
233
- f"#### Top Words Used by {model2_name}", # model2_title
234
- model2_words_text, # model2_words
235
- similarity_text, # similarity_metrics
236
- False, # status_message visibility
237
- "" # status_message
 
 
238
  )
239
 
240
  except Exception as e:
@@ -245,12 +272,53 @@ def create_app():
245
  return (
246
  {"error": error_msg}, # analysis_results_state
247
  True, # analysis_output visibility (show raw JSON for debugging)
248
- False, # visualization_area visibility
249
- "", "", "", "", "", "", "",
250
- True, # status_message visibility
251
- f"❌ **Error during analysis:**\n\n```\n{str(e)}\n```" # status_message
 
 
 
 
 
 
 
 
252
  )
253
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
254
  # Run analysis with proper parameters
255
  run_analysis_btn.click(
256
  fn=run_analysis,
@@ -258,15 +326,17 @@ def create_app():
258
  outputs=[
259
  analysis_results_state,
260
  analysis_output,
261
- visualization_area,
 
262
  prompt_title,
263
  models_compared,
264
  model1_title,
265
  model1_words,
266
  model2_title,
267
  model2_words,
 
268
  similarity_metrics,
269
- status_message,
270
  status_message
271
  ]
272
  )
 
100
  analysis_options, analysis_params, run_analysis_btn, analysis_output, bow_top_slider = create_analysis_screen()
101
 
102
  # Pre-create visualization components (initially hidden)
103
+ visualization_area_visible = gr.Checkbox(value=False, visible=False, label="Visualization Visible")
104
+ analysis_title = gr.Markdown("## Analysis Results", visible=False)
105
+ prompt_title = gr.Markdown(visible=False)
106
+ models_compared = gr.Markdown(visible=False)
107
+
108
+ # Container for model 1 words
109
+ model1_title = gr.Markdown(visible=False)
110
+ model1_words = gr.Markdown(visible=False)
111
+
112
+ # Container for model 2 words
113
+ model2_title = gr.Markdown(visible=False)
114
+ model2_words = gr.Markdown(visible=False)
115
+
116
+ # Similarity metrics
117
+ similarity_metrics_title = gr.Markdown("### Similarity Metrics", visible=False)
118
+ similarity_metrics = gr.Markdown(visible=False)
119
+
120
+ # Status or error message area
121
+ status_message_visible = gr.Checkbox(value=False, visible=False, label="Status Message Visible")
122
+ status_message = gr.Markdown(visible=False)
 
123
 
124
  # Define a helper function to extract parameter values and run the analysis
125
  def run_analysis(dataset, selected_analyses, bow_top):
 
128
  return (
129
  {}, # analysis_results_state
130
  False, # analysis_output visibility
131
+ False, # visualization_area_visible
132
+ gr.update(visible=False), # analysis_title
133
+ gr.update(visible=False), # prompt_title
134
+ gr.update(visible=False), # models_compared
135
+ gr.update(visible=False), # model1_title
136
+ gr.update(visible=False), # model1_words
137
+ gr.update(visible=False), # model2_title
138
+ gr.update(visible=False), # model2_words
139
+ gr.update(visible=False), # similarity_metrics_title
140
+ gr.update(visible=False), # similarity_metrics
141
+ True, # status_message_visible
142
+ gr.update(visible=True, value="❌ **Error:** No dataset loaded. Please create or load a dataset first.") # status_message
143
  )
144
 
145
  parameters = {
 
156
  analysis_results,
157
  False,
158
  False,
159
+ gr.update(visible=False),
160
+ gr.update(visible=False),
161
+ gr.update(visible=False),
162
+ gr.update(visible=False),
163
+ gr.update(visible=False),
164
+ gr.update(visible=False),
165
+ gr.update(visible=False),
166
+ gr.update(visible=False),
167
+ gr.update(visible=False),
168
  True,
169
+ gr.update(visible=True, value="❌ **No results found.** Try different analysis options.")
170
  )
171
 
172
  # Extract information to display in components
 
178
  analysis_results,
179
  False,
180
  False,
181
+ gr.update(visible=False),
182
+ gr.update(visible=False),
183
+ gr.update(visible=False),
184
+ gr.update(visible=False),
185
+ gr.update(visible=False),
186
+ gr.update(visible=False),
187
+ gr.update(visible=False),
188
+ gr.update(visible=False),
189
+ gr.update(visible=False),
190
  True,
191
+ gr.update(visible=True, value="❌ **No Bag of Words analysis found.** Make sure to select it in the options.")
192
  )
193
 
194
  bow_results = analyses["bag_of_words"]
 
199
  analysis_results,
200
  False,
201
  False,
202
+ gr.update(visible=False),
203
+ gr.update(visible=False),
204
+ gr.update(visible=False),
205
+ gr.update(visible=False),
206
+ gr.update(visible=False),
207
+ gr.update(visible=False),
208
+ gr.update(visible=False),
209
+ gr.update(visible=False),
210
+ gr.update(visible=False),
211
  True,
212
+ gr.update(visible=True, value="❌ **Not enough models to compare.** Please ensure you have two model responses.")
213
  )
214
 
215
  # Extract and format information for display
 
250
  return (
251
  analysis_results, # analysis_results_state
252
  False, # analysis_output visibility
253
+ True, # visualization_area_visible
254
+ gr.update(visible=True), # analysis_title
255
+ gr.update(visible=True, value=f"## Analysis of Prompt: \"{prompt[:100]}...\""), # prompt_title
256
+ gr.update(visible=True, value=f"### Comparing responses from {model1_name} and {model2_name}"), # models_compared
257
+ gr.update(visible=True, value=f"#### Top Words Used by {model1_name}"), # model1_title
258
+ gr.update(visible=True, value=model1_words_text), # model1_words
259
+ gr.update(visible=True, value=f"#### Top Words Used by {model2_name}"), # model2_title
260
+ gr.update(visible=True, value=model2_words_text), # model2_words
261
+ gr.update(visible=True), # similarity_metrics_title
262
+ gr.update(visible=True, value=similarity_text), # similarity_metrics
263
+ False, # status_message_visible
264
+ gr.update(visible=False) # status_message
265
  )
266
 
267
  except Exception as e:
 
272
  return (
273
  {"error": error_msg}, # analysis_results_state
274
  True, # analysis_output visibility (show raw JSON for debugging)
275
+ False, # visualization_area_visible
276
+ gr.update(visible=False),
277
+ gr.update(visible=False),
278
+ gr.update(visible=False),
279
+ gr.update(visible=False),
280
+ gr.update(visible=False),
281
+ gr.update(visible=False),
282
+ gr.update(visible=False),
283
+ gr.update(visible=False),
284
+ gr.update(visible=False),
285
+ True, # status_message_visible
286
+ gr.update(visible=True, value=f"❌ **Error during analysis:**\n\n```\n{str(e)}\n```") # status_message
287
  )
288
 
289
+ # Function to update visibility based on checkbox state
290
+ def update_visibility(viz_visible, status_visible):
291
+ return [
292
+ gr.update(visible=viz_visible), # analysis_title
293
+ gr.update(visible=viz_visible), # prompt_title
294
+ gr.update(visible=viz_visible), # models_compared
295
+ gr.update(visible=viz_visible), # model1_title
296
+ gr.update(visible=viz_visible), # model1_words
297
+ gr.update(visible=viz_visible), # model2_title
298
+ gr.update(visible=viz_visible), # model2_words
299
+ gr.update(visible=viz_visible), # similarity_metrics_title
300
+ gr.update(visible=viz_visible), # similarity_metrics
301
+ gr.update(visible=status_visible) # status_message
302
+ ]
303
+
304
+ # Connect visibility checkboxes to update function
305
+ visualization_area_visible.change(
306
+ fn=update_visibility,
307
+ inputs=[visualization_area_visible, status_message_visible],
308
+ outputs=[
309
+ analysis_title,
310
+ prompt_title,
311
+ models_compared,
312
+ model1_title,
313
+ model1_words,
314
+ model2_title,
315
+ model2_words,
316
+ similarity_metrics_title,
317
+ similarity_metrics,
318
+ status_message
319
+ ]
320
+ )
321
+
322
  # Run analysis with proper parameters
323
  run_analysis_btn.click(
324
  fn=run_analysis,
 
326
  outputs=[
327
  analysis_results_state,
328
  analysis_output,
329
+ visualization_area_visible,
330
+ analysis_title,
331
  prompt_title,
332
  models_compared,
333
  model1_title,
334
  model1_words,
335
  model2_title,
336
  model2_words,
337
+ similarity_metrics_title,
338
  similarity_metrics,
339
+ status_message_visible,
340
  status_message
341
  ]
342
  )