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
Files changed (1) hide show
  1. 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(50000 * (prio_mix / 100)))
246
- cursor2 = collection.find().sort('Own', -1).limit(math.ceil(50000 * ((100 - prio_mix) / 100)))
247
  raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
248
  else:
249
- cursor = collection.find().sort(prio_var, -1).limit(50000)
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(50000 * (prio_mix / 100)))
266
- cursor2 = collection.find().sort('Own', -1).limit(math.ceil(50000 * ((100 - prio_mix) / 100)))
267
  raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
268
  else:
269
- cursor = collection.find().sort(prio_var, -1).limit(50000)
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(50000 * (prio_mix / 100)))
286
- cursor2 = collection.find().sort('Own', -1).limit(math.ceil(50000 * ((100 - prio_mix) / 100)))
287
  raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
288
  else:
289
- cursor = collection.find().sort(prio_var, -1).limit(50000)
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
- if slate_var == 'Main':
298
- collection = db['DK_NFL_SD_seed_frame']
299
- if prio_var == None:
300
- cursor1 = collection.find().limit(math.ceil(50000 * (prio_mix / 100)))
301
- cursor2 = collection.find().sort('Own', -1).limit(math.ceil(50000 * ((100 - prio_mix) / 100)))
302
- raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
303
- else:
304
- cursor = collection.find().sort(prio_var, -1).limit(50000)
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
- raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
334
- for column in ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']:
335
- raw_display[column] = raw_display[column].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(raw_display[column])
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(50000 * (prio_mix / 100)))
367
- cursor2 = collection.find().sort('Own', -1).limit(math.ceil(50000 * ((100 - prio_mix) / 100)))
368
  raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
369
  else:
370
- cursor = collection.find().sort(prio_var, -1).limit(50000)
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(50000 * (prio_mix / 100)))
387
- cursor2 = collection.find().sort('Own', -1).limit(math.ceil(50000 * ((100 - prio_mix) / 100)))
388
  raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
389
  else:
390
- cursor = collection.find().sort(prio_var, -1).limit(50000)
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(50000 * (prio_mix / 100)))
407
- cursor2 = collection.find().sort('Own', -1).limit(math.ceil(50000 * ((100 - prio_mix) / 100)))
408
  raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
409
  else:
410
- cursor = collection.find().sort(prio_var, -1).limit(50000)
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
- if slate_var == 'Main':
420
- collection = db['FD_NFL_SD_seed_frame']
421
- if prio_var == None:
422
- cursor1 = collection.find().limit(math.ceil(50000 * (prio_mix / 100)))
423
- cursor2 = collection.find().sort('Own', -1).limit(math.ceil(50000 * ((100 - prio_mix) / 100)))
424
- raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
425
- else:
426
- cursor = collection.find().sort(prio_var, -1).limit(50000)
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
- raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
456
- for column in ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']:
457
- raw_display[column] = raw_display[column].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(raw_display[column])
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')