wenjiao commited on
Commit
a5a780f
1 Parent(s): 43abc83

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +42 -13
app.py CHANGED
@@ -3,6 +3,7 @@ os.system("pip install gradio==4.31.5 pydantic==2.7.1 gradio_modal==0.0.3")
3
 
4
  import gradio as gr
5
  import pandas as pd
 
6
  from apscheduler.schedulers.background import BackgroundScheduler
7
  from huggingface_hub import snapshot_download
8
  from gradio_space_ci import enable_space_ci
@@ -49,6 +50,7 @@ from gradio_modal import Modal
49
  import plotly.graph_objects as go
50
 
51
  selected_indices = []
 
52
 
53
  # Start ephemeral Spaces on PRs (see config in README.md)
54
  #enable_space_ci()
@@ -111,6 +113,7 @@ def restart_space():
111
 
112
 
113
  def init_space(full_init: bool = True):
 
114
  if full_init:
115
  try:
116
  branch = REPO.active_branch.name
@@ -284,19 +287,44 @@ def filter_models(
284
 
285
  def select(df, data: gr.SelectData):
286
  global selected_indices
287
- selected_index = data.index[0]
288
 
 
289
  if selected_index in selected_indices:
290
- selected_indices.remove(selected_index)
 
 
 
 
 
 
 
 
291
  else:
292
- selected_indices.append(selected_index)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
293
 
294
  fig = go.Figure()
295
- for i in selected_indices:
296
- row = df.iloc[i, :]
297
  fig.add_trace(go.Scatterpolar(
298
  r=[row['Average ⬆️'], row['ARC-c'], row['ARC-e'], row['Boolq'], row['HellaSwag'], row['Lambada'], row['MMLU'], row['Openbookqa'], row['Piqa'], row['Truthfulqa'], row['Winogrande']],
299
- theta=['Average ⬆️', 'ARC-c', 'ARC-e', 'Boolq', 'HellaSwag', 'Lambada', 'MMLU', 'Openbookqa', 'Piqa', 'Truthfulqa', 'Winogrande',],
300
  fill='toself',
301
  name=str(row['Model'])
302
  ))
@@ -308,7 +336,6 @@ def select(df, data: gr.SelectData):
308
  showlegend=True
309
  )
310
 
311
-
312
  return fig
313
 
314
  leaderboard_df = filter_models(
@@ -396,7 +423,11 @@ with demo:
396
  filter_columns_weightDtype = gr.Dropdown(choices=[i.value.name for i in WeightDtype], label="Weight Dtype", multiselect=False, value="All", interactive=True,)
397
  filter_columns_doubleQuant = gr.Dropdown(choices=["True", "False"], label="Double Quant", multiselect=False, value="False", interactive=True)
398
  filter_columns_groupDtype = gr.Dropdown(choices=[i.value.name for i in GroupDtype], label="Group Size", multiselect=False, value="All", interactive=True,)
399
- big_block = gr.HTML("""<h2 style='text-align:center; padding:1.5rem 0; width: 100%; background-color: pink;'>Display Visualization Upon Clicking Table</h2>""")
 
 
 
 
400
 
401
  leaderboard_table = gr.components.Dataframe(
402
  value=leaderboard_df[
@@ -415,8 +446,9 @@ with demo:
415
  with Modal(visible=False) as modal:
416
  map = gr.Plot()
417
 
418
- leaderboard_table.select(select, leaderboard_table, map)
419
- leaderboard_table.select(lambda: Modal(visible=True), None, modal)
 
420
 
421
  # Dummy leaderboard for handling the case when the user uses backspace key
422
  hidden_leaderboard_table_for_search = gr.components.Dataframe(
@@ -455,9 +487,7 @@ with demo:
455
  )
456
 
457
  """
458
-
459
 
460
-
461
  # Define a hidden component that will trigger a reload only if a query parameter has been set
462
  hidden_search_bar = gr.Textbox(value="", visible=False)
463
  hidden_search_bar.change(
@@ -473,7 +503,6 @@ with demo:
473
  ],
474
  leaderboard_table,
475
  )
476
-
477
  # Check query parameter once at startup and update search bar + hidden component
478
  demo.load(load_query, inputs=[], outputs=[search_bar, hidden_search_bar])
479
 
 
3
 
4
  import gradio as gr
5
  import pandas as pd
6
+ import re
7
  from apscheduler.schedulers.background import BackgroundScheduler
8
  from huggingface_hub import snapshot_download
9
  from gradio_space_ci import enable_space_ci
 
50
  import plotly.graph_objects as go
51
 
52
  selected_indices = []
53
+ selected_values = {}
54
 
55
  # Start ephemeral Spaces on PRs (see config in README.md)
56
  #enable_space_ci()
 
113
 
114
 
115
  def init_space(full_init: bool = True):
116
+
117
  if full_init:
118
  try:
119
  branch = REPO.active_branch.name
 
287
 
288
  def select(df, data: gr.SelectData):
289
  global selected_indices
290
+ global selected_values
291
 
292
+ selected_index = data.index[0]
293
  if selected_index in selected_indices:
294
+ selected_indices.remove(selected_index)
295
+
296
+ value = df.iloc[selected_index].iloc[1]
297
+ pattern = r'<a[^>]+>([^<]+)</a>'
298
+ match = re.search(pattern, value)
299
+ if match:
300
+ text_content = match.group(1)
301
+ if text_content in selected_values:
302
+ del selected_values[text_content]
303
  else:
304
+ selected_indices.append(selected_index)
305
+
306
+ value = df.iloc[selected_index].iloc[1]
307
+ pattern = r'<a[^>]+>([^<]+)</a>'
308
+ match = re.search(pattern, value)
309
+ if match:
310
+ text_content = match.group(1)
311
+ selected_values[text_content] = value
312
+
313
+ print('selected_values', selected_values, selected_indices)
314
+ return gr.CheckboxGroup(list(selected_values.keys()))
315
+
316
+ def generate_spider_chart(df, selected_keys):
317
+ global selected_values
318
+ print('generate_spider_chart', selected_values, selected_keys)
319
+ current_selected_values = [selected_values[key] for key in selected_keys if key in selected_values]
320
+ selected_rows = df[df.iloc[:, 1].isin(current_selected_values)]
321
+
322
 
323
  fig = go.Figure()
324
+ for _, row in selected_rows.iterrows():
 
325
  fig.add_trace(go.Scatterpolar(
326
  r=[row['Average ⬆️'], row['ARC-c'], row['ARC-e'], row['Boolq'], row['HellaSwag'], row['Lambada'], row['MMLU'], row['Openbookqa'], row['Piqa'], row['Truthfulqa'], row['Winogrande']],
327
+ theta=['Average ⬆️', 'ARC-c', 'ARC-e', 'Boolq', 'HellaSwag', 'Lambada', 'MMLU', 'Openbookqa', 'Piqa', 'Truthfulqa', 'Winogrande'],
328
  fill='toself',
329
  name=str(row['Model'])
330
  ))
 
336
  showlegend=True
337
  )
338
 
 
339
  return fig
340
 
341
  leaderboard_df = filter_models(
 
423
  filter_columns_weightDtype = gr.Dropdown(choices=[i.value.name for i in WeightDtype], label="Weight Dtype", multiselect=False, value="All", interactive=True,)
424
  filter_columns_doubleQuant = gr.Dropdown(choices=["True", "False"], label="Double Quant", multiselect=False, value="False", interactive=True)
425
  filter_columns_groupDtype = gr.Dropdown(choices=[i.value.name for i in GroupDtype], label="Group Size", multiselect=False, value="All", interactive=True,)
426
+
427
+ with gr.Row():
428
+ model_comparison = gr.CheckboxGroup(label="Spider Chart Model Comparison(Select a model from the table)", choices=list(selected_values.keys()), value=[], interactive=True, elem_id="model_comparison")
429
+ with gr.Row():
430
+ spider_btn = gr.Button("Model Comparison")
431
 
432
  leaderboard_table = gr.components.Dataframe(
433
  value=leaderboard_df[
 
446
  with Modal(visible=False) as modal:
447
  map = gr.Plot()
448
 
449
+ leaderboard_table.select(select, leaderboard_table, model_comparison)
450
+ spider_btn.click(generate_spider_chart, [leaderboard_table, model_comparison], map)
451
+ spider_btn.click(lambda: Modal(visible=True), None, modal)
452
 
453
  # Dummy leaderboard for handling the case when the user uses backspace key
454
  hidden_leaderboard_table_for_search = gr.components.Dataframe(
 
487
  )
488
 
489
  """
 
490
 
 
491
  # Define a hidden component that will trigger a reload only if a query parameter has been set
492
  hidden_search_bar = gr.Textbox(value="", visible=False)
493
  hidden_search_bar.change(
 
503
  ],
504
  leaderboard_table,
505
  )
 
506
  # Check query parameter once at startup and update search bar + hidden component
507
  demo.load(load_query, inputs=[], outputs=[search_bar, hidden_search_bar])
508