James McCool commited on
Commit
f31fe20
·
1 Parent(s): 90a8778

Add showdown slate selections and update lineup initialization to use new database translations for DraftKings and FanDuel, improving data handling for showdown formats.

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +30 -11
src/streamlit_app.py CHANGED
@@ -22,6 +22,17 @@ fd_hb_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']
22
  dk_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
23
  fd_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
24
 
 
 
 
 
 
 
 
 
 
 
 
25
  # Probably should have done this in a dictionary to start with
26
  wrong_team_names = ['Denver Broncos', 'Washington Commanders', 'Cincinnati Bengals', 'Arizona Cardinals', 'Los Angeles Rams', 'Pittsburgh Steelers',
27
  'Jacksonville Jaguars', 'New England Patriots', 'Tampa Bay Buccaneers', 'San Francisco 49ers', 'Green Bay Packers', 'New York Jets',
@@ -208,7 +219,15 @@ def init_baselines():
208
  return player_stats, dk_stacks_raw, fd_stacks_raw, dk_roo_raw, fd_roo_raw, dk_sd_roo_raw, fd_sd_roo_raw, dk_id_map, fd_id_map, dk_sd_id_map, fd_sd_id_map
209
 
210
  @st.cache_resource(ttl = 60)
211
- def init_DK_lineups(type_var, slate_var, prio_var, prio_mix):
 
 
 
 
 
 
 
 
212
 
213
  if prio_var == 'Mix':
214
  prio_var = None
@@ -452,13 +471,16 @@ def convert_hb_df(array, column_names):
452
  array = pd.DataFrame(array, columns=column_names)
453
  return array.to_csv().encode('utf-8')
454
 
 
 
 
455
  app_load_reset_column, app_view_site_column = st.columns([1, 9])
456
  with app_load_reset_column:
457
  if st.button("Load/Reset Data", key='reset_data_button'):
458
  st.cache_data.clear()
459
  player_stats, dk_stacks_raw, fd_stacks_raw, dk_roo_raw, fd_roo_raw, dk_sd_roo_raw, fd_sd_roo_raw, dk_id_map, fd_id_map, dk_sd_id_map, fd_sd_id_map = init_baselines()
460
- dk_lineups = init_DK_lineups('Regular', 'Main', 'proj', 50)
461
- fd_lineups = init_FD_lineups('Regular', 'Main', 'proj', 50)
462
  for key in st.session_state.keys():
463
  del st.session_state[key]
464
  with app_view_site_column:
@@ -469,9 +491,6 @@ with app_view_site_column:
469
  with app_site_column:
470
  site_var = st.selectbox("What site do you want to view?", ('Draftkings', 'Fanduel'), key='site_selectbox')
471
 
472
- slate_names_dk, slate_name_lookup_dk = define_dk_showdown_slates()
473
- slate_names_fd, slate_name_lookup_fd = define_fd_showdown_slates()
474
-
475
  selected_tab = st.segmented_control(
476
  "Select Tab",
477
  options=["Player ROO", "Stacks ROO", "Handbuilder", "Optimals"],
@@ -1074,17 +1093,17 @@ if selected_tab == 'Optimals':
1074
  raw_baselines = dk_sd_roo_raw
1075
  elif site_var == 'Fanduel':
1076
  raw_baselines = fd_sd_roo_raw
1077
- slate_var3 = st.radio("Which slate data are you loading?", ('Main', 'Secondary', 'Auxiliary'), key='slate_var3_radio')
1078
  if slate_type_var3 == 'Regular':
1079
  if site_var == 'Draftkings':
1080
- dk_lineups = init_DK_lineups(slate_type_var3, slate_var3, prio_var, prio_mix)
1081
  elif site_var == 'Fanduel':
1082
- fd_lineups = init_FD_lineups(slate_type_var3, slate_var3, prio_var, prio_mix)
1083
  elif slate_type_var3 == 'Showdown':
1084
  if site_var == 'Draftkings':
1085
- dk_lineups = init_DK_lineups(slate_type_var3, slate_var3, prio_var, prio_mix)
1086
  elif site_var == 'Fanduel':
1087
- fd_lineups = init_FD_lineups(slate_type_var3, slate_var3, prio_var, prio_mix)
1088
  with optimals_macro_col:
1089
  lineup_num_var = st.number_input("How many lineups do you want to display?", min_value=1, max_value=1000, value=150, step=1, key='lineup_num_var_input')
1090
  player_var1 = st.radio("Do you want a frame with specific Players?", ('Full Slate', 'Specific Players'), key='player_var1_radio')
 
22
  dk_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
23
  fd_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
24
 
25
+ showdown_selections = ['Showdown #1', 'Showdown #2', 'Showdown #3', 'Showdown #4', 'Showdown #5', 'Showdown #6', 'Showdown #7', 'Showdown #8', 'Showdown #9', 'Showdown #10', 'Showdown #11', 'Showdown #12', 'Showdown #13', 'Showdown #14', 'Showdown #15']
26
+ dk_db_showdown_selections = ['DK_NFL_SD_seed_frame_Showdown #1', 'DK_NFL_SD_seed_frame_Showdown #2', 'DK_NFL_SD_seed_frame_Showdown #3', 'DK_NFL_SD_seed_frame_Showdown #4', 'DK_NFL_SD_seed_frame_Showdown #5', 'DK_NFL_SD_seed_frame_Showdown #6',
27
+ 'DK_NFL_SD_seed_frame_Showdown #7', 'DK_NFL_SD_seed_frame_Showdown #8', 'DK_NFL_SD_seed_frame_Showdown #9', 'DK_NFL_SD_seed_frame_Showdown #10', 'DK_NFL_SD_seed_frame_Showdown #11', 'DK_NFL_SD_seed_frame_Showdown #12', 'DK_NFL_SD_seed_frame_Showdown #13',
28
+ 'DK_NFL_SD_seed_frame_Showdown #14', 'DK_NFL_SD_seed_frame_Showdown #15']
29
+ fd_db_showdown_selections = ['FD_NFL_SD_seed_frame_Showdown #1', 'FD_NFL_SD_seed_frame_Showdown #2', 'FD_NFL_SD_seed_frame_Showdown #3', 'FD_NFL_SD_seed_frame_Showdown #4', 'FD_NFL_SD_seed_frame_Showdown #5', 'FD_NFL_SD_seed_frame_Showdown #6',
30
+ 'FD_NFL_SD_seed_frame_Showdown #7', 'FD_NFL_SD_seed_frame_Showdown #8', 'FD_NFL_SD_seed_frame_Showdown #9', 'FD_NFL_SD_seed_frame_Showdown #10', 'FD_NFL_SD_seed_frame_Showdown #11', 'FD_NFL_SD_seed_frame_Showdown #12', 'FD_NFL_SD_seed_frame_Showdown #13',
31
+ 'FD_NFL_SD_seed_frame_Showdown #14', 'FD_NFL_SD_seed_frame_Showdown #15']
32
+
33
+ dk_showdown_db_translation = dict(zip(showdown_selections, dk_db_showdown_selections))
34
+ fd_showdown_db_translation = dict(zip(showdown_selections, fd_db_showdown_selections))
35
+
36
  # Probably should have done this in a dictionary to start with
37
  wrong_team_names = ['Denver Broncos', 'Washington Commanders', 'Cincinnati Bengals', 'Arizona Cardinals', 'Los Angeles Rams', 'Pittsburgh Steelers',
38
  'Jacksonville Jaguars', 'New England Patriots', 'Tampa Bay Buccaneers', 'San Francisco 49ers', 'Green Bay Packers', 'New York Jets',
 
219
  return player_stats, dk_stacks_raw, fd_stacks_raw, dk_roo_raw, fd_roo_raw, dk_sd_roo_raw, fd_sd_roo_raw, dk_id_map, fd_id_map, dk_sd_id_map, fd_sd_id_map
220
 
221
  @st.cache_resource(ttl = 60)
222
+ def init_DK_lineups(type_var, slate_var, prio_var, prio_mix, db_translation):
223
+
224
+ if type_var == 'Showdown':
225
+ collection = db[db_translation[slate_var]]
226
+ cursor = collection.find()
227
+ raw_display = pd.DataFrame(list(cursor))
228
+ raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
229
+ for column in ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']:
230
+ raw_display[column] = raw_display[column].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(raw_display[column])
231
 
232
  if prio_var == 'Mix':
233
  prio_var = None
 
471
  array = pd.DataFrame(array, columns=column_names)
472
  return array.to_csv().encode('utf-8')
473
 
474
+ slate_names_dk, slate_name_lookup_dk = define_dk_showdown_slates()
475
+ slate_names_fd, slate_name_lookup_fd = define_fd_showdown_slates()
476
+
477
  app_load_reset_column, app_view_site_column = st.columns([1, 9])
478
  with app_load_reset_column:
479
  if st.button("Load/Reset Data", key='reset_data_button'):
480
  st.cache_data.clear()
481
  player_stats, dk_stacks_raw, fd_stacks_raw, dk_roo_raw, fd_roo_raw, dk_sd_roo_raw, fd_sd_roo_raw, dk_id_map, fd_id_map, dk_sd_id_map, fd_sd_id_map = init_baselines()
482
+ dk_lineups = init_DK_lineups('Regular', slate_names_dk[0], 'proj', 50, dk_showdown_db_translation)
483
+ fd_lineups = init_FD_lineups('Regular', slate_names_fd[0], 'proj', 50, fd_showdown_db_translation)
484
  for key in st.session_state.keys():
485
  del st.session_state[key]
486
  with app_view_site_column:
 
491
  with app_site_column:
492
  site_var = st.selectbox("What site do you want to view?", ('Draftkings', 'Fanduel'), key='site_selectbox')
493
 
 
 
 
494
  selected_tab = st.segmented_control(
495
  "Select Tab",
496
  options=["Player ROO", "Stacks ROO", "Handbuilder", "Optimals"],
 
1093
  raw_baselines = dk_sd_roo_raw
1094
  elif site_var == 'Fanduel':
1095
  raw_baselines = fd_sd_roo_raw
1096
+ slate_var3 = st.radio("Which slate data are you loading?", (slate_names_dk if slate_type_var3 == 'Showdown' else ['Main', 'Secondary', 'Auxiliary']), key='slate_var3_radio')
1097
  if slate_type_var3 == 'Regular':
1098
  if site_var == 'Draftkings':
1099
+ dk_lineups = init_DK_lineups(slate_type_var3, slate_var3, prio_var, prio_mix, dk_showdown_db_translation)
1100
  elif site_var == 'Fanduel':
1101
+ fd_lineups = init_FD_lineups(slate_type_var3, slate_var3, prio_var, prio_mix, fd_showdown_db_translation)
1102
  elif slate_type_var3 == 'Showdown':
1103
  if site_var == 'Draftkings':
1104
+ dk_lineups = init_DK_lineups(slate_type_var3, slate_name_lookup_dk[slate_var3], prio_var, prio_mix, dk_showdown_db_translation)
1105
  elif site_var == 'Fanduel':
1106
+ fd_lineups = init_FD_lineups(slate_type_var3, slate_name_lookup_fd[slate_var3], prio_var, prio_mix, fd_showdown_db_translation)
1107
  with optimals_macro_col:
1108
  lineup_num_var = st.number_input("How many lineups do you want to display?", min_value=1, max_value=1000, value=150, step=1, key='lineup_num_var_input')
1109
  player_var1 = st.radio("Do you want a frame with specific Players?", ('Full Slate', 'Specific Players'), key='player_var1_radio')