James McCool commited on
Commit
9c3aa05
·
1 Parent(s): 02d2bcd

Refactor app.py layout and logic for improved user interaction: reorganize UI components for league and site selection, enhance data loading functionality, and streamline slate type handling, ensuring a more intuitive experience for users managing NBA and WNBA lineups.

Browse files
Files changed (1) hide show
  1. app.py +130 -123
app.py CHANGED
@@ -363,72 +363,85 @@ tab1, tab2 = st.tabs(['Range of Outcomes', 'Optimals'])
363
 
364
  with tab1:
365
 
366
- with st.expander("Info and Filters"):
367
- with st.container():
368
- st.info("Advanced view includes all stats and thresholds, simple includes just basic columns for ease of use on mobile")
369
- with st.container():
370
- # First row - timestamp and reset button
371
- col1, col2 = st.columns([3, 1])
372
- with col1:
373
- st.info(t_stamp)
374
- with col2:
375
- if st.button("Load/Reset Data", key='reset1'):
376
- st.cache_data.clear()
377
- 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')
378
- salary_dict = dict(zip(roo_raw.Player, roo_raw.Salary))
379
- id_dict = dict(zip(roo_raw.Player, roo_raw.player_ID))
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]
395
- col1, col2, col3, col4, col5, col6 = st.columns(6)
396
  with col1:
397
- view_var2 = st.radio("View Type", ('Simple', 'Advanced'), key='view_var2')
398
  with col2:
399
- league_var = st.radio("What League to load:", ('NBA', 'WNBA'), key='league_var')
400
- 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)
401
- with col3:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
402
  slate_type_var2 = st.radio("What slate type are you working with?", ('Regular', 'Showdown'), key='slate_type_var2')
403
- with col4:
404
- site_var2 = st.radio("Site", ('Draftkings', 'Fanduel'), key='site_var2')
405
-
406
- # Process site selection
407
- if site_var2 == 'Draftkings':
408
- if slate_type_var2 == 'Regular':
409
- site_baselines = roo_raw[roo_raw['site'] == 'Draftkings']
410
- elif slate_type_var2 == 'Showdown':
411
- site_baselines = sd_raw[sd_raw['site'] == 'Draftkings']
412
- elif site_var2 == 'Fanduel':
413
- if slate_type_var2 == 'Regular':
414
- site_baselines = roo_raw[roo_raw['site'] == 'Fanduel']
415
- elif slate_type_var2 == 'Showdown':
416
- site_baselines = sd_raw[sd_raw['site'] == 'Fanduel']
417
- with col5:
418
  slate_split = st.radio("Slate Type", ('Main Slate', 'Secondary'), key='slate_split')
419
 
420
  if slate_split == 'Main Slate':
421
- if slate_type_var2 == 'Regular':
422
- raw_baselines = site_baselines[site_baselines['slate'] == 'Main Slate']
423
- elif slate_type_var2 == 'Showdown':
424
- raw_baselines = site_baselines[site_baselines['slate'] == 'Showdown #1']
 
 
 
 
 
 
 
 
 
 
425
  elif slate_split == 'Secondary':
426
- if slate_type_var2 == 'Regular':
427
- raw_baselines = site_baselines[site_baselines['slate'] == 'Secondary Slate']
428
- elif slate_type_var2 == 'Showdown':
429
- raw_baselines = site_baselines[site_baselines['slate'] == 'Showdown #2']
 
 
 
 
 
 
 
 
 
 
430
 
431
- with col6:
432
  split_var2 = st.radio("Slate Range", ('Full Slate Run', 'Specific Games'), key='split_var2')
433
  if split_var2 == 'Specific Games':
434
  team_var2 = st.multiselect('Select teams for ROO', options=raw_baselines['Team'].unique(), key='team_var2')
@@ -501,25 +514,19 @@ with tab2:
501
 
502
  col1, col2, col3, col4, col5, col6 = st.columns(6)
503
  with col1:
504
- league_var2 = st.radio("What League to load:", ('NBA', 'WNBA'), key='league_var2')
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_var2 == '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_var2 == 'WNBA':
523
  if slate_type_var1 == 'Regular':
524
  column_names = dk_wnba_columns
525
  elif slate_type_var1 == 'Showdown':
@@ -531,13 +538,13 @@ with tab2:
531
  elif player_var1 == 'Full Slate':
532
  player_var2 = dk_raw.Player.values.tolist()
533
 
534
- elif site_var1 == 'Fanduel':
535
- if league_var2 == '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_var2 == 'WNBA':
541
  if slate_type_var1 == 'Regular':
542
  column_names = fd_wnba_columns
543
  elif slate_type_var1 == 'Showdown':
@@ -550,26 +557,26 @@ with tab2:
550
  player_var2 = fd_raw.Player.values.tolist()
551
  if st.button("Prepare data export", key='data_export'):
552
 
553
- if site_var1 == 'Draftkings':
554
  if slate_type_var1 == 'Regular':
555
- data_export = init_DK_lineups(slate_var1, league_var2)
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_var2)
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_var2)
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_var2)
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]])
@@ -587,7 +594,7 @@ with tab2:
587
  )
588
 
589
 
590
- if site_var1 == 'Draftkings':
591
  if 'working_seed' in st.session_state:
592
  st.session_state.working_seed = st.session_state.working_seed
593
  if player_var1 == 'Specific Players':
@@ -598,20 +605,20 @@ with tab2:
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_var2)
602
  elif slate_type_var1 == 'Showdown':
603
- st.session_state.working_seed = init_DK_SD_lineups(slate_var1, league_var2)
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_var2)
610
  elif slate_type_var1 == 'Showdown':
611
- st.session_state.working_seed = init_DK_SD_lineups(slate_var1, league_var2)
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':
615
  if 'working_seed' in st.session_state:
616
  st.session_state.working_seed = st.session_state.working_seed
617
  if player_var1 == 'Specific Players':
@@ -622,28 +629,28 @@ with tab2:
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_var2)
626
  elif slate_type_var1 == 'Showdown':
627
- st.session_state.working_seed = init_FD_SD_lineups(slate_var1, league_var2)
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_var2)
634
  elif slate_type_var1 == 'Showdown':
635
- st.session_state.working_seed = init_FD_SD_lineups(slate_var1, league_var2)
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()
639
- if site_var1 == 'Draftkings':
640
  if slate_type_var1 == 'Regular':
641
  for col_idx in range(8):
642
  export_file.iloc[:, col_idx] = export_file.iloc[:, col_idx].map(id_dict)
643
  elif slate_type_var1 == 'Showdown':
644
  for col_idx in range(6):
645
  export_file.iloc[:, col_idx] = export_file.iloc[:, col_idx].map(dk_id_dict_sd)
646
- elif site_var1 == 'Fanduel':
647
  if slate_type_var1 == 'Regular':
648
  for col_idx in range(9):
649
  export_file.iloc[:, col_idx] = export_file.iloc[:, col_idx].map(id_dict)
@@ -655,24 +662,24 @@ with tab2:
655
  if st.button("Reset Optimals", key='reset3'):
656
  for key in st.session_state.keys():
657
  del st.session_state[key]
658
- if site_var1 == 'Draftkings':
659
- if league_var2 == '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_var2 == '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_var2 == '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_var2 == 'WNBA':
676
  if slate_type_var1 == 'Regular':
677
  st.session_state.working_seed = fd_wnba_lineups.copy()
678
  elif slate_type_var1 == 'Showdown':
@@ -689,8 +696,8 @@ with tab2:
689
  with st.container():
690
  if 'working_seed' in st.session_state:
691
  # Create a new dataframe with summary statistics
692
- if site_var1 == 'Draftkings':
693
- if league_var2 == 'NBA':
694
  if slate_type_var1 == 'Regular':
695
  summary_df = pd.DataFrame({
696
  'Metric': ['Min', 'Average', 'Max', 'STDdev'],
@@ -735,7 +742,7 @@ with tab2:
735
  np.std(st.session_state.working_seed[:,12])
736
  ]
737
  })
738
- elif league_var2 == 'WNBA':
739
  if slate_type_var1 == 'Regular':
740
  summary_df = pd.DataFrame({
741
  'Metric': ['Min', 'Average', 'Max', 'STDdev'],
@@ -781,8 +788,8 @@ with tab2:
781
  ]
782
  })
783
 
784
- elif site_var1 == 'Fanduel':
785
- if league_var2 == 'NBA':
786
  if slate_type_var1 == 'Regular':
787
  summary_df = pd.DataFrame({
788
  'Metric': ['Min', 'Average', 'Max', 'STDdev'],
@@ -827,7 +834,7 @@ with tab2:
827
  np.std(st.session_state.working_seed[:,12])
828
  ]
829
  })
830
- elif league_var2 == 'WNBA':
831
  if slate_type_var1 == 'Regular':
832
  summary_df = pd.DataFrame({
833
  'Metric': ['Min', 'Average', 'Max', 'STDdev'],
@@ -888,27 +895,27 @@ with tab2:
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_var2 == '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_var2 == '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
 
@@ -941,27 +948,27 @@ with tab2:
941
  )
942
  with tab2:
943
  if 'working_seed' in st.session_state:
944
- if league_var2 == '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_var2 == '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
 
363
 
364
  with tab1:
365
 
366
+
367
+ with st.container():
368
+ st.info("Advanced view includes all stats and thresholds, simple includes just basic columns for ease of use on mobile")
369
+ reset_col, view_col, site_col, league_col = st.columns(4)
370
+ with reset_col:
371
+ # First row - timestamp and reset button
372
+ col1, col2 = st.columns([3, 1])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
373
  with col1:
374
+ st.info(t_stamp)
375
  with col2:
376
+ if st.button("Load/Reset Data", key='reset1'):
377
+ st.cache_data.clear()
378
+ 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')
379
+ salary_dict = dict(zip(roo_raw.Player, roo_raw.Salary))
380
+ id_dict = dict(zip(roo_raw.Player, roo_raw.player_ID))
381
+ salary_dict_sd = dict(zip(sd_raw.Player, sd_raw.Salary))
382
+ dk_id_dict_sd = dict(zip(dk_sd_raw.Player, dk_sd_raw.player_ID))
383
+ fd_id_dict_sd = dict(zip(fd_sd_raw.Player, fd_sd_raw.player_ID))
384
+ dk_nba_lineups = pd.DataFrame(columns=dk_nba_columns)
385
+ dk_nba_sd_lineups = pd.DataFrame(columns=dk_nba_sd_columns)
386
+ fd_nba_lineups = pd.DataFrame(columns=fd_nba_columns)
387
+ fd_nba_sd_lineups = pd.DataFrame(columns=fd_nba_sd_columns)
388
+
389
+ dk_wnba_lineups = pd.DataFrame(columns=dk_wnba_columns)
390
+ dk_wnba_sd_lineups = pd.DataFrame(columns=dk_wnba_sd_columns)
391
+ fd_wnba_lineups = pd.DataFrame(columns=fd_wnba_columns)
392
+ fd_wnba_sd_lineups = pd.DataFrame(columns=fd_wnba_sd_columns)
393
+ t_stamp = f"Last Update: " + str(timestamp) + f" CST"
394
+ for key in st.session_state.keys():
395
+ del st.session_state[key]
396
+ with view_col:
397
+ view_var2 = st.radio("View Type", ('Simple', 'Advanced'), key='view_var2')
398
+ with site_col:
399
+ site_var2 = st.radio("Site", ('Draftkings', 'Fanduel'), key='site_var2')
400
+ if 'working_seed' in st.session_state:
401
+ del st.session_state['working_seed']
402
+ with league_col:
403
+ league_var = st.radio("What League to load:", ('WNBA', 'NBA'), key='league_var')
404
+ 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)
405
+ with st.expander("Info and Filters"):
406
+ col1, col2, col3 = st.columns(3)
407
+
408
+ with col1:
409
  slate_type_var2 = st.radio("What slate type are you working with?", ('Regular', 'Showdown'), key='slate_type_var2')
410
+ with col2:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
411
  slate_split = st.radio("Slate Type", ('Main Slate', 'Secondary'), key='slate_split')
412
 
413
  if slate_split == 'Main Slate':
414
+ if site_var2 == 'Draftkings':
415
+ if slate_type_var2 == 'Regular':
416
+ site_baselines = roo_raw[roo_raw['site'] == 'Draftkings']
417
+ raw_baselines = site_baselines[site_baselines['slate'] == 'Main Slate']
418
+ elif slate_type_var2 == 'Showdown':
419
+ site_baselines = sd_raw[sd_raw['site'] == 'Draftkings']
420
+ raw_baselines = site_baselines[site_baselines['slate'] == 'Showdown #1']
421
+ elif site_var2 == 'Fanduel':
422
+ if slate_type_var2 == 'Regular':
423
+ site_baselines = roo_raw[roo_raw['site'] == 'Fanduel']
424
+ raw_baselines = site_baselines[site_baselines['slate'] == 'Main Slate']
425
+ elif slate_type_var2 == 'Showdown':
426
+ site_baselines = sd_raw[sd_raw['site'] == 'Fanduel']
427
+ raw_baselines = site_baselines[site_baselines['slate'] == 'Showdown #1']
428
  elif slate_split == 'Secondary':
429
+ if site_var2 == 'Draftkings':
430
+ if slate_type_var2 == 'Regular':
431
+ site_baselines = roo_raw[roo_raw['site'] == 'Draftkings']
432
+ raw_baselines = site_baselines[site_baselines['slate'] == 'Secondary Slate']
433
+ elif slate_type_var2 == 'Showdown':
434
+ site_baselines = sd_raw[sd_raw['site'] == 'Draftkings']
435
+ raw_baselines = site_baselines[site_baselines['slate'] == 'Showdown #2']
436
+ elif site_var2 == 'Fanduel':
437
+ if slate_type_var2 == 'Regular':
438
+ site_baselines = roo_raw[roo_raw['site'] == 'Fanduel']
439
+ raw_baselines = site_baselines[site_baselines['slate'] == 'Secondary Slate']
440
+ elif slate_type_var2 == 'Showdown':
441
+ site_baselines = sd_raw[sd_raw['site'] == 'Fanduel']
442
+ raw_baselines = site_baselines[site_baselines['slate'] == 'Showdown #2']
443
 
444
+ with col3:
445
  split_var2 = st.radio("Slate Range", ('Full Slate Run', 'Specific Games'), key='split_var2')
446
  if split_var2 == 'Specific Games':
447
  team_var2 = st.multiselect('Select teams for ROO', options=raw_baselines['Team'].unique(), key='team_var2')
 
514
 
515
  col1, col2, col3, col4, col5, col6 = st.columns(6)
516
  with col1:
 
 
517
  slate_var1 = st.radio("Which data are you loading?", ('Main Slate', 'Secondary'))
518
+ with col2:
 
 
 
 
519
  slate_type_var1 = st.radio("What slate type are you working with?", ('Regular', 'Showdown'))
520
+ with col3:
521
  lineup_num_var = st.number_input("How many lineups do you want to display?", min_value=1, max_value=1000, value=150, step=1)
522
+ with col4:
523
+ if site_var2 == 'Draftkings':
524
+ if league_var == 'NBA':
525
  if slate_type_var1 == 'Regular':
526
  column_names = dk_nba_columns
527
  elif slate_type_var1 == 'Showdown':
528
  column_names = dk_nba_sd_columns
529
+ elif league_var == 'WNBA':
530
  if slate_type_var1 == 'Regular':
531
  column_names = dk_wnba_columns
532
  elif slate_type_var1 == 'Showdown':
 
538
  elif player_var1 == 'Full Slate':
539
  player_var2 = dk_raw.Player.values.tolist()
540
 
541
+ elif site_var2 == 'Fanduel':
542
+ if league_var == 'NBA':
543
  if slate_type_var1 == 'Regular':
544
  column_names = fd_nba_columns
545
  elif slate_type_var1 == 'Showdown':
546
  column_names = fd_nba_sd_columns
547
+ elif league_var == 'WNBA':
548
  if slate_type_var1 == 'Regular':
549
  column_names = fd_wnba_columns
550
  elif slate_type_var1 == 'Showdown':
 
557
  player_var2 = fd_raw.Player.values.tolist()
558
  if st.button("Prepare data export", key='data_export'):
559
 
560
+ if site_var2 == 'Draftkings':
561
  if slate_type_var1 == 'Regular':
562
+ data_export = init_DK_lineups(slate_var1, league_var)
563
  data_export_names = data_export.copy()
564
  for col_idx in range(8):
565
  data_export[:, col_idx] = np.array([id_dict.get(player, player) for player in data_export[:, col_idx]])
566
  elif slate_type_var1 == 'Showdown':
567
+ data_export = init_DK_SD_lineups(slate_var1, league_var)
568
  data_export_names = data_export.copy()
569
  for col_idx in range(6):
570
  data_export[:, col_idx] = np.array([dk_id_dict_sd.get(player, player) for player in data_export[:, col_idx]])
571
 
572
+ elif site_var2 == 'Fanduel':
573
  if slate_type_var1 == 'Regular':
574
+ data_export = init_FD_lineups(slate_var1, league_var)
575
  data_export_names = data_export.copy()
576
  for col_idx in range(9):
577
  data_export[:, col_idx] = np.array([id_dict.get(player, player) for player in data_export[:, col_idx]])
578
  elif slate_type_var1 == 'Showdown':
579
+ data_export = init_FD_SD_lineups(slate_var1, league_var)
580
  data_export_names = data_export.copy()
581
  for col_idx in range(6):
582
  data_export[:, col_idx] = np.array([fd_id_dict_sd.get(player, player) for player in data_export[:, col_idx]])
 
594
  )
595
 
596
 
597
+ if site_var2 == 'Draftkings':
598
  if 'working_seed' in st.session_state:
599
  st.session_state.working_seed = st.session_state.working_seed
600
  if player_var1 == 'Specific Players':
 
605
 
606
  elif 'working_seed' not in st.session_state:
607
  if slate_type_var1 == 'Regular':
608
+ st.session_state.working_seed = init_DK_lineups(slate_var1, league_var)
609
  elif slate_type_var1 == 'Showdown':
610
+ st.session_state.working_seed = init_DK_SD_lineups(slate_var1, league_var)
611
  st.session_state.working_seed = st.session_state.working_seed
612
  if player_var1 == 'Specific Players':
613
  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)]
614
  elif player_var1 == 'Full Slate':
615
  if slate_type_var1 == 'Regular':
616
+ st.session_state.working_seed = init_DK_lineups(slate_var1, league_var)
617
  elif slate_type_var1 == 'Showdown':
618
+ st.session_state.working_seed = init_DK_SD_lineups(slate_var1, league_var)
619
  st.session_state.data_export_display = pd.DataFrame(st.session_state.working_seed[0:lineup_num_var], columns=column_names)
620
 
621
+ elif site_var2 == 'Fanduel':
622
  if 'working_seed' in st.session_state:
623
  st.session_state.working_seed = st.session_state.working_seed
624
  if player_var1 == 'Specific Players':
 
629
 
630
  elif 'working_seed' not in st.session_state:
631
  if slate_type_var1 == 'Regular':
632
+ st.session_state.working_seed = init_FD_lineups(slate_var1, league_var)
633
  elif slate_type_var1 == 'Showdown':
634
+ st.session_state.working_seed = init_FD_SD_lineups(slate_var1, league_var)
635
  st.session_state.working_seed = st.session_state.working_seed
636
  if player_var1 == 'Specific Players':
637
  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)]
638
  elif player_var1 == 'Full Slate':
639
  if slate_type_var1 == 'Regular':
640
+ st.session_state.working_seed = init_FD_lineups(slate_var1, league_var)
641
  elif slate_type_var1 == 'Showdown':
642
+ st.session_state.working_seed = init_FD_SD_lineups(slate_var1, league_var)
643
  st.session_state.data_export_display = pd.DataFrame(st.session_state.working_seed[0:lineup_num_var], columns=column_names)
644
 
645
  export_file = st.session_state.data_export_display.copy()
646
+ if site_var2 == 'Draftkings':
647
  if slate_type_var1 == 'Regular':
648
  for col_idx in range(8):
649
  export_file.iloc[:, col_idx] = export_file.iloc[:, col_idx].map(id_dict)
650
  elif slate_type_var1 == 'Showdown':
651
  for col_idx in range(6):
652
  export_file.iloc[:, col_idx] = export_file.iloc[:, col_idx].map(dk_id_dict_sd)
653
+ elif site_var2 == 'Fanduel':
654
  if slate_type_var1 == 'Regular':
655
  for col_idx in range(9):
656
  export_file.iloc[:, col_idx] = export_file.iloc[:, col_idx].map(id_dict)
 
662
  if st.button("Reset Optimals", key='reset3'):
663
  for key in st.session_state.keys():
664
  del st.session_state[key]
665
+ if site_var2 == 'Draftkings':
666
+ if league_var == 'NBA':
667
  if slate_type_var1 == 'Regular':
668
  st.session_state.working_seed = dk_nba_lineups.copy()
669
  elif slate_type_var1 == 'Showdown':
670
  st.session_state.working_seed = dk_nba_sd_lineups.copy()
671
+ elif league_var == 'WNBA':
672
  if slate_type_var1 == 'Regular':
673
  st.session_state.working_seed = dk_wnba_lineups.copy()
674
  elif slate_type_var1 == 'Showdown':
675
  st.session_state.working_seed = dk_wnba_sd_lineups.copy()
676
+ elif site_var2 == 'Fanduel':
677
+ if league_var == 'NBA':
678
  if slate_type_var1 == 'Regular':
679
  st.session_state.working_seed = fd_nba_lineups.copy()
680
  elif slate_type_var1 == 'Showdown':
681
  st.session_state.working_seed = fd_nba_sd_lineups.copy()
682
+ elif league_var == 'WNBA':
683
  if slate_type_var1 == 'Regular':
684
  st.session_state.working_seed = fd_wnba_lineups.copy()
685
  elif slate_type_var1 == 'Showdown':
 
696
  with st.container():
697
  if 'working_seed' in st.session_state:
698
  # Create a new dataframe with summary statistics
699
+ if site_var2 == 'Draftkings':
700
+ if league_var == 'NBA':
701
  if slate_type_var1 == 'Regular':
702
  summary_df = pd.DataFrame({
703
  'Metric': ['Min', 'Average', 'Max', 'STDdev'],
 
742
  np.std(st.session_state.working_seed[:,12])
743
  ]
744
  })
745
+ elif league_var == 'WNBA':
746
  if slate_type_var1 == 'Regular':
747
  summary_df = pd.DataFrame({
748
  'Metric': ['Min', 'Average', 'Max', 'STDdev'],
 
788
  ]
789
  })
790
 
791
+ elif site_var2 == 'Fanduel':
792
+ if league_var == 'NBA':
793
  if slate_type_var1 == 'Regular':
794
  summary_df = pd.DataFrame({
795
  'Metric': ['Min', 'Average', 'Max', 'STDdev'],
 
834
  np.std(st.session_state.working_seed[:,12])
835
  ]
836
  })
837
+ elif league_var == 'WNBA':
838
  if slate_type_var1 == 'Regular':
839
  summary_df = pd.DataFrame({
840
  'Metric': ['Min', 'Average', 'Max', 'STDdev'],
 
895
  tab1, tab2 = st.tabs(["Display Frequency", "Seed Frame Frequency"])
896
  with tab1:
897
  if 'data_export_display' in st.session_state:
898
+ if league_var == 'NBA':
899
  if slate_type_var1 == 'Regular':
900
+ if site_var2 == 'Draftkings':
901
  player_columns = st.session_state.data_export_display.iloc[:, :8]
902
+ elif site_var2 == 'Fanduel':
903
  player_columns = st.session_state.data_export_display.iloc[:, :9]
904
  elif slate_type_var1 == 'Showdown':
905
+ if site_var2 == 'Draftkings':
906
  player_columns = st.session_state.data_export_display.iloc[:, :5]
907
+ elif site_var2 == 'Fanduel':
908
  player_columns = st.session_state.data_export_display.iloc[:, :5]
909
+ elif league_var == 'WNBA':
910
  if slate_type_var1 == 'Regular':
911
+ if site_var2 == 'Draftkings':
912
  player_columns = st.session_state.data_export_display.iloc[:, :7]
913
+ elif site_var2 == 'Fanduel':
914
  player_columns = st.session_state.data_export_display.iloc[:, :8]
915
  elif slate_type_var1 == 'Showdown':
916
+ if site_var2 == 'Draftkings':
917
  player_columns = st.session_state.data_export_display.iloc[:, :5]
918
+ elif site_var2 == 'Fanduel':
919
  player_columns = st.session_state.data_export_display.iloc[:, :5]
920
 
921
 
 
948
  )
949
  with tab2:
950
  if 'working_seed' in st.session_state:
951
+ if league_var == 'NBA':
952
  if slate_type_var1 == 'Regular':
953
+ if site_var2 == 'Draftkings':
954
  player_columns = st.session_state.working_seed[:, :8]
955
+ elif site_var2 == 'Fanduel':
956
  player_columns = st.session_state.working_seed[:, :9]
957
  elif slate_type_var1 == 'Showdown':
958
+ if site_var2 == 'Draftkings':
959
  player_columns = st.session_state.working_seed[:, :5]
960
+ elif site_var2 == 'Fanduel':
961
  player_columns = st.session_state.working_seed[:, :5]
962
+ elif league_var == 'WNBA':
963
  if slate_type_var1 == 'Regular':
964
+ if site_var2 == 'Draftkings':
965
  player_columns = st.session_state.working_seed[:, :7]
966
+ elif site_var2 == 'Fanduel':
967
  player_columns = st.session_state.working_seed[:, :8]
968
  elif slate_type_var1 == 'Showdown':
969
+ if site_var2 == 'Draftkings':
970
  player_columns = st.session_state.working_seed[:, :5]
971
+ elif site_var2 == 'Fanduel':
972
  player_columns = st.session_state.working_seed[:, :5]
973
 
974
  # Flatten the DataFrame and count unique values