James McCool
commited on
Commit
·
89a1dc0
1
Parent(s):
167d41b
adding dynamic showdown options
Browse files- src/sim_func_hold/showdown_functions.py +5 -16
- src/streamlit_app.py +63 -5
src/sim_func_hold/showdown_functions.py
CHANGED
|
@@ -5,14 +5,9 @@ from pymongo import MongoClient
|
|
| 5 |
from database import db
|
| 6 |
|
| 7 |
@st.cache_data(ttl = 599)
|
| 8 |
-
def init_DK_SD_seed_frames(slate, split):
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
elif slate == 'Showdown #2':
|
| 12 |
-
collection = db["DK_NFL_Secondary_SD_seed_frame"]
|
| 13 |
-
elif slate == 'Showdown #3':
|
| 14 |
-
collection = db["DK_NFL_Auxiliary_SD_seed_frame"]
|
| 15 |
-
|
| 16 |
cursor = collection.find().limit(split)
|
| 17 |
|
| 18 |
raw_display = pd.DataFrame(list(cursor))
|
|
@@ -22,14 +17,8 @@ def init_DK_SD_seed_frames(slate, split):
|
|
| 22 |
return DK_seed
|
| 23 |
|
| 24 |
@st.cache_data(ttl = 599)
|
| 25 |
-
def init_FD_SD_seed_frames(slate, split):
|
| 26 |
-
|
| 27 |
-
collection = db[f"FD_NFL_SD_seed_frame"]
|
| 28 |
-
elif slate == 'Showdown #2':
|
| 29 |
-
collection = db[f"FD_NFL_Secondary_SD_seed_frame"]
|
| 30 |
-
elif slate == 'Showdown #3':
|
| 31 |
-
collection = db[f"FD_NFL_Auxiliary_SD_seed_frame"]
|
| 32 |
-
|
| 33 |
cursor = collection.find().limit(split)
|
| 34 |
|
| 35 |
raw_display = pd.DataFrame(list(cursor))
|
|
|
|
| 5 |
from database import db
|
| 6 |
|
| 7 |
@st.cache_data(ttl = 599)
|
| 8 |
+
def init_DK_SD_seed_frames(slate, split, translation_dict):
|
| 9 |
+
|
| 10 |
+
collection = db[translation_dict[slate]]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 11 |
cursor = collection.find().limit(split)
|
| 12 |
|
| 13 |
raw_display = pd.DataFrame(list(cursor))
|
|
|
|
| 17 |
return DK_seed
|
| 18 |
|
| 19 |
@st.cache_data(ttl = 599)
|
| 20 |
+
def init_FD_SD_seed_frames(slate, split, translation_dict):
|
| 21 |
+
collection = db[translation_dict[slate]]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 22 |
cursor = collection.find().limit(split)
|
| 23 |
|
| 24 |
raw_display = pd.DataFrame(list(cursor))
|
src/streamlit_app.py
CHANGED
|
@@ -20,6 +20,27 @@ fd_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST', 'sal
|
|
| 20 |
dk_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
|
| 21 |
fd_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
|
| 22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
st.markdown("""
|
| 24 |
<style>
|
| 25 |
/* Tab styling */
|
|
@@ -57,14 +78,51 @@ st.markdown("""
|
|
| 57 |
|
| 58 |
</style>""", unsafe_allow_html=True)
|
| 59 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 60 |
if st.button("Load/Reset Data", key='reset2'):
|
| 61 |
st.cache_data.clear()
|
| 62 |
for key in st.session_state.keys():
|
| 63 |
del st.session_state[key]
|
| 64 |
DK_seed = init_DK_seed_frames('Main Slate', 10000)
|
| 65 |
-
DK_sd_seed = init_DK_SD_seed_frames(
|
| 66 |
FD_seed = init_FD_seed_frames('Main Slate', 10000)
|
| 67 |
-
FD_sd_seed = init_FD_SD_seed_frames(
|
| 68 |
dk_raw, fd_raw = init_baselines('Main Slate')
|
| 69 |
dk_sd_raw, fd_sd_raw = init_SD_baselines('Main Slate')
|
| 70 |
dk_id_dict = dict(zip(dk_raw.Player, dk_raw.player_ID))
|
|
@@ -557,7 +615,7 @@ if selected_tab == "Showdown Contest Sims":
|
|
| 557 |
sim_site_var2 = st.radio("What site are you working with?", ('Draftkings', 'Fanduel'), key='sim_site_var2')
|
| 558 |
|
| 559 |
with slate_data_col:
|
| 560 |
-
sim_slate_var2 = st.radio("Which data are you loading?",
|
| 561 |
|
| 562 |
with contest_size_col:
|
| 563 |
contest_var2 = st.selectbox("What contest size are you simulating?", ('Small', 'Medium', 'Large'), key='contest_var2')
|
|
@@ -586,12 +644,12 @@ if selected_tab == "Showdown Contest Sims":
|
|
| 586 |
|
| 587 |
if 'sd_working_seed' not in st.session_state:
|
| 588 |
if sim_site_var2 == 'Draftkings':
|
| 589 |
-
st.session_state.sd_working_seed = init_DK_SD_seed_frames(sim_slate_var2, sharp_split)
|
| 590 |
export_id_dict = dict(zip(dk_raw.Player, dk_raw.player_ID))
|
| 591 |
raw_baselines = dk_raw
|
| 592 |
column_names = dk_sd_columns
|
| 593 |
elif sim_site_var2 == 'Fanduel':
|
| 594 |
-
st.session_state.sd_working_seed = init_FD_SD_seed_frames(sim_slate_var2, sharp_split)
|
| 595 |
export_id_dict = dict(zip(fd_raw.Player, fd_raw.player_ID))
|
| 596 |
raw_baselines = fd_raw
|
| 597 |
column_names = fd_sd_columns
|
|
|
|
| 20 |
dk_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
|
| 21 |
fd_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
|
| 22 |
|
| 23 |
+
showdown_selections = ['Showdown #1', 'Showdown #2', 'Showdown #3', 'Showdown #4', 'Showdown #5', 'Showdown #6', 'Showdown #7', 'Showdown #8', 'Showdown #9', 'Showdown #10', 'Showdown #11', 'Showdown #12', 'Showdown #13', 'Showdown #14', 'Showdown #15']
|
| 24 |
+
dk_db_showdown_selections = ['DK_NFL_SD_seed_frame_Showdown #1', 'DK_NFL_SD_seed_frame_Showdown #2', 'DK_NFL_SD_seed_frame_Showdown #3', 'DK_NFL_SD_seed_frame_Showdown #4', 'DK_NFL_SD_seed_frame_Showdown #5', 'DK_NFL_SD_seed_frame_Showdown #6',
|
| 25 |
+
'DK_NFL_SD_seed_frame_Showdown #7', 'DK_NFL_SD_seed_frame_Showdown #8', 'DK_NFL_SD_seed_frame_Showdown #9', 'DK_NFL_SD_seed_frame_Showdown #10', 'DK_NFL_SD_seed_frame_Showdown #11', 'DK_NFL_SD_seed_frame_Showdown #12', 'DK_NFL_SD_seed_frame_Showdown #13',
|
| 26 |
+
'DK_NFL_SD_seed_frame_Showdown #14', 'DK_NFL_SD_seed_frame_Showdown #15']
|
| 27 |
+
fd_db_showdown_selections = ['FD_NFL_SD_seed_frame_Showdown #1', 'FD_NFL_SD_seed_frame_Showdown #2', 'FD_NFL_SD_seed_frame_Showdown #3', 'FD_NFL_SD_seed_frame_Showdown #4', 'FD_NFL_SD_seed_frame_Showdown #5', 'FD_NFL_SD_seed_frame_Showdown #6',
|
| 28 |
+
'FD_NFL_SD_seed_frame_Showdown #7', 'FD_NFL_SD_seed_frame_Showdown #8', 'FD_NFL_SD_seed_frame_Showdown #9', 'FD_NFL_SD_seed_frame_Showdown #10', 'FD_NFL_SD_seed_frame_Showdown #11', 'FD_NFL_SD_seed_frame_Showdown #12', 'FD_NFL_SD_seed_frame_Showdown #13',
|
| 29 |
+
'FD_NFL_SD_seed_frame_Showdown #14', 'FD_NFL_SD_seed_frame_Showdown #15']
|
| 30 |
+
|
| 31 |
+
dk_showdown_db_translation = dict(zip(showdown_selections, dk_db_showdown_selections))
|
| 32 |
+
fd_showdown_db_translation = dict(zip(showdown_selections, fd_db_showdown_selections))
|
| 33 |
+
|
| 34 |
+
# Probably should have done this in a dictionary to start with
|
| 35 |
+
wrong_team_names = ['Denver Broncos', 'Washington Commanders', 'Cincinnati Bengals', 'Arizona Cardinals', 'Los Angeles Rams', 'Pittsburgh Steelers',
|
| 36 |
+
'Jacksonville Jaguars', 'New England Patriots', 'Tampa Bay Buccaneers', 'San Francisco 49ers', 'Green Bay Packers', 'New York Jets',
|
| 37 |
+
'Indianapolis Colts', 'Miami Dolphins', 'Detroit Lions', 'Las Vegas Raiders', 'Atlanta Falcons', 'Seattle Seahawks', 'Houston Texans',
|
| 38 |
+
'New Orleans Saints', 'Carolina Panthers', 'New York Giants', 'Cleveland Browns', 'Tennessee Titans', 'Philadelphia Eagles', 'Dallas Cowboys',
|
| 39 |
+
'Kansas City Chiefs', 'Los Angeles Chargers', 'Baltimore Ravens', 'Buffalo Bills', 'Minnesota Vikings', 'Chicago Bears']
|
| 40 |
+
right_name_teams = ['Broncos', 'Commanders', 'Bengals', 'Cardinals', 'Rams', 'Steelers', 'Jaguars', 'Patriots', 'Buccaneers', '49ers', 'Packers',
|
| 41 |
+
'Jets', 'Colts', 'Dolphins', 'Lions', 'Raiders', 'Falcons', 'Seahawks', 'Texans', 'Saints', 'Panthers', 'Giants', 'Browns', 'Titans', 'Eagles', 'Cowboys',
|
| 42 |
+
'Chiefs', 'Chargers', 'Ravens', 'Bills', 'Vikings', 'Bears']
|
| 43 |
+
|
| 44 |
st.markdown("""
|
| 45 |
<style>
|
| 46 |
/* Tab styling */
|
|
|
|
| 78 |
|
| 79 |
</style>""", unsafe_allow_html=True)
|
| 80 |
|
| 81 |
+
@st.cache_resource(ttl=60)
|
| 82 |
+
def define_dk_showdown_slates():
|
| 83 |
+
collection = db["DK_SD_NFL_ROO"]
|
| 84 |
+
cursor = collection.find()
|
| 85 |
+
raw_display = pd.DataFrame(list(cursor))
|
| 86 |
+
unique_slates = raw_display['slate'].unique()
|
| 87 |
+
|
| 88 |
+
slate_names = []
|
| 89 |
+
|
| 90 |
+
for slate in unique_slates:
|
| 91 |
+
slate_data = raw_display[raw_display['slate'] == slate]
|
| 92 |
+
slate_name = slate_data.iloc[0]['Team'] + ' vs. ' + slate_data.iloc[0]['Opp']
|
| 93 |
+
slate_names.append(slate_name)
|
| 94 |
+
|
| 95 |
+
slate_name_lookup = dict(zip(slate_names, unique_slates))
|
| 96 |
+
return slate_names, slate_name_lookup
|
| 97 |
+
|
| 98 |
+
@st.cache_resource(ttl=60)
|
| 99 |
+
def define_fd_showdown_slates():
|
| 100 |
+
collection = db["FD_SD_NFL_ROO"]
|
| 101 |
+
cursor = collection.find()
|
| 102 |
+
raw_display = pd.DataFrame(list(cursor))
|
| 103 |
+
unique_slates = raw_display['slate'].unique()
|
| 104 |
+
|
| 105 |
+
slate_names = []
|
| 106 |
+
|
| 107 |
+
for slate in unique_slates:
|
| 108 |
+
slate_data = raw_display[raw_display['slate'] == slate]
|
| 109 |
+
slate_name = slate_data.iloc[0]['Team'] + ' vs. ' + slate_data.iloc[0]['Opp']
|
| 110 |
+
slate_names.append(slate_name)
|
| 111 |
+
|
| 112 |
+
slate_name_lookup = dict(zip(slate_names, unique_slates))
|
| 113 |
+
return slate_names, slate_name_lookup
|
| 114 |
+
|
| 115 |
+
slate_names_dk, slate_name_lookup_dk = define_dk_showdown_slates()
|
| 116 |
+
slate_names_fd, slate_name_lookup_fd = define_fd_showdown_slates()
|
| 117 |
+
|
| 118 |
if st.button("Load/Reset Data", key='reset2'):
|
| 119 |
st.cache_data.clear()
|
| 120 |
for key in st.session_state.keys():
|
| 121 |
del st.session_state[key]
|
| 122 |
DK_seed = init_DK_seed_frames('Main Slate', 10000)
|
| 123 |
+
DK_sd_seed = init_DK_SD_seed_frames(slate_names_dk[0], 10000, dk_showdown_db_translation)
|
| 124 |
FD_seed = init_FD_seed_frames('Main Slate', 10000)
|
| 125 |
+
FD_sd_seed = init_FD_SD_seed_frames(slate_names_fd[0], 10000, fd_showdown_db_translation)
|
| 126 |
dk_raw, fd_raw = init_baselines('Main Slate')
|
| 127 |
dk_sd_raw, fd_sd_raw = init_SD_baselines('Main Slate')
|
| 128 |
dk_id_dict = dict(zip(dk_raw.Player, dk_raw.player_ID))
|
|
|
|
| 615 |
sim_site_var2 = st.radio("What site are you working with?", ('Draftkings', 'Fanduel'), key='sim_site_var2')
|
| 616 |
|
| 617 |
with slate_data_col:
|
| 618 |
+
sim_slate_var2 = st.radio("Which data are you loading?", slate_names_dk if sim_site_var2 == 'Draftkings' else slate_names_fd, key='sim_slate_var2')
|
| 619 |
|
| 620 |
with contest_size_col:
|
| 621 |
contest_var2 = st.selectbox("What contest size are you simulating?", ('Small', 'Medium', 'Large'), key='contest_var2')
|
|
|
|
| 644 |
|
| 645 |
if 'sd_working_seed' not in st.session_state:
|
| 646 |
if sim_site_var2 == 'Draftkings':
|
| 647 |
+
st.session_state.sd_working_seed = init_DK_SD_seed_frames(slate_name_lookup_dk[sim_slate_var2], sharp_split, dk_showdown_db_translation)
|
| 648 |
export_id_dict = dict(zip(dk_raw.Player, dk_raw.player_ID))
|
| 649 |
raw_baselines = dk_raw
|
| 650 |
column_names = dk_sd_columns
|
| 651 |
elif sim_site_var2 == 'Fanduel':
|
| 652 |
+
st.session_state.sd_working_seed = init_FD_SD_seed_frames(slate_name_lookup_fd[sim_slate_var2], sharp_split, fd_showdown_db_translation)
|
| 653 |
export_id_dict = dict(zip(fd_raw.Player, fd_raw.player_ID))
|
| 654 |
raw_baselines = fd_raw
|
| 655 |
column_names = fd_sd_columns
|