James McCool commited on
Commit
1a20d5e
·
1 Parent(s): 853ceab

Add showdown slate definitions and update lineup initialization in Streamlit app

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +67 -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',
@@ -69,6 +80,40 @@ st.markdown("""
69
 
70
  </style>""", unsafe_allow_html=True)
71
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
  @st.cache_resource(ttl=60)
73
  def init_handbuilder_data(site_var):
74
  """Load only the data needed for handbuilder"""
@@ -174,7 +219,15 @@ def init_baselines():
174
  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
175
 
176
  @st.cache_resource(ttl = 60)
177
- def init_DK_lineups(type_var, slate_var, prio_var, prio_mix):
 
 
 
 
 
 
 
 
178
 
179
  if prio_var == 'Mix':
180
  prio_var = None
@@ -418,13 +471,16 @@ def convert_hb_df(array, column_names):
418
  array = pd.DataFrame(array, columns=column_names)
419
  return array.to_csv().encode('utf-8')
420
 
 
 
 
421
  app_load_reset_column, app_view_site_column = st.columns([1, 9])
422
  with app_load_reset_column:
423
  if st.button("Load/Reset Data", key='reset_data_button'):
424
  st.cache_data.clear()
425
  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()
426
- dk_lineups = init_DK_lineups('Regular', 'Main', 'proj', 50)
427
- fd_lineups = init_FD_lineups('Regular', 'Main', 'proj', 50)
428
  for key in st.session_state.keys():
429
  del st.session_state[key]
430
  with app_view_site_column:
@@ -921,19 +977,19 @@ if selected_tab == 'Player ROO':
921
  if slate_type_var2 == 'Regular':
922
  slate_var2 = st.radio("Which data are you loading?", ('Main Slate', 'Secondary Slate', 'Late Slate', 'Thurs-Mon Slate'), key='slate_var2_radio')
923
  elif slate_type_var2 == 'Showdown':
924
- slate_var2 = st.radio("Which slate are you loading?", ("Showdown #1", "Showdown #2", "Showdown #3"), key='slate_var2_radio')
925
  if site_var == 'Draftkings':
926
  if slate_type_var2 == 'Regular':
927
  raw_baselines = dk_roo_raw[dk_roo_raw['slate'] == str(slate_var2)]
928
  elif slate_type_var2 == 'Showdown':
929
- raw_baselines = dk_sd_roo_raw[dk_sd_roo_raw['slate'] == str(slate_var2)]
930
 
931
  raw_baselines = raw_baselines.iloc[:,:-2]
932
  elif site_var == 'Fanduel':
933
  if slate_type_var2 == 'Regular':
934
  raw_baselines = fd_roo_raw[fd_roo_raw['slate'] == str(slate_var2)]
935
  elif slate_type_var2 == 'Showdown':
936
- raw_baselines = fd_sd_roo_raw[fd_sd_roo_raw['slate'] == str(slate_var2)]
937
  raw_baselines = raw_baselines.iloc[:,:-2]
938
 
939
  split_var2 = st.radio("Would you like to view the whole slate or just specific games?", ('Full Slate Run', 'Specific Games'), key='split_var2_radio')
@@ -1037,17 +1093,17 @@ if selected_tab == 'Optimals':
1037
  raw_baselines = dk_sd_roo_raw
1038
  elif site_var == 'Fanduel':
1039
  raw_baselines = fd_sd_roo_raw
1040
- slate_var3 = st.radio("Which slate data are you loading?", ('Main', 'Secondary', 'Auxiliary'), key='slate_var3_radio')
1041
  if slate_type_var3 == 'Regular':
1042
  if site_var == 'Draftkings':
1043
- dk_lineups = init_DK_lineups(slate_type_var3, slate_var3, prio_var, prio_mix)
1044
  elif site_var == 'Fanduel':
1045
- fd_lineups = init_FD_lineups(slate_type_var3, slate_var3, prio_var, prio_mix)
1046
  elif slate_type_var3 == 'Showdown':
1047
  if site_var == 'Draftkings':
1048
- dk_lineups = init_DK_lineups(slate_type_var3, slate_var3, prio_var, prio_mix)
1049
  elif site_var == 'Fanduel':
1050
- fd_lineups = init_FD_lineups(slate_type_var3, slate_var3, prio_var, prio_mix)
1051
  with optimals_macro_col:
1052
  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')
1053
  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',
 
80
 
81
  </style>""", unsafe_allow_html=True)
82
 
83
+ @st.cache_resource(ttl=60)
84
+ def define_dk_showdown_slates():
85
+ collection = db["DK_SD_NFL_ROO"]
86
+ cursor = collection.find()
87
+ raw_display = pd.DataFrame(list(cursor))
88
+ unique_slates = raw_display['slate'].unique()
89
+
90
+ slate_names = []
91
+
92
+ for slate in unique_slates:
93
+ slate_data = raw_display[raw_display['slate'] == slate]
94
+ slate_name = slate_data.iloc[0]['Team'] + ' vs. ' + slate_data.iloc[0]['Opp']
95
+ slate_names.append(slate_name)
96
+
97
+ slate_name_lookup = dict(zip(slate_names, unique_slates))
98
+ return slate_names, slate_name_lookup
99
+
100
+ @st.cache_resource(ttl=60)
101
+ def define_fd_showdown_slates():
102
+ collection = db["FD_SD_NFL_ROO"]
103
+ cursor = collection.find()
104
+ raw_display = pd.DataFrame(list(cursor))
105
+ unique_slates = raw_display['slate'].unique()
106
+
107
+ slate_names = []
108
+
109
+ for slate in unique_slates:
110
+ slate_data = raw_display[raw_display['slate'] == slate]
111
+ slate_name = slate_data.iloc[0]['Team'] + ' vs. ' + slate_data.iloc[0]['Opp']
112
+ slate_names.append(slate_name)
113
+
114
+ slate_name_lookup = dict(zip(slate_names, unique_slates))
115
+ return slate_names, slate_name_lookup
116
+
117
  @st.cache_resource(ttl=60)
118
  def init_handbuilder_data(site_var):
119
  """Load only the data needed for handbuilder"""
 
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:
 
977
  if slate_type_var2 == 'Regular':
978
  slate_var2 = st.radio("Which data are you loading?", ('Main Slate', 'Secondary Slate', 'Late Slate', 'Thurs-Mon Slate'), key='slate_var2_radio')
979
  elif slate_type_var2 == 'Showdown':
980
+ slate_var2 = st.radio("Which slate are you loading?", (slate_names_dk if site_var == 'Draftkings' else slate_names_fd), key='slate_var2_radio')
981
  if site_var == 'Draftkings':
982
  if slate_type_var2 == 'Regular':
983
  raw_baselines = dk_roo_raw[dk_roo_raw['slate'] == str(slate_var2)]
984
  elif slate_type_var2 == 'Showdown':
985
+ raw_baselines = dk_sd_roo_raw[dk_sd_roo_raw['slate'] == str(slate_name_lookup_dk[slate_var2])]
986
 
987
  raw_baselines = raw_baselines.iloc[:,:-2]
988
  elif site_var == 'Fanduel':
989
  if slate_type_var2 == 'Regular':
990
  raw_baselines = fd_roo_raw[fd_roo_raw['slate'] == str(slate_var2)]
991
  elif slate_type_var2 == 'Showdown':
992
+ raw_baselines = fd_sd_roo_raw[fd_sd_roo_raw['slate'] == str(slate_name_lookup_fd[slate_var2])]
993
  raw_baselines = raw_baselines.iloc[:,:-2]
994
 
995
  split_var2 = st.radio("Would you like to view the whole slate or just specific games?", ('Full Slate Run', 'Specific Games'), key='split_var2_radio')
 
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')