James McCool commited on
Commit
5a3709f
·
1 Parent(s): 937edee

Refactor seed frame initialization in app.py to include split parameter for limiting database queries. Updated functions for DraftKings and FanDuel to enhance performance and flexibility in data handling. Adjusted contest simulation logic to utilize the new split parameter, improving user control over lineup generation. This change streamlines data retrieval and enhances the overall efficiency of player ownership analysis and contest simulations.

Browse files
Files changed (1) hide show
  1. app.py +146 -109
app.py CHANGED
@@ -22,14 +22,14 @@ dk_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'pro
22
  fd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
23
 
24
  @st.cache_data(ttl = 599)
25
- def init_DK_seed_frames(sport):
26
  if sport == 'NFL':
27
  db = client["NFL_Database"]
28
  elif sport == 'NBA':
29
  db = client["NBA_DFS"]
30
 
31
  collection = db[f"DK_{sport}_SD_seed_frame"]
32
- cursor = collection.find()
33
 
34
  raw_display = pd.DataFrame(list(cursor))
35
  raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
@@ -38,7 +38,7 @@ def init_DK_seed_frames(sport):
38
  return DK_seed
39
 
40
  @st.cache_data(ttl = 599)
41
- def init_DK_secondary_seed_frames(sport):
42
 
43
  if sport == 'NFL':
44
  db = client["NFL_Database"]
@@ -46,7 +46,7 @@ def init_DK_secondary_seed_frames(sport):
46
  db = client["NBA_DFS"]
47
 
48
  collection = db[f"DK_{sport}_Secondary_SD_seed_frame"]
49
- cursor = collection.find()
50
 
51
  raw_display = pd.DataFrame(list(cursor))
52
  raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
@@ -55,7 +55,7 @@ def init_DK_secondary_seed_frames(sport):
55
  return DK_second_seed
56
 
57
  @st.cache_data(ttl = 599)
58
- def init_DK_auxiliary_seed_frames(sport):
59
 
60
  if sport == 'NFL':
61
  db = client["NFL_Database"]
@@ -63,7 +63,7 @@ def init_DK_auxiliary_seed_frames(sport):
63
  db = client["NBA_DFS"]
64
 
65
  collection = db[f"DK_{sport}_Auxiliary_SD_seed_frame"]
66
- cursor = collection.find()
67
 
68
  raw_display = pd.DataFrame(list(cursor))
69
  raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
@@ -72,7 +72,7 @@ def init_DK_auxiliary_seed_frames(sport):
72
  return DK_auxiliary_seed
73
 
74
  @st.cache_data(ttl = 599)
75
- def init_FD_seed_frames(sport):
76
 
77
  if sport == 'NFL':
78
  db = client["NFL_Database"]
@@ -80,7 +80,7 @@ def init_FD_seed_frames(sport):
80
  db = client["NBA_DFS"]
81
 
82
  collection = db[f"FD_{sport}_SD_seed_frame"]
83
- cursor = collection.find()
84
 
85
  raw_display = pd.DataFrame(list(cursor))
86
  raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
@@ -89,7 +89,7 @@ def init_FD_seed_frames(sport):
89
  return FD_seed
90
 
91
  @st.cache_data(ttl = 599)
92
- def init_FD_secondary_seed_frames(sport):
93
 
94
  if sport == 'NFL':
95
  db = client["NFL_Database"]
@@ -97,7 +97,7 @@ def init_FD_secondary_seed_frames(sport):
97
  db = client["NBA_DFS"]
98
 
99
  collection = db[f"FD_{sport}_Secondary_SD_seed_frame"]
100
- cursor = collection.find()
101
 
102
  raw_display = pd.DataFrame(list(cursor))
103
  raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
@@ -106,7 +106,7 @@ def init_FD_secondary_seed_frames(sport):
106
  return FD_second_seed
107
 
108
  @st.cache_data(ttl = 599)
109
- def init_FD_auxiliary_seed_frames(sport):
110
 
111
  if sport == 'NFL':
112
  db = client["NFL_Database"]
@@ -114,7 +114,7 @@ def init_FD_auxiliary_seed_frames(sport):
114
  db = client["NBA_DFS"]
115
 
116
  collection = db[f"FD_{sport}_Auxiliary_SD_seed_frame"]
117
- cursor = collection.find()
118
 
119
  raw_display = pd.DataFrame(list(cursor))
120
  raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
@@ -212,10 +212,9 @@ def calculate_FD_value_frequencies(np_array):
212
  return combined_array
213
 
214
  @st.cache_data
215
- def sim_contest(Sim_size, seed_frame, maps_dict, sharp_split, Contest_Size):
216
  SimVar = 1
217
  Sim_Winners = []
218
- fp_array = seed_frame[:sharp_split, :]
219
 
220
  # Pre-vectorize functions
221
  vec_projection_map = np.vectorize(maps_dict['Projection_map'].__getitem__)
@@ -226,7 +225,7 @@ def sim_contest(Sim_size, seed_frame, maps_dict, sharp_split, Contest_Size):
226
  st.write('Simulating contest on frames')
227
 
228
  while SimVar <= Sim_size:
229
- fp_random = fp_array[np.random.choice(fp_array.shape[0], Contest_Size)]
230
 
231
  sample_arrays1 = np.c_[
232
  fp_random,
@@ -262,31 +261,11 @@ with tab2:
262
  dk_raw, fd_raw = init_baselines('NFL')
263
 
264
  sport_var1 = st.radio("What sport are you working with?", ('NFL', 'NBA'), key='sport_var1')
265
- dk_raw, fd_raw = init_baselines(sport_var1)
266
  slate_var1 = st.radio("Which data are you loading?", ('Showdown', 'Secondary Showdown', 'Auxiliary Showdown'), key='slate_var1')
 
267
 
268
  site_var1 = st.radio("What site are you working with?", ('Draftkings', 'Fanduel'), key='site_var1')
269
  if site_var1 == 'Draftkings':
270
- if slate_var1 == 'Showdown':
271
- DK_seed = init_DK_seed_frames(sport_var1)
272
- if sport_var1 == 'NFL':
273
- export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
274
- elif sport_var1 == 'NBA':
275
- export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
276
- elif slate_var1 == 'Secondary Showdown':
277
- DK_seed = init_DK_secondary_seed_frames(sport_var1)
278
- if sport_var1 == 'NFL':
279
- export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
280
- elif sport_var1 == 'NBA':
281
- export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
282
- elif slate_var1 == 'Auxiliary Showdown':
283
- DK_seed = init_DK_auxiliary_seed_frames(sport_var1)
284
- if sport_var1 == 'NFL':
285
- export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
286
- elif sport_var1 == 'NBA':
287
- export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
288
- raw_baselines = dk_raw
289
- column_names = dk_columns
290
 
291
  team_var1 = st.radio("Do you want a frame with specific teams?", ('Full Slate', 'Specific Teams'), key='team_var1')
292
  if team_var1 == 'Specific Teams':
@@ -301,26 +280,6 @@ with tab2:
301
  stack_var2 = [5, 4, 3, 2, 1, 0]
302
 
303
  elif site_var1 == 'Fanduel':
304
- if slate_var1 == 'Showdown':
305
- FD_seed = init_FD_seed_frames(sport_var1)
306
- if sport_var1 == 'NFL':
307
- export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
308
- elif sport_var1 == 'NBA':
309
- export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
310
- elif slate_var1 == 'Secondary Showdown':
311
- FD_seed = init_FD_secondary_seed_frames(sport_var1)
312
- if sport_var1 == 'NFL':
313
- export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
314
- elif sport_var1 == 'NBA':
315
- export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
316
- elif slate_var1 == 'Auxiliary Showdown':
317
- FD_seed = init_FD_auxiliary_seed_frames(sport_var1)
318
- if sport_var1 == 'NFL':
319
- export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
320
- elif sport_var1 == 'NBA':
321
- export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
322
- raw_baselines = fd_raw
323
- column_names = fd_columns
324
 
325
  team_var1 = st.radio("Do you want a frame with specific teams?", ('Full Slate', 'Specific Teams'), key='team_var1')
326
  if team_var1 == 'Specific Teams':
@@ -336,12 +295,58 @@ with tab2:
336
 
337
 
338
  if st.button("Prepare data export", key='data_export'):
 
339
  data_export = st.session_state.working_seed.copy()
340
- data_export[0:6, 0] = [export_id_dict[x] for x in data_export[0:6, 0]]
341
- st.download_button(
342
- label="Export optimals set",
343
- data=convert_df(data_export),
344
- file_name='NFL_SD_optimals_export.csv',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
345
  mime='text/csv',
346
  )
347
 
@@ -353,7 +358,24 @@ with tab2:
353
  st.session_state.working_seed = st.session_state.working_seed[np.isin(st.session_state.working_seed[:, 10], stack_var2)]
354
  st.session_state.data_export_display = pd.DataFrame(st.session_state.working_seed[0:1000], columns=column_names)
355
  elif 'working_seed' not in st.session_state:
356
- st.session_state.working_seed = DK_seed.copy()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
357
  st.session_state.working_seed = st.session_state.working_seed[np.isin(st.session_state.working_seed[:, 9], team_var2)]
358
  st.session_state.working_seed = st.session_state.working_seed[np.isin(st.session_state.working_seed[:, 10], stack_var2)]
359
  st.session_state.data_export_display = pd.DataFrame(st.session_state.working_seed[0:1000], columns=column_names)
@@ -364,7 +386,26 @@ with tab2:
364
  st.session_state.working_seed = st.session_state.working_seed[np.isin(st.session_state.working_seed[:, 9], stack_var2)]
365
  st.session_state.data_export_display = pd.DataFrame(st.session_state.working_seed[0:1000], columns=column_names)
366
  elif 'working_seed' not in st.session_state:
367
- st.session_state.working_seed = FD_seed.copy()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
368
  st.session_state.working_seed = st.session_state.working_seed[np.isin(st.session_state.working_seed[:, 8], team_var2)]
369
  st.session_state.working_seed = st.session_state.working_seed[np.isin(st.session_state.working_seed[:, 9], stack_var2)]
370
  st.session_state.data_export_display = pd.DataFrame(st.session_state.working_seed[0:1000], columns=column_names)
@@ -385,48 +426,6 @@ with tab1:
385
  dk_raw, fd_raw = init_baselines(sim_sport_var1)
386
  sim_slate_var1 = st.radio("Which data are you loading?", ('Showdown', 'Secondary Showdown', 'Auxiliary Showdown'), key='sim_slate_var1')
387
  sim_site_var1 = st.radio("What site are you working with?", ('Draftkings', 'Fanduel'), key='sim_site_var1')
388
- if sim_site_var1 == 'Draftkings':
389
- if sim_slate_var1 == 'Showdown':
390
- DK_seed = init_DK_seed_frames(sim_sport_var1)
391
- if sport_var1 == 'NFL':
392
- export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
393
- elif sport_var1 == 'NBA':
394
- export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
395
- elif sim_slate_var1 == 'Secondary Showdown':
396
- DK_seed = init_DK_secondary_seed_frames(sim_sport_var1)
397
- if sport_var1 == 'NFL':
398
- export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
399
- elif sport_var1 == 'NBA':
400
- export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
401
- elif sim_slate_var1 == 'Auxiliary Showdown':
402
- DK_seed = init_DK_auxiliary_seed_frames(sim_sport_var1)
403
- if sport_var1 == 'NFL':
404
- export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
405
- elif sport_var1 == 'NBA':
406
- export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
407
- raw_baselines = dk_raw
408
- column_names = dk_columns
409
- elif sim_site_var1 == 'Fanduel':
410
- if sim_slate_var1 == 'Showdown':
411
- FD_seed = init_FD_seed_frames(sim_sport_var1)
412
- if sport_var1 == 'NFL':
413
- export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
414
- elif sport_var1 == 'NBA':
415
- export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
416
- elif sim_slate_var1 == 'Secondary Showdown':
417
- FD_seed = init_FD_secondary_seed_frames(sim_sport_var1)
418
- if sport_var1 == 'NFL':
419
- export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
420
- elif sport_var1 == 'NBA':
421
- export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
422
- elif sim_slate_var1 == 'Auxiliary Showdown':
423
- FD_seed = init_FD_auxiliary_seed_frames(sim_sport_var1)
424
- if sport_var1 == 'NFL':
425
- export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
426
- elif sport_var1 == 'NBA':
427
- export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
428
- raw_baselines = fd_raw
429
- column_names = fd_columns
430
 
431
  contest_var1 = st.selectbox("What contest size are you simulating?", ('Small', 'Medium', 'Large', 'Custom'))
432
  if contest_var1 == 'Small':
@@ -469,7 +468,7 @@ with tab1:
469
  'STDev_map':dict(zip(raw_baselines.Player,raw_baselines.STDev)),
470
  'cpt_STDev_map':dict(zip(raw_baselines.Player,raw_baselines['CPT_STDev']))
471
  }
472
- Sim_Winners = sim_contest(1000, st.session_state.working_seed, maps_dict, sharp_split, Contest_Size)
473
  Sim_Winner_Frame = pd.DataFrame(np.concatenate(Sim_Winners))
474
 
475
  #st.table(Sim_Winner_Frame)
@@ -496,9 +495,47 @@ with tab1:
496
 
497
  else:
498
  if sim_site_var1 == 'Draftkings':
499
- st.session_state.working_seed = DK_seed.copy()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
500
  elif sim_site_var1 == 'Fanduel':
501
- st.session_state.working_seed = FD_seed.copy()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
502
  maps_dict = {
503
  'Projection_map':dict(zip(raw_baselines.Player,raw_baselines.Median)),
504
  'cpt_projection_map':dict(zip(raw_baselines.Player,raw_baselines.cpt_Median)),
@@ -510,7 +547,7 @@ with tab1:
510
  'STDev_map':dict(zip(raw_baselines.Player,raw_baselines.STDev)),
511
  'cpt_STDev_map':dict(zip(raw_baselines.Player,raw_baselines['CPT_STDev']))
512
  }
513
- Sim_Winners = sim_contest(1000, st.session_state.working_seed, maps_dict, sharp_split, Contest_Size)
514
  Sim_Winner_Frame = pd.DataFrame(np.concatenate(Sim_Winners))
515
 
516
  #st.table(Sim_Winner_Frame)
 
22
  fd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
23
 
24
  @st.cache_data(ttl = 599)
25
+ def init_DK_seed_frames(sport, split):
26
  if sport == 'NFL':
27
  db = client["NFL_Database"]
28
  elif sport == 'NBA':
29
  db = client["NBA_DFS"]
30
 
31
  collection = db[f"DK_{sport}_SD_seed_frame"]
32
+ cursor = collection.find().limit(split)
33
 
34
  raw_display = pd.DataFrame(list(cursor))
35
  raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
 
38
  return DK_seed
39
 
40
  @st.cache_data(ttl = 599)
41
+ def init_DK_secondary_seed_frames(sport, split):
42
 
43
  if sport == 'NFL':
44
  db = client["NFL_Database"]
 
46
  db = client["NBA_DFS"]
47
 
48
  collection = db[f"DK_{sport}_Secondary_SD_seed_frame"]
49
+ cursor = collection.find().limit(split)
50
 
51
  raw_display = pd.DataFrame(list(cursor))
52
  raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
 
55
  return DK_second_seed
56
 
57
  @st.cache_data(ttl = 599)
58
+ def init_DK_auxiliary_seed_frames(sport, split):
59
 
60
  if sport == 'NFL':
61
  db = client["NFL_Database"]
 
63
  db = client["NBA_DFS"]
64
 
65
  collection = db[f"DK_{sport}_Auxiliary_SD_seed_frame"]
66
+ cursor = collection.find().limit(split)
67
 
68
  raw_display = pd.DataFrame(list(cursor))
69
  raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
 
72
  return DK_auxiliary_seed
73
 
74
  @st.cache_data(ttl = 599)
75
+ def init_FD_seed_frames(sport, split):
76
 
77
  if sport == 'NFL':
78
  db = client["NFL_Database"]
 
80
  db = client["NBA_DFS"]
81
 
82
  collection = db[f"FD_{sport}_SD_seed_frame"]
83
+ cursor = collection.find().limit(split)
84
 
85
  raw_display = pd.DataFrame(list(cursor))
86
  raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
 
89
  return FD_seed
90
 
91
  @st.cache_data(ttl = 599)
92
+ def init_FD_secondary_seed_frames(sport, split):
93
 
94
  if sport == 'NFL':
95
  db = client["NFL_Database"]
 
97
  db = client["NBA_DFS"]
98
 
99
  collection = db[f"FD_{sport}_Secondary_SD_seed_frame"]
100
+ cursor = collection.find().limit(split)
101
 
102
  raw_display = pd.DataFrame(list(cursor))
103
  raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
 
106
  return FD_second_seed
107
 
108
  @st.cache_data(ttl = 599)
109
+ def init_FD_auxiliary_seed_frames(sport, split):
110
 
111
  if sport == 'NFL':
112
  db = client["NFL_Database"]
 
114
  db = client["NBA_DFS"]
115
 
116
  collection = db[f"FD_{sport}_Auxiliary_SD_seed_frame"]
117
+ cursor = collection.find().limit(split)
118
 
119
  raw_display = pd.DataFrame(list(cursor))
120
  raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
 
212
  return combined_array
213
 
214
  @st.cache_data
215
+ def sim_contest(Sim_size, seed_frame, maps_dict, Contest_Size):
216
  SimVar = 1
217
  Sim_Winners = []
 
218
 
219
  # Pre-vectorize functions
220
  vec_projection_map = np.vectorize(maps_dict['Projection_map'].__getitem__)
 
225
  st.write('Simulating contest on frames')
226
 
227
  while SimVar <= Sim_size:
228
+ fp_random = seed_frame[np.random.choice(seed_frame.shape[0], Contest_Size)]
229
 
230
  sample_arrays1 = np.c_[
231
  fp_random,
 
261
  dk_raw, fd_raw = init_baselines('NFL')
262
 
263
  sport_var1 = st.radio("What sport are you working with?", ('NFL', 'NBA'), key='sport_var1')
 
264
  slate_var1 = st.radio("Which data are you loading?", ('Showdown', 'Secondary Showdown', 'Auxiliary Showdown'), key='slate_var1')
265
+ sharp_split_var = st.number_input("How many lineups do you want?", value=10000, max_value=500000, min_value=10000, step=10000)
266
 
267
  site_var1 = st.radio("What site are you working with?", ('Draftkings', 'Fanduel'), key='site_var1')
268
  if site_var1 == 'Draftkings':
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
269
 
270
  team_var1 = st.radio("Do you want a frame with specific teams?", ('Full Slate', 'Specific Teams'), key='team_var1')
271
  if team_var1 == 'Specific Teams':
 
280
  stack_var2 = [5, 4, 3, 2, 1, 0]
281
 
282
  elif site_var1 == 'Fanduel':
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
283
 
284
  team_var1 = st.radio("Do you want a frame with specific teams?", ('Full Slate', 'Specific Teams'), key='team_var1')
285
  if team_var1 == 'Specific Teams':
 
295
 
296
 
297
  if st.button("Prepare data export", key='data_export'):
298
+ if 'working_seed' in st.session_state:
299
  data_export = st.session_state.working_seed.copy()
300
+ elif 'working_seed' not in st.session_state:
301
+ if site_var1 == 'Draftkings':
302
+ if slate_var1 == 'Showdown':
303
+ st.session_state.working_seed = init_DK_seed_frames(sport_var1, sharp_split_var)
304
+ if sport_var1 == 'NFL':
305
+ export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
306
+ elif sport_var1 == 'NBA':
307
+ export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
308
+ elif slate_var1 == 'Secondary Showdown':
309
+ st.session_state.working_seed = init_DK_secondary_seed_frames(sport_var1, sharp_split_var)
310
+ if sport_var1 == 'NFL':
311
+ export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
312
+ elif sport_var1 == 'NBA':
313
+ export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
314
+ elif slate_var1 == 'Auxiliary Showdown':
315
+ st.session_state.working_seed = init_DK_auxiliary_seed_frames(sport_var1, sharp_split_var)
316
+ if sport_var1 == 'NFL':
317
+ export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
318
+ elif sport_var1 == 'NBA':
319
+ export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
320
+ raw_baselines = dk_raw
321
+ column_names = dk_columns
322
+ elif site_var1 == 'Fanduel':
323
+ if slate_var1 == 'Showdown':
324
+ st.session_state.working_seed = init_FD_seed_frames(sport_var1, sharp_split_var)
325
+ if sport_var1 == 'NFL':
326
+ export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
327
+ elif sport_var1 == 'NBA':
328
+ export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
329
+ elif slate_var1 == 'Secondary Showdown':
330
+ st.session_state.working_seed = init_FD_secondary_seed_frames(sport_var1, sharp_split_var)
331
+ if sport_var1 == 'NFL':
332
+ export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
333
+ elif sport_var1 == 'NBA':
334
+ export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
335
+ elif slate_var1 == 'Auxiliary Showdown':
336
+ st.session_state.working_seed = init_FD_auxiliary_seed_frames(sport_var1, sharp_split_var)
337
+ if sport_var1 == 'NFL':
338
+ export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
339
+ elif sport_var1 == 'NBA':
340
+ export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
341
+ raw_baselines = fd_raw
342
+ column_names = fd_columns
343
+ data_export = st.session_state.working_seed.copy()
344
+ for col in range(6):
345
+ data_export[:, col] = np.array([export_id_dict.get(x, x) for x in data_export[:, col]])
346
+ st.download_button(
347
+ label="Export optimals set",
348
+ data=convert_df(data_export),
349
+ file_name='NFL_SD_optimals_export.csv',
350
  mime='text/csv',
351
  )
352
 
 
358
  st.session_state.working_seed = st.session_state.working_seed[np.isin(st.session_state.working_seed[:, 10], stack_var2)]
359
  st.session_state.data_export_display = pd.DataFrame(st.session_state.working_seed[0:1000], columns=column_names)
360
  elif 'working_seed' not in st.session_state:
361
+ if slate_var1 == 'Showdown':
362
+ st.session_state.working_seed = init_DK_seed_frames(sport_var1, sharp_split_var)
363
+ if sport_var1 == 'NFL':
364
+ export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
365
+ elif sport_var1 == 'NBA':
366
+ export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
367
+ elif slate_var1 == 'Secondary Showdown':
368
+ st.session_state.working_seed = init_DK_secondary_seed_frames(sport_var1, sharp_split_var)
369
+ if sport_var1 == 'NFL':
370
+ export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
371
+ elif sport_var1 == 'NBA':
372
+ export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
373
+ elif slate_var1 == 'Auxiliary Showdown':
374
+ st.session_state.working_seed = init_DK_auxiliary_seed_frames(sport_var1, sharp_split_var)
375
+ if sport_var1 == 'NFL':
376
+ export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
377
+ elif sport_var1 == 'NBA':
378
+ export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
379
  st.session_state.working_seed = st.session_state.working_seed[np.isin(st.session_state.working_seed[:, 9], team_var2)]
380
  st.session_state.working_seed = st.session_state.working_seed[np.isin(st.session_state.working_seed[:, 10], stack_var2)]
381
  st.session_state.data_export_display = pd.DataFrame(st.session_state.working_seed[0:1000], columns=column_names)
 
386
  st.session_state.working_seed = st.session_state.working_seed[np.isin(st.session_state.working_seed[:, 9], stack_var2)]
387
  st.session_state.data_export_display = pd.DataFrame(st.session_state.working_seed[0:1000], columns=column_names)
388
  elif 'working_seed' not in st.session_state:
389
+ if slate_var1 == 'Showdown':
390
+ st.session_state.working_seed = init_FD_seed_frames(sport_var1, sharp_split_var)
391
+ if sport_var1 == 'NFL':
392
+ export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
393
+ elif sport_var1 == 'NBA':
394
+ export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
395
+ elif slate_var1 == 'Secondary Showdown':
396
+ st.session_state.working_seed = init_FD_secondary_seed_frames(sport_var1, sharp_split_var)
397
+ if sport_var1 == 'NFL':
398
+ export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
399
+ elif sport_var1 == 'NBA':
400
+ export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
401
+ elif slate_var1 == 'Auxiliary Showdown':
402
+ st.session_state.working_seed = init_FD_auxiliary_seed_frames(sport_var1, sharp_split_var)
403
+ if sport_var1 == 'NFL':
404
+ export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
405
+ elif sport_var1 == 'NBA':
406
+ export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
407
+ raw_baselines = fd_raw
408
+ column_names = fd_columns
409
  st.session_state.working_seed = st.session_state.working_seed[np.isin(st.session_state.working_seed[:, 8], team_var2)]
410
  st.session_state.working_seed = st.session_state.working_seed[np.isin(st.session_state.working_seed[:, 9], stack_var2)]
411
  st.session_state.data_export_display = pd.DataFrame(st.session_state.working_seed[0:1000], columns=column_names)
 
426
  dk_raw, fd_raw = init_baselines(sim_sport_var1)
427
  sim_slate_var1 = st.radio("Which data are you loading?", ('Showdown', 'Secondary Showdown', 'Auxiliary Showdown'), key='sim_slate_var1')
428
  sim_site_var1 = st.radio("What site are you working with?", ('Draftkings', 'Fanduel'), key='sim_site_var1')
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
429
 
430
  contest_var1 = st.selectbox("What contest size are you simulating?", ('Small', 'Medium', 'Large', 'Custom'))
431
  if contest_var1 == 'Small':
 
468
  'STDev_map':dict(zip(raw_baselines.Player,raw_baselines.STDev)),
469
  'cpt_STDev_map':dict(zip(raw_baselines.Player,raw_baselines['CPT_STDev']))
470
  }
471
+ Sim_Winners = sim_contest(1000, st.session_state.working_seed, maps_dict, Contest_Size)
472
  Sim_Winner_Frame = pd.DataFrame(np.concatenate(Sim_Winners))
473
 
474
  #st.table(Sim_Winner_Frame)
 
495
 
496
  else:
497
  if sim_site_var1 == 'Draftkings':
498
+ if sim_slate_var1 == 'Showdown':
499
+ st.session_state.working_seed = init_DK_seed_frames(sim_sport_var1, sharp_split_var)
500
+ if sport_var1 == 'NFL':
501
+ export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
502
+ elif sport_var1 == 'NBA':
503
+ export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
504
+ elif sim_slate_var1 == 'Secondary Showdown':
505
+ st.session_state.working_seed = init_DK_secondary_seed_frames(sim_sport_var1, sharp_split_var)
506
+ if sport_var1 == 'NFL':
507
+ export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
508
+ elif sport_var1 == 'NBA':
509
+ export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
510
+ elif sim_slate_var1 == 'Auxiliary Showdown':
511
+ st.session_state.working_seed = init_DK_auxiliary_seed_frames(sim_sport_var1, sharp_split_var)
512
+ if sport_var1 == 'NFL':
513
+ export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
514
+ elif sport_var1 == 'NBA':
515
+ export_id_dict = dict(zip(dk_raw['Player'], dk_raw['player_id']))
516
+ raw_baselines = dk_raw
517
+ column_names = dk_columns
518
  elif sim_site_var1 == 'Fanduel':
519
+ if sim_slate_var1 == 'Showdown':
520
+ st.session_state.working_seed = init_FD_seed_frames(sim_sport_var1, sharp_split_var)
521
+ if sport_var1 == 'NFL':
522
+ export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
523
+ elif sport_var1 == 'NBA':
524
+ export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
525
+ elif sim_slate_var1 == 'Secondary Showdown':
526
+ st.session_state.working_seed = init_FD_secondary_seed_frames(sim_sport_var1, sharp_split_var)
527
+ if sport_var1 == 'NFL':
528
+ export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
529
+ elif sport_var1 == 'NBA':
530
+ export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
531
+ elif sim_slate_var1 == 'Auxiliary Showdown':
532
+ st.session_state.working_seed = init_FD_auxiliary_seed_frames(sim_sport_var1, sharp_split_var)
533
+ if sport_var1 == 'NFL':
534
+ export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
535
+ elif sport_var1 == 'NBA':
536
+ export_id_dict = dict(zip(fd_raw['Player'], fd_raw['player_id']))
537
+ raw_baselines = fd_raw
538
+ column_names = fd_columns
539
  maps_dict = {
540
  'Projection_map':dict(zip(raw_baselines.Player,raw_baselines.Median)),
541
  'cpt_projection_map':dict(zip(raw_baselines.Player,raw_baselines.cpt_Median)),
 
547
  'STDev_map':dict(zip(raw_baselines.Player,raw_baselines.STDev)),
548
  'cpt_STDev_map':dict(zip(raw_baselines.Player,raw_baselines['CPT_STDev']))
549
  }
550
+ Sim_Winners = sim_contest(1000, st.session_state.working_seed, maps_dict, Contest_Size)
551
  Sim_Winner_Frame = pd.DataFrame(np.concatenate(Sim_Winners))
552
 
553
  #st.table(Sim_Winner_Frame)