Spaces:
Running
Running
James McCool
commited on
Commit
·
f1271aa
1
Parent(s):
92d6486
Refactor app.py to utilize session state for mapping player data. Updated frequency calculations to reference session state maps instead of local variables, enhancing data consistency and management across contest simulations.
Browse files
app.py
CHANGED
|
@@ -278,7 +278,7 @@ with tab1:
|
|
| 278 |
with col2:
|
| 279 |
if st.button("Run Contest Sim"):
|
| 280 |
if 'working_seed' in st.session_state:
|
| 281 |
-
maps_dict = {
|
| 282 |
'Projection_map':dict(zip(raw_baselines.Player,raw_baselines.Median)),
|
| 283 |
'Salary_map':dict(zip(raw_baselines.Player,raw_baselines.Salary)),
|
| 284 |
'Pos_map':dict(zip(raw_baselines.Player,raw_baselines.Position)),
|
|
@@ -367,12 +367,12 @@ with tab1:
|
|
| 367 |
freq_working = pd.DataFrame(np.column_stack(np.unique(st.session_state.freq_copy.iloc[:,0:9].values, return_counts=True)),
|
| 368 |
columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
|
| 369 |
freq_working['Freq'] = freq_working['Freq'].astype(int)
|
| 370 |
-
freq_working['Position'] = freq_working['Player'].map(maps_dict['Pos_map'])
|
| 371 |
-
freq_working['Salary'] = freq_working['Player'].map(maps_dict['Salary_map'])
|
| 372 |
-
freq_working['Proj Own'] = freq_working['Player'].map(maps_dict['Own_map']) / 100
|
| 373 |
freq_working['Exposure'] = freq_working['Freq']/(1000)
|
| 374 |
freq_working['Edge'] = freq_working['Exposure'] - freq_working['Proj Own']
|
| 375 |
-
freq_working['Team'] = freq_working['Player'].map(maps_dict['Team_map'])
|
| 376 |
st.session_state.player_freq = freq_working.copy()
|
| 377 |
|
| 378 |
if sim_site_var1 == 'Draftkings':
|
|
@@ -382,12 +382,12 @@ with tab1:
|
|
| 382 |
center_working = pd.DataFrame(np.column_stack(np.unique(st.session_state.freq_copy.iloc[:,0:2].values, return_counts=True)),
|
| 383 |
columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
|
| 384 |
center_working['Freq'] = center_working['Freq'].astype(int)
|
| 385 |
-
center_working['Position'] = center_working['Player'].map(maps_dict['Pos_map'])
|
| 386 |
-
center_working['Salary'] = center_working['Player'].map(maps_dict['Salary_map'])
|
| 387 |
-
center_working['Proj Own'] = center_working['Player'].map(maps_dict['Own_map']) / 100
|
| 388 |
center_working['Exposure'] = center_working['Freq']/(1000)
|
| 389 |
center_working['Edge'] = center_working['Exposure'] - center_working['Proj Own']
|
| 390 |
-
center_working['Team'] = center_working['Player'].map(maps_dict['Team_map'])
|
| 391 |
st.session_state.center_freq = center_working.copy()
|
| 392 |
|
| 393 |
if sim_site_var1 == 'Draftkings':
|
|
@@ -397,12 +397,12 @@ with tab1:
|
|
| 397 |
wing_working = pd.DataFrame(np.column_stack(np.unique(st.session_state.freq_copy.iloc[:,2:4].values, return_counts=True)),
|
| 398 |
columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
|
| 399 |
wing_working['Freq'] = wing_working['Freq'].astype(int)
|
| 400 |
-
wing_working['Position'] = wing_working['Player'].map(maps_dict['Pos_map'])
|
| 401 |
-
wing_working['Salary'] = wing_working['Player'].map(maps_dict['Salary_map'])
|
| 402 |
-
wing_working['Proj Own'] = wing_working['Player'].map(maps_dict['Own_map']) / 100
|
| 403 |
wing_working['Exposure'] = wing_working['Freq']/(1000)
|
| 404 |
wing_working['Edge'] = wing_working['Exposure'] - wing_working['Proj Own']
|
| 405 |
-
wing_working['Team'] = wing_working['Player'].map(maps_dict['Team_map'])
|
| 406 |
st.session_state.wing_freq = wing_working.copy()
|
| 407 |
|
| 408 |
if sim_site_var1 == 'Draftkings':
|
|
@@ -412,12 +412,12 @@ with tab1:
|
|
| 412 |
dmen_working = pd.DataFrame(np.column_stack(np.unique(st.session_state.freq_copy.iloc[:,4:6].values, return_counts=True)),
|
| 413 |
columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
|
| 414 |
dmen_working['Freq'] = dmen_working['Freq'].astype(int)
|
| 415 |
-
dmen_working['Position'] = dmen_working['Player'].map(maps_dict['Pos_map'])
|
| 416 |
-
dmen_working['Salary'] = dmen_working['Player'].map(maps_dict['Salary_map'])
|
| 417 |
-
dmen_working['Proj Own'] = dmen_working['Player'].map(maps_dict['Own_map']) / 100
|
| 418 |
dmen_working['Exposure'] = dmen_working['Freq']/(1000)
|
| 419 |
dmen_working['Edge'] = dmen_working['Exposure'] - dmen_working['Proj Own']
|
| 420 |
-
dmen_working['Team'] = dmen_working['Player'].map(maps_dict['Team_map'])
|
| 421 |
st.session_state.dmen_freq = dmen_working.copy()
|
| 422 |
|
| 423 |
if sim_site_var1 == 'Draftkings':
|
|
@@ -427,12 +427,12 @@ with tab1:
|
|
| 427 |
flex_working = pd.DataFrame(np.column_stack(np.unique(st.session_state.freq_copy.iloc[:,6:8].values, return_counts=True)),
|
| 428 |
columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
|
| 429 |
flex_working['Freq'] = flex_working['Freq'].astype(int)
|
| 430 |
-
flex_working['Position'] = flex_working['Player'].map(maps_dict['Pos_map'])
|
| 431 |
-
flex_working['Salary'] = flex_working['Player'].map(maps_dict['Salary_map'])
|
| 432 |
-
flex_working['Proj Own'] = flex_working['Player'].map(maps_dict['Own_map']) / 100
|
| 433 |
flex_working['Exposure'] = flex_working['Freq']/(1000)
|
| 434 |
flex_working['Edge'] = flex_working['Exposure'] - flex_working['Proj Own']
|
| 435 |
-
flex_working['Team'] = flex_working['Player'].map(maps_dict['Team_map'])
|
| 436 |
st.session_state.flex_freq = flex_working.copy()
|
| 437 |
|
| 438 |
if sim_site_var1 == 'Draftkings':
|
|
@@ -442,12 +442,12 @@ with tab1:
|
|
| 442 |
goalie_working = pd.DataFrame(np.column_stack(np.unique(st.session_state.freq_copy.iloc[:,8:9].values, return_counts=True)),
|
| 443 |
columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
|
| 444 |
goalie_working['Freq'] = goalie_working['Freq'].astype(int)
|
| 445 |
-
goalie_working['Position'] = goalie_working['Player'].map(maps_dict['Pos_map'])
|
| 446 |
-
goalie_working['Salary'] = goalie_working['Player'].map(maps_dict['Salary_map'])
|
| 447 |
-
goalie_working['Proj Own'] = goalie_working['Player'].map(maps_dict['Own_map']) / 100
|
| 448 |
goalie_working['Exposure'] = goalie_working['Freq']/(1000)
|
| 449 |
goalie_working['Edge'] = goalie_working['Exposure'] - goalie_working['Proj Own']
|
| 450 |
-
goalie_working['Team'] = goalie_working['Player'].map(maps_dict['Team_map'])
|
| 451 |
st.session_state.goalie_freq = goalie_working.copy()
|
| 452 |
|
| 453 |
if sim_site_var1 == 'Draftkings':
|
|
@@ -538,7 +538,7 @@ with tab1:
|
|
| 538 |
with tab2:
|
| 539 |
if 'Sim_Winner_Display' in st.session_state:
|
| 540 |
# Apply position mapping to FLEX column
|
| 541 |
-
flex_positions = st.session_state.freq_copy['FLEX'].map(maps_dict['Pos_map'])
|
| 542 |
|
| 543 |
# Count occurrences of each position in FLEX
|
| 544 |
flex_counts = flex_positions.value_counts()
|
|
|
|
| 278 |
with col2:
|
| 279 |
if st.button("Run Contest Sim"):
|
| 280 |
if 'working_seed' in st.session_state:
|
| 281 |
+
st.session_state.maps_dict = {
|
| 282 |
'Projection_map':dict(zip(raw_baselines.Player,raw_baselines.Median)),
|
| 283 |
'Salary_map':dict(zip(raw_baselines.Player,raw_baselines.Salary)),
|
| 284 |
'Pos_map':dict(zip(raw_baselines.Player,raw_baselines.Position)),
|
|
|
|
| 367 |
freq_working = pd.DataFrame(np.column_stack(np.unique(st.session_state.freq_copy.iloc[:,0:9].values, return_counts=True)),
|
| 368 |
columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
|
| 369 |
freq_working['Freq'] = freq_working['Freq'].astype(int)
|
| 370 |
+
freq_working['Position'] = freq_working['Player'].map(st.session_state.maps_dict['Pos_map'])
|
| 371 |
+
freq_working['Salary'] = freq_working['Player'].map(st.session_state.maps_dict['Salary_map'])
|
| 372 |
+
freq_working['Proj Own'] = freq_working['Player'].map(st.session_state.maps_dict['Own_map']) / 100
|
| 373 |
freq_working['Exposure'] = freq_working['Freq']/(1000)
|
| 374 |
freq_working['Edge'] = freq_working['Exposure'] - freq_working['Proj Own']
|
| 375 |
+
freq_working['Team'] = freq_working['Player'].map(st.session_state.maps_dict['Team_map'])
|
| 376 |
st.session_state.player_freq = freq_working.copy()
|
| 377 |
|
| 378 |
if sim_site_var1 == 'Draftkings':
|
|
|
|
| 382 |
center_working = pd.DataFrame(np.column_stack(np.unique(st.session_state.freq_copy.iloc[:,0:2].values, return_counts=True)),
|
| 383 |
columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
|
| 384 |
center_working['Freq'] = center_working['Freq'].astype(int)
|
| 385 |
+
center_working['Position'] = center_working['Player'].map(st.session_state.maps_dict['Pos_map'])
|
| 386 |
+
center_working['Salary'] = center_working['Player'].map(st.session_state.maps_dict['Salary_map'])
|
| 387 |
+
center_working['Proj Own'] = center_working['Player'].map(st.session_state.maps_dict['Own_map']) / 100
|
| 388 |
center_working['Exposure'] = center_working['Freq']/(1000)
|
| 389 |
center_working['Edge'] = center_working['Exposure'] - center_working['Proj Own']
|
| 390 |
+
center_working['Team'] = center_working['Player'].map(st.session_state.maps_dict['Team_map'])
|
| 391 |
st.session_state.center_freq = center_working.copy()
|
| 392 |
|
| 393 |
if sim_site_var1 == 'Draftkings':
|
|
|
|
| 397 |
wing_working = pd.DataFrame(np.column_stack(np.unique(st.session_state.freq_copy.iloc[:,2:4].values, return_counts=True)),
|
| 398 |
columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
|
| 399 |
wing_working['Freq'] = wing_working['Freq'].astype(int)
|
| 400 |
+
wing_working['Position'] = wing_working['Player'].map(st.session_state.maps_dict['Pos_map'])
|
| 401 |
+
wing_working['Salary'] = wing_working['Player'].map(st.session_state.maps_dict['Salary_map'])
|
| 402 |
+
wing_working['Proj Own'] = wing_working['Player'].map(st.session_state.maps_dict['Own_map']) / 100
|
| 403 |
wing_working['Exposure'] = wing_working['Freq']/(1000)
|
| 404 |
wing_working['Edge'] = wing_working['Exposure'] - wing_working['Proj Own']
|
| 405 |
+
wing_working['Team'] = wing_working['Player'].map(st.session_state.maps_dict['Team_map'])
|
| 406 |
st.session_state.wing_freq = wing_working.copy()
|
| 407 |
|
| 408 |
if sim_site_var1 == 'Draftkings':
|
|
|
|
| 412 |
dmen_working = pd.DataFrame(np.column_stack(np.unique(st.session_state.freq_copy.iloc[:,4:6].values, return_counts=True)),
|
| 413 |
columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
|
| 414 |
dmen_working['Freq'] = dmen_working['Freq'].astype(int)
|
| 415 |
+
dmen_working['Position'] = dmen_working['Player'].map(st.session_state.maps_dict['Pos_map'])
|
| 416 |
+
dmen_working['Salary'] = dmen_working['Player'].map(st.session_state.maps_dict['Salary_map'])
|
| 417 |
+
dmen_working['Proj Own'] = dmen_working['Player'].map(st.session_state.maps_dict['Own_map']) / 100
|
| 418 |
dmen_working['Exposure'] = dmen_working['Freq']/(1000)
|
| 419 |
dmen_working['Edge'] = dmen_working['Exposure'] - dmen_working['Proj Own']
|
| 420 |
+
dmen_working['Team'] = dmen_working['Player'].map(st.session_state.maps_dict['Team_map'])
|
| 421 |
st.session_state.dmen_freq = dmen_working.copy()
|
| 422 |
|
| 423 |
if sim_site_var1 == 'Draftkings':
|
|
|
|
| 427 |
flex_working = pd.DataFrame(np.column_stack(np.unique(st.session_state.freq_copy.iloc[:,6:8].values, return_counts=True)),
|
| 428 |
columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
|
| 429 |
flex_working['Freq'] = flex_working['Freq'].astype(int)
|
| 430 |
+
flex_working['Position'] = flex_working['Player'].map(st.session_state.maps_dict['Pos_map'])
|
| 431 |
+
flex_working['Salary'] = flex_working['Player'].map(st.session_state.maps_dict['Salary_map'])
|
| 432 |
+
flex_working['Proj Own'] = flex_working['Player'].map(st.session_state.maps_dict['Own_map']) / 100
|
| 433 |
flex_working['Exposure'] = flex_working['Freq']/(1000)
|
| 434 |
flex_working['Edge'] = flex_working['Exposure'] - flex_working['Proj Own']
|
| 435 |
+
flex_working['Team'] = flex_working['Player'].map(st.session_state.maps_dict['Team_map'])
|
| 436 |
st.session_state.flex_freq = flex_working.copy()
|
| 437 |
|
| 438 |
if sim_site_var1 == 'Draftkings':
|
|
|
|
| 442 |
goalie_working = pd.DataFrame(np.column_stack(np.unique(st.session_state.freq_copy.iloc[:,8:9].values, return_counts=True)),
|
| 443 |
columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
|
| 444 |
goalie_working['Freq'] = goalie_working['Freq'].astype(int)
|
| 445 |
+
goalie_working['Position'] = goalie_working['Player'].map(st.session_state.maps_dict['Pos_map'])
|
| 446 |
+
goalie_working['Salary'] = goalie_working['Player'].map(st.session_state.maps_dict['Salary_map'])
|
| 447 |
+
goalie_working['Proj Own'] = goalie_working['Player'].map(st.session_state.maps_dict['Own_map']) / 100
|
| 448 |
goalie_working['Exposure'] = goalie_working['Freq']/(1000)
|
| 449 |
goalie_working['Edge'] = goalie_working['Exposure'] - goalie_working['Proj Own']
|
| 450 |
+
goalie_working['Team'] = goalie_working['Player'].map(st.session_state.maps_dict['Team_map'])
|
| 451 |
st.session_state.goalie_freq = goalie_working.copy()
|
| 452 |
|
| 453 |
if sim_site_var1 == 'Draftkings':
|
|
|
|
| 538 |
with tab2:
|
| 539 |
if 'Sim_Winner_Display' in st.session_state:
|
| 540 |
# Apply position mapping to FLEX column
|
| 541 |
+
flex_positions = st.session_state.freq_copy['FLEX'].map(st.session_state.maps_dict['Pos_map'])
|
| 542 |
|
| 543 |
# Count occurrences of each position in FLEX
|
| 544 |
flex_counts = flex_positions.value_counts()
|