evijit HF Staff commited on
Commit
b72bb50
·
verified ·
1 Parent(s): f0be3b2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -16
app.py CHANGED
@@ -1,5 +1,3 @@
1
- # --- START OF FINAL, POLISHED FILE app.py ---
2
-
3
  import gradio as gr
4
  import pandas as pd
5
  import plotly.express as px
@@ -156,33 +154,54 @@ with gr.Blocks(title="🤗 ModelVerse Explorer", fill_width=True, css=custom_css
156
  return gr.update(visible=choice == "Tag Filter"), gr.update(visible=choice == "Pipeline Filter")
157
  filter_choice_radio.change(fn=_toggle_filters_visibility, inputs=filter_choice_radio, outputs=[tag_filter_dropdown, pipeline_filter_dropdown])
158
 
159
- def ui_load_data_controller(progress=gr.Progress()):
 
160
  progress(0, desc=f"Loading dataset '{HF_DATASET_ID}'...")
 
161
  try:
162
  current_df, load_success_flag, status_msg_from_load = load_models_data()
163
  if load_success_flag:
164
- progress(0.9, desc="Processing data...")
165
  date_display = "Pre-processed (date unavailable)"
166
  if 'data_download_timestamp' in current_df.columns and pd.notna(current_df['data_download_timestamp'].iloc[0]):
167
  ts = pd.to_datetime(current_df['data_download_timestamp'].iloc[0], utc=True)
168
  date_display = ts.strftime('%B %d, %Y, %H:%M:%S %Z')
169
  param_count = (current_df['params'] > 0).sum() if 'params' in current_df.columns else 0
170
  data_info_text = f"### Data Information\n- Source: `{HF_DATASET_ID}`\n- Status: {status_msg_from_load}\n- Total models loaded: {len(current_df):,}\n- Models with parameter counts: {param_count:,}\n- Data as of: {date_display}\n"
171
- status_msg_ui = "Data loaded. Ready to generate plot."
172
  else:
173
  data_info_text = f"### Data Load Failed\n- {status_msg_from_load}"
174
- status_msg_ui = status_msg_from_load
175
  except Exception as e:
176
- status_msg_ui = f"An unexpected error occurred: {str(e)}"
177
- data_info_text = f"### Critical Error\n- {status_msg_ui}"
178
  load_success_flag = False
179
- print(f"Critical error in ui_load_data_controller: {e}")
180
- return current_df, load_success_flag, data_info_text, status_msg_ui
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
181
 
182
  def ui_generate_plot_controller(metric_choice, filter_type, tag_choice, pipeline_choice,
183
  param_range_indices, k_orgs, skip_orgs_input, df_current_models, progress=gr.Progress()):
184
  if df_current_models is None or df_current_models.empty:
185
- return create_treemap(pd.DataFrame(), metric_choice, "Error: Model Data Not Loaded"), "Model data is not loaded."
186
 
187
  progress(0.1, desc="Preparing data...")
188
  tag_to_use = tag_choice if filter_type == "Tag Filter" else None
@@ -208,10 +227,11 @@ with gr.Blocks(title="🤗 ModelVerse Explorer", fill_width=True, css=custom_css
208
  plot_stats_md = f"## Plot Statistics\n- **Models shown**: {total_items_in_plot:,}\n- **Total {metric_choice}**: {int(total_value_in_plot):,}"
209
  return plotly_fig, plot_stats_md
210
 
 
211
  demo.load(
212
- fn=ui_load_data_controller,
213
  inputs=[],
214
- outputs=[models_data_state, loading_complete_state, data_info_md, status_message_md]
215
  )
216
 
217
  generate_plot_button.click(
@@ -223,6 +243,4 @@ with gr.Blocks(title="🤗 ModelVerse Explorer", fill_width=True, css=custom_css
223
 
224
  if __name__ == "__main__":
225
  print(f"Application starting...")
226
- demo.queue().launch()
227
-
228
- # --- END OF FINAL, POLISHED FILE app.py ---
 
 
 
1
  import gradio as gr
2
  import pandas as pd
3
  import plotly.express as px
 
154
  return gr.update(visible=choice == "Tag Filter"), gr.update(visible=choice == "Pipeline Filter")
155
  filter_choice_radio.change(fn=_toggle_filters_visibility, inputs=filter_choice_radio, outputs=[tag_filter_dropdown, pipeline_filter_dropdown])
156
 
157
+ ## CHANGE: Renamed and modified ui_load_data_controller to also generate the initial plot
158
+ def load_and_generate_initial_plot(progress=gr.Progress()):
159
  progress(0, desc=f"Loading dataset '{HF_DATASET_ID}'...")
160
+ # --- Part 1: Data Loading ---
161
  try:
162
  current_df, load_success_flag, status_msg_from_load = load_models_data()
163
  if load_success_flag:
164
+ progress(0.5, desc="Processing data...")
165
  date_display = "Pre-processed (date unavailable)"
166
  if 'data_download_timestamp' in current_df.columns and pd.notna(current_df['data_download_timestamp'].iloc[0]):
167
  ts = pd.to_datetime(current_df['data_download_timestamp'].iloc[0], utc=True)
168
  date_display = ts.strftime('%B %d, %Y, %H:%M:%S %Z')
169
  param_count = (current_df['params'] > 0).sum() if 'params' in current_df.columns else 0
170
  data_info_text = f"### Data Information\n- Source: `{HF_DATASET_ID}`\n- Status: {status_msg_from_load}\n- Total models loaded: {len(current_df):,}\n- Models with parameter counts: {param_count:,}\n- Data as of: {date_display}\n"
 
171
  else:
172
  data_info_text = f"### Data Load Failed\n- {status_msg_from_load}"
 
173
  except Exception as e:
174
+ status_msg_from_load = f"An unexpected error occurred: {str(e)}"
175
+ data_info_text = f"### Critical Error\n- {status_msg_from_load}"
176
  load_success_flag = False
177
+ current_df = pd.DataFrame()
178
+ print(f"Critical error in load_and_generate_initial_plot: {e}")
179
+
180
+ # --- Part 2: Generate Initial Plot ---
181
+ # We call the existing plot generation function with the default values from the UI
182
+ progress(0.6, desc="Generating initial plot...")
183
+ # Get default values directly from the UI component definitions
184
+ default_metric = "downloads"
185
+ default_filter_type = "None"
186
+ default_tag = None
187
+ default_pipeline = None
188
+ default_param_indices = PARAM_CHOICES_DEFAULT_INDICES
189
+ default_k = 25
190
+ default_skip_orgs = "TheBloke,MaziyarPanahi,unsloth,modularai,Gensyn,bartowski"
191
+
192
+ # Reuse the existing controller function for plotting
193
+ initial_plot, initial_status = ui_generate_plot_controller(
194
+ default_metric, default_filter_type, default_tag, default_pipeline,
195
+ default_param_indices, default_k, default_skip_orgs, current_df, progress
196
+ )
197
+
198
+ # Return all the necessary updates for the UI
199
+ return current_df, load_success_flag, data_info_text, initial_status, initial_plot
200
 
201
  def ui_generate_plot_controller(metric_choice, filter_type, tag_choice, pipeline_choice,
202
  param_range_indices, k_orgs, skip_orgs_input, df_current_models, progress=gr.Progress()):
203
  if df_current_models is None or df_current_models.empty:
204
+ return create_treemap(pd.DataFrame(), metric_choice, "Error: Model Data Not Loaded"), "Model data is not loaded. Cannot generate plot."
205
 
206
  progress(0.1, desc="Preparing data...")
207
  tag_to_use = tag_choice if filter_type == "Tag Filter" else None
 
227
  plot_stats_md = f"## Plot Statistics\n- **Models shown**: {total_items_in_plot:,}\n- **Total {metric_choice}**: {int(total_value_in_plot):,}"
228
  return plotly_fig, plot_stats_md
229
 
230
+ ## CHANGE: Updated demo.load to call the new function and to add plot_output to the outputs list
231
  demo.load(
232
+ fn=load_and_generate_initial_plot,
233
  inputs=[],
234
+ outputs=[models_data_state, loading_complete_state, data_info_md, status_message_md, plot_output]
235
  )
236
 
237
  generate_plot_button.click(
 
243
 
244
  if __name__ == "__main__":
245
  print(f"Application starting...")
246
+ demo.queue().launch()