evijit HF staff commited on
Commit
3064620
1 Parent(s): e0bc7e2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +73 -86
app.py CHANGED
@@ -431,7 +431,9 @@ with gr.Column(visible=True) as leaderboard_tab:
431
 
432
  def create_category_chart(selected_models, selected_categories):
433
  if not selected_models:
434
- return px.bar(title='Please select at least one model for comparison')
 
 
435
 
436
  # Sort categories before processing
437
  selected_categories = sort_categories(selected_categories)
@@ -453,17 +455,19 @@ def create_category_chart(selected_models, selected_categories):
453
  data.append({
454
  'Model': model,
455
  'Category': category,
456
- 'Score Percentage': score_percentage
457
  })
458
 
459
  df = pd.DataFrame(data)
460
  if df.empty:
461
- return px.bar(title='No data available for the selected models and categories')
 
 
 
 
 
462
 
463
- fig = px.bar(df, x='Model', y='Score Percentage', color='Category',
464
- title='AI Model Scores by Category',
465
- labels={'Score Percentage': 'Score Percentage'},
466
- category_orders={"Category": selected_categories})
467
  return fig
468
 
469
  def update_detailed_scorecard(model, selected_categories):
@@ -1238,111 +1242,94 @@ with gr.Blocks(css=css) as demo:
1238
  interactive=True,
1239
  visible=False,
1240
  info="Select one or more models")
1241
-
1242
  # Category filter now visible for all tabs
1243
  category_filter = gr.CheckboxGroup(choices=category_choices,
1244
  label="Filter Categories",
1245
  value=category_choices)
1246
 
1247
  with gr.Column(visible=True) as leaderboard_tab:
 
 
1248
  leaderboard_output = gr.DataFrame(
1249
- value=create_leaderboard(category_filter.value), # Initialize with all categories selected
1250
  interactive=False,
1251
  wrap=True
1252
- )
1253
 
1254
  with gr.Column(visible=False) as category_analysis_tab:
1255
- category_chart = gr.Plot()
 
 
1256
 
1257
  with gr.Column(visible=False) as detailed_scorecard_tab:
1258
  model_metadata = gr.HTML()
1259
  all_category_cards = gr.HTML()
1260
  total_score = gr.Markdown()
1261
 
1262
- # Initialize the dashboard
1263
- def init_leaderboard():
1264
- df = create_leaderboard(category_filter.value)
1265
- return df
1266
-
1267
- leaderboard_output.value = init_leaderboard()
1268
-
1269
- # Update handlers
1270
  def update_dashboard(tab, selected_models, selected_model, selected_categories):
1271
- leaderboard_visibility = gr.update(visible=False)
1272
- category_chart_visibility = gr.update(visible=False)
1273
- detailed_scorecard_visibility = gr.update(visible=False)
1274
- model_chooser_visibility = gr.update(visible=False)
1275
- model_multi_chooser_visibility = gr.update(visible=False)
1276
-
1277
- if tab == "Leaderboard":
1278
- leaderboard_visibility = gr.update(visible=True)
1279
- df = create_leaderboard(selected_categories)
1280
- return [leaderboard_visibility, category_chart_visibility, detailed_scorecard_visibility,
1281
- model_chooser_visibility, model_multi_chooser_visibility,
1282
- gr.update(value=df), gr.update(), gr.update(), gr.update(), gr.update()]
1283
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1284
 
1285
  elif tab == "Category Analysis":
1286
- category_chart_visibility = gr.update(visible=True)
1287
- model_multi_chooser_visibility = gr.update(visible=True)
1288
- category_filter_visibility = gr.update(visible=True)
1289
- category_plot = create_category_chart(selected_models or [], selected_categories)
1290
- return [leaderboard_visibility, category_chart_visibility, detailed_scorecard_visibility,
1291
- model_chooser_visibility, model_multi_chooser_visibility, category_filter_visibility,
1292
- None, gr.update(value=category_plot), gr.update(), gr.update(), gr.update()]
1293
-
1294
  elif tab == "Detailed Scorecard":
1295
- detailed_scorecard_visibility = gr.update(visible=True)
1296
- model_chooser_visibility = gr.update(visible=True)
1297
- category_filter_visibility = gr.update(visible=True)
1298
  if selected_model:
1299
  scorecard_updates = update_detailed_scorecard(selected_model, selected_categories)
1300
- else:
1301
- scorecard_updates = [
1302
- gr.update(value="Please select a model to view details.", visible=True),
1303
- gr.update(visible=False),
1304
- gr.update(visible=False)
1305
- ]
1306
- return [leaderboard_visibility, category_chart_visibility, detailed_scorecard_visibility,
1307
- model_chooser_visibility, model_multi_chooser_visibility, category_filter_visibility,
1308
- None, None] + scorecard_updates
 
 
 
 
 
 
 
 
1309
 
1310
  # Set up event handlers
1311
- tab_selection.change(
1312
- fn=update_dashboard,
1313
- inputs=[tab_selection, model_multi_chooser, model_chooser, category_filter],
1314
- outputs=[leaderboard_tab, category_analysis_tab, detailed_scorecard_tab,
1315
- model_chooser, model_multi_chooser,
1316
- leaderboard_output, category_chart, model_metadata,
1317
- all_category_cards, total_score]
1318
- )
1319
-
1320
- model_chooser.change(
1321
- fn=update_dashboard,
1322
- inputs=[tab_selection, model_multi_chooser, model_chooser, category_filter],
1323
- outputs=[leaderboard_tab, category_analysis_tab, detailed_scorecard_tab,
1324
- model_chooser, model_multi_chooser, category_filter,
1325
- leaderboard_output, category_chart, model_metadata,
1326
- all_category_cards, total_score]
1327
- )
1328
-
1329
- model_multi_chooser.change(
1330
- fn=update_dashboard,
1331
- inputs=[tab_selection, model_multi_chooser, model_chooser, category_filter],
1332
- outputs=[leaderboard_tab, category_analysis_tab, detailed_scorecard_tab,
1333
- model_chooser, model_multi_chooser, category_filter,
1334
- leaderboard_output, category_chart, model_metadata,
1335
- all_category_cards, total_score]
1336
- )
1337
-
1338
- category_filter.change(
1339
- fn=update_dashboard,
1340
- inputs=[tab_selection, model_multi_chooser, model_chooser, category_filter],
1341
- outputs=[leaderboard_tab, category_analysis_tab, detailed_scorecard_tab,
1342
- model_chooser, model_multi_chooser,
1343
- leaderboard_output, category_chart, model_metadata,
1344
- all_category_cards, total_score]
1345
- )
1346
 
1347
  # Launch the app
1348
  if __name__ == "__main__":
 
431
 
432
  def create_category_chart(selected_models, selected_categories):
433
  if not selected_models:
434
+ fig = px.bar(title='Please select at least one model for comparison')
435
+ fig.update_layout(showlegend=True) # Ensure legend remains visible
436
+ return fig
437
 
438
  # Sort categories before processing
439
  selected_categories = sort_categories(selected_categories)
 
455
  data.append({
456
  'Model': model,
457
  'Category': category,
458
+ 'Completion Rate': score_percentage
459
  })
460
 
461
  df = pd.DataFrame(data)
462
  if df.empty:
463
+ fig = px.bar(title='No data available for the selected models and categories')
464
+ else:
465
+ fig = px.bar(df, x='Model', y='Completion Rate', color='Category',
466
+ title='AI Model Evaluation Completion Rates by Category',
467
+ labels={'Completion Rate': 'Completion Rate (%)'},
468
+ category_orders={"Category": selected_categories})
469
 
470
+ fig.update_layout(showlegend=True) # Ensure legend remains visible
 
 
 
471
  return fig
472
 
473
  def update_detailed_scorecard(model, selected_categories):
 
1242
  interactive=True,
1243
  visible=False,
1244
  info="Select one or more models")
1245
+
1246
  # Category filter now visible for all tabs
1247
  category_filter = gr.CheckboxGroup(choices=category_choices,
1248
  label="Filter Categories",
1249
  value=category_choices)
1250
 
1251
  with gr.Column(visible=True) as leaderboard_tab:
1252
+ # Initialize with data
1253
+ initial_df = create_leaderboard(category_choices)
1254
  leaderboard_output = gr.DataFrame(
1255
+ value=initial_df,
1256
  interactive=False,
1257
  wrap=True
1258
+ )
1259
 
1260
  with gr.Column(visible=False) as category_analysis_tab:
1261
+ # Initialize with empty plot
1262
+ initial_plot = create_category_chart([], category_choices)
1263
+ category_chart = gr.Plot(value=initial_plot)
1264
 
1265
  with gr.Column(visible=False) as detailed_scorecard_tab:
1266
  model_metadata = gr.HTML()
1267
  all_category_cards = gr.HTML()
1268
  total_score = gr.Markdown()
1269
 
 
 
 
 
 
 
 
 
1270
  def update_dashboard(tab, selected_models, selected_model, selected_categories):
1271
+ # Default visibility states
1272
+ component_states = {
1273
+ "leaderboard": False,
1274
+ "category_chart": False,
1275
+ "detailed_scorecard": False,
1276
+ "model_chooser": False,
1277
+ "model_multi_chooser": False
1278
+ }
 
 
 
 
1279
 
1280
+ # Initialize outputs with None
1281
+ outputs = {
1282
+ "leaderboard": None,
1283
+ "category_chart": None,
1284
+ "model_metadata": None,
1285
+ "category_cards": None,
1286
+ "total_score": None
1287
+ }
1288
+
1289
+ # Update visibility based on selected tab
1290
+ if tab == "Leaderboard":
1291
+ component_states["leaderboard"] = True
1292
+ outputs["leaderboard"] = create_leaderboard(selected_categories)
1293
 
1294
  elif tab == "Category Analysis":
1295
+ component_states["category_chart"] = True
1296
+ component_states["model_multi_chooser"] = True
1297
+ if selected_models: # Only update chart if models are selected
1298
+ outputs["category_chart"] = create_category_chart(selected_models, selected_categories)
1299
+
 
 
 
1300
  elif tab == "Detailed Scorecard":
1301
+ component_states["detailed_scorecard"] = True
1302
+ component_states["model_chooser"] = True
 
1303
  if selected_model:
1304
  scorecard_updates = update_detailed_scorecard(selected_model, selected_categories)
1305
+ outputs["model_metadata"] = scorecard_updates[0]
1306
+ outputs["category_cards"] = scorecard_updates[1]
1307
+ outputs["total_score"] = scorecard_updates[2]
1308
+
1309
+ # Return updates in the correct order
1310
+ return [
1311
+ gr.update(visible=component_states["leaderboard"]),
1312
+ gr.update(visible=component_states["category_chart"]),
1313
+ gr.update(visible=component_states["detailed_scorecard"]),
1314
+ gr.update(visible=component_states["model_chooser"]),
1315
+ gr.update(visible=component_states["model_multi_chooser"]),
1316
+ outputs["leaderboard"] if outputs["leaderboard"] is not None else gr.update(),
1317
+ outputs["category_chart"] if outputs["category_chart"] is not None else gr.update(),
1318
+ outputs["model_metadata"] if outputs["model_metadata"] is not None else gr.update(),
1319
+ outputs["category_cards"] if outputs["category_cards"] is not None else gr.update(),
1320
+ outputs["total_score"] if outputs["total_score"] is not None else gr.update()
1321
+ ]
1322
 
1323
  # Set up event handlers
1324
+ for component in [tab_selection, model_chooser, model_multi_chooser, category_filter]:
1325
+ component.change(
1326
+ fn=update_dashboard,
1327
+ inputs=[tab_selection, model_multi_chooser, model_chooser, category_filter],
1328
+ outputs=[leaderboard_tab, category_analysis_tab, detailed_scorecard_tab,
1329
+ model_chooser, model_multi_chooser,
1330
+ leaderboard_output, category_chart, model_metadata,
1331
+ all_category_cards, total_score]
1332
+ )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1333
 
1334
  # Launch the app
1335
  if __name__ == "__main__":