Spaces:
Sleeping
Sleeping
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- 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',
|
| 461 |
-
fd_lineups = init_FD_lineups('Regular',
|
| 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')
|