kolaslab commited on
Commit
c315193
Β·
verified Β·
1 Parent(s): 925914f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +103 -50
app.py CHANGED
@@ -265,71 +265,124 @@ def make_calendar_heatmap(df, title, year):
265
  st.pyplot(fig)
266
 
267
 
 
 
 
 
268
  # Sidebar
269
  with st.sidebar:
270
  st.title("πŸ‘€ Contributor")
271
 
272
- # Fetch trending accounts with a loading spinner
273
- with st.spinner("Loading top trending accounts..."):
274
- trending_accounts, top_owners = get_trending_accounts(limit=100)
275
-
276
- # Show trending accounts list
277
- st.subheader("πŸ”₯ Top 30 Trending Accounts")
278
-
279
- # Display the top 30 accounts list with their scores
280
- st.markdown("### Trending Contributors Ranking")
281
 
282
- # Create a data frame for the table
283
- if top_owners:
284
- ranking_data = pd.DataFrame(top_owners[:30], columns=["Contributor", "Spaces Count"])
285
- ranking_data.index = ranking_data.index + 1 # Start index from 1 for ranking
286
 
287
- # Style the table
288
- # Add a score column based on spaces count
289
- ranking_data["Score"] = ranking_data["Spaces Count"].apply(lambda x: x * 10) # Multiply by 10 for a score metric
290
 
291
- st.dataframe(
292
- ranking_data,
293
- column_config={
294
- "Contributor": st.column_config.TextColumn("Contributor"),
295
- "Spaces Count": st.column_config.NumberColumn("Spaces Count (based on top 500 spaces)", format="%d"),
296
- "Score": st.column_config.ProgressColumn(
297
- "Score (within TOP 500 SPACES)",
298
- min_value=0,
299
- max_value=ranking_data["Score"].max() * 1.1, # Add 10% to max for visual scale
300
- format="%d pts"
301
- )
302
- },
303
- use_container_width=True,
304
- hide_index=False
305
- )
306
-
307
- # Add stats expander with visualization
308
- with st.expander("View Top 30 Contributor Chart"):
309
- # Create a bar chart for top 30 contributors
310
- if top_owners:
311
- chart_data = pd.DataFrame(top_owners[:30], columns=["Owner", "Spaces Count"])
312
 
313
- fig, ax = plt.subplots(figsize=(10, 8))
314
- bars = ax.barh(chart_data["Owner"], chart_data["Spaces Count"])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
315
 
316
- # Add color gradient to bars
317
- for i, bar in enumerate(bars):
318
- bar.set_color(plt.cm.viridis(i/len(bars)))
319
 
320
- ax.set_title("Top 30 Contributors by Number of Spaces")
321
- ax.set_xlabel("Number of Spaces")
322
- plt.tight_layout()
323
- st.pyplot(fig)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
324
 
325
- # Display trending accounts without additional filtering
 
326
  selected_trending = st.selectbox(
327
  "Select trending account",
328
  options=trending_accounts[:30], # Limit to top 30
329
  index=0 if trending_accounts else None,
330
  key="trending_selectbox"
331
  )
332
-
333
  # Custom account input option
334
  st.markdown("<div style='text-align: center; margin: 10px 0;'>OR</div>", unsafe_allow_html=True)
335
  custom = st.text_input("", placeholder="Enter custom username/org")
@@ -357,7 +410,7 @@ with st.sidebar:
357
  st.title("πŸ€— Hugging Face Contributions")
358
  if username:
359
  with st.spinner(f"Fetching commit data for {username}..."):
360
- # Display contributor rank if in top 100
361
  if username in trending_accounts[:30]:
362
  rank = trending_accounts.index(username) + 1
363
  st.success(f"πŸ† {username} is ranked #{rank} in the top trending contributors!")
@@ -452,7 +505,7 @@ if username:
452
  st.metric("Total Commits", total_commits)
453
 
454
  # Show contributor rank if in top owners
455
- for owner, count in top_owners:
456
  if owner.lower() == username.lower():
457
  st.metric("Spaces Count", count)
458
  break
 
265
  st.pyplot(fig)
266
 
267
 
268
+ # Fetch trending accounts with a loading spinner (do this once at the beginning)
269
+ with st.spinner("Loading trending accounts..."):
270
+ trending_accounts, top_owners_spaces, top_owners_models = get_trending_accounts(limit=100)
271
+
272
  # Sidebar
273
  with st.sidebar:
274
  st.title("πŸ‘€ Contributor")
275
 
276
+ # Create tabs for Spaces and Models rankings
277
+ tab1, tab2 = st.tabs(["Spaces Ranking", "Models Ranking"])
 
 
 
 
 
 
 
278
 
279
+ with tab1:
280
+ # Show trending accounts list by Spaces
281
+ st.subheader("πŸš€ Top 30 by Spaces")
 
282
 
283
+ # Display the top 30 accounts list with their scores
284
+ st.markdown("### Spaces Contributors Ranking")
 
285
 
286
+ # Create a data frame for the table
287
+ if top_owners_spaces:
288
+ ranking_data_spaces = pd.DataFrame(top_owners_spaces[:30], columns=["Contributor", "Spaces Count"])
289
+ ranking_data_spaces.index = ranking_data_spaces.index + 1 # Start index from 1 for ranking
290
+
291
+ # Add a score column based on spaces count
292
+ ranking_data_spaces["Score"] = ranking_data_spaces["Spaces Count"].apply(lambda x: x * 10) # Multiply by 10 for a score metric
 
 
 
 
 
 
 
 
 
 
 
 
 
 
293
 
294
+ st.dataframe(
295
+ ranking_data_spaces,
296
+ column_config={
297
+ "Contributor": st.column_config.TextColumn("Contributor"),
298
+ "Spaces Count": st.column_config.NumberColumn("Spaces Count (based on top 500 spaces)", format="%d"),
299
+ "Score": st.column_config.ProgressColumn(
300
+ "Score (within TOP 500 SPACES)",
301
+ min_value=0,
302
+ max_value=ranking_data_spaces["Score"].max() * 1.1, # Add 10% to max for visual scale
303
+ format="%d pts"
304
+ )
305
+ },
306
+ use_container_width=True,
307
+ hide_index=False
308
+ )
309
+
310
+ # Add stats expander with visualization
311
+ with st.expander("View Top 30 Spaces Contributors Chart"):
312
+ # Create a bar chart for top 30 contributors
313
+ if top_owners_spaces:
314
+ chart_data = pd.DataFrame(top_owners_spaces[:30], columns=["Owner", "Spaces Count"])
315
+
316
+ fig, ax = plt.subplots(figsize=(10, 8))
317
+ bars = ax.barh(chart_data["Owner"], chart_data["Spaces Count"])
318
+
319
+ # Add color gradient to bars
320
+ for i, bar in enumerate(bars):
321
+ bar.set_color(plt.cm.viridis(i/len(bars)))
322
+
323
+ ax.set_title("Top 30 Contributors by Number of Spaces")
324
+ ax.set_xlabel("Number of Spaces")
325
+ plt.tight_layout()
326
+ st.pyplot(fig)
327
+
328
+ with tab2:
329
+ # Show trending accounts list by Models
330
+ st.subheader("🧠 Top 30 by Models")
331
+
332
+ # Display the top 30 accounts list with their scores
333
+ st.markdown("### Models Contributors Ranking")
334
+
335
+ # Create a data frame for the table
336
+ if top_owners_models:
337
+ ranking_data_models = pd.DataFrame(top_owners_models[:30], columns=["Contributor", "Models Count"])
338
+ ranking_data_models.index = ranking_data_models.index + 1 # Start index from 1 for ranking
339
 
340
+ # Add a score column based on models count
341
+ ranking_data_models["Score"] = ranking_data_models["Models Count"].apply(lambda x: x * 10) # Multiply by 10 for a score metric
 
342
 
343
+ st.dataframe(
344
+ ranking_data_models,
345
+ column_config={
346
+ "Contributor": st.column_config.TextColumn("Contributor"),
347
+ "Models Count": st.column_config.NumberColumn("Models Count (based on top 500 models)", format="%d"),
348
+ "Score": st.column_config.ProgressColumn(
349
+ "Score (within TOP 500 MODELS)",
350
+ min_value=0,
351
+ max_value=ranking_data_models["Score"].max() * 1.1, # Add 10% to max for visual scale
352
+ format="%d pts"
353
+ )
354
+ },
355
+ use_container_width=True,
356
+ hide_index=False
357
+ )
358
+
359
+ # Add stats expander with visualization
360
+ with st.expander("View Top 30 Models Contributors Chart"):
361
+ # Create a bar chart for top 30 contributors
362
+ if top_owners_models:
363
+ chart_data = pd.DataFrame(top_owners_models[:30], columns=["Owner", "Models Count"])
364
+
365
+ fig, ax = plt.subplots(figsize=(10, 8))
366
+ bars = ax.barh(chart_data["Owner"], chart_data["Models Count"])
367
+
368
+ # Add color gradient to bars
369
+ for i, bar in enumerate(bars):
370
+ bar.set_color(plt.cm.plasma(i/len(bars))) # Use a different colormap for models
371
+
372
+ ax.set_title("Top 30 Contributors by Number of Models")
373
+ ax.set_xlabel("Number of Models")
374
+ plt.tight_layout()
375
+ st.pyplot(fig)
376
 
377
+ # Display trending accounts selection dropdown
378
+ st.subheader("Select Contributor")
379
  selected_trending = st.selectbox(
380
  "Select trending account",
381
  options=trending_accounts[:30], # Limit to top 30
382
  index=0 if trending_accounts else None,
383
  key="trending_selectbox"
384
  )
385
+
386
  # Custom account input option
387
  st.markdown("<div style='text-align: center; margin: 10px 0;'>OR</div>", unsafe_allow_html=True)
388
  custom = st.text_input("", placeholder="Enter custom username/org")
 
410
  st.title("πŸ€— Hugging Face Contributions")
411
  if username:
412
  with st.spinner(f"Fetching commit data for {username}..."):
413
+ # Display contributor rank if in top 30
414
  if username in trending_accounts[:30]:
415
  rank = trending_accounts.index(username) + 1
416
  st.success(f"πŸ† {username} is ranked #{rank} in the top trending contributors!")
 
505
  st.metric("Total Commits", total_commits)
506
 
507
  # Show contributor rank if in top owners
508
+ for owner, count in top_owners_spaces:
509
  if owner.lower() == username.lower():
510
  st.metric("Spaces Count", count)
511
  break