evijit HF Staff commited on
Commit
27c66d1
·
verified ·
1 Parent(s): 4d0811f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -4
app.py CHANGED
@@ -135,7 +135,7 @@ def extract_org_from_id(model_id):
135
  return model_id.split("/")[0]
136
  return "unaffiliated"
137
 
138
- def make_treemap_data(df, count_by, top_k=25, tag_filter=None, pipeline_filter=None, size_filter=None):
139
  """Process DataFrame into treemap format with filters applied"""
140
  # Create a copy to avoid modifying the original
141
  filtered_df = df.copy()
@@ -158,6 +158,10 @@ def make_treemap_data(df, count_by, top_k=25, tag_filter=None, pipeline_filter=N
158
  # Add organization column
159
  filtered_df["organization"] = filtered_df["id"].apply(extract_org_from_id)
160
 
 
 
 
 
161
  # Aggregate by organization
162
  org_totals = filtered_df.groupby("organization")[count_by].sum().reset_index()
163
  org_totals = org_totals.sort_values(by=count_by, ascending=False)
@@ -215,7 +219,7 @@ def create_treemap(treemap_data, count_by, title=None):
215
 
216
  return fig
217
 
218
- def load_models_csv():
219
  # Read the CSV file
220
  df = pd.read_csv('models.csv')
221
 
@@ -419,6 +423,12 @@ with gr.Blocks() as demo:
419
  step=5,
420
  info="Number of top organizations to include"
421
  )
 
 
 
 
 
 
422
 
423
  generate_plot_button = gr.Button("Generate Plot", variant="primary")
424
 
@@ -426,7 +436,7 @@ with gr.Blocks() as demo:
426
  plot_output = gr.Plot()
427
  stats_output = gr.Markdown("*Generate a plot to see statistics*")
428
 
429
- def generate_plot_on_click(count_by, filter_choice, tag_filter, pipeline_filter, size_filter, top_k, data_df):
430
  print(f"Generating plot with: Metric={count_by}, Filter={filter_choice}, Tag={tag_filter}, Pipeline={pipeline_filter}, Size={size_filter}, Top K={top_k}")
431
 
432
  if data_df is None or len(data_df) == 0:
@@ -444,6 +454,12 @@ with gr.Blocks() as demo:
444
  if size_filter != "None":
445
  selected_size_filter = size_filter
446
 
 
 
 
 
 
 
447
  # Process data for treemap
448
  treemap_data = make_treemap_data(
449
  df=data_df,
@@ -451,7 +467,8 @@ with gr.Blocks() as demo:
451
  top_k=top_k,
452
  tag_filter=selected_tag_filter,
453
  pipeline_filter=selected_pipeline_filter,
454
- size_filter=selected_size_filter
 
455
  )
456
 
457
  # Create plot
@@ -484,6 +501,10 @@ with gr.Blocks() as demo:
484
  for org, value in top_5_orgs.items():
485
  percentage = (value / total_value) * 100
486
  stats_md += f"\n| {org} | {int(value):,} | {percentage:.2f}% |"
 
 
 
 
487
 
488
  return fig, stats_md
489
 
@@ -518,6 +539,7 @@ with gr.Blocks() as demo:
518
  pipeline_filter_dropdown,
519
  size_filter_dropdown,
520
  top_k_slider,
 
521
  models_data
522
  ],
523
  outputs=[plot_output, stats_output]
 
135
  return model_id.split("/")[0]
136
  return "unaffiliated"
137
 
138
+ def make_treemap_data(df, count_by, top_k=25, tag_filter=None, pipeline_filter=None, size_filter=None, skip_orgs=None):
139
  """Process DataFrame into treemap format with filters applied"""
140
  # Create a copy to avoid modifying the original
141
  filtered_df = df.copy()
 
158
  # Add organization column
159
  filtered_df["organization"] = filtered_df["id"].apply(extract_org_from_id)
160
 
161
+ # Skip organizations if specified
162
+ if skip_orgs and len(skip_orgs) > 0:
163
+ filtered_df = filtered_df[~filtered_df["organization"].isin(skip_orgs)]
164
+
165
  # Aggregate by organization
166
  org_totals = filtered_df.groupby("organization")[count_by].sum().reset_index()
167
  org_totals = org_totals.sort_values(by=count_by, ascending=False)
 
219
 
220
  return fig
221
 
222
+ def load_models_csv():
223
  # Read the CSV file
224
  df = pd.read_csv('models.csv')
225
 
 
423
  step=5,
424
  info="Number of top organizations to include"
425
  )
426
+
427
+ skip_orgs_textbox = gr.Textbox(
428
+ label="Organizations to Skip (comma-separated)",
429
+ placeholder="e.g., openai, meta, huggingface",
430
+ info="Enter names of organizations to exclude from the visualization"
431
+ )
432
 
433
  generate_plot_button = gr.Button("Generate Plot", variant="primary")
434
 
 
436
  plot_output = gr.Plot()
437
  stats_output = gr.Markdown("*Generate a plot to see statistics*")
438
 
439
+ def generate_plot_on_click(count_by, filter_choice, tag_filter, pipeline_filter, size_filter, top_k, skip_orgs_text, data_df):
440
  print(f"Generating plot with: Metric={count_by}, Filter={filter_choice}, Tag={tag_filter}, Pipeline={pipeline_filter}, Size={size_filter}, Top K={top_k}")
441
 
442
  if data_df is None or len(data_df) == 0:
 
454
  if size_filter != "None":
455
  selected_size_filter = size_filter
456
 
457
+ # Process skip organizations list
458
+ skip_orgs = []
459
+ if skip_orgs_text and skip_orgs_text.strip():
460
+ skip_orgs = [org.strip() for org in skip_orgs_text.split(',') if org.strip()]
461
+ print(f"Skipping organizations: {skip_orgs}")
462
+
463
  # Process data for treemap
464
  treemap_data = make_treemap_data(
465
  df=data_df,
 
467
  top_k=top_k,
468
  tag_filter=selected_tag_filter,
469
  pipeline_filter=selected_pipeline_filter,
470
+ size_filter=selected_size_filter,
471
+ skip_orgs=skip_orgs
472
  )
473
 
474
  # Create plot
 
501
  for org, value in top_5_orgs.items():
502
  percentage = (value / total_value) * 100
503
  stats_md += f"\n| {org} | {int(value):,} | {percentage:.2f}% |"
504
+
505
+ # Add note about skipped organizations if any
506
+ if skip_orgs:
507
+ stats_md += f"\n\n*Note: {len(skip_orgs)} organization(s) excluded: {', '.join(skip_orgs)}*"
508
 
509
  return fig, stats_md
510
 
 
539
  pipeline_filter_dropdown,
540
  size_filter_dropdown,
541
  top_k_slider,
542
+ skip_orgs_textbox,
543
  models_data
544
  ],
545
  outputs=[plot_output, stats_output]