James McCool commited on
Commit
b7f0617
·
1 Parent(s): 841c7fd

Refactor UI layout and improve data loading process for NBA and WNBA; streamline user interactions with tabs and columns for better mobile usability.

Browse files
Files changed (1) hide show
  1. app.py +130 -124
app.py CHANGED
@@ -327,76 +327,88 @@ fd_wnba_sd_lineups = pd.DataFrame(columns=fd_wnba_sd_columns)
327
 
328
  t_stamp = f"Last Update: " + str(timestamp) + f" CST"
329
 
330
- tab1, tab2 = st.tabs(['Range of Outcomes', 'Optimals'])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
331
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
332
  with tab1:
333
 
334
  with st.expander("Info and Filters"):
335
- with st.container():
336
- st.info("Advanced view includes all stats and thresholds, simple includes just basic columns for ease of use on mobile")
337
- with st.container():
338
- # First row - timestamp and reset button
339
- col1, col2 = st.columns([3, 1])
340
- with col1:
341
- st.info(t_stamp)
342
- with col2:
343
- if st.button("Load/Reset Data", key='reset1'):
344
- st.cache_data.clear()
345
- dk_raw, fd_raw, dk_raw_sec, fd_raw_sec, roo_raw, sd_raw, dk_sd_raw, fd_sd_raw, timestamp = load_overall_stats('NBA')
346
- salary_dict = dict(zip(roo_raw.Player, roo_raw.Salary))
347
- id_dict = dict(zip(roo_raw.Player, roo_raw.player_ID))
348
- salary_dict_sd = dict(zip(sd_raw.Player, sd_raw.Salary))
349
- dk_id_dict_sd = dict(zip(dk_sd_raw.Player, dk_sd_raw.player_ID))
350
- fd_id_dict_sd = dict(zip(fd_sd_raw.Player, fd_sd_raw.player_ID))
351
- dk_nba_lineups = pd.DataFrame(columns=dk_nba_columns)
352
- dk_nba_sd_lineups = pd.DataFrame(columns=dk_nba_sd_columns)
353
- fd_nba_lineups = pd.DataFrame(columns=fd_nba_columns)
354
- fd_nba_sd_lineups = pd.DataFrame(columns=fd_nba_sd_columns)
355
-
356
- dk_wnba_lineups = pd.DataFrame(columns=dk_wnba_columns)
357
- dk_wnba_sd_lineups = pd.DataFrame(columns=dk_wnba_sd_columns)
358
- fd_wnba_lineups = pd.DataFrame(columns=fd_wnba_columns)
359
- fd_wnba_sd_lineups = pd.DataFrame(columns=fd_wnba_sd_columns)
360
- t_stamp = f"Last Update: " + str(timestamp) + f" CST"
361
- for key in st.session_state.keys():
362
- del st.session_state[key]
363
- col1, col2, col3, col4, col5, col6 = st.columns(6)
364
  with col1:
365
- view_var2 = st.radio("View Type", ('Simple', 'Advanced'), key='view_var2')
366
- with col2:
367
- league_var = st.radio("What League to load:", ('NBA', 'WNBA'), key='league_var')
368
- dk_raw, fd_raw, dk_raw_sec, fd_raw_sec, roo_raw, sd_raw, dk_sd_raw, fd_sd_raw, timestamp = load_overall_stats(league_var)
369
- with col3:
370
  slate_type_var2 = st.radio("What slate type are you working with?", ('Regular', 'Showdown'), key='slate_type_var2')
371
- with col4:
372
- site_var2 = st.radio("Site", ('Draftkings', 'Fanduel'), key='site_var2')
373
-
374
- # Process site selection
375
- if site_var2 == 'Draftkings':
376
- if slate_type_var2 == 'Regular':
377
- site_baselines = roo_raw[roo_raw['site'] == 'Draftkings']
378
- elif slate_type_var2 == 'Showdown':
379
- site_baselines = sd_raw[sd_raw['site'] == 'Draftkings']
380
- elif site_var2 == 'Fanduel':
381
- if slate_type_var2 == 'Regular':
382
- site_baselines = roo_raw[roo_raw['site'] == 'Fanduel']
383
- elif slate_type_var2 == 'Showdown':
384
- site_baselines = sd_raw[sd_raw['site'] == 'Fanduel']
385
- with col5:
386
  slate_split = st.radio("Slate Type", ('Main Slate', 'Secondary'), key='slate_split')
387
 
388
  if slate_split == 'Main Slate':
389
- if slate_type_var2 == 'Regular':
390
- raw_baselines = site_baselines[site_baselines['slate'] == 'Main Slate']
391
- elif slate_type_var2 == 'Showdown':
392
- raw_baselines = site_baselines[site_baselines['slate'] == 'Showdown #1']
 
 
 
 
 
 
 
 
 
 
393
  elif slate_split == 'Secondary':
394
- if slate_type_var2 == 'Regular':
395
- raw_baselines = site_baselines[site_baselines['slate'] == 'Secondary Slate']
396
- elif slate_type_var2 == 'Showdown':
397
- raw_baselines = site_baselines[site_baselines['slate'] == 'Showdown #2']
 
 
 
 
 
 
 
 
 
 
398
 
399
- with col6:
400
  split_var2 = st.radio("Slate Range", ('Full Slate Run', 'Specific Games'), key='split_var2')
401
  if split_var2 == 'Specific Games':
402
  team_var2 = st.multiselect('Select teams for ROO', options=raw_baselines['Team'].unique(), key='team_var2')
@@ -469,25 +481,19 @@ with tab2:
469
 
470
  col1, col2, col3, col4, col5, col6 = st.columns(6)
471
  with col1:
472
- league_var2 = st.radio("What League to load:", ('NBA', 'WNBA'), key='league_var2')
473
- with col2:
474
  slate_var1 = st.radio("Which data are you loading?", ('Main Slate', 'Secondary'))
475
- with col3:
476
- site_var1 = st.radio("What site are you working with?", ('Draftkings', 'Fanduel'))
477
- if 'working_seed' in st.session_state:
478
- del st.session_state['working_seed']
479
- with col4:
480
  slate_type_var1 = st.radio("What slate type are you working with?", ('Regular', 'Showdown'))
481
- with col5:
482
  lineup_num_var = st.number_input("How many lineups do you want to display?", min_value=1, max_value=1000, value=150, step=1)
483
- with col6:
484
- if site_var1 == 'Draftkings':
485
- if league_var2 == 'NBA':
486
  if slate_type_var1 == 'Regular':
487
  column_names = dk_nba_columns
488
  elif slate_type_var1 == 'Showdown':
489
  column_names = dk_nba_sd_columns
490
- elif league_var2 == 'WNBA':
491
  if slate_type_var1 == 'Regular':
492
  column_names = dk_wnba_columns
493
  elif slate_type_var1 == 'Showdown':
@@ -499,13 +505,13 @@ with tab2:
499
  elif player_var1 == 'Full Slate':
500
  player_var2 = dk_raw.Player.values.tolist()
501
 
502
- elif site_var1 == 'Fanduel':
503
- if league_var2 == 'NBA':
504
  if slate_type_var1 == 'Regular':
505
  column_names = fd_nba_columns
506
  elif slate_type_var1 == 'Showdown':
507
  column_names = fd_nba_sd_columns
508
- elif league_var2 == 'WNBA':
509
  if slate_type_var1 == 'Regular':
510
  column_names = fd_wnba_columns
511
  elif slate_type_var1 == 'Showdown':
@@ -518,26 +524,26 @@ with tab2:
518
  player_var2 = fd_raw.Player.values.tolist()
519
  if st.button("Prepare data export", key='data_export'):
520
 
521
- if site_var1 == 'Draftkings':
522
  if slate_type_var1 == 'Regular':
523
- data_export = init_DK_lineups(slate_var1, league_var2)
524
  data_export_names = data_export.copy()
525
  for col_idx in range(8):
526
  data_export[:, col_idx] = np.array([id_dict.get(player, player) for player in data_export[:, col_idx]])
527
  elif slate_type_var1 == 'Showdown':
528
- data_export = init_DK_SD_lineups(slate_var1, league_var2)
529
  data_export_names = data_export.copy()
530
  for col_idx in range(6):
531
  data_export[:, col_idx] = np.array([dk_id_dict_sd.get(player, player) for player in data_export[:, col_idx]])
532
 
533
- elif site_var1 == 'Fanduel':
534
  if slate_type_var1 == 'Regular':
535
- data_export = init_FD_lineups(slate_var1, league_var2)
536
  data_export_names = data_export.copy()
537
  for col_idx in range(9):
538
  data_export[:, col_idx] = np.array([id_dict.get(player, player) for player in data_export[:, col_idx]])
539
  elif slate_type_var1 == 'Showdown':
540
- data_export = init_FD_SD_lineups(slate_var1, league_var2)
541
  data_export_names = data_export.copy()
542
  for col_idx in range(6):
543
  data_export[:, col_idx] = np.array([fd_id_dict_sd.get(player, player) for player in data_export[:, col_idx]])
@@ -555,7 +561,7 @@ with tab2:
555
  )
556
 
557
 
558
- if site_var1 == 'Draftkings':
559
  if 'working_seed' in st.session_state:
560
  st.session_state.working_seed = st.session_state.working_seed
561
  if player_var1 == 'Specific Players':
@@ -566,20 +572,20 @@ with tab2:
566
 
567
  elif 'working_seed' not in st.session_state:
568
  if slate_type_var1 == 'Regular':
569
- st.session_state.working_seed = init_DK_lineups(slate_var1, league_var2)
570
  elif slate_type_var1 == 'Showdown':
571
- st.session_state.working_seed = init_DK_SD_lineups(slate_var1, league_var2)
572
  st.session_state.working_seed = st.session_state.working_seed
573
  if player_var1 == 'Specific Players':
574
  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)]
575
  elif player_var1 == 'Full Slate':
576
  if slate_type_var1 == 'Regular':
577
- st.session_state.working_seed = init_DK_lineups(slate_var1, league_var2)
578
  elif slate_type_var1 == 'Showdown':
579
- st.session_state.working_seed = init_DK_SD_lineups(slate_var1, league_var2)
580
  st.session_state.data_export_display = pd.DataFrame(st.session_state.working_seed[0:lineup_num_var], columns=column_names)
581
 
582
- elif site_var1 == 'Fanduel':
583
  if 'working_seed' in st.session_state:
584
  st.session_state.working_seed = st.session_state.working_seed
585
  if player_var1 == 'Specific Players':
@@ -590,28 +596,28 @@ with tab2:
590
 
591
  elif 'working_seed' not in st.session_state:
592
  if slate_type_var1 == 'Regular':
593
- st.session_state.working_seed = init_FD_lineups(slate_var1, league_var2)
594
  elif slate_type_var1 == 'Showdown':
595
- st.session_state.working_seed = init_FD_SD_lineups(slate_var1, league_var2)
596
  st.session_state.working_seed = st.session_state.working_seed
597
  if player_var1 == 'Specific Players':
598
  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)]
599
  elif player_var1 == 'Full Slate':
600
  if slate_type_var1 == 'Regular':
601
- st.session_state.working_seed = init_FD_lineups(slate_var1, league_var2)
602
  elif slate_type_var1 == 'Showdown':
603
- st.session_state.working_seed = init_FD_SD_lineups(slate_var1, league_var2)
604
  st.session_state.data_export_display = pd.DataFrame(st.session_state.working_seed[0:lineup_num_var], columns=column_names)
605
 
606
  export_file = st.session_state.data_export_display.copy()
607
- if site_var1 == 'Draftkings':
608
  if slate_type_var1 == 'Regular':
609
  for col_idx in range(8):
610
  export_file.iloc[:, col_idx] = export_file.iloc[:, col_idx].map(id_dict)
611
  elif slate_type_var1 == 'Showdown':
612
  for col_idx in range(6):
613
  export_file.iloc[:, col_idx] = export_file.iloc[:, col_idx].map(dk_id_dict_sd)
614
- elif site_var1 == 'Fanduel':
615
  if slate_type_var1 == 'Regular':
616
  for col_idx in range(9):
617
  export_file.iloc[:, col_idx] = export_file.iloc[:, col_idx].map(id_dict)
@@ -623,24 +629,24 @@ with tab2:
623
  if st.button("Reset Optimals", key='reset3'):
624
  for key in st.session_state.keys():
625
  del st.session_state[key]
626
- if site_var1 == 'Draftkings':
627
- if league_var2 == 'NBA':
628
  if slate_type_var1 == 'Regular':
629
  st.session_state.working_seed = dk_nba_lineups.copy()
630
  elif slate_type_var1 == 'Showdown':
631
  st.session_state.working_seed = dk_nba_sd_lineups.copy()
632
- elif league_var2 == 'WNBA':
633
  if slate_type_var1 == 'Regular':
634
  st.session_state.working_seed = dk_wnba_lineups.copy()
635
  elif slate_type_var1 == 'Showdown':
636
  st.session_state.working_seed = dk_wnba_sd_lineups.copy()
637
- elif site_var1 == 'Fanduel':
638
- if league_var2 == 'NBA':
639
  if slate_type_var1 == 'Regular':
640
  st.session_state.working_seed = fd_nba_lineups.copy()
641
  elif slate_type_var1 == 'Showdown':
642
  st.session_state.working_seed = fd_nba_sd_lineups.copy()
643
- elif league_var2 == 'WNBA':
644
  if slate_type_var1 == 'Regular':
645
  st.session_state.working_seed = fd_wnba_lineups.copy()
646
  elif slate_type_var1 == 'Showdown':
@@ -657,8 +663,8 @@ with tab2:
657
  with st.container():
658
  if 'working_seed' in st.session_state:
659
  # Create a new dataframe with summary statistics
660
- if site_var1 == 'Draftkings':
661
- if league_var2 == 'NBA':
662
  if slate_type_var1 == 'Regular':
663
  summary_df = pd.DataFrame({
664
  'Metric': ['Min', 'Average', 'Max', 'STDdev'],
@@ -703,7 +709,7 @@ with tab2:
703
  np.std(st.session_state.working_seed[:,12])
704
  ]
705
  })
706
- elif league_var2 == 'WNBA':
707
  if slate_type_var1 == 'Regular':
708
  summary_df = pd.DataFrame({
709
  'Metric': ['Min', 'Average', 'Max', 'STDdev'],
@@ -749,8 +755,8 @@ with tab2:
749
  ]
750
  })
751
 
752
- elif site_var1 == 'Fanduel':
753
- if league_var2 == 'NBA':
754
  if slate_type_var1 == 'Regular':
755
  summary_df = pd.DataFrame({
756
  'Metric': ['Min', 'Average', 'Max', 'STDdev'],
@@ -795,7 +801,7 @@ with tab2:
795
  np.std(st.session_state.working_seed[:,12])
796
  ]
797
  })
798
- elif league_var2 == 'WNBA':
799
  if slate_type_var1 == 'Regular':
800
  summary_df = pd.DataFrame({
801
  'Metric': ['Min', 'Average', 'Max', 'STDdev'],
@@ -856,27 +862,27 @@ with tab2:
856
  tab1, tab2 = st.tabs(["Display Frequency", "Seed Frame Frequency"])
857
  with tab1:
858
  if 'data_export_display' in st.session_state:
859
- if league_var2 == 'NBA':
860
  if slate_type_var1 == 'Regular':
861
- if site_var1 == 'Draftkings':
862
  player_columns = st.session_state.data_export_display.iloc[:, :8]
863
- elif site_var1 == 'Fanduel':
864
  player_columns = st.session_state.data_export_display.iloc[:, :9]
865
  elif slate_type_var1 == 'Showdown':
866
- if site_var1 == 'Draftkings':
867
  player_columns = st.session_state.data_export_display.iloc[:, :5]
868
- elif site_var1 == 'Fanduel':
869
  player_columns = st.session_state.data_export_display.iloc[:, :5]
870
- elif league_var2 == 'WNBA':
871
  if slate_type_var1 == 'Regular':
872
- if site_var1 == 'Draftkings':
873
  player_columns = st.session_state.data_export_display.iloc[:, :7]
874
- elif site_var1 == 'Fanduel':
875
  player_columns = st.session_state.data_export_display.iloc[:, :8]
876
  elif slate_type_var1 == 'Showdown':
877
- if site_var1 == 'Draftkings':
878
  player_columns = st.session_state.data_export_display.iloc[:, :5]
879
- elif site_var1 == 'Fanduel':
880
  player_columns = st.session_state.data_export_display.iloc[:, :5]
881
 
882
 
@@ -909,27 +915,27 @@ with tab2:
909
  )
910
  with tab2:
911
  if 'working_seed' in st.session_state:
912
- if league_var2 == 'NBA':
913
  if slate_type_var1 == 'Regular':
914
- if site_var1 == 'Draftkings':
915
  player_columns = st.session_state.working_seed[:, :8]
916
- elif site_var1 == 'Fanduel':
917
  player_columns = st.session_state.working_seed[:, :9]
918
  elif slate_type_var1 == 'Showdown':
919
- if site_var1 == 'Draftkings':
920
  player_columns = st.session_state.working_seed[:, :5]
921
- elif site_var1 == 'Fanduel':
922
  player_columns = st.session_state.working_seed[:, :5]
923
- elif league_var2 == 'WNBA':
924
  if slate_type_var1 == 'Regular':
925
- if site_var1 == 'Draftkings':
926
  player_columns = st.session_state.working_seed[:, :7]
927
- elif site_var1 == 'Fanduel':
928
  player_columns = st.session_state.working_seed[:, :8]
929
  elif slate_type_var1 == 'Showdown':
930
- if site_var1 == 'Draftkings':
931
  player_columns = st.session_state.working_seed[:, :5]
932
- elif site_var1 == 'Fanduel':
933
  player_columns = st.session_state.working_seed[:, :5]
934
 
935
  # Flatten the DataFrame and count unique values
 
327
 
328
  t_stamp = f"Last Update: " + str(timestamp) + f" CST"
329
 
330
+ with st.container():
331
+ st.info("Advanced view includes all stats and thresholds, simple includes just basic columns for ease of use on mobile")
332
+ reset_col, view_col, site_col, league_col = st.columns(4)
333
+ with reset_col:
334
+ # First row - timestamp and reset button
335
+ col1, col2 = st.columns([3, 3])
336
+ with col1:
337
+ st.info(t_stamp)
338
+ with col2:
339
+ if st.button("Load/Reset Data", key='reset1'):
340
+ st.cache_data.clear()
341
+ dk_raw, fd_raw, dk_raw_sec, fd_raw_sec, roo_raw, sd_raw, dk_sd_raw, fd_sd_raw, timestamp = load_overall_stats('NBA')
342
+ salary_dict = dict(zip(roo_raw.Player, roo_raw.Salary))
343
+ id_dict = dict(zip(roo_raw.Player, roo_raw.player_ID))
344
+ salary_dict_sd = dict(zip(sd_raw.Player, sd_raw.Salary))
345
+ dk_id_dict_sd = dict(zip(dk_sd_raw.Player, dk_sd_raw.player_ID))
346
+ fd_id_dict_sd = dict(zip(fd_sd_raw.Player, fd_sd_raw.player_ID))
347
+ dk_nba_lineups = pd.DataFrame(columns=dk_nba_columns)
348
+ dk_nba_sd_lineups = pd.DataFrame(columns=dk_nba_sd_columns)
349
+ fd_nba_lineups = pd.DataFrame(columns=fd_nba_columns)
350
+ fd_nba_sd_lineups = pd.DataFrame(columns=fd_nba_sd_columns)
351
 
352
+ dk_wnba_lineups = pd.DataFrame(columns=dk_wnba_columns)
353
+ dk_wnba_sd_lineups = pd.DataFrame(columns=dk_wnba_sd_columns)
354
+ fd_wnba_lineups = pd.DataFrame(columns=fd_wnba_columns)
355
+ fd_wnba_sd_lineups = pd.DataFrame(columns=fd_wnba_sd_columns)
356
+ t_stamp = f"Last Update: " + str(timestamp) + f" CST"
357
+ for key in st.session_state.keys():
358
+ del st.session_state[key]
359
+ with view_col:
360
+ view_var2 = st.radio("View Type", ('Simple', 'Advanced'), key='view_var2')
361
+ with site_col:
362
+ site_var2 = st.radio("Site", ('Draftkings', 'Fanduel'), key='site_var2')
363
+ if 'working_seed' in st.session_state:
364
+ del st.session_state['working_seed']
365
+ with league_col:
366
+ league_var = st.radio("What League to load:", ('WNBA', 'NBA'), key='league_var')
367
+ dk_raw, fd_raw, dk_raw_sec, fd_raw_sec, roo_raw, sd_raw, dk_sd_raw, fd_sd_raw, timestamp = load_overall_stats(league_var)
368
+
369
+ tab1, tab2 = st.tabs(['Range of Outcomes', 'Optimals'])
370
  with tab1:
371
 
372
  with st.expander("Info and Filters"):
373
+ col1, col2, col3 = st.columns(3)
374
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
375
  with col1:
 
 
 
 
 
376
  slate_type_var2 = st.radio("What slate type are you working with?", ('Regular', 'Showdown'), key='slate_type_var2')
377
+ with col2:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
378
  slate_split = st.radio("Slate Type", ('Main Slate', 'Secondary'), key='slate_split')
379
 
380
  if slate_split == 'Main Slate':
381
+ if site_var2 == 'Draftkings':
382
+ if slate_type_var2 == 'Regular':
383
+ site_baselines = roo_raw[roo_raw['site'] == 'Draftkings']
384
+ raw_baselines = site_baselines[site_baselines['slate'] == 'Main Slate']
385
+ elif slate_type_var2 == 'Showdown':
386
+ site_baselines = sd_raw[sd_raw['site'] == 'Draftkings']
387
+ raw_baselines = site_baselines[site_baselines['slate'] == 'Showdown #1']
388
+ elif site_var2 == 'Fanduel':
389
+ if slate_type_var2 == 'Regular':
390
+ site_baselines = roo_raw[roo_raw['site'] == 'Fanduel']
391
+ raw_baselines = site_baselines[site_baselines['slate'] == 'Main Slate']
392
+ elif slate_type_var2 == 'Showdown':
393
+ site_baselines = sd_raw[sd_raw['site'] == 'Fanduel']
394
+ raw_baselines = site_baselines[site_baselines['slate'] == 'Showdown #1']
395
  elif slate_split == 'Secondary':
396
+ if site_var2 == 'Draftkings':
397
+ if slate_type_var2 == 'Regular':
398
+ site_baselines = roo_raw[roo_raw['site'] == 'Draftkings']
399
+ raw_baselines = site_baselines[site_baselines['slate'] == 'Secondary Slate']
400
+ elif slate_type_var2 == 'Showdown':
401
+ site_baselines = sd_raw[sd_raw['site'] == 'Draftkings']
402
+ raw_baselines = site_baselines[site_baselines['slate'] == 'Showdown #2']
403
+ elif site_var2 == 'Fanduel':
404
+ if slate_type_var2 == 'Regular':
405
+ site_baselines = roo_raw[roo_raw['site'] == 'Fanduel']
406
+ raw_baselines = site_baselines[site_baselines['slate'] == 'Secondary Slate']
407
+ elif slate_type_var2 == 'Showdown':
408
+ site_baselines = sd_raw[sd_raw['site'] == 'Fanduel']
409
+ raw_baselines = site_baselines[site_baselines['slate'] == 'Showdown #2']
410
 
411
+ with col3:
412
  split_var2 = st.radio("Slate Range", ('Full Slate Run', 'Specific Games'), key='split_var2')
413
  if split_var2 == 'Specific Games':
414
  team_var2 = st.multiselect('Select teams for ROO', options=raw_baselines['Team'].unique(), key='team_var2')
 
481
 
482
  col1, col2, col3, col4, col5, col6 = st.columns(6)
483
  with col1:
 
 
484
  slate_var1 = st.radio("Which data are you loading?", ('Main Slate', 'Secondary'))
485
+ with col2:
 
 
 
 
486
  slate_type_var1 = st.radio("What slate type are you working with?", ('Regular', 'Showdown'))
487
+ with col3:
488
  lineup_num_var = st.number_input("How many lineups do you want to display?", min_value=1, max_value=1000, value=150, step=1)
489
+ with col4:
490
+ if site_var2 == 'Draftkings':
491
+ if league_var == 'NBA':
492
  if slate_type_var1 == 'Regular':
493
  column_names = dk_nba_columns
494
  elif slate_type_var1 == 'Showdown':
495
  column_names = dk_nba_sd_columns
496
+ elif league_var == 'WNBA':
497
  if slate_type_var1 == 'Regular':
498
  column_names = dk_wnba_columns
499
  elif slate_type_var1 == 'Showdown':
 
505
  elif player_var1 == 'Full Slate':
506
  player_var2 = dk_raw.Player.values.tolist()
507
 
508
+ elif site_var2 == 'Fanduel':
509
+ if league_var == 'NBA':
510
  if slate_type_var1 == 'Regular':
511
  column_names = fd_nba_columns
512
  elif slate_type_var1 == 'Showdown':
513
  column_names = fd_nba_sd_columns
514
+ elif league_var == 'WNBA':
515
  if slate_type_var1 == 'Regular':
516
  column_names = fd_wnba_columns
517
  elif slate_type_var1 == 'Showdown':
 
524
  player_var2 = fd_raw.Player.values.tolist()
525
  if st.button("Prepare data export", key='data_export'):
526
 
527
+ if site_var2 == 'Draftkings':
528
  if slate_type_var1 == 'Regular':
529
+ data_export = init_DK_lineups(slate_var1, league_var)
530
  data_export_names = data_export.copy()
531
  for col_idx in range(8):
532
  data_export[:, col_idx] = np.array([id_dict.get(player, player) for player in data_export[:, col_idx]])
533
  elif slate_type_var1 == 'Showdown':
534
+ data_export = init_DK_SD_lineups(slate_var1, league_var)
535
  data_export_names = data_export.copy()
536
  for col_idx in range(6):
537
  data_export[:, col_idx] = np.array([dk_id_dict_sd.get(player, player) for player in data_export[:, col_idx]])
538
 
539
+ elif site_var2 == 'Fanduel':
540
  if slate_type_var1 == 'Regular':
541
+ data_export = init_FD_lineups(slate_var1, league_var)
542
  data_export_names = data_export.copy()
543
  for col_idx in range(9):
544
  data_export[:, col_idx] = np.array([id_dict.get(player, player) for player in data_export[:, col_idx]])
545
  elif slate_type_var1 == 'Showdown':
546
+ data_export = init_FD_SD_lineups(slate_var1, league_var)
547
  data_export_names = data_export.copy()
548
  for col_idx in range(6):
549
  data_export[:, col_idx] = np.array([fd_id_dict_sd.get(player, player) for player in data_export[:, col_idx]])
 
561
  )
562
 
563
 
564
+ if site_var2 == 'Draftkings':
565
  if 'working_seed' in st.session_state:
566
  st.session_state.working_seed = st.session_state.working_seed
567
  if player_var1 == 'Specific Players':
 
572
 
573
  elif 'working_seed' not in st.session_state:
574
  if slate_type_var1 == 'Regular':
575
+ st.session_state.working_seed = init_DK_lineups(slate_var1, league_var)
576
  elif slate_type_var1 == 'Showdown':
577
+ st.session_state.working_seed = init_DK_SD_lineups(slate_var1, league_var)
578
  st.session_state.working_seed = st.session_state.working_seed
579
  if player_var1 == 'Specific Players':
580
  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)]
581
  elif player_var1 == 'Full Slate':
582
  if slate_type_var1 == 'Regular':
583
+ st.session_state.working_seed = init_DK_lineups(slate_var1, league_var)
584
  elif slate_type_var1 == 'Showdown':
585
+ st.session_state.working_seed = init_DK_SD_lineups(slate_var1, league_var)
586
  st.session_state.data_export_display = pd.DataFrame(st.session_state.working_seed[0:lineup_num_var], columns=column_names)
587
 
588
+ elif site_var2 == 'Fanduel':
589
  if 'working_seed' in st.session_state:
590
  st.session_state.working_seed = st.session_state.working_seed
591
  if player_var1 == 'Specific Players':
 
596
 
597
  elif 'working_seed' not in st.session_state:
598
  if slate_type_var1 == 'Regular':
599
+ st.session_state.working_seed = init_FD_lineups(slate_var1, league_var)
600
  elif slate_type_var1 == 'Showdown':
601
+ st.session_state.working_seed = init_FD_SD_lineups(slate_var1, league_var)
602
  st.session_state.working_seed = st.session_state.working_seed
603
  if player_var1 == 'Specific Players':
604
  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)]
605
  elif player_var1 == 'Full Slate':
606
  if slate_type_var1 == 'Regular':
607
+ st.session_state.working_seed = init_FD_lineups(slate_var1, league_var)
608
  elif slate_type_var1 == 'Showdown':
609
+ st.session_state.working_seed = init_FD_SD_lineups(slate_var1, league_var)
610
  st.session_state.data_export_display = pd.DataFrame(st.session_state.working_seed[0:lineup_num_var], columns=column_names)
611
 
612
  export_file = st.session_state.data_export_display.copy()
613
+ if site_var2 == 'Draftkings':
614
  if slate_type_var1 == 'Regular':
615
  for col_idx in range(8):
616
  export_file.iloc[:, col_idx] = export_file.iloc[:, col_idx].map(id_dict)
617
  elif slate_type_var1 == 'Showdown':
618
  for col_idx in range(6):
619
  export_file.iloc[:, col_idx] = export_file.iloc[:, col_idx].map(dk_id_dict_sd)
620
+ elif site_var2 == 'Fanduel':
621
  if slate_type_var1 == 'Regular':
622
  for col_idx in range(9):
623
  export_file.iloc[:, col_idx] = export_file.iloc[:, col_idx].map(id_dict)
 
629
  if st.button("Reset Optimals", key='reset3'):
630
  for key in st.session_state.keys():
631
  del st.session_state[key]
632
+ if site_var2 == 'Draftkings':
633
+ if league_var == 'NBA':
634
  if slate_type_var1 == 'Regular':
635
  st.session_state.working_seed = dk_nba_lineups.copy()
636
  elif slate_type_var1 == 'Showdown':
637
  st.session_state.working_seed = dk_nba_sd_lineups.copy()
638
+ elif league_var == 'WNBA':
639
  if slate_type_var1 == 'Regular':
640
  st.session_state.working_seed = dk_wnba_lineups.copy()
641
  elif slate_type_var1 == 'Showdown':
642
  st.session_state.working_seed = dk_wnba_sd_lineups.copy()
643
+ elif site_var2 == 'Fanduel':
644
+ if league_var == 'NBA':
645
  if slate_type_var1 == 'Regular':
646
  st.session_state.working_seed = fd_nba_lineups.copy()
647
  elif slate_type_var1 == 'Showdown':
648
  st.session_state.working_seed = fd_nba_sd_lineups.copy()
649
+ elif league_var == 'WNBA':
650
  if slate_type_var1 == 'Regular':
651
  st.session_state.working_seed = fd_wnba_lineups.copy()
652
  elif slate_type_var1 == 'Showdown':
 
663
  with st.container():
664
  if 'working_seed' in st.session_state:
665
  # Create a new dataframe with summary statistics
666
+ if site_var2 == 'Draftkings':
667
+ if league_var == 'NBA':
668
  if slate_type_var1 == 'Regular':
669
  summary_df = pd.DataFrame({
670
  'Metric': ['Min', 'Average', 'Max', 'STDdev'],
 
709
  np.std(st.session_state.working_seed[:,12])
710
  ]
711
  })
712
+ elif league_var == 'WNBA':
713
  if slate_type_var1 == 'Regular':
714
  summary_df = pd.DataFrame({
715
  'Metric': ['Min', 'Average', 'Max', 'STDdev'],
 
755
  ]
756
  })
757
 
758
+ elif site_var2 == 'Fanduel':
759
+ if league_var == 'NBA':
760
  if slate_type_var1 == 'Regular':
761
  summary_df = pd.DataFrame({
762
  'Metric': ['Min', 'Average', 'Max', 'STDdev'],
 
801
  np.std(st.session_state.working_seed[:,12])
802
  ]
803
  })
804
+ elif league_var == 'WNBA':
805
  if slate_type_var1 == 'Regular':
806
  summary_df = pd.DataFrame({
807
  'Metric': ['Min', 'Average', 'Max', 'STDdev'],
 
862
  tab1, tab2 = st.tabs(["Display Frequency", "Seed Frame Frequency"])
863
  with tab1:
864
  if 'data_export_display' in st.session_state:
865
+ if league_var == 'NBA':
866
  if slate_type_var1 == 'Regular':
867
+ if site_var2 == 'Draftkings':
868
  player_columns = st.session_state.data_export_display.iloc[:, :8]
869
+ elif site_var2 == 'Fanduel':
870
  player_columns = st.session_state.data_export_display.iloc[:, :9]
871
  elif slate_type_var1 == 'Showdown':
872
+ if site_var2 == 'Draftkings':
873
  player_columns = st.session_state.data_export_display.iloc[:, :5]
874
+ elif site_var2 == 'Fanduel':
875
  player_columns = st.session_state.data_export_display.iloc[:, :5]
876
+ elif league_var == 'WNBA':
877
  if slate_type_var1 == 'Regular':
878
+ if site_var2 == 'Draftkings':
879
  player_columns = st.session_state.data_export_display.iloc[:, :7]
880
+ elif site_var2 == 'Fanduel':
881
  player_columns = st.session_state.data_export_display.iloc[:, :8]
882
  elif slate_type_var1 == 'Showdown':
883
+ if site_var2 == 'Draftkings':
884
  player_columns = st.session_state.data_export_display.iloc[:, :5]
885
+ elif site_var2 == 'Fanduel':
886
  player_columns = st.session_state.data_export_display.iloc[:, :5]
887
 
888
 
 
915
  )
916
  with tab2:
917
  if 'working_seed' in st.session_state:
918
+ if league_var == 'NBA':
919
  if slate_type_var1 == 'Regular':
920
+ if site_var2 == 'Draftkings':
921
  player_columns = st.session_state.working_seed[:, :8]
922
+ elif site_var2 == 'Fanduel':
923
  player_columns = st.session_state.working_seed[:, :9]
924
  elif slate_type_var1 == 'Showdown':
925
+ if site_var2 == 'Draftkings':
926
  player_columns = st.session_state.working_seed[:, :5]
927
+ elif site_var2 == 'Fanduel':
928
  player_columns = st.session_state.working_seed[:, :5]
929
+ elif league_var == 'WNBA':
930
  if slate_type_var1 == 'Regular':
931
+ if site_var2 == 'Draftkings':
932
  player_columns = st.session_state.working_seed[:, :7]
933
+ elif site_var2 == 'Fanduel':
934
  player_columns = st.session_state.working_seed[:, :8]
935
  elif slate_type_var1 == 'Showdown':
936
+ if site_var2 == 'Draftkings':
937
  player_columns = st.session_state.working_seed[:, :5]
938
+ elif site_var2 == 'Fanduel':
939
  player_columns = st.session_state.working_seed[:, :5]
940
 
941
  # Flatten the DataFrame and count unique values