James McCool
commited on
Commit
·
5ea5e3d
1
Parent(s):
cb46d4d
Refactor lineup initialization functions for DraftKings and FanDuel to include lineup number parameter, enhancing flexibility in data retrieval and processing for various slate types.
Browse files- src/streamlit_app.py +49 -118
src/streamlit_app.py
CHANGED
|
@@ -219,15 +219,7 @@ def init_baselines():
|
|
| 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
|
|
@@ -242,11 +234,11 @@ def init_DK_lineups(type_var, slate_var, prio_var, prio_mix, db_translation):
|
|
| 242 |
|
| 243 |
collection = db['DK_NFL_seed_frame']
|
| 244 |
if prio_var == None:
|
| 245 |
-
cursor1 = collection.find().limit(math.ceil(
|
| 246 |
-
cursor2 = collection.find().sort('Own', -1).limit(math.ceil(
|
| 247 |
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 248 |
else:
|
| 249 |
-
cursor = collection.find().sort(prio_var, -1).limit(
|
| 250 |
raw_display = pd.DataFrame(list(cursor))
|
| 251 |
|
| 252 |
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
|
@@ -262,11 +254,11 @@ def init_DK_lineups(type_var, slate_var, prio_var, prio_mix, db_translation):
|
|
| 262 |
|
| 263 |
collection = db['DK_NFL_Secondary_seed_frame']
|
| 264 |
if prio_var == None:
|
| 265 |
-
cursor1 = collection.find().limit(math.ceil(
|
| 266 |
-
cursor2 = collection.find().sort('Own', -1).limit(math.ceil(
|
| 267 |
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 268 |
else:
|
| 269 |
-
cursor = collection.find().sort(prio_var, -1).limit(
|
| 270 |
raw_display = pd.DataFrame(list(cursor))
|
| 271 |
|
| 272 |
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
|
@@ -282,11 +274,11 @@ def init_DK_lineups(type_var, slate_var, prio_var, prio_mix, db_translation):
|
|
| 282 |
|
| 283 |
collection = db['DK_NFL_Late_seed_frame']
|
| 284 |
if prio_var == None:
|
| 285 |
-
cursor1 = collection.find().limit(math.ceil(
|
| 286 |
-
cursor2 = collection.find().sort('Own', -1).limit(math.ceil(
|
| 287 |
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 288 |
else:
|
| 289 |
-
cursor = collection.find().sort(prio_var, -1).limit(
|
| 290 |
raw_display = pd.DataFrame(list(cursor))
|
| 291 |
|
| 292 |
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
|
@@ -294,60 +286,25 @@ def init_DK_lineups(type_var, slate_var, prio_var, prio_mix, db_translation):
|
|
| 294 |
# Map names
|
| 295 |
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict))
|
| 296 |
elif type_var == 'Showdown':
|
| 297 |
-
|
| 298 |
-
|
| 299 |
-
|
| 300 |
-
|
| 301 |
-
|
| 302 |
-
|
| 303 |
-
|
| 304 |
-
|
| 305 |
-
raw_display = pd.DataFrame(list(cursor))
|
| 306 |
-
|
| 307 |
-
raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
| 308 |
-
for column in ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']:
|
| 309 |
-
raw_display[column] = raw_display[column].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(raw_display[column])
|
| 310 |
-
elif slate_var == 'Secondary':
|
| 311 |
-
collection = db['DK_NFL_Secondary_SD_seed_frame']
|
| 312 |
-
if prio_var == None:
|
| 313 |
-
cursor1 = collection.find().limit(math.ceil(50000 * (prio_mix / 100)))
|
| 314 |
-
cursor2 = collection.find().sort('Own', -1).limit(math.ceil(50000 * ((100 - prio_mix) / 100)))
|
| 315 |
-
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 316 |
-
else:
|
| 317 |
-
cursor = collection.find().sort(prio_var, -1).limit(50000)
|
| 318 |
-
raw_display = pd.DataFrame(list(cursor))
|
| 319 |
-
|
| 320 |
-
raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
| 321 |
-
for column in ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']:
|
| 322 |
-
raw_display[column] = raw_display[column].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(raw_display[column])
|
| 323 |
-
elif slate_var == 'Auxiliary':
|
| 324 |
-
collection = db['DK_NFL_Auxiliary_SD_seed_frame']
|
| 325 |
-
if prio_var == None:
|
| 326 |
-
cursor1 = collection.find().limit(math.ceil(50000 * (prio_mix / 100)))
|
| 327 |
-
cursor2 = collection.find().sort('Own', -1).limit(math.ceil(50000 * ((100 - prio_mix) / 100)))
|
| 328 |
-
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 329 |
-
else:
|
| 330 |
-
cursor = collection.find().sort(prio_var, -1).limit(50000)
|
| 331 |
-
raw_display = pd.DataFrame(list(cursor))
|
| 332 |
|
| 333 |
-
|
| 334 |
-
|
| 335 |
-
|
| 336 |
|
| 337 |
DK_seed = raw_display.to_numpy()
|
| 338 |
|
| 339 |
return DK_seed
|
| 340 |
|
| 341 |
@st.cache_resource(ttl = 60)
|
| 342 |
-
def init_FD_lineups(type_var, slate_var, prio_var, prio_mix, db_translation):
|
| 343 |
-
|
| 344 |
-
if type_var == 'Showdown':
|
| 345 |
-
collection = db[db_translation[slate_var]]
|
| 346 |
-
cursor = collection.find()
|
| 347 |
-
raw_display = pd.DataFrame(list(cursor))
|
| 348 |
-
raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
| 349 |
-
for column in ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']:
|
| 350 |
-
raw_display[column] = raw_display[column].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(raw_display[column])
|
| 351 |
|
| 352 |
if prio_var == 'Mix':
|
| 353 |
prio_var = None
|
|
@@ -363,11 +320,11 @@ def init_FD_lineups(type_var, slate_var, prio_var, prio_mix, db_translation):
|
|
| 363 |
|
| 364 |
collection = db['FD_NFL_seed_frame']
|
| 365 |
if prio_var == None:
|
| 366 |
-
cursor1 = collection.find().limit(math.ceil(
|
| 367 |
-
cursor2 = collection.find().sort('Own', -1).limit(math.ceil(
|
| 368 |
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 369 |
else:
|
| 370 |
-
cursor = collection.find().sort(prio_var, -1).limit(
|
| 371 |
raw_display = pd.DataFrame(list(cursor))
|
| 372 |
|
| 373 |
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
|
@@ -383,11 +340,11 @@ def init_FD_lineups(type_var, slate_var, prio_var, prio_mix, db_translation):
|
|
| 383 |
|
| 384 |
collection = db['FD_NFL_Secondary_seed_frame']
|
| 385 |
if prio_var == None:
|
| 386 |
-
cursor1 = collection.find().limit(math.ceil(
|
| 387 |
-
cursor2 = collection.find().sort('Own', -1).limit(math.ceil(
|
| 388 |
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 389 |
else:
|
| 390 |
-
cursor = collection.find().sort(prio_var, -1).limit(
|
| 391 |
raw_display = pd.DataFrame(list(cursor))
|
| 392 |
|
| 393 |
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
|
@@ -403,11 +360,11 @@ def init_FD_lineups(type_var, slate_var, prio_var, prio_mix, db_translation):
|
|
| 403 |
|
| 404 |
collection = db['FD_NFL_Late_seed_frame']
|
| 405 |
if prio_var == None:
|
| 406 |
-
cursor1 = collection.find().limit(math.ceil(
|
| 407 |
-
cursor2 = collection.find().sort('Own', -1).limit(math.ceil(
|
| 408 |
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 409 |
else:
|
| 410 |
-
cursor = collection.find().sort(prio_var, -1).limit(
|
| 411 |
raw_display = pd.DataFrame(list(cursor))
|
| 412 |
|
| 413 |
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
|
@@ -416,45 +373,18 @@ def init_FD_lineups(type_var, slate_var, prio_var, prio_mix, db_translation):
|
|
| 416 |
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict))
|
| 417 |
|
| 418 |
elif type_var == 'Showdown':
|
| 419 |
-
|
| 420 |
-
|
| 421 |
-
|
| 422 |
-
|
| 423 |
-
|
| 424 |
-
|
| 425 |
-
|
| 426 |
-
|
| 427 |
-
raw_display = pd.DataFrame(list(cursor))
|
| 428 |
-
|
| 429 |
-
raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
| 430 |
-
for column in ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']:
|
| 431 |
-
raw_display[column] = raw_display[column].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(raw_display[column])
|
| 432 |
-
elif slate_var == 'Secondary':
|
| 433 |
-
collection = db['FD_NFL_Secondary_SD_seed_frame']
|
| 434 |
-
if prio_var == None:
|
| 435 |
-
cursor1 = collection.find().limit(math.ceil(50000 * (prio_mix / 100)))
|
| 436 |
-
cursor2 = collection.find().sort('Own', -1).limit(math.ceil(50000 * ((100 - prio_mix) / 100)))
|
| 437 |
-
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 438 |
-
else:
|
| 439 |
-
cursor = collection.find().sort(prio_var, -1).limit(50000)
|
| 440 |
-
raw_display = pd.DataFrame(list(cursor))
|
| 441 |
-
|
| 442 |
-
raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
| 443 |
-
for column in ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']:
|
| 444 |
-
raw_display[column] = raw_display[column].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(raw_display[column])
|
| 445 |
-
elif slate_var == 'Auxiliary':
|
| 446 |
-
collection = db['FD_NFL_Auxiliary_SD_seed_frame']
|
| 447 |
-
if prio_var == None:
|
| 448 |
-
cursor1 = collection.find().limit(math.ceil(50000 * (prio_mix / 100)))
|
| 449 |
-
cursor2 = collection.find().sort('Own', -1).limit(math.ceil(50000 * ((100 - prio_mix) / 100)))
|
| 450 |
-
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 451 |
-
else:
|
| 452 |
-
cursor = collection.find().sort(prio_var, -1).limit(50000)
|
| 453 |
-
raw_display = pd.DataFrame(list(cursor))
|
| 454 |
|
| 455 |
-
|
| 456 |
-
|
| 457 |
-
|
| 458 |
|
| 459 |
FD_seed = raw_display.to_numpy()
|
| 460 |
|
|
@@ -487,8 +417,8 @@ with app_load_reset_column:
|
|
| 487 |
if st.button("Load/Reset Data", key='reset_data_button'):
|
| 488 |
st.cache_data.clear()
|
| 489 |
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()
|
| 490 |
-
dk_lineups = init_DK_lineups('Regular', slate_names_dk[0], 'proj', 50, dk_showdown_db_translation)
|
| 491 |
-
fd_lineups = init_FD_lineups('Regular', slate_names_fd[0], 'proj', 50, fd_showdown_db_translation)
|
| 492 |
for key in st.session_state.keys():
|
| 493 |
del st.session_state[key]
|
| 494 |
with app_view_site_column:
|
|
@@ -1089,6 +1019,7 @@ if selected_tab == 'Optimals':
|
|
| 1089 |
with prio_col:
|
| 1090 |
prio_var = st.radio("Which priority variable do you want to use?", ('proj', 'Own', 'Mix'), key='prio_var_radio')
|
| 1091 |
prio_mix = st.number_input("If Mix, what split of Projection/Ownership to dedicate to Projection?", min_value=0, max_value=100, value=50, step=1)
|
|
|
|
| 1092 |
with optimals_site_col:
|
| 1093 |
slate_type_var3 = st.radio("Which slate type are you loading?", ('Regular', 'Showdown'), key='slate_type_var3_radio')
|
| 1094 |
if slate_type_var3 == 'Regular':
|
|
@@ -1104,14 +1035,14 @@ if selected_tab == 'Optimals':
|
|
| 1104 |
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')
|
| 1105 |
if slate_type_var3 == 'Regular':
|
| 1106 |
if site_var == 'Draftkings':
|
| 1107 |
-
dk_lineups = init_DK_lineups(slate_type_var3, slate_var3, prio_var, prio_mix, dk_showdown_db_translation)
|
| 1108 |
elif site_var == 'Fanduel':
|
| 1109 |
-
fd_lineups = init_FD_lineups(slate_type_var3, slate_var3, prio_var, prio_mix, fd_showdown_db_translation)
|
| 1110 |
elif slate_type_var3 == 'Showdown':
|
| 1111 |
if site_var == 'Draftkings':
|
| 1112 |
-
dk_lineups = init_DK_lineups(slate_type_var3, slate_name_lookup_dk[slate_var3], prio_var, prio_mix, dk_showdown_db_translation)
|
| 1113 |
elif site_var == 'Fanduel':
|
| 1114 |
-
fd_lineups = init_FD_lineups(slate_type_var3, slate_name_lookup_fd[slate_var3], prio_var, prio_mix, fd_showdown_db_translation)
|
| 1115 |
with optimals_macro_col:
|
| 1116 |
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')
|
| 1117 |
player_var1 = st.radio("Do you want a frame with specific Players?", ('Full Slate', 'Specific Players'), key='player_var1_radio')
|
|
|
|
| 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, lineup_num):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 223 |
|
| 224 |
if prio_var == 'Mix':
|
| 225 |
prio_var = None
|
|
|
|
| 234 |
|
| 235 |
collection = db['DK_NFL_seed_frame']
|
| 236 |
if prio_var == None:
|
| 237 |
+
cursor1 = collection.find().limit(math.ceil(lineup_num * (prio_mix / 100)))
|
| 238 |
+
cursor2 = collection.find().sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
|
| 239 |
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 240 |
else:
|
| 241 |
+
cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
|
| 242 |
raw_display = pd.DataFrame(list(cursor))
|
| 243 |
|
| 244 |
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
|
|
|
| 254 |
|
| 255 |
collection = db['DK_NFL_Secondary_seed_frame']
|
| 256 |
if prio_var == None:
|
| 257 |
+
cursor1 = collection.find().limit(math.ceil(lineup_num * (prio_mix / 100)))
|
| 258 |
+
cursor2 = collection.find().sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
|
| 259 |
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 260 |
else:
|
| 261 |
+
cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
|
| 262 |
raw_display = pd.DataFrame(list(cursor))
|
| 263 |
|
| 264 |
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
|
|
|
| 274 |
|
| 275 |
collection = db['DK_NFL_Late_seed_frame']
|
| 276 |
if prio_var == None:
|
| 277 |
+
cursor1 = collection.find().limit(math.ceil(lineup_num * (prio_mix / 100)))
|
| 278 |
+
cursor2 = collection.find().sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
|
| 279 |
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 280 |
else:
|
| 281 |
+
cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
|
| 282 |
raw_display = pd.DataFrame(list(cursor))
|
| 283 |
|
| 284 |
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
|
|
|
| 286 |
# Map names
|
| 287 |
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict))
|
| 288 |
elif type_var == 'Showdown':
|
| 289 |
+
collection = db[db_translation[slate_var]]
|
| 290 |
+
if prio_var == None:
|
| 291 |
+
cursor1 = collection.find().limit(math.ceil(lineup_num * (prio_mix / 100)))
|
| 292 |
+
cursor2 = collection.find().sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
|
| 293 |
+
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 294 |
+
else:
|
| 295 |
+
cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
|
| 296 |
+
raw_display = pd.DataFrame(list(cursor))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 297 |
|
| 298 |
+
raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
| 299 |
+
for column in ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']:
|
| 300 |
+
raw_display[column] = raw_display[column].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(raw_display[column])
|
| 301 |
|
| 302 |
DK_seed = raw_display.to_numpy()
|
| 303 |
|
| 304 |
return DK_seed
|
| 305 |
|
| 306 |
@st.cache_resource(ttl = 60)
|
| 307 |
+
def init_FD_lineups(type_var, slate_var, prio_var, prio_mix, db_translation, lineup_num):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 308 |
|
| 309 |
if prio_var == 'Mix':
|
| 310 |
prio_var = None
|
|
|
|
| 320 |
|
| 321 |
collection = db['FD_NFL_seed_frame']
|
| 322 |
if prio_var == None:
|
| 323 |
+
cursor1 = collection.find().limit(math.ceil(lineup_num * (prio_mix / 100)))
|
| 324 |
+
cursor2 = collection.find().sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
|
| 325 |
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 326 |
else:
|
| 327 |
+
cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
|
| 328 |
raw_display = pd.DataFrame(list(cursor))
|
| 329 |
|
| 330 |
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
|
|
|
| 340 |
|
| 341 |
collection = db['FD_NFL_Secondary_seed_frame']
|
| 342 |
if prio_var == None:
|
| 343 |
+
cursor1 = collection.find().limit(math.ceil(lineup_num * (prio_mix / 100)))
|
| 344 |
+
cursor2 = collection.find().sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
|
| 345 |
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 346 |
else:
|
| 347 |
+
cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
|
| 348 |
raw_display = pd.DataFrame(list(cursor))
|
| 349 |
|
| 350 |
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
|
|
|
| 360 |
|
| 361 |
collection = db['FD_NFL_Late_seed_frame']
|
| 362 |
if prio_var == None:
|
| 363 |
+
cursor1 = collection.find().limit(math.ceil(lineup_num * (prio_mix / 100)))
|
| 364 |
+
cursor2 = collection.find().sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
|
| 365 |
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 366 |
else:
|
| 367 |
+
cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
|
| 368 |
raw_display = pd.DataFrame(list(cursor))
|
| 369 |
|
| 370 |
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
|
|
|
| 373 |
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict))
|
| 374 |
|
| 375 |
elif type_var == 'Showdown':
|
| 376 |
+
collection = db[db_translation[slate_var]]
|
| 377 |
+
if prio_var == None:
|
| 378 |
+
cursor1 = collection.find().limit(math.ceil(lineup_num * (prio_mix / 100)))
|
| 379 |
+
cursor2 = collection.find().sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100)))
|
| 380 |
+
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 381 |
+
else:
|
| 382 |
+
cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
|
| 383 |
+
raw_display = pd.DataFrame(list(cursor))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 384 |
|
| 385 |
+
raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
| 386 |
+
for column in ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']:
|
| 387 |
+
raw_display[column] = raw_display[column].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(raw_display[column])
|
| 388 |
|
| 389 |
FD_seed = raw_display.to_numpy()
|
| 390 |
|
|
|
|
| 417 |
if st.button("Load/Reset Data", key='reset_data_button'):
|
| 418 |
st.cache_data.clear()
|
| 419 |
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()
|
| 420 |
+
dk_lineups = init_DK_lineups('Regular', slate_names_dk[0], 'proj', 50, dk_showdown_db_translation, 25000)
|
| 421 |
+
fd_lineups = init_FD_lineups('Regular', slate_names_fd[0], 'proj', 50, fd_showdown_db_translation, 25000)
|
| 422 |
for key in st.session_state.keys():
|
| 423 |
del st.session_state[key]
|
| 424 |
with app_view_site_column:
|
|
|
|
| 1019 |
with prio_col:
|
| 1020 |
prio_var = st.radio("Which priority variable do you want to use?", ('proj', 'Own', 'Mix'), key='prio_var_radio')
|
| 1021 |
prio_mix = st.number_input("If Mix, what split of Projection/Ownership to dedicate to Projection?", min_value=0, max_value=100, value=50, step=1)
|
| 1022 |
+
lineup_num = st.number_input("How many lineups do you want to work with?", min_value=1000, max_value=50000, value=25000, step=100, key='lineup_num_var_input')
|
| 1023 |
with optimals_site_col:
|
| 1024 |
slate_type_var3 = st.radio("Which slate type are you loading?", ('Regular', 'Showdown'), key='slate_type_var3_radio')
|
| 1025 |
if slate_type_var3 == 'Regular':
|
|
|
|
| 1035 |
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')
|
| 1036 |
if slate_type_var3 == 'Regular':
|
| 1037 |
if site_var == 'Draftkings':
|
| 1038 |
+
dk_lineups = init_DK_lineups(slate_type_var3, slate_var3, prio_var, prio_mix, dk_showdown_db_translation, lineup_num)
|
| 1039 |
elif site_var == 'Fanduel':
|
| 1040 |
+
fd_lineups = init_FD_lineups(slate_type_var3, slate_var3, prio_var, prio_mix, fd_showdown_db_translation, lineup_num)
|
| 1041 |
elif slate_type_var3 == 'Showdown':
|
| 1042 |
if site_var == 'Draftkings':
|
| 1043 |
+
dk_lineups = init_DK_lineups(slate_type_var3, slate_name_lookup_dk[slate_var3], prio_var, prio_mix, dk_showdown_db_translation, lineup_num)
|
| 1044 |
elif site_var == 'Fanduel':
|
| 1045 |
+
fd_lineups = init_FD_lineups(slate_type_var3, slate_name_lookup_fd[slate_var3], prio_var, prio_mix, fd_showdown_db_translation, lineup_num)
|
| 1046 |
with optimals_macro_col:
|
| 1047 |
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')
|
| 1048 |
player_var1 = st.radio("Do you want a frame with specific Players?", ('Full Slate', 'Specific Players'), key='player_var1_radio')
|