James McCool commited on
Commit
55016b9
·
1 Parent(s): 6317102

Enhance app.py to support both NBA and WNBA leagues: refactor lineup initialization functions to accept league as an argument, update column definitions for WNBA, and implement conditional logic for data retrieval and display, improving overall functionality and user experience.

Browse files
Files changed (1) hide show
  1. app.py +387 -178
app.py CHANGED
@@ -19,10 +19,15 @@ def init_conn():
19
 
20
  db, wnba_db = init_conn()
21
 
22
- dk_columns = ['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'FLEX', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
23
- dk_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
24
- fd_columns = ['PG1', 'PG2', 'SG1', 'SG2', 'SF1', 'SF2', 'PF1', 'PF2', 'C1', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
25
- fd_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
 
 
 
 
 
26
 
27
  roo_format = {'Top_finish': '{:.2%}', 'Top_5_finish': '{:.2%}', 'Top_10_finish': '{:.2%}', '20+%': '{:.2%}', '4x%': '{:.2%}', '5x%': '{:.2%}', '6x%': '{:.2%}', 'GPP%': '{:.2%}'}
28
 
@@ -173,23 +178,35 @@ def load_overall_stats(league: str):
173
  return dk_raw, fd_raw, dk_raw_sec, fd_raw_sec, roo_raw, sd_raw, dk_sd_raw, fd_sd_raw, timestamp
174
 
175
  @st.cache_data(ttl = 60)
176
- def init_DK_lineups(slate_desig: str):
177
 
178
  if slate_desig == 'Main Slate':
179
- collection = db['DK_NBA_name_map']
 
 
 
180
  cursor = collection.find()
181
  raw_data = pd.DataFrame(list(cursor))
182
  names_dict = dict(zip(raw_data['key'], raw_data['value']))
183
-
184
- collection = db["DK_NBA_seed_frame"]
 
 
 
185
  cursor = collection.find().limit(10000)
186
  elif slate_desig == 'Secondary':
187
- collection = db['DK_NBA_Secondary_name_map']
 
 
 
188
  cursor = collection.find()
189
  raw_data = pd.DataFrame(list(cursor))
190
  names_dict = dict(zip(raw_data['key'], raw_data['value']))
191
-
192
- collection = db["DK_NBA_Secondary_seed_frame"]
 
 
 
193
  cursor = collection.find().limit(10000)
194
  elif slate_desig == 'Auxiliary':
195
  collection = db['DK_NBA_Auxiliary_name_map']
@@ -201,8 +218,13 @@ def init_DK_lineups(slate_desig: str):
201
  cursor = collection.find().limit(10000)
202
 
203
  raw_display = pd.DataFrame(list(cursor))
204
- raw_display = raw_display[['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'FLEX', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
205
- dict_columns = ['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'FLEX']
 
 
 
 
 
206
  for col in dict_columns:
207
  raw_display[col] = raw_display[col].map(names_dict)
208
  DK_seed = raw_display.to_numpy()
@@ -210,12 +232,18 @@ def init_DK_lineups(slate_desig: str):
210
  return DK_seed
211
 
212
  @st.cache_data(ttl = 60)
213
- def init_DK_SD_lineups(slate_desig: str):
214
 
215
  if slate_desig == 'Main Slate':
216
- collection = db["DK_NBA_SD_seed_frame"]
 
 
 
217
  elif slate_desig == 'Secondary':
218
- collection = db["DK_NBA_Secondary_SD_seed_frame"]
 
 
 
219
  elif slate_desig == 'Auxiliary':
220
  collection = db["DK_NBA_Auxiliary_SD_seed_frame"]
221
 
@@ -228,23 +256,35 @@ def init_DK_SD_lineups(slate_desig: str):
228
  return DK_seed
229
 
230
  @st.cache_data(ttl = 60)
231
- def init_FD_lineups(slate_desig: str):
232
 
233
  if slate_desig == 'Main Slate':
234
- collection = db['FD_NBA_name_map']
 
 
 
235
  cursor = collection.find()
236
  raw_data = pd.DataFrame(list(cursor))
237
  names_dict = dict(zip(raw_data['key'], raw_data['value']))
238
 
239
- collection = db["FD_NBA_seed_frame"]
 
 
 
240
  cursor = collection.find().limit(10000)
241
  elif slate_desig == 'Secondary':
242
- collection = db['FD_NBA_Secondary_name_map']
 
 
 
243
  cursor = collection.find()
244
  raw_data = pd.DataFrame(list(cursor))
245
  names_dict = dict(zip(raw_data['key'], raw_data['value']))
246
 
247
- collection = db["FD_NBA_Secondary_seed_frame"]
 
 
 
248
  cursor = collection.find().limit(10000)
249
  elif slate_desig == 'Auxiliary':
250
  collection = db['FD_NBA_Auxiliary_name_map']
@@ -256,8 +296,12 @@ def init_FD_lineups(slate_desig: str):
256
  cursor = collection.find().limit(10000)
257
 
258
  raw_display = pd.DataFrame(list(cursor))
259
- raw_display = raw_display[['PG1', 'PG2', 'SG1', 'SG2', 'SF1', 'SF2', 'PF1', 'PF2', 'C1', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
260
- dict_columns = ['PG1', 'PG2', 'SG1', 'SG2', 'SF1', 'SF2', 'PF1', 'PF2', 'C1']
 
 
 
 
261
  for col in dict_columns:
262
  raw_display[col] = raw_display[col].map(names_dict)
263
  FD_seed = raw_display.to_numpy()
@@ -265,12 +309,18 @@ def init_FD_lineups(slate_desig: str):
265
  return FD_seed
266
 
267
  @st.cache_data(ttl = 60)
268
- def init_FD_SD_lineups(slate_desig: str):
269
 
270
  if slate_desig == 'Main Slate':
271
- collection = db["FD_NBA_SD_seed_frame"]
 
 
 
272
  elif slate_desig == 'Secondary':
273
- collection = db["FD_NBA_Secondary_SD_seed_frame"]
 
 
 
274
  elif slate_desig == 'Auxiliary':
275
  collection = db["FD_NBA_Auxiliary_SD_seed_frame"]
276
 
@@ -297,10 +347,16 @@ salary_dict_sd = dict(zip(sd_raw.Player, sd_raw.Salary))
297
  dk_id_dict_sd = dict(zip(dk_sd_raw.Player, dk_sd_raw.player_ID))
298
  fd_id_dict_sd = dict(zip(fd_sd_raw.Player, fd_sd_raw.player_ID))
299
 
300
- dk_lineups = pd.DataFrame(columns=dk_columns)
301
- dk_sd_lineups = pd.DataFrame(columns=dk_sd_columns)
302
- fd_lineups = pd.DataFrame(columns=fd_columns)
303
- fd_sd_lineups = pd.DataFrame(columns=fd_sd_columns)
 
 
 
 
 
 
304
  t_stamp = f"Last Update: " + str(timestamp) + f" CST"
305
 
306
  tab1, tab2 = st.tabs(['Range of Outcomes', 'Optimals'])
@@ -324,10 +380,15 @@ with tab1:
324
  salary_dict_sd = dict(zip(sd_raw.Player, sd_raw.Salary))
325
  dk_id_dict_sd = dict(zip(dk_sd_raw.Player, dk_sd_raw.player_ID))
326
  fd_id_dict_sd = dict(zip(fd_sd_raw.Player, fd_sd_raw.player_ID))
327
- dk_lineups = pd.DataFrame(columns=dk_columns)
328
- dk_sd_lineups = pd.DataFrame(columns=dk_sd_columns)
329
- fd_lineups = pd.DataFrame(columns=fd_columns)
330
- fd_sd_lineups = pd.DataFrame(columns=fd_sd_columns)
 
 
 
 
 
331
  t_stamp = f"Last Update: " + str(timestamp) + f" CST"
332
  for key in st.session_state.keys():
333
  del st.session_state[key]
@@ -425,31 +486,44 @@ with tab2:
425
  salary_dict_sd = dict(zip(sd_raw.Player, sd_raw.Salary))
426
  dk_id_dict_sd = dict(zip(dk_sd_raw.Player, dk_sd_raw.player_ID))
427
  fd_id_dict_sd = dict(zip(fd_sd_raw.Player, fd_sd_raw.player_ID))
428
- dk_lineups = pd.DataFrame(columns=dk_columns)
429
- dk_sd_lineups = pd.DataFrame(columns=dk_sd_columns)
430
- fd_lineups = pd.DataFrame(columns=fd_columns)
431
- fd_sd_lineups = pd.DataFrame(columns=fd_sd_columns)
 
 
 
 
 
432
  t_stamp = f"Last Update: " + str(timestamp) + f" CST"
433
  for key in st.session_state.keys():
434
  del st.session_state[key]
435
 
436
- col1, col2, col3, col4, col5 = st.columns(5)
437
  with col1:
438
- slate_var1 = st.radio("Which data are you loading?", ('Main Slate', 'Secondary'))
439
  with col2:
 
 
440
  site_var1 = st.radio("What site are you working with?", ('Draftkings', 'Fanduel'))
441
  if 'working_seed' in st.session_state:
442
  del st.session_state['working_seed']
443
- with col3:
444
- slate_type_var1 = st.radio("What slate type are you working with?", ('Regular', 'Showdown'))
445
  with col4:
446
- lineup_num_var = st.number_input("How many lineups do you want to display?", min_value=1, max_value=1000, value=150, step=1)
447
  with col5:
 
 
448
  if site_var1 == 'Draftkings':
449
- if slate_type_var1 == 'Regular':
450
- column_names = dk_columns
451
- elif slate_type_var1 == 'Showdown':
452
- column_names = dk_sd_columns
 
 
 
 
 
 
453
 
454
  player_var1 = st.radio("Do you want a frame with specific Players?", ('Full Slate', 'Specific Players'), key='player_var1')
455
  if player_var1 == 'Specific Players':
@@ -458,10 +532,16 @@ with tab2:
458
  player_var2 = dk_raw.Player.values.tolist()
459
 
460
  elif site_var1 == 'Fanduel':
461
- if slate_type_var1 == 'Regular':
462
- column_names = fd_columns
463
- elif slate_type_var1 == 'Showdown':
464
- column_names = fd_sd_columns
 
 
 
 
 
 
465
 
466
  player_var1 = st.radio("Do you want a frame with specific Players?", ('Full Slate', 'Specific Players'), key='player_var1')
467
  if player_var1 == 'Specific Players':
@@ -472,24 +552,24 @@ with tab2:
472
 
473
  if site_var1 == 'Draftkings':
474
  if slate_type_var1 == 'Regular':
475
- data_export = init_DK_lineups(slate_var1)
476
  data_export_names = data_export.copy()
477
  for col_idx in range(8):
478
  data_export[:, col_idx] = np.array([id_dict.get(player, player) for player in data_export[:, col_idx]])
479
  elif slate_type_var1 == 'Showdown':
480
- data_export = init_DK_SD_lineups(slate_var1)
481
  data_export_names = data_export.copy()
482
  for col_idx in range(6):
483
  data_export[:, col_idx] = np.array([dk_id_dict_sd.get(player, player) for player in data_export[:, col_idx]])
484
 
485
  elif site_var1 == 'Fanduel':
486
  if slate_type_var1 == 'Regular':
487
- data_export = init_FD_lineups(slate_var1)
488
  data_export_names = data_export.copy()
489
  for col_idx in range(9):
490
  data_export[:, col_idx] = np.array([id_dict.get(player, player) for player in data_export[:, col_idx]])
491
  elif slate_type_var1 == 'Showdown':
492
- data_export = init_FD_SD_lineups(slate_var1)
493
  data_export_names = data_export.copy()
494
  for col_idx in range(6):
495
  data_export[:, col_idx] = np.array([fd_id_dict_sd.get(player, player) for player in data_export[:, col_idx]])
@@ -518,17 +598,17 @@ with tab2:
518
 
519
  elif 'working_seed' not in st.session_state:
520
  if slate_type_var1 == 'Regular':
521
- st.session_state.working_seed = init_DK_lineups(slate_var1)
522
  elif slate_type_var1 == 'Showdown':
523
- st.session_state.working_seed = init_DK_SD_lineups(slate_var1)
524
  st.session_state.working_seed = st.session_state.working_seed
525
  if player_var1 == 'Specific Players':
526
  st.session_state.working_seed = st.session_state.working_seed[np.equal.outer(st.session_state.working_seed, player_var2).any(axis=1).all(axis=1)]
527
  elif player_var1 == 'Full Slate':
528
  if slate_type_var1 == 'Regular':
529
- st.session_state.working_seed = init_DK_lineups(slate_var1)
530
  elif slate_type_var1 == 'Showdown':
531
- st.session_state.working_seed = init_DK_SD_lineups(slate_var1)
532
  st.session_state.data_export_display = pd.DataFrame(st.session_state.working_seed[0:lineup_num_var], columns=column_names)
533
 
534
  elif site_var1 == 'Fanduel':
@@ -542,17 +622,17 @@ with tab2:
542
 
543
  elif 'working_seed' not in st.session_state:
544
  if slate_type_var1 == 'Regular':
545
- st.session_state.working_seed = init_FD_lineups(slate_var1)
546
  elif slate_type_var1 == 'Showdown':
547
- st.session_state.working_seed = init_FD_SD_lineups(slate_var1)
548
  st.session_state.working_seed = st.session_state.working_seed
549
  if player_var1 == 'Specific Players':
550
  st.session_state.working_seed = st.session_state.working_seed[np.equal.outer(st.session_state.working_seed, player_var2).any(axis=1).all(axis=1)]
551
  elif player_var1 == 'Full Slate':
552
  if slate_type_var1 == 'Regular':
553
- st.session_state.working_seed = init_FD_lineups(slate_var1)
554
  elif slate_type_var1 == 'Showdown':
555
- st.session_state.working_seed = init_FD_SD_lineups(slate_var1)
556
  st.session_state.data_export_display = pd.DataFrame(st.session_state.working_seed[0:lineup_num_var], columns=column_names)
557
 
558
  export_file = st.session_state.data_export_display.copy()
@@ -576,15 +656,27 @@ with tab2:
576
  for key in st.session_state.keys():
577
  del st.session_state[key]
578
  if site_var1 == 'Draftkings':
579
- if slate_type_var1 == 'Regular':
580
- st.session_state.working_seed = dk_lineups.copy()
581
- elif slate_type_var1 == 'Showdown':
582
- st.session_state.working_seed = dk_sd_lineups.copy()
 
 
 
 
 
 
583
  elif site_var1 == 'Fanduel':
584
- if slate_type_var1 == 'Regular':
585
- st.session_state.working_seed = fd_lineups.copy()
586
- elif slate_type_var1 == 'Showdown':
587
- st.session_state.working_seed = fd_sd_lineups.copy()
 
 
 
 
 
 
588
  if 'data_export_display' in st.session_state:
589
  st.dataframe(st.session_state.data_export_display.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(precision=2), height=500, use_container_width = True)
590
  st.download_button(
@@ -598,96 +690,188 @@ with tab2:
598
  if 'working_seed' in st.session_state:
599
  # Create a new dataframe with summary statistics
600
  if site_var1 == 'Draftkings':
601
- if slate_type_var1 == 'Regular':
602
- summary_df = pd.DataFrame({
603
- 'Metric': ['Min', 'Average', 'Max', 'STDdev'],
604
- 'Salary': [
605
- np.min(st.session_state.working_seed[:,8]),
606
- np.mean(st.session_state.working_seed[:,8]),
607
- np.max(st.session_state.working_seed[:,8]),
608
- np.std(st.session_state.working_seed[:,8])
609
- ],
610
- 'Proj': [
611
- np.min(st.session_state.working_seed[:,9]),
612
- np.mean(st.session_state.working_seed[:,9]),
613
- np.max(st.session_state.working_seed[:,9]),
614
- np.std(st.session_state.working_seed[:,9])
615
- ],
616
- 'Own': [
617
- np.min(st.session_state.working_seed[:,14]),
618
- np.mean(st.session_state.working_seed[:,14]),
619
- np.max(st.session_state.working_seed[:,14]),
620
- np.std(st.session_state.working_seed[:,14])
621
- ]
622
- })
623
- elif slate_type_var1 == 'Showdown':
624
- summary_df = pd.DataFrame({
625
- 'Metric': ['Min', 'Average', 'Max', 'STDdev'],
626
- 'Salary': [
627
- np.min(st.session_state.working_seed[:,6]),
628
- np.mean(st.session_state.working_seed[:,6]),
629
- np.max(st.session_state.working_seed[:,6]),
630
- np.std(st.session_state.working_seed[:,6])
631
- ],
632
- 'Proj': [
633
- np.min(st.session_state.working_seed[:,7]),
634
- np.mean(st.session_state.working_seed[:,7]),
635
- np.max(st.session_state.working_seed[:,7]),
636
- np.std(st.session_state.working_seed[:,7])
637
- ],
638
- 'Own': [
639
- np.min(st.session_state.working_seed[:,12]),
640
- np.mean(st.session_state.working_seed[:,12]),
641
- np.max(st.session_state.working_seed[:,12]),
642
- np.std(st.session_state.working_seed[:,12])
643
- ]
644
- })
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
645
 
646
  elif site_var1 == 'Fanduel':
647
- if slate_type_var1 == 'Regular':
648
- summary_df = pd.DataFrame({
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
649
  'Metric': ['Min', 'Average', 'Max', 'STDdev'],
650
- 'Salary': [
651
- np.min(st.session_state.working_seed[:,9]),
652
- np.mean(st.session_state.working_seed[:,9]),
653
- np.max(st.session_state.working_seed[:,9]),
654
- np.std(st.session_state.working_seed[:,9])
655
- ],
656
- 'Proj': [
657
- np.min(st.session_state.working_seed[:,10]),
658
- np.mean(st.session_state.working_seed[:,10]),
659
- np.max(st.session_state.working_seed[:,10]),
660
- np.std(st.session_state.working_seed[:,10])
661
- ],
662
- 'Own': [
663
- np.min(st.session_state.working_seed[:,15]),
664
- np.mean(st.session_state.working_seed[:,15]),
665
- np.max(st.session_state.working_seed[:,15]),
666
- np.std(st.session_state.working_seed[:,15])
667
- ]
668
- })
669
- elif slate_type_var1 == 'Showdown':
670
- summary_df = pd.DataFrame({
671
- 'Metric': ['Min', 'Average', 'Max', 'STDdev'],
672
- 'Salary': [
673
- np.min(st.session_state.working_seed[:,6]),
674
- np.mean(st.session_state.working_seed[:,6]),
675
- np.max(st.session_state.working_seed[:,6]),
676
- np.std(st.session_state.working_seed[:,6])
677
- ],
678
- 'Proj': [
679
- np.min(st.session_state.working_seed[:,7]),
680
- np.mean(st.session_state.working_seed[:,7]),
681
- np.max(st.session_state.working_seed[:,7]),
682
- np.std(st.session_state.working_seed[:,7])
683
- ],
684
- 'Own': [
685
- np.min(st.session_state.working_seed[:,12]),
686
- np.mean(st.session_state.working_seed[:,12]),
687
- np.max(st.session_state.working_seed[:,12]),
688
- np.std(st.session_state.working_seed[:,12])
689
- ]
690
- })
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
691
 
692
  # Set the index of the summary dataframe as the "Metric" column
693
  summary_df = summary_df.set_index('Metric')
@@ -704,16 +888,29 @@ with tab2:
704
  tab1, tab2 = st.tabs(["Display Frequency", "Seed Frame Frequency"])
705
  with tab1:
706
  if 'data_export_display' in st.session_state:
707
- if slate_type_var1 == 'Regular':
708
- if site_var1 == 'Draftkings':
709
- player_columns = st.session_state.data_export_display.iloc[:, :8]
710
- elif site_var1 == 'Fanduel':
711
- player_columns = st.session_state.data_export_display.iloc[:, :9]
712
- elif slate_type_var1 == 'Showdown':
713
- if site_var1 == 'Draftkings':
714
- player_columns = st.session_state.data_export_display.iloc[:, :5]
715
- elif site_var1 == 'Fanduel':
716
- player_columns = st.session_state.data_export_display.iloc[:, :5]
 
 
 
 
 
 
 
 
 
 
 
 
 
717
 
718
  # Flatten the DataFrame and count unique values
719
  value_counts = player_columns.values.flatten().tolist()
@@ -744,16 +941,28 @@ with tab2:
744
  )
745
  with tab2:
746
  if 'working_seed' in st.session_state:
747
- if slate_type_var1 == 'Regular':
748
- if site_var1 == 'Draftkings':
749
- player_columns = st.session_state.working_seed[:, :8]
750
- elif site_var1 == 'Fanduel':
751
- player_columns = st.session_state.working_seed[:, :9]
752
- elif slate_type_var1 == 'Showdown':
753
- if site_var1 == 'Draftkings':
754
- player_columns = st.session_state.working_seed[:, :5]
755
- elif site_var1 == 'Fanduel':
756
- player_columns = st.session_state.working_seed[:, :5]
 
 
 
 
 
 
 
 
 
 
 
 
757
 
758
  # Flatten the DataFrame and count unique values
759
  value_counts = player_columns.flatten().tolist()
 
19
 
20
  db, wnba_db = init_conn()
21
 
22
+ dk_nba_columns = ['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'FLEX', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
23
+ dk_nba_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
24
+ fd_nba_columns = ['PG1', 'PG2', 'SG1', 'SG2', 'SF1', 'SF2', 'PF1', 'PF2', 'C1', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
25
+ fd_nba_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
26
+
27
+ dk_wnba_columns = ['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
28
+ dk_wnba_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
29
+ fd_wnba_columns = ['G1', 'G2', 'G3', 'F1', 'F2', 'F3', 'F4', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
30
+ fd_wnba_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
31
 
32
  roo_format = {'Top_finish': '{:.2%}', 'Top_5_finish': '{:.2%}', 'Top_10_finish': '{:.2%}', '20+%': '{:.2%}', '4x%': '{:.2%}', '5x%': '{:.2%}', '6x%': '{:.2%}', 'GPP%': '{:.2%}'}
33
 
 
178
  return dk_raw, fd_raw, dk_raw_sec, fd_raw_sec, roo_raw, sd_raw, dk_sd_raw, fd_sd_raw, timestamp
179
 
180
  @st.cache_data(ttl = 60)
181
+ def init_DK_lineups(slate_desig: str, league: str):
182
 
183
  if slate_desig == 'Main Slate':
184
+ if league == 'NBA':
185
+ collection = db['DK_NBA_name_map']
186
+ elif league == 'WNBA':
187
+ collection = wnba_db['DK_WNBA_name_map']
188
  cursor = collection.find()
189
  raw_data = pd.DataFrame(list(cursor))
190
  names_dict = dict(zip(raw_data['key'], raw_data['value']))
191
+
192
+ if league == 'NBA':
193
+ collection = db["DK_NBA_seed_frame"]
194
+ elif league == 'WNBA':
195
+ collection = wnba_db["DK_WNBA_seed_frame"]
196
  cursor = collection.find().limit(10000)
197
  elif slate_desig == 'Secondary':
198
+ if league == 'NBA':
199
+ collection = db['DK_NBA_Secondary_name_map']
200
+ elif league == 'WNBA':
201
+ collection = wnba_db['DK_WNBA_Secondary_name_map']
202
  cursor = collection.find()
203
  raw_data = pd.DataFrame(list(cursor))
204
  names_dict = dict(zip(raw_data['key'], raw_data['value']))
205
+
206
+ if league == 'NBA':
207
+ collection = db["DK_NBA_Secondary_seed_frame"]
208
+ elif league == 'WNBA':
209
+ collection = wnba_db["DK_WNBA_Secondary_seed_frame"]
210
  cursor = collection.find().limit(10000)
211
  elif slate_desig == 'Auxiliary':
212
  collection = db['DK_NBA_Auxiliary_name_map']
 
218
  cursor = collection.find().limit(10000)
219
 
220
  raw_display = pd.DataFrame(list(cursor))
221
+ if league == 'NBA':
222
+ raw_display = raw_display[['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'FLEX', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
223
+ dict_columns = ['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'FLEX']
224
+ elif league == 'WNBA':
225
+ raw_display = raw_display[['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
226
+ dict_columns = ['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL']
227
+
228
  for col in dict_columns:
229
  raw_display[col] = raw_display[col].map(names_dict)
230
  DK_seed = raw_display.to_numpy()
 
232
  return DK_seed
233
 
234
  @st.cache_data(ttl = 60)
235
+ def init_DK_SD_lineups(slate_desig: str, league: str):
236
 
237
  if slate_desig == 'Main Slate':
238
+ if league == 'NBA':
239
+ collection = db["DK_NBA_SD_seed_frame"]
240
+ elif league == 'WNBA':
241
+ collection = wnba_db["DK_WNBA_SD_seed_frame"]
242
  elif slate_desig == 'Secondary':
243
+ if league == 'NBA':
244
+ collection = db["DK_NBA_Secondary_SD_seed_frame"]
245
+ elif league == 'WNBA':
246
+ collection = wnba_db["DK_WNBA_Secondary_SD_seed_frame"]
247
  elif slate_desig == 'Auxiliary':
248
  collection = db["DK_NBA_Auxiliary_SD_seed_frame"]
249
 
 
256
  return DK_seed
257
 
258
  @st.cache_data(ttl = 60)
259
+ def init_FD_lineups(slate_desig: str, league: str):
260
 
261
  if slate_desig == 'Main Slate':
262
+ if league == 'NBA':
263
+ collection = db['FD_NBA_name_map']
264
+ elif league == 'WNBA':
265
+ collection = wnba_db['FD_WNBA_name_map']
266
  cursor = collection.find()
267
  raw_data = pd.DataFrame(list(cursor))
268
  names_dict = dict(zip(raw_data['key'], raw_data['value']))
269
 
270
+ if league == 'NBA':
271
+ collection = db["FD_NBA_seed_frame"]
272
+ elif league == 'WNBA':
273
+ collection = wnba_db["FD_WNBA_seed_frame"]
274
  cursor = collection.find().limit(10000)
275
  elif slate_desig == 'Secondary':
276
+ if league == 'NBA':
277
+ collection = db['FD_NBA_Secondary_name_map']
278
+ elif league == 'WNBA':
279
+ collection = wnba_db['FD_WNBA_Secondary_name_map']
280
  cursor = collection.find()
281
  raw_data = pd.DataFrame(list(cursor))
282
  names_dict = dict(zip(raw_data['key'], raw_data['value']))
283
 
284
+ if league == 'NBA':
285
+ collection = db["FD_NBA_Secondary_seed_frame"]
286
+ elif league == 'WNBA':
287
+ collection = wnba_db["FD_WNBA_Secondary_seed_frame"]
288
  cursor = collection.find().limit(10000)
289
  elif slate_desig == 'Auxiliary':
290
  collection = db['FD_NBA_Auxiliary_name_map']
 
296
  cursor = collection.find().limit(10000)
297
 
298
  raw_display = pd.DataFrame(list(cursor))
299
+ if league == 'NBA':
300
+ raw_display = raw_display[['PG1', 'PG2', 'SG1', 'SG2', 'SF1', 'SF2', 'PF1', 'PF2', 'C1', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
301
+ dict_columns = ['PG1', 'PG2', 'SG1', 'SG2', 'SF1', 'SF2', 'PF1', 'PF2', 'C1']
302
+ elif league == 'WNBA':
303
+ raw_display = raw_display[['G1', 'G2', 'G3', 'F1', 'F2', 'F3', 'F4', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
304
+ dict_columns = ['G1', 'G2', 'G3', 'F1', 'F2', 'F3', 'F4']
305
  for col in dict_columns:
306
  raw_display[col] = raw_display[col].map(names_dict)
307
  FD_seed = raw_display.to_numpy()
 
309
  return FD_seed
310
 
311
  @st.cache_data(ttl = 60)
312
+ def init_FD_SD_lineups(slate_desig: str, league: str):
313
 
314
  if slate_desig == 'Main Slate':
315
+ if league == 'NBA':
316
+ collection = db["FD_NBA_SD_seed_frame"]
317
+ elif league == 'WNBA':
318
+ collection = wnba_db["FD_WNBA_SD_seed_frame"]
319
  elif slate_desig == 'Secondary':
320
+ if league == 'NBA':
321
+ collection = db["FD_NBA_Secondary_SD_seed_frame"]
322
+ elif league == 'WNBA':
323
+ collection = wnba_db["FD_WNBA_Secondary_SD_seed_frame"]
324
  elif slate_desig == 'Auxiliary':
325
  collection = db["FD_NBA_Auxiliary_SD_seed_frame"]
326
 
 
347
  dk_id_dict_sd = dict(zip(dk_sd_raw.Player, dk_sd_raw.player_ID))
348
  fd_id_dict_sd = dict(zip(fd_sd_raw.Player, fd_sd_raw.player_ID))
349
 
350
+ dk_nba_lineups = pd.DataFrame(columns=dk_nba_columns)
351
+ dk_nba_sd_lineups = pd.DataFrame(columns=dk_nba_sd_columns)
352
+ fd_nba_lineups = pd.DataFrame(columns=fd_nba_columns)
353
+ fd_nba_sd_lineups = pd.DataFrame(columns=fd_nba_sd_columns)
354
+
355
+ dk_wnba_lineups = pd.DataFrame(columns=dk_wnba_columns)
356
+ dk_wnba_sd_lineups = pd.DataFrame(columns=dk_wnba_sd_columns)
357
+ fd_wnba_lineups = pd.DataFrame(columns=fd_wnba_columns)
358
+ fd_wnba_sd_lineups = pd.DataFrame(columns=fd_wnba_sd_columns)
359
+
360
  t_stamp = f"Last Update: " + str(timestamp) + f" CST"
361
 
362
  tab1, tab2 = st.tabs(['Range of Outcomes', 'Optimals'])
 
380
  salary_dict_sd = dict(zip(sd_raw.Player, sd_raw.Salary))
381
  dk_id_dict_sd = dict(zip(dk_sd_raw.Player, dk_sd_raw.player_ID))
382
  fd_id_dict_sd = dict(zip(fd_sd_raw.Player, fd_sd_raw.player_ID))
383
+ dk_nba_lineups = pd.DataFrame(columns=dk_nba_columns)
384
+ dk_nba_sd_lineups = pd.DataFrame(columns=dk_nba_sd_columns)
385
+ fd_nba_lineups = pd.DataFrame(columns=fd_nba_columns)
386
+ fd_nba_sd_lineups = pd.DataFrame(columns=fd_nba_sd_columns)
387
+
388
+ dk_wnba_lineups = pd.DataFrame(columns=dk_wnba_columns)
389
+ dk_wnba_sd_lineups = pd.DataFrame(columns=dk_wnba_sd_columns)
390
+ fd_wnba_lineups = pd.DataFrame(columns=fd_wnba_columns)
391
+ fd_wnba_sd_lineups = pd.DataFrame(columns=fd_wnba_sd_columns)
392
  t_stamp = f"Last Update: " + str(timestamp) + f" CST"
393
  for key in st.session_state.keys():
394
  del st.session_state[key]
 
486
  salary_dict_sd = dict(zip(sd_raw.Player, sd_raw.Salary))
487
  dk_id_dict_sd = dict(zip(dk_sd_raw.Player, dk_sd_raw.player_ID))
488
  fd_id_dict_sd = dict(zip(fd_sd_raw.Player, fd_sd_raw.player_ID))
489
+ dk_nba_lineups = pd.DataFrame(columns=dk_nba_columns)
490
+ dk_nba_sd_lineups = pd.DataFrame(columns=dk_nba_sd_columns)
491
+ fd_nba_lineups = pd.DataFrame(columns=fd_nba_columns)
492
+ fd_nba_sd_lineups = pd.DataFrame(columns=fd_nba_sd_columns)
493
+
494
+ dk_wnba_lineups = pd.DataFrame(columns=dk_wnba_columns)
495
+ dk_wnba_sd_lineups = pd.DataFrame(columns=dk_wnba_sd_columns)
496
+ fd_wnba_lineups = pd.DataFrame(columns=fd_wnba_columns)
497
+ fd_wnba_sd_lineups = pd.DataFrame(columns=fd_wnba_sd_columns)
498
  t_stamp = f"Last Update: " + str(timestamp) + f" CST"
499
  for key in st.session_state.keys():
500
  del st.session_state[key]
501
 
502
+ col1, col2, col3, col4, col5, col6 = st.columns(6)
503
  with col1:
504
+ league_var = st.radio("What League to load:", ('NBA', 'WNBA'), key='league_var')
505
  with col2:
506
+ slate_var1 = st.radio("Which data are you loading?", ('Main Slate', 'Secondary'))
507
+ with col3:
508
  site_var1 = st.radio("What site are you working with?", ('Draftkings', 'Fanduel'))
509
  if 'working_seed' in st.session_state:
510
  del st.session_state['working_seed']
 
 
511
  with col4:
512
+ slate_type_var1 = st.radio("What slate type are you working with?", ('Regular', 'Showdown'))
513
  with col5:
514
+ lineup_num_var = st.number_input("How many lineups do you want to display?", min_value=1, max_value=1000, value=150, step=1)
515
+ with col6:
516
  if site_var1 == 'Draftkings':
517
+ if league_var == 'NBA':
518
+ if slate_type_var1 == 'Regular':
519
+ column_names = dk_nba_columns
520
+ elif slate_type_var1 == 'Showdown':
521
+ column_names = dk_nba_sd_columns
522
+ elif league_var == 'WNBA':
523
+ if slate_type_var1 == 'Regular':
524
+ column_names = dk_wnba_columns
525
+ elif slate_type_var1 == 'Showdown':
526
+ column_names = dk_wnba_sd_columns
527
 
528
  player_var1 = st.radio("Do you want a frame with specific Players?", ('Full Slate', 'Specific Players'), key='player_var1')
529
  if player_var1 == 'Specific Players':
 
532
  player_var2 = dk_raw.Player.values.tolist()
533
 
534
  elif site_var1 == 'Fanduel':
535
+ if league_var == 'NBA':
536
+ if slate_type_var1 == 'Regular':
537
+ column_names = fd_nba_columns
538
+ elif slate_type_var1 == 'Showdown':
539
+ column_names = fd_nba_sd_columns
540
+ elif league_var == 'WNBA':
541
+ if slate_type_var1 == 'Regular':
542
+ column_names = fd_wnba_columns
543
+ elif slate_type_var1 == 'Showdown':
544
+ column_names = fd_wnba_sd_columns
545
 
546
  player_var1 = st.radio("Do you want a frame with specific Players?", ('Full Slate', 'Specific Players'), key='player_var1')
547
  if player_var1 == 'Specific Players':
 
552
 
553
  if site_var1 == 'Draftkings':
554
  if slate_type_var1 == 'Regular':
555
+ data_export = init_DK_lineups(slate_var1, league_var)
556
  data_export_names = data_export.copy()
557
  for col_idx in range(8):
558
  data_export[:, col_idx] = np.array([id_dict.get(player, player) for player in data_export[:, col_idx]])
559
  elif slate_type_var1 == 'Showdown':
560
+ data_export = init_DK_SD_lineups(slate_var1, league_var)
561
  data_export_names = data_export.copy()
562
  for col_idx in range(6):
563
  data_export[:, col_idx] = np.array([dk_id_dict_sd.get(player, player) for player in data_export[:, col_idx]])
564
 
565
  elif site_var1 == 'Fanduel':
566
  if slate_type_var1 == 'Regular':
567
+ data_export = init_FD_lineups(slate_var1, league_var)
568
  data_export_names = data_export.copy()
569
  for col_idx in range(9):
570
  data_export[:, col_idx] = np.array([id_dict.get(player, player) for player in data_export[:, col_idx]])
571
  elif slate_type_var1 == 'Showdown':
572
+ data_export = init_FD_SD_lineups(slate_var1, league_var)
573
  data_export_names = data_export.copy()
574
  for col_idx in range(6):
575
  data_export[:, col_idx] = np.array([fd_id_dict_sd.get(player, player) for player in data_export[:, col_idx]])
 
598
 
599
  elif 'working_seed' not in st.session_state:
600
  if slate_type_var1 == 'Regular':
601
+ st.session_state.working_seed = init_DK_lineups(slate_var1, league_var)
602
  elif slate_type_var1 == 'Showdown':
603
+ st.session_state.working_seed = init_DK_SD_lineups(slate_var1, league_var)
604
  st.session_state.working_seed = st.session_state.working_seed
605
  if player_var1 == 'Specific Players':
606
  st.session_state.working_seed = st.session_state.working_seed[np.equal.outer(st.session_state.working_seed, player_var2).any(axis=1).all(axis=1)]
607
  elif player_var1 == 'Full Slate':
608
  if slate_type_var1 == 'Regular':
609
+ st.session_state.working_seed = init_DK_lineups(slate_var1, league_var)
610
  elif slate_type_var1 == 'Showdown':
611
+ st.session_state.working_seed = init_DK_SD_lineups(slate_var1, league_var)
612
  st.session_state.data_export_display = pd.DataFrame(st.session_state.working_seed[0:lineup_num_var], columns=column_names)
613
 
614
  elif site_var1 == 'Fanduel':
 
622
 
623
  elif 'working_seed' not in st.session_state:
624
  if slate_type_var1 == 'Regular':
625
+ st.session_state.working_seed = init_FD_lineups(slate_var1, league_var)
626
  elif slate_type_var1 == 'Showdown':
627
+ st.session_state.working_seed = init_FD_SD_lineups(slate_var1, league_var)
628
  st.session_state.working_seed = st.session_state.working_seed
629
  if player_var1 == 'Specific Players':
630
  st.session_state.working_seed = st.session_state.working_seed[np.equal.outer(st.session_state.working_seed, player_var2).any(axis=1).all(axis=1)]
631
  elif player_var1 == 'Full Slate':
632
  if slate_type_var1 == 'Regular':
633
+ st.session_state.working_seed = init_FD_lineups(slate_var1, league_var)
634
  elif slate_type_var1 == 'Showdown':
635
+ st.session_state.working_seed = init_FD_SD_lineups(slate_var1, league_var)
636
  st.session_state.data_export_display = pd.DataFrame(st.session_state.working_seed[0:lineup_num_var], columns=column_names)
637
 
638
  export_file = st.session_state.data_export_display.copy()
 
656
  for key in st.session_state.keys():
657
  del st.session_state[key]
658
  if site_var1 == 'Draftkings':
659
+ if league_var == 'NBA':
660
+ if slate_type_var1 == 'Regular':
661
+ st.session_state.working_seed = dk_nba_lineups.copy()
662
+ elif slate_type_var1 == 'Showdown':
663
+ st.session_state.working_seed = dk_nba_sd_lineups.copy()
664
+ elif league_var == 'WNBA':
665
+ if slate_type_var1 == 'Regular':
666
+ st.session_state.working_seed = dk_wnba_lineups.copy()
667
+ elif slate_type_var1 == 'Showdown':
668
+ st.session_state.working_seed = dk_wnba_sd_lineups.copy()
669
  elif site_var1 == 'Fanduel':
670
+ if league_var == 'NBA':
671
+ if slate_type_var1 == 'Regular':
672
+ st.session_state.working_seed = fd_nba_lineups.copy()
673
+ elif slate_type_var1 == 'Showdown':
674
+ st.session_state.working_seed = fd_nba_sd_lineups.copy()
675
+ elif league_var == 'WNBA':
676
+ if slate_type_var1 == 'Regular':
677
+ st.session_state.working_seed = fd_wnba_lineups.copy()
678
+ elif slate_type_var1 == 'Showdown':
679
+ st.session_state.working_seed = fd_wnba_sd_lineups.copy()
680
  if 'data_export_display' in st.session_state:
681
  st.dataframe(st.session_state.data_export_display.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(precision=2), height=500, use_container_width = True)
682
  st.download_button(
 
690
  if 'working_seed' in st.session_state:
691
  # Create a new dataframe with summary statistics
692
  if site_var1 == 'Draftkings':
693
+ if league_var == 'NBA':
694
+ if slate_type_var1 == 'Regular':
695
+ summary_df = pd.DataFrame({
696
+ 'Metric': ['Min', 'Average', 'Max', 'STDdev'],
697
+ 'Salary': [
698
+ np.min(st.session_state.working_seed[:,8]),
699
+ np.mean(st.session_state.working_seed[:,8]),
700
+ np.max(st.session_state.working_seed[:,8]),
701
+ np.std(st.session_state.working_seed[:,8])
702
+ ],
703
+ 'Proj': [
704
+ np.min(st.session_state.working_seed[:,9]),
705
+ np.mean(st.session_state.working_seed[:,9]),
706
+ np.max(st.session_state.working_seed[:,9]),
707
+ np.std(st.session_state.working_seed[:,9])
708
+ ],
709
+ 'Own': [
710
+ np.min(st.session_state.working_seed[:,14]),
711
+ np.mean(st.session_state.working_seed[:,14]),
712
+ np.max(st.session_state.working_seed[:,14]),
713
+ np.std(st.session_state.working_seed[:,14])
714
+ ]
715
+ })
716
+ elif slate_type_var1 == 'Showdown':
717
+ summary_df = pd.DataFrame({
718
+ 'Metric': ['Min', 'Average', 'Max', 'STDdev'],
719
+ 'Salary': [
720
+ np.min(st.session_state.working_seed[:,6]),
721
+ np.mean(st.session_state.working_seed[:,6]),
722
+ np.max(st.session_state.working_seed[:,6]),
723
+ np.std(st.session_state.working_seed[:,6])
724
+ ],
725
+ 'Proj': [
726
+ np.min(st.session_state.working_seed[:,7]),
727
+ np.mean(st.session_state.working_seed[:,7]),
728
+ np.max(st.session_state.working_seed[:,7]),
729
+ np.std(st.session_state.working_seed[:,7])
730
+ ],
731
+ 'Own': [
732
+ np.min(st.session_state.working_seed[:,12]),
733
+ np.mean(st.session_state.working_seed[:,12]),
734
+ np.max(st.session_state.working_seed[:,12]),
735
+ np.std(st.session_state.working_seed[:,12])
736
+ ]
737
+ })
738
+ elif league_var == 'WNBA':
739
+ if slate_type_var1 == 'Regular':
740
+ summary_df = pd.DataFrame({
741
+ 'Metric': ['Min', 'Average', 'Max', 'STDdev'],
742
+ 'Salary': [
743
+ np.min(st.session_state.working_seed[:,7]),
744
+ np.mean(st.session_state.working_seed[:,7]),
745
+ np.max(st.session_state.working_seed[:,7]),
746
+ np.std(st.session_state.working_seed[:,7])
747
+ ],
748
+ 'Proj': [
749
+ np.min(st.session_state.working_seed[:,8]),
750
+ np.mean(st.session_state.working_seed[:,8]),
751
+ np.max(st.session_state.working_seed[:,8]),
752
+ np.std(st.session_state.working_seed[:,8])
753
+ ],
754
+ 'Own': [
755
+ np.min(st.session_state.working_seed[:,13]),
756
+ np.mean(st.session_state.working_seed[:,13]),
757
+ np.max(st.session_state.working_seed[:,13]),
758
+ np.std(st.session_state.working_seed[:,13])
759
+ ]
760
+ })
761
+ elif slate_type_var1 == 'Showdown':
762
+ summary_df = pd.DataFrame({
763
+ 'Metric': ['Min', 'Average', 'Max', 'STDdev'],
764
+ 'Salary': [
765
+ np.min(st.session_state.working_seed[:,6]),
766
+ np.mean(st.session_state.working_seed[:,6]),
767
+ np.max(st.session_state.working_seed[:,6]),
768
+ np.std(st.session_state.working_seed[:,6])
769
+ ],
770
+ 'Proj': [
771
+ np.min(st.session_state.working_seed[:,7]),
772
+ np.mean(st.session_state.working_seed[:,7]),
773
+ np.max(st.session_state.working_seed[:,7]),
774
+ np.std(st.session_state.working_seed[:,7])
775
+ ],
776
+ 'Own': [
777
+ np.min(st.session_state.working_seed[:,12]),
778
+ np.mean(st.session_state.working_seed[:,12]),
779
+ np.max(st.session_state.working_seed[:,12]),
780
+ np.std(st.session_state.working_seed[:,12])
781
+ ]
782
+ })
783
 
784
  elif site_var1 == 'Fanduel':
785
+ if league_var == 'NBA':
786
+ if slate_type_var1 == 'Regular':
787
+ summary_df = pd.DataFrame({
788
+ 'Metric': ['Min', 'Average', 'Max', 'STDdev'],
789
+ 'Salary': [
790
+ np.min(st.session_state.working_seed[:,9]),
791
+ np.mean(st.session_state.working_seed[:,9]),
792
+ np.max(st.session_state.working_seed[:,9]),
793
+ np.std(st.session_state.working_seed[:,9])
794
+ ],
795
+ 'Proj': [
796
+ np.min(st.session_state.working_seed[:,10]),
797
+ np.mean(st.session_state.working_seed[:,10]),
798
+ np.max(st.session_state.working_seed[:,10]),
799
+ np.std(st.session_state.working_seed[:,10])
800
+ ],
801
+ 'Own': [
802
+ np.min(st.session_state.working_seed[:,15]),
803
+ np.mean(st.session_state.working_seed[:,15]),
804
+ np.max(st.session_state.working_seed[:,15]),
805
+ np.std(st.session_state.working_seed[:,15])
806
+ ]
807
+ })
808
+ elif slate_type_var1 == 'Showdown':
809
+ summary_df = pd.DataFrame({
810
  'Metric': ['Min', 'Average', 'Max', 'STDdev'],
811
+ 'Salary': [
812
+ np.min(st.session_state.working_seed[:,6]),
813
+ np.mean(st.session_state.working_seed[:,6]),
814
+ np.max(st.session_state.working_seed[:,6]),
815
+ np.std(st.session_state.working_seed[:,6])
816
+ ],
817
+ 'Proj': [
818
+ np.min(st.session_state.working_seed[:,7]),
819
+ np.mean(st.session_state.working_seed[:,7]),
820
+ np.max(st.session_state.working_seed[:,7]),
821
+ np.std(st.session_state.working_seed[:,7])
822
+ ],
823
+ 'Own': [
824
+ np.min(st.session_state.working_seed[:,12]),
825
+ np.mean(st.session_state.working_seed[:,12]),
826
+ np.max(st.session_state.working_seed[:,12]),
827
+ np.std(st.session_state.working_seed[:,12])
828
+ ]
829
+ })
830
+ elif league_var == 'WNBA':
831
+ if slate_type_var1 == 'Regular':
832
+ summary_df = pd.DataFrame({
833
+ 'Metric': ['Min', 'Average', 'Max', 'STDdev'],
834
+ 'Salary': [
835
+ np.min(st.session_state.working_seed[:,8]),
836
+ np.mean(st.session_state.working_seed[:,8]),
837
+ np.max(st.session_state.working_seed[:,8]),
838
+ np.std(st.session_state.working_seed[:,8])
839
+ ],
840
+ 'Proj': [
841
+ np.min(st.session_state.working_seed[:,9]),
842
+ np.mean(st.session_state.working_seed[:,9]),
843
+ np.max(st.session_state.working_seed[:,9]),
844
+ np.std(st.session_state.working_seed[:,9])
845
+ ],
846
+ 'Own': [
847
+ np.min(st.session_state.working_seed[:,14]),
848
+ np.mean(st.session_state.working_seed[:,14]),
849
+ np.max(st.session_state.working_seed[:,14]),
850
+ np.std(st.session_state.working_seed[:,14])
851
+ ]
852
+ })
853
+ elif slate_type_var1 == 'Showdown':
854
+ summary_df = pd.DataFrame({
855
+ 'Metric': ['Min', 'Average', 'Max', 'STDdev'],
856
+ 'Salary': [
857
+ np.min(st.session_state.working_seed[:,6]),
858
+ np.mean(st.session_state.working_seed[:,6]),
859
+ np.max(st.session_state.working_seed[:,6]),
860
+ np.std(st.session_state.working_seed[:,6])
861
+ ],
862
+ 'Proj': [
863
+ np.min(st.session_state.working_seed[:,7]),
864
+ np.mean(st.session_state.working_seed[:,7]),
865
+ np.max(st.session_state.working_seed[:,7]),
866
+ np.std(st.session_state.working_seed[:,7])
867
+ ],
868
+ 'Own': [
869
+ np.min(st.session_state.working_seed[:,12]),
870
+ np.mean(st.session_state.working_seed[:,12]),
871
+ np.max(st.session_state.working_seed[:,12]),
872
+ np.std(st.session_state.working_seed[:,12])
873
+ ]
874
+ })
875
 
876
  # Set the index of the summary dataframe as the "Metric" column
877
  summary_df = summary_df.set_index('Metric')
 
888
  tab1, tab2 = st.tabs(["Display Frequency", "Seed Frame Frequency"])
889
  with tab1:
890
  if 'data_export_display' in st.session_state:
891
+ if league_var == 'NBA':
892
+ if slate_type_var1 == 'Regular':
893
+ if site_var1 == 'Draftkings':
894
+ player_columns = st.session_state.data_export_display.iloc[:, :8]
895
+ elif site_var1 == 'Fanduel':
896
+ player_columns = st.session_state.data_export_display.iloc[:, :9]
897
+ elif slate_type_var1 == 'Showdown':
898
+ if site_var1 == 'Draftkings':
899
+ player_columns = st.session_state.data_export_display.iloc[:, :5]
900
+ elif site_var1 == 'Fanduel':
901
+ player_columns = st.session_state.data_export_display.iloc[:, :5]
902
+ elif league_var == 'WNBA':
903
+ if slate_type_var1 == 'Regular':
904
+ if site_var1 == 'Draftkings':
905
+ player_columns = st.session_state.data_export_display.iloc[:, :7]
906
+ elif site_var1 == 'Fanduel':
907
+ player_columns = st.session_state.data_export_display.iloc[:, :8]
908
+ elif slate_type_var1 == 'Showdown':
909
+ if site_var1 == 'Draftkings':
910
+ player_columns = st.session_state.data_export_display.iloc[:, :5]
911
+ elif site_var1 == 'Fanduel':
912
+ player_columns = st.session_state.data_export_display.iloc[:, :5]
913
+
914
 
915
  # Flatten the DataFrame and count unique values
916
  value_counts = player_columns.values.flatten().tolist()
 
941
  )
942
  with tab2:
943
  if 'working_seed' in st.session_state:
944
+ if league_var == 'NBA':
945
+ if slate_type_var1 == 'Regular':
946
+ if site_var1 == 'Draftkings':
947
+ player_columns = st.session_state.working_seed[:, :8]
948
+ elif site_var1 == 'Fanduel':
949
+ player_columns = st.session_state.working_seed[:, :9]
950
+ elif slate_type_var1 == 'Showdown':
951
+ if site_var1 == 'Draftkings':
952
+ player_columns = st.session_state.working_seed[:, :5]
953
+ elif site_var1 == 'Fanduel':
954
+ player_columns = st.session_state.working_seed[:, :5]
955
+ elif league_var == 'WNBA':
956
+ if slate_type_var1 == 'Regular':
957
+ if site_var1 == 'Draftkings':
958
+ player_columns = st.session_state.working_seed[:, :7]
959
+ elif site_var1 == 'Fanduel':
960
+ player_columns = st.session_state.working_seed[:, :8]
961
+ elif slate_type_var1 == 'Showdown':
962
+ if site_var1 == 'Draftkings':
963
+ player_columns = st.session_state.working_seed[:, :5]
964
+ elif site_var1 == 'Fanduel':
965
+ player_columns = st.session_state.working_seed[:, :5]
966
 
967
  # Flatten the DataFrame and count unique values
968
  value_counts = player_columns.flatten().tolist()