evijit HF Staff commited on
Commit
9ef6d86
Β·
verified Β·
1 Parent(s): 1db78a0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -8
app.py CHANGED
@@ -29,6 +29,11 @@ def load_models_data():
29
  else:
30
  # If 'params' column doesn't exist, assume all are unknown
31
  df['params'] = -1
 
 
 
 
 
32
  msg = f"Successfully loaded dataset in {time.time() - overall_start_time:.2f}s."
33
  print(msg)
34
  return df, True, msg
@@ -43,7 +48,7 @@ def get_param_range_values(param_range_labels):
43
  max_val = float('inf') if '>' in max_label else float(max_label.replace('B', ''))
44
  return min_val, max_val
45
 
46
- def make_treemap_data(df, count_by, top_k=25, tag_filter=None, pipeline_filter=None, param_range=None, skip_orgs=None, include_unknown_param_size=True):
47
  if df is None or df.empty: return pd.DataFrame()
48
  filtered_df = df.copy()
49
 
@@ -66,6 +71,12 @@ def make_treemap_data(df, count_by, top_k=25, tag_filter=None, pipeline_filter=N
66
  if min_params is not None: filtered_df = filtered_df[filtered_df['params'] >= min_params]
67
  if max_params is not None and max_params != float('inf'): filtered_df = filtered_df[filtered_df['params'] < max_params]
68
 
 
 
 
 
 
 
69
  if skip_orgs and len(skip_orgs) > 0 and "organization" in filtered_df.columns:
70
  filtered_df = filtered_df[~filtered_df["organization"].isin(skip_orgs)]
71
  if filtered_df.empty: return pd.DataFrame()
@@ -144,6 +155,9 @@ with gr.Blocks(title="πŸ€— ModelVerse Explorer", fill_width=True, css=custom_css
144
  include_unknown_params_checkbox = gr.Checkbox(label="Include models with unknown parameter size", value=True)
145
 
146
  # This section remains un-grouped
 
 
 
147
  top_k_dropdown = gr.Dropdown(label="Number of Top Organizations", choices=TOP_K_CHOICES, value=25)
148
  skip_orgs_textbox = gr.Textbox(label="Organizations to Skip (comma-separated)", value="TheBloke,MaziyarPanahi,unsloth,modularai,Gensyn,bartowski")
149
 
@@ -222,20 +236,24 @@ with gr.Blocks(title="πŸ€— ModelVerse Explorer", fill_width=True, css=custom_css
222
  default_param_indices = PARAM_CHOICES_DEFAULT_INDICES
223
  default_k = 25
224
  default_skip_orgs = "TheBloke,MaziyarPanahi,unsloth,modularai,Gensyn,bartowski"
225
- # New default: include unknown params initially (matches checkbox default)
226
- default_include_unknown_params = True
227
 
228
  # Reuse the existing controller function for plotting
229
  initial_plot, initial_status = ui_generate_plot_controller(
230
  default_metric, default_filter_type, default_tag, default_pipeline,
231
- default_param_indices, default_k, default_skip_orgs, default_include_unknown_params, current_df, progress
 
 
232
  )
233
 
234
  # Return all the necessary updates for the UI
235
  return current_df, load_success_flag, data_info_text, initial_status, initial_plot
236
 
237
  def ui_generate_plot_controller(metric_choice, filter_type, tag_choice, pipeline_choice,
238
- param_range_indices, k_orgs, skip_orgs_input, include_unknown_param_size_flag, df_current_models, progress=gr.Progress()):
 
 
239
  if df_current_models is None or df_current_models.empty:
240
  return create_treemap(pd.DataFrame(), metric_choice, "Error: Model Data Not Loaded"), "Model data is not loaded. Cannot generate plot."
241
 
@@ -256,7 +274,8 @@ with gr.Blocks(title="πŸ€— ModelVerse Explorer", fill_width=True, css=custom_css
256
  pipeline_to_use,
257
  param_labels_for_filtering,
258
  orgs_to_skip,
259
- include_unknown_param_size_flag # Pass the new flag
 
260
  )
261
 
262
  progress(0.7, desc="Generating plot...")
@@ -281,8 +300,12 @@ with gr.Blocks(title="πŸ€— ModelVerse Explorer", fill_width=True, css=custom_css
281
 
282
  generate_plot_button.click(
283
  fn=ui_generate_plot_controller,
284
- inputs=[count_by_dropdown, filter_choice_radio, tag_filter_dropdown, pipeline_filter_dropdown,
285
- param_range_slider, top_k_dropdown, skip_orgs_textbox, include_unknown_params_checkbox, models_data_state], # Add checkbox to inputs
 
 
 
 
286
  outputs=[plot_output, status_message_md]
287
  )
288
 
 
29
  else:
30
  # If 'params' column doesn't exist, assume all are unknown
31
  df['params'] = -1
32
+
33
+ # NEW: Ensure createdAt is in datetime format, coercing errors
34
+ if 'createdAt' in df.columns:
35
+ df['createdAt'] = pd.to_datetime(df['createdAt'], errors='coerce')
36
+
37
  msg = f"Successfully loaded dataset in {time.time() - overall_start_time:.2f}s."
38
  print(msg)
39
  return df, True, msg
 
48
  max_val = float('inf') if '>' in max_label else float(max_label.replace('B', ''))
49
  return min_val, max_val
50
 
51
+ def make_treemap_data(df, count_by, top_k=25, tag_filter=None, pipeline_filter=None, param_range=None, skip_orgs=None, include_unknown_param_size=True, created_after_date=None): # ADDED created_after_date
52
  if df is None or df.empty: return pd.DataFrame()
53
  filtered_df = df.copy()
54
 
 
71
  if min_params is not None: filtered_df = filtered_df[filtered_df['params'] >= min_params]
72
  if max_params is not None and max_params != float('inf'): filtered_df = filtered_df[filtered_df['params'] < max_params]
73
 
74
+ # NEW: Filter by creation date
75
+ if created_after_date is not None and 'createdAt' in filtered_df.columns:
76
+ # The 'createdAt' column should already be datetime from the loading function
77
+ # We also convert the input date to ensure timezone consistency (or lack thereof)
78
+ filtered_df = filtered_df[filtered_df['createdAt'] > pd.to_datetime(created_after_date)]
79
+
80
  if skip_orgs and len(skip_orgs) > 0 and "organization" in filtered_df.columns:
81
  filtered_df = filtered_df[~filtered_df["organization"].isin(skip_orgs)]
82
  if filtered_df.empty: return pd.DataFrame()
 
155
  include_unknown_params_checkbox = gr.Checkbox(label="Include models with unknown parameter size", value=True)
156
 
157
  # This section remains un-grouped
158
+ # NEW: Date picker for filtering by creation date
159
+ created_after_datepicker = gr.DatePicker(label="Created After", value=None)
160
+
161
  top_k_dropdown = gr.Dropdown(label="Number of Top Organizations", choices=TOP_K_CHOICES, value=25)
162
  skip_orgs_textbox = gr.Textbox(label="Organizations to Skip (comma-separated)", value="TheBloke,MaziyarPanahi,unsloth,modularai,Gensyn,bartowski")
163
 
 
236
  default_param_indices = PARAM_CHOICES_DEFAULT_INDICES
237
  default_k = 25
238
  default_skip_orgs = "TheBloke,MaziyarPanahi,unsloth,modularai,Gensyn,bartowski"
239
+ default_include_unknown_params = True
240
+ default_created_after_date = None # NEW: Default for date picker is no filter
241
 
242
  # Reuse the existing controller function for plotting
243
  initial_plot, initial_status = ui_generate_plot_controller(
244
  default_metric, default_filter_type, default_tag, default_pipeline,
245
+ default_param_indices, default_k, default_skip_orgs, default_include_unknown_params,
246
+ default_created_after_date, # Pass new default date
247
+ current_df, progress
248
  )
249
 
250
  # Return all the necessary updates for the UI
251
  return current_df, load_success_flag, data_info_text, initial_status, initial_plot
252
 
253
  def ui_generate_plot_controller(metric_choice, filter_type, tag_choice, pipeline_choice,
254
+ param_range_indices, k_orgs, skip_orgs_input, include_unknown_param_size_flag,
255
+ created_after_date, # ADDED created_after_date
256
+ df_current_models, progress=gr.Progress()):
257
  if df_current_models is None or df_current_models.empty:
258
  return create_treemap(pd.DataFrame(), metric_choice, "Error: Model Data Not Loaded"), "Model data is not loaded. Cannot generate plot."
259
 
 
274
  pipeline_to_use,
275
  param_labels_for_filtering,
276
  orgs_to_skip,
277
+ include_unknown_param_size_flag,
278
+ created_after_date # Pass the new date filter value
279
  )
280
 
281
  progress(0.7, desc="Generating plot...")
 
300
 
301
  generate_plot_button.click(
302
  fn=ui_generate_plot_controller,
303
+ inputs=[
304
+ count_by_dropdown, filter_choice_radio, tag_filter_dropdown, pipeline_filter_dropdown,
305
+ param_range_slider, top_k_dropdown, skip_orgs_textbox, include_unknown_params_checkbox,
306
+ created_after_datepicker, # ADDED date picker to inputs
307
+ models_data_state
308
+ ],
309
  outputs=[plot_output, status_message_md]
310
  )
311