James McCool
commited on
Commit
·
328e4a7
1
Parent(s):
d30a028
explicitly defined all columns
Browse files- src/streamlit_app.py +23 -23
src/streamlit_app.py
CHANGED
|
@@ -313,8 +313,8 @@ def get_unique_key(prefix, base_key):
|
|
| 313 |
st.session_state[f"{prefix}_{base_key}"] += 1
|
| 314 |
return f"{prefix}_{base_key}_{st.session_state[f'{prefix}_{base_key}']}"
|
| 315 |
|
| 316 |
-
|
| 317 |
-
with
|
| 318 |
if st.button("Load/Reset Data", key='reset_data_button'):
|
| 319 |
st.cache_data.clear()
|
| 320 |
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()
|
|
@@ -322,12 +322,12 @@ with col1:
|
|
| 322 |
fd_lineups = init_FD_lineups('Regular', 'Main')
|
| 323 |
for key in st.session_state.keys():
|
| 324 |
del st.session_state[key]
|
| 325 |
-
with
|
| 326 |
with st.container():
|
| 327 |
-
|
| 328 |
-
with
|
| 329 |
view_var = st.selectbox("Select view", ["Simple", "Advanced"], key='view_selectbox')
|
| 330 |
-
with
|
| 331 |
site_var = st.selectbox("What site do you want to view?", ('Draftkings', 'Fanduel'), key='site_selectbox')
|
| 332 |
|
| 333 |
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()
|
|
@@ -438,8 +438,8 @@ with optimals_tab:
|
|
| 438 |
st.header("Optimals")
|
| 439 |
with st.expander("Info and Filters"):
|
| 440 |
st.info("These filters will display various optimals in the table below to pick from. If you want to export the entire set of 10,000 optimals, hit the 'Prepare full data export' button. If you would like to apply the filters here to the 10,000 optimals before you export, use the 'Prepare full data export (Filter)' button.")
|
| 441 |
-
|
| 442 |
-
with
|
| 443 |
slate_type_var3 = st.radio("Which slate type are you loading?", ('Regular', 'Showdown'), key='slate_type_var3_radio')
|
| 444 |
if slate_type_var3 == 'Regular':
|
| 445 |
if site_var == 'Draftkings':
|
|
@@ -462,21 +462,21 @@ with optimals_tab:
|
|
| 462 |
dk_lineups = init_DK_lineups(slate_type_var3, slate_var3)
|
| 463 |
elif site_var == 'Fanduel':
|
| 464 |
fd_lineups = init_FD_lineups(slate_type_var3, slate_var3)
|
| 465 |
-
with
|
| 466 |
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')
|
| 467 |
player_var1 = st.radio("Do you want a frame with specific Players?", ('Full Slate', 'Specific Players'), key='player_var1_radio')
|
| 468 |
if player_var1 == 'Specific Players':
|
| 469 |
player_var2 = st.multiselect('Which players do you want?', options = raw_baselines['Player'].unique(), key='player_var2_multiselect')
|
| 470 |
elif player_var1 == 'Full Slate':
|
| 471 |
player_var2 = raw_baselines.Player.values.tolist()
|
| 472 |
-
with
|
| 473 |
if site_var == 'Draftkings':
|
| 474 |
salary_min_var = st.number_input("Minimum salary used", min_value = 0, max_value = 50000, value = 49000, step = 100, key = 'salary_min_var_dk')
|
| 475 |
salary_max_var = st.number_input("Maximum salary used", min_value = 0, max_value = 50000, value = 50000, step = 100, key = 'salary_max_var_dk')
|
| 476 |
elif site_var == 'Fanduel':
|
| 477 |
salary_min_var = st.number_input("Minimum salary used", min_value = 0, max_value = 60000, value = 59000, step = 100, key = 'salary_min_var_fd')
|
| 478 |
salary_max_var = st.number_input("Maximum salary used", min_value = 0, max_value = 60000, value = 60000, step = 100, key = 'salary_max_var_fd')
|
| 479 |
-
with
|
| 480 |
if site_var == 'Draftkings':
|
| 481 |
min_stacks_var = st.number_input("Minimum stacks used", min_value = 0, max_value = 5, value = 1, step = 1, key = 'min_stacks_var_dk')
|
| 482 |
max_stacks_var = st.number_input("Maximum stacks used", min_value = 0, max_value = 5, value = 5, step = 1, key = 'max_stacks_var_dk')
|
|
@@ -937,10 +937,10 @@ with optimals_tab:
|
|
| 937 |
)
|
| 938 |
|
| 939 |
with handbuilder_tab:
|
| 940 |
-
|
| 941 |
-
with
|
| 942 |
st.header("Handbuilder")
|
| 943 |
-
with
|
| 944 |
slate_var3 = st.selectbox("Slate Selection", options=['Main', 'Secondary', 'Auxiliary'], key='handbuilder_slate_selectbox')
|
| 945 |
if site_var == 'Draftkings':
|
| 946 |
if slate_var3 == 'Main':
|
|
@@ -995,10 +995,10 @@ with handbuilder_tab:
|
|
| 995 |
|
| 996 |
# --- PLAYER FILTERS ---
|
| 997 |
with st.expander("Player Filters"):
|
| 998 |
-
|
| 999 |
-
with
|
| 1000 |
pos_select3 = st.multiselect("Select your position(s)", options=['QB', 'RB', 'WR', 'TE', 'UTIL', 'DST'], key='pos_select3_multiselect')
|
| 1001 |
-
with
|
| 1002 |
salary_var = st.number_input("Salary Max", min_value = 0, max_value = 20000, value = 20000, step = 100, key='handbuilder_salary_max_input')
|
| 1003 |
|
| 1004 |
# --- TEAM FILTER UI ---
|
|
@@ -1132,8 +1132,8 @@ with handbuilder_tab:
|
|
| 1132 |
# player_select_df = player_select_df[player_select_df.apply(is_player_eligible, axis=1)]
|
| 1133 |
print(player_select_df.head(10))
|
| 1134 |
|
| 1135 |
-
|
| 1136 |
-
with
|
| 1137 |
st.subheader("Player Select")
|
| 1138 |
event = st.dataframe(
|
| 1139 |
player_select_df.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').background_gradient(cmap='RdYlGn_r', subset=['Salary', 'Own']).format(precision=2),
|
|
@@ -1174,7 +1174,7 @@ with handbuilder_tab:
|
|
| 1174 |
st.rerun()
|
| 1175 |
|
| 1176 |
|
| 1177 |
-
with
|
| 1178 |
st.subheader("Lineup Build")
|
| 1179 |
|
| 1180 |
# --- EXPLICIT LINEUP ORDER ---
|
|
@@ -1258,9 +1258,9 @@ with handbuilder_tab:
|
|
| 1258 |
})
|
| 1259 |
summary_row = summary_row[['Salary', 'Median', 'Own']].head(max_players)
|
| 1260 |
|
| 1261 |
-
|
| 1262 |
|
| 1263 |
-
with
|
| 1264 |
if (max_players - len(filled_lineup)) > 0:
|
| 1265 |
st.markdown(f"""
|
| 1266 |
<div style='text-align: left; vertical-align: top; margin-top: 0; padding-top: 0;''>
|
|
@@ -1276,7 +1276,7 @@ with handbuilder_tab:
|
|
| 1276 |
""",
|
| 1277 |
unsafe_allow_html=True)
|
| 1278 |
|
| 1279 |
-
with
|
| 1280 |
if total_salary <= max_salary:
|
| 1281 |
st.markdown(
|
| 1282 |
f"""
|
|
|
|
| 313 |
st.session_state[f"{prefix}_{base_key}"] += 1
|
| 314 |
return f"{prefix}_{base_key}_{st.session_state[f'{prefix}_{base_key}']}"
|
| 315 |
|
| 316 |
+
app_load_reset_column, app_view_site_column = st.columns([1, 9])
|
| 317 |
+
with app_load_reset_column:
|
| 318 |
if st.button("Load/Reset Data", key='reset_data_button'):
|
| 319 |
st.cache_data.clear()
|
| 320 |
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()
|
|
|
|
| 322 |
fd_lineups = init_FD_lineups('Regular', 'Main')
|
| 323 |
for key in st.session_state.keys():
|
| 324 |
del st.session_state[key]
|
| 325 |
+
with app_view_site_column:
|
| 326 |
with st.container():
|
| 327 |
+
app_view_column, app_site_column = st.columns([3, 3])
|
| 328 |
+
with app_view_column:
|
| 329 |
view_var = st.selectbox("Select view", ["Simple", "Advanced"], key='view_selectbox')
|
| 330 |
+
with app_site_column:
|
| 331 |
site_var = st.selectbox("What site do you want to view?", ('Draftkings', 'Fanduel'), key='site_selectbox')
|
| 332 |
|
| 333 |
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()
|
|
|
|
| 438 |
st.header("Optimals")
|
| 439 |
with st.expander("Info and Filters"):
|
| 440 |
st.info("These filters will display various optimals in the table below to pick from. If you want to export the entire set of 10,000 optimals, hit the 'Prepare full data export' button. If you would like to apply the filters here to the 10,000 optimals before you export, use the 'Prepare full data export (Filter)' button.")
|
| 441 |
+
optimals_site_col, optimals_macro_col, optimals_salary_col, optimals_stacks_col = st.columns(4)
|
| 442 |
+
with optimals_site_col:
|
| 443 |
slate_type_var3 = st.radio("Which slate type are you loading?", ('Regular', 'Showdown'), key='slate_type_var3_radio')
|
| 444 |
if slate_type_var3 == 'Regular':
|
| 445 |
if site_var == 'Draftkings':
|
|
|
|
| 462 |
dk_lineups = init_DK_lineups(slate_type_var3, slate_var3)
|
| 463 |
elif site_var == 'Fanduel':
|
| 464 |
fd_lineups = init_FD_lineups(slate_type_var3, slate_var3)
|
| 465 |
+
with optimals_macro_col:
|
| 466 |
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')
|
| 467 |
player_var1 = st.radio("Do you want a frame with specific Players?", ('Full Slate', 'Specific Players'), key='player_var1_radio')
|
| 468 |
if player_var1 == 'Specific Players':
|
| 469 |
player_var2 = st.multiselect('Which players do you want?', options = raw_baselines['Player'].unique(), key='player_var2_multiselect')
|
| 470 |
elif player_var1 == 'Full Slate':
|
| 471 |
player_var2 = raw_baselines.Player.values.tolist()
|
| 472 |
+
with optimals_salary_col:
|
| 473 |
if site_var == 'Draftkings':
|
| 474 |
salary_min_var = st.number_input("Minimum salary used", min_value = 0, max_value = 50000, value = 49000, step = 100, key = 'salary_min_var_dk')
|
| 475 |
salary_max_var = st.number_input("Maximum salary used", min_value = 0, max_value = 50000, value = 50000, step = 100, key = 'salary_max_var_dk')
|
| 476 |
elif site_var == 'Fanduel':
|
| 477 |
salary_min_var = st.number_input("Minimum salary used", min_value = 0, max_value = 60000, value = 59000, step = 100, key = 'salary_min_var_fd')
|
| 478 |
salary_max_var = st.number_input("Maximum salary used", min_value = 0, max_value = 60000, value = 60000, step = 100, key = 'salary_max_var_fd')
|
| 479 |
+
with optimals_stacks_col:
|
| 480 |
if site_var == 'Draftkings':
|
| 481 |
min_stacks_var = st.number_input("Minimum stacks used", min_value = 0, max_value = 5, value = 1, step = 1, key = 'min_stacks_var_dk')
|
| 482 |
max_stacks_var = st.number_input("Maximum stacks used", min_value = 0, max_value = 5, value = 5, step = 1, key = 'max_stacks_var_dk')
|
|
|
|
| 937 |
)
|
| 938 |
|
| 939 |
with handbuilder_tab:
|
| 940 |
+
handbuilder_header_column, handbuilder_slate_column = st.columns(2)
|
| 941 |
+
with handbuilder_header_column:
|
| 942 |
st.header("Handbuilder")
|
| 943 |
+
with handbuilder_slate_column:
|
| 944 |
slate_var3 = st.selectbox("Slate Selection", options=['Main', 'Secondary', 'Auxiliary'], key='handbuilder_slate_selectbox')
|
| 945 |
if site_var == 'Draftkings':
|
| 946 |
if slate_var3 == 'Main':
|
|
|
|
| 995 |
|
| 996 |
# --- PLAYER FILTERS ---
|
| 997 |
with st.expander("Player Filters"):
|
| 998 |
+
handbuilder_player_filters_column, handbuilder_player_filters_salary_column = st.columns(2)
|
| 999 |
+
with handbuilder_player_filters_column:
|
| 1000 |
pos_select3 = st.multiselect("Select your position(s)", options=['QB', 'RB', 'WR', 'TE', 'UTIL', 'DST'], key='pos_select3_multiselect')
|
| 1001 |
+
with handbuilder_player_filters_salary_column:
|
| 1002 |
salary_var = st.number_input("Salary Max", min_value = 0, max_value = 20000, value = 20000, step = 100, key='handbuilder_salary_max_input')
|
| 1003 |
|
| 1004 |
# --- TEAM FILTER UI ---
|
|
|
|
| 1132 |
# player_select_df = player_select_df[player_select_df.apply(is_player_eligible, axis=1)]
|
| 1133 |
print(player_select_df.head(10))
|
| 1134 |
|
| 1135 |
+
handbuilder_lineup_build_column, handbuilder_player_select_column = st.columns([1, 2])
|
| 1136 |
+
with handbuilder_player_select_column:
|
| 1137 |
st.subheader("Player Select")
|
| 1138 |
event = st.dataframe(
|
| 1139 |
player_select_df.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').background_gradient(cmap='RdYlGn_r', subset=['Salary', 'Own']).format(precision=2),
|
|
|
|
| 1174 |
st.rerun()
|
| 1175 |
|
| 1176 |
|
| 1177 |
+
with handbuilder_lineup_build_column:
|
| 1178 |
st.subheader("Lineup Build")
|
| 1179 |
|
| 1180 |
# --- EXPLICIT LINEUP ORDER ---
|
|
|
|
| 1258 |
})
|
| 1259 |
summary_row = summary_row[['Salary', 'Median', 'Own']].head(max_players)
|
| 1260 |
|
| 1261 |
+
handbuilder_lineup_build_salary_column, handbuilder_lineup_build_median_column = st.columns([2, 3])
|
| 1262 |
|
| 1263 |
+
with handbuilder_lineup_build_salary_column:
|
| 1264 |
if (max_players - len(filled_lineup)) > 0:
|
| 1265 |
st.markdown(f"""
|
| 1266 |
<div style='text-align: left; vertical-align: top; margin-top: 0; padding-top: 0;''>
|
|
|
|
| 1276 |
""",
|
| 1277 |
unsafe_allow_html=True)
|
| 1278 |
|
| 1279 |
+
with handbuilder_lineup_build_median_column:
|
| 1280 |
if total_salary <= max_salary:
|
| 1281 |
st.markdown(
|
| 1282 |
f"""
|